commandmate 0.49.3 → 0.50.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 +454 -408
- package/.next/app-path-routes-manifest.json +19 -13
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +9 -9
- package/.next/react-loadable-manifest.json +1 -1
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +32 -0
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/update/route_client-reference-manifest.js +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_client-reference-manifest.js +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 +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 +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js +1 -103
- 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_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 +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 +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/[relayId]/resolve/route.js +1 -1
- package/.next/server/app/api/relays/[relayId]/resolve/route.js.nft.json +1 -1
- package/.next/server/app/api/relays/[relayId]/resolve/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/[relayId]/route.js +1 -1
- package/.next/server/app/api/relays/[relayId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/route.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.js +2 -2
- package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/role-defaults/route.js +1 -0
- package/.next/server/app/api/repositories/[id]/role-defaults/route.js.nft.json +1 -0
- package/.next/server/app/api/repositories/[id]/role-defaults/route_client-reference-manifest.js +1 -0
- 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_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 +1 -1
- package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/roles/[id]/route.js +1 -0
- package/.next/server/app/api/roles/[id]/route.js.nft.json +1 -0
- package/.next/server/app/api/roles/[id]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/roles/route.js +1 -0
- package/.next/server/app/api/roles/route.js.nft.json +1 -0
- package/.next/server/app/api/roles/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/settings/agent-role-defaults/route.js +1 -0
- package/.next/server/app/api/settings/agent-role-defaults/route.js.nft.json +1 -0
- package/.next/server/app/api/settings/agent-role-defaults/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/settings/default-agents/route.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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/slash-commands/route.js +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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +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 +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 +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 +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 +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 +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 +3 -3
- 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 +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 +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 +2 -2
- 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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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]/instances/roles/route.js +1 -0
- package/.next/server/app/api/worktrees/[id]/instances/roles/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/instances/roles/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/[id]/instances/roles/settle/route.js +1 -0
- package/.next/server/app/api/worktrees/[id]/instances/roles/settle/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/instances/roles/settle/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/[id]/interrupt/route.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 +2 -2
- 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_client-reference-manifest.js +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 +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 +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 +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 +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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route.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 +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]/prompt-response/strict/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route.js +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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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_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 +3 -104
- 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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route.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 +2 -2
- 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 +1 -103
- 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 +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route.js +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 +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 +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 +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_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.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_client-reference-manifest.js +1 -1
- package/.next/server/app/repositories/page.js +2 -2
- package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
- package/.next/server/app/review/page.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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/page.js +11 -11
- package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +19 -13
- package/.next/server/chunks/1184.js +5 -0
- package/.next/server/chunks/1501.js +5 -5
- package/.next/server/chunks/1656.js +2 -2
- package/.next/server/chunks/1957.js +2 -2
- package/.next/server/chunks/1990.js +103 -0
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/2404.js +1 -1
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/2819.js +1 -0
- package/.next/server/chunks/2897.js +1 -1
- package/.next/server/chunks/3042.js +2 -0
- package/.next/server/chunks/3241.js +1 -1
- package/.next/server/chunks/3294.js +3 -0
- package/.next/server/chunks/3417.js +1 -1
- package/.next/server/chunks/3480.js +1 -1
- package/.next/server/chunks/3505.js +2 -6
- package/.next/server/chunks/3543.js +1 -1
- package/.next/server/chunks/3801.js +2 -2
- package/.next/server/chunks/3945.js +1 -1
- package/.next/server/chunks/4207.js +1 -1
- package/.next/server/chunks/454.js +1 -0
- package/.next/server/chunks/4645.js +1 -0
- package/.next/server/chunks/4911.js +1 -1
- package/.next/server/chunks/5350.js +6 -2
- package/.next/server/chunks/5354.js +1 -1
- package/.next/server/chunks/5571.js +1 -1
- package/.next/server/chunks/6009.js +12 -0
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6285.js +1 -1
- package/.next/server/chunks/6401.js +1 -1
- package/.next/server/chunks/6486.js +2 -2
- package/.next/server/chunks/6569.js +1 -0
- package/.next/server/chunks/6781.js +1 -1
- package/.next/server/chunks/6793.js +4 -4
- package/.next/server/chunks/696.js +3 -0
- package/.next/server/chunks/7023.js +3 -3
- package/.next/server/chunks/{9702.js → 7083.js} +1 -1
- package/.next/server/chunks/741.js +1 -0
- package/.next/server/chunks/7662.js +1 -0
- package/.next/server/chunks/7905.js +1 -1
- package/.next/server/chunks/8143.js +33 -0
- package/.next/server/chunks/8581.js +6 -6
- package/.next/server/chunks/8728.js +2 -2
- package/.next/server/chunks/8782.js +1 -1
- package/.next/server/chunks/8807.js +97 -10
- package/.next/server/chunks/8918.js +3 -105
- package/.next/server/chunks/8955.js +1 -0
- package/.next/server/chunks/923.js +1 -0
- package/.next/server/chunks/9390.js +2 -2
- package/.next/server/chunks/9627.js +5 -5
- package/.next/server/chunks/973.js +1 -0
- package/.next/server/chunks/9731.js +3 -3
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/2314-2c9d587a27e8f731.js +1 -0
- package/.next/static/chunks/2407-ee881c99e218975b.js +1 -0
- package/.next/static/chunks/3931-24d7e245a93feb25.js +1 -0
- package/.next/static/chunks/4548-9afa02fd18afa6c7.js +1 -0
- package/.next/static/chunks/{5794-7975b8e51e731b19.js → 5794-38b3b504b3d97e04.js} +1 -1
- package/.next/static/chunks/{6966-d8dc6032410ffaba.js → 6966-dbfa4a43397f8c6d.js} +1 -1
- package/.next/static/chunks/7090-28e83f5a0efdb3b4.js +1 -0
- package/.next/static/chunks/7229.016d007c467a3600.js +1 -0
- package/.next/static/chunks/{8407-35bbfc84793d7004.js → 8407-dd6a8062fc449899.js} +1 -1
- package/.next/static/chunks/app/api/agents/update/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/agents/versions/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/app/release-notes/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/app/update/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/app/update-check/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/auth/login/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/auth/status/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/capabilities/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/status/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/external-apps/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/fs/browse/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/fs/recent-paths/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/hooks/agent-event/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/hooks/claude-done/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/hooks/permission-request/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/metrics/vibe/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/ollama/models/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/push/escalation/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/push/subscriptions/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/push/vapid/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/relays/[relayId]/resolve/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/relays/[relayId]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/relays/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/remote/pair/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/role-defaults/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/repositories/excluded/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/repositories/restore/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/repositories/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/repositories/scan/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/repositories/sync/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/repositories/validate-path/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/roles/[id]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/roles/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/settings/agent-role-defaults/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/settings/default-agents/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/settings/default-surface-mode/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/sidebar/group-order/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/skills/[id]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/skills/installations/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/skills/operations/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/skills/reindex/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/skills/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/slash-commands/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/templates/[id]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/templates/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/env/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/instances/roles/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/instances/roles/settle/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/layout-7bf800fcc5e025b1.js +1 -0
- package/.next/static/chunks/app/manifest.webmanifest/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/more/{page-ff5af5ca48774c89.js → page-e8f5780f6e4fb657.js} +1 -1
- package/.next/static/chunks/app/{page-b4863bfe0452e09d.js → page-869f353a4ac4e15b.js} +1 -1
- package/.next/static/chunks/app/proxy/[...path]/route-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/repositories/page-bedb505687010f18.js +1 -0
- package/.next/static/chunks/app/review/page-87c4a9b0de50fa80.js +1 -0
- package/.next/static/chunks/app/sessions/{page-c6eb7c02db2f4c80.js → page-82ca46793789fce4.js} +1 -1
- package/.next/static/chunks/app/worktrees/[id]/layout-476063c3571b81dd.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-570eb79fbbd1a934.js +1 -0
- package/.next/static/chunks/{webpack-838df0273b03af19.js → webpack-16b1a3143fa42ca0.js} +1 -1
- package/.next/static/css/d4f2c9522cf1b449.css +1 -0
- package/.next/static/z4d8-5MaLkoD-4EhueZwk/_buildManifest.js +1 -0
- package/.next/trace +14 -13
- package/.next/types/app/api/repositories/[id]/role-defaults/route.ts +347 -0
- package/.next/types/app/api/roles/[id]/route.ts +347 -0
- package/.next/types/app/api/roles/route.ts +347 -0
- package/.next/types/app/api/settings/agent-role-defaults/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/instances/roles/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/instances/roles/settle/route.ts +347 -0
- package/.next/types/routes.d.ts +7 -1
- package/.next/types/validator.ts +54 -0
- package/dist/cli/commands/instances.d.ts +1 -0
- package/dist/cli/commands/instances.d.ts.map +1 -1
- package/dist/cli/commands/instances.js +290 -33
- package/dist/cli/commands/message-dispatch.d.ts +25 -3
- package/dist/cli/commands/message-dispatch.d.ts.map +1 -1
- package/dist/cli/commands/message-dispatch.js +26 -6
- package/dist/cli/commands/relays.d.ts +5 -0
- package/dist/cli/commands/relays.d.ts.map +1 -1
- package/dist/cli/commands/relays.js +37 -1
- package/dist/cli/commands/roles.d.ts +11 -0
- package/dist/cli/commands/roles.d.ts.map +1 -0
- package/dist/cli/commands/roles.js +392 -0
- package/dist/cli/commands/send.d.ts.map +1 -1
- package/dist/cli/commands/send.js +526 -38
- package/dist/cli/docs/agent-operations.d.ts +1 -1
- package/dist/cli/docs/agent-operations.d.ts.map +1 -1
- package/dist/cli/docs/agent-operations.js +91 -3
- package/dist/cli/index.d.ts +4 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +6 -0
- package/dist/cli/types/api-responses.d.ts +54 -0
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/cli/types/index.d.ts +38 -0
- package/dist/cli/types/index.d.ts.map +1 -1
- package/dist/cli/types/index.js +15 -1
- package/dist/cli/utils/agent-instances.d.ts +29 -1
- package/dist/cli/utils/agent-instances.d.ts.map +1 -1
- package/dist/cli/utils/agent-instances.js +67 -7
- package/dist/cli/utils/agent-roles.d.ts +75 -0
- package/dist/cli/utils/agent-roles.d.ts.map +1 -0
- package/dist/cli/utils/agent-roles.js +238 -0
- package/dist/cli/utils/api-client-errors.d.ts +23 -1
- package/dist/cli/utils/api-client-errors.d.ts.map +1 -1
- package/dist/cli/utils/api-client-errors.js +14 -2
- package/dist/cli/utils/api-client.d.ts +8 -0
- package/dist/cli/utils/api-client.d.ts.map +1 -1
- package/dist/cli/utils/api-client.js +13 -1
- package/dist/cli/utils/role-failure.d.ts +31 -0
- package/dist/cli/utils/role-failure.d.ts.map +1 -0
- package/dist/cli/utils/role-failure.js +90 -0
- package/dist/cli/utils/role-input.d.ts +16 -0
- package/dist/cli/utils/role-input.d.ts.map +1 -0
- package/dist/cli/utils/role-input.js +78 -0
- package/dist/cli/utils/security-logger.d.ts +17 -0
- package/dist/cli/utils/security-logger.d.ts.map +1 -1
- package/dist/cli/utils/security-logger.js +44 -5
- package/dist/lib/detection/tools/verified-against.d.ts +16 -0
- package/dist/lib/detection/tools/verified-against.d.ts.map +1 -1
- package/dist/lib/detection/tools/verified-against.js +16 -0
- package/dist/lib/session/send-attempt-types.d.ts +4 -0
- package/dist/lib/session/send-attempt-types.d.ts.map +1 -1
- package/dist/lib/verification/verify-config.d.ts +22 -0
- package/dist/lib/verification/verify-config.d.ts.map +1 -1
- package/dist/lib/verification/verify-config.js +32 -2
- package/dist/server/locales/en/worktree.json +25 -6
- package/dist/server/locales/ja/worktree.json +25 -6
- package/dist/server/src/config/safe-directory.js +30 -0
- package/dist/server/src/lib/agent-roles/adapters.js +174 -0
- package/dist/server/src/lib/agent-roles/artifacts.js +638 -0
- package/dist/server/src/lib/agent-roles/composition.js +222 -0
- package/dist/server/src/lib/agent-roles/fingerprint.js +21 -0
- package/dist/server/src/lib/agent-roles/jsonc.js +85 -0
- package/dist/server/src/lib/agent-roles/launch-errors.js +58 -0
- package/dist/server/src/lib/agent-roles/pane-env.js +63 -0
- package/dist/server/src/lib/agent-roles/resolve.js +375 -0
- package/dist/server/src/lib/agent-roles/toml-basic.js +140 -0
- package/dist/server/src/lib/agent-roles/unicode.js +16 -0
- package/dist/server/src/lib/agent-roles/validation.js +61 -0
- package/dist/server/src/lib/cli-tools/antigravity.js +39 -6
- package/dist/server/src/lib/cli-tools/base.js +63 -5
- package/dist/server/src/lib/cli-tools/claude-auto-default-nudge.js +141 -0
- package/dist/server/src/lib/cli-tools/claude.js +7 -1
- package/dist/server/src/lib/cli-tools/codex.js +134 -21
- package/dist/server/src/lib/cli-tools/command-code.js +24 -1
- package/dist/server/src/lib/cli-tools/copilot.js +36 -7
- package/dist/server/src/lib/cli-tools/gemini.js +37 -3
- package/dist/server/src/lib/cli-tools/launch-answer-skips.js +76 -0
- package/dist/server/src/lib/cli-tools/opencode-v2.js +10 -0
- package/dist/server/src/lib/cli-tools/opencode.js +58 -7
- package/dist/server/src/lib/cli-tools/submit-composer-read.js +24 -4
- package/dist/server/src/lib/cli-tools/vibe-local.js +25 -1
- package/dist/server/src/lib/db/agent-instances-db.js +53 -0
- package/dist/server/src/lib/db/agent-roles-db.js +409 -0
- package/dist/server/src/lib/db/agent-session-cost-sampler.js +3 -2
- package/dist/server/src/lib/db/db-instance.js +7 -37
- package/dist/server/src/lib/db/migrations/index.js +4 -0
- package/dist/server/src/lib/db/migrations/runner.js +1 -1
- package/dist/server/src/lib/db/migrations/v64-agent-roles.js +123 -0
- package/dist/server/src/lib/db/migrations/v65-agent-instance-creation-keys.js +42 -0
- package/dist/server/src/lib/db/relay-db.js +35 -0
- package/dist/server/src/lib/detection/cli-patterns.js +13 -3
- package/dist/server/src/lib/detection/model-info-extractor.js +1 -1
- package/dist/server/src/lib/detection/tools/claude/patterns.js +76 -0
- package/dist/server/src/lib/detection/tools/codex/cli-patterns.js +5 -0
- package/dist/server/src/lib/detection/tools/codex/detect.js +5 -1
- package/dist/server/src/lib/detection/tools/codex/patterns.js +52 -2
- package/dist/server/src/lib/detection/tools/codex/prompt.js +23 -3
- package/dist/server/src/lib/detection/tools/opencode/detect.js +30 -15
- package/dist/server/src/lib/detection/tools/opencode/patterns.js +268 -7
- package/dist/server/src/lib/detection/tools/opencode/readiness.js +16 -7
- package/dist/server/src/lib/detection/tools/opencode-v2/detect.js +51 -15
- package/dist/server/src/lib/detection/tools/opencode-v2/patterns.js +195 -11
- package/dist/server/src/lib/detection/tools/run-detection.js +5 -2
- package/dist/server/src/lib/detection/tools/verified-against.js +16 -0
- package/dist/server/src/lib/detection/tools/vibe-local/readiness.js +22 -0
- package/dist/server/src/lib/git/git-common-dir.js +192 -0
- package/dist/server/src/lib/hooks/hook-settings-generator.js +8 -2
- package/dist/server/src/lib/hooks/sources/copilot/hook-settings.js +31 -1
- package/dist/server/src/lib/hooks/sources/launch-command.js +31 -8
- package/dist/server/src/lib/hooks/sources/opencode/client.js +20 -0
- package/dist/server/src/lib/hooks/sources/opencode-v2/client.js +24 -0
- package/dist/server/src/lib/hooks/sources/opencode-v2/history.js +208 -35
- package/dist/server/src/lib/hooks/sources/opencode-v2/secrets.js +7 -1
- package/dist/server/src/lib/hooks/sources/opencode-v2/subscription.js +117 -2
- package/dist/server/src/lib/job-executor.js +18 -1
- package/dist/server/src/lib/polling/response-checker-extraction-steps.js +58 -4
- package/dist/server/src/lib/polling/response-checker.js +32 -7
- package/dist/server/src/lib/relay/relay-delivery-block.js +150 -0
- package/dist/server/src/lib/relay/relay-delivery.js +59 -2
- package/dist/server/src/lib/response-cleaner.js +13 -3
- package/dist/server/src/lib/response-extractor.js +38 -3
- package/dist/server/src/lib/session/agent-session-lifecycle.js +9 -1
- package/dist/server/src/lib/session/claude-executor.js +13 -1
- package/dist/server/src/lib/session/claude-session.js +109 -13
- package/dist/server/src/lib/session/instance-input-lock.js +93 -4
- package/dist/server/src/lib/session/role-launch.js +722 -0
- package/dist/server/src/lib/session/send-attempt-state.js +7 -0
- package/dist/server/src/lib/session/send-user-message.js +6 -0
- package/dist/server/src/lib/session/session-generation-archive.js +7 -8
- package/dist/server/src/lib/session/session-launch-flight.js +33 -1
- package/dist/server/src/lib/session/worktree-session-reconcile.js +5 -0
- package/dist/server/src/lib/test-run-detection.js +53 -0
- package/dist/server/src/lib/tmux/read-mode.js +4 -0
- package/dist/server/src/lib/tmux/session-hook-scripts.js +36 -4
- package/dist/server/src/lib/tui-accumulator.js +14 -5
- package/dist/server/src/lib/verification/env-clean-gate.js +117 -12
- package/dist/server/src/lib/verification/gate-runner.js +9 -8
- package/dist/server/src/lib/verification/verify-config.js +32 -2
- package/dist/server/src/types/agent-roles.js +56 -0
- package/dist/types/agent-roles.d.ts +351 -0
- package/dist/types/agent-roles.d.ts.map +1 -0
- package/dist/types/agent-roles.js +56 -0
- package/docs/en/user-guide/webapp-guide.md +16 -0
- package/package.json +2 -1
- package/release-notes/0.50.0.json +113 -0
- package/.next/server/chunks/1308.js +0 -1
- package/.next/server/chunks/4490.js +0 -1
- package/.next/server/chunks/4936.js +0 -1
- package/.next/server/chunks/610.js +0 -1
- package/.next/server/chunks/6119.js +0 -1
- package/.next/server/chunks/7491.js +0 -3
- package/.next/server/chunks/7926.js +0 -1
- package/.next/server/chunks/9360.js +0 -2
- package/.next/server/chunks/9584.js +0 -1
- package/.next/static/LNfVZiq6FZwKsV7L9Mi6M/_buildManifest.js +0 -1
- package/.next/static/chunks/2407-87ec01332344ec2b.js +0 -1
- package/.next/static/chunks/344-e1cefd00787060e4.js +0 -1
- package/.next/static/chunks/3931-3ef48b8d97357282.js +0 -1
- package/.next/static/chunks/7229.7f0f5a7032b612b4.js +0 -1
- package/.next/static/chunks/8165-263172c17ae8e8c3.js +0 -1
- package/.next/static/chunks/app/api/agents/update/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/agents/versions/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/app/release-notes/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/app/update/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/app/update-check/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/auth/login/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/auth/status/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/capabilities/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/status/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/external-apps/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/fs/browse/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/fs/recent-paths/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/hooks/agent-event/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/hooks/claude-done/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/hooks/permission-request/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/metrics/vibe/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/ollama/models/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/push/escalation/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/push/subscriptions/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/push/vapid/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/relays/[relayId]/resolve/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/relays/[relayId]/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/relays/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/remote/pair/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/repositories/excluded/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/repositories/restore/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/repositories/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/repositories/scan/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/repositories/sync/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/repositories/validate-path/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/settings/default-agents/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/settings/default-surface-mode/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/sidebar/group-order/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/skills/[id]/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/skills/installations/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/skills/operations/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/skills/reindex/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/skills/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/slash-commands/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/templates/[id]/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/templates/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/env/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/layout-b9d8aef70e4f17b2.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/proxy/[...path]/route-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/repositories/page-71f5a5ac29b0370d.js +0 -1
- package/.next/static/chunks/app/review/page-ff3efb96fdf9bb4b.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/layout-96fc12d400b49b13.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-f6a151304860b549.js +0 -1
- package/.next/static/css/c1e307d05daf93b6.css +0 -1
- /package/.next/static/{LNfVZiq6FZwKsV7L9Mi6M → z4d8-5MaLkoD-4EhueZwk}/_ssgManifest.js +0 -0
package/.next/types/routes.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Do not edit this file manually
|
|
3
3
|
|
|
4
4
|
type AppRoutes = "/" | "/login" | "/more" | "/offline" | "/repositories" | "/review" | "/sessions" | "/skills" | "/skills/[skillId]" | "/skills/installed" | "/worktrees/[id]" | "/worktrees/[id]/files/[...path]" | "/worktrees/[id]/terminal"
|
|
5
|
-
type AppRouteHandlerRoutes = "/api/agents/update" | "/api/agents/versions" | "/api/app/release-notes" | "/api/app/update" | "/api/app/update-check" | "/api/auth/login" | "/api/auth/logout" | "/api/auth/status" | "/api/capabilities" | "/api/daily-summary" | "/api/daily-summary/status" | "/api/external-apps" | "/api/external-apps/[id]" | "/api/external-apps/[id]/health" | "/api/fs/browse" | "/api/fs/recent-paths" | "/api/hooks/agent-event" | "/api/hooks/claude-done" | "/api/hooks/permission-request" | "/api/metrics/vibe" | "/api/ollama/models" | "/api/push/escalation" | "/api/push/subscriptions" | "/api/push/vapid" | "/api/relays" | "/api/relays/[relayId]" | "/api/relays/[relayId]/cancel" | "/api/relays/[relayId]/resolve" | "/api/remote/pair" | "/api/repositories" | "/api/repositories/[id]" | "/api/repositories/clone" | "/api/repositories/clone/[jobId]" | "/api/repositories/excluded" | "/api/repositories/restore" | "/api/repositories/scan" | "/api/repositories/sync" | "/api/repositories/validate-path" | "/api/settings/default-agents" | "/api/settings/default-surface-mode" | "/api/sidebar/group-order" | "/api/skills" | "/api/skills/[id]" | "/api/skills/installations" | "/api/skills/operations" | "/api/skills/reindex" | "/api/slash-commands" | "/api/tasks/[taskId]" | "/api/tasks/[taskId]/cancel" | "/api/templates" | "/api/templates/[id]" | "/api/verification/runs" | "/api/verification/runs/[runId]" | "/api/worktrees" | "/api/worktrees/[id]" | "/api/worktrees/[id]/auto-yes" | "/api/worktrees/[id]/capture" | "/api/worktrees/[id]/clear-composer" | "/api/worktrees/[id]/cli-reference" | "/api/worktrees/[id]/cli-tool" | "/api/worktrees/[id]/cmate/schedules" | "/api/worktrees/[id]/current-output" | "/api/worktrees/[id]/direct-input" | "/api/worktrees/[id]/env" | "/api/worktrees/[id]/execution-logs" | "/api/worktrees/[id]/execution-logs/[logId]" | "/api/worktrees/[id]/files/[...path]" | "/api/worktrees/[id]/git/branch/create" | "/api/worktrees/[id]/git/branch/delete" | "/api/worktrees/[id]/git/branches" | "/api/worktrees/[id]/git/checkout" | "/api/worktrees/[id]/git/commit" | "/api/worktrees/[id]/git/diff" | "/api/worktrees/[id]/git/fetch" | "/api/worktrees/[id]/git/log" | "/api/worktrees/[id]/git/pull" | "/api/worktrees/[id]/git/push" | "/api/worktrees/[id]/git/reset" | "/api/worktrees/[id]/git/revert" | "/api/worktrees/[id]/git/show/[commitHash]" | "/api/worktrees/[id]/git/stage" | "/api/worktrees/[id]/git/staged" | "/api/worktrees/[id]/git/stash" | "/api/worktrees/[id]/git/stash/[index]" | "/api/worktrees/[id]/git/stash/apply" | "/api/worktrees/[id]/git/stash/pop" | "/api/worktrees/[id]/git/stash/push" | "/api/worktrees/[id]/git/status" | "/api/worktrees/[id]/git/unstage" | "/api/worktrees/[id]/git/working-diff" | "/api/worktrees/[id]/instances/notes" | "/api/worktrees/[id]/instances/opencode" | "/api/worktrees/[id]/interrupt" | "/api/worktrees/[id]/kill-session" | "/api/worktrees/[id]/logs" | "/api/worktrees/[id]/logs/[filename]" | "/api/worktrees/[id]/marp-render" | "/api/worktrees/[id]/memos" | "/api/worktrees/[id]/memos/[memoId]" | "/api/worktrees/[id]/messages" | "/api/worktrees/[id]/opencode/diff" | "/api/worktrees/[id]/opencode/session" | "/api/worktrees/[id]/opencode/share" | "/api/worktrees/[id]/prompt-response" | "/api/worktrees/[id]/prompt-response/strict" | "/api/worktrees/[id]/resolve-target" | "/api/worktrees/[id]/respond" | "/api/worktrees/[id]/schedules" | "/api/worktrees/[id]/schedules/[scheduleId]" | "/api/worktrees/[id]/schedules/active" | "/api/worktrees/[id]/search" | "/api/worktrees/[id]/send" | "/api/worktrees/[id]/skills" | "/api/worktrees/[id]/skills/[skillId]/git-workflow" | "/api/worktrees/[id]/skills/[skillId]/install" | "/api/worktrees/[id]/skills/[skillId]/plan" | "/api/worktrees/[id]/skills/[skillId]/uninstall" | "/api/worktrees/[id]/skills/[skillId]/uninstall-plan" | "/api/worktrees/[id]/skills/[skillId]/update" | "/api/worktrees/[id]/skills/[skillId]/update-plan" | "/api/worktrees/[id]/slash-commands" | "/api/worktrees/[id]/special-keys" | "/api/worktrees/[id]/tasks" | "/api/worktrees/[id]/terminal" | "/api/worktrees/[id]/timers" | "/api/worktrees/[id]/timers/history" | "/api/worktrees/[id]/todos" | "/api/worktrees/[id]/todos/[todoId]" | "/api/worktrees/[id]/tree" | "/api/worktrees/[id]/tree/[...path]" | "/api/worktrees/[id]/upload/[...path]" | "/api/worktrees/[id]/verify" | "/api/worktrees/[id]/verify/config" | "/api/worktrees/[id]/verify/runs" | "/api/worktrees/[id]/verify/runs/[runId]" | "/api/worktrees/[id]/verify/runs/[runId]/cancel" | "/api/worktrees/[id]/viewed" | "/api/worktrees/apply-default-agents" | "/proxy/[...path]"
|
|
5
|
+
type AppRouteHandlerRoutes = "/api/agents/update" | "/api/agents/versions" | "/api/app/release-notes" | "/api/app/update" | "/api/app/update-check" | "/api/auth/login" | "/api/auth/logout" | "/api/auth/status" | "/api/capabilities" | "/api/daily-summary" | "/api/daily-summary/status" | "/api/external-apps" | "/api/external-apps/[id]" | "/api/external-apps/[id]/health" | "/api/fs/browse" | "/api/fs/recent-paths" | "/api/hooks/agent-event" | "/api/hooks/claude-done" | "/api/hooks/permission-request" | "/api/metrics/vibe" | "/api/ollama/models" | "/api/push/escalation" | "/api/push/subscriptions" | "/api/push/vapid" | "/api/relays" | "/api/relays/[relayId]" | "/api/relays/[relayId]/cancel" | "/api/relays/[relayId]/resolve" | "/api/remote/pair" | "/api/repositories" | "/api/repositories/[id]" | "/api/repositories/[id]/role-defaults" | "/api/repositories/clone" | "/api/repositories/clone/[jobId]" | "/api/repositories/excluded" | "/api/repositories/restore" | "/api/repositories/scan" | "/api/repositories/sync" | "/api/repositories/validate-path" | "/api/roles" | "/api/roles/[id]" | "/api/settings/agent-role-defaults" | "/api/settings/default-agents" | "/api/settings/default-surface-mode" | "/api/sidebar/group-order" | "/api/skills" | "/api/skills/[id]" | "/api/skills/installations" | "/api/skills/operations" | "/api/skills/reindex" | "/api/slash-commands" | "/api/tasks/[taskId]" | "/api/tasks/[taskId]/cancel" | "/api/templates" | "/api/templates/[id]" | "/api/verification/runs" | "/api/verification/runs/[runId]" | "/api/worktrees" | "/api/worktrees/[id]" | "/api/worktrees/[id]/auto-yes" | "/api/worktrees/[id]/capture" | "/api/worktrees/[id]/clear-composer" | "/api/worktrees/[id]/cli-reference" | "/api/worktrees/[id]/cli-tool" | "/api/worktrees/[id]/cmate/schedules" | "/api/worktrees/[id]/current-output" | "/api/worktrees/[id]/direct-input" | "/api/worktrees/[id]/env" | "/api/worktrees/[id]/execution-logs" | "/api/worktrees/[id]/execution-logs/[logId]" | "/api/worktrees/[id]/files/[...path]" | "/api/worktrees/[id]/git/branch/create" | "/api/worktrees/[id]/git/branch/delete" | "/api/worktrees/[id]/git/branches" | "/api/worktrees/[id]/git/checkout" | "/api/worktrees/[id]/git/commit" | "/api/worktrees/[id]/git/diff" | "/api/worktrees/[id]/git/fetch" | "/api/worktrees/[id]/git/log" | "/api/worktrees/[id]/git/pull" | "/api/worktrees/[id]/git/push" | "/api/worktrees/[id]/git/reset" | "/api/worktrees/[id]/git/revert" | "/api/worktrees/[id]/git/show/[commitHash]" | "/api/worktrees/[id]/git/stage" | "/api/worktrees/[id]/git/staged" | "/api/worktrees/[id]/git/stash" | "/api/worktrees/[id]/git/stash/[index]" | "/api/worktrees/[id]/git/stash/apply" | "/api/worktrees/[id]/git/stash/pop" | "/api/worktrees/[id]/git/stash/push" | "/api/worktrees/[id]/git/status" | "/api/worktrees/[id]/git/unstage" | "/api/worktrees/[id]/git/working-diff" | "/api/worktrees/[id]/instances/notes" | "/api/worktrees/[id]/instances/opencode" | "/api/worktrees/[id]/instances/roles" | "/api/worktrees/[id]/instances/roles/settle" | "/api/worktrees/[id]/interrupt" | "/api/worktrees/[id]/kill-session" | "/api/worktrees/[id]/logs" | "/api/worktrees/[id]/logs/[filename]" | "/api/worktrees/[id]/marp-render" | "/api/worktrees/[id]/memos" | "/api/worktrees/[id]/memos/[memoId]" | "/api/worktrees/[id]/messages" | "/api/worktrees/[id]/opencode/diff" | "/api/worktrees/[id]/opencode/session" | "/api/worktrees/[id]/opencode/share" | "/api/worktrees/[id]/prompt-response" | "/api/worktrees/[id]/prompt-response/strict" | "/api/worktrees/[id]/resolve-target" | "/api/worktrees/[id]/respond" | "/api/worktrees/[id]/schedules" | "/api/worktrees/[id]/schedules/[scheduleId]" | "/api/worktrees/[id]/schedules/active" | "/api/worktrees/[id]/search" | "/api/worktrees/[id]/send" | "/api/worktrees/[id]/skills" | "/api/worktrees/[id]/skills/[skillId]/git-workflow" | "/api/worktrees/[id]/skills/[skillId]/install" | "/api/worktrees/[id]/skills/[skillId]/plan" | "/api/worktrees/[id]/skills/[skillId]/uninstall" | "/api/worktrees/[id]/skills/[skillId]/uninstall-plan" | "/api/worktrees/[id]/skills/[skillId]/update" | "/api/worktrees/[id]/skills/[skillId]/update-plan" | "/api/worktrees/[id]/slash-commands" | "/api/worktrees/[id]/special-keys" | "/api/worktrees/[id]/tasks" | "/api/worktrees/[id]/terminal" | "/api/worktrees/[id]/timers" | "/api/worktrees/[id]/timers/history" | "/api/worktrees/[id]/todos" | "/api/worktrees/[id]/todos/[todoId]" | "/api/worktrees/[id]/tree" | "/api/worktrees/[id]/tree/[...path]" | "/api/worktrees/[id]/upload/[...path]" | "/api/worktrees/[id]/verify" | "/api/worktrees/[id]/verify/config" | "/api/worktrees/[id]/verify/runs" | "/api/worktrees/[id]/verify/runs/[runId]" | "/api/worktrees/[id]/verify/runs/[runId]/cancel" | "/api/worktrees/[id]/viewed" | "/api/worktrees/apply-default-agents" | "/proxy/[...path]"
|
|
6
6
|
type PageRoutes = never
|
|
7
7
|
type LayoutRoutes = "/" | "/worktrees/[id]"
|
|
8
8
|
type RedirectRoutes = never
|
|
@@ -43,6 +43,7 @@ interface ParamMap {
|
|
|
43
43
|
"/api/remote/pair": {}
|
|
44
44
|
"/api/repositories": {}
|
|
45
45
|
"/api/repositories/[id]": { "id": string; }
|
|
46
|
+
"/api/repositories/[id]/role-defaults": { "id": string; }
|
|
46
47
|
"/api/repositories/clone": {}
|
|
47
48
|
"/api/repositories/clone/[jobId]": { "jobId": string; }
|
|
48
49
|
"/api/repositories/excluded": {}
|
|
@@ -50,6 +51,9 @@ interface ParamMap {
|
|
|
50
51
|
"/api/repositories/scan": {}
|
|
51
52
|
"/api/repositories/sync": {}
|
|
52
53
|
"/api/repositories/validate-path": {}
|
|
54
|
+
"/api/roles": {}
|
|
55
|
+
"/api/roles/[id]": { "id": string; }
|
|
56
|
+
"/api/settings/agent-role-defaults": {}
|
|
53
57
|
"/api/settings/default-agents": {}
|
|
54
58
|
"/api/settings/default-surface-mode": {}
|
|
55
59
|
"/api/sidebar/group-order": {}
|
|
@@ -104,6 +108,8 @@ interface ParamMap {
|
|
|
104
108
|
"/api/worktrees/[id]/git/working-diff": { "id": string; }
|
|
105
109
|
"/api/worktrees/[id]/instances/notes": { "id": string; }
|
|
106
110
|
"/api/worktrees/[id]/instances/opencode": { "id": string; }
|
|
111
|
+
"/api/worktrees/[id]/instances/roles": { "id": string; }
|
|
112
|
+
"/api/worktrees/[id]/instances/roles/settle": { "id": string; }
|
|
107
113
|
"/api/worktrees/[id]/interrupt": { "id": string; }
|
|
108
114
|
"/api/worktrees/[id]/kill-session": { "id": string; }
|
|
109
115
|
"/api/worktrees/[id]/logs": { "id": string; }
|
package/.next/types/validator.ts
CHANGED
|
@@ -425,6 +425,15 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
|
|
|
425
425
|
type __Unused = __Check
|
|
426
426
|
}
|
|
427
427
|
|
|
428
|
+
// Validate ../../src/app/api/repositories/[id]/role-defaults/route.ts
|
|
429
|
+
{
|
|
430
|
+
type __IsExpected<Specific extends RouteHandlerConfig<"/api/repositories/[id]/role-defaults">> = Specific
|
|
431
|
+
const handler = {} as typeof import("../../src/app/api/repositories/[id]/role-defaults/route.js")
|
|
432
|
+
type __Check = __IsExpected<typeof handler>
|
|
433
|
+
// @ts-ignore
|
|
434
|
+
type __Unused = __Check
|
|
435
|
+
}
|
|
436
|
+
|
|
428
437
|
// Validate ../../src/app/api/repositories/[id]/route.ts
|
|
429
438
|
{
|
|
430
439
|
type __IsExpected<Specific extends RouteHandlerConfig<"/api/repositories/[id]">> = Specific
|
|
@@ -506,6 +515,33 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
|
|
|
506
515
|
type __Unused = __Check
|
|
507
516
|
}
|
|
508
517
|
|
|
518
|
+
// Validate ../../src/app/api/roles/[id]/route.ts
|
|
519
|
+
{
|
|
520
|
+
type __IsExpected<Specific extends RouteHandlerConfig<"/api/roles/[id]">> = Specific
|
|
521
|
+
const handler = {} as typeof import("../../src/app/api/roles/[id]/route.js")
|
|
522
|
+
type __Check = __IsExpected<typeof handler>
|
|
523
|
+
// @ts-ignore
|
|
524
|
+
type __Unused = __Check
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
// Validate ../../src/app/api/roles/route.ts
|
|
528
|
+
{
|
|
529
|
+
type __IsExpected<Specific extends RouteHandlerConfig<"/api/roles">> = Specific
|
|
530
|
+
const handler = {} as typeof import("../../src/app/api/roles/route.js")
|
|
531
|
+
type __Check = __IsExpected<typeof handler>
|
|
532
|
+
// @ts-ignore
|
|
533
|
+
type __Unused = __Check
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
// Validate ../../src/app/api/settings/agent-role-defaults/route.ts
|
|
537
|
+
{
|
|
538
|
+
type __IsExpected<Specific extends RouteHandlerConfig<"/api/settings/agent-role-defaults">> = Specific
|
|
539
|
+
const handler = {} as typeof import("../../src/app/api/settings/agent-role-defaults/route.js")
|
|
540
|
+
type __Check = __IsExpected<typeof handler>
|
|
541
|
+
// @ts-ignore
|
|
542
|
+
type __Unused = __Check
|
|
543
|
+
}
|
|
544
|
+
|
|
509
545
|
// Validate ../../src/app/api/settings/default-agents/route.ts
|
|
510
546
|
{
|
|
511
547
|
type __IsExpected<Specific extends RouteHandlerConfig<"/api/settings/default-agents">> = Specific
|
|
@@ -974,6 +1010,24 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
|
|
|
974
1010
|
type __Unused = __Check
|
|
975
1011
|
}
|
|
976
1012
|
|
|
1013
|
+
// Validate ../../src/app/api/worktrees/[id]/instances/roles/route.ts
|
|
1014
|
+
{
|
|
1015
|
+
type __IsExpected<Specific extends RouteHandlerConfig<"/api/worktrees/[id]/instances/roles">> = Specific
|
|
1016
|
+
const handler = {} as typeof import("../../src/app/api/worktrees/[id]/instances/roles/route.js")
|
|
1017
|
+
type __Check = __IsExpected<typeof handler>
|
|
1018
|
+
// @ts-ignore
|
|
1019
|
+
type __Unused = __Check
|
|
1020
|
+
}
|
|
1021
|
+
|
|
1022
|
+
// Validate ../../src/app/api/worktrees/[id]/instances/roles/settle/route.ts
|
|
1023
|
+
{
|
|
1024
|
+
type __IsExpected<Specific extends RouteHandlerConfig<"/api/worktrees/[id]/instances/roles/settle">> = Specific
|
|
1025
|
+
const handler = {} as typeof import("../../src/app/api/worktrees/[id]/instances/roles/settle/route.js")
|
|
1026
|
+
type __Check = __IsExpected<typeof handler>
|
|
1027
|
+
// @ts-ignore
|
|
1028
|
+
type __Unused = __Check
|
|
1029
|
+
}
|
|
1030
|
+
|
|
977
1031
|
// Validate ../../src/app/api/worktrees/[id]/interrupt/route.ts
|
|
978
1032
|
{
|
|
979
1033
|
type __IsExpected<Specific extends RouteHandlerConfig<"/api/worktrees/[id]/interrupt">> = Specific
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* commandmate instances <worktree-id> remove <instance-id> [--kill]
|
|
8
8
|
* commandmate instances <worktree-id> alias <instance-id> <new-alias>
|
|
9
9
|
* commandmate instances <worktree-id> kill <instance-id>
|
|
10
|
+
* commandmate instances <worktree-id> set-role <instance-id> (--role <role> | --none | --inherit)
|
|
10
11
|
*/
|
|
11
12
|
import { Command } from 'commander';
|
|
12
13
|
import { ApiClient } from '../utils/api-client';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instances.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/instances.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"instances.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/instances.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,EAAE,SAAS,EAA6E,MAAM,qBAAqB,CAAC;AA2N3H;;;;;;;;;;GAUG;AACH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,IAAI,GAAE,oBAA+B,GACpC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAG7B;AAiBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAKzD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,QAE6D,CAAC;AAErG,4EAA4E;AAC5E,eAAO,MAAM,uBAAuB,QAE0B,CAAC;AAE/D,8EAA8E;AAC9E,MAAM,WAAW,sBAAsB;IACrC,wEAAwE;IACxE,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B;;;;;;;;;;;;OAYG;IACH,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,IAAI,GAAE,oBAA+B,GACpC,OAAO,CAAC,sBAAsB,CAAC,CAmCjC;AAkiBD,wBAAgB,sBAAsB,IAAI,OAAO,CA0IhD"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* commandmate instances <worktree-id> remove <instance-id> [--kill]
|
|
9
9
|
* commandmate instances <worktree-id> alias <instance-id> <new-alias>
|
|
10
10
|
* commandmate instances <worktree-id> kill <instance-id>
|
|
11
|
+
* commandmate instances <worktree-id> set-role <instance-id> (--role <role> | --none | --inherit)
|
|
11
12
|
*/
|
|
12
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
14
|
exports.INSTANCE_SELECTOR_ERROR = exports.INSTANCE_ALIAS_HELP_SUFFIX = void 0;
|
|
@@ -33,6 +34,7 @@ const session_kill_ledger_1 = require("../../lib/verification/session-kill-ledge
|
|
|
33
34
|
// attach` / `tmux attach` need no hand-assembly of `mcbd-<tool>-<wt>[-<suffix>]`.
|
|
34
35
|
const session_name_1 = require("../../lib/cli-tools/session-name");
|
|
35
36
|
const validation_1 = require("../../lib/cli-tools/validation");
|
|
37
|
+
const agent_roles_1 = require("../utils/agent-roles");
|
|
36
38
|
/**
|
|
37
39
|
* The tmux session name for one roster row, or null.
|
|
38
40
|
*
|
|
@@ -58,6 +60,18 @@ function deriveInstanceSession(worktreeId, inst) {
|
|
|
58
60
|
* sentence. `--json` carries the full string; the table is a table.
|
|
59
61
|
*/
|
|
60
62
|
const MAX_SESSION_TITLE_COLUMN = 40;
|
|
63
|
+
function describeNextRole(next) {
|
|
64
|
+
if (next.kind === 'role')
|
|
65
|
+
return `${next.role.name}(${next.source})`;
|
|
66
|
+
return next.kind === 'none' ? `none(${next.source})` : 'ambiguous';
|
|
67
|
+
}
|
|
68
|
+
/** The three role columns of one row. `unknown` for a startup role is what the server knows. */
|
|
69
|
+
function roleColumns(role) {
|
|
70
|
+
if (!role)
|
|
71
|
+
return ['', '', ''];
|
|
72
|
+
const atStart = role.launched === null ? 'unknown' : role.launched.roleName ?? 'none';
|
|
73
|
+
return [atStart, describeNextRole(role.effectiveNext), role.restartPending];
|
|
74
|
+
}
|
|
61
75
|
/**
|
|
62
76
|
* Format instance rows as a table for terminal display.
|
|
63
77
|
* [DR1-08 consistency] Mirrors ls.ts's formatTable().
|
|
@@ -68,11 +82,14 @@ const MAX_SESSION_TITLE_COLUMN = 40;
|
|
|
68
82
|
function formatInstancesTable(rows) {
|
|
69
83
|
if (rows.length === 0)
|
|
70
84
|
return 'No agent instances found.';
|
|
85
|
+
// Issue #4116: appended, as #1785 and #2038 did, and only by a server that knows.
|
|
86
|
+
const showRoles = rows.some((r) => r.role !== undefined);
|
|
71
87
|
const headers = [
|
|
72
88
|
'INSTANCE_ID', 'ALIAS', 'CLI_TOOL', 'RUNNING', 'AUTO_YES', 'MODEL', 'EFFORT',
|
|
73
89
|
// Issue #2038 appends, exactly as #1785 did, so anything reading this table
|
|
74
90
|
// by column position keeps working. Issue #2317 appends for the same reason.
|
|
75
91
|
'SESSION_ID', 'SESSION_TITLE', 'TMUX_SESSION',
|
|
92
|
+
...(showRoles ? ['ROLE_AT_START', 'ROLE_NEXT', 'RESTART_PENDING'] : []),
|
|
76
93
|
];
|
|
77
94
|
const dataRows = rows.map(r => [
|
|
78
95
|
r.instanceId,
|
|
@@ -90,6 +107,7 @@ function formatInstancesTable(rows) {
|
|
|
90
107
|
r.sessionId ?? '',
|
|
91
108
|
(r.sessionTitle ?? '').slice(0, MAX_SESSION_TITLE_COLUMN),
|
|
92
109
|
r.tmuxSession ?? '',
|
|
110
|
+
...(showRoles ? roleColumns(r.role) : []),
|
|
93
111
|
]);
|
|
94
112
|
const colWidths = headers.map((h, i) => Math.max(h.length, ...dataRows.map(r => r[i].length)));
|
|
95
113
|
const headerLine = headers.map((h, i) => h.padEnd(colWidths[i])).join(' ');
|
|
@@ -275,6 +293,34 @@ async function fetchArmedAutoYes(client, worktreeId) {
|
|
|
275
293
|
return null;
|
|
276
294
|
}
|
|
277
295
|
}
|
|
296
|
+
/**
|
|
297
|
+
* Each instance's role, keyed by instance id, or null when the server does not say.
|
|
298
|
+
* Like the two reads above: a listing is never failed by a column.
|
|
299
|
+
*/
|
|
300
|
+
async function fetchInstanceRoles(client, worktreeId) {
|
|
301
|
+
try {
|
|
302
|
+
const { instances } = await client.get(`/api/worktrees/${worktreeId}/instances/roles`);
|
|
303
|
+
if (!Array.isArray(instances))
|
|
304
|
+
return null;
|
|
305
|
+
return new Map(instances.map(({ instanceId, stored, application }) => [instanceId, { stored, ...application }]));
|
|
306
|
+
}
|
|
307
|
+
catch (error) {
|
|
308
|
+
(0, api_client_1.rethrowIfDeadlineExceeded)(error);
|
|
309
|
+
return null;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* `--require-roles`: for a caller that must not read "the roles could not be read" as
|
|
314
|
+
* "this server has none". Every failure is the command's; the route being missing is
|
|
315
|
+
* `role_api_unavailable`, through {@link reportRoleFailure}.
|
|
316
|
+
*/
|
|
317
|
+
async function readInstanceRolesStrict(client, worktreeId) {
|
|
318
|
+
const { instances } = await client.get(`/api/worktrees/${worktreeId}/instances/roles`);
|
|
319
|
+
if (!Array.isArray(instances)) {
|
|
320
|
+
throw new agent_roles_1.RoleCliError('role_read_failed', 'The server answered the role settings with no instances.', types_1.ExitCode.UNEXPECTED_ERROR);
|
|
321
|
+
}
|
|
322
|
+
return new Map(instances.map(({ instanceId, stored, application }) => [instanceId, { stored, ...application }]));
|
|
323
|
+
}
|
|
278
324
|
/**
|
|
279
325
|
* List action: roster + live running/auto-yes status per instance.
|
|
280
326
|
* Probes GET .../current-output?cliTool=&instance= per instance (same
|
|
@@ -326,7 +372,7 @@ async function listInstances(client, worktreeId, options) {
|
|
|
326
372
|
// size, and none for an empty one. Asked after the probes above, so the
|
|
327
373
|
// column is the latest of the readings this listing takes.
|
|
328
374
|
const armed = instances.length > 0 ? await fetchArmedAutoYes(client, worktreeId) : null;
|
|
329
|
-
const
|
|
375
|
+
const armedRows = armed === null
|
|
330
376
|
? sessionRows
|
|
331
377
|
: sessionRows.map(({ autoYesAnswerMode: _sessionMode, ...row }) => {
|
|
332
378
|
const entry = armed.get(row.instanceId);
|
|
@@ -341,52 +387,194 @@ async function listInstances(client, worktreeId, options) {
|
|
|
341
387
|
...(entry?.releasedByRestart ? { autoYesStopReason: 'server-restart' } : {}),
|
|
342
388
|
};
|
|
343
389
|
});
|
|
390
|
+
// Issue #4116: after the others, and additive.
|
|
391
|
+
const roles = options.requireRoles
|
|
392
|
+
? await readInstanceRolesStrict(client, worktreeId)
|
|
393
|
+
: instances.length > 0 ? await fetchInstanceRoles(client, worktreeId) : null;
|
|
394
|
+
const rows = armedRows.map((row) => {
|
|
395
|
+
const role = roles?.get(row.instanceId);
|
|
396
|
+
if (options.requireRoles && !role) {
|
|
397
|
+
throw new agent_roles_1.RoleCliError('role_read_failed', `The server said nothing about the role of ${row.instanceId}.`, types_1.ExitCode.UNEXPECTED_ERROR);
|
|
398
|
+
}
|
|
399
|
+
return role ? { ...row, role } : row;
|
|
400
|
+
});
|
|
344
401
|
if (options.json) {
|
|
345
402
|
console.log(JSON.stringify(rows, null, 2));
|
|
346
403
|
return;
|
|
347
404
|
}
|
|
348
405
|
console.log(formatInstancesTable(rows));
|
|
349
406
|
}
|
|
407
|
+
/** One instance's entry in a settings answer, or the failure for a server that left it out. */
|
|
408
|
+
function roleEntryOf(settings, instanceId) {
|
|
409
|
+
const entry = settings.instances.find((instance) => instance.instanceId === instanceId);
|
|
410
|
+
if (!entry)
|
|
411
|
+
throw new agent_roles_1.RoleCliError('roster_changed', `Instance '${instanceId}' is no longer in the roster.`, types_1.RoleExitCode.CONFLICT);
|
|
412
|
+
return entry;
|
|
413
|
+
}
|
|
414
|
+
/** The setting beside the process: what `set-role` and `add --role` answer with. */
|
|
415
|
+
function roleChangeResult(settings, entry) {
|
|
416
|
+
return {
|
|
417
|
+
success: true,
|
|
418
|
+
instanceId: entry.instanceId,
|
|
419
|
+
cliToolId: entry.cliToolId,
|
|
420
|
+
adapterEnabled: entry.adapterEnabled,
|
|
421
|
+
stored: entry.stored,
|
|
422
|
+
effectiveNext: entry.application.effectiveNext,
|
|
423
|
+
launched: entry.application.launched,
|
|
424
|
+
requested: entry.application.requested,
|
|
425
|
+
restartPending: entry.application.restartPending,
|
|
426
|
+
// Only a difference is pending: `unknown` is not known to be one.
|
|
427
|
+
applyPending: entry.application.restartPending === 'yes',
|
|
428
|
+
...(entry.application.replacesDefaultInstructions ? { replacesDefaultInstructions: true } : {}),
|
|
429
|
+
rosterRevision: settings.rosterRevision,
|
|
430
|
+
};
|
|
431
|
+
}
|
|
432
|
+
function printRoleChange(worktreeId, entry) {
|
|
433
|
+
const { effectiveNext, launched, restartPending } = entry.application;
|
|
434
|
+
console.error(`Next start: ${describeNextRole(effectiveNext)}`);
|
|
435
|
+
console.error(`Running process started with: ${launched === null ? 'not known' : launched.roleName ?? 'no role'}`);
|
|
436
|
+
if (restartPending === 'yes') {
|
|
437
|
+
console.error(`Pending: the running process keeps its role until it is stopped (commandmate instances ${worktreeId} kill ${entry.instanceId}).`);
|
|
438
|
+
}
|
|
439
|
+
else if (restartPending === 'unknown') {
|
|
440
|
+
console.error('Whether a restart is needed is not known: nothing is known about a running process, if there is one.');
|
|
441
|
+
}
|
|
442
|
+
if (!entry.adapterEnabled && effectiveNext.kind === 'role') {
|
|
443
|
+
console.error(`Warning: roles are not enabled for ${entry.cliToolId} yet: a start that resolves to one is refused.`);
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* set-role action: save an instance's role for its next start. A running session is
|
|
448
|
+
* not touched, and the answer compares the two.
|
|
449
|
+
*/
|
|
450
|
+
async function setInstanceRole(client, worktreeId, instanceId, options) {
|
|
451
|
+
if (!(0, api_client_1.isValidInstanceId)(instanceId)) {
|
|
452
|
+
throw (0, agent_roles_1.usageError)('Invalid instance id. Must be an alphanumeric/underscore/hyphen identifier (max 64 chars).');
|
|
453
|
+
}
|
|
454
|
+
if (options.role === false)
|
|
455
|
+
throw (0, agent_roles_1.usageError)('set-role says "no role" with --none.');
|
|
456
|
+
const given = [options.role !== undefined, options.none === true, options.inherit === true].filter(Boolean).length;
|
|
457
|
+
if (given !== 1)
|
|
458
|
+
throw (0, agent_roles_1.usageError)('set-role needs one of --role <role>, --none or --inherit.');
|
|
459
|
+
const role = options.none
|
|
460
|
+
? { state: 'none' }
|
|
461
|
+
: options.inherit
|
|
462
|
+
? { state: 'inherit' }
|
|
463
|
+
: { state: 'role', roleId: (await (0, agent_roles_1.resolveRole)(client, options.role)).id };
|
|
464
|
+
const settings = await (0, agent_roles_1.roleWrite)(`commandmate instances ${worktreeId}`, () => client.put(`/api/worktrees/${worktreeId}/instances/roles`, { instanceId, role }));
|
|
465
|
+
const entry = roleEntryOf(settings, instanceId);
|
|
466
|
+
if (options.json) {
|
|
467
|
+
console.log(JSON.stringify(roleChangeResult(settings, entry), null, 2));
|
|
468
|
+
return;
|
|
469
|
+
}
|
|
470
|
+
const stored = entry.stored;
|
|
471
|
+
console.log(`Role saved for ${instanceId}: ${stored.state === 'role' ? stored.roleName : stored.state}`);
|
|
472
|
+
printRoleChange(worktreeId, entry);
|
|
473
|
+
}
|
|
474
|
+
/** The refusals a `--role` flag on another action gets. */
|
|
475
|
+
function assertNoRoleFlags(action, options) {
|
|
476
|
+
const allowed = {
|
|
477
|
+
add: ['role'],
|
|
478
|
+
'set-role': ['role', 'none', 'inherit'],
|
|
479
|
+
};
|
|
480
|
+
for (const flag of ['role', 'none', 'inherit']) {
|
|
481
|
+
if (options[flag] !== undefined && !(allowed[action] ?? []).includes(flag)) {
|
|
482
|
+
throw (0, agent_roles_1.usageError)(`--${flag} does not apply to '${action}'.`);
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
}
|
|
350
486
|
/**
|
|
351
487
|
* Add action: append a new instance to the roster (PATCH full replacement).
|
|
352
488
|
*/
|
|
353
489
|
async function addInstance(client, worktreeId, options) {
|
|
354
|
-
|
|
355
|
-
|
|
490
|
+
// Issue #4116: with a role flag this is a role form, whose `--json` answers every
|
|
491
|
+
// failure on stdout. The exit code is the same either way.
|
|
492
|
+
const refuse = (message) => {
|
|
493
|
+
if (options.role !== undefined)
|
|
494
|
+
throw (0, agent_roles_1.usageError)(message);
|
|
495
|
+
console.error(`Error: ${message}`);
|
|
356
496
|
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
497
|
+
};
|
|
498
|
+
if (!options.agent) {
|
|
499
|
+
refuse('add requires --agent <tool>.');
|
|
500
|
+
return;
|
|
357
501
|
}
|
|
358
502
|
if (!(0, cli_tool_ids_1.isCliToolId)(options.agent)) {
|
|
359
|
-
|
|
360
|
-
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
503
|
+
refuse(`Invalid --agent. Must be one of: ${cli_tool_ids_1.CLI_TOOL_IDS.join(', ')}`);
|
|
361
504
|
}
|
|
362
505
|
if (options.id && !(0, api_client_1.isValidInstanceId)(options.id)) {
|
|
363
|
-
|
|
364
|
-
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
506
|
+
refuse('Invalid --id. Must be an alphanumeric/underscore/hyphen identifier (max 64 chars).');
|
|
365
507
|
}
|
|
366
508
|
if (options.alias && options.alias.length > agent_instances_1.MAX_AGENT_ALIAS_LENGTH) {
|
|
367
|
-
|
|
368
|
-
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
509
|
+
refuse(`--alias exceeds ${agent_instances_1.MAX_AGENT_ALIAS_LENGTH} characters.`);
|
|
369
510
|
}
|
|
370
|
-
|
|
511
|
+
// Issue #4116: a role goes in with the instance, through the route that creates both
|
|
512
|
+
// in one transaction and refuses a roster changed since this read.
|
|
513
|
+
if (options.role !== undefined)
|
|
514
|
+
(0, agent_roles_1.assertRoleTool)(options.agent);
|
|
515
|
+
const roleAssignment = await (0, agent_roles_1.roleAssignmentFromFlag)(client, options.role);
|
|
516
|
+
const roleSettings = roleAssignment === undefined
|
|
517
|
+
? null
|
|
518
|
+
: await client.get(`/api/worktrees/${worktreeId}/instances/roles`);
|
|
519
|
+
const roster = roleSettings === null ? await (0, agent_instances_1.fetchAgentRoster)(client, worktreeId) : null;
|
|
520
|
+
const existing = roster !== null
|
|
521
|
+
? roster.instances
|
|
522
|
+
: roleSettings.instances.map((instance, order) => ({
|
|
523
|
+
id: instance.instanceId,
|
|
524
|
+
cliTool: instance.cliToolId,
|
|
525
|
+
alias: instance.alias,
|
|
526
|
+
order,
|
|
527
|
+
}));
|
|
371
528
|
if (existing.length >= agent_instances_1.MAX_AGENT_INSTANCES) {
|
|
372
|
-
|
|
373
|
-
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
529
|
+
refuse(`worktree already has the maximum of ${agent_instances_1.MAX_AGENT_INSTANCES} agent instances.`);
|
|
374
530
|
}
|
|
375
531
|
const id = options.id ?? (0, agent_instances_1.nextInstanceId)(options.agent, existing);
|
|
376
532
|
if (existing.some(inst => inst.id === id)) {
|
|
533
|
+
if (roleSettings !== null) {
|
|
534
|
+
throw new agent_roles_1.RoleCliError('instance_exists', `Instance '${id}' already exists. Set its role with: set-role ${id}`, types_1.RoleExitCode.CONFLICT);
|
|
535
|
+
}
|
|
377
536
|
console.error(`Error: instance '${id}' already exists.`);
|
|
378
537
|
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
379
538
|
}
|
|
380
539
|
// Primary-anchor consistency (mirrors validateAgentInstancesInput on the
|
|
381
540
|
// server): an id equal to a CLI tool id must back that exact tool.
|
|
382
541
|
if ((0, cli_tool_ids_1.isCliToolId)(id) && id !== options.agent) {
|
|
383
|
-
|
|
384
|
-
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
542
|
+
refuse(`instance id '${id}' conflicts with --agent '${options.agent}'.`);
|
|
385
543
|
}
|
|
386
544
|
const alias = options.alias ?? (0, agent_instances_1.defaultAlias)(options.agent, id);
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
545
|
+
if (roleAssignment !== undefined && roleSettings !== null) {
|
|
546
|
+
const agent = options.agent;
|
|
547
|
+
const created = await (0, agent_roles_1.roleWrite)(`commandmate instances ${worktreeId}`, () => client.post(`/api/worktrees/${worktreeId}/instances/roles`, {
|
|
548
|
+
instance: { id, cliTool: agent, alias },
|
|
549
|
+
role: roleAssignment,
|
|
550
|
+
expectedRosterRevision: roleSettings.rosterRevision,
|
|
551
|
+
}));
|
|
552
|
+
const entry = roleEntryOf(created, created.created.instanceId);
|
|
553
|
+
console.error(`Instance added: ${id} (${options.agent})`);
|
|
554
|
+
if (options.json) {
|
|
555
|
+
console.log(JSON.stringify({ ...roleChangeResult(created, entry), created: created.created }, null, 2));
|
|
556
|
+
}
|
|
557
|
+
else {
|
|
558
|
+
printRoleChange(worktreeId, entry);
|
|
559
|
+
}
|
|
560
|
+
return;
|
|
561
|
+
}
|
|
562
|
+
// Issue #4132: built again if the roster moved after the read, so the checks above and
|
|
563
|
+
// the free id are asked again of what is really there.
|
|
564
|
+
const agent = options.agent;
|
|
565
|
+
let addedId = id;
|
|
566
|
+
const next = await (0, agent_instances_1.saveRosterChange)(client, worktreeId, roster ?? { instances: existing }, (base) => {
|
|
567
|
+
if (base.length >= agent_instances_1.MAX_AGENT_INSTANCES) {
|
|
568
|
+
refuse(`worktree already has the maximum of ${agent_instances_1.MAX_AGENT_INSTANCES} agent instances.`);
|
|
569
|
+
}
|
|
570
|
+
addedId = options.id ?? (0, agent_instances_1.nextInstanceId)(agent, base);
|
|
571
|
+
if (base.some((inst) => inst.id === addedId)) {
|
|
572
|
+
refuse(`instance '${addedId}' already exists.`);
|
|
573
|
+
}
|
|
574
|
+
const added = { id: addedId, cliTool: agent, alias: options.alias ?? (0, agent_instances_1.defaultAlias)(agent, addedId), order: base.length };
|
|
575
|
+
return [...base, added];
|
|
576
|
+
});
|
|
577
|
+
console.error(`Instance added: ${addedId} (${options.agent})`);
|
|
390
578
|
if (options.json) {
|
|
391
579
|
console.log(JSON.stringify(next, null, 2));
|
|
392
580
|
}
|
|
@@ -431,7 +619,8 @@ async function removeInstance(client, worktreeId, instanceId, options) {
|
|
|
431
619
|
console.error('Error: Invalid instance id. Must be an alphanumeric/underscore/hyphen identifier (max 64 chars).');
|
|
432
620
|
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
433
621
|
}
|
|
434
|
-
const
|
|
622
|
+
const roster = await (0, agent_instances_1.fetchAgentRoster)(client, worktreeId);
|
|
623
|
+
const existing = roster.instances;
|
|
435
624
|
if (!existing.some(inst => inst.id === instanceId)) {
|
|
436
625
|
console.error(`Error: instance '${instanceId}' not found in roster.`);
|
|
437
626
|
process.exit(types_1.ExitCode.UNEXPECTED_ERROR);
|
|
@@ -450,8 +639,16 @@ async function removeInstance(client, worktreeId, instanceId, options) {
|
|
|
450
639
|
console.error(`Warning: could not kill session for ${instanceId}: ${(0, types_1.getErrorMessage)(killError)}`);
|
|
451
640
|
}
|
|
452
641
|
}
|
|
453
|
-
|
|
454
|
-
await (0, agent_instances_1.
|
|
642
|
+
// Issue #4132: what the kill above did is not repeated when the roster moved; only this is.
|
|
643
|
+
await (0, agent_instances_1.saveRosterChange)(client, worktreeId, roster, (base) => {
|
|
644
|
+
if (!base.some(inst => inst.id === instanceId))
|
|
645
|
+
return null;
|
|
646
|
+
if (base.length <= agent_instances_1.MIN_AGENT_INSTANCES) {
|
|
647
|
+
console.error('Error: cannot remove the last remaining agent instance.');
|
|
648
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
649
|
+
}
|
|
650
|
+
return base.filter(inst => inst.id !== instanceId);
|
|
651
|
+
});
|
|
455
652
|
console.error(`Instance removed from roster: ${instanceId}`);
|
|
456
653
|
}
|
|
457
654
|
/**
|
|
@@ -466,14 +663,14 @@ async function renameInstance(client, worktreeId, instanceId, alias) {
|
|
|
466
663
|
console.error(`Error: alias must be 1-${agent_instances_1.MAX_AGENT_ALIAS_LENGTH} characters.`);
|
|
467
664
|
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
468
665
|
}
|
|
469
|
-
const
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
666
|
+
const roster = await (0, agent_instances_1.fetchAgentRoster)(client, worktreeId);
|
|
667
|
+
await (0, agent_instances_1.saveRosterChange)(client, worktreeId, roster, (base) => {
|
|
668
|
+
if (!base.some(inst => inst.id === instanceId)) {
|
|
669
|
+
console.error(`Error: instance '${instanceId}' not found in roster.`);
|
|
670
|
+
process.exit(types_1.ExitCode.UNEXPECTED_ERROR);
|
|
671
|
+
}
|
|
672
|
+
return base.map(inst => (inst.id === instanceId ? { ...inst, alias } : inst));
|
|
673
|
+
});
|
|
477
674
|
console.error(`Instance alias updated: ${instanceId} -> "${alias}"`);
|
|
478
675
|
}
|
|
479
676
|
/**
|
|
@@ -511,27 +708,73 @@ async function warnIfDifferentServer(client, error) {
|
|
|
511
708
|
}
|
|
512
709
|
function createInstancesCommand() {
|
|
513
710
|
const cmd = new commander_1.Command('instances');
|
|
711
|
+
const bothRoleFlags = (0, agent_roles_1.watchRoleFlagConflict)(cmd);
|
|
514
712
|
cmd
|
|
515
713
|
.description('Discover and manage agent instances (roster) for a worktree')
|
|
516
714
|
.argument('<worktree-id>', 'Worktree ID')
|
|
517
|
-
.argument('[action]', 'list (default), add, remove, alias, or
|
|
715
|
+
.argument('[action]', 'list (default), add, remove, alias, kill, or set-role')
|
|
518
716
|
.argument('[rest...]', 'Action-specific arguments (instance-id, new alias)')
|
|
519
|
-
.option('--json', 'JSON output (list/add)')
|
|
717
|
+
.option('--json', 'JSON output (list/add/set-role)')
|
|
520
718
|
.option('--agent <tool>', 'CLI tool for the add action (claude, codex, gemini, vibe-local, opencode, copilot, antigravity)')
|
|
521
719
|
.option('--alias <name>', 'Display alias for the add action')
|
|
522
720
|
.option('--id <instance-id>', 'Explicit instance ID for the add action (format: <agent> or <agent>-<n>, e.g. claude-2)')
|
|
523
721
|
.option('--kill', 'Also kill the running session when removing an instance')
|
|
722
|
+
.option('--role <role>', 'add / set-role: role ID or name for this instance')
|
|
723
|
+
.option('--no-role', 'add: explicitly no role')
|
|
724
|
+
.option('--none', 'set-role: explicitly no role')
|
|
725
|
+
.option('--inherit', 'set-role: drop the setting, and follow the defaults')
|
|
726
|
+
.option('--require-roles', 'list --json: fail instead of leaving role out when it cannot be read; failures are JSON')
|
|
524
727
|
.option('--token <token>', command_helpers_1.TOKEN_WARNING)
|
|
728
|
+
.addHelpText('after', `
|
|
729
|
+
set-role saves what this instance's NEXT start uses, running or not. A role is fixed
|
|
730
|
+
when the process starts, so a running session is not touched. The answer compares the
|
|
731
|
+
two: applyPending (--json) / "Pending:" only when they differ. restartPending: yes, no,
|
|
732
|
+
or unknown (nothing known about the process: not started, or the server restarted).
|
|
733
|
+
To change what a whole repository or tool gets instead: commandmate roles default.
|
|
734
|
+
To change the role's text: commandmate roles edit. See: commandmate roles --help
|
|
735
|
+
|
|
736
|
+
add --role / --no-role creates the instance and its role together, refused (exit 31)
|
|
737
|
+
if the roster changed meanwhile. Without them the instance follows the defaults.
|
|
738
|
+
|
|
739
|
+
add, remove and alias without those flags build their change again on a fresh read when
|
|
740
|
+
the roster moved. If it kept changing through every attempt: exit 31 (roster_changed) and
|
|
741
|
+
nothing was saved to it. What came before the save stands (remove --kill stopped the session).
|
|
742
|
+
|
|
743
|
+
--json, list: every row carries role when the server has roles:
|
|
744
|
+
role: { stored, effectiveNext: { kind, source, role?, injectionFingerprint }, launched,
|
|
745
|
+
requested, restartPending }
|
|
746
|
+
launched / requested are launch records, with roleId, roleName, source and
|
|
747
|
+
injectionFingerprint. launched null means not known, which is not "no role".
|
|
748
|
+
--json, set-role and add --role: { success, instanceId, cliToolId, adapterEnabled, stored,
|
|
749
|
+
effectiveNext, launched, requested, restartPending, applyPending, rosterRevision }
|
|
750
|
+
--json failure of those two: { success: false, error, message } on stdout, whatever failed.
|
|
751
|
+
A 5xx or no answer may still have saved: it adds saved: "unknown" and check. A 4xx saved nothing.
|
|
752
|
+
--require-roles makes list --json fail rather than leave role out, so a script can tell
|
|
753
|
+
"could not be read" from a server older than roles (error: role_api_unavailable).
|
|
754
|
+
|
|
755
|
+
Exit codes for the role forms: 0 done; 2 usage, unknown or ambiguous role, instance not
|
|
756
|
+
on the roster, or a tool roles do not apply to; 31 instance_exists or roster_changed.
|
|
757
|
+
`)
|
|
525
758
|
.action(async (worktreeId, action, rest, options) => {
|
|
526
759
|
// One client for the whole invocation (Issue #2404): every action built
|
|
527
760
|
// its own identical one, and the failure path below has to report the URL
|
|
528
761
|
// the request actually went to — a second construction is a second answer.
|
|
529
|
-
|
|
762
|
+
let client;
|
|
763
|
+
// Issue #4116: the forms whose `--json` promises an answer for every failure.
|
|
764
|
+
const roleForm = action === 'set-role' || (action === 'add' && options.role !== undefined) || options.requireRoles === true;
|
|
530
765
|
try {
|
|
766
|
+
// Inside the try, as `roles` has it: the constructor can refuse (CM_UAT_ISOLATION
|
|
767
|
+
// with no CM_PORT), and that is a failure like any other.
|
|
768
|
+
client = new api_client_1.ApiClient({ token: options.token });
|
|
531
769
|
if (!(0, api_client_1.isValidWorktreeId)(worktreeId)) {
|
|
770
|
+
if (roleForm)
|
|
771
|
+
throw (0, agent_roles_1.usageError)('Invalid worktree ID format.');
|
|
532
772
|
console.error('Error: Invalid worktree ID format.');
|
|
533
773
|
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
534
774
|
}
|
|
775
|
+
if (bothRoleFlags())
|
|
776
|
+
throw (0, agent_roles_1.usageError)('Give --role or --no-role, not both.');
|
|
777
|
+
assertNoRoleFlags(action ?? 'list', options);
|
|
535
778
|
switch (action ?? 'list') {
|
|
536
779
|
case 'list':
|
|
537
780
|
await listInstances(client, worktreeId, options);
|
|
@@ -567,8 +810,15 @@ function createInstancesCommand() {
|
|
|
567
810
|
await killInstance(client, worktreeId, instanceId);
|
|
568
811
|
break;
|
|
569
812
|
}
|
|
813
|
+
case 'set-role': {
|
|
814
|
+
const [instanceId] = rest;
|
|
815
|
+
if (!instanceId)
|
|
816
|
+
throw (0, agent_roles_1.usageError)('set-role requires an <instance-id> argument.');
|
|
817
|
+
await setInstanceRole(client, worktreeId, instanceId, options);
|
|
818
|
+
break;
|
|
819
|
+
}
|
|
570
820
|
default:
|
|
571
|
-
console.error(`Error: unknown action '${action}'. Valid actions: list, add, remove, alias, kill.`);
|
|
821
|
+
console.error(`Error: unknown action '${action}'. Valid actions: list, add, remove, alias, kill, set-role.`);
|
|
572
822
|
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
573
823
|
}
|
|
574
824
|
}
|
|
@@ -579,7 +829,14 @@ function createInstancesCommand() {
|
|
|
579
829
|
// server does not list, the id was never the problem — say so before
|
|
580
830
|
// handleCommandError() exits, so nobody re-checks a correct id and then
|
|
581
831
|
// delegates to whatever this server does have.
|
|
582
|
-
|
|
832
|
+
if (client)
|
|
833
|
+
await warnIfDifferentServer(client, error);
|
|
834
|
+
// Issue #4116: a role refusal has its own sentence, code and `--json` answer,
|
|
835
|
+
// and so has any failure of a role form.
|
|
836
|
+
if (roleForm || error instanceof agent_roles_1.RoleCliError || (0, agent_roles_1.roleFailureFromApi)(error) !== null) {
|
|
837
|
+
(0, agent_roles_1.reportRoleFailure)(error, options.json);
|
|
838
|
+
return;
|
|
839
|
+
}
|
|
583
840
|
(0, command_helpers_1.handleCommandError)(error);
|
|
584
841
|
}
|
|
585
842
|
});
|