commandmate 0.43.0 → 0.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +209 -209
- package/.next/app-path-routes-manifest.json +36 -36
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +9 -9
- package/.next/required-server-files.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/update/route.js.nft.json +1 -1
- package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/versions/route.js.nft.json +1 -1
- package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update/route.js +2 -2
- package/.next/server/app/api/app/update/route.js.nft.json +1 -1
- package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update-check/route.js +1 -1
- package/.next/server/app/api/app/update-check/route.js.nft.json +1 -1
- package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/capabilities/route.js +1 -1
- package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route.js.nft.json +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/route.js.nft.json +1 -1
- package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/browse/route.js.nft.json +1 -1
- package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/recent-paths/route.js.nft.json +1 -1
- package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js +2 -2
- package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/claude-done/route.js +2 -2
- package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/metrics/vibe/route.js.nft.json +1 -1
- package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/escalation/route.js +1 -1
- package/.next/server/app/api/push/escalation/route.js.nft.json +1 -1
- package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/subscriptions/route.js.nft.json +1 -1
- package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/vapid/route.js +1 -1
- package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
- package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/route.js.nft.json +1 -1
- package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/excluded/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/route.js +1 -1
- package/.next/server/app/api/repositories/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/validate-path/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-surface-mode/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sidebar/group-order/route.js.nft.json +1 -1
- package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/[id]/route.js +1 -1
- package/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/installations/route.js +1 -1
- package/.next/server/app/api/skills/installations/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/operations/route.js +2 -2
- package/.next/server/app/api/skills/operations/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/reindex/route.js +1 -1
- package/.next/server/app/api/skills/reindex/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/route.js +1 -1
- package/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/slash-commands/route.js.nft.json +1 -1
- package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/route.js.nft.json +1 -1
- package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route.js.nft.json +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/route.js.nft.json +1 -1
- package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-reference/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/env/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/notes/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route.js +7 -7
- package/.next/server/app/api/worktrees/[id]/marp-render/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js +103 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/apply-default-agents/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/more/page_client-reference-manifest.js +1 -1
- package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/proxy/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
- package/.next/server/app/review/page_client-reference-manifest.js +1 -1
- package/.next/server/app/sessions/page.js +1 -1
- package/.next/server/app/sessions/page.js.nft.json +1 -1
- package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/[skillId]/page.js +1 -1
- package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
- package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/page.js +3 -3
- package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page.js +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +36 -36
- package/.next/server/chunks/1501.js +3 -3
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/2283.js +15 -0
- package/.next/server/chunks/2328.js +1 -1
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/4207.js +1 -1
- package/.next/server/chunks/4802.js +1 -1
- package/.next/server/chunks/488.js +1 -0
- package/.next/server/chunks/5326.js +1 -1
- package/.next/server/chunks/5456.js +1 -1
- package/.next/server/chunks/611.js +1 -1
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6401.js +1 -1
- package/.next/server/chunks/6474.js +14 -0
- package/.next/server/chunks/650.js +1 -0
- package/.next/server/chunks/6781.js +1 -1
- package/.next/server/chunks/{5742.js → 6927.js} +1 -1
- package/.next/server/chunks/7506.js +1 -1
- package/.next/server/chunks/7905.js +1 -1
- package/.next/server/chunks/8543.js +1 -1
- package/.next/server/chunks/8581.js +1 -1
- package/.next/server/chunks/8728.js +2 -2
- package/.next/server/chunks/8782.js +1 -0
- package/.next/server/chunks/8791.js +1 -1
- package/.next/server/chunks/8918.js +105 -3
- package/.next/server/chunks/9130.js +1 -1
- package/.next/server/chunks/9390.js +1 -1
- package/.next/server/chunks/967.js +1 -1
- package/.next/server/chunks/9731.js +3 -3
- package/.next/server/chunks/9882.js +2 -2
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages-manifest.json +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/server/src/middleware.js +2 -2
- package/.next/server/src/middleware.js.map +1 -1
- package/.next/static/chunks/{1642-767aed8e7c61ef7f.js → 1642-fb2e176aaadbd137.js} +1 -1
- package/.next/static/chunks/2053-85a974ddfe7498fe.js +1 -0
- package/.next/static/chunks/{2407-940df9b11fadafc6.js → 2407-340774f1a24f2b45.js} +1 -1
- package/.next/static/chunks/{2619-a305ad4810f1393a.js → 2619-04bc32f026a0d946.js} +1 -1
- package/.next/static/chunks/5521-c358c31f60e5e689.js +1 -0
- package/.next/static/chunks/591-0a45801e83f26f24.js +1 -0
- package/.next/static/chunks/{8165-3525fb42f1b4976e.js → 8165-3853772f6ae1299b.js} +1 -1
- package/.next/static/chunks/{8566-a6a7c70558927410.js → 8566-aeda747542072ace.js} +1 -1
- package/.next/static/chunks/8811-29eaa24237f48558.js +1 -0
- package/.next/static/chunks/{9619-22adf5367c4b7080.js → 9619-84aced0846cbe3ac.js} +1 -1
- package/.next/static/chunks/app/{layout-057c850cd0df978e.js → layout-0fc249fb7de75a27.js} +1 -1
- package/.next/static/chunks/app/sessions/page-55297155e7bf01b9.js +1 -0
- package/.next/static/chunks/app/skills/[skillId]/{page-74aac15286504ef4.js → page-9ee7a381636e60cb.js} +1 -1
- package/.next/static/chunks/app/worktrees/[id]/page-d2103e0c25be83c8.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/terminal/{page-c601f3b3ece6557e.js → page-373ea37b16d930c7.js} +1 -1
- package/.next/static/css/38070d879efa1371.css +1 -0
- package/.next/trace +13 -13
- package/README.md +58 -620
- package/dist/cli/commands/capture.d.ts.map +1 -1
- package/dist/cli/commands/capture.js +11 -1
- package/dist/cli/commands/docs.d.ts.map +1 -1
- package/dist/cli/commands/docs.js +5 -0
- package/dist/cli/commands/remote.d.ts +24 -1
- package/dist/cli/commands/remote.d.ts.map +1 -1
- package/dist/cli/commands/remote.js +155 -6
- package/dist/cli/commands/respond.d.ts.map +1 -1
- package/dist/cli/commands/respond.js +255 -112
- package/dist/cli/commands/stop.d.ts.map +1 -1
- package/dist/cli/commands/stop.js +53 -1
- package/dist/cli/commands/sync.js +3 -3
- package/dist/cli/docs/setup-guide.d.ts +14 -0
- package/dist/cli/docs/setup-guide.d.ts.map +1 -0
- package/dist/cli/docs/setup-guide.js +366 -0
- package/dist/cli/types/api-responses.d.ts +11 -0
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/cli/types/index.d.ts +2 -0
- package/dist/cli/types/index.d.ts.map +1 -1
- package/dist/cli/utils/daemon.d.ts +42 -2
- package/dist/cli/utils/daemon.d.ts.map +1 -1
- package/dist/cli/utils/daemon.js +222 -40
- package/dist/cli/utils/docs-reader.d.ts +6 -0
- package/dist/cli/utils/docs-reader.d.ts.map +1 -1
- package/dist/cli/utils/docs-reader.js +14 -13
- package/dist/cli/utils/npm-runner.d.ts +12 -0
- package/dist/cli/utils/npm-runner.d.ts.map +1 -1
- package/dist/cli/utils/npm-runner.js +36 -0
- package/dist/cli/utils/process-inspect.d.ts +55 -0
- package/dist/cli/utils/process-inspect.d.ts.map +1 -0
- package/dist/cli/utils/process-inspect.js +214 -0
- package/dist/cli/utils/remote-pairing.d.ts +68 -0
- package/dist/cli/utils/remote-pairing.d.ts.map +1 -0
- package/dist/cli/utils/remote-pairing.js +117 -0
- package/dist/cli/utils/server-identity.d.ts +50 -0
- package/dist/cli/utils/server-identity.d.ts.map +1 -0
- package/dist/cli/utils/server-identity.js +118 -0
- package/dist/cli/utils/server-ready.d.ts +13 -0
- package/dist/cli/utils/server-ready.d.ts.map +1 -1
- package/dist/cli/utils/server-ready.js +16 -0
- package/dist/lib/security/pairing-code.d.ts +2 -1
- package/dist/lib/security/pairing-code.d.ts.map +1 -1
- package/dist/server/locales/en/worktree.json +28 -6
- package/dist/server/locales/ja/worktree.json +28 -6
- package/dist/server/src/config/image-extensions.js +1 -0
- package/dist/server/src/lib/auto-yes-poller.js +22 -0
- package/dist/server/src/lib/cli-tools/command-code-plan-review.js +175 -0
- package/dist/server/src/lib/cli-tools/command-code.js +27 -2
- package/dist/server/src/lib/detection/cli-patterns.js +94 -1
- package/dist/server/src/lib/detection/tools/codex/detect.js +26 -0
- package/dist/server/src/lib/detection/tools/command-code/plan-review-state.js +75 -0
- package/dist/server/src/lib/hooks/sources/claude/transcript.js +33 -1
- package/dist/server/src/lib/session/claude-executor.js +2 -2
- package/dist/server/src/lib/session/claude-session.js +131 -15
- package/dist/server/src/lib/session/session-start-error.js +20 -0
- package/dist/server/src/lib/skills/agent-state-paths.js +39 -0
- package/dist/server/src/lib/skills/receipt-owned-paths.js +118 -0
- package/dist/server/src/lib/tmux/tmux.js +25 -0
- package/dist/server/src/lib/verification/env-clean-gate.js +195 -6
- package/dist/server/src/lib/verification/gate-runner.js +29 -2
- package/dist/server/src/lib/verification/scope-gate.js +58 -4
- package/docs/en/architecture.md +722 -0
- package/docs/en/user-guide/agents-guide.md +306 -0
- package/docs/en/user-guide/cli-setup-guide.md +676 -0
- package/docs/en/user-guide/cmate-schedules-guide.md +388 -0
- package/docs/en/user-guide/commands-guide.md +467 -0
- package/docs/en/user-guide/quick-start.md +231 -0
- package/docs/en/user-guide/webapp-guide.md +1020 -0
- package/docs/en/user-guide/workflow-examples.md +463 -0
- package/package.json +18 -7
- package/release-notes/0.44.0.json +82 -0
- package/.next/server/chunks/1990.js +0 -103
- package/.next/server/chunks/3707.js +0 -15
- package/.next/server/chunks/6491.js +0 -103
- package/.next/server/chunks/7004.js +0 -1
- package/.next/server/chunks/8673.js +0 -14
- package/.next/static/chunks/2039-117a361f795ddc4b.js +0 -1
- package/.next/static/chunks/2053-611dd27d42721b79.js +0 -1
- package/.next/static/chunks/3778-56f41fc2cecb8c43.js +0 -1
- package/.next/static/chunks/7705-1f58d4c03d991fcf.js +0 -1
- package/.next/static/chunks/app/sessions/page-1a8ba152bbcb9efb.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-eab0bf7564d3f9e2.js +0 -1
- package/.next/static/css/b3f433d52b8ed5c8.css +0 -1
- /package/.next/static/{BVkBYdceLRvMROqQIqeBx → wu7SUiHTirFcrpo5teyZ3}/_buildManifest.js +0 -0
- /package/.next/static/{BVkBYdceLRvMROqQIqeBx → wu7SUiHTirFcrpo5teyZ3}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,463 @@
|
|
|
1
|
+
[日本語版](../../user-guide/workflow-examples.md)
|
|
2
|
+
|
|
3
|
+
# Workflow Examples
|
|
4
|
+
|
|
5
|
+
Practical workflow examples using CommandMate's commands and agents.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. New Feature Development Flow
|
|
10
|
+
|
|
11
|
+
A standard workflow for developing a new Issue.
|
|
12
|
+
|
|
13
|
+
### Step 1: Review the Issue
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# List issues
|
|
17
|
+
gh issue list
|
|
18
|
+
|
|
19
|
+
# View the target issue
|
|
20
|
+
gh issue view 123
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Step 2: Create a Work Plan
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
/work-plan 123
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Output example**:
|
|
30
|
+
```markdown
|
|
31
|
+
## Issue: Add Dark Mode
|
|
32
|
+
**Issue number**: #123
|
|
33
|
+
**Size**: M
|
|
34
|
+
**Priority**: High
|
|
35
|
+
|
|
36
|
+
### Task Breakdown
|
|
37
|
+
- [ ] Task 1.1: Theme type definitions
|
|
38
|
+
- [ ] Task 1.2: Create theme context
|
|
39
|
+
- [ ] Task 1.3: Implement UI components
|
|
40
|
+
- [ ] Task 2.1: Unit tests
|
|
41
|
+
...
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Step 3: Automated Development
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
/pm-auto-dev 123
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Execution**:
|
|
51
|
+
1. TDD implementation (test creation -> implementation -> refactoring)
|
|
52
|
+
2. Acceptance testing
|
|
53
|
+
3. Code quality improvement
|
|
54
|
+
4. Progress report creation
|
|
55
|
+
|
|
56
|
+
### Step 4: Create PR
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
/create-pr
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Output example**:
|
|
63
|
+
```markdown
|
|
64
|
+
## Summary
|
|
65
|
+
|
|
66
|
+
Added dark mode feature.
|
|
67
|
+
|
|
68
|
+
Closes #123
|
|
69
|
+
|
|
70
|
+
## Changes
|
|
71
|
+
|
|
72
|
+
### Added
|
|
73
|
+
- Theme toggle component
|
|
74
|
+
- Dark mode styles
|
|
75
|
+
|
|
76
|
+
## Test Results
|
|
77
|
+
- Unit Tests: 15/15 passed
|
|
78
|
+
- Coverage: 85%
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## 2. Bug Fix Flow
|
|
84
|
+
|
|
85
|
+
A workflow for fixing issues when bugs are discovered.
|
|
86
|
+
|
|
87
|
+
### Step 1: Bug Report
|
|
88
|
+
|
|
89
|
+
A bug is discovered by a user or yourself.
|
|
90
|
+
|
|
91
|
+
### Step 2: Automated Investigation & Fix
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
/bug-fix API error occurring
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**Execution phases**:
|
|
98
|
+
|
|
99
|
+
**Phase 1: Bug Investigation**
|
|
100
|
+
- Error log analysis
|
|
101
|
+
- Root cause identification
|
|
102
|
+
|
|
103
|
+
```markdown
|
|
104
|
+
## Investigation Summary
|
|
105
|
+
|
|
106
|
+
**Root cause**: Timeout setting too short
|
|
107
|
+
**Impact scope**: All users
|
|
108
|
+
**Severity**: high
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Phase 2: Solution Proposals**
|
|
112
|
+
```markdown
|
|
113
|
+
## Solutions (by priority)
|
|
114
|
+
|
|
115
|
+
1. [High] Change timeout setting (30 min)
|
|
116
|
+
2. [Medium] Add retry logic (1 hour)
|
|
117
|
+
|
|
118
|
+
Which solution would you like to implement?
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**Phase 3-6: Fix, Test & Report**
|
|
122
|
+
- TDD fix implementation
|
|
123
|
+
- Acceptance testing
|
|
124
|
+
- Progress report
|
|
125
|
+
|
|
126
|
+
### Step 3: Create PR
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
/create-pr
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## 3. Refactoring Flow
|
|
135
|
+
|
|
136
|
+
A workflow for improving code quality.
|
|
137
|
+
|
|
138
|
+
### Step 1: Identify Targets
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
/refactoring src/lib/utils.ts
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Step 2: Analysis & Execution
|
|
145
|
+
|
|
146
|
+
**Output example**:
|
|
147
|
+
```
|
|
148
|
+
Refactoring Complete
|
|
149
|
+
|
|
150
|
+
## Refactoring Applied
|
|
151
|
+
- Split long functions
|
|
152
|
+
- Removed duplicate code
|
|
153
|
+
- Improved naming
|
|
154
|
+
|
|
155
|
+
## Quality Metrics Improvement
|
|
156
|
+
| Metric | Before | After | Improvement |
|
|
157
|
+
|--------|--------|-------|-------------|
|
|
158
|
+
| Coverage | 75.0% | 85.0% | +10.0% |
|
|
159
|
+
| ESLint errors | 5 | 0 | -5 |
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Step 3: Verify Tests
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
npm run test:unit
|
|
166
|
+
npm run lint
|
|
167
|
+
npx tsc --noEmit
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## 4. Emergency Response Flow
|
|
173
|
+
|
|
174
|
+
A workflow for emergency response when production issues occur.
|
|
175
|
+
|
|
176
|
+
### Step 1: Assess the Situation
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
# Check recent logs
|
|
180
|
+
tail -100 logs/error.log
|
|
181
|
+
|
|
182
|
+
# Check environment variables
|
|
183
|
+
cat .env.production
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Step 2: Emergency Fix
|
|
187
|
+
|
|
188
|
+
```
|
|
189
|
+
/bug-fix API error occurring in production
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
**Setting severity to critical**:
|
|
193
|
+
- Prioritize implementing Solution 1
|
|
194
|
+
- Run tests
|
|
195
|
+
- Prepare for immediate deployment
|
|
196
|
+
|
|
197
|
+
### Step 3: Create hotfix Branch
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
git checkout -b hotfix/critical-api-fix
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### Step 4: Create PR (emergency merge)
|
|
204
|
+
|
|
205
|
+
```
|
|
206
|
+
/create-pr
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## 5. Fully Automated Development Flow
|
|
212
|
+
|
|
213
|
+
A flow where you just specify an Issue number and development runs to completion automatically.
|
|
214
|
+
|
|
215
|
+
### Execution
|
|
216
|
+
|
|
217
|
+
```
|
|
218
|
+
/pm-auto-dev 166
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Auto-execution Details
|
|
222
|
+
|
|
223
|
+
```
|
|
224
|
+
Phase 1: Issue information gathered
|
|
225
|
+
- Issue #166: Add new feature
|
|
226
|
+
- Acceptance criteria: 3 items
|
|
227
|
+
- Implementation tasks: 5 items
|
|
228
|
+
|
|
229
|
+
Phase 2: TDD Implementation (Iteration 1/3)
|
|
230
|
+
- Launching tdd-impl-agent...
|
|
231
|
+
- Coverage: 85%
|
|
232
|
+
- Tests: 15/15 passed
|
|
233
|
+
|
|
234
|
+
Phase 3: Acceptance Testing
|
|
235
|
+
- Launching acceptance-test-agent...
|
|
236
|
+
- Test scenarios: 3/3 passed
|
|
237
|
+
|
|
238
|
+
Phase 4: Refactoring
|
|
239
|
+
- Launching refactoring-agent...
|
|
240
|
+
- Coverage: 85% -> 88%
|
|
241
|
+
|
|
242
|
+
Phase 5: Progress Report
|
|
243
|
+
- Launching progress-report-agent...
|
|
244
|
+
- Report created
|
|
245
|
+
|
|
246
|
+
Issue #166 development complete!
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### After Completion
|
|
250
|
+
|
|
251
|
+
```
|
|
252
|
+
/create-pr
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## 6. Standalone TDD Execution Flow
|
|
258
|
+
|
|
259
|
+
A flow for running just TDD implementation.
|
|
260
|
+
|
|
261
|
+
### Execution
|
|
262
|
+
|
|
263
|
+
```
|
|
264
|
+
/tdd-impl new API endpoint
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### TDD Cycle
|
|
268
|
+
|
|
269
|
+
**Red Phase**:
|
|
270
|
+
```typescript
|
|
271
|
+
// tests/unit/api.test.ts
|
|
272
|
+
it('should return data', async () => {
|
|
273
|
+
const result = await fetchData()
|
|
274
|
+
expect(result).toBeDefined()
|
|
275
|
+
})
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
**Green Phase**:
|
|
279
|
+
```typescript
|
|
280
|
+
// src/lib/api.ts
|
|
281
|
+
export async function fetchData() {
|
|
282
|
+
return { data: 'test' }
|
|
283
|
+
}
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
**Refactor Phase**:
|
|
287
|
+
- Improve code
|
|
288
|
+
- Re-run tests
|
|
289
|
+
|
|
290
|
+
### Result
|
|
291
|
+
|
|
292
|
+
```
|
|
293
|
+
TDD Implementation Complete
|
|
294
|
+
|
|
295
|
+
## Test Results
|
|
296
|
+
- Total: 5 tests
|
|
297
|
+
- Passed: 5
|
|
298
|
+
- Coverage: 90%
|
|
299
|
+
|
|
300
|
+
## Static Analysis
|
|
301
|
+
- ESLint: 0 errors
|
|
302
|
+
- TypeScript: 0 errors
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
## 7. Contract-Based Parallel Development Flow
|
|
308
|
+
|
|
309
|
+
Delegate several issues to separate worktrees in parallel and decide whether each
|
|
310
|
+
one is done **from an exit code rather than by reading the agent's report**. The
|
|
311
|
+
gates in `.commandmate/verify.yaml` adjudicate — not the worker's "all done!"
|
|
312
|
+
message.
|
|
313
|
+
|
|
314
|
+
Prerequisite: `commandmatedev send --help` lists `--contract` and `wait --help`
|
|
315
|
+
lists `--verify` (the contract flags exist only on develop builds).
|
|
316
|
+
|
|
317
|
+
### Step 1: Draft an execution contract and place it in the worktree
|
|
318
|
+
|
|
319
|
+
Write `.commandmate/tasks/issue-<N>.yaml` **inside the target worktree**, one per
|
|
320
|
+
issue. The spec is [task-contract.md](../../design/task-contract.md); a worked
|
|
321
|
+
example ships as `.commandmate/tasks/example.yaml`.
|
|
322
|
+
|
|
323
|
+
```yaml
|
|
324
|
+
version: 1
|
|
325
|
+
title: "Issue #1600: add a dark mode toggle"
|
|
326
|
+
goal: |
|
|
327
|
+
Implement https://github.com/Kewton/CommandMate/issues/1600.
|
|
328
|
+
Acceptance criteria:
|
|
329
|
+
- a toggle appears in the header
|
|
330
|
+
- the selected theme survives a reload
|
|
331
|
+
scope:
|
|
332
|
+
allow:
|
|
333
|
+
- "src/components/layout/**"
|
|
334
|
+
- "tests/unit/components/**"
|
|
335
|
+
deny: []
|
|
336
|
+
verify:
|
|
337
|
+
gates: [lint, typecheck, unit] # omit the key to run every gate (recommended)
|
|
338
|
+
success:
|
|
339
|
+
requireWorkEvidence: true
|
|
340
|
+
requireScopeClean: true
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
The contract does not have to be committed. The `work-evidence` and `scope` gates
|
|
344
|
+
exclude the contract file itself from the change set, so dropping a contract into
|
|
345
|
+
a worktree never makes it look like work was done.
|
|
346
|
+
|
|
347
|
+
### Step 2: Send with the contract
|
|
348
|
+
|
|
349
|
+
`--contract` composes the goal into the message body, so **do not pass a message
|
|
350
|
+
argument** (passing both exits 2). The task id is printed on stdout.
|
|
351
|
+
|
|
352
|
+
```bash
|
|
353
|
+
WT=$(commandmatedev ls --branch "feature/1600" --quiet)
|
|
354
|
+
TASK_ID=$(commandmatedev send "$WT" \
|
|
355
|
+
--contract .commandmate/tasks/issue-1600.yaml \
|
|
356
|
+
--instance claude --auto-yes --duration 3h)
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
Name the target with `--instance`, not `--agent`. `wait` does not accept
|
|
360
|
+
`--agent`, so naming the agent only on `send` leaves the `wait` in Step 3
|
|
361
|
+
watching the worktree's default agent (Issue #1638).
|
|
362
|
+
|
|
363
|
+
Right after sending, run `commandmatedev capture "$WT"` to confirm the worker
|
|
364
|
+
actually started. `send` can exit 0 while the text sits unsubmitted in the composer.
|
|
365
|
+
|
|
366
|
+
### Step 3: Wait, then verify
|
|
367
|
+
|
|
368
|
+
```bash
|
|
369
|
+
commandmatedev wait "$WT" --instance claude --on-prompt human --verify --timeout 10800
|
|
370
|
+
echo "exit=$?"
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
Without `--on-prompt human`, every detected prompt returns exit 10 immediately.
|
|
374
|
+
`--verify` runs every gate **after** completion is detected and turns the result
|
|
375
|
+
into the exit code.
|
|
376
|
+
|
|
377
|
+
### Step 4: Branch on the exit code
|
|
378
|
+
|
|
379
|
+
| exit | Meaning | What to do |
|
|
380
|
+
|------|---------|-----------|
|
|
381
|
+
| `0` | Done, verification passed | Move on to the PR (`/create-pr`) |
|
|
382
|
+
| `20` | Verification failed | `commandmatedev verify "$WT" --json` to find the failing gate, then re-instruct with its `logTail`. Cap at 2 retries |
|
|
383
|
+
| `21` | No work evidence | `commandmatedev capture "$WT"` to tell an unsubmitted composer from a permission prompt or a session that never launched |
|
|
384
|
+
| `10` | Prompt detected | `commandmatedev respond "$WT" "yes"`, then wait again |
|
|
385
|
+
| `124` | Timed out | Inspect with capture |
|
|
386
|
+
|
|
387
|
+
```bash
|
|
388
|
+
# On exit 20: which gate failed?
|
|
389
|
+
commandmatedev verify "$WT" --json
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
The verdict stays queryable afterwards, and a worktree id is enough — you never
|
|
393
|
+
need to have kept the task id:
|
|
394
|
+
|
|
395
|
+
```bash
|
|
396
|
+
commandmatedev task list "$WT" --limit 5 # id / status / agent / gates / title
|
|
397
|
+
commandmatedev task show "$TASK_ID" # contract + the verification run that judged it
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
### Running them in parallel
|
|
401
|
+
|
|
402
|
+
Repeat steps 1–4 per issue: independent issues in parallel, strongly dependent
|
|
403
|
+
ones in sequence. If you supervise with the
|
|
404
|
+
[orchestrate-monitor skill](../../../.claude/skills/orchestrate-monitor/SKILL.md),
|
|
405
|
+
give it the task-status hook as well:
|
|
406
|
+
|
|
407
|
+
```bash
|
|
408
|
+
.claude/skills/orchestrate-monitor/scripts/monitor.sh \
|
|
409
|
+
--hooks .claude/skills/orchestrate-monitor/scripts/hooks-git.sh \
|
|
410
|
+
--hooks .claude/skills/orchestrate-monitor/scripts/hooks-task.sh \
|
|
411
|
+
--interval 20 --idle-threshold 8 "$WT" ...
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
The tmux session an intervention is sent to is derived from the poll's
|
|
415
|
+
`cliToolId`, so no option is needed even for a fleet running several agents
|
|
416
|
+
(#1601). Only a non-default instance needs to be named, as
|
|
417
|
+
`<worktree-id>@<instance-id>` (e.g. `w1@codex-2`).
|
|
418
|
+
|
|
419
|
+
**The monitor's `COMPLETE` is not a merge verdict.** The verdict is the exit code
|
|
420
|
+
from step 3. The monitor only decides when to go look.
|
|
421
|
+
|
|
422
|
+
---
|
|
423
|
+
|
|
424
|
+
## Best Practices for Command Usage
|
|
425
|
+
|
|
426
|
+
### 1. Start with a Plan
|
|
427
|
+
|
|
428
|
+
```
|
|
429
|
+
/work-plan -> /pm-auto-dev -> /create-pr
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
### 2. Regular Progress Checks
|
|
433
|
+
|
|
434
|
+
```
|
|
435
|
+
/progress-report 123
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
### 3. Thorough Quality Checks
|
|
439
|
+
|
|
440
|
+
```bash
|
|
441
|
+
npm run lint
|
|
442
|
+
npx tsc --noEmit
|
|
443
|
+
npm run test:unit
|
|
444
|
+
npm run build
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
### 4. Commit Message Convention
|
|
448
|
+
|
|
449
|
+
```
|
|
450
|
+
feat(scope): add new feature
|
|
451
|
+
fix(scope): fix bug
|
|
452
|
+
refactor(scope): refactor code
|
|
453
|
+
test(scope): add tests
|
|
454
|
+
docs(scope): update documentation
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
---
|
|
458
|
+
|
|
459
|
+
## Related Documentation
|
|
460
|
+
|
|
461
|
+
- [Quick Start Guide](./quick-start.md) - 5-minute development flow
|
|
462
|
+
- [Commands Guide](./commands-guide.md) - Command details
|
|
463
|
+
- [Agents Guide](./agents-guide.md) - Agent details
|
package/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "commandmate",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.44.0",
|
|
4
|
+
"description": "No long blocks of time? Run an AI team from your phone. Git worktree sessions, task contracts and verification gates for Claude Code, Codex, Gemini CLI, Copilot, OpenCode, Antigravity and Command Code.",
|
|
5
5
|
"keywords": [
|
|
6
|
+
"ai-agents",
|
|
6
7
|
"claude-code",
|
|
7
8
|
"codex-cli",
|
|
8
9
|
"gemini-cli",
|
|
9
|
-
"agent-cli",
|
|
10
|
-
"cli-orchestration",
|
|
11
|
-
"ai-coding",
|
|
12
|
-
"git-worktree",
|
|
13
10
|
"coding-agent",
|
|
14
|
-
"
|
|
11
|
+
"agent-orchestration",
|
|
12
|
+
"git-worktree",
|
|
13
|
+
"verification-gates",
|
|
14
|
+
"mobile",
|
|
15
15
|
"tmux",
|
|
16
16
|
"cli",
|
|
17
17
|
"developer-tools"
|
|
@@ -32,6 +32,14 @@
|
|
|
32
32
|
".next/",
|
|
33
33
|
"!.next/cache",
|
|
34
34
|
"public/",
|
|
35
|
+
"docs/en/user-guide/quick-start.md",
|
|
36
|
+
"docs/en/user-guide/commands-guide.md",
|
|
37
|
+
"docs/en/user-guide/webapp-guide.md",
|
|
38
|
+
"docs/en/user-guide/workflow-examples.md",
|
|
39
|
+
"docs/en/user-guide/cli-setup-guide.md",
|
|
40
|
+
"docs/en/user-guide/agents-guide.md",
|
|
41
|
+
"docs/en/user-guide/cmate-schedules-guide.md",
|
|
42
|
+
"docs/en/architecture.md",
|
|
35
43
|
"scripts/hooks/",
|
|
36
44
|
"scripts/opencode-v2/",
|
|
37
45
|
".env.example",
|
|
@@ -141,5 +149,8 @@
|
|
|
141
149
|
"tw-animate-css": "^1.4.0",
|
|
142
150
|
"typescript": "^5.5.0",
|
|
143
151
|
"vitest": "^4.1.2"
|
|
152
|
+
},
|
|
153
|
+
"overrides": {
|
|
154
|
+
"@xmldom/xmldom": "^0.9.12"
|
|
144
155
|
}
|
|
145
156
|
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.44.0",
|
|
3
|
+
"date": "2026-10-03",
|
|
4
|
+
"highlight": {
|
|
5
|
+
"ja": "エージェントに読ませるだけで導入まで案内してくれるセットアップガイドを加えました。スマホからのログインと公開の安全性も改善しています。",
|
|
6
|
+
"en": "A setup guide your agent can read and follow now walks you through installation. Phone login and remote access are also safer."
|
|
7
|
+
},
|
|
8
|
+
"added": [
|
|
9
|
+
{
|
|
10
|
+
"ja": "チャットの吹き出しで、worktree 内の画像を表示できるようになりました。",
|
|
11
|
+
"en": "Chat bubbles now show images from the worktree."
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"ja": "チャットの吹き出しで、worktree 内の動画を再生できるようになりました。",
|
|
15
|
+
"en": "Chat bubbles now play videos from the worktree."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"ja": "Command Code の計画レビュー画面で、チャット面からコメント・送信・承認・取り消しができるようになりました。承認の前には確認が出ます。",
|
|
19
|
+
"en": "In Command Code's plan review, you can now comment, submit, approve, or cancel from the chat view. Approving asks for confirmation first."
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"ja": "ペアリングの QR を失くしたとき、公開を張り直さずに新しいリンクを出せるようになりました。",
|
|
23
|
+
"en": "If you lose the pairing QR code, you can now get a new link without restarting remote access."
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"ja": "エージェントに読ませて導入を進めてもらうセットアップガイドを追加しました。",
|
|
27
|
+
"en": "Added a setup guide that your agent can read to walk you through installation."
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"improved": [
|
|
31
|
+
{
|
|
32
|
+
"ja": "Command Code の計画レビュー画面に、CLI からコメント・送信・承認・取り消しを送れるようになりました。",
|
|
33
|
+
"en": "The CLI can now comment on, submit, approve, or cancel a Command Code plan review."
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"ja": "画面の出力がまだ無いとき、確認ダイアログの見方を案内するようになりました。",
|
|
37
|
+
"en": "When there is no output yet, capture now tells you how to see a waiting confirmation screen."
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"ja": "Command Code が自分で書く設定ファイルを、作業の変更として数えなくなりました。",
|
|
41
|
+
"en": "Settings files that Command Code writes for itself are no longer counted as your changes."
|
|
42
|
+
}
|
|
43
|
+
],
|
|
44
|
+
"fixed": [
|
|
45
|
+
{
|
|
46
|
+
"ja": "停止したはずのサーバーが残り、ログインなしで公開されてしまうことがある問題を直しました。",
|
|
47
|
+
"en": "Fixed a case where a server that should have stopped stayed up and could be exposed without login."
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"ja": "トンネル越しにログインしようとすると localhost に移動してしまう問題を直しました。",
|
|
51
|
+
"en": "Fixed logging in through a tunnel sending you to localhost."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"ja": "Claude Code の信頼の確認で、終了を選んでしまい最初の送信が届かない問題を直しました。",
|
|
55
|
+
"en": "Fixed Claude Code's trust prompt sometimes choosing to exit, so the first message was not delivered."
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"ja": "初めて使うときに、送信・同期・応答のエラーが誤った対処を案内していた問題を直しました。",
|
|
59
|
+
"en": "Fixed send, sync, and respond errors pointing first-time users to the wrong fix."
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"ja": "npm にまだ出ていない版で更新ボタンが押せてしまう問題を直しました。",
|
|
63
|
+
"en": "Fixed the Update button being available for a version not yet published to npm."
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"ja": "大きすぎる画像を開いたとき、正しく「大きすぎる」と伝えるようになりました。",
|
|
67
|
+
"en": "Opening an image that is too large now correctly says it is too large."
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"ja": "Codex のモデル選択画面に Auto-Yes が答えてしまう問題を直しました。",
|
|
71
|
+
"en": "Fixed Auto-Yes answering Codex's model selection screen."
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"ja": "Claude の /effort の選択画面を正しく認識するようになりました。",
|
|
75
|
+
"en": "Claude's /effort selection screen is now recognized correctly."
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"ja": "依存パッケージの脆弱性を解消しました。",
|
|
79
|
+
"en": "Resolved security vulnerabilities in dependencies."
|
|
80
|
+
}
|
|
81
|
+
]
|
|
82
|
+
}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=1990,exports.ids=[1990],exports.modules={31990:(a,b,c)=>{c.d(b,{Wh:()=>R,WD:()=>S,Lw:()=>U,K1:()=>Q,N5:()=>T});var d=c(8360),e=c(72626),f=c(79892);let g={streamingOutput:!1,explicitResize:!1,snapshotFallback:!0};class h{async unsubscribe(){}}class i{async ensureSession(a,b){await (0,f.N)(a)||await (0,f.jw)(a,b)}async sessionExists(a){return(0,f.N)(a)}async sendInput(a,b){await (0,f.V1)(a,b)}async sendSpecialKey(a,b){if("Escape"!==b&&"C-c"!==b&&"C-d"!==b&&"C-m"!==b&&"Enter"!==b)throw Error(`Unsupported special key for PollingTmuxTransport: ${b}`);await (0,f.ds)(a,b)}async resize(){throw Error("PollingTmuxTransport does not support explicit resize")}async captureSnapshot(a,b){return(0,f.Xg)(a,b)}async subscribe(){return new h}getCapabilities(){return g}async killSession(a){return(0,f.fY)(a)}}let j=null;var k=c(93997),l=c(79646),m=c(28354),n=c(31442),o=c(29021),p=c(21820),q=c(33873),r=c(16983);let s="cm-live-restore.sh",t="cm-live-delegate.sh",u="cm-auto-popup.sh",v=`#!/bin/sh
|
|
2
|
-
# CommandMate live-attach restore (Issue #2317) — generated file, edits are overwritten.
|
|
3
|
-
#
|
|
4
|
-
# sh ~/.commandmate/bin/${s} <session> [control_mode] [width] [height]
|
|
5
|
-
#
|
|
6
|
-
# Pins the session's window back to CommandMate's canvas once no human client is
|
|
7
|
-
# attached to it any more. Safe to run when nothing is delegated: it then simply
|
|
8
|
-
# re-applies the geometry the session already has.
|
|
9
|
-
set -u
|
|
10
|
-
|
|
11
|
-
SESSION="\${1:-}"
|
|
12
|
-
CONTROL_MODE="\${2:-0}"
|
|
13
|
-
WIDTH="\${3:-${r.Jn}}"
|
|
14
|
-
HEIGHT="\${4:-${r.sO}}"
|
|
15
|
-
|
|
16
|
-
case "$SESSION" in
|
|
17
|
-
${n.HL}*) ;;
|
|
18
|
-
*) exit 0 ;;
|
|
19
|
-
esac
|
|
20
|
-
|
|
21
|
-
# A control-mode client detaching is CommandMate's own transport reconnecting,
|
|
22
|
-
# not the human leaving. Doing the restore here would fight the human's attach.
|
|
23
|
-
if [ "$CONTROL_MODE" = "1" ]; then
|
|
24
|
-
exit 0
|
|
25
|
-
fi
|
|
26
|
-
|
|
27
|
-
# Anyone left who is NOT a control client? Then the geometry is still theirs.
|
|
28
|
-
HUMANS=$(tmux list-clients -t "=$SESSION:" -F '#{client_control_mode}' 2>/dev/null \\
|
|
29
|
-
| grep -c -v '^1$') || HUMANS=0
|
|
30
|
-
if [ "\${HUMANS:-0}" -gt 0 ]; then
|
|
31
|
-
exit 0
|
|
32
|
-
fi
|
|
33
|
-
|
|
34
|
-
tmux set-window-option -t "=$SESSION:" window-size manual 2>/dev/null || exit 0
|
|
35
|
-
tmux resize-window -t "=$SESSION:" -x "$WIDTH" -y "$HEIGHT" 2>/dev/null || true
|
|
36
|
-
tmux set-option -u -t "=$SESSION:" @cm_delegated 2>/dev/null || true
|
|
37
|
-
`,w="[0-9a-f]".repeat(8),x=`#!/bin/sh
|
|
38
|
-
# CommandMate live-attach delegate (Issue #2317) — generated file, edits are overwritten.
|
|
39
|
-
#
|
|
40
|
-
# sh ~/.commandmate/bin/${t} <session> <control_mode> [client]
|
|
41
|
-
#
|
|
42
|
-
# Hands the session's window from CommandMate's pinned canvas to the terminal
|
|
43
|
-
# that just attached, so an alternate-screen agent re-lays-out and its transcript
|
|
44
|
-
# becomes readable. Installed as a session-scoped \`client-attached[0]\` hook only
|
|
45
|
-
# when CM_LIVE_ATTACH_HOOK=on; \`commandmate attach --live\` does the same two
|
|
46
|
-
# writes itself and needs no hook.
|
|
47
|
-
#
|
|
48
|
-
# The window is put back by whoever notices the human is gone first: the CLI on
|
|
49
|
-
# return from attach-session, or the server's status poll. This script never
|
|
50
|
-
# restores — the attach edge is the only edge tmux 3.5a lets a session-scoped
|
|
51
|
-
# hook see.
|
|
52
|
-
set -u
|
|
53
|
-
|
|
54
|
-
SESSION="\${1:-}"
|
|
55
|
-
CONTROL_MODE="\${2:-0}"
|
|
56
|
-
|
|
57
|
-
case "$SESSION" in
|
|
58
|
-
${n.HL}claude-*|${n.HL}${w}-claude-*) ;;
|
|
59
|
-
*) exit 0 ;;
|
|
60
|
-
esac
|
|
61
|
-
|
|
62
|
-
# A control-mode client is CommandMate's own transport. Handing it the geometry
|
|
63
|
-
# would resize the canvas to whatever that connection negotiated, which is the
|
|
64
|
-
# #1163 regression this whole feature is built to avoid.
|
|
65
|
-
if [ "$CONTROL_MODE" = "1" ]; then
|
|
66
|
-
exit 0
|
|
67
|
-
fi
|
|
68
|
-
|
|
69
|
-
# Raised BEFORE the size change, so a status poll landing between the two sees
|
|
70
|
-
# "delegated, still pinned" rather than "not delegated, 44 rows".
|
|
71
|
-
tmux set-option -t "=$SESSION:" @cm_delegated 1 2>/dev/null || exit 0
|
|
72
|
-
tmux set-window-option -t "=$SESSION:" window-size latest 2>/dev/null || true
|
|
73
|
-
`,y=`#!/bin/sh
|
|
74
|
-
# CommandMate auto read popup (Issue #2317) — generated file, edits are overwritten.
|
|
75
|
-
#
|
|
76
|
-
# sh ~/.commandmate/bin/${u} <session> <control_mode> <client>
|
|
77
|
-
#
|
|
78
|
-
# Opens the following transcript popup for a human client attaching to a
|
|
79
|
-
# CommandMate session. Never opens for a control-mode client.
|
|
80
|
-
set -u
|
|
81
|
-
|
|
82
|
-
SESSION="\${1:-}"
|
|
83
|
-
CONTROL_MODE="\${2:-0}"
|
|
84
|
-
CLIENT="\${3:-}"
|
|
85
|
-
|
|
86
|
-
case "$SESSION" in
|
|
87
|
-
${n.HL}*) ;;
|
|
88
|
-
*) exit 0 ;;
|
|
89
|
-
esac
|
|
90
|
-
|
|
91
|
-
if [ "$CONTROL_MODE" = "1" ]; then
|
|
92
|
-
exit 0
|
|
93
|
-
fi
|
|
94
|
-
|
|
95
|
-
PAGER_SCRIPT="$HOME/.commandmate/bin/cm-read-pane.sh"
|
|
96
|
-
[ -x "$PAGER_SCRIPT" ] || exit 0
|
|
97
|
-
|
|
98
|
-
if [ -n "$CLIENT" ]; then
|
|
99
|
-
tmux display-popup -c "$CLIENT" -w 90% -h 85% -E "sh \\"$PAGER_SCRIPT\\" --follow \\"$SESSION\\"" 2>/dev/null || true
|
|
100
|
-
else
|
|
101
|
-
tmux display-popup -w 90% -h 85% -E "sh \\"$PAGER_SCRIPT\\" --follow \\"$SESSION\\"" 2>/dev/null || true
|
|
102
|
-
fi
|
|
103
|
-
`;function z(a,b){let c,d=(0,q.join)((0,q.join)((0,p.homedir)(),".commandmate","bin"),a);if((0,o.mkdirSync)((0,q.dirname)(d),{recursive:!0}),(0,o.existsSync)(d))try{c=(0,o.readFileSync)(d,"utf-8")}catch{c=void 0}return c!==b&&(0,o.writeFileSync)(d,b,{mode:493}),(0,o.chmodSync)(d,493),d}var A=c(83598);let B=(0,m.promisify)(l.execFile),C=(0,e.h)("tmux-session-hooks"),D=globalThis.__cmEnsuredSessionHooks??(globalThis.__cmEnsuredSessionHooks=new Set);async function E(a){if((0,n.N_)(a)&&!D.has(a)){D.add(a);try{if((0,n.gM)()&&(0,n.n9)(a)){z(s,v);let b=(0,n.Rr)(a,z(t,x));b&&await B("tmux",b,{timeout:5e3})}else await B("tmux",(0,n.g4)(a),{timeout:5e3});if((0,n.jx)()){let b=(0,n.Ls)(a,z(u,y));b&&await B("tmux",b,{timeout:5e3})}else await B("tmux",(0,n.sL)(a),{timeout:5e3})}catch(b){C.debug("session-hooks:reconcile-failed",{sessionName:a,error:b instanceof Error?b.message:String(b)})}}}async function F(a){try{if(!await (0,A.Us)(a)||await (0,A.Fh)(a))return!1;for(let b of(0,n.RS)(a))await B("tmux",b,{timeout:5e3});return C.info("session-hooks:geometry-restored",{sessionName:a}),!0}catch(b){return C.debug("session-hooks:geometry-restore-failed",{sessionName:a,error:b instanceof Error?b.message:String(b)}),!1}}let G=(0,m.promisify)(l.execFile),H=(0,e.h)("tmux-session-status"),I=globalThis.__cmPublishedTmuxStatus??(globalThis.__cmPublishedTmuxStatus=new Map),J=globalThis.__cmClearedTmuxStatus??(globalThis.__cmClearedTmuxStatus=new Set);async function K(a){let{sessionName:b,worktreeId:c,cliToolId:d,instanceId:e,status:f}=a;if(!(0,n.om)())return J.has(b)||(J.add(b),await M(b)),"disabled";let g=I.get(b);if(g&&g.status===f&&g.worktreeId===c&&g.cliToolId===d&&g.instanceId===e)return"unchanged";let h=(a.now??new Date).toISOString(),i=[[n.eC,f],[n.jp,c],[n.wv,d],[n.L0,e],[n.tx,h]];try{for(let[a,c]of i)await G("tmux",(0,n.ND)(b,a,c),{timeout:5e3});return I.set(b,{status:f,worktreeId:c,cliToolId:d,instanceId:e}),await L(b),"written"}catch(a){return I.delete(b),H.debug("session-status:write-failed",{sessionName:b,error:a instanceof Error?a.message:String(a)}),"error"}}async function L(a){try{let{stdout:b}=await G("tmux",(0,n.Ys)(a,"status-right"),{timeout:5e3}),c=b.trim();if(""!==c&&!c.includes(n.lY))return H.debug("session-status:status-right-user-owned",{sessionName:a,existing:c}),!1;return""===c&&await G("tmux",(0,n.KB)(a,n.lY),{timeout:5e3}),!0}catch(b){return H.debug("session-status:status-right-failed",{sessionName:a,error:b instanceof Error?b.message:String(b)}),!1}}async function M(a){for(let b of(I.delete(a),n.bq))try{await G("tmux",(0,n.cD)(a,b),{timeout:5e3})}catch{}try{let{stdout:b}=await G("tmux",(0,n.Ys)(a,"status-right"),{timeout:5e3});b.includes(n.lY)&&await G("tmux",(0,n.$D)(a),{timeout:5e3})}catch{}}let N=(0,e.h)("cli-session");function O(){return j||(j=new i),j}function P(a,b,c){let e=d.CLIToolManager.getInstance().getTool(b),f=e.getSessionName(a,c);return{cliTool:e,sessionName:f}}async function Q(a,b,c){let{sessionName:d}=P(a,b,c);return O().sessionExists(d)}async function R(a,b,c=1e3,d){let e=N.withContext({worktreeId:a,cliToolId:b});e.debug("captureSessionOutput:start",{requestedLines:c});let{cliTool:f,sessionName:g}=P(a,b,d),h=O();try{let a=await (0,k.aq)(g,c,async()=>{if(!await h.sessionExists(g))throw Error(`${f.name} session ${g} does not exist`);return await h.captureSnapshot(g,{startLine:-k.xE})});return e.debug("captureSessionOutput:success",{actualLines:a.split("\n").length,lastFewLines:a.split("\n").slice(-3).join(" | ")}),a}catch(b){let a=b instanceof Error?b.message:String(b);if(a.includes("does not exist"))throw e.debug("captureSessionOutput:sessionNotFound",{sessionName:g}),b;throw e.error("captureSessionOutput:failed",{error:a}),Error(`Failed to capture ${f.name} output: ${a}`)}}async function S(a,b,c=5e3,d){let e=N.withContext({worktreeId:a,cliToolId:b});e.debug("captureSessionOutputFresh:start",{requestedLines:c});let{cliTool:f,sessionName:g}=P(a,b,d),h=O();try{let a=await h.captureSnapshot(g,{startLine:-c});return a.length>0?(0,k.vF)(g,a,c):(0,k.gm)(g),(0,k.wd)(a,c)}catch(b){(0,k.gm)(g);let a=b instanceof Error?b.message:String(b);throw e.error("captureSessionOutputFresh:failed",{error:a}),Error(`Failed to capture ${f.name} output: ${a}`)}}async function T(a){await E(a.sessionName),(0,n.n9)(a.sessionName)&&await F(a.sessionName),await K(a)}function U(a){I.delete(a),J.delete(a),D.delete(a),(0,A.G9)(a)}}};
|