feat: JIRA integration, PM-agnostic CLI, Fly.io removal#294
Merged
zbigniewsobiecki merged 3 commits intodevfrom Feb 16, 2026
Merged
feat: JIRA integration, PM-agnostic CLI, Fly.io removal#294zbigniewsobiecki merged 3 commits intodevfrom
zbigniewsobiecki merged 3 commits intodevfrom
Conversation
… Fly.io lifecycle Introduce a provider-based PM abstraction (`src/pm/`) that allows CASCADE to work with both Trello and JIRA through a unified interface. This includes: - PM provider pattern using AsyncLocalStorage context (`withPMProvider`/`getPMProvider`) - PMLifecycleManager for board lifecycle operations (labels, comments, card moves) - JIRA client and adapter with ADF (Atlassian Document Format) rendering - Trello adapter wrapping existing Trello gadgets behind the PM interface - PM-agnostic gadgets (`src/gadgets/pm/`) replacing direct Trello gadget usage - JIRA webhook handler and triggers (comment-mention, issue-transitioned) - JIRA integration config in project schema and dashboard UI - Webhook routing for JIRA events alongside existing Trello/GitHub webhooks - Agent prompts and shared trigger utilities updated for PM-agnostic work items Also removes all Fly.io-specific lifecycle management: - Remove startFreshMachineTimer, cancelFreshMachineTimer, scheduleShutdownAfterJob - Remove FLY_APP_NAME conditionals from all webhook handlers - Make watchdog timer unconditional (useful for any deployment) - Drop fresh_machine_timeout_ms and post_job_grace_period_ms DB columns - Remove related config fields from schema, API, CLI, and dashboard UI - Add DB migration 0007 to drop the Fly.io columns Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Rename src/cli/trello/ to src/cli/pm/ and update all 7 CLI commands to use PM-agnostic gadgets from src/gadgets/pm/core/ instead of Trello-specific ones: - read-card → read-work-item (uses readWorkItem) - post-comment → post-comment (uses postComment) - update-card → update-work-item (uses updateWorkItem) - create-card → create-work-item (uses createWorkItem) - list-cards → list-work-items (uses listWorkItems) - add-checklist → add-checklist (uses addChecklist) - update-checklist-item → update-checklist-item (uses updateChecklistItem) Also: - Add JIRA credential scoping and PM provider context to CredentialScopedCommand - Update Claude Code backend guidance text for PM-agnostic terminology - Update adapter CLI command strings from cascade-tools trello to cascade-tools pm - Update CLAUDE.md CLI binary documentation - Update claude-code backend tests for new tool names Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Update test mocks from direct Trello client calls to PM provider interface: - prompts.test.ts: ReadTrelloCard/CreateTrelloCard → ReadWorkItem/CreateWorkItem - fetchImplementationSteps.test.ts: mock getPMProvider instead of trelloClient - progress.test.ts: mock getPMProviderOrNull instead of trelloClient.addComment - budget.test.ts: mock getPMProvider.getCustomFieldNumber instead of trelloClient - debug-runner.test.ts: mock getPMProvider.addComment instead of trelloClient Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
JIRA Integration: Add full JIRA support via a PM-agnostic abstraction layer (
src/pm/). CASCADE now works with both Trello and JIRA through a unifiedPMProviderinterface using AsyncLocalStorage context. Includes JIRA client, ADF rendering, webhook handler, triggers (comment-mention, issue-transitioned), and dashboard UI for JIRA project integration config.Fly.io Removal: Remove all Fly.io-specific lifecycle management (
startFreshMachineTimer,cancelFreshMachineTimer,scheduleShutdownAfterJob,FLY_APP_NAMEconditionals). Watchdog timer is now unconditional. Dropsfresh_machine_timeout_msandpost_job_grace_period_msDB columns via migration 0007.PM-Agnostic CLI: Rename
src/cli/trello/tosrc/cli/pm/with all 7 commands updated to use PM-agnostic gadgets (read-work-item,post-comment,update-work-item,create-work-item,list-work-items,add-checklist,update-checklist-item). Add JIRA credential scoping toCredentialScopedCommand.Test plan
npx tsc --noEmit— zero type errorscascade-tools pm read-work-item --helpworks after buildFLY_APP_NAME,freshMachineTimer,scheduleShutdown,cli/trelloin src/🤖 Generated with Claude Code