commandmate 0.49.1 → 0.49.3
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 +246 -243
- package/.next/app-path-routes-manifest.json +18 -17
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +12 -12
- 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.js +1 -1
- package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js +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.js.nft.json +1 -1
- package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/subscriptions/route.js +1 -1
- package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/vapid/route.js +1 -1
- package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
- package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route.js +4 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/[relayId]/resolve/route.js +1 -0
- package/.next/server/app/api/relays/[relayId]/resolve/route.js.nft.json +1 -0
- package/.next/server/app/api/relays/[relayId]/resolve/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/relays/[relayId]/route.js +1 -1
- package/.next/server/app/api/relays/[relayId]/route.js.nft.json +1 -1
- package/.next/server/app/api/relays/[relayId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/route.js +4 -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 +2 -2
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/env/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/notes/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js +2 -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.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/logs/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route.js +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.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js +1 -144
- 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 +2 -2
- 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.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/more/page_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.js +1 -1
- package/.next/server/app/review/page_client-reference-manifest.js +1 -1
- package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/page.js +10 -10
- 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 +18 -17
- package/.next/server/chunks/1308.js +1 -0
- package/.next/server/chunks/1501.js +5 -4
- package/.next/server/chunks/1656.js +2 -2
- package/.next/server/chunks/1957.js +2 -0
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/2897.js +1 -0
- package/.next/server/chunks/3417.js +1 -0
- package/.next/server/chunks/3505.js +1 -1
- package/.next/server/chunks/3801.js +8 -8
- package/.next/server/chunks/4207.js +1 -1
- package/.next/server/chunks/4490.js +1 -0
- package/.next/server/chunks/4911.js +1 -0
- package/.next/server/chunks/4936.js +1 -0
- package/.next/server/chunks/5209.js +2 -1
- package/.next/server/chunks/5350.js +212 -0
- package/.next/server/chunks/5354.js +1 -1
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6401.js +1 -1
- package/.next/server/chunks/7023.js +3 -3
- package/.next/server/chunks/7905.js +1 -1
- package/.next/server/chunks/7926.js +1 -0
- package/.next/server/chunks/8581.js +15 -15
- package/.next/server/chunks/8728.js +2 -2
- package/.next/server/chunks/8782.js +1 -1
- package/.next/server/chunks/8807.js +89 -88
- package/.next/server/chunks/8918.js +3 -3
- package/.next/server/chunks/9169.js +1 -0
- package/.next/server/chunks/9390.js +1 -1
- package/.next/server/chunks/9584.js +1 -1
- package/.next/server/chunks/9627.js +5 -5
- package/.next/server/chunks/9702.js +1 -0
- 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/{2407-675ba6b21844dc3b.js → 2407-87ec01332344ec2b.js} +1 -1
- package/.next/static/chunks/3931-3ef48b8d97357282.js +1 -0
- package/.next/static/chunks/5794-7975b8e51e731b19.js +1 -0
- package/.next/static/chunks/6966-d8dc6032410ffaba.js +1 -0
- package/.next/static/chunks/7197-ed3b3d99ac3bd450.js +1 -0
- package/.next/static/chunks/7636-a48cf0f7110250c5.js +1 -0
- package/.next/static/chunks/app/api/agents/update/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/agents/versions/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/app/release-notes/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/app/update/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/app/update-check/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/auth/login/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/auth/status/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/capabilities/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/status/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/external-apps/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/fs/browse/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/fs/recent-paths/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/hooks/agent-event/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/hooks/claude-done/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/hooks/permission-request/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/metrics/vibe/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/ollama/models/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/push/escalation/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/push/subscriptions/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/push/vapid/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/relays/[relayId]/resolve/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/relays/[relayId]/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/relays/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/remote/pair/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/repositories/excluded/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/repositories/restore/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/repositories/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/repositories/scan/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/repositories/sync/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/repositories/validate-path/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/settings/default-agents/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/settings/default-surface-mode/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/sidebar/group-order/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/skills/[id]/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/skills/installations/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/skills/operations/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/skills/reindex/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/skills/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/slash-commands/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/templates/[id]/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/templates/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/env/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/layout-b9d8aef70e4f17b2.js +1 -0
- package/.next/static/chunks/app/manifest.webmanifest/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/more/page-ff5af5ca48774c89.js +1 -0
- package/.next/static/chunks/app/page-b4863bfe0452e09d.js +1 -0
- package/.next/static/chunks/app/proxy/[...path]/route-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/review/page-ff3efb96fdf9bb4b.js +1 -0
- package/.next/static/chunks/app/sessions/{page-890fd50ec9739973.js → page-c6eb7c02db2f4c80.js} +1 -1
- package/.next/static/chunks/app/worktrees/[id]/layout-96fc12d400b49b13.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-f6a151304860b549.js +1 -0
- package/.next/trace +13 -13
- package/.next/types/app/api/relays/[relayId]/resolve/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 +56 -5
- package/dist/cli/commands/attach.d.ts +4 -1
- package/dist/cli/commands/attach.d.ts.map +1 -1
- package/dist/cli/commands/attach.js +19 -7
- package/dist/cli/commands/command-target.d.ts +7 -0
- package/dist/cli/commands/command-target.d.ts.map +1 -1
- package/dist/cli/commands/command-target.js +10 -0
- package/dist/cli/commands/instances.d.ts.map +1 -1
- package/dist/cli/commands/instances.js +38 -2
- package/dist/cli/commands/message-dispatch.d.ts +17 -3
- package/dist/cli/commands/message-dispatch.d.ts.map +1 -1
- package/dist/cli/commands/message-dispatch.js +14 -8
- package/dist/cli/commands/prompt.d.ts.map +1 -1
- package/dist/cli/commands/prompt.js +2 -1
- package/dist/cli/commands/relays.d.ts +4 -1
- package/dist/cli/commands/relays.d.ts.map +1 -1
- package/dist/cli/commands/relays.js +146 -8
- package/dist/cli/commands/report.d.ts +7 -2
- package/dist/cli/commands/report.d.ts.map +1 -1
- package/dist/cli/commands/report.js +19 -6
- package/dist/cli/commands/respond-strict.d.ts.map +1 -1
- package/dist/cli/commands/respond-strict.js +29 -5
- package/dist/cli/commands/respond.d.ts +2 -2
- package/dist/cli/commands/respond.d.ts.map +1 -1
- package/dist/cli/commands/respond.js +40 -37
- package/dist/cli/commands/send.d.ts.map +1 -1
- package/dist/cli/commands/send.js +8 -4
- package/dist/cli/commands/task.d.ts +22 -0
- package/dist/cli/commands/task.d.ts.map +1 -1
- package/dist/cli/commands/task.js +26 -18
- package/dist/cli/commands/wait-instance.d.ts +9 -1
- package/dist/cli/commands/wait-instance.d.ts.map +1 -1
- package/dist/cli/commands/wait-instance.js +15 -0
- package/dist/cli/commands/wait-poll-state.d.ts +18 -0
- package/dist/cli/commands/wait-poll-state.d.ts.map +1 -1
- package/dist/cli/commands/wait-verify.d.ts +2 -1
- package/dist/cli/commands/wait-verify.d.ts.map +1 -1
- package/dist/cli/commands/wait-verify.js +5 -1
- package/dist/cli/commands/wait.d.ts.map +1 -1
- package/dist/cli/commands/wait.js +37 -13
- package/dist/cli/commands/whoami.d.ts.map +1 -1
- package/dist/cli/commands/whoami.js +3 -1
- package/dist/cli/docs/agent-operations.d.ts +1 -1
- package/dist/cli/docs/agent-operations.d.ts.map +1 -1
- package/dist/cli/docs/agent-operations.js +1 -0
- package/dist/cli/types/api-responses.d.ts +55 -1
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/cli/utils/api-client-deadline.d.ts +28 -0
- package/dist/cli/utils/api-client-deadline.d.ts.map +1 -0
- package/dist/cli/utils/api-client-deadline.js +46 -0
- package/dist/cli/utils/api-client-errors.d.ts +118 -0
- package/dist/cli/utils/api-client-errors.d.ts.map +1 -0
- package/dist/cli/utils/api-client-errors.js +210 -0
- package/dist/cli/utils/api-client.d.ts +33 -109
- package/dist/cli/utils/api-client.d.ts.map +1 -1
- package/dist/cli/utils/api-client.js +202 -227
- package/dist/cli/utils/follow-up-command.d.ts +38 -0
- package/dist/cli/utils/follow-up-command.d.ts.map +1 -0
- package/dist/cli/utils/follow-up-command.js +57 -0
- package/dist/cli/utils/reply-ledger.d.ts +1 -1
- package/dist/cli/utils/reply-ledger.d.ts.map +1 -1
- package/dist/cli/utils/reply-ledger.js +7 -2
- package/dist/cli/utils/server-capabilities.d.ts +18 -0
- package/dist/cli/utils/server-capabilities.d.ts.map +1 -1
- package/dist/cli/utils/server-capabilities.js +36 -3
- package/dist/cli/utils/session-target.d.ts +1 -1
- package/dist/cli/utils/session-target.d.ts.map +1 -1
- package/dist/cli/utils/session-target.js +3 -0
- package/dist/cli/utils/verify-runner.d.ts +7 -0
- package/dist/cli/utils/verify-runner.d.ts.map +1 -1
- package/dist/cli/utils/verify-runner.js +51 -15
- package/dist/lib/cli-tools/session-name.d.ts.map +1 -1
- package/dist/lib/cli-tools/session-name.js +11 -3
- package/dist/lib/cli-tools/types.d.ts +6 -0
- package/dist/lib/cli-tools/types.d.ts.map +1 -1
- package/dist/lib/session/send-attempt-types.d.ts +25 -0
- package/dist/lib/session/send-attempt-types.d.ts.map +1 -1
- package/dist/lib/session/send-attempt-types.js +10 -1
- package/dist/lib/verification/session-kill-ledger.d.ts +110 -0
- package/dist/lib/verification/session-kill-ledger.d.ts.map +1 -0
- package/dist/lib/verification/session-kill-ledger.js +174 -0
- package/dist/server/locales/en/worktree.json +9 -0
- package/dist/server/locales/ja/worktree.json +9 -0
- package/dist/server/src/config/cli-tool-timing-config.js +1 -7
- package/dist/server/src/lib/auto-yes-poller.js +5 -1
- package/dist/server/src/lib/cli-tools/antigravity.js +5 -2
- package/dist/server/src/lib/cli-tools/base.js +39 -0
- package/dist/server/src/lib/cli-tools/claude.js +8 -2
- package/dist/server/src/lib/cli-tools/codex.js +7 -4
- package/dist/server/src/lib/cli-tools/command-code.js +14 -18
- package/dist/server/src/lib/cli-tools/copilot.js +159 -28
- package/dist/server/src/lib/cli-tools/gemini.js +10 -2
- package/dist/server/src/lib/cli-tools/launch-keys.js +39 -0
- package/dist/server/src/lib/cli-tools/opencode-v2.js +6 -2
- package/dist/server/src/lib/cli-tools/opencode.js +162 -8
- package/dist/server/src/lib/cli-tools/prompt-wait-dialog.js +115 -0
- package/dist/server/src/lib/cli-tools/session-name.js +11 -3
- package/dist/server/src/lib/cli-tools/submit-composer-read.js +57 -14
- package/dist/server/src/lib/cli-tools/submit-verified-sender-composer.js +78 -0
- package/dist/server/src/lib/cli-tools/submit-verified-sender-lock.js +116 -0
- package/dist/server/src/lib/cli-tools/submit-verified-sender-report.js +250 -0
- package/dist/server/src/lib/cli-tools/submit-verified-sender-shared.js +106 -0
- package/dist/server/src/lib/cli-tools/submit-verified-sender.js +143 -187
- package/dist/server/src/lib/cli-tools/vibe-local.js +91 -2
- package/dist/server/src/lib/db/chat-db.js +14 -1
- package/dist/server/src/lib/db/db-instance.js +114 -2
- package/dist/server/src/lib/db/db-migration-path.js +63 -2
- package/dist/server/src/lib/db/migrations/index.js +2 -0
- package/dist/server/src/lib/db/migrations/runner.js +1 -1
- package/dist/server/src/lib/db/migrations/v63-session-relays-delivery-attempt.js +61 -0
- package/dist/server/src/lib/db/relay-bind-db-base.js +89 -0
- package/dist/server/src/lib/db/relay-bind-db-delivery.js +223 -0
- package/dist/server/src/lib/db/relay-bind-db-pending.js +183 -0
- package/dist/server/src/lib/db/relay-bind-db.js +88 -167
- package/dist/server/src/lib/db/relay-db-base.js +20 -0
- package/dist/server/src/lib/db/relay-db-count.js +49 -0
- package/dist/server/src/lib/db/relay-db-delivery.js +104 -0
- package/dist/server/src/lib/db/relay-db-hold.js +250 -0
- package/dist/server/src/lib/db/relay-db.js +33 -92
- package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +5 -4
- package/dist/server/src/lib/detection/tools/opencode/composer-own-text.js +119 -0
- package/dist/server/src/lib/detection/tools/opencode/readiness.js +62 -0
- package/dist/server/src/lib/detection/tools/vibe-local/readiness.js +70 -0
- package/dist/server/src/lib/hooks/sources/copilot/hook-settings.js +2 -3
- package/dist/server/src/lib/prompt-answer-errors.js +76 -2
- package/dist/server/src/lib/relay/relay-bound-reply.js +20 -9
- package/dist/server/src/lib/relay/relay-delivery.js +359 -79
- package/dist/server/src/lib/relay/relay-messages.js +13 -0
- package/dist/server/src/lib/relay/relay-system-line.js +28 -15
- package/dist/server/src/lib/relay/types.js +14 -2
- package/dist/server/src/lib/session/agent-event-state.js +4 -0
- package/dist/server/src/lib/session/agent-session-lifecycle.js +6 -1
- package/dist/server/src/lib/session/claude-session.js +26 -7
- package/dist/server/src/lib/session/current-output-builder.js +7 -3
- package/dist/server/src/lib/session/current-output-history-writers.js +1 -1
- package/dist/server/src/lib/session/instance-input-lock.js +47 -2
- package/dist/server/src/lib/session/prompt-submit-receipt.js +224 -0
- package/dist/server/src/lib/session/prompt-waiting-guard.js +16 -3
- package/dist/server/src/lib/session/respond-target.js +82 -0
- package/dist/server/src/lib/session/send-attempt-state.js +177 -2
- package/dist/server/src/lib/session/send-attempt-types.js +10 -1
- package/dist/server/src/lib/session/send-user-message.js +80 -8
- package/dist/server/src/lib/session/session-launch-flight.js +243 -0
- package/dist/server/src/lib/session/session-starting-state.js +40 -4
- package/dist/server/src/lib/session/structured-prompt.js +17 -9
- package/dist/server/src/lib/session/waiting-episode-binding.js +4 -2
- package/dist/server/src/lib/session/worktree-session-reconcile.js +10 -0
- package/dist/server/src/lib/session-cleanup.js +32 -0
- package/dist/server/src/lib/session-key-sender.js +6 -28
- package/dist/server/src/lib/verification/env-clean-gate.js +129 -0
- package/dist/server/src/lib/verification/env-snapshot.js +11 -2
- package/dist/server/src/lib/verification/session-kill-ledger.js +174 -0
- package/package.json +5 -1
- package/release-notes/0.49.2.json +49 -0
- package/release-notes/0.49.3.json +52 -0
- package/.next/server/chunks/2422.js +0 -1
- package/.next/server/chunks/3773.js +0 -1
- package/.next/server/chunks/5630.js +0 -1
- package/.next/server/chunks/5775.js +0 -1
- package/.next/server/chunks/6808.js +0 -4
- package/.next/server/chunks/7604.js +0 -2
- package/.next/server/chunks/9198.js +0 -144
- package/.next/static/chunks/3931-1a1abab16248f14d.js +0 -1
- package/.next/static/chunks/4768-ad6f82f034f21eae.js +0 -1
- package/.next/static/chunks/5794-80ac3f06f098ea29.js +0 -1
- package/.next/static/chunks/6654-f3534f35f16644bc.js +0 -1
- package/.next/static/chunks/7665-e9ef6e0a85b9fa49.js +0 -1
- package/.next/static/chunks/8606-ce17ffa77f39608e.js +0 -1
- package/.next/static/chunks/app/api/agents/update/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/agents/versions/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/app/release-notes/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/app/update/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/app/update-check/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/auth/login/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/auth/status/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/capabilities/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/status/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/external-apps/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/fs/browse/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/fs/recent-paths/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/hooks/agent-event/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/hooks/claude-done/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/hooks/permission-request/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/metrics/vibe/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/ollama/models/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/push/escalation/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/push/subscriptions/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/push/vapid/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/relays/[relayId]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/relays/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/remote/pair/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/repositories/excluded/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/repositories/restore/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/repositories/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/repositories/scan/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/repositories/sync/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/repositories/validate-path/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/settings/default-agents/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/settings/default-surface-mode/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/sidebar/group-order/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/skills/[id]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/skills/installations/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/skills/operations/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/skills/reindex/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/skills/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/slash-commands/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/templates/[id]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/templates/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/env/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/layout-8bfac4724277b47f.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/more/page-87c84987b2765213.js +0 -1
- package/.next/static/chunks/app/page-1b820c421db48c2c.js +0 -1
- package/.next/static/chunks/app/proxy/[...path]/route-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/review/page-e2fd4a590646a2d8.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/layout-a4f129c451de7859.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-f6d3ab8185d93aae.js +0 -1
- /package/.next/static/{fqfSDqQMweROeHUzOt_m1 → LNfVZiq6FZwKsV7L9Mi6M}/_buildManifest.js +0 -0
- /package/.next/static/{fqfSDqQMweROeHUzOt_m1 → LNfVZiq6FZwKsV7L9Mi6M}/_ssgManifest.js +0 -0
|
@@ -66,6 +66,7 @@ const session_name_1 = require("../../lib/cli-tools/session-name");
|
|
|
66
66
|
const types_1 = require("../../lib/cli-tools/types");
|
|
67
67
|
const env_snapshot_1 = require("./env-snapshot");
|
|
68
68
|
const verify_config_1 = require("./verify-config");
|
|
69
|
+
const session_kill_ledger_1 = require("./session-kill-ledger");
|
|
69
70
|
// =============================================================================
|
|
70
71
|
// Opt-in resolution
|
|
71
72
|
// =============================================================================
|
|
@@ -538,6 +539,71 @@ function readDeadDemoVitestEntries(baseline) {
|
|
|
538
539
|
return new Set();
|
|
539
540
|
return new Set(recorded.filter((name) => typeof name === 'string' && demoVitestPid(name) !== null));
|
|
540
541
|
}
|
|
542
|
+
// =============================================================================
|
|
543
|
+
// Sibling sessions stopped by someone else (Issue #3993)
|
|
544
|
+
// =============================================================================
|
|
545
|
+
/**
|
|
546
|
+
* Whether a CLI kill was asked for by someone known not to be this task's worker.
|
|
547
|
+
*
|
|
548
|
+
* Known means one of two facts the record carries:
|
|
549
|
+
* - the caller's cwd is a sibling directory of the task's worktree — the
|
|
550
|
+
* primary checkout the orchestrator runs from, or another worktree;
|
|
551
|
+
* - the caller ran inside the tmux session of another worktree.
|
|
552
|
+
* Either is enough unless the other says "this task": a cwd inside the task's
|
|
553
|
+
* worktree, or the task's own session (or one of its worktree's), is the worker
|
|
554
|
+
* whatever else was recorded. A cwd that is nowhere in particular (`/tmp`,
|
|
555
|
+
* `$HOME`, `/`) with no session says nothing and is the worker — the strict
|
|
556
|
+
* answer, because only a kill *not* the worker's excuses.
|
|
557
|
+
*
|
|
558
|
+
* Only `cli` lines name a caller. The route's `browser` (judged from
|
|
559
|
+
* `Sec-Fetch-Site` alone, which a UI-driving worker sends and a header can
|
|
560
|
+
* forge) and `http` lines and the server's `server` cleanup (run after a
|
|
561
|
+
* `commandmate sync` a worker can issue) never excuse.
|
|
562
|
+
*/
|
|
563
|
+
function isKillByAnotherWorker(record, context, taskSession) {
|
|
564
|
+
if (record.origin !== 'cli')
|
|
565
|
+
return false;
|
|
566
|
+
const sessionOwner = record.callerSession === null
|
|
567
|
+
? 'unattributed'
|
|
568
|
+
: taskSession && record.callerSession === taskSession
|
|
569
|
+
? 'self'
|
|
570
|
+
: attributeSessionName(record.callerSession, context.worktreeId);
|
|
571
|
+
const cwdOwner = attributeAnchor(record.callerCwd, context.worktreePath);
|
|
572
|
+
if (sessionOwner === 'self' || cwdOwner === 'self')
|
|
573
|
+
return false;
|
|
574
|
+
return sessionOwner === 'other' || cwdOwner === 'other';
|
|
575
|
+
}
|
|
576
|
+
/**
|
|
577
|
+
* The recorded kill that explains a vanished `other` session, or undefined.
|
|
578
|
+
*
|
|
579
|
+
* Why this is the third line removals are excused on — the design note for
|
|
580
|
+
* #3993, which keeps #1624's rule rather than loosening it:
|
|
581
|
+
*
|
|
582
|
+
* - #1624 is a worker killing a sibling's session. The two snapshots cannot
|
|
583
|
+
* say who removed a session, so every same-repository removal was counted —
|
|
584
|
+
* including the orchestrator's own cleanup (`instances <wt> kill`, the
|
|
585
|
+
* first step of removing a worktree), which failed every parallel
|
|
586
|
+
* verification on 2026-10-29.
|
|
587
|
+
* - The session-kill ledger records each kill with the tmux sessions it
|
|
588
|
+
* stopped and who asked. A removal is `external` only when a line inside
|
|
589
|
+
* the task window names exactly that session and {@link isKillByAnotherWorker}
|
|
590
|
+
* holds for it.
|
|
591
|
+
* - Matched by the exact session name, never by worktree id: a worktree-wide
|
|
592
|
+
* match let one cleanup line excuse a worker's unrecorded kill of another
|
|
593
|
+
* instance of the same worktree hours earlier, and an id prefix
|
|
594
|
+
* (`commandmate-skills` / `commandmate-skills-3944`) reached into another
|
|
595
|
+
* worktree.
|
|
596
|
+
* - Everything else stays a violation: a worker's own kill, a caller that is
|
|
597
|
+
* nowhere in particular, the UI's and the server's kills, and any kill that
|
|
598
|
+
* went around CommandMate (`tmux kill-session`), which records nothing.
|
|
599
|
+
*/
|
|
600
|
+
function findExternalKill(sessionName, kills, context, taskSession) {
|
|
601
|
+
return kills.find((record) => record.sessionNames.includes(sessionName) && isKillByAnotherWorker(record, context, taskSession));
|
|
602
|
+
}
|
|
603
|
+
/** A recorded kill of exactly this session that does not excuse it, for the report. */
|
|
604
|
+
function findRecordedKill(sessionName, kills) {
|
|
605
|
+
return kills.find((record) => record.sessionNames.includes(sessionName));
|
|
606
|
+
}
|
|
541
607
|
function toChange(entry, owner) {
|
|
542
608
|
return { key: entry.key, detail: entry.detail, owner };
|
|
543
609
|
}
|
|
@@ -556,6 +622,7 @@ function diffEnvSnapshots(baseline, final, context, options = {}) {
|
|
|
556
622
|
const deadDemoVitestEntries = readDeadDemoVitestEntries(baseline);
|
|
557
623
|
const ignoredHomeEntries = new Set(options.ignoreHomeEntries ?? []);
|
|
558
624
|
const resolvePidCwd = options.resolvePidCwd ?? exports.readLivePidCwd;
|
|
625
|
+
const sessionKills = (options.sessionKills ?? []).filter((record) => record.at >= baseline.capturedAt && record.at <= final.capturedAt);
|
|
559
626
|
const probes = env_snapshot_1.ENV_PROBE_IDS.map((probeId) => {
|
|
560
627
|
const before = baseline.probes[probeId];
|
|
561
628
|
const after = final.probes[probeId];
|
|
@@ -570,6 +637,8 @@ function diffEnvSnapshots(baseline, final, context, options = {}) {
|
|
|
570
637
|
removed: [],
|
|
571
638
|
removedByOtherServer: [],
|
|
572
639
|
removedByOtherRepository: [],
|
|
640
|
+
removedExternal: [],
|
|
641
|
+
removedKillNotExcused: [],
|
|
573
642
|
removedStaleDemoVitest: [],
|
|
574
643
|
ignoredByConfig: [],
|
|
575
644
|
ignoredBuiltIn: [],
|
|
@@ -586,6 +655,8 @@ function diffEnvSnapshots(baseline, final, context, options = {}) {
|
|
|
586
655
|
removed: [],
|
|
587
656
|
removedByOtherServer: [],
|
|
588
657
|
removedByOtherRepository: [],
|
|
658
|
+
removedExternal: [],
|
|
659
|
+
removedKillNotExcused: [],
|
|
589
660
|
removedStaleDemoVitest: [],
|
|
590
661
|
ignoredByConfig: [],
|
|
591
662
|
ignoredBuiltIn: [],
|
|
@@ -631,6 +702,8 @@ function diffEnvSnapshots(baseline, final, context, options = {}) {
|
|
|
631
702
|
const removed = [];
|
|
632
703
|
const removedByOtherServer = [];
|
|
633
704
|
const removedByOtherRepository = [];
|
|
705
|
+
const removedExternal = [];
|
|
706
|
+
const removedKillNotExcused = [];
|
|
634
707
|
const removedStaleDemoVitest = [];
|
|
635
708
|
for (const entry of before.entries) {
|
|
636
709
|
if (afterKeys.has(entry.key))
|
|
@@ -652,6 +725,18 @@ function diffEnvSnapshots(baseline, final, context, options = {}) {
|
|
|
652
725
|
otherRepositorySessions.has(entry.key)) {
|
|
653
726
|
removedByOtherRepository.push(change);
|
|
654
727
|
}
|
|
728
|
+
else if (probeId === 'tmux-sessions' && tmuxServerSurvived && change.owner === 'other') {
|
|
729
|
+
const killedBy = findExternalKill(entry.key, sessionKills, context, taskSession);
|
|
730
|
+
if (killedBy) {
|
|
731
|
+
removedExternal.push({ ...change, killedBy });
|
|
732
|
+
}
|
|
733
|
+
else {
|
|
734
|
+
removed.push(change);
|
|
735
|
+
const recorded = findRecordedKill(entry.key, sessionKills);
|
|
736
|
+
if (recorded)
|
|
737
|
+
removedKillNotExcused.push({ ...change, killedBy: recorded });
|
|
738
|
+
}
|
|
739
|
+
}
|
|
655
740
|
else if (probeId === 'home-entries' && deadDemoVitestEntries.has(entry.key)) {
|
|
656
741
|
removedStaleDemoVitest.push(change);
|
|
657
742
|
}
|
|
@@ -669,6 +754,8 @@ function diffEnvSnapshots(baseline, final, context, options = {}) {
|
|
|
669
754
|
removed,
|
|
670
755
|
removedByOtherServer,
|
|
671
756
|
removedByOtherRepository,
|
|
757
|
+
removedExternal,
|
|
758
|
+
removedKillNotExcused,
|
|
672
759
|
removedStaleDemoVitest,
|
|
673
760
|
ignoredByConfig,
|
|
674
761
|
ignoredBuiltIn,
|
|
@@ -736,6 +823,35 @@ function formatRemovedByOtherServer(changes) {
|
|
|
736
823
|
function formatRemovedByOtherRepository(changes) {
|
|
737
824
|
return changes.map((change) => ` · - ${change.key} (ignored: a worktree of another repository on this server, recorded at task start)`);
|
|
738
825
|
}
|
|
826
|
+
/** Sibling sessions stopped by someone else's recorded kill (#3993), one line each. */
|
|
827
|
+
function formatRemovedExternal(changes) {
|
|
828
|
+
return changes.map(({ key, killedBy }) => ` · - ${key} [external] (not counted: ${describeKill(killedBy)}, not this task)`);
|
|
829
|
+
}
|
|
830
|
+
/** `<api> for <worktree>[ instance <id>] at <ISO> from <caller>` of one recorded kill. */
|
|
831
|
+
function describeKill(killedBy) {
|
|
832
|
+
const target = killedBy.instanceId
|
|
833
|
+
? `${killedBy.worktreeId} instance ${killedBy.instanceId}`
|
|
834
|
+
: killedBy.worktreeId;
|
|
835
|
+
const caller = killedBy.origin === 'browser'
|
|
836
|
+
? 'the UI'
|
|
837
|
+
: killedBy.origin === 'server'
|
|
838
|
+
? 'the server'
|
|
839
|
+
: killedBy.origin === 'http'
|
|
840
|
+
? 'an HTTP request with no caller'
|
|
841
|
+
: killedBy.callerSession
|
|
842
|
+
? `${killedBy.callerCwd ?? 'an unknown cwd'} in ${killedBy.callerSession}`
|
|
843
|
+
: (killedBy.callerCwd ?? 'an unknown cwd');
|
|
844
|
+
return `${killedBy.api} for ${target} at ${new Date(killedBy.at).toISOString()} from ${caller}`;
|
|
845
|
+
}
|
|
846
|
+
/** Counted removals whose kill was recorded but does not excuse them (#3993), one line each. */
|
|
847
|
+
function formatRemovedKillNotExcused(changes) {
|
|
848
|
+
return changes.map(({ key, killedBy }) => {
|
|
849
|
+
const why = killedBy.origin === 'browser' || killedBy.origin === 'server'
|
|
850
|
+
? `a ${killedBy.origin} kill a worker can also cause`
|
|
851
|
+
: 'the caller is not known to be someone else';
|
|
852
|
+
return ` · ${key}: kill recorded but counted (${describeKill(killedBy)}; not excused: ${why})`;
|
|
853
|
+
});
|
|
854
|
+
}
|
|
739
855
|
/** Removals excused as leftover demo-vitest directories (#3043), one line each. */
|
|
740
856
|
function formatRemovedStaleDemoVitest(changes) {
|
|
741
857
|
return changes.map((change) => ` · - ${change.key} (ignored: its pid was already dead at task start — a leftover swept by the demo-video tests)`);
|
|
@@ -788,6 +904,7 @@ function formatEnvCleanReport(diff) {
|
|
|
788
904
|
lines.push(...formatTaskSessionChanges(probe.taskSessionAdded));
|
|
789
905
|
lines.push(...formatRemovedByOtherServer(probe.removedByOtherServer));
|
|
790
906
|
lines.push(...formatRemovedByOtherRepository(probe.removedByOtherRepository));
|
|
907
|
+
lines.push(...formatRemovedExternal(probe.removedExternal));
|
|
791
908
|
lines.push(...formatRemovedStaleDemoVitest(probe.removedStaleDemoVitest));
|
|
792
909
|
lines.push(...formatIgnoredByConfig(probe.ignoredByConfig));
|
|
793
910
|
lines.push(...formatIgnoredBuiltIn(probe.ignoredBuiltIn));
|
|
@@ -797,9 +914,11 @@ function formatEnvCleanReport(diff) {
|
|
|
797
914
|
lines.push(` ${probe.probeId} VIOLATED (${label}): +${probe.added.length} -${probe.removed.length}`);
|
|
798
915
|
lines.push(...formatChanges('+', probe.added));
|
|
799
916
|
lines.push(...formatChanges('-', probe.removed));
|
|
917
|
+
lines.push(...formatRemovedKillNotExcused(probe.removedKillNotExcused));
|
|
800
918
|
lines.push(...formatTaskSessionChanges(probe.taskSessionAdded));
|
|
801
919
|
lines.push(...formatRemovedByOtherServer(probe.removedByOtherServer));
|
|
802
920
|
lines.push(...formatRemovedByOtherRepository(probe.removedByOtherRepository));
|
|
921
|
+
lines.push(...formatRemovedExternal(probe.removedExternal));
|
|
803
922
|
lines.push(...formatRemovedStaleDemoVitest(probe.removedStaleDemoVitest));
|
|
804
923
|
lines.push(...formatIgnoredByConfig(probe.ignoredByConfig));
|
|
805
924
|
lines.push(...formatIgnoredBuiltIn(probe.ignoredBuiltIn));
|
|
@@ -862,9 +981,19 @@ async function evaluateEnvClean(input) {
|
|
|
862
981
|
return done('error', `${verify_config_1.ENV_CLEAN_GATE_ID}: UNKNOWN — the current snapshot could not be taken: ` +
|
|
863
982
|
`${error instanceof Error ? error.message : String(error)}`, null);
|
|
864
983
|
}
|
|
984
|
+
const readSessionKills = input.readSessionKills ?? ((since, until) => (0, session_kill_ledger_1.readSessionKillRecords)(since, until));
|
|
985
|
+
let sessionKills;
|
|
986
|
+
try {
|
|
987
|
+
sessionKills = readSessionKills(input.baseline.capturedAt, final.capturedAt);
|
|
988
|
+
}
|
|
989
|
+
catch {
|
|
990
|
+
// An unreadable ledger excuses nothing; it is not a reason to withhold a verdict.
|
|
991
|
+
sessionKills = [];
|
|
992
|
+
}
|
|
865
993
|
const diff = diffEnvSnapshots(input.baseline, final, input, {
|
|
866
994
|
ignoreHomeEntries: input.ignoreHomeEntries,
|
|
867
995
|
resolvePidCwd: input.resolvePidCwd,
|
|
996
|
+
sessionKills,
|
|
868
997
|
});
|
|
869
998
|
const header = `${verify_config_1.ENV_CLEAN_GATE_ID}: baseline=${new Date(input.baseline.capturedAt).toISOString()} ` +
|
|
870
999
|
`status=${diff.status} task-session=${describeTaskSession(diff.taskSession)}`;
|
|
@@ -40,6 +40,7 @@ const path_1 = require("path");
|
|
|
40
40
|
const env_1 = require("../../lib/env");
|
|
41
41
|
const logger_1 = require("../../lib/logger");
|
|
42
42
|
const machine_lock_1 = require("./machine-lock");
|
|
43
|
+
const session_kill_ledger_1 = require("./session-kill-ledger");
|
|
43
44
|
const worktree_index_1 = require("./worktree-index");
|
|
44
45
|
const logger = (0, logger_1.createLogger)('lib/verification/env-snapshot');
|
|
45
46
|
/** Bumped only when a stored snapshot stops being readable by this module. */
|
|
@@ -329,6 +330,8 @@ exports.MCBD_SESSION_PREFIX = 'mcbd-';
|
|
|
329
330
|
* is none of a delegation's business, so watching them would only manufacture
|
|
330
331
|
* violations. Sessions of *other* worktrees stay in the set on purpose — killing
|
|
331
332
|
* a sibling worker's session is the #1624 failure this probe is here to catch.
|
|
333
|
+
* A sibling session stopped by someone else through `instances <wt> kill` is set
|
|
334
|
+
* apart at diff time from the session-kill ledger (Issue #3993), not here.
|
|
332
335
|
*
|
|
333
336
|
* "No server running" is an answer (zero sessions), which is why it is not
|
|
334
337
|
* treated as a probe failure. `tmux` being absent, or hanging, is not.
|
|
@@ -370,14 +373,20 @@ exports.ENV_SNAPSHOT_DIR_NAME = 'env-snapshots';
|
|
|
370
373
|
* `~/.commandmate` (Issue #1771): the gate mutex locks and the worktree index
|
|
371
374
|
* registry. Neither is a side effect of the delegation — the first mutexed gate
|
|
372
375
|
* on a machine creates them — so counting them would report the runner's own
|
|
373
|
-
* bookkeeping as pollution the agent left behind.
|
|
376
|
+
* bookkeeping as pollution the agent left behind. The session-kill ledger
|
|
377
|
+
* (Issue #3993) is the same kind of bookkeeping: the first recorded
|
|
378
|
+
* `instances <wt> kill` on a machine creates it.
|
|
374
379
|
*
|
|
375
380
|
* Scoped to the `~/.commandmate` probe rather than added to
|
|
376
381
|
* {@link isIgnoredEntry}: a `~/locks` directory in `$HOME` is not ours, and
|
|
377
382
|
* blanket-ignoring the name would put a hole in the probe that exists to catch
|
|
378
383
|
* exactly that.
|
|
379
384
|
*/
|
|
380
|
-
const COMMANDMATE_RUNTIME_ENTRY_NAMES = [
|
|
385
|
+
const COMMANDMATE_RUNTIME_ENTRY_NAMES = [
|
|
386
|
+
machine_lock_1.MACHINE_LOCK_DIR_NAME,
|
|
387
|
+
worktree_index_1.WORKTREE_INDEX_DIR_NAME,
|
|
388
|
+
session_kill_ledger_1.SESSION_KILL_LEDGER_DIR_NAME,
|
|
389
|
+
];
|
|
381
390
|
function isIgnoredEntry(name) {
|
|
382
391
|
if (name === exports.ENV_SNAPSHOT_DIR_NAME)
|
|
383
392
|
return true;
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Record of `mcbd-*` sessions stopped through CommandMate's kill (Issue #3993).
|
|
4
|
+
*
|
|
5
|
+
* The `env-clean` gate counts every vanished session of a sibling worktree as a
|
|
6
|
+
* violation, because a worker killing its neighbour is the #1624 failure. The
|
|
7
|
+
* orchestrator stops sibling sessions too — `commandmate instances <wt> kill`
|
|
8
|
+
* when it cleans a worktree up (worktree-cleanup Phase 3), the UI's kill
|
|
9
|
+
* button, the server's cleanup after sync or a repository removal — and the two
|
|
10
|
+
* snapshots cannot tell that apart from a worker's kill: on 2026-10-29 four
|
|
11
|
+
* verification runs of #3957 failed on `- mcbd-…-<another worktree> [other]`
|
|
12
|
+
* for a cleanup nobody in the worker's transcript had run.
|
|
13
|
+
*
|
|
14
|
+
* This ledger is the missing fact: one line per kill, naming the API, the
|
|
15
|
+
* tmux sessions it actually stopped, the worktree it was for and who asked
|
|
16
|
+
* (the caller's working directory and tmux session). The gate excuses as little
|
|
17
|
+
* as it can prove is not the worker's (`env-clean-gate.ts`, `findExternalKill`):
|
|
18
|
+
* a vanished sibling session is `external` only when a line inside the task's
|
|
19
|
+
* window names that exact session, was written by the CLI, and its caller is
|
|
20
|
+
* known to be someone else — a cwd in a sibling directory of the task's
|
|
21
|
+
* worktree (the primary checkout, another worktree) or a tmux session of
|
|
22
|
+
* another worktree. Everything else stays a violation, exactly as before:
|
|
23
|
+
* a worker's own kill, a caller that is nowhere in particular (`/tmp`, `$HOME`),
|
|
24
|
+
* the route's and the server's lines (a worker can reach the UI and trigger
|
|
25
|
+
* sync too), and any kill that bypassed CommandMate (`tmux kill-session`), which
|
|
26
|
+
* records nothing. Those lines are still shown next to the violation.
|
|
27
|
+
*
|
|
28
|
+
* Written by the CLI (with its caller), by the kill-session route and by
|
|
29
|
+
* `session-cleanup.ts`. A CLI kill is therefore recorded twice — the CLI's line
|
|
30
|
+
* and the route's `http` line — which changes no verdict: only the CLI's line
|
|
31
|
+
* can excuse anything.
|
|
32
|
+
*
|
|
33
|
+
* Machine-wide, like the gate mutex (`machine-lock.ts`): the CLI and the server
|
|
34
|
+
* write it and the server's gate reads it, so the path is derived from `$HOME` alone —
|
|
35
|
+
* `~/.commandmate/session-kills/<UTC date>.jsonl` — with an override for tests.
|
|
36
|
+
* The `commandmate-entries` probe ignores the directory, like `locks`.
|
|
37
|
+
*
|
|
38
|
+
* Node built-ins only: the CLI imports this module.
|
|
39
|
+
*
|
|
40
|
+
* @module lib/verification/session-kill-ledger
|
|
41
|
+
*/
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.SESSION_KILL_LEDGER_RETENTION_MS = exports.SESSION_KILL_LEDGER_VERSION = exports.SESSION_KILL_LEDGER_ROOT_ENV = exports.SESSION_KILL_LEDGER_DIR_NAME = void 0;
|
|
44
|
+
exports.defaultSessionKillLedgerRoot = defaultSessionKillLedgerRoot;
|
|
45
|
+
exports.resolveSessionKillLedgerRoot = resolveSessionKillLedgerRoot;
|
|
46
|
+
exports.appendSessionKillRecord = appendSessionKillRecord;
|
|
47
|
+
exports.isSessionKillRecord = isSessionKillRecord;
|
|
48
|
+
exports.readSessionKillRecords = readSessionKillRecords;
|
|
49
|
+
const fs_1 = require("fs");
|
|
50
|
+
const os_1 = require("os");
|
|
51
|
+
const path_1 = require("path");
|
|
52
|
+
/** Directory under `~/.commandmate`; exported for the `commandmate-entries` probe. */
|
|
53
|
+
exports.SESSION_KILL_LEDGER_DIR_NAME = 'session-kills';
|
|
54
|
+
/** Overrides the ledger directory (tests, isolated environments). */
|
|
55
|
+
exports.SESSION_KILL_LEDGER_ROOT_ENV = 'CM_SESSION_KILL_LEDGER_ROOT';
|
|
56
|
+
/** Bumped only when a line stops being readable by this module. */
|
|
57
|
+
exports.SESSION_KILL_LEDGER_VERSION = 1;
|
|
58
|
+
/** Day files older than this are removed when a new line is written (same as env snapshots). */
|
|
59
|
+
exports.SESSION_KILL_LEDGER_RETENTION_MS = 30 * 24 * 60 * 60 * 1000;
|
|
60
|
+
const DAY_MS = 24 * 60 * 60 * 1000;
|
|
61
|
+
const DAY_FILE_PATTERN = /^(\d{4}-\d{2}-\d{2})\.jsonl$/;
|
|
62
|
+
const SESSION_KILL_APIS = ['kill-session', 'session-cleanup'];
|
|
63
|
+
const SESSION_KILL_ORIGINS = ['cli', 'browser', 'http', 'server'];
|
|
64
|
+
function defaultSessionKillLedgerRoot() {
|
|
65
|
+
return (0, path_1.join)((0, os_1.homedir)(), '.commandmate', exports.SESSION_KILL_LEDGER_DIR_NAME);
|
|
66
|
+
}
|
|
67
|
+
function resolveSessionKillLedgerRoot(env = process.env) {
|
|
68
|
+
const override = env[exports.SESSION_KILL_LEDGER_ROOT_ENV];
|
|
69
|
+
return override && override.trim() !== '' ? override : defaultSessionKillLedgerRoot();
|
|
70
|
+
}
|
|
71
|
+
function dayOf(epochMs) {
|
|
72
|
+
return new Date(epochMs).toISOString().slice(0, 10);
|
|
73
|
+
}
|
|
74
|
+
function pruneOldDays(root, now) {
|
|
75
|
+
const oldest = dayOf(now - exports.SESSION_KILL_LEDGER_RETENTION_MS);
|
|
76
|
+
let names;
|
|
77
|
+
try {
|
|
78
|
+
names = (0, fs_1.readdirSync)(root);
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
for (const name of names) {
|
|
84
|
+
const day = DAY_FILE_PATTERN.exec(name)?.[1];
|
|
85
|
+
if (day === undefined || day >= oldest)
|
|
86
|
+
continue;
|
|
87
|
+
try {
|
|
88
|
+
(0, fs_1.rmSync)((0, path_1.join)(root, name), { force: true });
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
// A day file that cannot be removed is disk use, not a reason to fail a kill.
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Append one kill. Never throws: the kill already happened, and failing the
|
|
97
|
+
* command over its bookkeeping would only hide that.
|
|
98
|
+
*
|
|
99
|
+
* @returns true when the line was written
|
|
100
|
+
*/
|
|
101
|
+
function appendSessionKillRecord(record, root = resolveSessionKillLedgerRoot()) {
|
|
102
|
+
try {
|
|
103
|
+
(0, fs_1.mkdirSync)(root, { recursive: true, mode: 0o700 });
|
|
104
|
+
// One short line per append; O_APPEND keeps concurrent writers' lines whole.
|
|
105
|
+
(0, fs_1.appendFileSync)((0, path_1.join)(root, `${dayOf(record.at)}.jsonl`), `${JSON.stringify(record)}\n`, {
|
|
106
|
+
encoding: 'utf8',
|
|
107
|
+
mode: 0o600,
|
|
108
|
+
});
|
|
109
|
+
pruneOldDays(root, record.at);
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
function isNullableString(value) {
|
|
117
|
+
return value === null || typeof value === 'string';
|
|
118
|
+
}
|
|
119
|
+
/** Whether a parsed line is a record this module can use; anything else is skipped. */
|
|
120
|
+
function isSessionKillRecord(value) {
|
|
121
|
+
if (typeof value !== 'object' || value === null)
|
|
122
|
+
return false;
|
|
123
|
+
const record = value;
|
|
124
|
+
return (record.version === exports.SESSION_KILL_LEDGER_VERSION &&
|
|
125
|
+
typeof record.at === 'number' &&
|
|
126
|
+
typeof record.api === 'string' &&
|
|
127
|
+
SESSION_KILL_APIS.includes(record.api) &&
|
|
128
|
+
typeof record.origin === 'string' &&
|
|
129
|
+
SESSION_KILL_ORIGINS.includes(record.origin) &&
|
|
130
|
+
typeof record.worktreeId === 'string' &&
|
|
131
|
+
record.worktreeId !== '' &&
|
|
132
|
+
isNullableString(record.instanceId) &&
|
|
133
|
+
Array.isArray(record.sessionNames) &&
|
|
134
|
+
record.sessionNames.every((name) => typeof name === 'string') &&
|
|
135
|
+
isNullableString(record.callerCwd) &&
|
|
136
|
+
isNullableString(record.callerSession));
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* The kills recorded in `[since, until]` (epoch ms, inclusive).
|
|
140
|
+
*
|
|
141
|
+
* A missing directory, an unreadable day file and a malformed line all read as
|
|
142
|
+
* "no record", which only ever excuses less.
|
|
143
|
+
*/
|
|
144
|
+
function readSessionKillRecords(since, until, root = resolveSessionKillLedgerRoot()) {
|
|
145
|
+
if (!(since <= until))
|
|
146
|
+
return [];
|
|
147
|
+
// Nothing older than the retention survives, so a stale baseline costs no extra reads.
|
|
148
|
+
since = Math.max(since, until - exports.SESSION_KILL_LEDGER_RETENTION_MS - DAY_MS);
|
|
149
|
+
const records = [];
|
|
150
|
+
for (let day = Date.parse(`${dayOf(since)}T00:00:00.000Z`); day <= until; day += DAY_MS) {
|
|
151
|
+
let text;
|
|
152
|
+
try {
|
|
153
|
+
text = (0, fs_1.readFileSync)((0, path_1.join)(root, `${dayOf(day)}.jsonl`), 'utf8');
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
for (const line of text.split('\n')) {
|
|
159
|
+
if (line.trim() === '')
|
|
160
|
+
continue;
|
|
161
|
+
let parsed;
|
|
162
|
+
try {
|
|
163
|
+
parsed = JSON.parse(line);
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
if (isSessionKillRecord(parsed) && parsed.at >= since && parsed.at <= until) {
|
|
169
|
+
records.push(parsed);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return records;
|
|
174
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "commandmate",
|
|
3
|
-
"version": "0.49.
|
|
3
|
+
"version": "0.49.3",
|
|
4
4
|
"description": "No long blocks of time? Run an AI team from your phone. Git worktree sessions, task contracts and verification gates for Claude Code, Codex, Gemini CLI, Copilot, OpenCode, Antigravity and Command Code.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai-agents",
|
|
@@ -113,8 +113,10 @@
|
|
|
113
113
|
"rehype-sanitize": "^6.0.0",
|
|
114
114
|
"rehype-slug": "^6.0.0",
|
|
115
115
|
"remark-gfm": "^4.0.1",
|
|
116
|
+
"remark-parse": "^11.0.0",
|
|
116
117
|
"safe-regex2": "^5.0.0",
|
|
117
118
|
"tailwind-merge": "^3.6.0",
|
|
119
|
+
"unified": "^11.0.5",
|
|
118
120
|
"uuid": "^13.0.0",
|
|
119
121
|
"web-push": "^3.6.7",
|
|
120
122
|
"ws": "^8.18.3",
|
|
@@ -131,7 +133,9 @@
|
|
|
131
133
|
"@testing-library/react": "^16.3.2",
|
|
132
134
|
"@types/better-sqlite3": "^7.6.13",
|
|
133
135
|
"@types/eslint": "^8.56.12",
|
|
136
|
+
"@types/hast": "^3.0.4",
|
|
134
137
|
"@types/http-proxy": "^1.17.17",
|
|
138
|
+
"@types/mdast": "^4.0.4",
|
|
135
139
|
"@types/node": "20.19.35",
|
|
136
140
|
"@types/react": "^19.2.17",
|
|
137
141
|
"@types/react-dom": "^19.2.3",
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.49.2",
|
|
3
|
+
"date": "2026-10-31",
|
|
4
|
+
"highlight": {
|
|
5
|
+
"ja": "起動したばかりの Claude への最初のメッセージが、届いていないのに「送信済み」と表示される問題を直しました。送信や回答が失敗したときも、キーが届いたか・送り直してよいかを正しく伝えるようにしました。",
|
|
6
|
+
"en": "Fixed the first message to a just-started Claude being reported as sent when it never arrived. When a send or an answer fails, you are now told whether the keys reached the agent and whether it is safe to send again."
|
|
7
|
+
},
|
|
8
|
+
"added": [],
|
|
9
|
+
"improved": [
|
|
10
|
+
{
|
|
11
|
+
"ja": "Review の承認一覧やリポジトリの帯・パンくずから開いたときも、応答を待っているエージェントが選ばれた状態で開くようになりました。",
|
|
12
|
+
"en": "Opening a worktree from the Review approval list, the repository strip or the breadcrumb now also selects the agent that is waiting for you."
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"ja": "CLI の wait・ask・verify の --timeout が、サーバーが応答しないときも含めてコマンド全体の期限として効くようになりました。",
|
|
16
|
+
"en": "The --timeout of wait, ask and verify in the CLI now limits the whole command, including when the server does not respond."
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"ja": "CLI の respond などが出す次の操作の案内に、対象のエージェントの指定が含まれるようになりました。",
|
|
20
|
+
"en": "The follow-up hints printed by respond and other CLI commands now include the agent they refer to."
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"fixed": [
|
|
24
|
+
{
|
|
25
|
+
"ja": "起動したばかりの Claude への最初のメッセージが届かず、次の送信が失敗することがある問題を直しました。",
|
|
26
|
+
"en": "Fixed the first message to a just-started Claude sometimes not arriving and making the next send fail."
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"ja": "同じエージェントを同時に起動しようとしたとき、起動が重なって入力が混ざることがある問題を直しました。",
|
|
30
|
+
"en": "Fixed overlapping launches of the same agent sometimes mixing up typed input."
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"ja": "回答の途中で止まったとき、一部のキーが届いた可能性があることを知らせるようにしました(スマホと PC の両方)。",
|
|
34
|
+
"en": "When an answer stops partway, you are now told that some keys may have reached the agent, on both phone and desktop."
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"ja": "スマホで開き直すと、選んでいたエージェントが先頭のエージェントに戻ってしまう問題を直しました。",
|
|
38
|
+
"en": "Fixed the selected agent switching back to the first one when a worktree was reopened on the phone."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"ja": "送信が失敗したとき、送り直してよいかが CLI に伝わらないことがある問題を直しました。",
|
|
42
|
+
"en": "Fixed the CLI sometimes not being told whether a failed send is safe to retry."
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"ja": "古い場所のデータベースを移すとき、書き込み途中の更新が失われることがある問題を直しました。",
|
|
46
|
+
"en": "Fixed recent changes sometimes being lost when a database was moved from its old location."
|
|
47
|
+
}
|
|
48
|
+
]
|
|
49
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.49.3",
|
|
3
|
+
"date": "2026-11-02",
|
|
4
|
+
"highlight": {
|
|
5
|
+
"ja": "エージェント間の依頼の返答が届いたか分からないとき、自動で再送せず保留として知らせるようになりました。画面を確かめてから、CLI で確認・再試行・破棄を選べます。",
|
|
6
|
+
"en": "When it is unknown whether a reply between agents arrived, it is now held and reported instead of being resent. After checking the screen, you can confirm, retry or discard it from the CLI."
|
|
7
|
+
},
|
|
8
|
+
"added": [],
|
|
9
|
+
"improved": [],
|
|
10
|
+
"fixed": [
|
|
11
|
+
{
|
|
12
|
+
"ja": "届いたか分からない依頼の返答を、自動で再送して二重に届けることがある問題を直しました。",
|
|
13
|
+
"en": "Fixed replies between agents sometimes arriving twice when it was unknown whether the first one had arrived."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"ja": "保留になった配送を、commandmate relays resolve で確認・再試行・破棄できるようにしました。",
|
|
17
|
+
"en": "Held deliveries can now be confirmed, retried or discarded with commandmate relays resolve."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"ja": "保留になった配送が、PC とスマホの画面、依頼元の履歴、CLI の集計に出るようにしました。",
|
|
21
|
+
"en": "Held deliveries now appear on the PC and phone screens, in the requester's history and in the CLI counts."
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"ja": "Copilot・Vibe Local・OpenCode で、入力欄の準備ができる前に文字を打つことがある問題を直しました。",
|
|
25
|
+
"en": "Fixed Copilot, Vibe Local and OpenCode sometimes receiving typed text before their input box was ready."
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"ja": "OpenCode と Vibe Local で、一瞬のダイアログの表示を理由に送信を断ることがある問題を直しました。",
|
|
29
|
+
"en": "Fixed OpenCode and Vibe Local sometimes refusing a send because of a dialog that appeared only for a moment."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"ja": "OpenCode でサイドバーを開いていると、届いた送信が失敗と報告されることがある問題を直しました。",
|
|
33
|
+
"en": "Fixed a delivered OpenCode message sometimes being reported as failed while the sidebar was open."
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"ja": "Copilot でダイアログが出ているときに、待ち時間の上限まで待ってから送信を断っていた問題を直しました。",
|
|
37
|
+
"en": "Fixed Copilot waiting out the whole time limit before refusing a send while a dialog was open."
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"ja": "起動した直後の Claude への最初の送信で、届いているのに失敗と報告されることがある問題を直しました。",
|
|
41
|
+
"en": "Fixed the first message to a just-started Claude sometimes being reported as failed after it had arrived."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"ja": "prompt --json の直近の送信の結果が、古い送信の結果で上書きされることがある問題を直しました。",
|
|
45
|
+
"en": "Fixed the latest send result in prompt --json sometimes being overwritten by an older send."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"ja": "ダイアログへの回答の案内が、待っているセッションへ確実に届く宛先を示すようにしました。",
|
|
49
|
+
"en": "The hints for answering a dialog now always name the session that is actually waiting."
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=2422,exports.ids=[2422],exports.modules={682:(a,b,c)=>{c.d(b,{T:()=>f,c:()=>h});var d=c(23479);let e=/^[^\S\n]*[│┃]?[^\S\n]*([❯›●>])?[^\S\n]*(\d{1,2})[.)][^\S\n]+(\S.*?)[^\S\n]*[│┃]?$/;function f(a){return g(a)}function g(a){let b=e.exec(a);if(!b)return null;let c=Number(b[2]);return!Number.isInteger(c)||c<1?null:{glyph:b[1],number:c,label:b[3].trim()}}function h(a,b,c=8){let e=Math.min(b,a.length)-1,f=0,i=[],j=null;for(;e>=0&&f<=c;){let b=a[e];if(""===b.trim()){e--;continue}if(f++,j=g(b))break;i.unshift(b.trim()),e--}if(!j)return null;let k=e,l=[j],m=[!1],n=j.number-1,o=e-1,p=1,q=[];for(;n>=1&&o>=0&&p<=60;){let b=a[o];if(p++,""===b.trim()){o--;continue}let c=g(b);if(c&&c.number===n){l.unshift({...c,label:[c.label,...q].join(" ").trim()}),m.unshift(q.length>0),q=[],n--,o--;continue}if(c)break;q.unshift(b.trim()),o--}if(0!==n||l.length<2)return null;let r=l.findIndex(a=>void 0!==a.glyph);return{options:l.map(a=>a.label),selectedIndex:r,selectedGlyph:r<0?null:l[r].glyph??null,firstRow:o+1,lastRow:k,footer:i.join("\n"),optionRecommendations:l.map((a,b)=>m[b]?"unknown":(0,d.e3)(a.label))}}},1804:(a,b,c)=>{c.d(b,{BG:()=>g,MJ:()=>f,_:()=>l,hB:()=>k,iE:()=>d,jP:()=>e,ji:()=>i,u3:()=>j,yh:()=>h});let d={version:"2.1.240",capturedAt:"2026-08-23",paneGeometry:"200x1000"},e={version:"0.157.1",capturedAt:"2026-09-27",paneGeometry:"200x1000"},f={version:"1.0.82",capturedAt:"2026-09-04",paneGeometry:"200x1000"},g={version:"1.18.22",capturedAt:"2026-08-26",paneGeometry:"80x200"},h={version:"1.1.27",capturedAt:"2026-09-06",paneGeometry:"200x1000"},i={version:"1.54.1",capturedAt:"2026-09-20",paneGeometry:"200x1000"},j={version:"2.0.18",capturedAt:"2026-09-28",paneGeometry:"80x200"},k={version:"unmeasured",capturedAt:"never",paneGeometry:"unmeasured"},l={claude:d,codex:e,copilot:f,opencode:g,antigravity:h,"command-code":i,"opencode-v2":j,gemini:k,"vibe-local":k}},23479:(a,b,c)=>{c.d(b,{GP:()=>k,JF:()=>j,e3:()=>e,iU:()=>g});let d=/(?:^|[^A-Za-z0-9])(?:\(Recommended\)|(推奨)|\(推奨\))$/;function e(a){return d.test(a.trim())}let f=new Set(["(Recommended)","(推奨)","(推奨)"]);function g(a){return f.has(a.trim())}let h=/^\p{M}$/u;function i(a){let b=0;for(let c of a){let a=c.codePointAt(0)??0;a>=32&&a<127?b+=1:h.test(c)||(b+=2)}return b}function j(a){let b=0;for(let c of a){let a=0;for(let b of c.trimEnd())h.test(b)||(a+=1);a>b&&(b=a)}return b}function k(a,b,c){let d=b.trim().split(/\s+/,1)[0]??"";return""!==d&&i(a.trimEnd())+1+i(d)<=c}},27789:(a,b,c)=>{c.d(b,{$I:()=>C,DR:()=>m,Dd:()=>B,E6:()=>y,Jn:()=>A,Mt:()=>g,Nc:()=>L,Qh:()=>u,RK:()=>s,UO:()=>H,X3:()=>z,Y7:()=>l,Zu:()=>J,aW:()=>G,bh:()=>E,gm:()=>n,ir:()=>D,mk:()=>i,pn:()=>F,sB:()=>p,zZ:()=>r});var d=c(51297),e=c(46423),f=c(65912);let g=/•\s*(Planning|Searching|Exploring|Running|Thinking|Working|Reading|Writing|Analyzing|Ran|Deciding)/m,h=/esc to interrupt/,i=/^[•◦]\s.*\((?:\d+h\s*)?(?:\d+m\s*)?\d+s\s*•\s*esc to interrupt\)/m,j=/^■ Conversation interrupted\b/,k=/^\d+ background terminals? running\b/;function l(a){let b=s(a);if(b<0)return!1;for(let c=b-1;c>=0;c--){let b=a[c].trim();if(!(""===b||k.test(b)))return j.test(b)}return!1}function m(a,b){let c=(0,d.aJ)(a.slice(Math.max(0,a.length-b)).join("\n"));if(h.test(c))return!0;let f=-1;for(let b=a.length-1;b>=Math.max(0,a.length-8);b--)if(n.test((0,d.aJ)(a[b]))){f=b;break}if(f<0)return g.test(c);let i=Math.max(0,f-e.$+1),j=(0,d.aJ)(a.slice(i,f+1).join("\n"));return g.test(j)}let n=/^›\s*/m,o=/Do you trust|Trust this folder\?/,p=RegExp(`Skip until next version|${o.source}|Press enter to continue|^\\s*›\\s*\\d+\\.\\s`,"m"),q=/^\s*›(?!\s*\d+\.)/;function r(a){let b=a.split("\n"),c=-1,d=-1;for(let a=0;a<b.length;a++){let e=b[a];if(p.test(e)){c=a;continue}q.test(e)&&(d=a)}return d>=0&&d>c}function s(a){for(let b=a.length-1;b>=0;b--)if(q.test(a[b]))return b;return -1}function t(a){if("string"!=typeof a){let b=a.liveRegion;return"codex"===b.tool?"composer"===b.anchor?a.contentLines.slice((b.composerEndRow??b.startRow)+1):a.contentLines:t(a.clean)}let b=a.split("\n");return b.slice(s(b)+1)}function u(a){let b=t(a).join("\n");return""===b?null:b.includes("Skip until next version")||b.includes("Update")&&b.includes("Skip")?"update":o.test(b)?"trust":b.includes("Press enter to continue")?"press-enter":null}let v=/press\s+t\s+to\s+trust\s+all\s*;/i,w=/press\s+t\s+to\s+trust\s*;/i,x=[/skip until next version/i,/^\s*[›❯]?\s*\d+\.\s*Update now/im];function y(a){let b=t(a),c=[];for(let a=b.length-1;a>=0&&c.length<12;a--)""!==b[a].trim()&&c.unshift(b[a]);if(0===c.length)return null;let d=c.join("\n");for(let a=c.length-1;a>=0;a--){let b=c[a];if(v.test(b))return"hooks-list";if(w.test(b))return"hooks-detail";if(B.test(b))break;if(x.some(a=>a.test(b)))return"update";if(o.test(b))return"trust";if(b.includes("Continue without trusting")&&d.includes("Hooks need review"))return"hooks-review"}return null}let z=/^─.*Worked for.*─+$/m,A=/press\s+enter\s+to\s+(?:confirm|select)/i,B=/esc\s+to\s+cancel/i,C=/^enter\s+to\s+submit\s*\|\s*esc\s+to\s+cancel$/im,D=/^enter\s+select\s*·\s*esc\s+back$/im,E=/^enter\s+default\s*·\s*s\s+session\s*·\s*esc\s+back$/im,F=/(?:↑\/↓|pgup\/pgdn|home\/end)\s+to\s+(?:scroll|page|jump)|to\s+edit\s+(?:prev|next|message)/i,G=/^\s*\S.*·\s*~?\/\S*\s*$/,H=/^\s*\S[^·]*·\s*~?\/\S*(?:\s*·[^\n]*|[^\S\n]{2,}\S[^\n]*)$/,I=/^›(\s|$)/;function J(a){let b=a.length-1;for(;b>=0&&""===(0,d.aJ)(a[b]).trim();)b--;if(b<0)return -1;let c=-1;for(let e=b;e>=Math.max(0,b-12);e--)if(I.test((0,d.aJ)(a[e]))){c=e;break}if(c<0)return -1;let e=(0,f.kT)(a[c]);if("composer"===e)return c;if(null!==e)return -1;for(let e=c+1;e<=b;e++)if(G.test((0,d.aJ)(a[e])))return c;return -1}let K=/^›\s+\S/;function L(a,b,c,e){let g=e;for(let e=Math.min(b,a.length)-1;e>=Math.max(0,b-c);e--){if(!K.test((0,d.aJ)(a[e])))continue;let b=(0,f.kT)(a[e]);if("option"!==b){if("transcript-echo"===b)return e;if(!g){g=!0;continue}return e}}return -1}},42422:(a,b,c)=>{c.d(b,{OM:()=>M.OM,Ly:()=>M.Ly,lE:()=>M.lE,kT:()=>M.kT,kn:()=>M.kn,HR:()=>M.HR,d0:()=>M.d0,VF:()=>M.VF,aU:()=>G.aU,l8:()=>G.l8,hx:()=>G.hx,XY:()=>G.XY,F0:()=>G.F0,Fw:()=>G.Fw,Dd:()=>h.Dd,sB:()=>h.sB,bh:()=>h.bh,$I:()=>h.$I,pn:()=>h.pn,ir:()=>h.ir,gm:()=>h.gm,Jn:()=>h.Jn,aW:()=>h.aW,Mt:()=>h.Mt,UO:()=>h.UO,jk:()=>Q,WK:()=>O,k0:()=>P,E0:()=>L.E0,JN:()=>L.JN,rX:()=>L.Ki,oD:()=>L.oD,Ub:()=>L.Ub,Du:()=>L.Du,V:()=>L.V,A:()=>L.A,J7:()=>L.J7,rb:()=>L.rb,Jr:()=>L.Jr,Fg:()=>L.Fg,y:()=>L.y,tJ:()=>L.tJ,wN:()=>H,s0:()=>I,Cc:()=>t,vU:()=>j,Ty:()=>o,kD:()=>p,uA:()=>k,sy:()=>i,Md:()=>m,LO:()=>y,sx:()=>A,a2:()=>l,$t:()=>n,c7:()=>C,wK:()=>B,xL:()=>D,fW:()=>f.fW,Dj:()=>J,b2:()=>K,KO:()=>_,ut:()=>Z,GT:()=>G.GT,Zu:()=>h.Zu,RK:()=>h.RK,Nc:()=>h.Nc,I$:()=>R,wv:()=>L.wv,x7:()=>u,mu:()=>w,M4:()=>v,dF:()=>U,_X:()=>$,Qh:()=>h.Qh,E6:()=>h.E6,bH:()=>M.bH,lX:()=>G.lX,zZ:()=>h.zZ,DR:()=>h.DR,Rx:()=>L.Rx,gT:()=>L.gT,Ok:()=>E,U1:()=>e.U,dx:()=>M.dx,Wn:()=>L.Wn,lQ:()=>G.lQ,aJ:()=>N.aJ,_A:()=>g._,pV:()=>x,c:()=>aa});var d=c(72626),e=c(56993),f=c(74099),g=c(47165),h=c(27789);let i=/Ask anything(?:\.\.\.|\u2026)/,j=/^[^\S\n]*[\u2502\u2503][^\S\n]*Ask anything(?:\.\.\.|\u2026)/m,k=/tab agents\s+ctrl\+p commands/,l=/Thinking:/,m=/\u25A3\s+\w+\s+·\s+\S+(?:\s+·\s+(?:[\d]+h\s*)?(?:[\d]+m\s*)?[\d.]+s)?/,n=/\u25A3\s+\w+\s+·\s+[^·\n]+·\s+(?:\d+h\s*)?(?:\d+m\s*)?[\d.]+s/,o=/^[^\S\n]*[\u2502\u2503][^\S\n]*Allow once[^\S\n]+Allow always[^\S\n]+Reject\b/m,p=/esc (?:again to )?interrupt/,q=/^[^\S\n]*╹▀{4,}/,r=/^[^\S\n]*[│┃]/,s=/^[^\S\n]*[│┃][^\S\n]*\S/,t=/\d+(?:\.\d+)?[KMGT]?\s+\(\d+%\)\s+·\s+\$/;function u(a){let b=a.length-1;for(;b>=0&&""===a[b].trim();)b--;if(b<0)return -1;let c=b=>{let c=b;for(;c-1>=0&&r.test(a[c-1]);)c--;return c};for(let d=b;d>=0;d--)if(q.test(a[d]))return c(d);return r.test(a[b])?c(b):-1}function v(a,b){let c=b>=0?b:a.length;for(let b=c-1;b>=0;b--){if(!s.test(a[b]))continue;let d=b;for(;d+1<c&&r.test(a[d+1]);)d++;return d}return -1}function w(a){let b=-1;for(let c=a.length-1;c>=0;c--)if(q.test(a[c])){b=c;break}if(b<0)return null;let c=b;for(;c-1>=0&&r.test(a[c-1]);)c--;let d=b-1;return d<c?null:a.slice(c,d)}function x(a){return a.replace(r,"").trim()}let y=/^[^\S\n]*(?:Select[^\S\n]+(?:model|provider)|Connect[^\S\n]+a[^\S\n]+provider)[^\S\n]{2,}esc[^\S\n]*$/m,z=/^[\u2503\u2579\u25A3\u2580\u2500\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C]+$/,A=[z,/\u2B1D{4,}/,/^Build\s+/,k,p,i,t,f.fW],B=/^[^\S\n]*[\u2502\u2503][^\S\n]*Ask anything(?:\.\.\.|\u2026)/m,C=/ctrl\+p commands/,D=/esc interrupt/;function E(a){return B.test(a)||C.test(a)}let F=[z,C,D,/Ask anything(?:\.\.\.|\u2026)/,/^Build\s+·/,f.fW];var G=c(79204);let H=/^[>❯]\s*$|^\s*[>❯]\s+Type your message.*$/m,I=/[\u2800-\u28FF]|Thinking\.\.\./,J=/ctx:\d+%\s*[>❯]/m,K=/[\u2800-\u28FF]|Thinking|⠋|⠙|⠹|⠸|⠼|⠴|⠦|⠧|⠇|⠏|Running|Executing/;var L=c(71188),M=c(69082),N=c(51297);let O=/^❯(\s*$|\s+\S)/m,P=RegExp(`^[^\\S\\n]*[\xb7○◇☆✧⌘][^\\S\\n]+[A-Za-z]+…|^[^\\S\\n]*✻ Thinking…|${/esc to interrupt/.source}`,"m"),Q=/\?\s+for\s+shortcuts|»\s+accept edits on|»\s+permission bypass on|»\s+don't-ask on|^[^\S\n]*plan mode\s/m;function R(a){let b=a=>/^─{10,}$/.test((0,N.aJ)(a??"").trimEnd()),c=a.length-1;for(;c>=0&&""===a[c].trim();)c--;if(c<0)return -1;let d=-1;for(let e=c;e>=Math.max(0,c-4);e--)if(b(a[e])){d=e;break}if(d<0)return -1;let e=-1;for(let c=d-1;c>=Math.max(0,d-40);c--)if(b(a[c])){e=c;break}return e<0||!/^❯/.test((0,N.aJ)(a[e+1]??""))?-1:e}let S=[/^─{10,}$/,/^❯\s*$/,/^❯\s+Ask your question\.\.\./,Q,P,/^[^\S\n]*✻\s+(?:Worked|Thought)\s+for\b/,/^[^\S\n]*◼\s+Ran\s+\d+\s+.*hooks?\b/,/^#\s+Command Code v\d/,/^#\s+models:\s/,/^#\s+[~/]/,/^[^\S\n]*[█▀▄▌▐]{3,}/,f.fW],T=/^[^\S\n]*[^\s\u2502\u2503\u2579\u2580][^\n]*?[^\S\n]{8,}esc[^\S\n]*$/m;function U(a){let b=T.exec(a);return null===b?null:b[0].trim().replace(/\s+esc$/,"")}let V=(0,d.h)("cli-patterns"),W={claude:{promptPattern:G.hx,separatorPattern:G.g0,thinkingPattern:G.j7,skipPatterns:[/^─{10,}$/,/^[>❯]\s*$/,G.j7,/^\s*[⎿⏋]\s+Tip:/,/^\s*Tip:/,/^\s*\?\s*for shortcuts/,/to interrupt\)/,f.fW],promptOptions:{requireDefaultIndicator:!1},fullFramePrompt:!0},codex:{promptPattern:h.gm,separatorPattern:h.X3,thinkingPattern:h.Mt,skipPatterns:[/^─.*─+$/,/^›\s*$/,/^›\s+(Implement|Find and fix|Type)/,h.Mt,/^\s*\d+%\s+context left/,/^\s*for shortcuts$/,/╭─+╮/,/╰─+╯/,/•\s*Ran\s+/,/^\s*└/,/^\s*│/,/\(.*esc to interrupt\)/,f.fW],promptOptions:void 0,fullFramePrompt:!0},gemini:{promptPattern:H,separatorPattern:/^[─━]{3,}$/m,thinkingPattern:I,skipPatterns:[H,I,/^\s*$/,/Gemini\s+\d+\.\d+/,f.fW],promptOptions:void 0,fullFramePrompt:!1},"vibe-local":{promptPattern:J,separatorPattern:/^[·]{10,}$/m,thinkingPattern:K,skipPatterns:[J,K,/^\s*$/,/vibe-local|vibe-coder/,/ctx:\s*\d+%/,/Model\s+\w/,/Engine\s+\w/,/Mode\s+/,/RAM\s+/,/CWD\s+/,/^[·]{10,}$/,/✦\s*Ready/,/ESC:\s*stop/,f.fW],promptOptions:void 0,fullFramePrompt:!1},opencode:{promptPattern:i,separatorPattern:z,thinkingPattern:l,skipPatterns:A,promptOptions:{requireDefaultIndicator:!1,hasNumberedDialogs:!1},fullFramePrompt:!0},copilot:{promptPattern:L.Du,separatorPattern:L.A,thinkingPattern:L.rb,skipPatterns:L.J7,promptOptions:{requireDefaultIndicator:!1},fullFramePrompt:!0},antigravity:{promptPattern:M.lE,separatorPattern:M.kn,thinkingPattern:M.VF,skipPatterns:M.Z6,promptOptions:{requireDefaultIndicator:!1},fullFramePrompt:!1},"command-code":{promptPattern:O,separatorPattern:/^─{10,}$/m,thinkingPattern:P,skipPatterns:S,promptOptions:void 0,fullFramePrompt:!1},"opencode-v2":{promptPattern:B,separatorPattern:z,thinkingPattern:D,skipPatterns:F,promptOptions:void 0,fullFramePrompt:!1}};function X(a){return Object.prototype.hasOwnProperty.call(W,a)?W[a]:void 0}function Y(a){return X(a)??W.claude}function Z(a,b){let c=V.withContext({cliToolId:a});c.debug("detectThinking:check",{contentLength:b.length});let d=Y(a).thinkingPattern.test(b);return c.debug("detectThinking:result",{isThinking:d}),d}function $(a){let b=Y(a);return{promptPattern:b.promptPattern,separatorPattern:b.separatorPattern,thinkingPattern:b.thinkingPattern,skipPatterns:[...b.skipPatterns]}}function _(a){let b=X(a)?.promptOptions;return void 0===b?void 0:{...b}}function aa(a){return X(a)?.fullFramePrompt??!1}},46423:(a,b,c)=>{c.d(b,{$:()=>d});let d=5},47165:(a,b,c)=>{c.d(b,{_:()=>d});function d(a){return a.split("\n").map(a=>/^[\u2502\u2503\u256D\u256E\u256F\u2570\u2500\u2579\u2580\u2588\s]+$/.test(a)?"":a.replace(/^\s*[\u2502\u2503]\s?/,"").replace(/\s*[\u2502\u2503\u2588]$/,"")).join("\n")}},51297:(a,b,c)=>{c.d(b,{aJ:()=>f});let d="\\x1b\\][^\\x07\\x1b]*(?:\\x07|\\x1b\\\\)";RegExp(d,"g");let e=RegExp(`\\x1b\\[[0-9;]*[a-zA-Z]|${d}|\\[[0-9;]*m`,"g");function f(a){return a.replace(e,"")}},56993:(a,b,c)=>{c.d(b,{U:()=>e});let d=new Set(["sh","bash","zsh","fish","dash","ksh","tcsh","csh"]);function e(a){return d.has(a.trim().replace(/^-/,""))}},65912:(a,b,c)=>{c.d(b,{AT:()=>p,Gs:()=>n,kT:()=>j,kp:()=>k,t:()=>l});var d=c(72626),e=c(682);let f=(0,d.h)("codex-dialog-rules"),g={version:"0.157.1"},h=/press\s+\S+\s+to\s+\S|esc\s+(?:to\s+)?(?:cancel|close|dismiss|quit|exit|back|go\s+back|skip)/i,i={bold:!1,dim:!1,fg:null};function j(a){if(!a.includes("\x1b"))return null;let b=function(a){let b=[],c=i,d=0;for(;d<a.length;){let e=a[d];if("\x1b"!==e){b.push({ch:e,attrs:c}),d++;continue}let f=a[d+1];if("["===f){let b=d+2;for(;b<a.length&&!/[A-Za-z]/.test(a[b]);)b++;if(b>=a.length)break;"m"===a[b]&&(c=function(a,b){let c=""===a?["0"]:a.split(";"),{bold:d,dim:e,fg:f}=b;for(let a=0;a<c.length;a++){let b=""===c[a]?0:Number(c[a]);if(!Number.isNaN(b)){if(38===b){let b=""===c[a+1]||void 0===c[a+1]?-1:Number(c[a+1]),d=5===b?2:2===b?4:1;f=c.slice(a+1,a+1+d).join(";"),a+=d;continue}if(48===b||58===b){let b=""===c[a+1]||void 0===c[a+1]?-1:Number(c[a+1]);5===b?a+=2:2===b?a+=4:a+=1;continue}0===b?(d=!1,e=!1,f=null):1===b?d=!0:2===b?e=!0:22===b?(d=!1,e=!1):39===b?f=null:(b>=30&&b<=37||b>=90&&b<=97)&&(f=String(b))}}return{bold:d,dim:e,fg:f}}(a.slice(d+2,b),c)),d=b+1;continue}if("]"===f){let b=d+2;for(;b<a.length;){if("\x07"===a[b]){b++;break}if("\x1b"===a[b]&&"\\"===a[b+1]){b+=2;break}b++}d=b;continue}d+=2}return b}(a),c=b.findIndex(a=>""!==a.ch.trim());if(c<0||"›"!==b[c].ch)return null;let d=b[c].attrs;if(d.dim)return"transcript-echo";let e=b.slice(c+1).find(a=>""!==a.ch.trim());return e?.attrs.bold?"option":e?.attrs.dim?"composer":null!==d.fg&&e?.attrs.fg===d.fg?"option":"composer"}function k(a){let b=a.split("\n");for(let a=b.length-1;a>=0;a--){let c=j(b[a]);if(null!==c)return{kind:c,row:a}}return null}function l(a,b,c){let d=k(a),f=(0,e.c)(b,c),g=null!==f&&"›"===f.selectedGlyph,i=d?.kind==="option"?"glyph":g&&d?.kind!=="composer"&&d?.kind!=="transcript-echo"?"numbered-block":null;if(null===i)return null;let j=null!==f?f.footer:function(a,b,c){let d=[];for(let e=b+1;e<c&&d.length<8;e++){let b=a[e].trim();""!==b&&d.push(b)}return d.join("\n")}(b,function(a,b){for(let c=Math.min(b,a.length)-1;c>=0;c--)if(a[c].trimStart().startsWith("›"))return c;return -1}(b,c),c);return{by:i,options:f?.options??[],footer:j,footerRecognised:h.test(j)}}let m=/^\s*›\s*\d{1,2}[.)]\s/;function n(a,b,c){let d=k(a);if(null!==d)return"composer"===d.kind;let e=Math.min(c,b.length)-1;for(;e>=0&&""===b[e].trim();)e--;if(e<0)return!1;let f=b[e];return f.trimStart().startsWith("›")&&!m.test(f)}let o=new Set;function p(a){let b=a.slice(0,200);!o.has(b)&&(o.size>=64||(o.add(b),f.warn("codexDialogFooterUnrecognised",{footer:b,verifiedAgainst:g.version,hint:"codex reworded a dialog footer; widen CODEX_DIALOG_FOOTER_PATTERN after re-capturing the frame"})))}},69082:(a,b,c)=>{c.d(b,{HR:()=>o,Ly:()=>l,OM:()=>n,VF:()=>g,VI:()=>q,YH:()=>j,Z6:()=>t,bH:()=>s,cR:()=>k,d0:()=>m,dx:()=>r,kT:()=>i,kn:()=>h,lE:()=>f,wf:()=>p});var d=c(74099);let e=">[^\\S\\n]+[A-Z][A-Za-z-]*[^\\S\\n]mode:[^\\n]*\\(shift\\+tab to cycle\\)[^\\S\\n]*";RegExp(`^${e}$`,"m");let f=RegExp(`^(?:>\\s*|${e})$`,"m"),g=/[\u2800-\u28FF]|Generating|esc to cancel/,h=/^─{3,}$/m,i=/Switch Model|↑\/↓\s*Navigate/m,j=/↑\/↓\s*Navigate/,k=/↑\/↓\s*Navigate\s*·\s*tab Amend\b/,l=/^\s*>?\s*\d+\.\s+\S/m,m=/^\s*Switch Model\s*$/,n=/^\s*(?:─{3,}\s*$|[●⎿▸]|>(?!\s*\d+\.\s+\S))/,o=/^\s*\[1\]\s*Good\s+\[2\]\s*Fine\s+\[3\]\s*Bad\s+\[0\]\s*Skip\s*$/m,p=/Do you trust the contents of this project\?/;function q(a){return p.test(a)&&j.test(a)}function r(a){let b=-1;for(let c=a.length-1;c>=0;c--)if(j.test(a[c])){b=c;break}if(b<0)return null;for(let c=b+1;c<a.length;c++)if(f.test(a[c]))return null;let c=Math.max(0,b-60),d=c;for(let e=b-1;e>=c;e--)if(n.test(a[e])){d=e+1;break}return{start:d,footer:b}}function s(a){let b=a.split("\n"),c=r(b);if(null===c)return!1;let d=0;for(let a=c.start;a<c.footer;a++){let c=b[a];if(m.test(c))return!1;l.test(c)&&d++}return d>=2}let t=[h,/^>\s*$/,/^\?\s+for\s+shortcuts/,g,/[▄▀█▌▐]/,d.fW]},71188:(a,b,c)=>{c.d(b,{A:()=>l,Du:()=>g,E0:()=>u,Fg:()=>t,J7:()=>C,JN:()=>p,Jr:()=>r,Ki:()=>x,Rx:()=>B,Ub:()=>j,V:()=>v,Wn:()=>k,gT:()=>w,oD:()=>A,rb:()=>h,rc:()=>z,tJ:()=>i,wv:()=>o,y:()=>q});var d=c(51297),e=c(74099),f=c(47165);let g=/^[>❯]\s|^\?\s+/m,h=/[\u2800-\u28FF]|\(Esc to cancel|Reasoning\s+[■▪▮]|\.\.\.\s+Thinking/,i=/\besc\s+interrupt\b/,j=/\/\s+commands\b|\?\s+(?:help\b|for\s+shortcuts\b)/;function k(a){for(let b=a.length-1;b>=0;b--){let c=a[b];if(""!==c.trim()){if(i.test(c))return"working";if(j.test(c))return"idle";break}}return null}let l=/^─{10,}$/m,m=/^(?:─{10,}|╻▄{10,}|╹▀{10,})$/,n=/^ {0,2}[>❯┃]/;function o(a){let b=a=>m.test((0,d.aJ)(a).trim()),c=a.length-1;for(;c>=0&&""===(0,d.aJ)(a[c]).trim();)c--;if(c<0)return -1;let e=-1;for(let d=c;d>=Math.max(0,c-2);d--)if(b(a[d])){e=d;break}if(e<0)return -1;let f=-1;for(let c=e-1;c>=Math.max(0,e-40);c--)if(b(a[c])){f=c;break}return f<0||!n.test((0,d.aJ)(a[f+1]??""))?-1:Math.max(0,f-1)}let p=/^\s*[│└╰╭╮╯├┤┬┴┼]/,q=/^ {0,2}[>❯]\s+\S/,r="Get|Read|Run|Search|Write|Edit|Delete|List|Create|Fetch|Explore|Execute|Install|Asked user|Asking user|Model changed to:",s=RegExp(`^\\s*(?:\\/|\\{\\}|[A-Z][A-Z0-9+#]{1,3})\\s+(?:${r})[\\s:]`),t=/^ {2,}\S/,u=[/No copilot-instructions\.md found/,/Copilot uses AI, so always check for mistakes\./,/Copilot v\d[\w.]*\s+uses AI/,/^\s*(?:●\s+)?GitHub Copilot\s+v\d/m,/^\s*(?:●\s+)?Tip:\s*\//m,/Describe a task to get started/,/Prefer a visual workspace\?/,/what would you like to work on\?/i],v=/^(?=[^\n]*·)[^\n]*(?:↑\/?↓|\besc\s+(?:to\s+)?(?:cancel|close)\b)/m;function w(a){if(null!==k(a))return!1;let b=0;for(let c=a.length-1;c>=0;c--){let d=a[c],e=d.trim();if(""!==e){if(++b>3)break;if(!(e.startsWith("│")||e.endsWith("│"))&&v.test(d))return!0}}return!1}let x=["Confirm folder trust","Do you trust the files in this folder?"],y=/^[ \t]*(?:[>❯][ \t]*)?1\.[ \t]+Yes[ \t]*$/m,z=/^(?:Yes|Yes, and remember this folder for future sessions|No \(Esc\))$/,A="1";function B(a){return!!x.every(b=>a.includes(b))&&y.test((0,f._)(a))}let C=[e.fW,l,h,v,/^\s*⌄\s/,/^\s*[╻╹]?[▀▄]{10,}\s*$/,s,p,/^GitHub Copilot\s+v/,/[█▘▝▖▗▔▄▌▐]/,/[╭╮╰╯│]/,/\[⎇\s+\w[^\]]*\]/,/^shift\+tab\s/,/^\?\s+for\s+shortcuts/,/^ctrl\+[a-z]\s+\w/,/^[❯>]\s*(Type\s+@|$)/,/^\s*(?:●\s+)?Tip:\s*\//,/^\s*Current\s+Sessions\s+Issues\s+Pull requests\s+Gists\s*$/,/^Describe a task to get started/,/^Copilot uses AI, so always check for mistakes\.$/,/^● 💡/,/^● Environment loaded:/]},74099:(a,b,c)=>{c.d(b,{fW:()=>d});let d=/\[Pasted text #\d+/},79204:(a,b,c)=>{c.d(b,{F0:()=>v,Fw:()=>w,GT:()=>n,Tk:()=>h,V2:()=>e.iE,W1:()=>f,Wq:()=>i,XY:()=>u,aU:()=>k,g0:()=>m,hx:()=>l,j7:()=>j,ji:()=>g,l8:()=>t,lQ:()=>q,lX:()=>r});var d=c(94154),e=c(1804);let f=/^\s*[✻✽✶✢✳⦿◉●·⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏]\s+\S+\s+for\s+(?:\d+m\s*)?\d+(?:\.\d+)?s(?:\s|$|\s*·)/,g=/^\s*╭─+\s*Claude Code v/,h=/^\s*[>❯]\s+\S/,i=/·\s*\/effort\s*$/,j=RegExp(`[✻✽⏺\xb7∴✢✳✶⦿◉●○◌◎⊙⊚⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏]\\s+.+…|esc to interrupt`,"m"),k=/esc to interrupt/,l=/^[>❯](\s*$|\s+\S)/m,m=/^─{10,}$/m;function n(a){let b=(0,d.p4)(a);return null===b?-1:Math.max(0,b.openingSeparator-1)}let o=/Yes, I trust this folder/m,p=/^\s*[>❯]\s+\S/;function q(a){let b=a.split("\n"),c=s(b);if(-1===c)return null;for(let a=0;a<=3;a++)for(let d of 0===a?[0]:[-1,1]){let e=c+d*a;if(e<0||e>=b.length||!p.test(b[e]))continue;let f=d<0?"Down":"Up";return[...Array(a).fill(f),"Enter"]}return null}function r(a){return -1!==s(a.split("\n"))}function s(a){for(let b=a.length-1;b>=0;b--)if(o.test(a[b]))return a.slice(b+1).some(a=>m.test(a))?-1:b;return -1}let t=/Enter\s+to\s+set\s+as\s+default\b/i,u=/Enter\s+to\s+(?:select\s+.*to\s+navigate|confirm\s+·\s+(?:Esc|s\s+for\s+this\s+session\s+only)|set\s+as\s+default)/,v=["Claude Code cannot be launched inside another Claude Code session"],w=[/^Error:.*Claude Code/]},94154:(a,b,c)=>{c.d(b,{Di:()=>l,Zs:()=>r,ji:()=>q,mO:()=>n,p4:()=>f,q9:()=>s,wn:()=>p,zF:()=>m});var d=c(51297);let e=/^[>❯]/;function f(a){let b=a=>/^─{10,}$/.test((0,d.aJ)(a).trimEnd()),c=a.length-1;for(;c>=0&&""===a[c].trim();)c--;if(c<0)return null;let f=-1;for(let d=c;d>=Math.max(0,c-4);d--)if(b(a[d])){f=d;break}if(f<0)return null;let g=-1;for(let c=f-1;c>=Math.max(0,f-40);c--)if(b(a[c])){g=c;break}return g<0||!e.test((0,d.aJ)(a[g+1]??""))?null:{openingSeparator:g,closingSeparator:f}}let g=/^\u203A/;function h(a){return void 0===a||""===(0,d.aJ)(a).trim()}function i(a){if(void 0===a)return!1;let b=o(a);if(0===b.length||"›"!==b[0].ch||b[0].dim||b.length>1&&" "!==b[1].ch)return!1;let c=b.slice(2).find(a=>" "!==a.ch);return void 0===c||!c.bold}function j(a){if(!a.includes("\x1b"))return null;let b=o(a),c=b.findIndex(a=>""!==a.ch.trim());if(c<0||"›"!==b[c].ch)return null;let d=b[c];if(d.dim)return"transcript-echo";let e=b.slice(c+1).find(a=>""!==a.ch.trim());return e?.bold?"option":e?.dim?"composer":null!==d.fg&&e?.fg===d.fg?"option":"composer"}function k(a){return i(a)&&!function(a){if(void 0===a)return!1;let b=o(a);return b.length>1&&"›"===b[0].ch&&" "===b[1].ch&&b[1].bold}(a)}function l(a){for(let b=a.length-1;b>=0;b--){let c=j(a[b]);if("option"===c)break;if("composer"===c&&k(a[b]))return b}return -1}function m(a,b){for(let c=a.length-1;c>b;c--){let b=j(a[c]);if("option"===b)return!0;if("composer"===b&&k(a[c]))break}return!1}function n(a){let b=a.length-1;for(;b>=0&&h(a[b]);)b--;if(b<0)return null;for(let c=0;c<4&&b>=0;c++){let c=b,d=b;for(;d>0&&!h(a[d-1]);)d--;if(i(a[d]))return{firstRow:d,lastRow:Math.min(c,d+40-1)};for(b=d-1;b>=0&&h(a[b]);)b--}return null}function o(a){let b=[],c={dim:!1,bold:!1,fg:null},d=0;for(;d<a.length;){let e=a[d];if("\x1b"!==e){b.push({ch:e,dim:c.dim,bold:c.bold,fg:c.fg}),d++;continue}let f=a[d+1];if("["===f){let b=d+2;for(;b<a.length&&!/[A-Za-z]/.test(a[b]);)b++;if(b>=a.length)break;"m"===a[b]&&(c=function(a,b){let c=""===a?["0"]:a.split(";"),{dim:d,bold:e,fg:f}=b;for(let a=0;a<c.length;a++){let b=""===c[a]?0:Number(c[a]);if(!Number.isNaN(b)){if(38===b||48===b||58===b){let d=""===c[a+1]||void 0===c[a+1]?-1:Number(c[a+1]),e=5===d?2:2===d?4:1;38===b&&(f=c.slice(a+1,a+1+e).join(";")),a+=e;continue}0===b?(d=!1,e=!1,f=null):22===b?(d=!1,e=!1):1===b?e=!0:2===b?d=!0:39===b?f=null:(b>=30&&b<=37||b>=90&&b<=97)&&(f=String(b))}}return{dim:d,bold:e,fg:f}}(a.slice(d+2,b),c)),d=b+1;continue}if("]"===f){let b=d+2;for(;b<a.length;){if("\x07"===a[b]){b++;break}if("\x1b"===a[b]&&"\\"===a[b+1]){b+=2;break}b++}d=b;continue}d+=2}return b}let p=new Set(["claude","codex"]);function q(a,b){if(!p.has(b))return{text:"",state:"unsupported_tool"};let c=a.split("\n"),d=function(a,b){if("claude"===b){let b=f(a);return null===b?null:{firstRow:b.openingSeparator+1,lastRow:b.closingSeparator-1,glyph:e}}let c=n(a);return null===c?null:{firstRow:c.firstRow,lastRow:c.lastRow,glyph:g}}(c,b);return null===d?{text:"",state:"no_composer"}:t(c,d)}function r(a,b){let c=q(a,b);if("codex"!==b||"no_composer"===c.state||"unsupported_tool"===c.state)return c;let d=a.split("\n"),e=n(d);return null!==e&&m(d,e.firstRow)?{text:"",state:"no_composer"}:c}function s(a,b){let c=a.length-1;for(;c>=0&&h(a[c]);)c--;let d=c;for(;d>0&&!h(a[d-1]);)d--;let e=b;for(;e+1<a.length&&!h(a[e+1]);)e++;return t(a,{firstRow:b,lastRow:d>e?d-1:c,glyph:g})}function t(a,b){let c=[],d=[];for(let e=b.firstRow;e<=b.lastRow;e++){let f=function(a,b,c){if(b){let b=a.findIndex(a=>c.test(a.ch));if(b<0)return a;let d=b+1;return d<a.length&&/\s/.test(a[d].ch)&&d++,a.slice(d)}let d=0;for(;d<2&&d<a.length&&" "===a[d].ch;)d++;return a.slice(d)}(o(a[e]??""),e===b.firstRow,b.glyph);c.push(f.filter(a=>!a.dim).map(a=>a.ch).join("").trimEnd()),d.push(f.map(a=>a.ch).join("").trimEnd())}let e=u(c).join("\n");return""!==e.trim()?{text:e.slice(0,2e3),state:"content"}:{text:"",state:""===u(d).join("\n").trim()?"empty":"ghost"}}function u(a){let b=a.length;for(;b>0&&""===a[b-1].trim();)b--;return a.slice(0,b)}}};
|