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
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
import type { ChatMessage } from '../types/api-responses';
|
|
10
10
|
import { ApiClient } from '../utils/api-client';
|
|
11
11
|
import type { CommandTarget } from './command-target';
|
|
12
|
-
import { type RegisteredRelay } from './relays';
|
|
12
|
+
import { type RegisteredRelay, type RelayEndpointArg } from './relays';
|
|
13
13
|
/**
|
|
14
14
|
* Code the send API returns when the session is blocked on a prompt (Issue
|
|
15
15
|
* #1708). Mirrors PROMPT_WAITING_CODE in src/lib/session/prompt-waiting-guard.ts;
|
|
@@ -31,7 +31,21 @@ export interface RegisterRelayForMessageInput {
|
|
|
31
31
|
* "was the relay opened?" unanswered — the same reason `/send` is not cut.
|
|
32
32
|
*/
|
|
33
33
|
resolveClient?: ApiClient;
|
|
34
|
+
/** Issue #4133: already resolved by {@link resolveRelayEndpoints}, so not resolved again. */
|
|
35
|
+
endpoints?: RelayEndpoints;
|
|
36
|
+
/** Issue #4133: runs when the relay could not be opened, before the command ends. */
|
|
37
|
+
onFailure?: () => Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
/** The two ends of a relay, as the ledger stores them. */
|
|
40
|
+
export interface RelayEndpoints {
|
|
41
|
+
from: RelayEndpointArg;
|
|
42
|
+
to: RelayEndpointArg;
|
|
34
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* Both ends of a `--reply-to`. Only reads. Exits 2 when either cannot be named, so a
|
|
46
|
+
* caller with something to clean up afterwards calls this before making it (Issue #4133).
|
|
47
|
+
*/
|
|
48
|
+
export declare function resolveRelayEndpoints(client: ApiClient, input: Pick<RegisterRelayForMessageInput, 'worktreeId' | 'replyTo' | 'instance' | 'agent'>): Promise<RelayEndpoints>;
|
|
35
49
|
/** Resolve both endpoints and open the relay; returns its id and whether it is bound. */
|
|
36
50
|
export declare function registerRelayForMessage(client: ApiClient, input: RegisterRelayForMessageInput): Promise<RegisteredRelay>;
|
|
37
51
|
export interface PostMessageOptions {
|
|
@@ -40,13 +54,20 @@ export interface PostMessageOptions {
|
|
|
40
54
|
* send (`relayId`) and it is withdrawn only on a confirmed `not_sent`.
|
|
41
55
|
*/
|
|
42
56
|
relay?: RegisteredRelay;
|
|
43
|
-
/**
|
|
44
|
-
|
|
57
|
+
/**
|
|
58
|
+
* Runs first when the post fails, before the relay is cancelled and before any
|
|
59
|
+
* exit. Issue #4116: told the failure, and a bound relay's outcome (null unbound).
|
|
60
|
+
*/
|
|
61
|
+
onFailure?: (error: unknown, outcome: FailedSendOutcome | null) => Promise<void>;
|
|
45
62
|
/** Printed (after `Error: `) when PROMPT_WAITING carried no message body. */
|
|
46
63
|
promptWaitingFallback: string;
|
|
47
64
|
/** The resolved target the send addressed; the hints name it (Issue #3982). */
|
|
48
65
|
target: CommandTarget;
|
|
49
66
|
}
|
|
67
|
+
/** What the send did, as far as a bound relay is concerned (Issue #3957). */
|
|
68
|
+
type BoundSendOutcome = 'sent' | 'not_sent' | 'unknown' | 'conflict';
|
|
69
|
+
/** A bound relay's outcome once the send is known to have failed. */
|
|
70
|
+
export type FailedSendOutcome = Exclude<BoundSendOutcome, 'sent'>;
|
|
50
71
|
/**
|
|
51
72
|
* What to tell the sender about resending a failed send, from the server's
|
|
52
73
|
* `sendOutcome` on the error (Issue #3992). Issue #4011: the route puts it on
|
|
@@ -67,4 +88,5 @@ export declare function describeFailedSendOutcome(error: unknown, worktreeId: st
|
|
|
67
88
|
* @returns The send API's body (Issue #3957: `ask` reads `turnOpenAtSend`)
|
|
68
89
|
*/
|
|
69
90
|
export declare function postMessage(client: ApiClient, worktreeId: string, sendBody: Record<string, unknown>, options: PostMessageOptions): Promise<ChatMessage>;
|
|
91
|
+
export {};
|
|
70
92
|
//# sourceMappingURL=message-dispatch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-dispatch.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/message-dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAY,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"message-dispatch.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/message-dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAY,MAAM,qBAAqB,CAAC;AAG1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAML,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,UAAU,CAAC;AAElB;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AAEpD,MAAM,WAAW,4BAA4B;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,6FAA6F;IAC7F,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC;AAED,0DAA0D;AAC1D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,gBAAgB,CAAC;IACvB,EAAE,EAAE,gBAAgB,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,IAAI,CAAC,4BAA4B,EAAE,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC,GACzF,OAAO,CAAC,cAAc,CAAC,CAIzB;AAED,yFAAyF;AACzF,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,eAAe,CAAC,CAO1B;AAED,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF,6EAA6E;IAC7E,qBAAqB,EAAE,MAAM,CAAC;IAC9B,+EAA+E;IAC/E,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,6EAA6E;AAC7E,KAAK,gBAAgB,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;AAErE,qEAAqE;AACrE,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAqClE;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAcnH;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,WAAW,CAAC,CAyDtB"}
|
|
@@ -9,12 +9,14 @@
|
|
|
9
9
|
*/
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
11
|
exports.PROMPT_WAITING_CODE = void 0;
|
|
12
|
+
exports.resolveRelayEndpoints = resolveRelayEndpoints;
|
|
12
13
|
exports.registerRelayForMessage = registerRelayForMessage;
|
|
13
14
|
exports.describeFailedSendOutcome = describeFailedSendOutcome;
|
|
14
15
|
exports.postMessage = postMessage;
|
|
15
16
|
const types_1 = require("../types");
|
|
16
17
|
const api_client_1 = require("../utils/api-client");
|
|
17
18
|
const follow_up_command_1 = require("../utils/follow-up-command");
|
|
19
|
+
const role_failure_1 = require("../utils/role-failure");
|
|
18
20
|
const relays_1 = require("./relays");
|
|
19
21
|
/**
|
|
20
22
|
* Code the send API returns when the session is blocked on a prompt (Issue
|
|
@@ -23,15 +25,22 @@ const relays_1 = require("./relays");
|
|
|
23
25
|
* tmux/detection graph in for one string.
|
|
24
26
|
*/
|
|
25
27
|
exports.PROMPT_WAITING_CODE = 'PROMPT_WAITING';
|
|
28
|
+
/**
|
|
29
|
+
* Both ends of a `--reply-to`. Only reads. Exits 2 when either cannot be named, so a
|
|
30
|
+
* caller with something to clean up afterwards calls this before making it (Issue #4133).
|
|
31
|
+
*/
|
|
32
|
+
async function resolveRelayEndpoints(client, input) {
|
|
33
|
+
const from = await (0, relays_1.resolveRelayEndpoint)(client, input.replyTo);
|
|
34
|
+
const to = await (0, relays_1.resolveEndpointForWorktree)(client, input.worktreeId, input.instance, input.agent);
|
|
35
|
+
return { from, to };
|
|
36
|
+
}
|
|
26
37
|
/** Resolve both endpoints and open the relay; returns its id and whether it is bound. */
|
|
27
38
|
async function registerRelayForMessage(client, input) {
|
|
28
|
-
const
|
|
29
|
-
const replyEndpoint = await (0, relays_1.resolveRelayEndpoint)(resolveClient, input.replyTo);
|
|
30
|
-
const workerEndpoint = await (0, relays_1.resolveEndpointForWorktree)(resolveClient, input.worktreeId, input.instance, input.agent);
|
|
39
|
+
const endpoints = input.endpoints ?? await resolveRelayEndpoints(input.resolveClient ?? client, input);
|
|
31
40
|
return (0, relays_1.registerRelay)(client, {
|
|
32
|
-
|
|
33
|
-
to: workerEndpoint,
|
|
41
|
+
...endpoints,
|
|
34
42
|
allowRelayChain: input.allowRelayChain,
|
|
43
|
+
onFailure: input.onFailure,
|
|
35
44
|
});
|
|
36
45
|
}
|
|
37
46
|
function isSendOutcome(value) {
|
|
@@ -118,7 +127,7 @@ async function postMessage(client, worktreeId, sendBody, options) {
|
|
|
118
127
|
return { worktreeId, role: 'user', content: '', sendOutcome: 'sent' };
|
|
119
128
|
}
|
|
120
129
|
if (options.onFailure) {
|
|
121
|
-
await options.onFailure();
|
|
130
|
+
await options.onFailure(error, outcome);
|
|
122
131
|
}
|
|
123
132
|
// A relay whose message never arrived can never be answered; leaving
|
|
124
133
|
// it open would have the requester waiting 24h for a turn that was
|
|
@@ -131,6 +140,11 @@ async function postMessage(client, worktreeId, sendBody, options) {
|
|
|
131
140
|
(0, relays_1.printRelayUnconfirmedNotice)(relayId, worktreeId, options.target);
|
|
132
141
|
}
|
|
133
142
|
const promptWaiting = error instanceof api_client_1.ApiError && error.apiCode === exports.PROMPT_WAITING_CODE;
|
|
143
|
+
// Issue #4116: a refusal with no role code of its own (a 400, a 503, a 500), after
|
|
144
|
+
// the role was saved. One with a role code says so in its own sentence.
|
|
145
|
+
if ((0, role_failure_1.roleSettingSavedBy)(error) && (0, role_failure_1.roleFailureFromApi)(error) === null) {
|
|
146
|
+
console.error(`Note: ${role_failure_1.ROLE_STAYED_SAVED}`);
|
|
147
|
+
}
|
|
134
148
|
// Issue #3992: whether it may be sent again, as the server said — not on
|
|
135
149
|
// PROMPT_WAITING, whose own line says to answer the prompt first, and not
|
|
136
150
|
// when the relay notice above already said it.
|
|
@@ -150,6 +164,12 @@ async function postMessage(client, worktreeId, sendBody, options) {
|
|
|
150
164
|
console.error(`Error: ${error.payload?.error ?? options.promptWaitingFallback}`);
|
|
151
165
|
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
152
166
|
}
|
|
167
|
+
// Issue #4116: a refusal because of the role, whether or not this send named
|
|
168
|
+
// one (a default can refuse a start), with the server's sentence and its own
|
|
169
|
+
// exit code rather than "Unexpected HTTP status: 409".
|
|
170
|
+
const roleFailure = (0, role_failure_1.roleFailureFromApi)(error);
|
|
171
|
+
if (roleFailure)
|
|
172
|
+
throw roleFailure;
|
|
153
173
|
throw error;
|
|
154
174
|
}
|
|
155
175
|
}
|
|
@@ -79,6 +79,11 @@ export interface RegisterRelayInput {
|
|
|
79
79
|
/** The session being asked. */
|
|
80
80
|
to: RelayEndpointArg;
|
|
81
81
|
allowRelayChain?: boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Runs when the relay could not be opened, refused or not, before the command ends
|
|
84
|
+
* (Issue #4133): a refusal exits right here, past any caller's own handling.
|
|
85
|
+
*/
|
|
86
|
+
onFailure?: () => Promise<void>;
|
|
82
87
|
}
|
|
83
88
|
/** A relay {@link registerRelay} opened (Issue #3957). */
|
|
84
89
|
export interface RegisteredRelay {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relays.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/relays.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,OAAO,EAAE,SAAS,EAA+B,MAAM,qBAAqB,CAAC;AAI7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AActD;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,aAM9B,CAAC;AAEH,+CAA+C;AAC/C,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,4EAA4E;AAC5E,eAAO,MAAM,2BAA2B,QAEiD,CAAC;AAE1F,yDAAyD;AACzD,eAAO,MAAM,6BAA6B,QAER,CAAC;AAEnC;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,gBAAgB,CAAC,CAyB3B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,gBAAgB,CAAC,CA0B3B;AAED,wCAAwC;AACxC,MAAM,WAAW,kBAAkB;IACjC,+CAA+C;IAC/C,IAAI,EAAE,gBAAgB,CAAC;IACvB,+BAA+B;IAC/B,EAAE,EAAE,gBAAgB,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"relays.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/relays.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,OAAO,EAAE,SAAS,EAA+B,MAAM,qBAAqB,CAAC;AAI7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AActD;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,aAM9B,CAAC;AAEH,+CAA+C;AAC/C,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,4EAA4E;AAC5E,eAAO,MAAM,2BAA2B,QAEiD,CAAC;AAE1F,yDAAyD;AACzD,eAAO,MAAM,6BAA6B,QAER,CAAC;AAEnC;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,gBAAgB,CAAC,CAyB3B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,gBAAgB,CAAC,CA0B3B;AAED,wCAAwC;AACxC,MAAM,WAAW,kBAAkB;IACjC,+CAA+C;IAC/C,IAAI,EAAE,gBAAgB,CAAC;IACvB,+BAA+B;IAC/B,EAAE,EAAE,gBAAgB,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC;AAED,0DAA0D;AAC1D,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX;;;OAGG;IACH,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,QAEkD,CAAC;AAEnF;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,eAAe,CAAC,CAmB1B;AAED,+EAA+E;AAC/E,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAY1F;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,IAAI,CAW9G;AAoHD,wBAAgB,mBAAmB,IAAI,OAAO,CA4Q7C"}
|
|
@@ -168,6 +168,7 @@ async function registerRelay(client, input) {
|
|
|
168
168
|
return { id: response.relay.id, bound };
|
|
169
169
|
}
|
|
170
170
|
catch (error) {
|
|
171
|
+
await input.onFailure?.();
|
|
171
172
|
if (error instanceof api_client_1.ApiError && error.apiCode && exports.RELAY_REFUSAL_CODES.has(error.apiCode)) {
|
|
172
173
|
console.error(`Error: ${error.payload?.error ?? error.apiCode}`);
|
|
173
174
|
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
@@ -239,6 +240,17 @@ function printRelayLine(relay) {
|
|
|
239
240
|
fields.push(`reason=${delivery.reason}`);
|
|
240
241
|
fields.push(`check=${delivery.checkCommand}`);
|
|
241
242
|
}
|
|
243
|
+
// Issue #4105: the payload waiting in the slot, and what its last delivery
|
|
244
|
+
// attempt stopped for — an observation with its time, not a current state.
|
|
245
|
+
// Nothing is printed when the server did not observe one (or is older):
|
|
246
|
+
// that is "not known", never "deliverable".
|
|
247
|
+
if (relay.pendingKind && !delivery)
|
|
248
|
+
fields.push(`pending=${relay.pendingKind}`);
|
|
249
|
+
const block = relay.lastDeliveryBlock;
|
|
250
|
+
if (block && typeof block.reason === 'string') {
|
|
251
|
+
const at = typeof block.observedAt === 'number' ? `@${new Date(block.observedAt).toISOString()}` : '';
|
|
252
|
+
fields.push(`blocked=${block.reason}${at}`);
|
|
253
|
+
}
|
|
242
254
|
console.log(fields.join('\t'));
|
|
243
255
|
}
|
|
244
256
|
/** `relays --id <id>`: one relay, whatever its state (Issue #3957). */
|
|
@@ -295,9 +307,25 @@ function createRelaysCommand() {
|
|
|
295
307
|
Columns: <relay-id> <state> <requester> <- <worker> hops=<n> expires=<iso>
|
|
296
308
|
[send=<state>] [overlap=<none|later|earlier|both|unknown>] [hold=<reason>]
|
|
297
309
|
[delivery=<attempting|uncertain> payload=<kind>:<id> attempt=<id> reason=<r> check=<cmd>]
|
|
310
|
+
[pending=<reply|prompt|expired>] [blocked=<reason>@<iso>]
|
|
298
311
|
|
|
299
312
|
States: pending (the worker has not finished), prompt (it stopped on a
|
|
300
|
-
confirmation and the requester was
|
|
313
|
+
confirmation at some point and a notice to the requester was queued -- not
|
|
314
|
+
necessarily delivered yet; a record, not "still waiting": it stays after the
|
|
315
|
+
confirmation is answered and pending=reply replaces the notice),
|
|
316
|
+
delivered / expired / cancelled.
|
|
317
|
+
|
|
318
|
+
pending= / blocked= (Issue #4105): pending= is the payload waiting to be
|
|
319
|
+
typed into the requester's composer. blocked= is why the LAST delivery
|
|
320
|
+
attempt of that payload stopped, and when it was observed: prompt_waiting
|
|
321
|
+
(the requester's pane shows a confirmation dialog -- nothing is typed into
|
|
322
|
+
it; answer it and the next pass, about every 15 s, delivers), generating,
|
|
323
|
+
session_stopped, foreign_session. Left alone until the deadline, the payload
|
|
324
|
+
is replaced by the expiry notice. Absent = no observation by this server
|
|
325
|
+
process (after a restart, or before the first attempt), not "deliverable".
|
|
326
|
+
A closed relay whose expiry notice is still stopped (Issue #4193) is listed
|
|
327
|
+
under "# closed, notice not delivered yet" (state=expired, pending=expired,
|
|
328
|
+
blocked=...) until the notice goes out; it is not counted as open.
|
|
301
329
|
|
|
302
330
|
send= / overlap= / hold= appear on a relay tied to its send (Issue #3957):
|
|
303
331
|
send= is awaiting / input_started / sent / failed / unknown; hold= says why a
|
|
@@ -387,6 +415,14 @@ Withdraw one with \`commandmate relays cancel <relay-id>\`.
|
|
|
387
415
|
console.error(`# delivery in progress (${inProgress.length})`);
|
|
388
416
|
inProgress.forEach(printRelayLine);
|
|
389
417
|
}
|
|
418
|
+
// Issue #4193: a closed relay whose payload to the requester (the
|
|
419
|
+
// expiry notice) is still stopped — listed apart from the open ones,
|
|
420
|
+
// and never counted in them. Absent on an older server.
|
|
421
|
+
const closedBlocked = response.closedBlocked ?? [];
|
|
422
|
+
if (closedBlocked.length > 0) {
|
|
423
|
+
console.error(`# closed, notice not delivered yet (${closedBlocked.length})`);
|
|
424
|
+
closedBlocked.forEach(printRelayLine);
|
|
425
|
+
}
|
|
390
426
|
if (response.awaiting.length === 0 && response.owed.length === 0) {
|
|
391
427
|
console.error('No open relays.');
|
|
392
428
|
return;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* roles Command - define roles and set their defaults, without a screen (Issue #4116).
|
|
3
|
+
*
|
|
4
|
+
* A thin client over `/api/roles`, `/api/settings/agent-role-defaults` and
|
|
5
|
+
* `/api/repositories/:id/role-defaults`. The rules are the server's; what is here
|
|
6
|
+
* is naming things the way a person does (`utils/agent-roles.ts`) and saying what a
|
|
7
|
+
* change reaches.
|
|
8
|
+
*/
|
|
9
|
+
import { Command } from 'commander';
|
|
10
|
+
export declare function createRolesCommand(): Command;
|
|
11
|
+
//# sourceMappingURL=roles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/roles.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2dpC,wBAAgB,kBAAkB,IAAI,OAAO,CA8D5C"}
|
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* roles Command - define roles and set their defaults, without a screen (Issue #4116).
|
|
4
|
+
*
|
|
5
|
+
* A thin client over `/api/roles`, `/api/settings/agent-role-defaults` and
|
|
6
|
+
* `/api/repositories/:id/role-defaults`. The rules are the server's; what is here
|
|
7
|
+
* is naming things the way a person does (`utils/agent-roles.ts`) and saying what a
|
|
8
|
+
* change reaches.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.createRolesCommand = createRolesCommand;
|
|
12
|
+
const agent_roles_1 = require("../../types/agent-roles");
|
|
13
|
+
const commander_1 = require("commander");
|
|
14
|
+
const api_client_1 = require("../utils/api-client");
|
|
15
|
+
const command_helpers_1 = require("../utils/command-helpers");
|
|
16
|
+
const agent_roles_2 = require("../utils/agent-roles");
|
|
17
|
+
const agent_roles_3 = require("../../types/agent-roles");
|
|
18
|
+
/** Stated in `roles --help`, in `docs` and in the guide; the three say the same. */
|
|
19
|
+
const ROLES_HELP = `
|
|
20
|
+
Three different things (only the last touches a running session):
|
|
21
|
+
roles edit changes the role's text. Every setting pointing at it follows,
|
|
22
|
+
from the next start. Running sessions keep what they started with.
|
|
23
|
+
roles default changes what a new start resolves to, per tool: for one repository
|
|
24
|
+
(--repo) or for all that do not say otherwise. Schedules follow too.
|
|
25
|
+
instances <wt> set-role / send --role
|
|
26
|
+
sets one instance. A role is fixed when the process starts: a running
|
|
27
|
+
one keeps its role until stopped (instances <wt> kill <id>). Then send.
|
|
28
|
+
|
|
29
|
+
<role> is an ID or a name; an exact match wins, then one ignoring case and Unicode form.
|
|
30
|
+
Two answers is exit 2 with the candidates. Nothing is reserved: --none and --inherit are
|
|
31
|
+
flags, so a role can be called "none".
|
|
32
|
+
|
|
33
|
+
--repo is an ID, then a path, then a name:
|
|
34
|
+
- a value with a "/" or starting with "." is a path: a registered repository, or a
|
|
35
|
+
worktree of one, which answers for its repository (so --repo . works in a worktree)
|
|
36
|
+
- a bare word is a name, never a path
|
|
37
|
+
See what is registered with: commandmate roles defaults
|
|
38
|
+
Errors say which: unknown_repository, repository_not_registered (a directory with no
|
|
39
|
+
row), ambiguous_repository. A repository with no setting for a tool is not an error:
|
|
40
|
+
it reads stored: inherit, and effective says what it gets instead.
|
|
41
|
+
|
|
42
|
+
Tools: ${agent_roles_3.AGENT_ROLE_CLI_TOOLS.join(', ')}. Any other is exit 2 (tool_not_supported).
|
|
43
|
+
|
|
44
|
+
Exit codes:
|
|
45
|
+
0 done
|
|
46
|
+
1 the server is not running
|
|
47
|
+
2 bad arguments, a body that cannot be stored, unknown or ambiguous role or
|
|
48
|
+
repository, a tool outside the feature
|
|
49
|
+
31 a conflict; nothing changed: name_conflict, name_changed, version_conflict (--if-version),
|
|
50
|
+
role_in_use (roles rm without --force)
|
|
51
|
+
99 anything else
|
|
52
|
+
|
|
53
|
+
--json goes to stdout:
|
|
54
|
+
list { success, roles: [{ id, name, bodyVersion, bodyFingerprint, bodyBytes, createdAt, updatedAt }] }
|
|
55
|
+
show { success, role: { ...those, body }, references: { instances, repositories, system } }
|
|
56
|
+
add { success, role }
|
|
57
|
+
edit { success, before, after, bodyVersion, affected, impact }
|
|
58
|
+
rm { success, deleted: { id, name }, affected }
|
|
59
|
+
default { success, level: system | repository, cliToolId, repository?, before, after, impact }
|
|
60
|
+
before / after: { stored, effective? }; impact: { repositories, schedules, runningSessions, message }
|
|
61
|
+
defaults { success, system: [{ cliToolId, adapterEnabled, stored, effective }], repositories }
|
|
62
|
+
with --repo: { success, repository, defaults: [{ cliToolId, adapterEnabled, stored, effective }] }
|
|
63
|
+
stored.state: role | none | inherit (no row) | unset (system, no row)
|
|
64
|
+
effective.kind: role | none | ambiguous; effective.source: repository | system | fallback
|
|
65
|
+
failure { success: false, error: <code>, message, candidates? | references? | currentBodyVersion? }
|
|
66
|
+
The same sentence goes to stderr. Failures with no role code of their own say
|
|
67
|
+
internal_error, request_failed, no_response (no server), role_api_unavailable
|
|
68
|
+
(a server older than roles) or unexpected_error, with the exit code above.
|
|
69
|
+
A change that got a 5xx or no answer also has saved: "unknown" and check, the
|
|
70
|
+
command that shows what it is now. A 4xx changed nothing.
|
|
71
|
+
A missing argument or unknown option is commander's: stderr only, exit 1.
|
|
72
|
+
|
|
73
|
+
Example: define a reviewer and make it this repository's Codex default
|
|
74
|
+
commandmate roles add reviewer --file ./reviewer.md
|
|
75
|
+
commandmate roles default codex --repo . --role reviewer
|
|
76
|
+
`;
|
|
77
|
+
async function run(options, action) {
|
|
78
|
+
try {
|
|
79
|
+
await action(new api_client_1.ApiClient({ token: options.token }));
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
(0, agent_roles_2.reportRoleFailure)(error, options.json);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function withCommon(command) {
|
|
86
|
+
return command
|
|
87
|
+
.option('--json', 'JSON output on stdout, failures included')
|
|
88
|
+
.option('--token <token>', command_helpers_1.TOKEN_WARNING);
|
|
89
|
+
}
|
|
90
|
+
function print(options, value, text) {
|
|
91
|
+
if (options.json)
|
|
92
|
+
console.log(JSON.stringify(value, null, 2));
|
|
93
|
+
else
|
|
94
|
+
console.log(text);
|
|
95
|
+
}
|
|
96
|
+
function formatTable(headers, rows) {
|
|
97
|
+
const widths = headers.map((header, i) => Math.max(header.length, ...rows.map((row) => row[i].length)));
|
|
98
|
+
const line = (cells) => cells.map((cell, i) => cell.padEnd(widths[i])).join(' ').trimEnd();
|
|
99
|
+
return [line(headers), widths.map((width) => '-'.repeat(width)).join(' '), ...rows.map(line)].join('\n');
|
|
100
|
+
}
|
|
101
|
+
function describeStored(stored) {
|
|
102
|
+
if (stored.state === 'role')
|
|
103
|
+
return stored.roleName;
|
|
104
|
+
return stored.state === 'inherit' ? 'inherit (no setting)' : stored.state === 'unset' ? 'unset' : 'none';
|
|
105
|
+
}
|
|
106
|
+
function describeEffective(effective) {
|
|
107
|
+
if (effective.kind === 'role')
|
|
108
|
+
return `${effective.role.name} (${effective.source})`;
|
|
109
|
+
if (effective.kind === 'none')
|
|
110
|
+
return `no role (${effective.source})`;
|
|
111
|
+
return 'ambiguous: the roots of this repository disagree';
|
|
112
|
+
}
|
|
113
|
+
function describeReferences(references) {
|
|
114
|
+
return [
|
|
115
|
+
...references.instances.map(({ worktreeId, instanceId }) => ` instance ${instanceId} of ${worktreeId}`),
|
|
116
|
+
...references.repositories.map(({ repositoryPath, cliToolId }) => ` ${cliToolId} default of ${repositoryPath}`),
|
|
117
|
+
...references.system.map(({ cliToolId }) => ` ${cliToolId} system default`),
|
|
118
|
+
];
|
|
119
|
+
}
|
|
120
|
+
// ---------------------------------------------------------------------------
|
|
121
|
+
// Definitions
|
|
122
|
+
// ---------------------------------------------------------------------------
|
|
123
|
+
async function listRoles(client, options) {
|
|
124
|
+
const response = await client.get('/api/roles');
|
|
125
|
+
print(options, response, response.roles.length === 0
|
|
126
|
+
? 'No roles. Define one with: commandmate roles add <name> --file <path>'
|
|
127
|
+
: formatTable(['ID', 'NAME', 'VERSION', 'BYTES'], response.roles.map((role) => [role.id, role.name, String(role.bodyVersion), String(role.bodyBytes)])));
|
|
128
|
+
}
|
|
129
|
+
async function showRole(client, selector, options) {
|
|
130
|
+
const { id } = await (0, agent_roles_2.resolveRole)(client, selector);
|
|
131
|
+
const response = await client.get(`/api/roles/${encodeURIComponent(id)}`);
|
|
132
|
+
const { role, references } = response;
|
|
133
|
+
const used = describeReferences(references);
|
|
134
|
+
print(options, response, [
|
|
135
|
+
`id: ${role.id}`,
|
|
136
|
+
`name: ${role.name}`,
|
|
137
|
+
`version: ${role.bodyVersion}`,
|
|
138
|
+
`used by: ${used.length === 0 ? 'nothing directly' : ''}`,
|
|
139
|
+
...used,
|
|
140
|
+
'',
|
|
141
|
+
role.body,
|
|
142
|
+
].join('\n'));
|
|
143
|
+
}
|
|
144
|
+
async function addRole(client, name, options) {
|
|
145
|
+
const body = await (0, agent_roles_2.readRoleBodyOption)(options);
|
|
146
|
+
if (body === undefined)
|
|
147
|
+
throw (0, agent_roles_2.usageError)('Give the body with --file <path> or --stdin.');
|
|
148
|
+
const response = await (0, agent_roles_2.roleWrite)('commandmate roles list', () => client.post('/api/roles', { name, body }));
|
|
149
|
+
print(options, response, `Role added: ${response.role.name} (${response.role.id})`);
|
|
150
|
+
}
|
|
151
|
+
/** Editing a role reaches everything resolving to it, from the next start. */
|
|
152
|
+
const EDIT_IMPACT_MESSAGE = 'Every setting pointing at this role, and everything inheriting one, gets the new text from its next start, '
|
|
153
|
+
+ 'Schedules included. Running sessions keep what they started with.';
|
|
154
|
+
async function editRole(client, selector, options) {
|
|
155
|
+
let expectedBodyVersion;
|
|
156
|
+
if (options.ifVersion !== undefined) {
|
|
157
|
+
if (!/^[0-9]+$/.test(options.ifVersion))
|
|
158
|
+
throw (0, agent_roles_2.usageError)('--if-version must be a whole number.');
|
|
159
|
+
expectedBodyVersion = Number(options.ifVersion);
|
|
160
|
+
}
|
|
161
|
+
const body = await (0, agent_roles_2.readRoleBodyOption)(options);
|
|
162
|
+
if (options.name === undefined && body === undefined) {
|
|
163
|
+
throw (0, agent_roles_2.usageError)('Nothing to change: give --name, --file or --stdin.');
|
|
164
|
+
}
|
|
165
|
+
const { id, name: nameRead } = await (0, agent_roles_2.resolveRole)(client, selector);
|
|
166
|
+
const response = await (0, agent_roles_2.roleWrite)(`commandmate roles show ${id}`, () => client.put(`/api/roles/${encodeURIComponent(id)}`, {
|
|
167
|
+
...(options.name !== undefined ? { name: options.name } : {}),
|
|
168
|
+
...(body !== undefined ? { body } : {}),
|
|
169
|
+
...(expectedBodyVersion !== undefined ? { expectedBodyVersion } : {}),
|
|
170
|
+
// Issue #4132: the rename replaces the name just read, not one set since.
|
|
171
|
+
}, options.name !== undefined ? { [agent_roles_1.EXPECTED_ROLE_NAME_HEADER]: encodeURIComponent(nameRead) } : undefined));
|
|
172
|
+
const { before, after, affected } = response;
|
|
173
|
+
const used = describeReferences(affected);
|
|
174
|
+
print(options, { ...response, impact: { schedules: true, runningSessions: false, message: EDIT_IMPACT_MESSAGE } }, [
|
|
175
|
+
`Role updated: ${before.name === after.name ? after.name : `${before.name} -> ${after.name}`} `
|
|
176
|
+
+ `(version ${before.bodyVersion} -> ${after.bodyVersion})`,
|
|
177
|
+
`Points at it directly: ${used.length === 0 ? 'nothing' : ''}`,
|
|
178
|
+
...used,
|
|
179
|
+
EDIT_IMPACT_MESSAGE,
|
|
180
|
+
].join('\n'));
|
|
181
|
+
}
|
|
182
|
+
async function removeRole(client, selector, options) {
|
|
183
|
+
const { id } = await (0, agent_roles_2.resolveRole)(client, selector);
|
|
184
|
+
let response;
|
|
185
|
+
try {
|
|
186
|
+
response = await (0, agent_roles_2.roleWrite)('commandmate roles list', () => client.delete(`/api/roles/${encodeURIComponent(id)}${options.force ? '?force=true' : ''}`));
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
// The sentence alone does not say what is in the way.
|
|
190
|
+
if (error instanceof api_client_1.ApiError && error.payload?.error === 'role_in_use' && error.payload.references && !options.json) {
|
|
191
|
+
const used = describeReferences(error.payload.references);
|
|
192
|
+
console.error(['In use by:', ...used, 'To remove it along with those settings: --force'].join('\n'));
|
|
193
|
+
}
|
|
194
|
+
throw error;
|
|
195
|
+
}
|
|
196
|
+
const dropped = describeReferences(response.affected);
|
|
197
|
+
print(options, response, [
|
|
198
|
+
`Role removed: ${response.deleted.name}`,
|
|
199
|
+
...(dropped.length > 0 ? ['Settings that pointed at it now follow the defaults:', ...dropped] : []),
|
|
200
|
+
].join('\n'));
|
|
201
|
+
}
|
|
202
|
+
function systemEffective(stored) {
|
|
203
|
+
return stored.state === 'role'
|
|
204
|
+
? { kind: 'role', source: 'system', role: { id: stored.roleId, name: stored.roleName } }
|
|
205
|
+
: { kind: 'none', source: 'fallback', reason: 'no-default' };
|
|
206
|
+
}
|
|
207
|
+
function systemEntryOf(defaults, tool) {
|
|
208
|
+
const entry = defaults.find(({ cliToolId }) => cliToolId === tool);
|
|
209
|
+
if (!entry)
|
|
210
|
+
throw (0, agent_roles_2.usageError)(`The server has no default for ${tool}.`);
|
|
211
|
+
return entry;
|
|
212
|
+
}
|
|
213
|
+
function repositoryEntryOf(defaults, tool) {
|
|
214
|
+
const entry = defaults.find(({ cliToolId }) => cliToolId === tool);
|
|
215
|
+
if (!entry)
|
|
216
|
+
throw (0, agent_roles_2.usageError)(`The server has no default for ${tool}.`);
|
|
217
|
+
return entry;
|
|
218
|
+
}
|
|
219
|
+
function repositorySummary({ id, name, path, enabled }) {
|
|
220
|
+
return { id, name, path, ...(enabled !== undefined ? { enabled } : {}) };
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* The repositories a system default reaches: those holding no setting of their own
|
|
224
|
+
* for the tool. Null when that could not be read; the change has happened by then,
|
|
225
|
+
* and this only describes it.
|
|
226
|
+
*/
|
|
227
|
+
async function repositoriesInheriting(client, tool) {
|
|
228
|
+
try {
|
|
229
|
+
const repositories = await (0, agent_roles_2.listRepositories)(client);
|
|
230
|
+
const inheriting = await Promise.all(repositories.map(async (repository) => {
|
|
231
|
+
const { defaults } = await client.get(`/api/repositories/${encodeURIComponent(repository.id)}/role-defaults`);
|
|
232
|
+
return repositoryEntryOf(defaults, tool).stored.state === 'inherit';
|
|
233
|
+
}));
|
|
234
|
+
return repositories.filter((_, index) => inheriting[index]).map(repositorySummary);
|
|
235
|
+
}
|
|
236
|
+
catch {
|
|
237
|
+
return null;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
function assertOneAssignment(options) {
|
|
241
|
+
const given = [options.role !== undefined, options.none === true, options.inherit === true].filter(Boolean).length;
|
|
242
|
+
if (given !== 1) {
|
|
243
|
+
throw (0, agent_roles_2.usageError)(options.repo === undefined
|
|
244
|
+
? 'Give one of --role <role> or --none.'
|
|
245
|
+
: 'Give one of --role <role>, --none or --inherit.');
|
|
246
|
+
}
|
|
247
|
+
if (options.repo === undefined && options.inherit) {
|
|
248
|
+
throw (0, agent_roles_2.usageError)('--inherit needs --repo: the system level is the last one, and has nothing to inherit from.');
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
function warnAdapterDisabled(tool, enabled) {
|
|
252
|
+
if (!enabled) {
|
|
253
|
+
console.error(`Warning: roles are not enabled for ${tool} yet: a start that resolves to one is refused.`);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
async function setSystemDefault(client, tool, options) {
|
|
257
|
+
const roleId = options.role !== undefined ? (await (0, agent_roles_2.resolveRole)(client, options.role)).id : null;
|
|
258
|
+
const before = systemEntryOf((await client.get('/api/settings/agent-role-defaults')).defaults, tool);
|
|
259
|
+
const { defaults } = await (0, agent_roles_2.roleWrite)('commandmate roles defaults', () => client.put('/api/settings/agent-role-defaults', { cliToolId: tool, roleId }));
|
|
260
|
+
const after = systemEntryOf(defaults, tool);
|
|
261
|
+
warnAdapterDisabled(tool, after.adapterEnabled);
|
|
262
|
+
const repositories = await repositoriesInheriting(client, tool);
|
|
263
|
+
const message = `From its next start, every ${tool} session with no setting of its own in a repository with none either `
|
|
264
|
+
+ 'gets this, Schedules included. Running sessions keep what they started with.';
|
|
265
|
+
print(options, {
|
|
266
|
+
success: true,
|
|
267
|
+
level: 'system',
|
|
268
|
+
cliToolId: tool,
|
|
269
|
+
before: { stored: before.stored, effective: systemEffective(before.stored) },
|
|
270
|
+
after: { stored: after.stored, effective: systemEffective(after.stored) },
|
|
271
|
+
impact: { repositories, schedules: true, runningSessions: false, message },
|
|
272
|
+
}, [
|
|
273
|
+
`System default of ${tool}: ${describeStored(before.stored)} -> ${describeStored(after.stored)}`,
|
|
274
|
+
repositories === null
|
|
275
|
+
? 'Could not read which repositories inherit it.'
|
|
276
|
+
: `Repositories inheriting it: ${repositories.map(({ name }) => name).join(', ') || 'none'}`,
|
|
277
|
+
message,
|
|
278
|
+
].join('\n'));
|
|
279
|
+
}
|
|
280
|
+
async function setRepositoryDefault(client, tool, repo, options) {
|
|
281
|
+
const repository = await (0, agent_roles_2.resolveRepository)(client, repo);
|
|
282
|
+
const role = options.none
|
|
283
|
+
? { state: 'none' }
|
|
284
|
+
: options.inherit
|
|
285
|
+
? { state: 'inherit' }
|
|
286
|
+
: { state: 'role', roleId: (await (0, agent_roles_2.resolveRole)(client, options.role)).id };
|
|
287
|
+
const url = `/api/repositories/${encodeURIComponent(repository.id)}/role-defaults`;
|
|
288
|
+
const before = repositoryEntryOf((await client.get(url)).defaults, tool);
|
|
289
|
+
const response = await (0, agent_roles_2.roleWrite)(`commandmate roles defaults --repo ${repository.id}`, () => client.put(url, { cliToolId: tool, role }));
|
|
290
|
+
const after = repositoryEntryOf(response.defaults, tool);
|
|
291
|
+
warnAdapterDisabled(tool, after.adapterEnabled);
|
|
292
|
+
if (after.effective.kind === 'ambiguous') {
|
|
293
|
+
console.error('Warning: the registered roots of this repository now disagree, and a start there is refused until they agree:\n'
|
|
294
|
+
+ after.effective.roots.map(({ path, state }) => ` - ${path}: ${describeStored(state)}`).join('\n'));
|
|
295
|
+
}
|
|
296
|
+
const message = `From its next start, every ${tool} session of this repository with no setting of its own gets this, `
|
|
297
|
+
+ 'Schedules included. Running sessions keep what they started with.';
|
|
298
|
+
print(options, {
|
|
299
|
+
success: true,
|
|
300
|
+
level: 'repository',
|
|
301
|
+
cliToolId: tool,
|
|
302
|
+
repository: response.repository,
|
|
303
|
+
before: { stored: before.stored, effective: before.effective },
|
|
304
|
+
after: { stored: after.stored, effective: after.effective },
|
|
305
|
+
impact: {
|
|
306
|
+
repositories: [response.repository],
|
|
307
|
+
sharedRootIds: after.effective.repositoryIds,
|
|
308
|
+
schedules: true,
|
|
309
|
+
runningSessions: false,
|
|
310
|
+
message,
|
|
311
|
+
},
|
|
312
|
+
}, [
|
|
313
|
+
`Default of ${tool} in ${response.repository.name}: ${describeStored(before.stored)} -> ${describeStored(after.stored)}`,
|
|
314
|
+
`A new start there gets: ${describeEffective(after.effective)}`,
|
|
315
|
+
message,
|
|
316
|
+
].join('\n'));
|
|
317
|
+
}
|
|
318
|
+
async function setDefault(client, tool, options) {
|
|
319
|
+
(0, agent_roles_2.assertRoleTool)(tool);
|
|
320
|
+
assertOneAssignment(options);
|
|
321
|
+
if (options.repo !== undefined)
|
|
322
|
+
await setRepositoryDefault(client, tool, options.repo, options);
|
|
323
|
+
else
|
|
324
|
+
await setSystemDefault(client, tool, options);
|
|
325
|
+
}
|
|
326
|
+
async function showDefaults(client, options) {
|
|
327
|
+
if (options.tool !== undefined)
|
|
328
|
+
(0, agent_roles_2.assertRoleTool)(options.tool);
|
|
329
|
+
const wanted = (entries) => options.tool === undefined ? entries : entries.filter(({ cliToolId }) => cliToolId === options.tool);
|
|
330
|
+
if (options.repo !== undefined) {
|
|
331
|
+
const repository = await (0, agent_roles_2.resolveRepository)(client, options.repo);
|
|
332
|
+
const response = await client.get(`/api/repositories/${encodeURIComponent(repository.id)}/role-defaults`);
|
|
333
|
+
const defaults = wanted(response.defaults);
|
|
334
|
+
print(options, { ...response, defaults }, [
|
|
335
|
+
`${response.repository.name} ${response.repository.path}`,
|
|
336
|
+
formatTable(['TOOL', 'STORED', 'EFFECTIVE'], defaults.map(({ cliToolId, stored, effective }) => [cliToolId, describeStored(stored), describeEffective(effective)])),
|
|
337
|
+
].join('\n'));
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
340
|
+
const { defaults } = await client.get('/api/settings/agent-role-defaults');
|
|
341
|
+
const repositories = (await (0, agent_roles_2.listRepositories)(client)).map(repositorySummary);
|
|
342
|
+
const system = wanted(defaults).map((entry) => ({ ...entry, effective: systemEffective(entry.stored) }));
|
|
343
|
+
print(options, { success: true, system, repositories }, [
|
|
344
|
+
formatTable(['TOOL', 'SYSTEM_DEFAULT', 'EFFECTIVE'], system.map(({ cliToolId, stored, effective }) => [cliToolId, describeStored(stored), describeEffective(effective)])),
|
|
345
|
+
'',
|
|
346
|
+
'Registered repositories (for --repo):',
|
|
347
|
+
repositories.length === 0
|
|
348
|
+
? ' none'
|
|
349
|
+
: formatTable(['ID', 'NAME', 'PATH'], repositories.map(({ id, name, path }) => [id, name, path])),
|
|
350
|
+
].join('\n'));
|
|
351
|
+
}
|
|
352
|
+
function createRolesCommand() {
|
|
353
|
+
const cmd = new commander_1.Command('roles');
|
|
354
|
+
cmd.description('Define roles and set which one a new session gets, by tool and repository').addHelpText('after', ROLES_HELP);
|
|
355
|
+
withCommon(cmd.command('list').description('List the roles, without their bodies'))
|
|
356
|
+
.action((options) => run(options, (client) => listRoles(client, options)));
|
|
357
|
+
withCommon(cmd.command('show').description('Show one role, its body and what points at it').argument('<role>', 'Role ID or name'))
|
|
358
|
+
.action((role, options) => run(options, (client) => showRole(client, role, options)));
|
|
359
|
+
withCommon(cmd
|
|
360
|
+
.command('add')
|
|
361
|
+
.description('Define a role. The body comes from --file or stdin, byte for byte')
|
|
362
|
+
.argument('<name>', 'Role name')
|
|
363
|
+
.option('--file <path>', 'Read the body from this file')
|
|
364
|
+
.option('--stdin', 'Read the body from stdin')).action((name, options) => run(options, (client) => addRole(client, name, options)));
|
|
365
|
+
withCommon(cmd
|
|
366
|
+
.command('edit')
|
|
367
|
+
.description('Rename a role or change its body. Running sessions keep what they started with')
|
|
368
|
+
.argument('<role>', 'Role ID or name')
|
|
369
|
+
.option('--name <name>', 'New name')
|
|
370
|
+
.option('--file <path>', 'Read the new body from this file')
|
|
371
|
+
.option('--stdin', 'Read the new body from stdin')
|
|
372
|
+
.option('--if-version <n>', 'Refuse (exit 31) unless the body is still at this version')).action((role, options) => run(options, (client) => editRole(client, role, options)));
|
|
373
|
+
withCommon(cmd
|
|
374
|
+
.command('rm')
|
|
375
|
+
.description('Remove a role. Refused (exit 31) while something points at it')
|
|
376
|
+
.argument('<role>', 'Role ID or name')
|
|
377
|
+
.option('--force', 'Remove what points at it too; those settings then follow the defaults')).action((role, options) => run(options, (client) => removeRole(client, role, options)));
|
|
378
|
+
withCommon(cmd
|
|
379
|
+
.command('default')
|
|
380
|
+
.description('Set which role a new start of this tool gets, for one repository (--repo) or all that do not say otherwise')
|
|
381
|
+
.argument('<tool>', `One of: ${agent_roles_3.AGENT_ROLE_CLI_TOOLS.join(', ')}`)
|
|
382
|
+
.option('--repo <repository>', 'Repository ID, path or name. Omit for the system level')
|
|
383
|
+
.option('--role <role>', 'Role ID or name')
|
|
384
|
+
.option('--none', 'With --repo: explicitly no role. Without: remove the system default')
|
|
385
|
+
.option('--inherit', 'With --repo: drop the setting, and follow the system default')).action((tool, options) => run(options, (client) => setDefault(client, tool, options)));
|
|
386
|
+
withCommon(cmd
|
|
387
|
+
.command('defaults')
|
|
388
|
+
.description('Show the defaults and the registered repositories. Changes nothing')
|
|
389
|
+
.option('--repo <repository>', 'Repository ID, path or name: what it holds, and what a worktree of it gets')
|
|
390
|
+
.option('--tool <tool>', 'Only this tool')).action((options) => run(options, (client) => showDefaults(client, options)));
|
|
391
|
+
return cmd;
|
|
392
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/send.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/send.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkwBpC,wBAAgB,iBAAiB,IAAI,OAAO,CAqV3C"}
|