commandmate 0.48.0 → 0.49.1
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 +292 -285
- package/.next/app-path-routes-manifest.json +35 -34
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +9 -9
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +8 -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_client-reference-manifest.js +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 +2 -2
- package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/claude-done/route.js +2 -2
- package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/metrics/vibe/route_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_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_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]/route.js +1 -0
- package/.next/server/app/api/relays/[relayId]/route.js.nft.json +1 -0
- package/.next/server/app/api/relays/[relayId]/route_client-reference-manifest.js +1 -0
- 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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/excluded/route_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_client-reference-manifest.js +1 -1
- 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_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 +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 +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.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js +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 +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route.js +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.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_client-reference-manifest.js +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 +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 +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 +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 +144 -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 -3
- 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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_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 +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js +103 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route.js +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_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_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_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_client-reference-manifest.js +1 -1
- package/.next/server/app/review/page_client-reference-manifest.js +1 -1
- package/.next/server/app/sessions/page.js +1 -1
- package/.next/server/app/sessions/page.js.nft.json +1 -1
- package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/[skillId]/page.js +1 -1
- package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
- package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js +2 -2
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/page.js +11 -11
- package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +35 -34
- package/.next/server/chunks/1601.js +2 -2
- package/.next/server/chunks/1656.js +2 -2
- package/.next/server/chunks/2069.js +1 -0
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/2404.js +1 -1
- package/.next/server/chunks/2422.js +1 -1
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/2534.js +1 -1
- package/.next/server/chunks/3241.js +1 -1
- package/.next/server/chunks/3773.js +1 -0
- package/.next/server/chunks/3801.js +31 -0
- package/.next/server/chunks/4243.js +1 -1
- package/.next/server/chunks/4248.js +1 -1
- package/.next/server/chunks/5209.js +1 -1
- package/.next/server/chunks/5354.js +1 -1
- package/.next/server/chunks/{9130.js → 5630.js} +1 -1
- package/.next/server/chunks/5775.js +1 -0
- package/.next/server/chunks/610.js +1 -0
- package/.next/server/chunks/6119.js +1 -1
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6401.js +1 -1
- package/.next/server/chunks/6486.js +1 -1
- package/.next/server/chunks/6781.js +1 -1
- package/.next/server/chunks/6808.js +4 -0
- package/.next/server/chunks/7023.js +14 -0
- package/.next/server/chunks/7604.js +2 -2
- package/.next/server/chunks/7905.js +1 -1
- package/.next/server/chunks/8581.js +16 -16
- package/.next/server/chunks/8728.js +3 -3
- package/.next/server/chunks/8782.js +1 -1
- package/.next/server/chunks/8791.js +1 -1
- package/.next/server/chunks/8807.js +63 -53
- package/.next/server/chunks/8918.js +103 -1
- package/.next/server/chunks/9198.js +144 -0
- package/.next/server/chunks/9390.js +1 -1
- package/.next/server/chunks/9584.js +1 -1
- package/.next/server/chunks/9627.js +4 -4
- package/.next/server/chunks/9731.js +3 -3
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/1128-914c559913546bbc.js +1 -0
- package/.next/static/chunks/{2407-26139a8a2f1adbe8.js → 2407-675ba6b21844dc3b.js} +1 -1
- package/.next/static/chunks/{2619-a305ad4810f1393a.js → 2619-04bc32f026a0d946.js} +1 -1
- package/.next/static/chunks/{2863-f0121af1cbbedb3b.js → 2863-7173dc305dffc4f6.js} +1 -1
- package/.next/static/chunks/3931-1a1abab16248f14d.js +1 -0
- package/.next/static/chunks/6288-6fadbba6e84393b2.js +1 -0
- package/.next/static/chunks/7665-e9ef6e0a85b9fa49.js +1 -0
- package/.next/static/chunks/{8165-c68b3dc844210e6a.js → 8165-263172c17ae8e8c3.js} +1 -1
- package/.next/static/chunks/8606-ce17ffa77f39608e.js +1 -0
- package/.next/static/chunks/app/api/agents/update/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/agents/versions/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/app/release-notes/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/app/update/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/app/update-check/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/auth/login/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/auth/status/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/capabilities/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/status/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/external-apps/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/fs/browse/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/fs/recent-paths/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/hooks/agent-event/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/hooks/claude-done/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/hooks/permission-request/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/metrics/vibe/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/ollama/models/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/push/escalation/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/push/subscriptions/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/push/vapid/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/relays/[relayId]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/relays/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/remote/pair/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/repositories/excluded/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/repositories/restore/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/repositories/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/repositories/scan/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/repositories/sync/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/repositories/validate-path/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/settings/default-agents/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/settings/default-surface-mode/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/sidebar/group-order/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/skills/[id]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/skills/installations/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/skills/operations/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/skills/reindex/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/skills/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/slash-commands/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/templates/[id]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/templates/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/env/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/layout-8bfac4724277b47f.js +1 -0
- package/.next/static/chunks/app/manifest.webmanifest/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/proxy/[...path]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/sessions/page-890fd50ec9739973.js +1 -0
- package/.next/static/chunks/app/skills/[skillId]/{page-52ba58712faf3378.js → page-cb6e74fd9a6a571d.js} +1 -1
- package/.next/static/chunks/app/worktrees/[id]/files/[...path]/page-704086656fb45699.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/layout-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-f6d3ab8185d93aae.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/terminal/{page-c601f3b3ece6557e.js → page-373ea37b16d930c7.js} +1 -1
- package/.next/static/css/c1e307d05daf93b6.css +1 -0
- package/.next/trace +13 -13
- package/.next/types/app/api/relays/[relayId]/route.ts +347 -0
- package/.next/types/routes.d.ts +2 -1
- package/.next/types/validator.ts +9 -0
- package/dist/cli/commands/ask.d.ts.map +1 -1
- package/dist/cli/commands/ask.js +178 -13
- package/dist/cli/commands/auto-yes.d.ts.map +1 -1
- package/dist/cli/commands/auto-yes.js +3 -5
- package/dist/cli/commands/capture.d.ts.map +1 -1
- package/dist/cli/commands/capture.js +5 -0
- package/dist/cli/commands/message-dispatch.d.ts +25 -5
- package/dist/cli/commands/message-dispatch.d.ts.map +1 -1
- package/dist/cli/commands/message-dispatch.js +92 -6
- package/dist/cli/commands/relays.d.ts +25 -2
- package/dist/cli/commands/relays.d.ts.map +1 -1
- package/dist/cli/commands/relays.js +69 -5
- package/dist/cli/commands/respond.d.ts +12 -0
- package/dist/cli/commands/respond.d.ts.map +1 -1
- package/dist/cli/commands/respond.js +63 -1
- package/dist/cli/commands/send.d.ts.map +1 -1
- package/dist/cli/commands/send.js +10 -10
- package/dist/cli/commands/verify.d.ts.map +1 -1
- package/dist/cli/commands/verify.js +8 -1
- package/dist/cli/commands/wait-hook-stop-settle.d.ts +66 -0
- package/dist/cli/commands/wait-hook-stop-settle.d.ts.map +1 -0
- package/dist/cli/commands/wait-hook-stop-settle.js +150 -0
- package/dist/cli/commands/wait-instance.d.ts +21 -0
- package/dist/cli/commands/wait-instance.d.ts.map +1 -0
- package/dist/cli/commands/wait-instance.js +41 -0
- package/dist/cli/commands/wait-notices.d.ts +87 -0
- package/dist/cli/commands/wait-notices.d.ts.map +1 -0
- package/dist/cli/commands/wait-notices.js +301 -0
- package/dist/cli/commands/wait-poll-bookkeeping.d.ts +15 -0
- package/dist/cli/commands/wait-poll-bookkeeping.d.ts.map +1 -0
- package/dist/cli/commands/wait-poll-bookkeeping.js +57 -0
- package/dist/cli/commands/wait-poll-state.d.ts +118 -0
- package/dist/cli/commands/wait-poll-state.d.ts.map +1 -0
- package/dist/cli/commands/wait-poll-state.js +6 -0
- package/dist/cli/commands/wait-timing.d.ts +46 -0
- package/dist/cli/commands/wait-timing.d.ts.map +1 -0
- package/dist/cli/commands/wait-timing.js +99 -0
- package/dist/cli/commands/wait-turn-boundary.d.ts +284 -0
- package/dist/cli/commands/wait-turn-boundary.d.ts.map +1 -0
- package/dist/cli/commands/wait-turn-boundary.js +427 -0
- package/dist/cli/commands/wait-verify.d.ts +50 -0
- package/dist/cli/commands/wait-verify.d.ts.map +1 -0
- package/dist/cli/commands/wait-verify.js +124 -0
- package/dist/cli/commands/wait.d.ts +6 -105
- package/dist/cli/commands/wait.d.ts.map +1 -1
- package/dist/cli/commands/wait.js +207 -959
- package/dist/cli/config/duration-constants.d.ts +16 -13
- package/dist/cli/config/duration-constants.d.ts.map +1 -1
- package/dist/cli/config/duration-constants.js +21 -21
- package/dist/cli/docs/agent-operations.d.ts +2 -2
- package/dist/cli/docs/agent-operations.d.ts.map +1 -1
- package/dist/cli/docs/agent-operations.js +25 -2
- package/dist/cli/types/api-responses.d.ts +76 -4
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/cli/utils/api-client.d.ts +15 -1
- package/dist/cli/utils/api-client.d.ts.map +1 -1
- package/dist/cli/utils/api-client.js +7 -1
- package/dist/cli/utils/reply-ledger.d.ts +79 -0
- package/dist/cli/utils/reply-ledger.d.ts.map +1 -1
- package/dist/cli/utils/reply-ledger.js +141 -1
- package/dist/cli/utils/verify-runner.d.ts +24 -1
- package/dist/cli/utils/verify-runner.d.ts.map +1 -1
- package/dist/cli/utils/verify-runner.js +54 -1
- package/dist/config/auto-yes-duration.d.ts +56 -0
- package/dist/config/auto-yes-duration.d.ts.map +1 -0
- package/dist/config/auto-yes-duration.js +76 -0
- package/dist/lib/session/send-attempt-types.d.ts +23 -1
- package/dist/lib/session/send-attempt-types.d.ts.map +1 -1
- package/dist/lib/session/send-attempt-types.js +9 -1
- package/dist/server/locales/en/worktree.json +18 -3
- package/dist/server/locales/ja/worktree.json +18 -3
- package/dist/server/src/config/auto-yes-config.js +14 -19
- package/dist/server/src/config/auto-yes-duration.js +76 -0
- package/dist/server/src/lib/auto-yes-poller.js +49 -10
- package/dist/server/src/lib/auto-yes-state.js +9 -2
- package/dist/server/src/lib/cli-tools/antigravity.js +40 -7
- package/dist/server/src/lib/cli-tools/codex.js +60 -11
- package/dist/server/src/lib/cli-tools/command-code-plan-review.js +24 -2
- package/dist/server/src/lib/cli-tools/copilot.js +120 -30
- package/dist/server/src/lib/cli-tools/gemini.js +28 -9
- package/dist/server/src/lib/cli-tools/opencode.js +55 -13
- package/dist/server/src/lib/cli-tools/submit-composer-read.js +580 -0
- package/dist/server/src/lib/cli-tools/submit-verified-sender.js +374 -516
- package/dist/server/src/lib/db/migrations/index.js +2 -0
- package/dist/server/src/lib/db/migrations/pre-migration-backup.js +266 -0
- package/dist/server/src/lib/db/migrations/runner.js +37 -4
- package/dist/server/src/lib/db/migrations/v62-session-relays-bind.js +102 -0
- package/dist/server/src/lib/db/relay-bind-db.js +437 -0
- package/dist/server/src/lib/db/relay-db.js +59 -96
- package/dist/server/src/lib/detection/composer-text.js +215 -11
- package/dist/server/src/lib/detection/prompt-detect-multiple-choice-chrome.js +193 -0
- package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +8 -191
- package/dist/server/src/lib/detection/upstream-faults.js +56 -5
- package/dist/server/src/lib/hooks/sources/opencode/client.js +12 -6
- package/dist/server/src/lib/hooks/structured-decision-response.js +1 -1
- package/dist/server/src/lib/polling/auto-yes-manual-answer.js +4 -2
- package/dist/server/src/lib/polling/response-checker.js +15 -16
- package/dist/server/src/lib/prompt-answer-errors.js +288 -0
- package/dist/server/src/lib/prompt-answer-sender.js +264 -288
- package/dist/server/src/lib/push/failure-episode-state.js +4 -1
- package/dist/server/src/lib/realtime/terminal-broadcast.js +1 -4
- package/dist/server/src/lib/realtime-snippet.js +54 -0
- package/dist/server/src/lib/relay/relay-bind.js +294 -0
- package/dist/server/src/lib/relay/relay-boot.js +51 -0
- package/dist/server/src/lib/relay/relay-bound-reply.js +519 -0
- package/dist/server/src/lib/relay/relay-delivery.js +134 -220
- package/dist/server/src/lib/relay/relay-messages.js +39 -4
- package/dist/server/src/lib/relay/relay-overlap.js +92 -0
- package/dist/server/src/lib/relay/relay-system-line.js +3 -2
- package/dist/server/src/lib/relay/types.js +12 -1
- package/dist/server/src/lib/session/agent-session-lifecycle.js +18 -0
- package/dist/server/src/lib/session/claude-session.js +41 -6
- package/dist/server/src/lib/session/composer-clear.js +109 -4
- package/dist/server/src/lib/session/current-output-builder.js +23 -6
- package/dist/server/src/lib/session/instance-input-lock.js +664 -0
- package/dist/server/src/lib/session/send-attempt-state.js +19 -1
- package/dist/server/src/lib/session/send-attempt-types.js +9 -1
- package/dist/server/src/lib/session/send-user-message.js +82 -13
- package/dist/server/src/lib/session/waiting-episode-state-ops.js +152 -0
- package/dist/server/src/lib/session/waiting-episode-state-store.js +202 -0
- package/dist/server/src/lib/session/waiting-episode-state-types.js +6 -0
- package/dist/server/src/lib/session/waiting-episode-state.js +26 -339
- package/dist/server/src/lib/tmux/tmux.js +25 -0
- package/dist/server/src/lib/verification/gate-runner.js +11 -4
- package/docs/en/user-guide/webapp-guide.md +15 -10
- package/package.json +1 -1
- package/release-notes/0.49.0.json +45 -0
- package/release-notes/0.49.1.json +66 -0
- package/.next/server/chunks/1210.js +0 -1
- package/.next/server/chunks/1945.js +0 -14
- package/.next/server/chunks/1990.js +0 -103
- package/.next/server/chunks/4194.js +0 -67
- package/.next/server/chunks/4280.js +0 -1
- package/.next/server/chunks/5845.js +0 -1
- package/.next/server/chunks/6722.js +0 -1
- package/.next/server/chunks/720.js +0 -103
- package/.next/server/chunks/936.js +0 -1
- package/.next/server/chunks/9540.js +0 -1
- package/.next/static/chunks/2099-c3e0ab70a1b95dd3.js +0 -1
- package/.next/static/chunks/5371-a549a0d2c2044d41.js +0 -1
- package/.next/static/chunks/6288-09feba367cc2c65e.js +0 -1
- package/.next/static/chunks/8606-cf6bdbff44a764cf.js +0 -1
- package/.next/static/chunks/9079-406b84d3cc891a87.js +0 -1
- package/.next/static/chunks/app/api/agents/update/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/agents/versions/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/app/release-notes/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/app/update/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/app/update-check/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/auth/login/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/auth/status/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/capabilities/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/status/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/external-apps/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/fs/browse/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/fs/recent-paths/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/hooks/agent-event/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/hooks/claude-done/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/hooks/permission-request/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/metrics/vibe/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/ollama/models/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/push/escalation/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/push/subscriptions/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/push/vapid/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/relays/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/remote/pair/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/repositories/excluded/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/repositories/restore/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/repositories/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/repositories/scan/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/repositories/sync/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/repositories/validate-path/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/settings/default-agents/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/settings/default-surface-mode/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/sidebar/group-order/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/skills/[id]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/skills/installations/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/skills/operations/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/skills/reindex/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/skills/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/slash-commands/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/templates/[id]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/templates/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/env/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/layout-46b4cbf07520d9b6.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/proxy/[...path]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/sessions/page-fb241bed579c67aa.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/files/[...path]/page-9cf1ecc59e36a004.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/layout-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-cbc7749a33450cc5.js +0 -1
- package/.next/static/css/743f79ff19ab91e9.css +0 -1
- /package/.next/static/{PTlAswXLq8PAe2vUJ8dVP → fqfSDqQMweROeHUzOt_m1}/_buildManifest.js +0 -0
- /package/.next/static/{PTlAswXLq8PAe2vUJ8dVP → fqfSDqQMweROeHUzOt_m1}/_ssgManifest.js +0 -0
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* relays Command - the standing delegations this machine is holding (#2377)
|
|
4
4
|
*
|
|
5
5
|
* commandmate relays [--worktree <id>] [--instance <id|alias>] [--json]
|
|
6
|
+
* commandmate relays --id <relay-id> [--json] (Issue #3957: one relay, open or closed)
|
|
6
7
|
* commandmate relays cancel <relay-id>
|
|
7
8
|
*
|
|
8
9
|
* ## Why a command and not a flag on `ls`
|
|
@@ -26,11 +27,12 @@
|
|
|
26
27
|
* two commands from resolving `self` two different ways.
|
|
27
28
|
*/
|
|
28
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.ALLOW_RELAY_CHAIN_DESCRIPTION = exports.REPLY_TO_OPTION_DESCRIPTION = exports.RELAY_REFUSAL_CODES = void 0;
|
|
30
|
+
exports.LEGACY_RELAY_NOTICE = exports.ALLOW_RELAY_CHAIN_DESCRIPTION = exports.REPLY_TO_OPTION_DESCRIPTION = exports.RELAY_REFUSAL_CODES = void 0;
|
|
30
31
|
exports.resolveRelayEndpoint = resolveRelayEndpoint;
|
|
31
32
|
exports.resolveEndpointForWorktree = resolveEndpointForWorktree;
|
|
32
33
|
exports.registerRelay = registerRelay;
|
|
33
34
|
exports.cancelRelayQuietly = cancelRelayQuietly;
|
|
35
|
+
exports.printRelayUnconfirmedNotice = printRelayUnconfirmedNotice;
|
|
34
36
|
exports.createRelaysCommand = createRelaysCommand;
|
|
35
37
|
const commander_1 = require("commander");
|
|
36
38
|
const types_1 = require("../types");
|
|
@@ -133,6 +135,9 @@ async function resolveEndpointForWorktree(client, worktreeId, selector, requeste
|
|
|
133
135
|
}
|
|
134
136
|
return { worktreeId, instanceId };
|
|
135
137
|
}
|
|
138
|
+
/** The one line an older server's relay gets on stderr (Issue #3957). */
|
|
139
|
+
exports.LEGACY_RELAY_NOTICE = 'Note: this server does not tie a relay to its send (legacy handling); '
|
|
140
|
+
+ 'the reply is taken from the first turn that ends after the relay was opened.';
|
|
136
141
|
/**
|
|
137
142
|
* Open a relay, printing the server's own refusal and exiting 2 on one.
|
|
138
143
|
*
|
|
@@ -140,7 +145,11 @@ async function resolveEndpointForWorktree(client, worktreeId, selector, requeste
|
|
|
140
145
|
* change (drop the flag, cancel the other relay, stop forwarding), which is what
|
|
141
146
|
* `CONFIG_ERROR` means everywhere else in this CLI.
|
|
142
147
|
*
|
|
143
|
-
*
|
|
148
|
+
* Issue #3957: asks for `bind: true` and believes it only when the answer says
|
|
149
|
+
* `bindMode: 'bound'`. A server that does not know the flag answers without
|
|
150
|
+
* the key; the relay is then the legacy kind and its id is not sent along.
|
|
151
|
+
*
|
|
152
|
+
* @returns The relay id, and whether it is bound
|
|
144
153
|
*/
|
|
145
154
|
async function registerRelay(client, input) {
|
|
146
155
|
try {
|
|
@@ -148,8 +157,12 @@ async function registerRelay(client, input) {
|
|
|
148
157
|
from: input.from,
|
|
149
158
|
to: input.to,
|
|
150
159
|
allowRelayChain: input.allowRelayChain === true,
|
|
160
|
+
bind: true,
|
|
151
161
|
});
|
|
152
|
-
|
|
162
|
+
const bound = (response.bindMode ?? response.relay.bindMode) === 'bound';
|
|
163
|
+
if (!bound)
|
|
164
|
+
console.error(exports.LEGACY_RELAY_NOTICE);
|
|
165
|
+
return { id: response.relay.id, bound };
|
|
153
166
|
}
|
|
154
167
|
catch (error) {
|
|
155
168
|
if (error instanceof api_client_1.ApiError && error.apiCode && exports.RELAY_REFUSAL_CODES.has(error.apiCode)) {
|
|
@@ -174,17 +187,51 @@ async function cancelRelayQuietly(client, relayId) {
|
|
|
174
187
|
console.error(`Warning: could not withdraw relay ${relayId}; it will expire on its own.`);
|
|
175
188
|
}
|
|
176
189
|
}
|
|
190
|
+
/**
|
|
191
|
+
* Print where a relay whose send could not be confirmed stands (Issue #3957).
|
|
192
|
+
*
|
|
193
|
+
* The relay is left open — withdrawing it would drop a reply that may well be
|
|
194
|
+
* on its way — and the message is not resent, which could make it arrive twice.
|
|
195
|
+
*/
|
|
196
|
+
function printRelayUnconfirmedNotice(relayId, worktreeId) {
|
|
197
|
+
// Issue #3992: a failed send names the pane to look at before any resend, in
|
|
198
|
+
// the same line rather than a second notice.
|
|
199
|
+
const resend = worktreeId === undefined
|
|
200
|
+
? ''
|
|
201
|
+
: ` Do not resend before checking the pane (\`commandmate capture ${worktreeId} --pane\`), or it may arrive twice.`;
|
|
202
|
+
console.error(`Warning: whether the message reached the session is not known; relay ${relayId} was left open `
|
|
203
|
+
+ 'and the message was not resent. '
|
|
204
|
+
+ `Check it with \`commandmate relays --id ${relayId}\`.${resend}`);
|
|
205
|
+
}
|
|
177
206
|
function endpointLabel(endpoint) {
|
|
178
207
|
return `${endpoint.worktreeId}/${endpoint.instanceId}`;
|
|
179
208
|
}
|
|
180
209
|
function printRelayLine(relay) {
|
|
181
|
-
|
|
210
|
+
const fields = [
|
|
182
211
|
relay.id,
|
|
183
212
|
relay.state,
|
|
184
213
|
`${endpointLabel(relay.from)} <- ${endpointLabel(relay.to)}`,
|
|
185
214
|
`hops=${relay.hops}`,
|
|
186
215
|
`expires=${new Date(relay.expiresAt).toISOString()}`,
|
|
187
|
-
]
|
|
216
|
+
];
|
|
217
|
+
// Issue #3957: a bound relay's send state, overlap and hold reason, when it
|
|
218
|
+
// has them. Absent on a legacy relay and on an older server.
|
|
219
|
+
if (relay.sendState)
|
|
220
|
+
fields.push(`send=${relay.sendState}`);
|
|
221
|
+
if (relay.overlap)
|
|
222
|
+
fields.push(`overlap=${relay.overlap}`);
|
|
223
|
+
if (relay.holdReason)
|
|
224
|
+
fields.push(`hold=${relay.holdReason}`);
|
|
225
|
+
console.log(fields.join('\t'));
|
|
226
|
+
}
|
|
227
|
+
/** `relays --id <id>`: one relay, whatever its state (Issue #3957). */
|
|
228
|
+
async function showOneRelay(client, relayId, json) {
|
|
229
|
+
const response = await client.get(`/api/relays/${relayId}`);
|
|
230
|
+
if (json) {
|
|
231
|
+
console.log(JSON.stringify(response, null, 2));
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
printRelayLine(response.relay);
|
|
188
235
|
}
|
|
189
236
|
function createRelaysCommand() {
|
|
190
237
|
const cmd = new commander_1.Command('relays');
|
|
@@ -192,18 +239,35 @@ function createRelaysCommand() {
|
|
|
192
239
|
.description('List the open relays this session is waiting on and owes')
|
|
193
240
|
.option('--worktree <id>', 'Worktree to list (defaults to the session running this command)')
|
|
194
241
|
.option('--instance <id>', 'Agent instance inside --worktree (id or roster alias)')
|
|
242
|
+
.option('--id <relay-id>', 'Show one relay, open or closed (its send state, overlap and hold reason)')
|
|
195
243
|
.option('--json', 'JSON output')
|
|
196
244
|
.option('--token <token>', command_helpers_1.TOKEN_WARNING)
|
|
197
245
|
.addHelpText('after', `
|
|
198
246
|
Columns: <relay-id> <state> <requester> <- <worker> hops=<n> expires=<iso>
|
|
247
|
+
[send=<state>] [overlap=<none|later|earlier|both|unknown>] [hold=<reason>]
|
|
199
248
|
|
|
200
249
|
States: pending (the worker has not finished), prompt (it stopped on a
|
|
201
250
|
confirmation and the requester was told), delivered / expired / cancelled.
|
|
202
251
|
|
|
252
|
+
send= / overlap= / hold= appear on a relay tied to its send (Issue #3957):
|
|
253
|
+
send= is awaiting / input_started / sent / failed / unknown; hold= says why a
|
|
254
|
+
relay is not being answered (send_unknown, dispatch_unknown, generation_changed,
|
|
255
|
+
server_restarted, ...); overlap= says the reply may share a turn with another
|
|
256
|
+
request (unknown is not "none"). \`--id <relay-id>\` shows one relay even after
|
|
257
|
+
it closed.
|
|
258
|
+
|
|
203
259
|
Withdraw one with \`commandmate relays cancel <relay-id>\`.
|
|
204
260
|
`)
|
|
205
261
|
.action(async (options) => {
|
|
206
262
|
try {
|
|
263
|
+
if (options.id !== undefined) {
|
|
264
|
+
if (!RELAY_ID_PATTERN.test(options.id)) {
|
|
265
|
+
console.error('Error: Invalid relay ID format.');
|
|
266
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
267
|
+
}
|
|
268
|
+
await showOneRelay(new api_client_1.ApiClient({ token: options.token }), options.id, options.json === true);
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
207
271
|
if (options.worktree && !(0, api_client_1.isValidWorktreeId)(options.worktree)) {
|
|
208
272
|
console.error('Error: Invalid worktree ID format.');
|
|
209
273
|
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
@@ -5,5 +5,17 @@
|
|
|
5
5
|
* Uses prompt-response API (not respond API) [DR2-06]
|
|
6
6
|
*/
|
|
7
7
|
import { Command } from 'commander';
|
|
8
|
+
/**
|
|
9
|
+
* Issue #3975: the answer waited for another input and was then not typed —
|
|
10
|
+
* nothing reached the pane. Restated from `src/lib/prompt-answer-errors.ts`
|
|
11
|
+
* (`ANSWER_NOT_DELIVERED_REASON`); a unit test keeps the two equal.
|
|
12
|
+
*/
|
|
13
|
+
export declare const ANSWER_NOT_DELIVERED = "answer_not_delivered";
|
|
14
|
+
/**
|
|
15
|
+
* Issue #3975: the answer was stopped part-way — some of its keys may be on
|
|
16
|
+
* the pane. `/prompt-response` answers it as a 500 whose `error` carries this
|
|
17
|
+
* code. Restated from `src/lib/prompt-answer-errors.ts` (`ANSWER_INPUT_LOST_REASON`).
|
|
18
|
+
*/
|
|
19
|
+
export declare const ANSWER_INPUT_LOST = "answer_input_lost";
|
|
8
20
|
export declare function createRespondCommand(): Command;
|
|
9
21
|
//# sourceMappingURL=respond.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"respond.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/respond.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"respond.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/respond.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgKpC;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAE3D;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AAoUrD,wBAAgB,oBAAoB,IAAI,OAAO,CA2I9C"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* Uses prompt-response API (not respond API) [DR2-06]
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.ANSWER_INPUT_LOST = exports.ANSWER_NOT_DELIVERED = void 0;
|
|
9
10
|
exports.createRespondCommand = createRespondCommand;
|
|
10
11
|
const commander_1 = require("commander");
|
|
11
12
|
const types_1 = require("../types");
|
|
@@ -125,6 +126,48 @@ async function answerSolePendingDecision(client, worktreeId, body) {
|
|
|
125
126
|
}
|
|
126
127
|
/** Reason `/prompt-response` gives when no dialog is on screen any more. */
|
|
127
128
|
const PROMPT_NO_LONGER_ACTIVE = 'prompt_no_longer_active';
|
|
129
|
+
/**
|
|
130
|
+
* Issue #3975: the answer waited for another input and was then not typed —
|
|
131
|
+
* nothing reached the pane. Restated from `src/lib/prompt-answer-errors.ts`
|
|
132
|
+
* (`ANSWER_NOT_DELIVERED_REASON`); a unit test keeps the two equal.
|
|
133
|
+
*/
|
|
134
|
+
exports.ANSWER_NOT_DELIVERED = 'answer_not_delivered';
|
|
135
|
+
/**
|
|
136
|
+
* Issue #3975: the answer was stopped part-way — some of its keys may be on
|
|
137
|
+
* the pane. `/prompt-response` answers it as a 500 whose `error` carries this
|
|
138
|
+
* code. Restated from `src/lib/prompt-answer-errors.ts` (`ANSWER_INPUT_LOST_REASON`).
|
|
139
|
+
*/
|
|
140
|
+
exports.ANSWER_INPUT_LOST = 'answer_input_lost';
|
|
141
|
+
/** Whether a failed `/prompt-response` request is the answer stopped part-way (Issue #3975). */
|
|
142
|
+
function isAnswerInputLost(error) {
|
|
143
|
+
if (!(error instanceof api_client_1.ApiError) || (error.statusCode ?? 0) < 500)
|
|
144
|
+
return false;
|
|
145
|
+
const payload = error.payload;
|
|
146
|
+
if (payload?.reason === exports.ANSWER_INPUT_LOST)
|
|
147
|
+
return true;
|
|
148
|
+
return typeof payload?.error === 'string' && payload.error.includes(exports.ANSWER_INPUT_LOST);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* The `capture` that reads the pane the answer was typed at (Issue #3975
|
|
152
|
+
* review P2-2): the target the answer resolved to, never the worktree default,
|
|
153
|
+
* and `--pane`, since the stored reply is not what was partly typed.
|
|
154
|
+
*/
|
|
155
|
+
function answeredPaneCaptureCommand(worktreeId, target) {
|
|
156
|
+
const selector = target.instanceId
|
|
157
|
+
? ` --instance ${target.instanceId}`
|
|
158
|
+
: target.agent
|
|
159
|
+
? ` --agent ${target.agent}`
|
|
160
|
+
: '';
|
|
161
|
+
return `commandmate capture ${worktreeId}${selector} --pane --tail 40`;
|
|
162
|
+
}
|
|
163
|
+
/** Reports an answer stopped part-way (Issue #3975) and sets the exit code. */
|
|
164
|
+
function reportAnswerInputLost(worktreeId, target) {
|
|
165
|
+
console.error(`Warning: The answer may have been only partly typed (reason: ${exports.ANSWER_INPUT_LOST}): the session was ` +
|
|
166
|
+
'replaced part-way, so some of its keys may have reached the agent and the rest did not. ' +
|
|
167
|
+
`Check the screen with \`${answeredPaneCaptureCommand(worktreeId, target)}\` before answering again.`);
|
|
168
|
+
// The exit code `decision_not_delivered` uses (Issue #3975: no new code).
|
|
169
|
+
process.exit(types_1.ExitCode.UNEXPECTED_ERROR);
|
|
170
|
+
}
|
|
128
171
|
/**
|
|
129
172
|
* Issue #3125: what `--plan-review` takes. Restated rather than imported from
|
|
130
173
|
* `src/lib` (the CLI build does not reach it); the server validates the same set.
|
|
@@ -244,6 +287,15 @@ function reportFailedResponse(result, worktreeId, answer, useDefault, options) {
|
|
|
244
287
|
'The dialog is still open; answer it in the terminal.');
|
|
245
288
|
process.exit(types_1.ExitCode.UNEXPECTED_ERROR);
|
|
246
289
|
}
|
|
290
|
+
// Issue #3975: the answer waited for another input on the session and was
|
|
291
|
+
// then not typed. Nothing reached the pane, so — unlike the "may not have
|
|
292
|
+
// been applied" reasons below — trying again is safe.
|
|
293
|
+
if (reason === exports.ANSWER_NOT_DELIVERED) {
|
|
294
|
+
console.error(`Error: Answer was not sent. Reason: ${reason}${result.message ? ` (${result.message})` : ''}. ` +
|
|
295
|
+
'Nothing was typed, so it is safe to run respond again.');
|
|
296
|
+
process.exit(types_1.ExitCode.UNEXPECTED_ERROR);
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
247
299
|
if (refusedBeforeSending) {
|
|
248
300
|
console.error(`Error: Answer was not sent. Reason: ${reason}${result.message ? ` (${result.message})` : ''}`);
|
|
249
301
|
// Issue #2583: the operator who lands here typed WORDS at a dialog
|
|
@@ -445,7 +497,17 @@ Strict respond (--expect-screen <kind> --observation <token> <label>):
|
|
|
445
497
|
result = outcome;
|
|
446
498
|
}
|
|
447
499
|
if (result === null) {
|
|
448
|
-
|
|
500
|
+
try {
|
|
501
|
+
result = await client.post(`/api/worktrees/${worktreeId}/prompt-response`, body);
|
|
502
|
+
}
|
|
503
|
+
catch (error) {
|
|
504
|
+
// Issue #3975: stopped part-way is not "the server failed" — some
|
|
505
|
+
// keys may be on the pane, and the operator has to look first.
|
|
506
|
+
if (!isAnswerInputLost(error))
|
|
507
|
+
throw error;
|
|
508
|
+
reportAnswerInputLost(worktreeId, { agent, instanceId });
|
|
509
|
+
return;
|
|
510
|
+
}
|
|
449
511
|
}
|
|
450
512
|
if (result && !result.success) {
|
|
451
513
|
reportFailedResponse(result, worktreeId, answer, useDefault, options);
|
|
@@ -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;AA0XpC,wBAAgB,iBAAiB,IAAI,OAAO,CAiK3C"}
|
|
@@ -19,8 +19,6 @@ const command_target_1 = require("./command-target");
|
|
|
19
19
|
const auto_yes_1 = require("./auto-yes");
|
|
20
20
|
const relays_1 = require("./relays");
|
|
21
21
|
const message_dispatch_1 = require("./message-dispatch");
|
|
22
|
-
/** Auto-yes duration used when --duration is omitted. */
|
|
23
|
-
const DEFAULT_AUTO_YES_DURATION = '1h';
|
|
24
22
|
/**
|
|
25
23
|
* The message length `send` is verified to deliver whole (Issue #2464): the
|
|
26
24
|
* largest body sent through the paste path to claude, codex, command-code and
|
|
@@ -49,9 +47,9 @@ function promptWaitingFallback(worktreeId) {
|
|
|
49
47
|
* behind for a message that was never sent.
|
|
50
48
|
*/
|
|
51
49
|
function resolveAutoYesDurationMs(duration) {
|
|
52
|
-
const durationMs = (0, duration_constants_1.parseDurationToMs)(duration ??
|
|
50
|
+
const durationMs = (0, duration_constants_1.parseDurationToMs)(duration ?? duration_constants_1.DEFAULT_DURATION_FLAG);
|
|
53
51
|
if (durationMs === null) {
|
|
54
|
-
console.error(`Error: Invalid duration. Must be
|
|
52
|
+
console.error(`Error: Invalid duration. Must be ${duration_constants_1.AUTO_YES_DURATION_FLAG_RANGE} (e.g. 5h).`);
|
|
55
53
|
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
56
54
|
}
|
|
57
55
|
return durationMs;
|
|
@@ -244,7 +242,7 @@ function validateSendArgs(worktreeId, message, options) {
|
|
|
244
242
|
// Issue #1608: every option that can be judged from its own value is
|
|
245
243
|
// judged here, before the first side effect. --duration used to be the
|
|
246
244
|
// exception: enableAutoYes() validated it, and that runs after
|
|
247
|
-
// --contract has already created the task row, so `--duration
|
|
245
|
+
// --contract has already created the task row, so `--duration 25h` left
|
|
248
246
|
// a `pending` task for a message that was never sent. Validated
|
|
249
247
|
// unconditionally, like --stop-pattern and --model above: a value the
|
|
250
248
|
// CLI cannot honour is an error whether or not --auto-yes accompanies it.
|
|
@@ -317,7 +315,7 @@ function createSendCommand() {
|
|
|
317
315
|
+ ' flag: it applies only when this send starts the session, and a running session answers 400')
|
|
318
316
|
.option('--auto-yes', 'Enable auto-yes before sending (session-wide, no policy guard; for unattended runs prefer --contract with an autoYes policy)')
|
|
319
317
|
.option('--auto-yes-answer-mode <mode>', `With --auto-yes: ${auto_yes_1.ANSWER_MODE_OPTION_DESCRIPTION}`)
|
|
320
|
-
.option('--duration <duration>', `Auto-yes duration (${duration_constants_1.
|
|
318
|
+
.option('--duration <duration>', `Auto-yes duration (${duration_constants_1.AUTO_YES_DURATION_FLAG_RANGE}, e.g. 1h, 3h, 8h; default ${duration_constants_1.DEFAULT_DURATION_FLAG})`)
|
|
321
319
|
.option('--stop-pattern <pattern>', 'Auto-yes stop pattern (regex). Matched against terminal output; cannot block commands (use the task contract\'s autoYes.denyPatterns for that)')
|
|
322
320
|
.option('--contract <path>', 'Execution contract path relative to the worktree root (e.g. .commandmate/tasks/my-task.yaml). Records a task and sends the contract preamble plus its goal.')
|
|
323
321
|
.option('--ignore-structured-prompt', 'Send even if only the agent\'s hooks report an open dialog (Issue #1737). Use when the pane looks idle but sends are refused; a prompt visible in the terminal is still refused.')
|
|
@@ -407,9 +405,9 @@ worktree and send a short message that tells the agent to read that file.
|
|
|
407
405
|
// between the send and the ledger row — the completion trigger reads the
|
|
408
406
|
// ledger, and a row that does not exist yet is a reply nobody collects.
|
|
409
407
|
// A refusal exits 2 here, having sent nothing.
|
|
410
|
-
let
|
|
408
|
+
let relay;
|
|
411
409
|
if (options.replyTo) {
|
|
412
|
-
|
|
410
|
+
relay = await (0, message_dispatch_1.registerRelayForMessage)(client, {
|
|
413
411
|
worktreeId,
|
|
414
412
|
replyTo: options.replyTo,
|
|
415
413
|
instance: options.instance,
|
|
@@ -420,11 +418,13 @@ worktree and send a short message that tells the agent to read that file.
|
|
|
420
418
|
// (it prints the task id there), and two commands writing two ids to
|
|
421
419
|
// one stream is how a `$(…)` capture ends up with both. `ask --async`
|
|
422
420
|
// is the form that hands the relay id back on stdout.
|
|
423
|
-
console.error(`Relay registered: ${
|
|
421
|
+
console.error(`Relay registered: ${relay.id}`);
|
|
424
422
|
}
|
|
425
423
|
const sendBody = buildSendBody(content, agent, instanceId, options);
|
|
424
|
+
// Issue #3957: a bound relay's id rides on the send, which reserves it
|
|
425
|
+
// and records where the body went in.
|
|
426
426
|
await (0, message_dispatch_1.postMessage)(client, worktreeId, sendBody, {
|
|
427
|
-
|
|
427
|
+
relay,
|
|
428
428
|
onFailure: failTask,
|
|
429
429
|
promptWaitingFallback: promptWaitingFallback(worktreeId),
|
|
430
430
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBpC,OAAO,KAAK,EAMV,uBAAuB,EAExB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBpC,OAAO,KAAK,EAMV,uBAAuB,EAExB,MAAM,wBAAwB,CAAC;AAuChC;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,uBAAuB,GAAG,IAAI,CA8BrG;AAkFD,wBAAgB,mBAAmB,IAAI,OAAO,CAsE7C"}
|
|
@@ -156,13 +156,20 @@ function inheritedFlag(own, command, key) {
|
|
|
156
156
|
* The run id leads the line even though it is not in the requested field list:
|
|
157
157
|
* without it there is no way to reach `verify show`, which is the only reason
|
|
158
158
|
* to read this listing in the first place.
|
|
159
|
+
*
|
|
160
|
+
* Gates that carry `timing` (#3884) are named after the verdict with their
|
|
161
|
+
* waits and execution apart (#3909), so "this run took 40 minutes" can be read
|
|
162
|
+
* as a queue, a lock or a slow suite without opening every run. A run none of
|
|
163
|
+
* whose gates waited keeps the line it always had.
|
|
159
164
|
*/
|
|
160
165
|
function formatHistoryLine(run) {
|
|
161
166
|
const failed = run.gates
|
|
162
167
|
.filter((gate) => FAILED_GATE_STATUSES.has(gate.status))
|
|
163
168
|
.map((gate) => gate.gateId);
|
|
164
169
|
const suffix = failed.length > 0 ? ` failed: ${failed.join(',')}` : '';
|
|
165
|
-
|
|
170
|
+
const timed = run.gates.flatMap((gate) => gate.timing ? [`${gate.gateId}(${(0, verify_runner_1.formatGateTiming)(gate.timing, ' ')})`] : []);
|
|
171
|
+
const timing = timed.length > 0 ? ` timing: ${timed.join(' ')}` : '';
|
|
172
|
+
return `#${run.id} ${run.startedAt} ${run.worktreeId} ${run.trigger} ${run.status}${suffix}${timing}`;
|
|
166
173
|
}
|
|
167
174
|
function createVerifyCommand() {
|
|
168
175
|
const cmd = new commander_1.Command('verify');
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* wait Command - re-reading the pane after a hook_stop (Issue #3956)
|
|
3
|
+
* Issue #3964: split out of wait.ts; wait.ts re-exports what it exported.
|
|
4
|
+
*/
|
|
5
|
+
import type { CurrentOutputResponse } from '../types/api-responses';
|
|
6
|
+
import type { PollContext, PollState } from './wait-poll-state';
|
|
7
|
+
/**
|
|
8
|
+
* Interval between the re-reads of the pane after a `hook_stop`, under
|
|
9
|
+
* `--fail-on-upstream-fault` (Issue #3956). See {@link settleAfterHookStop}.
|
|
10
|
+
*/
|
|
11
|
+
export declare const HOOK_STOP_SETTLE_INTERVAL_MS = 500;
|
|
12
|
+
/**
|
|
13
|
+
* Longest `wait` re-reads the pane after a `hook_stop` before judging the last
|
|
14
|
+
* frame it read (Issue #3956). See {@link settleAfterHookStop}.
|
|
15
|
+
*/
|
|
16
|
+
export declare const HOOK_STOP_SETTLE_MAX_MS = 5000;
|
|
17
|
+
/**
|
|
18
|
+
* The path {@link settleAfterHookStop} re-reads the pane on (Issue #3956):
|
|
19
|
+
* `?fresh=1` past the server's capture cache, whose 5 s TTL would otherwise
|
|
20
|
+
* answer two reads 500 ms apart with the same capture and read a pane still
|
|
21
|
+
* drawing as settled. A server older than the parameter ignores it and answers
|
|
22
|
+
* as before, from the cache.
|
|
23
|
+
*/
|
|
24
|
+
export declare function settleCurrentOutputPath(worktreeId: string, instanceId?: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* The frame a `hook_stop` completion is judged on, once the pane has settled
|
|
27
|
+
* (Issue #3956).
|
|
28
|
+
*
|
|
29
|
+
* The agent's `Stop` can land before its reply is drawn. Measured 2026-10-27 on
|
|
30
|
+
* codex-cli 0.164.0: `ask` returned on `basis=hook_stop` with the pane ending at
|
|
31
|
+
* row 441–445 of 480, and the last rows were drawn ~3 s later. An upstream fault
|
|
32
|
+
* printed at the end of the turn is in those rows, so the frame of the `Stop`
|
|
33
|
+
* poll can carry no `upstreamFault` while the turn did fail.
|
|
34
|
+
*
|
|
35
|
+
* So the pane is read again every {@link HOOK_STOP_SETTLE_INTERVAL_MS} until two
|
|
36
|
+
* reads in a row carry the same frame, and that frame is the one judged — by
|
|
37
|
+
* every stage of a poll, not by the fault alone: {@link pollWorktree} judges it
|
|
38
|
+
* as the next poll, so a prompt or a new turn drawn meanwhile is read as one.
|
|
39
|
+
* The bound is {@link HOOK_STOP_SETTLE_MAX_MS}: no re-read starts after it, and
|
|
40
|
+
* a pane still drawing then is judged on the last frame read rather than held.
|
|
41
|
+
* The re-reads ask for a fresh capture ({@link settleCurrentOutputPath}); the
|
|
42
|
+
* poll that saw the `Stop` does not.
|
|
43
|
+
*
|
|
44
|
+
* `--timeout` / `--stall-timeout` bound it too: no interval is slept that the
|
|
45
|
+
* next re-read could not finish within, and each re-read is aborted at the
|
|
46
|
+
* earliest of one interval, the bound and those deadlines — so the verdict
|
|
47
|
+
* comes at most {@link HOOK_STOP_SETTLE_MAX_MS} after the `Stop` poll. The bound
|
|
48
|
+
* is `settleDeadline`, set by {@link readyStage} when it reads the `Stop` poll and
|
|
49
|
+
* shared with the ledger read of {@link faultFrameHasStop}, so time spent there
|
|
50
|
+
* is not given again here. A re-read that is aborted or
|
|
51
|
+
* fails ends the settle on the frame before it (an `ApiError` that is not an
|
|
52
|
+
* abort still ends the wait, as on any poll). Frames that change count as
|
|
53
|
+
* activity for `--stall-timeout`, as on any poll.
|
|
54
|
+
*/
|
|
55
|
+
export declare function settleAfterHookStop<T extends CurrentOutputResponse>(poll: PollContext, state: PollState, data: T, settleDeadline: number): Promise<T>;
|
|
56
|
+
/**
|
|
57
|
+
* Whether the agent has reported the end of the turn on a frame that carries an
|
|
58
|
+
* upstream fault, so that frame is judged once settled (Issue #3956).
|
|
59
|
+
*
|
|
60
|
+
* The same two records {@link readyCompletionBasis} reads as `hook_stop`: a
|
|
61
|
+
* `Stop` at or after the adopted turn, or — with no turn adopted — a `Stop`
|
|
62
|
+
* after the newest prompt in the chat ledger. Neither is #1839's case (back at
|
|
63
|
+
* the composer with no `Stop`), whose fault is reported on the spot as before.
|
|
64
|
+
*/
|
|
65
|
+
export declare function faultFrameHasStop(poll: PollContext, state: PollState, data: CurrentOutputResponse, settleDeadline: number): Promise<boolean>;
|
|
66
|
+
//# sourceMappingURL=wait-hook-stop-settle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wait-hook-stop-settle.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/wait-hook-stop-settle.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAGpE,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAUhE;;;GAGG;AACH,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAEvF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,SAAS,qBAAqB,EACvE,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,CAAC,EACP,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,CAAC,CAAC,CAyDZ;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,qBAAqB,EAC3B,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,OAAO,CAAC,CAuBlB"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* wait Command - re-reading the pane after a hook_stop (Issue #3956)
|
|
4
|
+
* Issue #3964: split out of wait.ts; wait.ts re-exports what it exported.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.HOOK_STOP_SETTLE_MAX_MS = exports.HOOK_STOP_SETTLE_INTERVAL_MS = void 0;
|
|
8
|
+
exports.settleCurrentOutputPath = settleCurrentOutputPath;
|
|
9
|
+
exports.settleAfterHookStop = settleAfterHookStop;
|
|
10
|
+
exports.faultFrameHasStop = faultFrameHasStop;
|
|
11
|
+
const api_client_1 = require("../utils/api-client");
|
|
12
|
+
const prompt_1 = require("./prompt");
|
|
13
|
+
const wait_timing_1 = require("./wait-timing");
|
|
14
|
+
const wait_turn_boundary_1 = require("./wait-turn-boundary");
|
|
15
|
+
/**
|
|
16
|
+
* Interval between the re-reads of the pane after a `hook_stop`, under
|
|
17
|
+
* `--fail-on-upstream-fault` (Issue #3956). See {@link settleAfterHookStop}.
|
|
18
|
+
*/
|
|
19
|
+
exports.HOOK_STOP_SETTLE_INTERVAL_MS = 500;
|
|
20
|
+
/**
|
|
21
|
+
* Longest `wait` re-reads the pane after a `hook_stop` before judging the last
|
|
22
|
+
* frame it read (Issue #3956). See {@link settleAfterHookStop}.
|
|
23
|
+
*/
|
|
24
|
+
exports.HOOK_STOP_SETTLE_MAX_MS = 5000;
|
|
25
|
+
/**
|
|
26
|
+
* The path {@link settleAfterHookStop} re-reads the pane on (Issue #3956):
|
|
27
|
+
* `?fresh=1` past the server's capture cache, whose 5 s TTL would otherwise
|
|
28
|
+
* answer two reads 500 ms apart with the same capture and read a pane still
|
|
29
|
+
* drawing as settled. A server older than the parameter ignores it and answers
|
|
30
|
+
* as before, from the cache.
|
|
31
|
+
*/
|
|
32
|
+
function settleCurrentOutputPath(worktreeId, instanceId) {
|
|
33
|
+
return `${(0, prompt_1.observedCurrentOutputPath)(worktreeId, instanceId)}&fresh=1`;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* The frame a `hook_stop` completion is judged on, once the pane has settled
|
|
37
|
+
* (Issue #3956).
|
|
38
|
+
*
|
|
39
|
+
* The agent's `Stop` can land before its reply is drawn. Measured 2026-10-27 on
|
|
40
|
+
* codex-cli 0.164.0: `ask` returned on `basis=hook_stop` with the pane ending at
|
|
41
|
+
* row 441–445 of 480, and the last rows were drawn ~3 s later. An upstream fault
|
|
42
|
+
* printed at the end of the turn is in those rows, so the frame of the `Stop`
|
|
43
|
+
* poll can carry no `upstreamFault` while the turn did fail.
|
|
44
|
+
*
|
|
45
|
+
* So the pane is read again every {@link HOOK_STOP_SETTLE_INTERVAL_MS} until two
|
|
46
|
+
* reads in a row carry the same frame, and that frame is the one judged — by
|
|
47
|
+
* every stage of a poll, not by the fault alone: {@link pollWorktree} judges it
|
|
48
|
+
* as the next poll, so a prompt or a new turn drawn meanwhile is read as one.
|
|
49
|
+
* The bound is {@link HOOK_STOP_SETTLE_MAX_MS}: no re-read starts after it, and
|
|
50
|
+
* a pane still drawing then is judged on the last frame read rather than held.
|
|
51
|
+
* The re-reads ask for a fresh capture ({@link settleCurrentOutputPath}); the
|
|
52
|
+
* poll that saw the `Stop` does not.
|
|
53
|
+
*
|
|
54
|
+
* `--timeout` / `--stall-timeout` bound it too: no interval is slept that the
|
|
55
|
+
* next re-read could not finish within, and each re-read is aborted at the
|
|
56
|
+
* earliest of one interval, the bound and those deadlines — so the verdict
|
|
57
|
+
* comes at most {@link HOOK_STOP_SETTLE_MAX_MS} after the `Stop` poll. The bound
|
|
58
|
+
* is `settleDeadline`, set by {@link readyStage} when it reads the `Stop` poll and
|
|
59
|
+
* shared with the ledger read of {@link faultFrameHasStop}, so time spent there
|
|
60
|
+
* is not given again here. A re-read that is aborted or
|
|
61
|
+
* fails ends the settle on the frame before it (an `ApiError` that is not an
|
|
62
|
+
* abort still ends the wait, as on any poll). Frames that change count as
|
|
63
|
+
* activity for `--stall-timeout`, as on any poll.
|
|
64
|
+
*/
|
|
65
|
+
async function settleAfterHookStop(poll, state, data, settleDeadline) {
|
|
66
|
+
const { client, worktreeId, options, startTime } = poll;
|
|
67
|
+
const frameOf = (d) => d.fullOutput ?? d.content;
|
|
68
|
+
let latest = data;
|
|
69
|
+
while (Date.now() + exports.HOOK_STOP_SETTLE_INTERVAL_MS <= settleDeadline) {
|
|
70
|
+
if ((0, wait_timing_1.msBeforeDeadlines)(options, startTime, state.lastActivityTime, Date.now()) <= exports.HOOK_STOP_SETTLE_INTERVAL_MS) {
|
|
71
|
+
console.error(`Note: re-reading ${worktreeId} after its stop would pass --timeout/--stall-timeout; ` +
|
|
72
|
+
'judging the last frame read.');
|
|
73
|
+
return latest;
|
|
74
|
+
}
|
|
75
|
+
await (0, wait_timing_1.sleep)(exports.HOOK_STOP_SETTLE_INTERVAL_MS);
|
|
76
|
+
const readBudgetMs = Math.min(exports.HOOK_STOP_SETTLE_INTERVAL_MS, settleDeadline - Date.now(), (0, wait_timing_1.msBeforeDeadlines)(options, startTime, state.lastActivityTime, Date.now()));
|
|
77
|
+
// Past the bound already (a late timer): no read is started.
|
|
78
|
+
if (readBudgetMs < 0)
|
|
79
|
+
break;
|
|
80
|
+
const controller = new AbortController();
|
|
81
|
+
const abortTimer = setTimeout(() => controller.abort(), readBudgetMs);
|
|
82
|
+
let next;
|
|
83
|
+
try {
|
|
84
|
+
next = await client.get(settleCurrentOutputPath(worktreeId, options.instance), {
|
|
85
|
+
signal: controller.signal,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
if (controller.signal.aborted) {
|
|
90
|
+
console.error(`Note: ${worktreeId} did not answer a re-read after its stop within ${readBudgetMs}ms; ` +
|
|
91
|
+
'judging the last frame read.');
|
|
92
|
+
return latest;
|
|
93
|
+
}
|
|
94
|
+
if (error instanceof api_client_1.ApiError)
|
|
95
|
+
throw error;
|
|
96
|
+
console.error(`Note: could not re-read ${worktreeId} after its stop ` +
|
|
97
|
+
`(${error instanceof Error ? error.message : String(error)}); judging the last frame read.`);
|
|
98
|
+
return latest;
|
|
99
|
+
}
|
|
100
|
+
finally {
|
|
101
|
+
clearTimeout(abortTimer);
|
|
102
|
+
}
|
|
103
|
+
if (next.content !== state.lastContent) {
|
|
104
|
+
state.lastContent = next.content;
|
|
105
|
+
state.lastActivityTime = Date.now();
|
|
106
|
+
}
|
|
107
|
+
const settled = frameOf(next) === frameOf(latest);
|
|
108
|
+
latest = next;
|
|
109
|
+
if (settled)
|
|
110
|
+
return latest;
|
|
111
|
+
}
|
|
112
|
+
console.error(`Note: ${worktreeId} was still drawing ${exports.HOOK_STOP_SETTLE_MAX_MS / 1000}s after its stop; ` +
|
|
113
|
+
'judging the last frame read.');
|
|
114
|
+
return latest;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Whether the agent has reported the end of the turn on a frame that carries an
|
|
118
|
+
* upstream fault, so that frame is judged once settled (Issue #3956).
|
|
119
|
+
*
|
|
120
|
+
* The same two records {@link readyCompletionBasis} reads as `hook_stop`: a
|
|
121
|
+
* `Stop` at or after the adopted turn, or — with no turn adopted — a `Stop`
|
|
122
|
+
* after the newest prompt in the chat ledger. Neither is #1839's case (back at
|
|
123
|
+
* the composer with no `Stop`), whose fault is reported on the spot as before.
|
|
124
|
+
*/
|
|
125
|
+
async function faultFrameHasStop(poll, state, data, settleDeadline) {
|
|
126
|
+
if (state.turnStartedAt !== null)
|
|
127
|
+
return (0, wait_turn_boundary_1.turnSettled)(data, state.turnStartedAt);
|
|
128
|
+
// No `Stop` on record at all: nothing the ledger says could make one, so it
|
|
129
|
+
// is not asked and the fault is reported on the spot.
|
|
130
|
+
if (data.lastStopEventAt == null)
|
|
131
|
+
return false;
|
|
132
|
+
if (!state.promptLedgerReadable || !(0, wait_turn_boundary_1.reportsTurnBoundaries)(data))
|
|
133
|
+
return false;
|
|
134
|
+
// Bounded like the settle it decides on: a ledger that does not answer must
|
|
135
|
+
// not hold an exit 11 past --timeout, nor without one past the settle's bound.
|
|
136
|
+
const budgetMs = Math.min(settleDeadline - Date.now(), (0, wait_timing_1.msBeforeDeadlines)(poll.options, poll.startTime, state.lastActivityTime, Date.now()));
|
|
137
|
+
if (budgetMs <= 0)
|
|
138
|
+
return false;
|
|
139
|
+
const controller = new AbortController();
|
|
140
|
+
const abortTimer = setTimeout(() => controller.abort(), budgetMs);
|
|
141
|
+
let ledger;
|
|
142
|
+
try {
|
|
143
|
+
ledger = await (0, wait_turn_boundary_1.readNewestPromptAt)(poll.client, poll.worktreeId, poll.options, data, controller.signal);
|
|
144
|
+
}
|
|
145
|
+
finally {
|
|
146
|
+
clearTimeout(abortTimer);
|
|
147
|
+
}
|
|
148
|
+
state.promptLedgerReadable = ledger.readable;
|
|
149
|
+
return ledger.readable && ledger.submittedAt !== null && !(0, wait_turn_boundary_1.outstandingPrompt)(data, ledger.submittedAt);
|
|
150
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* wait Command - resolving --instance per worktree (Issue #2376)
|
|
3
|
+
* Issue #3964: split out of wait.ts.
|
|
4
|
+
*/
|
|
5
|
+
import type { WaitOptions } from '../types';
|
|
6
|
+
import type { ApiClient } from '../utils/api-client';
|
|
7
|
+
/**
|
|
8
|
+
* `options` with `--instance` resolved from a selector to an instance ID
|
|
9
|
+
* (Issue #2376).
|
|
10
|
+
*
|
|
11
|
+
* `wait` polls `/current-output?instance=`, which matches instance IDs and
|
|
12
|
+
* nothing else, so an alias that reached it would filter to no session and the
|
|
13
|
+
* wait would report on the worktree default instead — the exact silent
|
|
14
|
+
* wrong-session failure Issue #1638 catalogued for `--agent`.
|
|
15
|
+
*
|
|
16
|
+
* @param client - API client
|
|
17
|
+
* @param worktreeId - Worktree the selector is resolved against
|
|
18
|
+
* @param options - The options as given
|
|
19
|
+
*/
|
|
20
|
+
export declare function resolveWaitInstance<T extends WaitOptions>(client: ApiClient, worktreeId: string, options: T): Promise<T>;
|
|
21
|
+
//# sourceMappingURL=wait-instance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wait-instance.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/wait-instance.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,SAAS,WAAW,EAC7D,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,CAAC,GACT,OAAO,CAAC,CAAC,CAAC,CAkBZ"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* wait Command - resolving --instance per worktree (Issue #2376)
|
|
4
|
+
* Issue #3964: split out of wait.ts.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.resolveWaitInstance = resolveWaitInstance;
|
|
8
|
+
const types_1 = require("../types");
|
|
9
|
+
const instances_1 = require("./instances");
|
|
10
|
+
/**
|
|
11
|
+
* `options` with `--instance` resolved from a selector to an instance ID
|
|
12
|
+
* (Issue #2376).
|
|
13
|
+
*
|
|
14
|
+
* `wait` polls `/current-output?instance=`, which matches instance IDs and
|
|
15
|
+
* nothing else, so an alias that reached it would filter to no session and the
|
|
16
|
+
* wait would report on the worktree default instead — the exact silent
|
|
17
|
+
* wrong-session failure Issue #1638 catalogued for `--agent`.
|
|
18
|
+
*
|
|
19
|
+
* @param client - API client
|
|
20
|
+
* @param worktreeId - Worktree the selector is resolved against
|
|
21
|
+
* @param options - The options as given
|
|
22
|
+
*/
|
|
23
|
+
async function resolveWaitInstance(client, worktreeId, options) {
|
|
24
|
+
if (!options.instance)
|
|
25
|
+
return options;
|
|
26
|
+
try {
|
|
27
|
+
const target = await (0, instances_1.resolveInstanceTarget)(client, worktreeId, options.instance, undefined);
|
|
28
|
+
return { ...options, instance: target.instanceId ?? options.instance };
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
// Degrade to the pre-#2376 behaviour rather than failing the wait. An
|
|
32
|
+
// instance ID needs no resolution to reach `/current-output?instance=` —
|
|
33
|
+
// resolution exists here so that an ALIAS can — so a resolver that cannot
|
|
34
|
+
// be reached costs alias support for this call and nothing else. Failing
|
|
35
|
+
// instead would turn a reachable session into a non-zero exit for an
|
|
36
|
+
// orchestrator that has been waiting on it correctly for two years.
|
|
37
|
+
console.error(`Warning: could not resolve --instance '${options.instance}' `
|
|
38
|
+
+ `(${(0, types_1.getErrorMessage)(error)}); using it as an instance id.`);
|
|
39
|
+
return options;
|
|
40
|
+
}
|
|
41
|
+
}
|