commandmate 0.27.1 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +28 -0
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +278 -248
- package/.next/app-path-routes-manifest.json +30 -26
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +15 -15
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +32 -0
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update/route.js +1 -1
- package/.next/server/app/api/app/update/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/conversation/route.js +1 -1
- package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/current-output/route.js +1 -1
- package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/messages/route.js +1 -1
- package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/session/route.js +1 -1
- package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/start/route.js +32 -1
- package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/terminal/route.js +34 -3
- package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/tools/route.js +1 -1
- package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/capabilities/route.js +1 -1
- package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/route.js +1 -1
- package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/external-apps/route.js.nft.json +1 -1
- package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/browse/route.js +1 -1
- package/.next/server/app/api/fs/browse/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/fs/recent-paths/route.js.nft.json +1 -1
- package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js +1 -1
- 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.js +1 -1
- package/.next/server/app/api/metrics/vibe/route.js.nft.json +1 -1
- package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/escalation/route.js +1 -1
- package/.next/server/app/api/push/escalation/route.js.nft.json +1 -1
- package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/subscriptions/route.js +7 -1
- package/.next/server/app/api/push/subscriptions/route.js.nft.json +1 -1
- package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/vapid/route.js +1 -1
- package/.next/server/app/api/push/vapid/route.js.nft.json +1 -1
- package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/route.js +1 -1
- package/.next/server/app/api/repositories/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/[todoId]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/route.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/[id]/todos/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.js +1 -1
- package/.next/server/app/api/repositories/excluded/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/route.js +1 -1
- package/.next/server/app/api/repositories/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/validate-path/route.js +1 -1
- package/.next/server/app/api/repositories/validate-path/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sidebar/group-order/route.js +1 -1
- package/.next/server/app/api/sidebar/group-order/route.js.nft.json +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.js.nft.json +1 -1
- package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/installations/route.js +1 -1
- package/.next/server/app/api/skills/installations/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/operations/route.js +1 -1
- package/.next/server/app/api/skills/operations/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/reindex/route.js +1 -1
- package/.next/server/app/api/skills/reindex/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/slash-commands/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route.js.nft.json +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.js.nft.json +1 -1
- package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/[id]/route.js +2 -2
- package/.next/server/app/api/templates/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/route.js +2 -2
- package/.next/server/app/api/templates/route.js.nft.json +1 -1
- package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/todos/route.js +1 -1
- package/.next/server/app/api/todos/route.js.nft.json +1 -1
- package/.next/server/app/api/todos/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.js.nft.json +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.js.nft.json +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-tool/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js +2 -2
- 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]/env/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/env/route.js.nft.json +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.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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/opencode/route.js +1 -0
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js +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.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/logs/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route.js +4 -4
- package/.next/server/app/api/worktrees/[id]/marp-render/route.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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 -0
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -0
- package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -0
- package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -0
- 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]/resolve-target/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route.js.nft.json +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 +5 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route.js +6 -2
- package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route.js.nft.json +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 +7 -3
- 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 +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/start-polling/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/start-polling/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/start-polling/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.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -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.js.nft.json +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 -3
- package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js.nft.json +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/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route.js.nft.json +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.js.nft.json +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.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/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/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/more/page.js +1 -1
- package/.next/server/app/more/page_client-reference-manifest.js +1 -1
- package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/proxy/[...path]/route.js +1 -1
- package/.next/server/app/proxy/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
- package/.next/server/app/review/page.js +1 -1
- package/.next/server/app/review/page.js.nft.json +1 -1
- package/.next/server/app/review/page_client-reference-manifest.js +1 -1
- package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js +1 -1
- 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 +15 -10
- 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.js +2 -2
- package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +30 -26
- package/.next/server/chunks/1058.js +1 -0
- package/.next/server/chunks/1068.js +1 -3
- package/.next/server/chunks/1191.js +13 -0
- package/.next/server/chunks/1296.js +1 -1
- package/.next/server/chunks/1601.js +2 -2
- package/.next/server/chunks/1714.js +7 -0
- package/.next/server/chunks/1886.js +5 -0
- package/.next/server/chunks/1944.js +1 -0
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/221.js +19 -0
- package/.next/server/chunks/222.js +1 -0
- package/.next/server/chunks/2328.js +1 -1
- package/.next/server/chunks/2366.js +1 -0
- package/.next/server/chunks/2404.js +1 -1
- package/.next/server/chunks/243.js +1 -0
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/2759.js +1 -1
- package/.next/server/chunks/3346.js +1 -1
- package/.next/server/chunks/3480.js +17 -1
- package/.next/server/chunks/3558.js +1 -0
- package/.next/server/chunks/4299.js +1 -0
- package/.next/server/chunks/4393.js +1 -1
- package/.next/server/chunks/5017.js +1 -1
- package/.next/server/chunks/5089.js +1 -1
- package/.next/server/chunks/5354.js +1 -1
- package/.next/server/chunks/5571.js +1 -1
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6274.js +11 -10
- package/.next/server/chunks/6285.js +1 -1
- package/.next/server/chunks/6337.js +1 -0
- package/.next/server/chunks/6401.js +1 -1
- package/.next/server/chunks/663.js +78 -0
- package/.next/server/chunks/7472.js +1 -1
- package/.next/server/chunks/7824.js +1 -0
- package/.next/server/chunks/7905.js +1 -0
- package/.next/server/chunks/880.js +1 -1
- package/.next/server/chunks/8807.js +84 -18
- package/.next/server/chunks/9130.js +5 -0
- package/.next/server/chunks/9328.js +1 -1
- package/.next/server/chunks/9358.js +1 -1
- package/.next/server/chunks/9508.js +1 -1
- package/.next/server/chunks/9584.js +1 -0
- package/.next/server/chunks/9627.js +274 -0
- package/.next/server/chunks/9798.js +2 -0
- package/.next/server/chunks/9938.js +1 -1
- 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/1188-8567ee5ecfef02ee.js +1 -0
- package/.next/static/chunks/3361-aa1b6e7c1d7eeeb4.js +1 -0
- package/.next/static/chunks/3968-8d8ca15657748bfb.js +1 -0
- package/.next/static/chunks/6381-d921ab728eda1191.js +1 -0
- package/.next/static/chunks/app/api/app/update/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/app/update-check/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/assistant/conversation/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/assistant/current-output/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/assistant/messages/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/assistant/session/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/assistant/start/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/assistant/terminal/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/assistant/tools/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/auth/login/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/auth/status/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/capabilities/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/status/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/external-apps/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/fs/browse/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/fs/recent-paths/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/hooks/agent-event/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/hooks/claude-done/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/hooks/permission-request/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/metrics/vibe/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/ollama/models/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/push/escalation/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/push/subscriptions/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/push/vapid/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/todos/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/repositories/excluded/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/repositories/restore/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/repositories/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/repositories/scan/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/repositories/sync/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/repositories/validate-path/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/sidebar/group-order/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/skills/[id]/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/skills/installations/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/skills/operations/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/skills/reindex/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/skills/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/slash-commands/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/templates/[id]/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/templates/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/todos/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/env/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/manifest.webmanifest/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/more/page-03867ab635d197c7.js +1 -0
- package/.next/static/chunks/app/proxy/[...path]/route-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/review/page-9a6d18ddcccbb63c.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/layout-9247d6b9d647f750.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-27b7cb2e77099eec.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/terminal/page-00ad5d9a62a71cab.js +1 -0
- package/.next/static/css/98722bc4152cedcc.css +1 -0
- package/.next/trace +13 -13
- package/.next/types/app/api/worktrees/[id]/instances/opencode/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/opencode/diff/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/opencode/session/route.ts +347 -0
- package/.next/types/app/api/worktrees/[id]/opencode/share/route.ts +347 -0
- package/.next/types/routes.d.ts +5 -1
- package/.next/types/validator.ts +36 -0
- package/README.md +9 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +66 -0
- package/dist/cli/commands/instances.d.ts.map +1 -1
- package/dist/cli/commands/instances.js +46 -1
- package/dist/cli/commands/interrupt.d.ts +25 -0
- package/dist/cli/commands/interrupt.d.ts.map +1 -0
- package/dist/cli/commands/interrupt.js +146 -0
- package/dist/cli/commands/report.d.ts.map +1 -1
- package/dist/cli/commands/report.js +11 -4
- package/dist/cli/commands/respond.d.ts.map +1 -1
- package/dist/cli/commands/respond.js +146 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +104 -0
- package/dist/cli/commands/wait.d.ts.map +1 -1
- package/dist/cli/commands/wait.js +39 -1
- package/dist/cli/config/agent-target-options.d.ts +12 -0
- package/dist/cli/config/agent-target-options.d.ts.map +1 -1
- package/dist/cli/config/agent-target-options.js +15 -1
- package/dist/cli/docs/agent-operations.d.ts +1 -1
- package/dist/cli/docs/agent-operations.d.ts.map +1 -1
- package/dist/cli/docs/agent-operations.js +34 -0
- package/dist/cli/program.d.ts.map +1 -1
- package/dist/cli/program.js +6 -0
- package/dist/cli/types/api-responses.d.ts +375 -0
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/cli/types/index.d.ts +63 -0
- package/dist/cli/types/index.d.ts.map +1 -1
- package/dist/cli/types/index.js +31 -1
- package/dist/cli/utils/daemon.d.ts.map +1 -1
- package/dist/cli/utils/daemon.js +3 -0
- package/dist/cli/utils/env-setup.d.ts +24 -0
- package/dist/cli/utils/env-setup.d.ts.map +1 -1
- package/dist/cli/utils/env-setup.js +70 -0
- package/dist/cli/utils/vapid-keygen.d.ts +74 -0
- package/dist/cli/utils/vapid-keygen.d.ts.map +1 -0
- package/dist/cli/utils/vapid-keygen.js +111 -0
- package/dist/lib/cli-tools/types.d.ts +11 -1
- package/dist/lib/cli-tools/types.d.ts.map +1 -1
- package/dist/lib/detection/tools/verified-against.d.ts +14 -3
- package/dist/lib/detection/tools/verified-against.d.ts.map +1 -1
- package/dist/lib/detection/tools/verified-against.js +14 -3
- package/dist/lib/push/vapid.d.ts +178 -0
- package/dist/lib/push/vapid.d.ts.map +1 -0
- package/dist/lib/push/vapid.js +293 -0
- package/dist/lib/server/localhost-self-check.d.ts +203 -0
- package/dist/lib/server/localhost-self-check.d.ts.map +1 -0
- package/dist/lib/server/localhost-self-check.js +333 -0
- package/dist/server/locales/en/notifications.json +23 -1
- package/dist/server/locales/ja/notifications.json +23 -1
- package/dist/server/server.js +103 -0
- package/dist/server/src/config/image-extensions.js +244 -0
- package/dist/server/src/config/opencode-constants.js +69 -0
- package/dist/server/src/config/tmux-pane-config.js +100 -1
- package/dist/server/src/lib/cli-tools/base.js +33 -48
- package/dist/server/src/lib/cli-tools/opencode-config.js +12 -0
- package/dist/server/src/lib/cli-tools/opencode.js +435 -7
- package/dist/server/src/lib/cli-tools/start-availability.js +160 -0
- package/dist/server/src/lib/cmate-cli-tool-parser.js +328 -7
- package/dist/server/src/lib/cmate-parser.js +12 -0
- package/dist/server/src/lib/db/agent-instances-db.js +129 -0
- package/dist/server/src/lib/db/agent-session-cost-db.js +204 -0
- package/dist/server/src/lib/db/agent-session-cost-sampler.js +194 -0
- package/dist/server/src/lib/db/chat-db.js +33 -0
- package/dist/server/src/lib/db/db-instance.js +11 -0
- package/dist/server/src/lib/db/db.js +8 -3
- package/dist/server/src/lib/db/migrations/index.js +6 -0
- package/dist/server/src/lib/db/migrations/runner.js +1 -1
- package/dist/server/src/lib/db/migrations/v57-push-subscription-defaults-notice.js +54 -0
- package/dist/server/src/lib/db/migrations/v58-agent-session-costs.js +100 -0
- package/dist/server/src/lib/db/migrations/v59-opencode-instance-settings.js +71 -0
- package/dist/server/src/lib/db/push-subscriptions-db.js +56 -5
- package/dist/server/src/lib/detection/cli-patterns.js +17 -6
- package/dist/server/src/lib/detection/excerpt.js +48 -0
- package/dist/server/src/lib/detection/model-info-extractor.js +26 -3
- package/dist/server/src/lib/detection/opencode-modal-overlay.js +400 -0
- package/dist/server/src/lib/detection/opencode-pane-obstruction.js +181 -0
- package/dist/server/src/lib/detection/status-detector.js +7 -0
- package/dist/server/src/lib/detection/status-reason.js +20 -0
- package/dist/server/src/lib/detection/terminal-columns.js +94 -0
- package/dist/server/src/lib/detection/tools/opencode/detect.js +43 -0
- package/dist/server/src/lib/detection/tools/opencode/prompt.js +20 -0
- package/dist/server/src/lib/detection/tools/verified-against.js +14 -3
- package/dist/server/src/lib/detection/upstream-faults.js +7 -22
- package/dist/server/src/lib/hooks/agent-session-telemetry.js +324 -0
- package/dist/server/src/lib/hooks/pending-decision-kind.js +72 -0
- package/dist/server/src/lib/hooks/sources/define-source.js +88 -0
- package/dist/server/src/lib/hooks/sources/opencode/client.js +907 -2
- package/dist/server/src/lib/hooks/sources/opencode/diff.js +336 -0
- package/dist/server/src/lib/hooks/sources/opencode/history.js +480 -0
- package/dist/server/src/lib/hooks/sources/opencode/ingest.js +76 -7
- package/dist/server/src/lib/hooks/sources/opencode/launch-settings.js +222 -0
- package/dist/server/src/lib/hooks/sources/opencode/mappers.js +31 -0
- package/dist/server/src/lib/hooks/sources/opencode/payloads.js +45 -0
- package/dist/server/src/lib/hooks/sources/opencode/ports.js +16 -0
- package/dist/server/src/lib/hooks/sources/opencode/push.js +307 -0
- package/dist/server/src/lib/hooks/sources/opencode/reattach.js +284 -0
- package/dist/server/src/lib/hooks/sources/opencode/runtime.js +165 -2
- package/dist/server/src/lib/hooks/sources/opencode/source.js +46 -2
- package/dist/server/src/lib/hooks/sources/opencode/subscription.js +407 -4
- package/dist/server/src/lib/hooks/sources/opencode/transcript.js +383 -0
- package/dist/server/src/lib/hooks/structured-decision-response.js +460 -0
- package/dist/server/src/lib/job-executor.js +43 -20
- package/dist/server/src/lib/polling/response-checker.js +43 -16
- package/dist/server/src/lib/polling/structured-history-gate.js +75 -0
- package/dist/server/src/lib/prompt-answer-sender.js +153 -2
- package/dist/server/src/lib/push/delivery-health.js +237 -0
- package/dist/server/src/lib/push/failure-push-notifier.js +109 -7
- package/dist/server/src/lib/push/index.js +25 -1
- package/dist/server/src/lib/push/prompt-card-state.js +254 -14
- package/dist/server/src/lib/push/push-sender.js +63 -12
- package/dist/server/src/lib/push/resolution-push-notifier.js +15 -3
- package/dist/server/src/lib/push/vapid.js +264 -5
- package/dist/server/src/lib/push/waiting-push-notifier.js +7 -0
- package/dist/server/src/lib/server/localhost-self-check.js +333 -0
- package/dist/server/src/lib/session/agent-event-state.js +169 -4
- package/dist/server/src/lib/session/claude-executor.js +152 -15
- package/dist/server/src/lib/session/current-output-builder.js +182 -15
- package/dist/server/src/lib/session/opencode-session-api.js +214 -0
- package/dist/server/src/lib/session/opencode-session-recall.js +168 -0
- package/dist/server/src/lib/session/opencode-session-store.js +274 -0
- package/dist/server/src/lib/session/provisional-turn.js +54 -1
- package/dist/server/src/lib/session/send-user-message.js +6 -5
- package/dist/server/src/lib/session/structured-prompt.js +53 -2
- package/dist/server/src/lib/skills/compatibility-matrix.js +50 -1
- package/dist/server/src/lib/tmux/tmux.js +74 -4
- package/dist/server/src/lib/verification/gate-runner.js +71 -8
- package/dist/server/src/types/agent-session.js +63 -0
- package/dist/server/src/types/agent-transcript.js +80 -0
- package/dist/server/src/types/opencode-export.js +228 -0
- package/dist/server/src/types/opencode-instance-settings.js +140 -0
- package/dist/server/src/types/opencode-share.js +111 -0
- package/dist/server/src/types/terminal-keys.js +69 -1
- package/dist/types/cli-tool-contracts.d.ts +48 -0
- package/dist/types/cli-tool-contracts.d.ts.map +1 -1
- package/dist/types/terminal-keys.d.ts +89 -0
- package/dist/types/terminal-keys.d.ts.map +1 -0
- package/dist/types/terminal-keys.js +105 -0
- package/package.json +1 -1
- package/.next/server/chunks/1029.js +0 -1
- package/.next/server/chunks/1239.js +0 -1
- package/.next/server/chunks/1538.js +0 -7
- package/.next/server/chunks/2546.js +0 -1
- package/.next/server/chunks/2689.js +0 -13
- package/.next/server/chunks/3292.js +0 -1
- package/.next/server/chunks/3417.js +0 -1
- package/.next/server/chunks/3736.js +0 -1
- package/.next/server/chunks/4423.js +0 -1
- package/.next/server/chunks/4444.js +0 -32
- package/.next/server/chunks/4565.js +0 -3
- package/.next/server/chunks/467.js +0 -1
- package/.next/server/chunks/4905.js +0 -5
- package/.next/server/chunks/552.js +0 -19
- package/.next/server/chunks/5998.js +0 -74
- package/.next/server/chunks/6919.js +0 -1
- package/.next/server/chunks/7970.js +0 -229
- package/.next/server/chunks/8536.js +0 -1
- package/.next/server/chunks/9284.js +0 -1
- package/.next/static/chunks/3361-5d6e93fba8a92bc1.js +0 -1
- package/.next/static/chunks/6381-8cfe50a5ca5425b1.js +0 -1
- package/.next/static/chunks/8521-c43994fb58501d13.js +0 -1
- package/.next/static/chunks/app/api/app/update/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/app/update-check/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/assistant/conversation/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/assistant/current-output/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/assistant/messages/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/assistant/session/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/assistant/start/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/assistant/terminal/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/assistant/tools/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/auth/login/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/auth/status/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/capabilities/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/status/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/external-apps/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/fs/browse/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/fs/recent-paths/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/hooks/agent-event/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/hooks/claude-done/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/hooks/permission-request/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/metrics/vibe/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/ollama/models/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/push/escalation/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/push/subscriptions/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/push/vapid/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/todos/[todoId]/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/todos/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/repositories/excluded/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/repositories/restore/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/repositories/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/repositories/scan/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/repositories/sync/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/repositories/validate-path/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/sidebar/group-order/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/skills/[id]/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/skills/installations/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/skills/operations/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/skills/reindex/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/skills/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/slash-commands/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/templates/[id]/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/templates/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/todos/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/env/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/start-polling/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/more/page-3266dfa945972649.js +0 -1
- package/.next/static/chunks/app/proxy/[...path]/route-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/review/page-8f63aff862fee421.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/layout-6add0d88e2828c23.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-f7b3dfbe757dc6b8.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/terminal/page-a75fe180a7233b2b.js +0 -1
- package/.next/static/css/928e5a8830fbf997.css +0 -1
- /package/.next/static/{9IXgWfBUtnEnRqnbmErTp → 0GHE2JGlFzqvSBZAcBFSt}/_buildManifest.js +0 -0
- /package/.next/static/{9IXgWfBUtnEnRqnbmErTp → 0GHE2JGlFzqvSBZAcBFSt}/_ssgManifest.js +0 -0
|
@@ -40,6 +40,9 @@ const v53_worktree_aliases_1 = require("./v53-worktree-aliases");
|
|
|
40
40
|
const v54_worktree_id_path_derived_1 = require("./v54-worktree-id-path-derived");
|
|
41
41
|
const v55_compact_churned_worktree_ids_1 = require("./v55-compact-churned-worktree-ids");
|
|
42
42
|
const v56_gate_result_source_1 = require("./v56-gate-result-source");
|
|
43
|
+
const v57_push_subscription_defaults_notice_1 = require("./v57-push-subscription-defaults-notice");
|
|
44
|
+
const v58_agent_session_costs_1 = require("./v58-agent-session-costs");
|
|
45
|
+
const v59_opencode_instance_settings_1 = require("./v59-opencode-instance-settings");
|
|
43
46
|
/**
|
|
44
47
|
* Complete ordered list of all migrations.
|
|
45
48
|
* Used internally by the barrel file (db-migrations.ts); NOT exported from the barrel (DR2-004).
|
|
@@ -83,4 +86,7 @@ exports.migrations = [
|
|
|
83
86
|
...v54_worktree_id_path_derived_1.v54_migrations,
|
|
84
87
|
...v55_compact_churned_worktree_ids_1.v55_migrations,
|
|
85
88
|
...v56_gate_result_source_1.v56_migrations,
|
|
89
|
+
...v57_push_subscription_defaults_notice_1.v57_migrations,
|
|
90
|
+
...v58_agent_session_costs_1.v58_migrations,
|
|
91
|
+
...v59_opencode_instance_settings_1.v59_migrations,
|
|
86
92
|
];
|
|
@@ -17,7 +17,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
17
17
|
* Current schema version
|
|
18
18
|
* Increment this when adding new migrations
|
|
19
19
|
*/
|
|
20
|
-
exports.CURRENT_SCHEMA_VERSION =
|
|
20
|
+
exports.CURRENT_SCHEMA_VERSION = 59;
|
|
21
21
|
/**
|
|
22
22
|
* Get current schema version from database
|
|
23
23
|
*/
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Migration v57: mark which generation of *defaults* a push subscription was
|
|
4
|
+
* created under (Issue #2056).
|
|
5
|
+
*
|
|
6
|
+
* Epic #2002's completion criteria do not both hold for rows that already
|
|
7
|
+
* exist. Criterion 3 wants ordinary completions to be off by default; criterion
|
|
8
|
+
* 6 wants no notification to stop unintentionally. A migration that flipped
|
|
9
|
+
* `enabled_completion` to 0 across the table satisfies the first and breaks the
|
|
10
|
+
* second — "my notifications went quiet" is indistinguishable from "my
|
|
11
|
+
* notifications broke". Doing nothing satisfies the second and breaks the first.
|
|
12
|
+
*
|
|
13
|
+
* The way out is consent: tell the reader, and let them choose. Then the change
|
|
14
|
+
* is no longer *unintentional* and both criteria hold. This column is the only
|
|
15
|
+
* schema that costs — it records whether this device has been told.
|
|
16
|
+
*
|
|
17
|
+
* **This migration changes no notification behaviour whatsoever.** Nothing reads
|
|
18
|
+
* `defaults_version` when fanning out: {@link getPushSubscriptionsForKind} and
|
|
19
|
+
* {@link countPushSubscriptionsForKind} still filter on `enabled_prompt` /
|
|
20
|
+
* `enabled_completion` alone. Applying it stops zero notifications and starts
|
|
21
|
+
* zero notifications — which is exactly what criterion 6 asks for, and what
|
|
22
|
+
* `push-subscription-defaults-notice-2056.test.ts` asserts by counting the
|
|
23
|
+
* fan-out on both sides of the migration.
|
|
24
|
+
*
|
|
25
|
+
* `NOT NULL DEFAULT 0` is the whole trick. SQLite backfills the constant into
|
|
26
|
+
* every existing row, and 0 means "created before #2000 changed the defaults" —
|
|
27
|
+
* precisely the population that was never told. `upsertPushSubscription()` binds
|
|
28
|
+
* `PUSH_DEFAULTS_VERSION` on INSERT, so rows created from here on start already
|
|
29
|
+
* informed, and the `ON CONFLICT` clause deliberately leaves the column alone so
|
|
30
|
+
* that a legacy device re-registering does not silently mark itself as told.
|
|
31
|
+
*
|
|
32
|
+
* The rollback is real, like v42's and unlike v35/v40's no-ops: `DROP COLUMN`
|
|
33
|
+
* has been supported since SQLite 3.35 and this column carries no index and no
|
|
34
|
+
* constraint, so the drop needs no table rebuild.
|
|
35
|
+
*/
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
exports.v57_migrations = void 0;
|
|
38
|
+
exports.v57_migrations = [
|
|
39
|
+
{
|
|
40
|
+
version: 57,
|
|
41
|
+
name: 'add-defaults-version-to-push-subscriptions',
|
|
42
|
+
up: (db) => {
|
|
43
|
+
db.exec(`
|
|
44
|
+
ALTER TABLE push_subscriptions
|
|
45
|
+
ADD COLUMN defaults_version INTEGER NOT NULL DEFAULT 0;
|
|
46
|
+
`);
|
|
47
|
+
},
|
|
48
|
+
down: (db) => {
|
|
49
|
+
db.exec(`
|
|
50
|
+
ALTER TABLE push_subscriptions DROP COLUMN defaults_version;
|
|
51
|
+
`);
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
];
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Migration v58: a durable ledger of what each agent session has spent
|
|
4
|
+
* (Issue #2044).
|
|
5
|
+
*
|
|
6
|
+
* ## Why the numbers need a table at all
|
|
7
|
+
*
|
|
8
|
+
* Issue #2040 already reads `session.updated` off opencode's SSE stream and
|
|
9
|
+
* keeps `{ cost, tokens }` per instance in `lib/hooks/agent-session-telemetry`.
|
|
10
|
+
* That record is **in memory and dies with the subscription** — killing the pane
|
|
11
|
+
* drops it — which is exactly right for what it publishes
|
|
12
|
+
* (`structuredEvents.session`, "what is this conversation costing *now*") and
|
|
13
|
+
* useless for what a daily report asks ("what did today cost"). A report
|
|
14
|
+
* generated at 18:00 would see nothing of a session that ended at noon.
|
|
15
|
+
*
|
|
16
|
+
* So the ledger is a *sampler's* table, not a second event mapping: nothing here
|
|
17
|
+
* subscribes to anything, and no `session.updated` writer is added. A sampler
|
|
18
|
+
* copies the live record in, keyed by the agent's own session id.
|
|
19
|
+
*
|
|
20
|
+
* ## Why `session_id` is the primary key, and why writes overwrite
|
|
21
|
+
*
|
|
22
|
+
* `Session.cost` and `Session.tokens` are **cumulative for the session**, not
|
|
23
|
+
* per-turn. Measured on opencode 1.18.22 in an isolated `HOME`
|
|
24
|
+
* (`docs/design/opencode-server-live-verification.md` §15): a session whose two
|
|
25
|
+
* steps reported `0.03372225` and `0.0038181` answered `cost: 0.03754035` on
|
|
26
|
+
* `GET /session`, and summing the two sessions in that project reproduced
|
|
27
|
+
* `opencode stats --project ""`'s `Total Cost` ($0.07), `Input` (6),
|
|
28
|
+
* `Output` (181), `Cache Read` (8.4K) and `Cache Write` (16.7K) exactly.
|
|
29
|
+
*
|
|
30
|
+
* That makes last-write-wins the only correct rule: **accumulating** samples
|
|
31
|
+
* would multiply a long-running session's cost by however many times the
|
|
32
|
+
* sampler happened to look at it. `ON CONFLICT(session_id) DO UPDATE` is
|
|
33
|
+
* therefore load-bearing rather than defensive, and it is what lets the sampler
|
|
34
|
+
* run on any schedule at all without the totals depending on its period.
|
|
35
|
+
*
|
|
36
|
+
* ## Column notes
|
|
37
|
+
*
|
|
38
|
+
* - **`date`** is the local calendar day the session was *first sampled*, in the
|
|
39
|
+
* `YYYY-MM-DD` spelling `daily_reports.date` uses, so the report's day and the
|
|
40
|
+
* ledger's day are the same string. `first_seen_at` keeps the instant. A
|
|
41
|
+
* session spanning midnight stays on its opening day rather than being split:
|
|
42
|
+
* the agent reports one cumulative number and there is no honest way to
|
|
43
|
+
* apportion it across two days.
|
|
44
|
+
* - **every numeric column is nullable**, and null means "the agent did not
|
|
45
|
+
* say", never zero — the rule `AgentSessionTokenUsage` states. A session that
|
|
46
|
+
* has not run a turn publishes no counts, and storing `0` would make this
|
|
47
|
+
* database assert a measurement nobody took.
|
|
48
|
+
* - **`worktree_id`** is spelled conventionally so `getWorktreeChildTables()`
|
|
49
|
+
* finds it by introspection: the row then follows a worktree id rename
|
|
50
|
+
* (v54/v55) and is swept when the worktree is deleted, the same lifetime
|
|
51
|
+
* `chat_messages` has. The ledger describes what a worktree spent, so it has
|
|
52
|
+
* no meaning once that worktree is gone — and a report already generated for
|
|
53
|
+
* that day keeps its text in `daily_reports` regardless. Deliberately **not**
|
|
54
|
+
* an append-only ledger: `skill_operations`-style `BEFORE UPDATE` triggers
|
|
55
|
+
* would forbid the overwrite the paragraph above requires.
|
|
56
|
+
*
|
|
57
|
+
* The rollback drops the table, which is the whole of what this migration adds.
|
|
58
|
+
*/
|
|
59
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
60
|
+
exports.v58_migrations = void 0;
|
|
61
|
+
exports.v58_migrations = [
|
|
62
|
+
{
|
|
63
|
+
version: 58,
|
|
64
|
+
name: 'agent-session-costs',
|
|
65
|
+
up: (db) => {
|
|
66
|
+
db.exec(`
|
|
67
|
+
CREATE TABLE IF NOT EXISTS agent_session_costs (
|
|
68
|
+
session_id TEXT PRIMARY KEY,
|
|
69
|
+
worktree_id TEXT NOT NULL,
|
|
70
|
+
cli_tool_id TEXT NOT NULL,
|
|
71
|
+
instance_id TEXT,
|
|
72
|
+
date TEXT NOT NULL,
|
|
73
|
+
title TEXT,
|
|
74
|
+
agent TEXT,
|
|
75
|
+
model TEXT,
|
|
76
|
+
provider TEXT,
|
|
77
|
+
cost REAL,
|
|
78
|
+
tokens_input INTEGER,
|
|
79
|
+
tokens_output INTEGER,
|
|
80
|
+
tokens_reasoning INTEGER,
|
|
81
|
+
tokens_cache_read INTEGER,
|
|
82
|
+
tokens_cache_write INTEGER,
|
|
83
|
+
first_seen_at INTEGER NOT NULL,
|
|
84
|
+
observed_at INTEGER NOT NULL,
|
|
85
|
+
|
|
86
|
+
FOREIGN KEY (worktree_id) REFERENCES worktrees(id) ON DELETE CASCADE
|
|
87
|
+
);
|
|
88
|
+
`);
|
|
89
|
+
// The daily report's only query shape: one day, grouped by worktree.
|
|
90
|
+
db.exec(`
|
|
91
|
+
CREATE INDEX IF NOT EXISTS idx_agent_session_costs_date
|
|
92
|
+
ON agent_session_costs(date, worktree_id);
|
|
93
|
+
`);
|
|
94
|
+
},
|
|
95
|
+
down: (db) => {
|
|
96
|
+
db.exec('DROP INDEX IF EXISTS idx_agent_session_costs_date;');
|
|
97
|
+
db.exec('DROP TABLE IF EXISTS agent_session_costs;');
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
];
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Migration v59: what each opencode instance should be launched with (#2048).
|
|
4
|
+
*
|
|
5
|
+
* ## Why a table of its own rather than columns on `agent_instances`
|
|
6
|
+
*
|
|
7
|
+
* `setAgentInstances` is a **replace**: `PATCH /api/worktrees/[id]` sends the
|
|
8
|
+
* whole roster and the write deletes every row for the worktree and re-inserts
|
|
9
|
+
* from the payload. That payload is `AgentInstance[]` — id, tool, alias, order —
|
|
10
|
+
* and nothing else, so a `model` column on that table would be silently reset to
|
|
11
|
+
* null every time the operator renamed an instance or dragged one up the list.
|
|
12
|
+
* A separate table survives the replace, and `pruneOpencodeInstanceSettings`
|
|
13
|
+
* removes the rows whose instance genuinely went away.
|
|
14
|
+
*
|
|
15
|
+
* It is also the only shape that keeps `agentInstances`'s validator and its API
|
|
16
|
+
* contract unchanged, which Issue #2048's second acceptance condition
|
|
17
|
+
* ("claude / codex の instance 設定 UI とスナップショットが不変") asks for
|
|
18
|
+
* directly.
|
|
19
|
+
*
|
|
20
|
+
* ## Column notes
|
|
21
|
+
*
|
|
22
|
+
* - **All four settings are nullable and null means "not chosen"**, never a
|
|
23
|
+
* default. The launcher omits the flag entirely for a null, so an instance
|
|
24
|
+
* with a row full of nulls launches byte-identically to one with no row.
|
|
25
|
+
* - **`provider_id` / `model_id` are two columns, not one string.** `-m` takes
|
|
26
|
+
* `provider/model`, but model ids themselves contain slashes
|
|
27
|
+
* (`qwen/qwen3-coder-30b`, measured on LMStudio), so a single column could not
|
|
28
|
+
* be split back apart.
|
|
29
|
+
* - **`variant` is stored even though no launch flag can carry it.** The TUI has
|
|
30
|
+
* no `--variant` (measured on 1.18.22, §20.3); it is applied on the prompt
|
|
31
|
+
* this server posts, which is a per-turn decision that still needs a durable
|
|
32
|
+
* place to be decided *once*.
|
|
33
|
+
* - **`worktree_id` is spelled conventionally** so `getWorktreeChildTables()`
|
|
34
|
+
* finds it by introspection: the row then follows a worktree id rename
|
|
35
|
+
* (v54/v55) and is swept when the worktree is deleted, which is the lifetime a
|
|
36
|
+
* per-instance setting should have.
|
|
37
|
+
*
|
|
38
|
+
* The primary key is `(worktree_id, instance_id)` — the same identity
|
|
39
|
+
* `agent_instances` uses — and the `cli_tool_id` is not part of it: an instance
|
|
40
|
+
* id belongs to one tool by construction (`resolveInstanceCliTool`), so a
|
|
41
|
+
* composite including it would let one instance hold two contradictory rows.
|
|
42
|
+
*
|
|
43
|
+
* The rollback drops the table, which is the whole of what this migration adds.
|
|
44
|
+
*/
|
|
45
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
+
exports.v59_migrations = void 0;
|
|
47
|
+
exports.v59_migrations = [
|
|
48
|
+
{
|
|
49
|
+
version: 59,
|
|
50
|
+
name: 'opencode-instance-settings',
|
|
51
|
+
up: (db) => {
|
|
52
|
+
db.exec(`
|
|
53
|
+
CREATE TABLE IF NOT EXISTS opencode_instance_settings (
|
|
54
|
+
worktree_id TEXT NOT NULL,
|
|
55
|
+
instance_id TEXT NOT NULL,
|
|
56
|
+
agent TEXT,
|
|
57
|
+
provider_id TEXT,
|
|
58
|
+
model_id TEXT,
|
|
59
|
+
variant TEXT,
|
|
60
|
+
updated_at INTEGER NOT NULL,
|
|
61
|
+
|
|
62
|
+
PRIMARY KEY (worktree_id, instance_id),
|
|
63
|
+
FOREIGN KEY (worktree_id) REFERENCES worktrees(id) ON DELETE CASCADE
|
|
64
|
+
);
|
|
65
|
+
`);
|
|
66
|
+
},
|
|
67
|
+
down: (db) => {
|
|
68
|
+
db.exec('DROP TABLE IF EXISTS opencode_instance_settings;');
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
];
|
|
@@ -8,12 +8,13 @@
|
|
|
8
8
|
* be logged — callers pass these straight through without logging.
|
|
9
9
|
*/
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
exports.NEW_SUBSCRIPTION_DEFAULTS = void 0;
|
|
11
|
+
exports.PUSH_DEFAULTS_VERSION = exports.NEW_SUBSCRIPTION_DEFAULTS = void 0;
|
|
12
12
|
exports.upsertPushSubscription = upsertPushSubscription;
|
|
13
13
|
exports.getPushSubscriptionByEndpoint = getPushSubscriptionByEndpoint;
|
|
14
14
|
exports.getAllPushSubscriptions = getAllPushSubscriptions;
|
|
15
15
|
exports.getPushSubscriptionsForKind = getPushSubscriptionsForKind;
|
|
16
16
|
exports.countPushSubscriptionsForKind = countPushSubscriptionsForKind;
|
|
17
|
+
exports.pushSubscriptionNeedsDefaultsNotice = pushSubscriptionNeedsDefaultsNotice;
|
|
17
18
|
exports.updatePushSubscriptionPreferences = updatePushSubscriptionPreferences;
|
|
18
19
|
exports.deletePushSubscriptionByEndpoint = deletePushSubscriptionByEndpoint;
|
|
19
20
|
const crypto_1 = require("crypto");
|
|
@@ -56,6 +57,31 @@ exports.NEW_SUBSCRIPTION_DEFAULTS = {
|
|
|
56
57
|
enabledPrompt: true,
|
|
57
58
|
enabledCompletion: false,
|
|
58
59
|
};
|
|
60
|
+
/**
|
|
61
|
+
* The generation of *defaults* a stored subscription was created under
|
|
62
|
+
* (Issue #2056).
|
|
63
|
+
*
|
|
64
|
+
* `NEW_SUBSCRIPTION_DEFAULTS` above only ever reaches an INSERT, and #2000
|
|
65
|
+
* decided — correctly — that existing rows must not move. The consequence is a
|
|
66
|
+
* population that Epic #2002 never spoke to: devices subscribed before the
|
|
67
|
+
* change still have completions ON, and the `failure` kind quietly joined their
|
|
68
|
+
* `enabled_prompt` bucket via {@link KIND_COLUMN}. Their notification volume
|
|
69
|
+
* went *up* under an Epic whose point was to bring it down, and nothing in the
|
|
70
|
+
* app said so.
|
|
71
|
+
*
|
|
72
|
+
* This counter is how a row remembers whether it has been told. It governs a
|
|
73
|
+
* one-off notice in the settings UI and nothing else — **no fan-out query reads
|
|
74
|
+
* it**, so bumping it neither starts nor stops a single notification.
|
|
75
|
+
*
|
|
76
|
+
* - `0` — written by the v57 backfill: created before #2000, never told.
|
|
77
|
+
* - `1` — created under the #2000 defaults, or told about them and given the
|
|
78
|
+
* choice to adopt or keep (see {@link updatePushSubscriptionPreferences}).
|
|
79
|
+
*
|
|
80
|
+
* Raise this (and add a notice for the new step) the next time a *default*
|
|
81
|
+
* changes under readers who already subscribed. It is deliberately a version
|
|
82
|
+
* rather than a boolean for that reason.
|
|
83
|
+
*/
|
|
84
|
+
exports.PUSH_DEFAULTS_VERSION = 1;
|
|
59
85
|
function mapRow(row) {
|
|
60
86
|
return {
|
|
61
87
|
id: row.id,
|
|
@@ -65,13 +91,14 @@ function mapRow(row) {
|
|
|
65
91
|
enabledPrompt: row.enabled_prompt === 1,
|
|
66
92
|
enabledCompletion: row.enabled_completion === 1,
|
|
67
93
|
locale: row.locale,
|
|
94
|
+
defaultsVersion: row.defaults_version,
|
|
68
95
|
createdAt: new Date(row.created_at),
|
|
69
96
|
updatedAt: new Date(row.updated_at),
|
|
70
97
|
};
|
|
71
98
|
}
|
|
72
99
|
const SELECT_COLUMNS = `
|
|
73
100
|
id, endpoint, p256dh, auth, device_label,
|
|
74
|
-
enabled_prompt, enabled_completion, locale, created_at, updated_at
|
|
101
|
+
enabled_prompt, enabled_completion, locale, defaults_version, created_at, updated_at
|
|
75
102
|
`;
|
|
76
103
|
/**
|
|
77
104
|
* Create or update a subscription keyed by endpoint. On conflict the encryption
|
|
@@ -81,6 +108,12 @@ const SELECT_COLUMNS = `
|
|
|
81
108
|
* Locale follows the keys, not the preferences: a re-registration carries the
|
|
82
109
|
* reader's current language, so a resolved locale overwrites the stored one.
|
|
83
110
|
* An *unresolved* locale must not clobber a good stored value, hence COALESCE.
|
|
111
|
+
*
|
|
112
|
+
* `defaults_version` follows the preferences, not the keys (Issue #2056): the
|
|
113
|
+
* ON CONFLICT clause leaves it untouched on purpose. A device that subscribed
|
|
114
|
+
* before #2000 and merely re-registers (a rotated key, a new label) has still
|
|
115
|
+
* not been told the defaults changed, so marking it as told here would swallow
|
|
116
|
+
* the notice for exactly the readers it exists for.
|
|
84
117
|
*/
|
|
85
118
|
function upsertPushSubscription(db, input) {
|
|
86
119
|
const now = Date.now();
|
|
@@ -89,16 +122,16 @@ function upsertPushSubscription(db, input) {
|
|
|
89
122
|
db.prepare(`
|
|
90
123
|
INSERT INTO push_subscriptions (
|
|
91
124
|
id, endpoint, p256dh, auth, device_label,
|
|
92
|
-
enabled_prompt, enabled_completion, locale, created_at, updated_at
|
|
125
|
+
enabled_prompt, enabled_completion, locale, defaults_version, created_at, updated_at
|
|
93
126
|
)
|
|
94
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
127
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
95
128
|
ON CONFLICT(endpoint) DO UPDATE SET
|
|
96
129
|
p256dh = excluded.p256dh,
|
|
97
130
|
auth = excluded.auth,
|
|
98
131
|
device_label = excluded.device_label,
|
|
99
132
|
locale = COALESCE(excluded.locale, push_subscriptions.locale),
|
|
100
133
|
updated_at = excluded.updated_at
|
|
101
|
-
`).run((0, crypto_1.randomUUID)(), input.endpoint, input.p256dh, input.auth, deviceLabel, exports.NEW_SUBSCRIPTION_DEFAULTS.enabledPrompt ? 1 : 0, exports.NEW_SUBSCRIPTION_DEFAULTS.enabledCompletion ? 1 : 0, locale, now, now);
|
|
134
|
+
`).run((0, crypto_1.randomUUID)(), input.endpoint, input.p256dh, input.auth, deviceLabel, exports.NEW_SUBSCRIPTION_DEFAULTS.enabledPrompt ? 1 : 0, exports.NEW_SUBSCRIPTION_DEFAULTS.enabledCompletion ? 1 : 0, locale, exports.PUSH_DEFAULTS_VERSION, now, now);
|
|
102
135
|
const record = getPushSubscriptionByEndpoint(db, input.endpoint);
|
|
103
136
|
if (!record) {
|
|
104
137
|
throw new Error('Failed to persist push subscription');
|
|
@@ -143,6 +176,17 @@ function countPushSubscriptionsForKind(db, kind) {
|
|
|
143
176
|
.get();
|
|
144
177
|
return row.total;
|
|
145
178
|
}
|
|
179
|
+
/**
|
|
180
|
+
* Whether this device is still owed the one-off "the defaults changed" notice
|
|
181
|
+
* (Issue #2056).
|
|
182
|
+
*
|
|
183
|
+
* Derived rather than stored as a flag so that raising
|
|
184
|
+
* {@link PUSH_DEFAULTS_VERSION} for a future change re-arms the notice for every
|
|
185
|
+
* row at once, including rows that acknowledged the previous one.
|
|
186
|
+
*/
|
|
187
|
+
function pushSubscriptionNeedsDefaultsNotice(record) {
|
|
188
|
+
return record.defaultsVersion < exports.PUSH_DEFAULTS_VERSION;
|
|
189
|
+
}
|
|
146
190
|
/** Update per-type preferences for a subscription. Returns the updated record or null. */
|
|
147
191
|
function updatePushSubscriptionPreferences(db, endpoint, prefs) {
|
|
148
192
|
const assignments = ['updated_at = ?'];
|
|
@@ -155,6 +199,13 @@ function updatePushSubscriptionPreferences(db, endpoint, prefs) {
|
|
|
155
199
|
assignments.push('enabled_completion = ?');
|
|
156
200
|
params.push(prefs.enabledCompletion ? 1 : 0);
|
|
157
201
|
}
|
|
202
|
+
// One-way: acknowledging cannot un-acknowledge. Nothing in the product asks
|
|
203
|
+
// to replay the notice, and a `false` here would let a stale client payload
|
|
204
|
+
// reopen a decision the reader has already made.
|
|
205
|
+
if (prefs.acknowledgeDefaultsNotice) {
|
|
206
|
+
assignments.push('defaults_version = ?');
|
|
207
|
+
params.push(exports.PUSH_DEFAULTS_VERSION);
|
|
208
|
+
}
|
|
158
209
|
params.push(endpoint);
|
|
159
210
|
db.prepare(`UPDATE push_subscriptions SET ${assignments.join(', ')} WHERE endpoint = ?`).run(...params);
|
|
160
211
|
return getPushSubscriptionByEndpoint(db, endpoint);
|
|
@@ -1091,12 +1091,23 @@ function stripOpenCodeGutter(row) {
|
|
|
1091
1091
|
* produce without touching the operator's real credentials), and the header's
|
|
1092
1092
|
* own hatch is already the affordance.
|
|
1093
1093
|
*
|
|
1094
|
-
* The header allowlist is deliberately unchanged
|
|
1095
|
-
*
|
|
1096
|
-
*
|
|
1097
|
-
*
|
|
1098
|
-
*
|
|
1099
|
-
*
|
|
1094
|
+
* The header allowlist is deliberately unchanged, and Issue #2112 kept it that
|
|
1095
|
+
* way rather than adding the five headings it found missing (`Select agent`,
|
|
1096
|
+
* `Sessions`, `Timeline`, `Commands`, and the palette's). #1896 left the
|
|
1097
|
+
* question as "a separate change with its own live frames"; #2046 supplied the
|
|
1098
|
+
* frames and the answer they gave is that a WIDER WORD LIST is the wrong shape.
|
|
1099
|
+
* Three of those dialogs published `ready` / `opencode_response_complete` — the
|
|
1100
|
+
* marker of the previous turn, still on the pane behind the overlay — so the
|
|
1101
|
+
* damage was a false COMPLETION, not a missing NavigationButtons row, and no
|
|
1102
|
+
* heading added here would have changed that ordering. The fix is a gate ahead
|
|
1103
|
+
* of the completion branch that reads the overlay's LAYOUT
|
|
1104
|
+
* (`lib/detection/opencode-modal-overlay.ts`, branch C2 of
|
|
1105
|
+
* `tools/opencode/detect.ts`), which is also what keeps the prose false
|
|
1106
|
+
* positives this pattern was narrowed for from coming back through a longer
|
|
1107
|
+
* list.
|
|
1108
|
+
*
|
|
1109
|
+
* This pattern still runs, and still first: it is the reading that survives ANSI
|
|
1110
|
+
* stripping, where the layout rule cannot see anything at all.
|
|
1100
1111
|
*
|
|
1101
1112
|
* The whitespace runs are `[^\S\n]` (horizontal only) for the reason Issue #1883
|
|
1102
1113
|
* documents: plain `\s` crosses newlines under the `m` flag, which would let a
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Byte-budgeted excerpt truncation for published detection fields (Issue #2095).
|
|
4
|
+
*
|
|
5
|
+
* Extracted from `upstream-faults.ts`, which has carried this since Issue #1839,
|
|
6
|
+
* because #2095 publishes a second screen-read excerpt (`paneObstruction`) under
|
|
7
|
+
* the same rules. Two copies of a bound whose whole job is to be exact is how the
|
|
8
|
+
* two fields would come to promise different things while claiming the same
|
|
9
|
+
* limit — the same argument `status-evidence.ts` makes for keeping one
|
|
10
|
+
* expression per fact.
|
|
11
|
+
*
|
|
12
|
+
* A leaf module by design: it imports nothing, so the canary (which runs outside
|
|
13
|
+
* Next), the server payload builder and the client components can all share it.
|
|
14
|
+
*
|
|
15
|
+
* @module lib/detection/excerpt
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.truncateToByteBudget = truncateToByteBudget;
|
|
19
|
+
/**
|
|
20
|
+
* Truncate to a UTF-8 **byte** budget on a code-point boundary.
|
|
21
|
+
*
|
|
22
|
+
* Bytes rather than characters for the reason Issue #1694 gives for its own
|
|
23
|
+
* excerpt: a Japanese frame runs three bytes to the character, so a
|
|
24
|
+
* character-counted bound publishes three times the payload it promises. These
|
|
25
|
+
* excerpts ride every `current-output` response of an affected session, and
|
|
26
|
+
* those responses are polled every few seconds.
|
|
27
|
+
*
|
|
28
|
+
* The marker is inside the budget, not on top of it: the bound is a promise
|
|
29
|
+
* about the published field, and a caller sizing a log line by it must not be
|
|
30
|
+
* handed twelve more characters than it asked for. Accumulating code points
|
|
31
|
+
* (never UTF-16 units) is what keeps a surrogate pair whole.
|
|
32
|
+
*/
|
|
33
|
+
function truncateToByteBudget(text, maxBytes, marker) {
|
|
34
|
+
const encoder = new TextEncoder();
|
|
35
|
+
if (encoder.encode(text).length <= maxBytes)
|
|
36
|
+
return text;
|
|
37
|
+
const budget = maxBytes - encoder.encode(marker).length;
|
|
38
|
+
let bytes = 0;
|
|
39
|
+
let out = '';
|
|
40
|
+
for (const char of text) {
|
|
41
|
+
const size = encoder.encode(char).length;
|
|
42
|
+
if (bytes + size > budget)
|
|
43
|
+
break;
|
|
44
|
+
bytes += size;
|
|
45
|
+
out += char;
|
|
46
|
+
}
|
|
47
|
+
return `${out}${marker}`;
|
|
48
|
+
}
|
|
@@ -406,6 +406,18 @@ function sameModel(a, b) {
|
|
|
406
406
|
* live frames, so `effort` is always null here. That is not a gap in this
|
|
407
407
|
* reader: the number is not on screen to read.
|
|
408
408
|
*
|
|
409
|
+
* **Issue #2048 re-measured this on 1.18.22 and it still holds — the effort was
|
|
410
|
+
* never on the pane, and now it does not need to be.** A session deliberately
|
|
411
|
+
* run at `variant: high` printed `▣ Build · Claude Sonnet 4.6 · 2.3s` on the
|
|
412
|
+
* step row and `Plan · Claude Haiku 4.5 (latest) GitHub Copilot` on the composer
|
|
413
|
+
* footer: neither surface gained a variant
|
|
414
|
+
* (`docs/design/opencode-server-live-verification.md` §20.4). The value arrives
|
|
415
|
+
* on the *structured* channel instead — `Session.model.variant` and
|
|
416
|
+
* `message.updated.info.variant` — and is latched by
|
|
417
|
+
* `agent-event-state`'s `recordAgentReportedEffort`, which {@link mergeModelInfo}
|
|
418
|
+
* now ranks above everything this module can see. So the null below is still the
|
|
419
|
+
* honest answer for the screen, and the display is no longer limited by it.
|
|
420
|
+
*
|
|
409
421
|
* ## Why not the footer model bar
|
|
410
422
|
*
|
|
411
423
|
* The Issue also names `Build · <model> GitHub Copilot` — the bar two rows above
|
|
@@ -557,6 +569,13 @@ function deriveEffortFromModelId(modelId) {
|
|
|
557
569
|
* - **effort — the id wins for antigravity**, because agy encodes the level in
|
|
558
570
|
* the id it reports on every event, and that beats a bar that is only on
|
|
559
571
|
* screen while the session lives.
|
|
572
|
+
* - **effort — the agent's own word wins outright when it said one**
|
|
573
|
+
* (Issue #2048). opencode publishes a `variant` on the frames CommandMate is
|
|
574
|
+
* subscribed to, and that is the agent naming its own reasoning effort — the
|
|
575
|
+
* same argument the model half makes for hooks beating the screen, applied to
|
|
576
|
+
* the half #1784 had no hook source for. It ranks above the antigravity
|
|
577
|
+
* derivation as well, because a tool that states the value has not left it to
|
|
578
|
+
* be inferred from an id.
|
|
560
579
|
*
|
|
561
580
|
* The derivation reads the *merged* model rather than the hook value alone:
|
|
562
581
|
* effort-in-the-id is a property of the id being published, and when no hook has
|
|
@@ -566,10 +585,14 @@ function deriveEffortFromModelId(modelId) {
|
|
|
566
585
|
* @param cliToolId - Which tool; only `antigravity` derives effort from the id
|
|
567
586
|
* @param hooksModel - {@link import('../../lib/session/agent-event-state').getLastKnownAgentModel}
|
|
568
587
|
* @param captured - {@link extractModelInfo}'s answer, latched by the caller
|
|
588
|
+
* @param hooksEffort - {@link import('../../lib/session/agent-event-state').getLastReportedAgentEffort}
|
|
589
|
+
* (Issue #2048). Optional and last so every pre-#2048 call site is unchanged,
|
|
590
|
+
* and null for every tool that publishes no effort — which is all of them but
|
|
591
|
+
* opencode.
|
|
569
592
|
*/
|
|
570
|
-
function mergeModelInfo(cliToolId, hooksModel, captured) {
|
|
593
|
+
function mergeModelInfo(cliToolId, hooksModel, captured, hooksEffort) {
|
|
571
594
|
const model = (hooksModel || null) ?? captured?.model ?? null;
|
|
572
595
|
const capturedEffort = captured?.effort ?? null;
|
|
573
|
-
const
|
|
574
|
-
return { model, effort };
|
|
596
|
+
const derivedEffort = cliToolId === 'antigravity' ? (deriveEffortFromModelId(model) ?? capturedEffort) : capturedEffort;
|
|
597
|
+
return { model, effort: (hooksEffort || null) ?? derivedEffort };
|
|
575
598
|
}
|