commandmate 0.48.0 → 0.49.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +292 -285
- package/.next/app-path-routes-manifest.json +35 -34
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +9 -9
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +8 -0
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/capabilities/route.js +1 -1
- package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js +2 -2
- package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/claude-done/route.js +2 -2
- package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/escalation/route.js +1 -1
- package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/subscriptions/route.js +1 -1
- package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/vapid/route.js +1 -1
- package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/[relayId]/route.js +1 -0
- package/.next/server/app/api/relays/[relayId]/route.js.nft.json +1 -0
- package/.next/server/app/api/relays/[relayId]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/relays/route.js +1 -1
- package/.next/server/app/api/relays/route.js.nft.json +1 -1
- package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/route.js +1 -1
- package/.next/server/app/api/repositories/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-agents/route.js +1 -1
- package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route.js +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/route.js +1 -1
- package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-reference/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/env/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/notes/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js +144 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +3 -3
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js +103 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/more/page_client-reference-manifest.js +1 -1
- package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
- package/.next/server/app/review/page_client-reference-manifest.js +1 -1
- package/.next/server/app/sessions/page.js +1 -1
- package/.next/server/app/sessions/page.js.nft.json +1 -1
- package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/[skillId]/page.js +1 -1
- package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
- package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js +2 -2
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/page.js +11 -11
- package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +35 -34
- package/.next/server/chunks/1601.js +2 -2
- package/.next/server/chunks/1656.js +2 -2
- package/.next/server/chunks/2069.js +1 -0
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/2404.js +1 -1
- package/.next/server/chunks/2422.js +1 -1
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/2534.js +1 -1
- package/.next/server/chunks/3241.js +1 -1
- package/.next/server/chunks/3773.js +1 -0
- package/.next/server/chunks/3801.js +31 -0
- package/.next/server/chunks/4243.js +1 -1
- package/.next/server/chunks/4248.js +1 -1
- package/.next/server/chunks/5209.js +1 -1
- package/.next/server/chunks/5354.js +1 -1
- package/.next/server/chunks/{9130.js → 5630.js} +1 -1
- package/.next/server/chunks/5775.js +1 -0
- package/.next/server/chunks/610.js +1 -0
- package/.next/server/chunks/6119.js +1 -1
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6401.js +1 -1
- package/.next/server/chunks/6486.js +1 -1
- package/.next/server/chunks/6781.js +1 -1
- package/.next/server/chunks/6808.js +4 -0
- package/.next/server/chunks/7023.js +14 -0
- package/.next/server/chunks/7604.js +2 -2
- package/.next/server/chunks/7905.js +1 -1
- package/.next/server/chunks/8581.js +16 -16
- package/.next/server/chunks/8728.js +3 -3
- package/.next/server/chunks/8782.js +1 -1
- package/.next/server/chunks/8791.js +1 -1
- package/.next/server/chunks/8807.js +63 -53
- package/.next/server/chunks/8918.js +103 -1
- package/.next/server/chunks/9198.js +144 -0
- package/.next/server/chunks/9390.js +1 -1
- package/.next/server/chunks/9584.js +1 -1
- package/.next/server/chunks/9627.js +4 -4
- package/.next/server/chunks/9731.js +3 -3
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/1128-914c559913546bbc.js +1 -0
- package/.next/static/chunks/{2407-26139a8a2f1adbe8.js → 2407-675ba6b21844dc3b.js} +1 -1
- package/.next/static/chunks/{2619-a305ad4810f1393a.js → 2619-04bc32f026a0d946.js} +1 -1
- package/.next/static/chunks/{2863-f0121af1cbbedb3b.js → 2863-7173dc305dffc4f6.js} +1 -1
- package/.next/static/chunks/3931-1a1abab16248f14d.js +1 -0
- package/.next/static/chunks/6288-6fadbba6e84393b2.js +1 -0
- package/.next/static/chunks/7665-e9ef6e0a85b9fa49.js +1 -0
- package/.next/static/chunks/{8165-c68b3dc844210e6a.js → 8165-263172c17ae8e8c3.js} +1 -1
- package/.next/static/chunks/8606-ce17ffa77f39608e.js +1 -0
- package/.next/static/chunks/app/api/agents/update/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/agents/versions/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/app/release-notes/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/app/update/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/app/update-check/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/auth/login/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/auth/status/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/capabilities/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/status/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/external-apps/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/fs/browse/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/fs/recent-paths/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/hooks/agent-event/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/hooks/claude-done/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/hooks/permission-request/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/metrics/vibe/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/ollama/models/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/push/escalation/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/push/subscriptions/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/push/vapid/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/relays/[relayId]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/relays/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/remote/pair/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/repositories/excluded/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/repositories/restore/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/repositories/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/repositories/scan/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/repositories/sync/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/repositories/validate-path/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/settings/default-agents/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/settings/default-surface-mode/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/sidebar/group-order/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/skills/[id]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/skills/installations/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/skills/operations/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/skills/reindex/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/skills/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/slash-commands/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/templates/[id]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/templates/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/env/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/layout-8bfac4724277b47f.js +1 -0
- package/.next/static/chunks/app/manifest.webmanifest/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/proxy/[...path]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/sessions/page-890fd50ec9739973.js +1 -0
- package/.next/static/chunks/app/skills/[skillId]/{page-52ba58712faf3378.js → page-cb6e74fd9a6a571d.js} +1 -1
- package/.next/static/chunks/app/worktrees/[id]/files/[...path]/page-704086656fb45699.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/layout-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-f6d3ab8185d93aae.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/terminal/{page-c601f3b3ece6557e.js → page-373ea37b16d930c7.js} +1 -1
- package/.next/static/css/c1e307d05daf93b6.css +1 -0
- package/.next/trace +13 -13
- package/.next/types/app/api/relays/[relayId]/route.ts +347 -0
- package/.next/types/routes.d.ts +2 -1
- package/.next/types/validator.ts +9 -0
- package/dist/cli/commands/ask.d.ts.map +1 -1
- package/dist/cli/commands/ask.js +178 -13
- package/dist/cli/commands/auto-yes.d.ts.map +1 -1
- package/dist/cli/commands/auto-yes.js +3 -5
- package/dist/cli/commands/capture.d.ts.map +1 -1
- package/dist/cli/commands/capture.js +5 -0
- package/dist/cli/commands/message-dispatch.d.ts +25 -5
- package/dist/cli/commands/message-dispatch.d.ts.map +1 -1
- package/dist/cli/commands/message-dispatch.js +92 -6
- package/dist/cli/commands/relays.d.ts +25 -2
- package/dist/cli/commands/relays.d.ts.map +1 -1
- package/dist/cli/commands/relays.js +69 -5
- package/dist/cli/commands/respond.d.ts +12 -0
- package/dist/cli/commands/respond.d.ts.map +1 -1
- package/dist/cli/commands/respond.js +63 -1
- package/dist/cli/commands/send.d.ts.map +1 -1
- package/dist/cli/commands/send.js +10 -10
- package/dist/cli/commands/verify.d.ts.map +1 -1
- package/dist/cli/commands/verify.js +8 -1
- package/dist/cli/commands/wait-hook-stop-settle.d.ts +66 -0
- package/dist/cli/commands/wait-hook-stop-settle.d.ts.map +1 -0
- package/dist/cli/commands/wait-hook-stop-settle.js +150 -0
- package/dist/cli/commands/wait-instance.d.ts +21 -0
- package/dist/cli/commands/wait-instance.d.ts.map +1 -0
- package/dist/cli/commands/wait-instance.js +41 -0
- package/dist/cli/commands/wait-notices.d.ts +87 -0
- package/dist/cli/commands/wait-notices.d.ts.map +1 -0
- package/dist/cli/commands/wait-notices.js +301 -0
- package/dist/cli/commands/wait-poll-bookkeeping.d.ts +15 -0
- package/dist/cli/commands/wait-poll-bookkeeping.d.ts.map +1 -0
- package/dist/cli/commands/wait-poll-bookkeeping.js +57 -0
- package/dist/cli/commands/wait-poll-state.d.ts +118 -0
- package/dist/cli/commands/wait-poll-state.d.ts.map +1 -0
- package/dist/cli/commands/wait-poll-state.js +6 -0
- package/dist/cli/commands/wait-timing.d.ts +46 -0
- package/dist/cli/commands/wait-timing.d.ts.map +1 -0
- package/dist/cli/commands/wait-timing.js +99 -0
- package/dist/cli/commands/wait-turn-boundary.d.ts +284 -0
- package/dist/cli/commands/wait-turn-boundary.d.ts.map +1 -0
- package/dist/cli/commands/wait-turn-boundary.js +427 -0
- package/dist/cli/commands/wait-verify.d.ts +50 -0
- package/dist/cli/commands/wait-verify.d.ts.map +1 -0
- package/dist/cli/commands/wait-verify.js +124 -0
- package/dist/cli/commands/wait.d.ts +6 -105
- package/dist/cli/commands/wait.d.ts.map +1 -1
- package/dist/cli/commands/wait.js +207 -959
- package/dist/cli/config/duration-constants.d.ts +16 -13
- package/dist/cli/config/duration-constants.d.ts.map +1 -1
- package/dist/cli/config/duration-constants.js +21 -21
- package/dist/cli/docs/agent-operations.d.ts +2 -2
- package/dist/cli/docs/agent-operations.d.ts.map +1 -1
- package/dist/cli/docs/agent-operations.js +25 -2
- package/dist/cli/types/api-responses.d.ts +76 -4
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/cli/utils/api-client.d.ts +15 -1
- package/dist/cli/utils/api-client.d.ts.map +1 -1
- package/dist/cli/utils/api-client.js +7 -1
- package/dist/cli/utils/reply-ledger.d.ts +79 -0
- package/dist/cli/utils/reply-ledger.d.ts.map +1 -1
- package/dist/cli/utils/reply-ledger.js +141 -1
- package/dist/cli/utils/verify-runner.d.ts +24 -1
- package/dist/cli/utils/verify-runner.d.ts.map +1 -1
- package/dist/cli/utils/verify-runner.js +54 -1
- package/dist/config/auto-yes-duration.d.ts +56 -0
- package/dist/config/auto-yes-duration.d.ts.map +1 -0
- package/dist/config/auto-yes-duration.js +76 -0
- package/dist/lib/session/send-attempt-types.d.ts +23 -1
- package/dist/lib/session/send-attempt-types.d.ts.map +1 -1
- package/dist/lib/session/send-attempt-types.js +9 -1
- package/dist/server/locales/en/worktree.json +18 -3
- package/dist/server/locales/ja/worktree.json +18 -3
- package/dist/server/src/config/auto-yes-config.js +14 -19
- package/dist/server/src/config/auto-yes-duration.js +76 -0
- package/dist/server/src/lib/auto-yes-poller.js +49 -10
- package/dist/server/src/lib/auto-yes-state.js +9 -2
- package/dist/server/src/lib/cli-tools/antigravity.js +40 -7
- package/dist/server/src/lib/cli-tools/codex.js +60 -11
- package/dist/server/src/lib/cli-tools/command-code-plan-review.js +24 -2
- package/dist/server/src/lib/cli-tools/copilot.js +120 -30
- package/dist/server/src/lib/cli-tools/gemini.js +28 -9
- package/dist/server/src/lib/cli-tools/opencode.js +55 -13
- package/dist/server/src/lib/cli-tools/submit-composer-read.js +580 -0
- package/dist/server/src/lib/cli-tools/submit-verified-sender.js +374 -516
- package/dist/server/src/lib/db/migrations/index.js +2 -0
- package/dist/server/src/lib/db/migrations/pre-migration-backup.js +266 -0
- package/dist/server/src/lib/db/migrations/runner.js +37 -4
- package/dist/server/src/lib/db/migrations/v62-session-relays-bind.js +102 -0
- package/dist/server/src/lib/db/relay-bind-db.js +437 -0
- package/dist/server/src/lib/db/relay-db.js +59 -96
- package/dist/server/src/lib/detection/composer-text.js +215 -11
- package/dist/server/src/lib/detection/prompt-detect-multiple-choice-chrome.js +193 -0
- package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +8 -191
- package/dist/server/src/lib/detection/upstream-faults.js +56 -5
- package/dist/server/src/lib/hooks/sources/opencode/client.js +12 -6
- package/dist/server/src/lib/hooks/structured-decision-response.js +1 -1
- package/dist/server/src/lib/polling/auto-yes-manual-answer.js +4 -2
- package/dist/server/src/lib/polling/response-checker.js +15 -16
- package/dist/server/src/lib/prompt-answer-errors.js +288 -0
- package/dist/server/src/lib/prompt-answer-sender.js +264 -288
- package/dist/server/src/lib/push/failure-episode-state.js +4 -1
- package/dist/server/src/lib/realtime/terminal-broadcast.js +1 -4
- package/dist/server/src/lib/realtime-snippet.js +54 -0
- package/dist/server/src/lib/relay/relay-bind.js +294 -0
- package/dist/server/src/lib/relay/relay-boot.js +51 -0
- package/dist/server/src/lib/relay/relay-bound-reply.js +519 -0
- package/dist/server/src/lib/relay/relay-delivery.js +134 -220
- package/dist/server/src/lib/relay/relay-messages.js +39 -4
- package/dist/server/src/lib/relay/relay-overlap.js +92 -0
- package/dist/server/src/lib/relay/relay-system-line.js +3 -2
- package/dist/server/src/lib/relay/types.js +12 -1
- package/dist/server/src/lib/session/agent-session-lifecycle.js +18 -0
- package/dist/server/src/lib/session/claude-session.js +41 -6
- package/dist/server/src/lib/session/composer-clear.js +109 -4
- package/dist/server/src/lib/session/current-output-builder.js +23 -6
- package/dist/server/src/lib/session/instance-input-lock.js +664 -0
- package/dist/server/src/lib/session/send-attempt-state.js +19 -1
- package/dist/server/src/lib/session/send-attempt-types.js +9 -1
- package/dist/server/src/lib/session/send-user-message.js +82 -13
- package/dist/server/src/lib/session/waiting-episode-state-ops.js +152 -0
- package/dist/server/src/lib/session/waiting-episode-state-store.js +202 -0
- package/dist/server/src/lib/session/waiting-episode-state-types.js +6 -0
- package/dist/server/src/lib/session/waiting-episode-state.js +26 -339
- package/dist/server/src/lib/tmux/tmux.js +25 -0
- package/dist/server/src/lib/verification/gate-runner.js +11 -4
- package/docs/en/user-guide/webapp-guide.md +15 -10
- package/package.json +1 -1
- package/release-notes/0.49.0.json +45 -0
- package/release-notes/0.49.1.json +66 -0
- package/.next/server/chunks/1210.js +0 -1
- package/.next/server/chunks/1945.js +0 -14
- package/.next/server/chunks/1990.js +0 -103
- package/.next/server/chunks/4194.js +0 -67
- package/.next/server/chunks/4280.js +0 -1
- package/.next/server/chunks/5845.js +0 -1
- package/.next/server/chunks/6722.js +0 -1
- package/.next/server/chunks/720.js +0 -103
- package/.next/server/chunks/936.js +0 -1
- package/.next/server/chunks/9540.js +0 -1
- package/.next/static/chunks/2099-c3e0ab70a1b95dd3.js +0 -1
- package/.next/static/chunks/5371-a549a0d2c2044d41.js +0 -1
- package/.next/static/chunks/6288-09feba367cc2c65e.js +0 -1
- package/.next/static/chunks/8606-cf6bdbff44a764cf.js +0 -1
- package/.next/static/chunks/9079-406b84d3cc891a87.js +0 -1
- package/.next/static/chunks/app/api/agents/update/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/agents/versions/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/app/release-notes/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/app/update/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/app/update-check/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/auth/login/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/auth/status/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/capabilities/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/status/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/external-apps/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/fs/browse/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/fs/recent-paths/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/hooks/agent-event/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/hooks/claude-done/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/hooks/permission-request/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/metrics/vibe/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/ollama/models/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/push/escalation/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/push/subscriptions/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/push/vapid/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/relays/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/remote/pair/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/repositories/excluded/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/repositories/restore/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/repositories/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/repositories/scan/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/repositories/sync/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/repositories/validate-path/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/settings/default-agents/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/settings/default-surface-mode/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/sidebar/group-order/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/skills/[id]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/skills/installations/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/skills/operations/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/skills/reindex/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/skills/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/slash-commands/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/templates/[id]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/templates/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/env/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/layout-46b4cbf07520d9b6.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/proxy/[...path]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/sessions/page-fb241bed579c67aa.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/files/[...path]/page-9cf1ecc59e36a004.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/layout-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-cbc7749a33450cc5.js +0 -1
- package/.next/static/css/743f79ff19ab91e9.css +0 -1
- /package/.next/static/{PTlAswXLq8PAe2vUJ8dVP → fqfSDqQMweROeHUzOt_m1}/_buildManifest.js +0 -0
- /package/.next/static/{PTlAswXLq8PAe2vUJ8dVP → fqfSDqQMweROeHUzOt_m1}/_ssgManifest.js +0 -0
|
@@ -51,296 +51,30 @@
|
|
|
51
51
|
* @module lib/session/waiting-episode-state
|
|
52
52
|
*/
|
|
53
53
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
54
|
-
exports.onWaitingTransition =
|
|
55
|
-
exports.onWaitingEpisodeTransition = onWaitingEpisodeTransition;
|
|
56
|
-
exports.openEpisode = openEpisode;
|
|
57
|
-
exports.closeEpisode = closeEpisode;
|
|
58
|
-
exports.replaceEpisode = replaceEpisode;
|
|
59
|
-
exports.rebindEpisode = rebindEpisode;
|
|
60
|
-
exports.updateEpisodeKind = updateEpisodeKind;
|
|
61
|
-
exports.getWaitingEpisodeRecord = getWaitingEpisodeRecord;
|
|
62
|
-
exports.getEpisodeVersion = getEpisodeVersion;
|
|
63
|
-
exports.snapshotEpisodeVersions = snapshotEpisodeVersions;
|
|
64
|
-
exports.getLastClosedEpisode = getLastClosedEpisode;
|
|
54
|
+
exports.updateEpisodeKind = exports.replaceEpisode = exports.rebindEpisode = exports.openEpisode = exports.closeEpisode = exports.snapshotEpisodeVersions = exports.onWaitingTransition = exports.onWaitingEpisodeTransition = exports.hasOpenWaitingEpisode = exports.getWaitingEpisodeRecord = exports.getWaitingEpisode = exports.getLastClosedEpisode = exports.getEpisodeVersion = exports.clearWaitingTransitionListeners = exports.clearWaitingEpisodes = void 0;
|
|
65
55
|
exports.registerEpisodeBindingResolver = registerEpisodeBindingResolver;
|
|
66
56
|
exports.observeWaitingEdge = observeWaitingEdge;
|
|
67
|
-
exports.getWaitingEpisode = getWaitingEpisode;
|
|
68
|
-
exports.hasOpenWaitingEpisode = hasOpenWaitingEpisode;
|
|
69
|
-
exports.clearWaitingEpisodes = clearWaitingEpisodes;
|
|
70
|
-
exports.clearWaitingTransitionListeners = clearWaitingTransitionListeners;
|
|
71
|
-
const auto_yes_state_1 = require("../../lib/auto-yes-state");
|
|
72
57
|
const logger_1 = require("../../lib/logger");
|
|
73
|
-
const
|
|
58
|
+
const waiting_episode_state_ops_1 = require("../../lib/session/waiting-episode-state-ops");
|
|
59
|
+
const waiting_episode_state_store_1 = require("../../lib/session/waiting-episode-state-store");
|
|
60
|
+
var waiting_episode_state_store_2 = require("../../lib/session/waiting-episode-state-store");
|
|
61
|
+
Object.defineProperty(exports, "clearWaitingEpisodes", { enumerable: true, get: function () { return waiting_episode_state_store_2.clearWaitingEpisodes; } });
|
|
62
|
+
Object.defineProperty(exports, "clearWaitingTransitionListeners", { enumerable: true, get: function () { return waiting_episode_state_store_2.clearWaitingTransitionListeners; } });
|
|
63
|
+
Object.defineProperty(exports, "getEpisodeVersion", { enumerable: true, get: function () { return waiting_episode_state_store_2.getEpisodeVersion; } });
|
|
64
|
+
Object.defineProperty(exports, "getLastClosedEpisode", { enumerable: true, get: function () { return waiting_episode_state_store_2.getLastClosedEpisode; } });
|
|
65
|
+
Object.defineProperty(exports, "getWaitingEpisode", { enumerable: true, get: function () { return waiting_episode_state_store_2.getWaitingEpisode; } });
|
|
66
|
+
Object.defineProperty(exports, "getWaitingEpisodeRecord", { enumerable: true, get: function () { return waiting_episode_state_store_2.getWaitingEpisodeRecord; } });
|
|
67
|
+
Object.defineProperty(exports, "hasOpenWaitingEpisode", { enumerable: true, get: function () { return waiting_episode_state_store_2.hasOpenWaitingEpisode; } });
|
|
68
|
+
Object.defineProperty(exports, "onWaitingEpisodeTransition", { enumerable: true, get: function () { return waiting_episode_state_store_2.onWaitingEpisodeTransition; } });
|
|
69
|
+
Object.defineProperty(exports, "onWaitingTransition", { enumerable: true, get: function () { return waiting_episode_state_store_2.onWaitingTransition; } });
|
|
70
|
+
Object.defineProperty(exports, "snapshotEpisodeVersions", { enumerable: true, get: function () { return waiting_episode_state_store_2.snapshotEpisodeVersions; } });
|
|
71
|
+
var waiting_episode_state_ops_2 = require("../../lib/session/waiting-episode-state-ops");
|
|
72
|
+
Object.defineProperty(exports, "closeEpisode", { enumerable: true, get: function () { return waiting_episode_state_ops_2.closeEpisode; } });
|
|
73
|
+
Object.defineProperty(exports, "openEpisode", { enumerable: true, get: function () { return waiting_episode_state_ops_2.openEpisode; } });
|
|
74
|
+
Object.defineProperty(exports, "rebindEpisode", { enumerable: true, get: function () { return waiting_episode_state_ops_2.rebindEpisode; } });
|
|
75
|
+
Object.defineProperty(exports, "replaceEpisode", { enumerable: true, get: function () { return waiting_episode_state_ops_2.replaceEpisode; } });
|
|
76
|
+
Object.defineProperty(exports, "updateEpisodeKind", { enumerable: true, get: function () { return waiting_episode_state_ops_2.updateEpisodeKind; } });
|
|
74
77
|
const logger = (0, logger_1.createLogger)('waiting-episode-state');
|
|
75
|
-
/** compositeKey -> the wait currently in progress for that instance. */
|
|
76
|
-
const episodes = (0, global_state_1.getOrInitGlobal)('__sessionWaitingEpisodes', () => new Map());
|
|
77
|
-
/** Subscribers to the edge. See the module docblock. */
|
|
78
|
-
const listeners = (0, global_state_1.getOrInitGlobal)('__sessionWaitingTransitionListeners', () => new Set());
|
|
79
|
-
const metas = (0, global_state_1.getOrInitGlobal)('__sessionWaitingEpisodeMeta', () => new WeakMap());
|
|
80
|
-
const versions = (0, global_state_1.getOrInitGlobal)('__sessionWaitingEpisodeVersions', () => new Map());
|
|
81
|
-
const lastClosed = (0, global_state_1.getOrInitGlobal)('__sessionWaitingEpisodeLastClosed', () => new Map());
|
|
82
|
-
const episodeSeq = (0, global_state_1.getOrInitGlobal)('__sessionWaitingEpisodeSeq', () => ({
|
|
83
|
-
value: 0,
|
|
84
|
-
nonce: Math.random().toString(36).slice(2, 10),
|
|
85
|
-
}));
|
|
86
|
-
const episodeListeners = (0, global_state_1.getOrInitGlobal)('__sessionWaitingEpisodeListeners', () => new Set());
|
|
87
|
-
/** The binding used when no resolver is registered: nothing is known. */
|
|
88
|
-
const UNKNOWN_BINDING = {
|
|
89
|
-
kind: 'unattributed',
|
|
90
|
-
generation: { kind: 'none' },
|
|
91
|
-
lastClosedTurnId: null,
|
|
92
|
-
};
|
|
93
|
-
function nextEpisodeId() {
|
|
94
|
-
episodeSeq.value += 1;
|
|
95
|
-
return `wep-${episodeSeq.nonce}-${episodeSeq.value}`;
|
|
96
|
-
}
|
|
97
|
-
function keyOf(parts) {
|
|
98
|
-
return (0, auto_yes_state_1.buildCompositeKey)(parts.worktreeId, parts.cliToolId, parts.instanceId);
|
|
99
|
-
}
|
|
100
|
-
function bumpVersion(key) {
|
|
101
|
-
versions.set(key, (versions.get(key) ?? 0) + 1);
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Subscribe to waiting edges.
|
|
105
|
-
*
|
|
106
|
-
* @returns An unsubscribe function. Idempotent — calling it twice is harmless.
|
|
107
|
-
*/
|
|
108
|
-
function onWaitingTransition(listener) {
|
|
109
|
-
listeners.add(listener);
|
|
110
|
-
return () => {
|
|
111
|
-
listeners.delete(listener);
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Subscribe to waiting edges with the episode's identity (Issue #3798).
|
|
116
|
-
*
|
|
117
|
-
* The same crossings `onWaitingTransition` delivers, in the same order, with
|
|
118
|
-
* the cause, the episode ids and the close reason added.
|
|
119
|
-
*/
|
|
120
|
-
function onWaitingEpisodeTransition(listener) {
|
|
121
|
-
episodeListeners.add(listener);
|
|
122
|
-
return () => {
|
|
123
|
-
episodeListeners.delete(listener);
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
/** Notify subscribers, containing anything they throw. */
|
|
127
|
-
function emit(transition) {
|
|
128
|
-
const { cause: _cause, episodeId: _id, previousEpisodeId: _prev, closeReason: _reason, ...plain } = transition;
|
|
129
|
-
for (const listener of listeners) {
|
|
130
|
-
try {
|
|
131
|
-
listener(plain);
|
|
132
|
-
}
|
|
133
|
-
catch (error) {
|
|
134
|
-
logListenerFailure(transition, error);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
for (const listener of episodeListeners) {
|
|
138
|
-
try {
|
|
139
|
-
listener(transition);
|
|
140
|
-
}
|
|
141
|
-
catch (error) {
|
|
142
|
-
logListenerFailure(transition, error);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
function logListenerFailure(transition, error) {
|
|
147
|
-
logger.error('waiting-transition-listener-failed', {
|
|
148
|
-
worktreeId: transition.worktreeId,
|
|
149
|
-
cliToolId: transition.cliToolId,
|
|
150
|
-
instanceId: transition.instanceId ?? transition.cliToolId,
|
|
151
|
-
waiting: transition.waiting,
|
|
152
|
-
error: error instanceof Error ? error.message : String(error),
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Open an episode (Issue #3798). Low-level: the caller has decided there is
|
|
157
|
-
* none open and what it is bound to. Emits the opening edge.
|
|
158
|
-
*/
|
|
159
|
-
function openEpisode(parts, next, at) {
|
|
160
|
-
const key = keyOf(parts);
|
|
161
|
-
const view = { since: next.since, kind: next.kind };
|
|
162
|
-
const meta = {
|
|
163
|
-
episodeId: nextEpisodeId(),
|
|
164
|
-
openedAt: at,
|
|
165
|
-
boundAt: at,
|
|
166
|
-
binding: next.binding,
|
|
167
|
-
openedBy: next.openedBy,
|
|
168
|
-
promptScreenKey: next.promptScreenKey ?? null,
|
|
169
|
-
};
|
|
170
|
-
episodes.set(key, view);
|
|
171
|
-
metas.set(view, meta);
|
|
172
|
-
bumpVersion(key);
|
|
173
|
-
emit({
|
|
174
|
-
worktreeId: parts.worktreeId,
|
|
175
|
-
cliToolId: parts.cliToolId,
|
|
176
|
-
instanceId: parts.instanceId,
|
|
177
|
-
waiting: true,
|
|
178
|
-
since: view.since,
|
|
179
|
-
kind: view.kind,
|
|
180
|
-
at,
|
|
181
|
-
cause: 'opened',
|
|
182
|
-
episodeId: meta.episodeId,
|
|
183
|
-
previousEpisodeId: null,
|
|
184
|
-
closeReason: null,
|
|
185
|
-
});
|
|
186
|
-
return { ...view, ...meta };
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Close the open episode when it is still `expectedId` (Issue #3798). A closer
|
|
190
|
-
* that names the episode it decided about cannot close a later one.
|
|
191
|
-
*
|
|
192
|
-
* @returns Whether an episode was closed
|
|
193
|
-
*/
|
|
194
|
-
function closeEpisode(parts, expectedId, reason, at) {
|
|
195
|
-
const key = keyOf(parts);
|
|
196
|
-
const view = episodes.get(key);
|
|
197
|
-
if (view === undefined)
|
|
198
|
-
return false;
|
|
199
|
-
const meta = metaOf(view);
|
|
200
|
-
if (meta.episodeId !== expectedId)
|
|
201
|
-
return false;
|
|
202
|
-
episodes.delete(key);
|
|
203
|
-
lastClosed.set(key, { at, promptScreenKey: meta.promptScreenKey });
|
|
204
|
-
bumpVersion(key);
|
|
205
|
-
emit({
|
|
206
|
-
worktreeId: parts.worktreeId,
|
|
207
|
-
cliToolId: parts.cliToolId,
|
|
208
|
-
instanceId: parts.instanceId,
|
|
209
|
-
waiting: false,
|
|
210
|
-
since: null,
|
|
211
|
-
kind: null,
|
|
212
|
-
at,
|
|
213
|
-
cause: 'closed',
|
|
214
|
-
episodeId: null,
|
|
215
|
-
previousEpisodeId: meta.episodeId,
|
|
216
|
-
closeReason: reason,
|
|
217
|
-
});
|
|
218
|
-
return true;
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* Put a new episode in place of `expectedId` as one operation (Issue #3798):
|
|
222
|
-
* listeners hear a single opening edge for the new wait and no closing one
|
|
223
|
-
* in between, so nothing reports "nobody is waiting" mid-swap.
|
|
224
|
-
*
|
|
225
|
-
* @returns The new episode, or null when `expectedId` is no longer open
|
|
226
|
-
*/
|
|
227
|
-
function replaceEpisode(parts, expectedId, next, reason, at) {
|
|
228
|
-
const key = keyOf(parts);
|
|
229
|
-
const old = episodes.get(key);
|
|
230
|
-
if (old === undefined)
|
|
231
|
-
return null;
|
|
232
|
-
const oldMeta = metaOf(old);
|
|
233
|
-
if (oldMeta.episodeId !== expectedId)
|
|
234
|
-
return null;
|
|
235
|
-
lastClosed.set(key, { at, promptScreenKey: oldMeta.promptScreenKey });
|
|
236
|
-
const view = { since: next.since, kind: next.kind };
|
|
237
|
-
const meta = {
|
|
238
|
-
episodeId: nextEpisodeId(),
|
|
239
|
-
openedAt: at,
|
|
240
|
-
boundAt: at,
|
|
241
|
-
binding: next.binding,
|
|
242
|
-
openedBy: next.openedBy,
|
|
243
|
-
promptScreenKey: next.promptScreenKey ?? null,
|
|
244
|
-
};
|
|
245
|
-
episodes.set(key, view);
|
|
246
|
-
metas.set(view, meta);
|
|
247
|
-
bumpVersion(key);
|
|
248
|
-
emit({
|
|
249
|
-
worktreeId: parts.worktreeId,
|
|
250
|
-
cliToolId: parts.cliToolId,
|
|
251
|
-
instanceId: parts.instanceId,
|
|
252
|
-
waiting: true,
|
|
253
|
-
since: view.since,
|
|
254
|
-
kind: view.kind,
|
|
255
|
-
at,
|
|
256
|
-
cause: 'replaced',
|
|
257
|
-
episodeId: meta.episodeId,
|
|
258
|
-
previousEpisodeId: oldMeta.episodeId,
|
|
259
|
-
closeReason: reason,
|
|
260
|
-
});
|
|
261
|
-
return { ...view, ...meta };
|
|
262
|
-
}
|
|
263
|
-
/**
|
|
264
|
-
* Change what the open episode `expectedId` is bound to (Issue #3798). Not an
|
|
265
|
-
* edge: the wait goes on, so nothing is emitted and `since` stays.
|
|
266
|
-
*
|
|
267
|
-
* @returns Whether the episode was rebound
|
|
268
|
-
*/
|
|
269
|
-
function rebindEpisode(parts, expectedId, binding, at) {
|
|
270
|
-
const key = keyOf(parts);
|
|
271
|
-
const view = episodes.get(key);
|
|
272
|
-
if (view === undefined)
|
|
273
|
-
return false;
|
|
274
|
-
const meta = metaOf(view);
|
|
275
|
-
if (meta.episodeId !== expectedId)
|
|
276
|
-
return false;
|
|
277
|
-
meta.binding = binding;
|
|
278
|
-
meta.boundAt = at;
|
|
279
|
-
bumpVersion(key);
|
|
280
|
-
return true;
|
|
281
|
-
}
|
|
282
|
-
/**
|
|
283
|
-
* Refresh the kind of the open episode `expectedId` (Issue #3798, I10). The
|
|
284
|
-
* wait goes on: no edge, and the version does not move.
|
|
285
|
-
*
|
|
286
|
-
* @returns Whether the episode was still open
|
|
287
|
-
*/
|
|
288
|
-
function updateEpisodeKind(parts, expectedId, kind) {
|
|
289
|
-
const view = episodes.get(keyOf(parts));
|
|
290
|
-
if (view === undefined || metaOf(view).episodeId !== expectedId)
|
|
291
|
-
return false;
|
|
292
|
-
view.kind = kind;
|
|
293
|
-
return true;
|
|
294
|
-
}
|
|
295
|
-
/**
|
|
296
|
-
* The meta of an episode in the map. An episode put there without one (a test
|
|
297
|
-
* that wrote the map directly) is given an unattributed identity on first read.
|
|
298
|
-
*/
|
|
299
|
-
function metaOf(view) {
|
|
300
|
-
let meta = metas.get(view);
|
|
301
|
-
if (meta === undefined) {
|
|
302
|
-
meta = {
|
|
303
|
-
episodeId: nextEpisodeId(),
|
|
304
|
-
openedAt: view.since,
|
|
305
|
-
boundAt: view.since,
|
|
306
|
-
binding: UNKNOWN_BINDING,
|
|
307
|
-
openedBy: 'legacy-edge',
|
|
308
|
-
promptScreenKey: null,
|
|
309
|
-
};
|
|
310
|
-
metas.set(view, meta);
|
|
311
|
-
}
|
|
312
|
-
return meta;
|
|
313
|
-
}
|
|
314
|
-
/** The open episode with its identity and binding, or null (Issue #3798). */
|
|
315
|
-
function getWaitingEpisodeRecord(worktreeId, cliToolId, instanceId) {
|
|
316
|
-
const view = episodes.get((0, auto_yes_state_1.buildCompositeKey)(worktreeId, cliToolId, instanceId));
|
|
317
|
-
if (view === undefined)
|
|
318
|
-
return null;
|
|
319
|
-
const meta = metaOf(view);
|
|
320
|
-
return { since: view.since, kind: view.kind, ...meta, binding: meta.binding };
|
|
321
|
-
}
|
|
322
|
-
/** The instance's episode version: it moves on every open, close, replacement and rebind. */
|
|
323
|
-
function getEpisodeVersion(worktreeId, cliToolId, instanceId) {
|
|
324
|
-
return versions.get((0, auto_yes_state_1.buildCompositeKey)(worktreeId, cliToolId, instanceId)) ?? 0;
|
|
325
|
-
}
|
|
326
|
-
/**
|
|
327
|
-
* Every instance version of one worktree, as of now (Issue #3798): the status
|
|
328
|
-
* probe fixes them before it lists the tmux sessions. An instance missing from
|
|
329
|
-
* the map is at version 0.
|
|
330
|
-
*/
|
|
331
|
-
function snapshotEpisodeVersions(worktreeId) {
|
|
332
|
-
const prefix = `${worktreeId}${auto_yes_state_1.COMPOSITE_KEY_SEPARATOR}`;
|
|
333
|
-
const snapshot = new Map();
|
|
334
|
-
for (const [key, version] of versions) {
|
|
335
|
-
if (key.startsWith(prefix))
|
|
336
|
-
snapshot.set(key, version);
|
|
337
|
-
}
|
|
338
|
-
return snapshot;
|
|
339
|
-
}
|
|
340
|
-
/** The last episode that ended for this instance, or null. */
|
|
341
|
-
function getLastClosedEpisode(worktreeId, cliToolId, instanceId) {
|
|
342
|
-
return lastClosed.get((0, auto_yes_state_1.buildCompositeKey)(worktreeId, cliToolId, instanceId)) ?? null;
|
|
343
|
-
}
|
|
344
78
|
/** Install the binding resolver `observeWaitingEdge` uses. The last one wins. */
|
|
345
79
|
function registerEpisodeBindingResolver(resolver) {
|
|
346
80
|
globalThis.__sessionWaitingEpisodeBindingResolver = resolver;
|
|
@@ -348,7 +82,7 @@ function registerEpisodeBindingResolver(resolver) {
|
|
|
348
82
|
function resolveBinding(parts, at) {
|
|
349
83
|
const resolver = globalThis.__sessionWaitingEpisodeBindingResolver;
|
|
350
84
|
if (resolver === undefined)
|
|
351
|
-
return UNKNOWN_BINDING;
|
|
85
|
+
return waiting_episode_state_store_1.UNKNOWN_BINDING;
|
|
352
86
|
try {
|
|
353
87
|
return resolver(parts, at);
|
|
354
88
|
}
|
|
@@ -359,7 +93,7 @@ function resolveBinding(parts, at) {
|
|
|
359
93
|
instanceId: parts.instanceId ?? parts.cliToolId,
|
|
360
94
|
error: error instanceof Error ? error.message : String(error),
|
|
361
95
|
});
|
|
362
|
-
return UNKNOWN_BINDING;
|
|
96
|
+
return waiting_episode_state_store_1.UNKNOWN_BINDING;
|
|
363
97
|
}
|
|
364
98
|
}
|
|
365
99
|
/**
|
|
@@ -381,12 +115,12 @@ function resolveBinding(parts, at) {
|
|
|
381
115
|
*/
|
|
382
116
|
function observeWaitingEdge({ worktreeId, cliToolId, instanceId, waiting, kind = null, structuredSince = null, now = Date.now(), }) {
|
|
383
117
|
const parts = { worktreeId, cliToolId, instanceId };
|
|
384
|
-
const key = keyOf(parts);
|
|
385
|
-
const existing = episodes.get(key);
|
|
118
|
+
const key = (0, waiting_episode_state_store_1.keyOf)(parts);
|
|
119
|
+
const existing = waiting_episode_state_store_1.episodes.get(key);
|
|
386
120
|
if (!waiting) {
|
|
387
121
|
if (existing === undefined)
|
|
388
122
|
return null;
|
|
389
|
-
closeEpisode(parts, metaOf(existing).episodeId, 'screen-cleared', now);
|
|
123
|
+
(0, waiting_episode_state_ops_1.closeEpisode)(parts, (0, waiting_episode_state_store_1.metaOf)(existing).episodeId, 'screen-cleared', now);
|
|
390
124
|
return null;
|
|
391
125
|
}
|
|
392
126
|
if (existing !== undefined) {
|
|
@@ -397,53 +131,6 @@ function observeWaitingEdge({ worktreeId, cliToolId, instanceId, waiting, kind =
|
|
|
397
131
|
return existing.since;
|
|
398
132
|
}
|
|
399
133
|
const since = structuredSince ?? now;
|
|
400
|
-
openEpisode(parts, { since, kind, binding: resolveBinding(parts, now), openedBy: 'legacy-edge' }, now);
|
|
134
|
+
(0, waiting_episode_state_ops_1.openEpisode)(parts, { since, kind, binding: resolveBinding(parts, now), openedBy: 'legacy-edge' }, now);
|
|
401
135
|
return since;
|
|
402
136
|
}
|
|
403
|
-
/**
|
|
404
|
-
* @returns The wait in progress for this instance, or null when it is not
|
|
405
|
-
* waiting. Read-only: observing the edge is {@link observeWaitingEdge}'s job.
|
|
406
|
-
*/
|
|
407
|
-
function getWaitingEpisode(worktreeId, cliToolId, instanceId) {
|
|
408
|
-
return episodes.get((0, auto_yes_state_1.buildCompositeKey)(worktreeId, cliToolId, instanceId)) ?? null;
|
|
409
|
-
}
|
|
410
|
-
/**
|
|
411
|
-
* Whether **any** instance in this worktree is still waiting (Issue #2001).
|
|
412
|
-
*
|
|
413
|
-
* The cross-device dismissal is keyed on the worktree, because that is what the
|
|
414
|
-
* Service Worker `tag` names (`<worktreeId>:prompt`, `push-sender`): two agent
|
|
415
|
-
* instances waiting in one worktree share a single notification card on the
|
|
416
|
-
* phone. So one instance crossing the closing edge is not on its own a reason
|
|
417
|
-
* to clear that card — the card is still telling the truth until the last of
|
|
418
|
-
* them has been answered.
|
|
419
|
-
*
|
|
420
|
-
* The prefix test is exact rather than heuristic: `buildCompositeKey` puts the
|
|
421
|
-
* worktree id first and rejects a worktree id containing
|
|
422
|
-
* {@link COMPOSITE_KEY_SEPARATOR}, so no other worktree's key can start with
|
|
423
|
-
* `<worktreeId>:`.
|
|
424
|
-
*/
|
|
425
|
-
function hasOpenWaitingEpisode(worktreeId) {
|
|
426
|
-
const prefix = `${worktreeId}${auto_yes_state_1.COMPOSITE_KEY_SEPARATOR}`;
|
|
427
|
-
for (const key of episodes.keys()) {
|
|
428
|
-
if (key.startsWith(prefix))
|
|
429
|
-
return true;
|
|
430
|
-
}
|
|
431
|
-
return false;
|
|
432
|
-
}
|
|
433
|
-
/**
|
|
434
|
-
* Drop every episode. Test seam.
|
|
435
|
-
*
|
|
436
|
-
* CI runs with `fileParallelism: false`, so one process holds this map for the
|
|
437
|
-
* whole suite: a test that opens an episode and does not clear it hands the next
|
|
438
|
-
* file a session that is already waiting.
|
|
439
|
-
*/
|
|
440
|
-
function clearWaitingEpisodes() {
|
|
441
|
-
episodes.clear();
|
|
442
|
-
versions.clear();
|
|
443
|
-
lastClosed.clear();
|
|
444
|
-
}
|
|
445
|
-
/** Drop every subscriber. Test seam, paired with {@link clearWaitingEpisodes}. */
|
|
446
|
-
function clearWaitingTransitionListeners() {
|
|
447
|
-
listeners.clear();
|
|
448
|
-
episodeListeners.clear();
|
|
449
|
-
}
|
|
@@ -24,6 +24,7 @@ exports.ensureSession = ensureSession;
|
|
|
24
24
|
exports.sendSpecialKey = sendSpecialKey;
|
|
25
25
|
exports.clearInputLine = clearInputLine;
|
|
26
26
|
exports.clearComposerLine = clearComposerLine;
|
|
27
|
+
exports.clearComposerPasteToken = clearComposerPasteToken;
|
|
27
28
|
exports.isAllowedSpecialKey = isAllowedSpecialKey;
|
|
28
29
|
exports.sendSpecialKeysAndInvalidate = sendSpecialKeysAndInvalidate;
|
|
29
30
|
exports.sendDirectInputAndInvalidate = sendDirectInputAndInvalidate;
|
|
@@ -946,6 +947,30 @@ async function clearComposerLine(sessionName) {
|
|
|
946
947
|
throw new Error(`Failed to clear tmux composer line: ${errorMessage}`);
|
|
947
948
|
}
|
|
948
949
|
}
|
|
950
|
+
/**
|
|
951
|
+
* Send one `C-e` + `BSpace` pass: take a collapsed paste placeholder out of the
|
|
952
|
+
* composer (Issue #3937).
|
|
953
|
+
*
|
|
954
|
+
* codex folds a pasted body into one `[Pasted Content N chars]` placeholder.
|
|
955
|
+
* `C-e`+`C-u` left one in place for all 12 passes (`composer-clear:not-cleared`,
|
|
956
|
+
* 2026-10-25), and one `BSpace` sent by hand removed it whole. The caller
|
|
957
|
+
* ({@link module:lib/session/composer-clear}) sends this only when the composer
|
|
958
|
+
* shows that placeholder and nothing else — after `C-e` the cursor sits right
|
|
959
|
+
* behind it — and reads the frame back afterwards like any other pass. Same
|
|
960
|
+
* literal-keys / one-invocation rules as {@link clearComposerLine}.
|
|
961
|
+
*
|
|
962
|
+
* @param sessionName - Target session name
|
|
963
|
+
* @throws {Error} If the tmux command fails
|
|
964
|
+
*/
|
|
965
|
+
async function clearComposerPasteToken(sessionName) {
|
|
966
|
+
try {
|
|
967
|
+
await execFileAsync('tmux', ['send-keys', '-t', exactTarget(sessionName), 'C-e', 'BSpace'], { timeout: DEFAULT_TIMEOUT });
|
|
968
|
+
}
|
|
969
|
+
catch (error) {
|
|
970
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
971
|
+
throw new Error(`Failed to clear tmux composer paste placeholder: ${errorMessage}`);
|
|
972
|
+
}
|
|
973
|
+
}
|
|
949
974
|
/**
|
|
950
975
|
* Type guard for navigation key validation (special-keys API).
|
|
951
976
|
* Returns true if the key is in the NAVIGATION_KEY_VALUES set AND sendSpecialKeys()
|
|
@@ -427,9 +427,10 @@ const cancellations = new Map();
|
|
|
427
427
|
* stopped something.
|
|
428
428
|
*
|
|
429
429
|
* A run cancelled while it is still queued behind
|
|
430
|
-
* {@link MAX_CONCURRENT_VERIFICATIONS}
|
|
431
|
-
*
|
|
432
|
-
* it.
|
|
430
|
+
* {@link MAX_CONCURRENT_VERIFICATIONS} leaves the queue at once and closes
|
|
431
|
+
* `cancelled` (Issue #3909); it used to answer `requested` and close only once
|
|
432
|
+
* a slot reached it. `requested` is now only a run whose gate is still winding
|
|
433
|
+
* down when the budget runs out.
|
|
433
434
|
*/
|
|
434
435
|
async function cancelVerification(runId) {
|
|
435
436
|
const cancellation = cancellations.get(runId);
|
|
@@ -1637,7 +1638,13 @@ async function startVerification(input) {
|
|
|
1637
1638
|
};
|
|
1638
1639
|
const slot = new RunSlot();
|
|
1639
1640
|
const completion = (async () => {
|
|
1640
|
-
|
|
1641
|
+
// Issue #3909: the run's first wait for a slot is abandonable too, as the
|
|
1642
|
+
// re-take after a mutex wait has been since #3884 N3. A run cancelled here
|
|
1643
|
+
// used to stay queued (and `running`, holding its worktree) until one of
|
|
1644
|
+
// the two executing gates ended, so the cancel endpoint answered
|
|
1645
|
+
// `requested`. An abandoned wait holds no slot; `slot.release()` below is
|
|
1646
|
+
// idempotent, so the `finally` hands nothing back for it.
|
|
1647
|
+
await slot.acquire(false, cancellation);
|
|
1641
1648
|
let terminalStatus = 'error';
|
|
1642
1649
|
try {
|
|
1643
1650
|
// Cancelled while queued behind MAX_CONCURRENT_VERIFICATIONS: nothing was
|
|
@@ -196,10 +196,12 @@ Useful when you want to run continuous processes without interruption.
|
|
|
196
196
|
1. Open the worktree detail view
|
|
197
197
|
2. Turn on the **"Auto Yes"** toggle at the top of the screen
|
|
198
198
|
3. A confirmation dialog appears
|
|
199
|
-
4. **Select the active duration** (1
|
|
200
|
-
-
|
|
199
|
+
4. **Select the active duration** (1-24 hours, in whole hours)
|
|
200
|
+
- The common **1 hour / 3 hours / 8 hours** are buttons; for anything else press **Other** and pick from the 1-24 hour list
|
|
201
|
+
- Every time the dialog opens it starts at **1 hour** (the previous choice is not remembered, so 24 hours and the like are chosen explicitly each time)
|
|
202
|
+
- A longer duration also means more permission checks answered automatically (careful mode answers permission checks too)
|
|
201
203
|
- Select the minimum time needed for your work
|
|
202
|
-
5. The description text changes dynamically based on your selection (e.g., "Will automatically turn OFF after
|
|
204
|
+
5. The description text changes dynamically based on your selection (e.g., "Will automatically turn OFF after 5 hours.")
|
|
203
205
|
6. **Choose how questions are answered** ("Answer questions with the recommended option (Recommended)" / "Answer questions yourself (Careful)"; see "Answer Modes" below)
|
|
204
206
|
7. Click **"Agree and Enable"**
|
|
205
207
|
|
|
@@ -221,15 +223,18 @@ The dialog that turns Auto Yes on asks how a question from the agent (one that p
|
|
|
221
223
|
|
|
222
224
|
### Active Duration
|
|
223
225
|
|
|
224
|
-
| Option | Milliseconds | Intended Use Case |
|
|
226
|
+
| Option (examples) | Milliseconds | Intended Use Case |
|
|
225
227
|
|--------|-------------|-------------------|
|
|
226
|
-
| **1 hour** (default) | 3,600,000 | Normal development work, short tasks |
|
|
227
|
-
| **3 hours** | 10,800,000 | Medium-scale implementation work |
|
|
228
|
-
| **8 hours** | 28,800,000 | Long batch-processing tasks (regular progress checks recommended) |
|
|
228
|
+
| **1 hour** (default, button) | 3,600,000 | Normal development work, short tasks |
|
|
229
|
+
| **3 hours** (button) | 10,800,000 | Medium-scale implementation work |
|
|
230
|
+
| **8 hours** (button) | 28,800,000 | Long batch-processing tasks (regular progress checks recommended) |
|
|
231
|
+
| **24 hours** (Other, the maximum) | 86,400,000 | Overnight work. It keeps answering while you are away, so narrowing it with a stop pattern or the contract's `autoYes` is recommended |
|
|
232
|
+
|
|
233
|
+
Any whole number of hours from 1 to 24 can be chosen (Issue #3913); the rows above are examples, and the millisecond value is hours × 3,600,000. The Auto Yes field of the New task dialog offers the same 1-24 hours ("Leave off" is unchanged).
|
|
229
234
|
|
|
230
235
|
A countdown timer always shows the remaining time.
|
|
231
236
|
- **Under 1 hour**: `MM:SS` format (e.g., `45:30`)
|
|
232
|
-
- **1 hour or more**: `H:MM:SS` format (e.g., `2:15:30`)
|
|
237
|
+
- **1 hour or more**: `H:MM:SS` format (e.g., `2:15:30`; a 24-hour grant starts at `24:00:00`)
|
|
233
238
|
|
|
234
239
|
### API Specification (for developers)
|
|
235
240
|
|
|
@@ -240,13 +245,13 @@ POST /api/worktrees/:id/auto-yes
|
|
|
240
245
|
|
|
241
246
|
{
|
|
242
247
|
"enabled": true,
|
|
243
|
-
"duration": 3600000
|
|
248
|
+
"duration": 3600000, // Optional. 1-24 hours (a multiple of 3600000, 3600000-86400000; default: 3600000)
|
|
244
249
|
"answerMode": "recommended" | "careful" // Optional (Issue #3863; recommended for a new grant, the current mode for one that is on)
|
|
245
250
|
}
|
|
246
251
|
```
|
|
247
252
|
|
|
248
253
|
- **When duration is omitted**: Defaults to 1 hour (3,600,000 ms) for backward compatibility
|
|
249
|
-
- **Invalid duration value**:
|
|
254
|
+
- **Invalid duration value**: Out of range, fractional or non-number values return a 400 error (checked only when enabling; `enabled: false` ignores duration)
|
|
250
255
|
- **Security**: 5-layer defense with worktreeId format validation -> JSON parse validation -> type validation -> whitelist validation
|
|
251
256
|
|
|
252
257
|
### Approval Routes Differ by Agent
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "commandmate",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.49.1",
|
|
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",
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.49.0",
|
|
3
|
+
"date": "2026-10-27",
|
|
4
|
+
"highlight": {
|
|
5
|
+
"ja": "Auto-Yes の有効時間を 1〜24 時間から選べるようになり、チャットのコードブロックをワンクリックでコピーできるようになりました。",
|
|
6
|
+
"en": "You can now choose any Auto-Yes duration from 1 to 24 hours, and copy chat code blocks with one click."
|
|
7
|
+
},
|
|
8
|
+
"added": [
|
|
9
|
+
{
|
|
10
|
+
"ja": "Auto-Yes の有効時間を 1〜24 時間の 1 時間刻みで選べるようになりました。",
|
|
11
|
+
"en": "Auto-Yes can now stay on for any whole number of hours from 1 to 24."
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"ja": "チャットのコードブロックにコピーボタンが付きました。",
|
|
15
|
+
"en": "Code blocks in chat now have a copy button."
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"improved": [],
|
|
19
|
+
"fixed": [
|
|
20
|
+
{
|
|
21
|
+
"ja": "codex の入力欄に貼り付けの印が残り、次の送信ができなくなる問題を直しました。",
|
|
22
|
+
"en": "Fixed a leftover paste marker in the Codex input box that blocked the next message."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"ja": "codex のモデルが混雑しているとき、それを検出せずに長く待ち続ける問題を直しました。",
|
|
26
|
+
"en": "Fixed long waits when the Codex model was at capacity; this is now detected as an upstream failure."
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"ja": "codex の長い入力の送信が、届いたかどうかを誤って判定することがある問題を直しました。",
|
|
30
|
+
"en": "Fixed Codex sends with long input sometimes being misjudged as delivered or not."
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"ja": "確認ダイアログの下に隠れた codex の古い入力が、未送信バーに出続ける問題を直しました。",
|
|
34
|
+
"en": "Fixed old Codex input hidden under a dialog staying in the unsent message bar."
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"ja": "入力欄から確認に答えたとき、Auto-Yes に手動の回答として伝わらない問題を直しました。",
|
|
38
|
+
"en": "Fixed answers given from the input panel not being reported to Auto-Yes as manual answers."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"ja": "CLI の確認画面の一覧と回答で、一部の情報が落ちたり Auto-Yes に伝わらなかったりする問題を直しました。",
|
|
42
|
+
"en": "Fixed the CLI prompt listing dropping some details, and some CLI answers not being reported to Auto-Yes."
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.49.1",
|
|
3
|
+
"date": "2026-10-30",
|
|
4
|
+
"highlight": {
|
|
5
|
+
"ja": "同じエージェントへの送信を 1 本ずつに調停し、別の依頼の返答が届く取り違えを防ぐようにしました。Command Code の計画レビューもスマホやターミナル表示から承認できます。",
|
|
6
|
+
"en": "Messages to the same agent are now sent one at a time, so a reply meant for another request is no longer delivered by mistake. Command Code plan reviews can now be approved from the phone and terminal views."
|
|
7
|
+
},
|
|
8
|
+
"added": [
|
|
9
|
+
{
|
|
10
|
+
"ja": "サイドバーの「Needs attention」やブランチ行から開くと、応答を待っているエージェントが選ばれた状態で開くようになりました。",
|
|
11
|
+
"en": "Opening a worktree from Needs attention or a branch row in the sidebar now selects the agent that is waiting for you."
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"ja": "データベースの更新が必要なときは、更新の前にデータベースの複製を自動で保存するようになりました。",
|
|
15
|
+
"en": "Before the database is upgraded, a copy of it is now saved automatically."
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"improved": [
|
|
19
|
+
{
|
|
20
|
+
"ja": "Claude の /restart をスラッシュコマンドの一覧に追加しました。",
|
|
21
|
+
"en": "Added Claude's /restart to the slash command list."
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"fixed": [
|
|
25
|
+
{
|
|
26
|
+
"ja": "Command Code の計画レビューで、承認・取り消し・コメントのボタンが画面外に隠れて押せない問題を直しました。",
|
|
27
|
+
"en": "Fixed the approve, cancel and comment buttons of a Command Code plan review being cut off and unreachable."
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"ja": "Command Code のターミナル表示が真っ黒に見えることがある問題を直しました。",
|
|
31
|
+
"en": "Fixed the Command Code terminal view sometimes appearing completely blank."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"ja": "同じエージェントへ続けて送った依頼で、別の依頼の返答が届くことがある問題を直しました。",
|
|
35
|
+
"en": "Fixed a reply to a different request sometimes being delivered when several requests were sent to the same agent."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"ja": "同じエージェントへの送信が重なったとき、入力欄に文字が残ったり混ざったりする問題を直しました。",
|
|
39
|
+
"en": "Fixed leftover or mixed-up text in the input box when several messages to the same agent overlapped."
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"ja": "返信を待つ送信(--reply-to など)に失敗したとき、もう一度送ってよいか、先に画面を確かめるべきかを CLI が案内するようになりました。",
|
|
43
|
+
"en": "When a send that waits for a reply (such as --reply-to) fails, the CLI now tells you whether it is safe to send again or whether to check the screen first."
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"ja": "wait が指定した時間を過ぎても終わらないことがある問題を直しました。",
|
|
47
|
+
"en": "Fixed wait sometimes running past its timeout."
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"ja": "前の作業の完了を、今回の送信の完了と取り違えることがある問題を直しました。",
|
|
51
|
+
"en": "Fixed the end of an earlier turn sometimes being mistaken for the end of the current one."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"ja": "返答の中で引用したエラーの文字を、本物の障害と誤って判定する問題を直しました。",
|
|
55
|
+
"en": "Fixed quoted error text in a reply being mistaken for a real upstream error."
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"ja": "入力欄のクリアに失敗したとき、その理由が画面に表示されるようになりました。",
|
|
59
|
+
"en": "When clearing the input box fails, the reason is now shown on screen."
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"ja": "respond で、回答が届かなかったのか途中で止まったのかを分けて表示するようになりました。",
|
|
63
|
+
"en": "respond now tells apart an answer that never arrived from one that stopped partway."
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
}
|