feat(integrations): Add Trello setup wizard and create_card tool (#4216) - #4228
feat(integrations): Add Trello setup wizard and create_card tool (#4216)#4228Shinu-Cherian wants to merge 3 commits into
Conversation
Greptile code reviewThis repo uses Greptile for automated review. Before merge, aim for Confidence Score: 5/5 with zero unresolved review threads — see CONTRIBUTING.md. Run a review — add a PR comment with: Give it ~5-10 minutes (sometimes longer) for results, then fix feedback and re-trigger until you reach Confidence Score: 5/5. Optional: automate with the greploop skill. |
|
@greptile review |
Greptile SummaryTrello is migrated to the shared integration setup and verification flow, added to CLI onboarding and environment loading, and exposed through a newly discoverable card-creation tool. Confidence Score: 5/5The PR appears safe to merge because no additional blocking failure eligible for this follow-up review remains. No blocking failure remains within the scope of the previous review threads. Important Files Changed
Reviews (4): Last reviewed commit: "fix(trello): require list_id in setup/to..." | Re-trigger Greptile |
Greptile SummaryAdds standard Trello onboarding, verification, environment loading, and an agent-facing card-creation tool.
Confidence Score: 1/5This PR is not safe to merge because the integration catalog cannot import and the Trello setup, verification, and card-creation paths contain additional current failures. The malformed catalog edit blocks integration initialization, stale Trello exports cause import failures, generic verifier errors bypass normal failure handling, and configurations accepted by setup can expose a card tool that cannot create cards. integrations/_catalog_impl.py, integrations/trello/verifier.py, integrations/trello/tools/create_card.py, integrations/trello/setup.py, .env.example Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart LR
User[CLI user] --> Wizard[Trello setup wizard]
Wizard --> Verify[Trello verifier]
Verify --> Store[Integration config]
Store --> Catalog[Effective integration catalog]
Catalog --> Agent[Agent tool registry]
Agent --> Tool[create_trello_card]
Tool --> API[Trello API]
Reviews (2): Last reviewed commit: "feat(integrations): Add Trello setup wiz..." | Re-trigger Greptile |
| method="verify_trello", | ||
| ) | ||
| return TrelloValidationResult(ok=False, detail=f"Trello validation failed: {err}") | ||
| return result("trello", source, "error", f"Trello validation failed: {err}") |
There was a problem hiding this comment.
Verifier errors bypass failure handling
When Trello verification encounters a connection, timeout, response, or other generic exception, this returns the unsupported error status. The shared verifier handles failures as failed or missing and does not count error as a failing exit condition, so a real Trello connectivity failure can produce a successful verification exit code.
Knowledge Base Used: Integrations Framework
| def is_available(self, sources: dict) -> bool: | ||
| trello_config = sources.get("trello", {}) | ||
| return bool(trello_config.get("api_key") and trello_config.get("token")) |
There was a problem hiding this comment.
Available tool lacks required destination
When Trello is configured with only the required API key and token, this advertises the card tool as available even though list_id is injected and unavailable to the model. The client then rejects every invocation because no destination list exists, causing card creation to return an unavailable error.
Knowledge Base Used: Integrations Framework
| # TRELLO_API_KEY= | ||
| # TRELLO_TOKEN= | ||
| # TRELLO_BOARD_ID= | ||
| # TRELLO_LIST_ID= | ||
|
|
||
| # VERCEL_API_TOKEN= |
There was a problem hiding this comment.
Vercel token entry was commented
Adding the Trello variables also changes VERCEL_API_TOKEN= into a comment while leaving the related team ID active. This makes the sample Vercel configuration incomplete and makes the required token easier for users to overlook.
Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
|
@greptile review |
|
@greptile review |
|
@Shinu-Cherian thank you for PR, but pls check contribution guidelines :) |
Fixes #4216
Describe the changes you have made in this PR -
This PR completes the Trello integration by migrating it to the standard
IntegrationSetupSpecflow and adding an agent-facing tool.Specifically:
TRELLO_SETUPusingIntegrationSetupSpecinintegrations/trello/setup.pyto prompt for API Key and Token securely.verify_trello) using the standard@register_verifierdecorator.surfaces/cli/wizard/).create_trello_cardagent tool (subclassingBaseTool) so the LLM can create Trello cards during an investigation.integrations/_catalog_impl.pyandintegrations/registry.pyto properly load and register Trello..env.example.Demo/Screenshot for feature changes and bug fixes -
(Note: I have tested this locally, and the wizard successfully prompts for the correct fields and verifies them via the API).
Code Understanding and AI Usage
Did you use AI assistance (ChatGPT, Claude, Copilot, etc.) to write any part of this code?
If you used AI assistance:
Explain your implementation approach:
while Trueloop for the CLI setup (like older integrations), but chose to use the newIntegrationSetupSpecdeclarative approach because it aligns with the project's recent migration goals (Issue Migrate the remaining 44 integration setup handlers onto the shared setup flow #4168).IntegrationSetupSpecreduces boilerplate and leverages the shared verification framework. I also ensured that the verifier correctly catches HTTP errors from Trello and maps them to standard OpenSRE validation failures.TRELLO_SETUP(setup.py): Defines the required fields (api_key, token) and optional ones (board_id, list_id) for the CLI.verify_trello(verifier.py): Reaches out toGET /members/meto ensure credentials are valid.CreateTrelloCardTool(create_card.py): The ReAct tool schema and execution logic for the agent to usecreate_trello_cardfrom the HTTP client.Checklist before requesting a review