fix: wire watch/triage CLI command + add wiring regression test#238
Closed
tamirdresher wants to merge 10 commits intobradygaster:devfrom
Closed
fix: wire watch/triage CLI command + add wiring regression test#238tamirdresher wants to merge 10 commits intobradygaster:devfrom
tamirdresher wants to merge 10 commits intobradygaster:devfrom
Conversation
- Register consult and extract commands in cli-entry.ts with help text - Add docs/features/consult-mode.md with full command reference - Update docs/guide/personal-squad.md to reference consult mode - Add happy-path E2E tests (init global → consult → status → extract) - Add acceptance test features for consult and extract commands Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ster#196) runShell() hardcoded teamRoot to process.cwd(), ignoring the global (personal) squad path. Now uses a fallback chain: 1. Walk up from cwd for local .squad/ 2. Check global squad path (resolveGlobalSquadPath) 3. Fall back to cwd (triggers init mode) Closes bradygaster#196 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Feature files referenced old output strings ("Getting Started",
"Here:", "Scaffold ready") that no longer exist in the CLI help,
status, and init output. Updated to match actual output.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Fix runtime crash by declaring @opentelemetry/api as required dependency
feat: wire up consult mode CLI + fix global squad resolution (bradygaster#196)
The upstream command (add/remove/list/sync) was fully implemented in upstream.ts but never registered in cli-entry.ts. Running 'squad upstream' returned 'Unknown command'. Closes bradygaster#224 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…-wiring fix: wire upstream command into CLI entry point
- Replace placeholder 'pending' message for triage/watch with real import of watch.ts runWatch() function - Fix syntax error in upstream help text (doubled backticks) - Add regression test (cli-command-wiring.test.ts) that verifies all command files in commands/ have corresponding cli-entry.ts routing - Test tracks known-unwired commands (bradygaster#237) separately and will catch any NEW unwired commands immediately Fixes bradygaster#236 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
) - Wire aspire command: squad aspire [--port N] - Wire rc/remote-control command: squad rc [--tunnel] [--port N] - Wire link command: squad link <team-repo-path> - Add help text for all three commands - Update regression test: move aspire/rc/link out of KNOWN_UNWIRED set - Remaining KNOWN_UNWIRED are helper modules (copilot-bridge, init-remote, rc-tunnel) that are used internally, not direct CLI commands Tests: 199/199 unit tests pass (3 wiring + 196 related tests) Fixes bradygaster#237 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Owner
|
Hi @tamirdresher — thanks for this PR! Great work identifying the unwired-command pattern and building the regression test. However, this PR is now superseded by work already on \dev. Our PR #244 (\ix: wire missing CLI commands into cli-entry.ts) landed on \dev\ and covers nearly all the same ground:
After retargeting to \dev, this PR has 5 merge conflicts (cli-entry.ts, cli-command-wiring.test.ts, plus 3 files from main/dev branch divergence). Given the heavy overlap, resolving those conflicts would essentially rewrite the PR. Closing this as superseded. The watch/triage wiring gap will be addressed separately. Thank you for the contribution — your regression test approach directly influenced our implementation! 🙏 |
tamirdresher
added a commit
to tamirdresher/squad
that referenced
this pull request
Mar 8, 2026
Both commands had full implementations (upstream.ts, watch.ts) but were not routed in cli-entry.ts — the recurring 'unwired command' bug class (issues bradygaster#224, bradygaster#236, bradygaster#237). - upstream: add import + routing block for upstreamCommand() - triage/watch: replace placeholder stub with actual runWatch() call - help text: add upstream command description - test: clear KNOWN_UNWIRED set (all commands now wired) Root cause: Brady's cli-entry.ts rewrite (v0.8.21-0.8.23) overwrote the wiring added in PRs bradygaster#225 and bradygaster#238. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
tamirdresher
added a commit
to tamirdresher/squad
that referenced
this pull request
Mar 8, 2026
Both commands had full implementations (upstream.ts, watch.ts) but were not routed in cli-entry.ts — the recurring 'unwired command' bug class (issues bradygaster#224, bradygaster#236, bradygaster#237). - upstream: add import + routing block for upstreamCommand() - triage/watch: replace placeholder stub with actual runWatch() call - help text: add upstream command description - test: clear KNOWN_UNWIRED set (all commands now wired) Root cause: Brady's cli-entry.ts rewrite (v0.8.21-0.8.23) overwrote the wiring added in PRs bradygaster#225 and bradygaster#238. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
tamirdresher
added a commit
to tamirdresher/squad
that referenced
this pull request
Mar 8, 2026
Both commands had full implementations (upstream.ts, watch.ts) but were not routed in cli-entry.ts — the recurring 'unwired command' bug class (issues bradygaster#224, bradygaster#236, bradygaster#237). - upstream: add import + routing block for upstreamCommand() - triage/watch: replace placeholder stub with actual runWatch() call - help text: add upstream command description - test: clear KNOWN_UNWIRED set (all commands now wired) Root cause: Brady's cli-entry.ts rewrite (v0.8.21-0.8.23) overwrote the wiring added in PRs bradygaster#225 and bradygaster#238. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
tamirdresher
added a commit
to tamirdresher/squad
that referenced
this pull request
Mar 8, 2026
Both commands had full implementations (upstream.ts, watch.ts) but were not routed in cli-entry.ts — the recurring 'unwired command' bug class (issues bradygaster#224, bradygaster#236, bradygaster#237). - upstream: add import + routing block for upstreamCommand() - triage/watch: replace placeholder stub with actual runWatch() call - help text: add upstream command description - test: clear KNOWN_UNWIRED set (all commands now wired) Root cause: Brady's cli-entry.ts rewrite (v0.8.21-0.8.23) overwrote the wiring added in PRs bradygaster#225 and bradygaster#238. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
bradygaster
pushed a commit
that referenced
this pull request
Mar 8, 2026
* fix: wire upstream and watch/triage commands in cli-entry.ts Both commands had full implementations (upstream.ts, watch.ts) but were not routed in cli-entry.ts — the recurring 'unwired command' bug class (issues #224, #236, #237). - upstream: add import + routing block for upstreamCommand() - triage/watch: replace placeholder stub with actual runWatch() call - help text: add upstream command description - test: clear KNOWN_UNWIRED set (all commands now wired) Root cause: Brady's cli-entry.ts rewrite (v0.8.21-0.8.23) overwrote the wiring added in PRs #225 and #238. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: make tests resilient to team rebirths (name-agnostic assertions) Tests that read live .squad/team.md and .squad/routing.md were hardcoding agent names (Fenster, Keaton, Hockney). Every time Brady renames the squad (e.g., Usual Suspects → Apollo 13), these tests break. Fixed by making live-file tests assert structure and behavior, not names: - parseRoster(): verify properties exist, not specific member names - parseRoutingRules(): verify structure, emoji presence, not agent strings - parseModuleOwnership(): verify shape, not which agent owns which module - triageIssue(): verify source/confidence, not which agent was selected Tests with inline fixtures (hardcoded test data) still assert specific names — those are self-contained and don't break on rebirths. Also bumps speed-gates line count budget for upstream help text. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
jongio
pushed a commit
to jongio/squad
that referenced
this pull request
Mar 9, 2026
* feat: SDK-based agent spawning infrastructure (bradygaster#238) Adds src/cli/shell/spawn.ts with: - loadAgentCharter(): loads charter from .squad/agents/{name}/charter.md - buildAgentPrompt(): constructs system prompt from charter + optional context - spawnAgent(): spawn lifecycle (load charter, register session, build prompt) - Types: SpawnOptions, SpawnResult, ToolDefinition All exported from src/cli/shell/index.ts barrel. SDK session creation is stubbed — CopilotClient session API wiring comes in a follow-up. This provides the spawn infrastructure for bradygaster#239, bradygaster#241. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * docs: update fenster history and spawn infra decision Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.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
Wire the
watch/triageCLI command to its actual implementation (watch.ts) instead of printing a placeholder message. Also adds a regression test to prevent this class of bug from recurring.Changes
cli-entry.ts: Replace placeholderconsole.log('pending')fortriage/watchwith realimport('./cli/commands/watch.js')callcli-entry.ts: Fix syntax error in upstream help text (doubled backticks causing TS compile failure)test/cli-command-wiring.test.ts: New regression test (3 assertions):.tsfile incommands/has a corresponding import incli-entry.ts(excluding known-unwired bug: 6 CLI commands implemented but not wired into cli-entry.ts #237)Context
This is the third instance of the "implemented but not wired" pattern:
upstream(fixed in merged PR fix: wire upstream command into CLI entry point #225)watch/triage(this PR)aspire,copilot-bridge,init-remote,link,rc-tunnel,rc)The regression test ensures no new commands can be added without wiring.
Testing
vitest run test/cli-command-wiring.test.ts— 3/3 passvitest run test/ralph-*.test.ts— 59/59 passnpm run build— cleanFixes #236