commandmate 0.48.0 → 0.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +164 -164
- package/.next/app-path-routes-manifest.json +30 -30
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/capabilities/route.js +1 -1
- package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/escalation/route.js +1 -1
- package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/vapid/route.js +1 -1
- package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/more/page_client-reference-manifest.js +1 -1
- package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
- package/.next/server/app/review/page_client-reference-manifest.js +1 -1
- package/.next/server/app/sessions/page.js +1 -1
- package/.next/server/app/sessions/page.js.nft.json +1 -1
- package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/[skillId]/page.js +1 -1
- package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
- package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js +2 -2
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/page.js +3 -3
- package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +30 -30
- package/.next/server/chunks/1601.js +2 -2
- package/.next/server/chunks/1656.js +2 -2
- package/.next/server/chunks/1945.js +3 -3
- package/.next/server/chunks/2069.js +1 -0
- package/.next/server/chunks/2422.js +1 -1
- package/.next/server/chunks/2534.js +1 -1
- package/.next/server/chunks/3241.js +1 -1
- package/.next/server/chunks/4243.js +1 -1
- package/.next/server/chunks/4248.js +1 -1
- package/.next/server/chunks/4280.js +1 -1
- package/.next/server/chunks/6119.js +1 -1
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6401.js +1 -1
- package/.next/server/chunks/6486.js +1 -1
- package/.next/server/chunks/720.js +2 -2
- package/.next/server/chunks/7604.js +2 -2
- package/.next/server/chunks/7905.js +1 -1
- package/.next/server/chunks/8581.js +3 -3
- package/.next/server/chunks/8728.js +3 -3
- package/.next/server/chunks/8791.js +1 -1
- package/.next/server/chunks/9390.js +1 -1
- package/.next/server/chunks/9627.js +3 -3
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/1128-914c559913546bbc.js +1 -0
- package/.next/static/chunks/{2407-26139a8a2f1adbe8.js → 2407-ab92ae9837c39dce.js} +1 -1
- package/.next/static/chunks/{2619-a305ad4810f1393a.js → 2619-04bc32f026a0d946.js} +1 -1
- package/.next/static/chunks/{2863-f0121af1cbbedb3b.js → 2863-7173dc305dffc4f6.js} +1 -1
- package/.next/static/chunks/6288-6fadbba6e84393b2.js +1 -0
- package/.next/static/chunks/7665-e9ef6e0a85b9fa49.js +1 -0
- package/.next/static/chunks/{8165-c68b3dc844210e6a.js → 8165-263172c17ae8e8c3.js} +1 -1
- package/.next/static/chunks/9079-987939d231704218.js +1 -0
- package/.next/static/chunks/app/{layout-46b4cbf07520d9b6.js → layout-aa8e66164a4367af.js} +1 -1
- package/.next/static/chunks/app/sessions/{page-fb241bed579c67aa.js → page-cfd645305e25fd33.js} +1 -1
- package/.next/static/chunks/app/skills/[skillId]/{page-52ba58712faf3378.js → page-cb6e74fd9a6a571d.js} +1 -1
- package/.next/static/chunks/app/worktrees/[id]/files/[...path]/page-704086656fb45699.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/{page-cbc7749a33450cc5.js → page-a8d7886703ffc7b4.js} +1 -1
- package/.next/static/chunks/app/worktrees/[id]/terminal/{page-c601f3b3ece6557e.js → page-373ea37b16d930c7.js} +1 -1
- package/.next/static/css/{743f79ff19ab91e9.css → db8959555c3d9c96.css} +1 -1
- package/.next/trace +13 -13
- package/dist/cli/commands/auto-yes.d.ts.map +1 -1
- package/dist/cli/commands/auto-yes.js +3 -5
- package/dist/cli/commands/capture.d.ts.map +1 -1
- package/dist/cli/commands/capture.js +5 -0
- package/dist/cli/commands/send.d.ts.map +1 -1
- package/dist/cli/commands/send.js +4 -6
- package/dist/cli/commands/verify.d.ts.map +1 -1
- package/dist/cli/commands/verify.js +8 -1
- package/dist/cli/config/duration-constants.d.ts +16 -13
- package/dist/cli/config/duration-constants.d.ts.map +1 -1
- package/dist/cli/config/duration-constants.js +21 -21
- package/dist/cli/docs/agent-operations.d.ts +1 -1
- package/dist/cli/docs/agent-operations.d.ts.map +1 -1
- package/dist/cli/docs/agent-operations.js +2 -1
- package/dist/cli/types/api-responses.d.ts +29 -1
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/cli/utils/verify-runner.d.ts +24 -1
- package/dist/cli/utils/verify-runner.d.ts.map +1 -1
- package/dist/cli/utils/verify-runner.js +54 -1
- package/dist/config/auto-yes-duration.d.ts +56 -0
- package/dist/config/auto-yes-duration.d.ts.map +1 -0
- package/dist/config/auto-yes-duration.js +76 -0
- package/dist/server/src/config/auto-yes-config.js +14 -19
- package/dist/server/src/config/auto-yes-duration.js +76 -0
- package/dist/server/src/lib/auto-yes-state.js +9 -2
- package/dist/server/src/lib/cli-tools/submit-verified-sender.js +137 -14
- package/dist/server/src/lib/detection/composer-text.js +215 -11
- package/dist/server/src/lib/detection/prompt-detect-multiple-choice-chrome.js +193 -0
- package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +8 -191
- package/dist/server/src/lib/detection/upstream-faults.js +19 -2
- package/dist/server/src/lib/hooks/structured-decision-response.js +1 -1
- package/dist/server/src/lib/polling/auto-yes-manual-answer.js +4 -2
- package/dist/server/src/lib/polling/response-checker.js +12 -15
- package/dist/server/src/lib/session/composer-clear.js +56 -4
- package/dist/server/src/lib/session/current-output-builder.js +2 -1
- package/dist/server/src/lib/session/send-attempt-state.js +2 -1
- package/dist/server/src/lib/session/waiting-episode-state-ops.js +152 -0
- package/dist/server/src/lib/session/waiting-episode-state-store.js +202 -0
- package/dist/server/src/lib/session/waiting-episode-state-types.js +6 -0
- package/dist/server/src/lib/session/waiting-episode-state.js +26 -339
- package/dist/server/src/lib/tmux/tmux.js +25 -0
- package/dist/server/src/lib/verification/gate-runner.js +11 -4
- package/docs/en/user-guide/webapp-guide.md +15 -10
- package/package.json +1 -1
- package/release-notes/0.49.0.json +45 -0
- package/.next/server/chunks/6722.js +0 -1
- package/.next/static/chunks/2099-c3e0ab70a1b95dd3.js +0 -1
- package/.next/static/chunks/5371-a549a0d2c2044d41.js +0 -1
- package/.next/static/chunks/6288-09feba367cc2c65e.js +0 -1
- package/.next/static/chunks/9079-406b84d3cc891a87.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/files/[...path]/page-9cf1ecc59e36a004.js +0 -1
- /package/.next/static/{PTlAswXLq8PAe2vUJ8dVP → 3_JtAZaKMJEDFIIfkHv4n}/_buildManifest.js +0 -0
- /package/.next/static/{PTlAswXLq8PAe2vUJ8dVP → 3_JtAZaKMJEDFIIfkHv4n}/_ssgManifest.js +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
exports.id=8728,exports.ids=[8728],exports.modules={3453:(a,b,c)=>{"use strict";c.d(b,{Rh:()=>r,T1:()=>o,Z2:()=>m,c$:()=>n,nu:()=>q});var d=c(72626),e=c(80438);let f=(0,d.h)("ip-restriction"),g="::ffff:",h=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/,i=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\/(\d{1,2})$/,j=process.env.CM_ALLOWED_IPS?.trim()||"",k=process.env.CM_TRUST_PROXY?.trim()||"";""!==k&&"true"!==k&&"false"!==k&&(0,e.h)(f,"trust-proxy-unexpected",{value:k});let l="true"===k;function m(a){return a?a.toLowerCase().startsWith(g)?a.substring(g.length):a:""}function n(a,b){if(0===b.length)return!1;let c=function(a){let b=a.match(h);if(!b)return null;let c=[parseInt(b[1],10),parseInt(b[2],10),parseInt(b[3],10),parseInt(b[4],10)];for(let a of c)if(a<0||a>255)return null;return(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0}(m(a));if(null===c)return!1;for(let a of b)if((c&a.mask)>>>0===a.network)return!0;return!1}function o(a){if(l){let b=a.get("x-forwarded-for");if(b){let a=b.split(",")[0].trim();if(a)return a}}return a.get("x-real-ip")||null}let p=j.length>0?function(a){let b=a.trim();if(0===b.length)return[];let c=b.split(",").map(a=>a.trim()).filter(a=>a.length>0);if(c.length>256)throw Error(`CM_ALLOWED_IPS: too many entries (${c.length}). Maximum is 256.`);let d=[];for(let a of c){if(a.length>18)throw Error(`CM_ALLOWED_IPS: entry "${a}" exceeds maximum length of 18 characters.`);let b=a.match(i);if(b){let c=[parseInt(b[1],10),parseInt(b[2],10),parseInt(b[3],10),parseInt(b[4],10)],e=parseInt(b[5],10);for(let b of c)if(b<0||b>255)throw Error(`CM_ALLOWED_IPS: invalid octet in "${a}". Octets must be 0-255.`);if(e<0||e>32)throw Error(`CM_ALLOWED_IPS: invalid prefix length in "${a}". Must be 0-32.`);let f=(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0,g=0===e?0:0xffffffff<<32-e>>>0;d.push({network:(f&g)>>>0,mask:g});continue}let c=a.match(h);if(c){let b=[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10),parseInt(c[4],10)];for(let c of b)if(c<0||c>255)throw Error(`CM_ALLOWED_IPS: invalid octet in "${a}". Octets must be 0-255.`);let e=(b[0]<<24|b[1]<<16|b[2]<<8|b[3])>>>0;d.push({network:e,mask:0xffffffff});continue}throw Error(`CM_ALLOWED_IPS: invalid entry "${a}". Expected IPv4 address or CIDR notation.`)}return d}(j):[];function q(){return p}function r(){return j.length>0}},7015:(a,b,c)=>{"use strict";c.d(b,{Ds:()=>g});var d=c(81719);class e{constructor(a,b=3e4){this.cache=new Map,this.allAppsCache=null,this.lastRefresh=0,this.db=a,this.ttl=b}getTTL(){return this.ttl}isStale(){return Date.now()-this.lastRefresh>this.ttl}async refresh(){let a=(0,d.$i)(this.db);for(let b of(this.cache.clear(),a))this.cache.set(b.pathPrefix,b);this.allAppsCache=a,this.lastRefresh=Date.now()}async getByPathPrefix(a){return this.isStale()&&await this.refresh(),this.cache.get(a)??null}async getAll(){return this.isStale()&&await this.refresh(),this.allAppsCache??[]}invalidate(){this.cache.clear(),this.allAppsCache=null,this.lastRefresh=0}invalidateByIssueNo(a){this.invalidate()}}let f=null;function g(a){if(!f){if(!a)throw Error("Database instance required to initialize cache");f=new e(a)}return f}},23854:(a,b,c)=>{"use strict";c.d(b,{$G:()=>f,AL:()=>h,DZ:()=>d,Qe:()=>g,ie:()=>e});let d=4e3,e=15e3;function f(a){var b,c;if(b=a.from,c=a.to,b.worktreeId===c.worktreeId&&b.instanceId===c.instanceId)return{code:"RELAY_SELF_TARGET",message:"A session cannot relay a reply to itself. --reply-to must name a different worktree or a different agent instance."};let d=null===a.parentHops?1:a.parentHops+1;return null===a.parentHops||a.allowRelayChain?d>3?{code:"RELAY_HOPS_EXCEEDED",message:`Relay chains stop at 3 hops; this one would be ${d}. Report the reply to whoever asked instead of forwarding it again.`}:a.openBetween>=1?{code:"RELAY_DUPLICATE_PENDING",message:"There is already an open relay between these two sessions. Wait for it, or withdraw it with `commandmate relays cancel <id>`."}:{ok:!0,hops:d}:{code:"RELAY_CHAIN_BLOCKED",message:"The last message this session was given arrived over a relay, so opening another one would chain two deliveries together. Pass --allow-relay-chain if that is what you mean."}}function g(a){return"code"in a}function h(a){return void 0!==a&&Number.isFinite(a)?Math.min(6048e5,Math.max(6e4,Math.trunc(a))):864e5}},26838:(a,b,c)=>{"use strict";c.d(b,{E2:()=>q,MQ:()=>m,Mj:()=>o,Sw:()=>n,lX:()=>r});var d=c(29021),e=c(33873),f=c(54325),g=c(90164),h=c(36925);let i=/^v?\d+\.\d+\.\d+$/,j=/^[a-zA-Z0-9.\-\s_v]+$/,k=[".next","required-server-files.json"],l=(0,h.v)("__versionCheckCache",()=>({result:null,fetchedAt:0,rateLimitResetAt:null}));function m(a,b){if(!i.test(a)||!i.test(b))return!1;let c=a=>a.replace(/^v/,"").split(".").map(Number),[d,e,f]=c(a),[g,h,j]=c(b);return g!==d?g>d:h!==e?h>e:j>f}function n(){return function(){try{let a=(0,d.readFileSync)((0,e.join)(process.cwd(),"package.json"),"utf-8"),b=JSON.parse(a);if("commandmate"===b.name&&"string"==typeof b.version&&b.version.length>0)return b.version;return null}catch{return null}}()??"0.
|
|
1
|
+
exports.id=8728,exports.ids=[8728],exports.modules={3453:(a,b,c)=>{"use strict";c.d(b,{Rh:()=>r,T1:()=>o,Z2:()=>m,c$:()=>n,nu:()=>q});var d=c(72626),e=c(80438);let f=(0,d.h)("ip-restriction"),g="::ffff:",h=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/,i=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\/(\d{1,2})$/,j=process.env.CM_ALLOWED_IPS?.trim()||"",k=process.env.CM_TRUST_PROXY?.trim()||"";""!==k&&"true"!==k&&"false"!==k&&(0,e.h)(f,"trust-proxy-unexpected",{value:k});let l="true"===k;function m(a){return a?a.toLowerCase().startsWith(g)?a.substring(g.length):a:""}function n(a,b){if(0===b.length)return!1;let c=function(a){let b=a.match(h);if(!b)return null;let c=[parseInt(b[1],10),parseInt(b[2],10),parseInt(b[3],10),parseInt(b[4],10)];for(let a of c)if(a<0||a>255)return null;return(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0}(m(a));if(null===c)return!1;for(let a of b)if((c&a.mask)>>>0===a.network)return!0;return!1}function o(a){if(l){let b=a.get("x-forwarded-for");if(b){let a=b.split(",")[0].trim();if(a)return a}}return a.get("x-real-ip")||null}let p=j.length>0?function(a){let b=a.trim();if(0===b.length)return[];let c=b.split(",").map(a=>a.trim()).filter(a=>a.length>0);if(c.length>256)throw Error(`CM_ALLOWED_IPS: too many entries (${c.length}). Maximum is 256.`);let d=[];for(let a of c){if(a.length>18)throw Error(`CM_ALLOWED_IPS: entry "${a}" exceeds maximum length of 18 characters.`);let b=a.match(i);if(b){let c=[parseInt(b[1],10),parseInt(b[2],10),parseInt(b[3],10),parseInt(b[4],10)],e=parseInt(b[5],10);for(let b of c)if(b<0||b>255)throw Error(`CM_ALLOWED_IPS: invalid octet in "${a}". Octets must be 0-255.`);if(e<0||e>32)throw Error(`CM_ALLOWED_IPS: invalid prefix length in "${a}". Must be 0-32.`);let f=(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0,g=0===e?0:0xffffffff<<32-e>>>0;d.push({network:(f&g)>>>0,mask:g});continue}let c=a.match(h);if(c){let b=[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10),parseInt(c[4],10)];for(let c of b)if(c<0||c>255)throw Error(`CM_ALLOWED_IPS: invalid octet in "${a}". Octets must be 0-255.`);let e=(b[0]<<24|b[1]<<16|b[2]<<8|b[3])>>>0;d.push({network:e,mask:0xffffffff});continue}throw Error(`CM_ALLOWED_IPS: invalid entry "${a}". Expected IPv4 address or CIDR notation.`)}return d}(j):[];function q(){return p}function r(){return j.length>0}},7015:(a,b,c)=>{"use strict";c.d(b,{Ds:()=>g});var d=c(81719);class e{constructor(a,b=3e4){this.cache=new Map,this.allAppsCache=null,this.lastRefresh=0,this.db=a,this.ttl=b}getTTL(){return this.ttl}isStale(){return Date.now()-this.lastRefresh>this.ttl}async refresh(){let a=(0,d.$i)(this.db);for(let b of(this.cache.clear(),a))this.cache.set(b.pathPrefix,b);this.allAppsCache=a,this.lastRefresh=Date.now()}async getByPathPrefix(a){return this.isStale()&&await this.refresh(),this.cache.get(a)??null}async getAll(){return this.isStale()&&await this.refresh(),this.allAppsCache??[]}invalidate(){this.cache.clear(),this.allAppsCache=null,this.lastRefresh=0}invalidateByIssueNo(a){this.invalidate()}}let f=null;function g(a){if(!f){if(!a)throw Error("Database instance required to initialize cache");f=new e(a)}return f}},23854:(a,b,c)=>{"use strict";c.d(b,{$G:()=>f,AL:()=>h,DZ:()=>d,Qe:()=>g,ie:()=>e});let d=4e3,e=15e3;function f(a){var b,c;if(b=a.from,c=a.to,b.worktreeId===c.worktreeId&&b.instanceId===c.instanceId)return{code:"RELAY_SELF_TARGET",message:"A session cannot relay a reply to itself. --reply-to must name a different worktree or a different agent instance."};let d=null===a.parentHops?1:a.parentHops+1;return null===a.parentHops||a.allowRelayChain?d>3?{code:"RELAY_HOPS_EXCEEDED",message:`Relay chains stop at 3 hops; this one would be ${d}. Report the reply to whoever asked instead of forwarding it again.`}:a.openBetween>=1?{code:"RELAY_DUPLICATE_PENDING",message:"There is already an open relay between these two sessions. Wait for it, or withdraw it with `commandmate relays cancel <id>`."}:{ok:!0,hops:d}:{code:"RELAY_CHAIN_BLOCKED",message:"The last message this session was given arrived over a relay, so opening another one would chain two deliveries together. Pass --allow-relay-chain if that is what you mean."}}function g(a){return"code"in a}function h(a){return void 0!==a&&Number.isFinite(a)?Math.min(6048e5,Math.max(6e4,Math.trunc(a))):864e5}},26838:(a,b,c)=>{"use strict";c.d(b,{E2:()=>q,MQ:()=>m,Mj:()=>o,Sw:()=>n,lX:()=>r});var d=c(29021),e=c(33873),f=c(54325),g=c(90164),h=c(36925);let i=/^v?\d+\.\d+\.\d+$/,j=/^[a-zA-Z0-9.\-\s_v]+$/,k=[".next","required-server-files.json"],l=(0,h.v)("__versionCheckCache",()=>({result:null,fetchedAt:0,rateLimitResetAt:null}));function m(a,b){if(!i.test(a)||!i.test(b))return!1;let c=a=>a.replace(/^v/,"").split(".").map(Number),[d,e,f]=c(a),[g,h,j]=c(b);return g!==d?g>d:h!==e?h>e:j>f}function n(){return function(){try{let a=(0,d.readFileSync)((0,e.join)(process.cwd(),"package.json"),"utf-8"),b=JSON.parse(a);if("commandmate"===b.name&&"string"==typeof b.version&&b.version.length>0)return b.version;return null}catch{return null}}()??"0.49.0"}function o(){return n()}let p=null;function q(a){let b=p??=function(){{let a=function(){try{let a=(0,d.readFileSync)((0,e.join)(process.cwd(),...k),"utf-8"),b=JSON.parse(a),c=b.config?.env?.NEXT_PUBLIC_APP_VERSION;if("string"==typeof c&&c.length>0)return c;return null}catch{return null}}();if(a)return a}return"0.49.0"}();return(0,f.LE)(b,a)?{serverVersion:b,clientVersion:a}:null}async function r(){try{var a,b,c;if(null!==l.result&&Date.now()-l.fetchedAt<36e5||l.rateLimitResetAt&&(!(Date.now()>=l.rateLimitResetAt)||(l.rateLimitResetAt=null,0)))return l.result;let d=await fetch("https://api.github.com/repos/Kewton/CommandMate/releases/latest",{headers:{Accept:"application/vnd.github+json","User-Agent":`CommandMate/${o()}`},cache:"no-store",signal:AbortSignal.timeout(5e3)});if(403===d.status)return function(a){let b=a.headers.get("X-RateLimit-Reset");b?l.rateLimitResetAt=1e3*parseInt(b,10):l.rateLimitResetAt=Date.now()+36e5}(d),l.result;if(!d.ok)return l.result;let e=await d.json(),f=o(),h=e.tag_name.replace(/^v/,""),i={hasUpdate:m(f,e.tag_name),currentVersion:f,latestVersion:h,releaseUrl:(a=e.html_url).startsWith(g.Dk)?a:null,releaseName:(b=e.name,c=e.tag_name,j.test(b)&&b.length<=128?b:c),publishedAt:e.published_at};return l.result=i,l.fetchedAt=Date.now(),i}catch{return l.result}}},30008:(a,b,c)=>{"use strict";c.d(b,{$G:()=>g,F1:()=>j,_G:()=>l,j0:()=>i,rB:()=>k,xF:()=>m,yg:()=>h});var d=c(95375),e=c(67882),f=c(27870);function g(a,b){return null!==a&&"notification"===a.source&&"permission-id"===b&&(0,f.PP)(a.decisionId)}function h(a,b,c,e){return g((0,d.getStructuredPromptWaiting)(a,b,c),e)}let i=3e5,j="CM_STRUCTURED_SEND_GUARD";function k(a){return"notification"===a.source?e.Oh.PERMISSION_PROMPT:e.Oh.PERMISSION_REQUEST}function l({worktreeId:a,cliToolId:b,instanceId:c,scraper:e,ignoreStructured:f=!1,now:g=Date.now()}){var h,l,m;let n=(0,d.getStructuredPromptWaiting)(a,b,c,g);null!==n&&("waiting"===e.status?(0,d.corroborateStructuredPromptWaiting)(a,b,c,g):n.scraperCorroborated&&((0,d.clearStructuredPromptWaiting)(a,b,c),n=null));let o=e.hasActivePrompt||null!==n;if(e.hasActivePrompt)return{waiting:o,scraperWaiting:!0,structured:n,blocksSend:!0,blockedBy:"scraper",blockReason:e.reason,structuredSendBlockSuppressed:null};if(null===n)return{waiting:o,scraperWaiting:!1,structured:null,blocksSend:!1,blockedBy:null,blockReason:null,structuredSendBlockSuppressed:null};let p=(h=n,l=f,m=g,l?"caller_opt_out":!function(){let a=process.env[j]?.trim().toLowerCase();return"off"===a||"0"===a||"false"===a}()?m-h.at>=i?"expired":null:"disabled");return{waiting:o,scraperWaiting:!1,structured:n,blocksSend:null===p,blockedBy:null===p?"structured":null,blockReason:null===p?k(n):null,structuredSendBlockSuppressed:p}}function m({worktreeId:a,cliToolId:b,instanceId:c,scraper:e,now:f=Date.now()}){let g=(0,d.getStructuredPromptWaiting)(a,b,c,f);return{waiting:e.hasActivePrompt||null!==g,scraperWaiting:e.hasActivePrompt,structured:g}}},39727:()=>{},43015:(a,b,c)=>{"use strict";c.r(b),c.d(b,{CM_INGRESS_HEADER:()=>W,REMOTE_ONLY_AUTH_SCOPE:()=>X,WORKTREE_RENAMED_EVENT_TYPE:()=>ax,__internal:()=>aD,broadcast:()=>au,broadcastMessage:()=>aw,cleanupRooms:()=>aA,closeWebSocket:()=>aC,handleProxyUpgrade:()=>_,hasRoomSubscribers:()=>av,isIngressAuthExempt:()=>Z,migrateWorktreeRooms:()=>ay,setupWebSocket:()=>ad,stampIngress:()=>Y});var d=c(81503),e=c(91645),f=c(88081),g=c(3453),h=c(15194),i=c(40964),j=c(88807),k=c(56791);let l={capturePaneCalls:0,activeControlSessions:0,subscriberCount:0,cleanupCount:0,firstOutputLatencyCount:0,firstOutputLatencyTotalMs:0,firstOutputLatencyLastMs:null,firstOutputLatencyMinMs:null,firstOutputLatencyMaxMs:null};var m=c(79892),n=c(72626),o=c(79646);class p{push(a){if(0===a.length)return[];let b=(this.remainder+a).split("\n");this.remainder=b.pop()??"";let c=[];for(let a of b){let b=a.endsWith("\r")?a.slice(0,-1):a,d=this.parseLine(b);d&&c.push(d)}return c}flush(){if(0===this.remainder.length)return[];let a=this.parseLine(this.remainder);return this.remainder="",a?[a]:[]}parseLine(a){return 0===a.length?{type:"output",data:"\n"}:a.startsWith("%output ")?{type:"output",data:`${a.slice(8)}
|
|
2
2
|
`}:"%exit"===a||a.startsWith("%exit ")?{type:"exit",exitCode:null}:a.startsWith("%error ")?{type:"error",error:Error(a.slice(7))}:a.startsWith("%")?null:{type:"output",data:`${a}
|
|
3
3
|
`}}constructor(){this.remainder=""}}let q=(0,n.h)("tmux-control-client");class r{constructor(a={}){this.parser=new p,this.handlers=new Set,this.child=null,this.sessionName=null,this.idleTimer=null,this.started=!1,this.spawnProcess=a.spawnProcess??((a,b,c)=>(0,o.spawn)(a,b,c)),this.tmuxBinary=a.tmuxBinary??"tmux",this.idleTimeoutMs=a.idleTimeoutMs??3e4}start(a){this.started||(this.sessionName=a,this.child=this.spawnProcess(this.tmuxBinary,["-C","attach-session","-t",(0,m.lA)(a)],{stdio:"pipe"}),this.started=!0,this.child.stdout.setEncoding("utf8"),this.child.stdout.on("data",a=>{this.touch();let b="string"==typeof a?a:a.toString("utf8");for(let a of this.parser.push(b))this.emit(a)}),this.child.stderr.setEncoding("utf8"),this.child.stderr.on("data",a=>{let b="string"==typeof a?a:a.toString("utf8");this.emit({type:"error",error:Error(b.trim()||"tmux control stderr")})}),this.child.on("close",a=>{for(let a of this.parser.flush())this.emit(a);this.emit({type:"exit",exitCode:a}),this.stop()}),this.child.on("error",a=>{this.emit({type:"error",error:a}),this.stop()}),this.resetIdleTimer(),q.debug("start",{sessionName:a}))}onEvent(a){return this.handlers.add(a),()=>{this.handlers.delete(a)}}sendInput(a){if(!this.child?.stdin.writable||null===this.sessionName)throw Error("Tmux control client is not writable");this.touch();let b=Buffer.from(a,"utf8");for(let a=0;a<b.length;a+=256){let c=Array.from(b.subarray(a,a+256),a=>a.toString(16).padStart(2,"0")).join(" ");this.child.stdin.write(`send-keys -t ${(0,m.lA)(this.sessionName)} -H ${c}
|
|
4
4
|
`)}}resize(a,b){if(!this.child?.stdin.writable)throw Error("Tmux control client is not writable");this.touch(),this.child.stdin.write(`refresh-client -C ${a}x${b}
|
|
5
|
-
`)}stop(){this.idleTimer&&(clearTimeout(this.idleTimer),this.idleTimer=null),this.child&&(this.child.removeAllListeners(),this.child.stdout.removeAllListeners(),this.child.stderr.removeAllListeners(),this.child.kill(),this.child=null),this.started=!1}isStarted(){return this.started}setSessionName(a){this.sessionName=a}emit(a){for(let b of this.handlers)b(a)}touch(){this.resetIdleTimer()}resetIdleTimer(){this.idleTimeoutMs<=0||(this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=setTimeout(()=>{q.debug("idle-timeout",{sessionName:this.sessionName}),this.stop()},this.idleTimeoutMs))}}let s=(0,n.h)("tmux-control-registry");class t{constructor(a={}){this.entries=new Map,this.handlers=new Map,this.idleTimeoutMs=a.idleTimeoutMs??15e3,this.createClient=a.createClient??(()=>new r(a))}subscribe(a,b,c){let d=this.ensureEntry(a);d.subscribers.add(b),this.cancelIdleCleanup(d),this.updateMetrics();let e=this.handlers.get(a);return e||(e=new Set,this.handlers.set(a,e)),e.add(c),()=>{e?.delete(c),this.unsubscribe(a,b)}}sendInput(a,b){let c=this.entries.get(a);if(!c)throw Error(`No control client registered for ${a}`);c.client.sendInput(b)}resize(a,b,c){let d=this.entries.get(a);if(!d)throw Error(`No control client registered for ${a}`);d.client.resize(b,c)}hasSession(a){return this.entries.has(a)}getSubscriberCount(a){return this.entries.get(a)?.subscribers.size??0}getTotalSubscriberCount(){let a=0;for(let b of this.entries.values())a+=b.subscribers.size;return a}getSessionCount(){return this.entries.size}shutdown(){for(let[a,b]of this.entries)this.teardownEntry(a,b);this.entries.clear(),this.handlers.clear(),this.updateMetrics()}renameSession(a,b){if(a===b)return!1;let c=this.entries.get(a);if(!c)return!1;if(this.entries.has(b))return s.warn("rename:destination-occupied",{oldName:a,newName:b}),!1;this.entries.delete(a),c.sessionName=b,this.entries.set(b,c),c.client.setSessionName(b);let d=this.handlers.get(a);return d&&(this.handlers.delete(a),this.handlers.set(b,d)),s.debug("rename",{oldName:a,newName:b}),!0}ensureEntry(a){let b=this.entries.get(a);if(b)return b;let c=this.createClient(a);c.start(a);let d={client:c,subscribers:new Set,unsubscribeClientEvent:()=>{},idleTimer:null,sessionName:a};return d.unsubscribeClientEvent=c.onEvent(a=>{let b=this.handlers.get(d.sessionName);if(b)for(let c of b)c(a);("exit"===a.type||"error"===a.type)&&this.deleteEntry(d.sessionName)}),this.entries.set(a,d),this.updateMetrics(),d}unsubscribe(a,b){let c=this.entries.get(a);c&&(c.subscribers.delete(b),this.updateMetrics(),0===c.subscribers.size&&this.scheduleIdleCleanup(a,c))}scheduleIdleCleanup(a,b){if(this.idleTimeoutMs<=0)return void this.deleteEntry(a);this.cancelIdleCleanup(b),b.idleTimer=setTimeout(()=>{s.debug("idle-cleanup",{sessionName:b.sessionName}),this.deleteEntry(b.sessionName)},this.idleTimeoutMs)}cancelIdleCleanup(a){a.idleTimer&&(clearTimeout(a.idleTimer),a.idleTimer=null)}deleteEntry(a){let b=this.entries.get(a);b&&(this.teardownEntry(a,b),this.entries.delete(a),this.handlers.delete(a),this.updateMetrics())}teardownEntry(a,b){this.cancelIdleCleanup(b),b.unsubscribeClientEvent(),b.client.stop(),l.cleanupCount+=1}updateMetrics(){l.activeControlSessions=Math.max(0,this.getSessionCount()),l.subscriberCount=Math.max(0,this.getTotalSubscriberCount())}}let u=null,v={streamingOutput:!0,explicitResize:!0,snapshotFallback:!0};class w{constructor(a={}){this.registry=a.registry??(u||(u=new t),u)}async ensureSession(a,b){await (0,m.N)(a)||await (0,m.jw)(a,b)}async sessionExists(a){return(0,m.N)(a)}async sendInput(a,b){if(this.registry.hasSession(a))return void this.registry.sendInput(a,b);await (0,m.V1)(a,b)}async sendSpecialKey(a,b){if("Escape"!==b&&"C-c"!==b&&"C-d"!==b&&"C-m"!==b&&"Enter"!==b)throw Error(`Unsupported special key for ControlModeTmuxTransport: ${b}`);await (0,m.ds)(a,b)}async resize(a,b,c){this.registry.resize(a,b,c)}async captureSnapshot(a,b){return l.capturePaneCalls+=1,(0,m.Xg)(a,b)}async subscribe(a,b){let c=`sub-${Date.now()}-${Math.random().toString(36).slice(2,10)}`,d=this.registry.subscribe(a,c,a=>{"output"===a.type?b.onOutput(a.data):"exit"===a.type?b.onExit?.({exitCode:a.exitCode}):b.onError(a.error)});return{async unsubscribe(){d()}}}getCapabilities(){return v}getSubscriberCount(a){return this.registry.getSubscriberCount(a)}renameSession(a,b){return this.registry.renameSession(a,b)}async killSession(a){return(0,m.fY)(a)}}let x=null;function y(){return x||(x=new w),x}var z=c(31347),A=c(56455),B=c(7015),C=c(26838),D=c(54325),E=c(52660),F=c(55233),G=c(95375);let H=(0,n.h)("model-change-broadcast");function I(){let a=globalThis.__modelChangeBroadcastUnsubscribe;a&&(a(),globalThis.__modelChangeBroadcastUnsubscribe=void 0)}var J=c(43925),K=c(
|
|
5
|
+
`)}stop(){this.idleTimer&&(clearTimeout(this.idleTimer),this.idleTimer=null),this.child&&(this.child.removeAllListeners(),this.child.stdout.removeAllListeners(),this.child.stderr.removeAllListeners(),this.child.kill(),this.child=null),this.started=!1}isStarted(){return this.started}setSessionName(a){this.sessionName=a}emit(a){for(let b of this.handlers)b(a)}touch(){this.resetIdleTimer()}resetIdleTimer(){this.idleTimeoutMs<=0||(this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=setTimeout(()=>{q.debug("idle-timeout",{sessionName:this.sessionName}),this.stop()},this.idleTimeoutMs))}}let s=(0,n.h)("tmux-control-registry");class t{constructor(a={}){this.entries=new Map,this.handlers=new Map,this.idleTimeoutMs=a.idleTimeoutMs??15e3,this.createClient=a.createClient??(()=>new r(a))}subscribe(a,b,c){let d=this.ensureEntry(a);d.subscribers.add(b),this.cancelIdleCleanup(d),this.updateMetrics();let e=this.handlers.get(a);return e||(e=new Set,this.handlers.set(a,e)),e.add(c),()=>{e?.delete(c),this.unsubscribe(a,b)}}sendInput(a,b){let c=this.entries.get(a);if(!c)throw Error(`No control client registered for ${a}`);c.client.sendInput(b)}resize(a,b,c){let d=this.entries.get(a);if(!d)throw Error(`No control client registered for ${a}`);d.client.resize(b,c)}hasSession(a){return this.entries.has(a)}getSubscriberCount(a){return this.entries.get(a)?.subscribers.size??0}getTotalSubscriberCount(){let a=0;for(let b of this.entries.values())a+=b.subscribers.size;return a}getSessionCount(){return this.entries.size}shutdown(){for(let[a,b]of this.entries)this.teardownEntry(a,b);this.entries.clear(),this.handlers.clear(),this.updateMetrics()}renameSession(a,b){if(a===b)return!1;let c=this.entries.get(a);if(!c)return!1;if(this.entries.has(b))return s.warn("rename:destination-occupied",{oldName:a,newName:b}),!1;this.entries.delete(a),c.sessionName=b,this.entries.set(b,c),c.client.setSessionName(b);let d=this.handlers.get(a);return d&&(this.handlers.delete(a),this.handlers.set(b,d)),s.debug("rename",{oldName:a,newName:b}),!0}ensureEntry(a){let b=this.entries.get(a);if(b)return b;let c=this.createClient(a);c.start(a);let d={client:c,subscribers:new Set,unsubscribeClientEvent:()=>{},idleTimer:null,sessionName:a};return d.unsubscribeClientEvent=c.onEvent(a=>{let b=this.handlers.get(d.sessionName);if(b)for(let c of b)c(a);("exit"===a.type||"error"===a.type)&&this.deleteEntry(d.sessionName)}),this.entries.set(a,d),this.updateMetrics(),d}unsubscribe(a,b){let c=this.entries.get(a);c&&(c.subscribers.delete(b),this.updateMetrics(),0===c.subscribers.size&&this.scheduleIdleCleanup(a,c))}scheduleIdleCleanup(a,b){if(this.idleTimeoutMs<=0)return void this.deleteEntry(a);this.cancelIdleCleanup(b),b.idleTimer=setTimeout(()=>{s.debug("idle-cleanup",{sessionName:b.sessionName}),this.deleteEntry(b.sessionName)},this.idleTimeoutMs)}cancelIdleCleanup(a){a.idleTimer&&(clearTimeout(a.idleTimer),a.idleTimer=null)}deleteEntry(a){let b=this.entries.get(a);b&&(this.teardownEntry(a,b),this.entries.delete(a),this.handlers.delete(a),this.updateMetrics())}teardownEntry(a,b){this.cancelIdleCleanup(b),b.unsubscribeClientEvent(),b.client.stop(),l.cleanupCount+=1}updateMetrics(){l.activeControlSessions=Math.max(0,this.getSessionCount()),l.subscriberCount=Math.max(0,this.getTotalSubscriberCount())}}let u=null,v={streamingOutput:!0,explicitResize:!0,snapshotFallback:!0};class w{constructor(a={}){this.registry=a.registry??(u||(u=new t),u)}async ensureSession(a,b){await (0,m.N)(a)||await (0,m.jw)(a,b)}async sessionExists(a){return(0,m.N)(a)}async sendInput(a,b){if(this.registry.hasSession(a))return void this.registry.sendInput(a,b);await (0,m.V1)(a,b)}async sendSpecialKey(a,b){if("Escape"!==b&&"C-c"!==b&&"C-d"!==b&&"C-m"!==b&&"Enter"!==b)throw Error(`Unsupported special key for ControlModeTmuxTransport: ${b}`);await (0,m.ds)(a,b)}async resize(a,b,c){this.registry.resize(a,b,c)}async captureSnapshot(a,b){return l.capturePaneCalls+=1,(0,m.Xg)(a,b)}async subscribe(a,b){let c=`sub-${Date.now()}-${Math.random().toString(36).slice(2,10)}`,d=this.registry.subscribe(a,c,a=>{"output"===a.type?b.onOutput(a.data):"exit"===a.type?b.onExit?.({exitCode:a.exitCode}):b.onError(a.error)});return{async unsubscribe(){d()}}}getCapabilities(){return v}getSubscriberCount(a){return this.registry.getSubscriberCount(a)}renameSession(a,b){return this.registry.renameSession(a,b)}async killSession(a){return(0,m.fY)(a)}}let x=null;function y(){return x||(x=new w),x}var z=c(31347),A=c(56455),B=c(7015),C=c(26838),D=c(54325),E=c(52660),F=c(55233),G=c(95375);let H=(0,n.h)("model-change-broadcast");function I(){let a=globalThis.__modelChangeBroadcastUnsubscribe;a&&(a(),globalThis.__modelChangeBroadcastUnsubscribe=void 0)}var J=c(43925),K=c(36261);function L(){let a=globalThis.__waitingStatusBroadcastUnsubscribe;a&&(a(),globalThis.__waitingStatusBroadcastUnsubscribe=void 0),I(),(0,J.dz)()}var M=c(36925);let N=(0,n.h)("publisher-registry");function O(){return globalThis.__realtimeRoomPublisher?.publisher??null}let P=(0,n.h)("ws-server"),Q=null,R=new Map,S=new Map,T=null,U=null,V=new Set(["localhost","127.0.0.1"]),W="x-cm-ingress",X="remote-only";function Y(a,b){a[W]=b}function Z(a,b=process.env){return b.CM_AUTH_SCOPE===X&&"local"===a[W]}function $(a,b){try{a.write(`HTTP/1.1 ${b}\r
|
|
6
6
|
Content-Length: 0\r
|
|
7
7
|
Connection: close\r
|
|
8
8
|
\r
|
|
9
|
-
`)}catch{}a.destroy()}async function _(a,b,c,d){let e,f=(a.url||"/").split("?")[0].split("/")[2]||"";if(!f)return void $(b,"400 Bad Request");try{let a=d.getDb(),b=d.getCache(a);e=await b.getByPathPrefix(f)}catch(a){P.error("ws-proxy:cache-error",{pathPrefix:f,error:a instanceof Error?a.message:String(a)}),!b.destroyed&&b.writable&&$(b,"502 Bad Gateway");return}if(b.destroyed||!b.writable)return;if(!e)return void $(b,"404 Not Found");if(!e.enabled)return void $(b,"503 Service Unavailable");if(!e.websocketEnabled)return void $(b,"403 Forbidden");if(!V.has(e.targetHost)){P.warn("ws-proxy:ssrf-blocked",{pathPrefix:f}),$(b,"403 Forbidden");return}let g=d.netConnect({host:e.targetHost,port:e.targetPort}),h=!1,i=!1,j=()=>{if(!i){i=!0;try{g.destroy()}catch{}try{b.destroy()}catch{}}};g.on("connect",()=>{h=!0;try{let b=function(a){let b=a.method||"GET",c=a.url||"/",d=a.httpVersion||"1.1",e=[`${b} ${c} HTTP/${d}`];for(let[b,c]of Object.entries(a.headers))if(void 0!==c)if(Array.isArray(c))for(let a of c)e.push(`${b}: ${a}`);else e.push(`${b}: ${c}`);return e.join("\r\n")+"\r\n\r\n"}(a);g.write(b)}catch(a){P.error("ws-proxy:upstream-write-error",{pathPrefix:f,error:a instanceof Error?a.message:String(a)}),j();return}b.pipe(g),g.pipe(b)}),g.on("error",a=>{P.error("ws-proxy:upstream-error",{pathPrefix:f,error:a.message}),h||b.destroyed||!b.writable?j():$(b,"502 Bad Gateway")}),g.on("close",()=>{j()}),b.on("error",a=>{P.error("ws-proxy:client-error",{pathPrefix:f,error:a.message}),j()}),b.on("close",()=>{j()})}function aa(){R.forEach((a,b)=>{if(!a.isAlive){P.warn("heartbeat:terminate",{rooms:a.worktreeIds.size});try{b.terminate()}catch{}ah(b);return}a.isAlive=!1;try{b.ping()}catch(a){P.error("heartbeat:ping-failed",{error:a instanceof Error?a.message:String(a)})}if(b.readyState===d.kb.OPEN)try{b.send(JSON.stringify({type:"heartbeat",at:Date.now()}))}catch{}})}function ab(){ac(),U=setInterval(aa,3e4),U.unref?.()}function ac(){null!==U&&(clearInterval(U),U=null)}function ad(a,b){Q=new d.zu({noServer:!0}),T=function(a){let b=(globalThis.__realtimeRoomPublisherGeneration??0)+1;return globalThis.__realtimeRoomPublisherGeneration=b,globalThis.__realtimeRoomPublisher={generation:b,publisher:a},globalThis.__realtimeUnroutedPublish=void 0,{token:b,unregister:()=>(function(a){let b=globalThis.__realtimeRoomPublisher;return!!b&&b.generation===a&&(globalThis.__realtimeRoomPublisher=void 0,!0)})(b)}}(ar),function(a){L();let b=(0,K.wN)(b=>{a(b.worktreeId,{type:"session_status_changed",worktreeId:b.worktreeId,cliTool:b.cliToolId,instance:b.instanceId??b.cliToolId,isWaitingForResponse:b.waiting,waitingKind:b.kind??null,waitingSince:b.since})});globalThis.__waitingStatusBroadcastUnsubscribe=b,function(a){I();let b=(0,G.onAgentModelChange)(b=>{H.info("model-changed",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:b.instanceId,from:b.from,to:b.to,source:b.source});let c=function(a){try{let b=(0,j.getDbInstance)(),c=(0,F.dV)(b),d=(0,E.createModelChangeMessage)(b,{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId,content:(0,F.DH)(c,a.from,a.to),at:a.at});return{type:"message",worktreeId:a.worktreeId,message:d}}catch(b){return H.warn("model-change-history-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId,error:b instanceof Error?b.message:String(b)}),null}}(b);try{c&&a(b.worktreeId,c),a(b.worktreeId,{type:D.T4,worktreeId:b.worktreeId,cliTool:b.cliToolId,instance:b.instanceId,from:b.from,to:b.to,source:b.source,at:b.at})}catch(a){H.warn("model-change-broadcast-failed",{worktreeId:b.worktreeId,instanceId:b.instanceId,error:a instanceof Error?a.message:String(a)})}(0,F.b3)(b)});globalThis.__modelChangeBroadcastUnsubscribe=b}(a),(0,J.PJ)()}(ag),ab();let c=(a,b,c)=>{let d=a.url||"/";if(d.startsWith("/_next/")){b.write("HTTP/1.1 426 Upgrade Required\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"),b.destroy();return}if((0,g.Rh)()){let c=(0,g.Z2)(a.socket.remoteAddress||"");if(!(0,g.c$)(c,(0,g.nu)())){let a=c.substring(0,45);P.warn("websocket:denied",{ip:a}),b.write("HTTP/1.1 403 Forbidden\r\n\r\n"),b.destroy();return}}if((0,f.y2)()&&!Z(a.headers)){let c=a.headers.cookie||"",d=(0,f.JT)(c)[f.aq];if(!d||!(0,f.nr)(d)){b.write("HTTP/1.1 401 Unauthorized\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"),b.destroy();return}}if(d.startsWith("/proxy/"))return void(async()=>{try{await _(a,b,c,{getDb:()=>(0,j.getDbInstance)(),getCache:a=>(0,B.Ds)(a),netConnect:a=>(0,e.connect)(a)})}catch(a){if(P.error("ws-proxy:unhandled-error",{error:a instanceof Error?a.message:String(a)}),!b.destroyed&&b.writable){try{b.write("HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\nConnection: close\r\n\r\n")}catch{}b.destroy()}}})();Q.handleUpgrade(a,b,c,b=>{Q.emit("connection",b,a)})};for(let d of[a,...b?.additionalServers??[]])d.on("upgrade",c);Q.on("error",a=>{P.error("server:error",{error:a.message})}),Q.on("connection",a=>{let b={ws:a,worktreeIds:new Set,terminalSubscription:null,terminalSubscriptionSeq:0,isAlive:!0};R.set(a,b),a.on("pong",()=>{let b=R.get(a);b&&(b.isAlive=!0)}),a.on("message",b=>{try{let c=JSON.parse(b.toString());ae(a,c)}catch(a){P.error("message:parse-failed",{error:a instanceof Error?a.message:String(a)})}}),a.on("close",()=>{ah(a)}),a.on("error",b=>{"WS_ERR_INVALID_CLOSE_CODE"===b.code||b.message?.includes("Invalid WebSocket frame")||b.message?.includes("write after end")||b.message?.includes("ECONNRESET")||b.message?.includes("EPIPE")||P.error("websocket:error",{error:b.message});try{a.terminate()}catch{}ah(a)})})}function ae(a,b){switch(b.type){case"subscribe":if(!b.worktreeId)return;var c=a,d=b.worktreeId;let e=R.get(c);e&&(e.worktreeIds.add(d),S.has(d)||S.set(d,new Set),S.get(d).add(c));break;case"unsubscribe":if(!b.worktreeId)return;!function(a,b){let c=R.get(a);if(!c)return;c.worktreeIds.delete(b);let d=S.get(b);d&&(d.delete(a),0===d.size&&S.delete(b))}(a,b.worktreeId);break;case"broadcast":if(!b.worktreeId)return;ag(b.worktreeId,b.data);break;case D.ST:af(a,b);break;case"terminal_subscribe":aj(a,b);break;case"terminal_input":al(a,b);break;case"terminal_resize":am(a,b);break;case"terminal_unsubscribe":ap(a);break;default:P.warn("message:unknown-type")}}function af(a,b){let c="string"==typeof b.version?b.version:"";if(!c)return;let e=(0,C.E2)(c);if(e&&a.readyState===d.kb.OPEN)try{a.send(JSON.stringify({type:D.Oo,serverVersion:e.serverVersion,clientVersion:e.clientVersion}))}catch(a){P.error("version:notify-failed",{error:a instanceof Error?a.message:String(a)})}}function ag(a,b){let c=S.get(a);if(c&&0!==c.size)try{let e=JSON.stringify({type:"broadcast",worktreeId:a,data:b});c.forEach(a=>{if(a.readyState===d.kb.OPEN)try{a.send(e)}catch(a){P.error("broadcast:send-failed",{error:a instanceof Error?a.message:String(a)})}})}catch(b){P.error("broadcast:failed",{worktreeId:a,error:b instanceof Error?b.message:String(b)});try{let b=JSON.stringify({type:"broadcast",worktreeId:a,data:{error:"Message encoding error"}});c.forEach(a=>{if(a.readyState===d.kb.OPEN)try{a.send(b)}catch{}})}catch(a){P.error("fallback:send-failed",{error:a instanceof Error?a.message:String(a)})}}}function ah(a){let b=R.get(a);b&&(b.worktreeIds.forEach(b=>{let c=S.get(b);c&&(c.delete(a),0===c.size&&S.delete(b))}),b.terminalSubscriptionSeq+=1,b.terminalSubscription&&(b.terminalSubscription.unsubscribe().catch(()=>{}),b.terminalSubscription=null),R.delete(a))}function ai(a,b){a.readyState===d.kb.OPEN&&a.send(JSON.stringify(b))}async function aj(a,b){let c=R.get(a);if(!c)return void ai(a,{type:"terminal_error",error:"Unauthorized WebSocket client"});if("true"!==process.env.TMUX_CONTROL_MODE_ENABLED)return void ai(a,{type:"terminal_error",error:"Tmux control mode is disabled"});let{worktreeId:d,cliToolId:e}=b;if(!d||!e||!(0,h.hR)(e))return void ai(a,{type:"terminal_error",error:"Invalid terminal subscription parameters"});let f=(0,j.getDbInstance)(),g=(0,k.getWorktreeById)(f,d);if(!g)return void ai(a,{type:"terminal_error",error:"Worktree not found"});let m=++c.terminalSubscriptionSeq,n=()=>R.get(a)===c&&c.terminalSubscriptionSeq===m,o=c.terminalSubscription;if(o){c.terminalSubscription=null;try{await o.unsubscribe()}catch{}}if(!n())return;let p=(0,i.mf)(e,d),q=await (0,z.s_)(p,g.path);if(!n())return;if("foreign"===q.verdict)return void ai(a,{type:"terminal_error",error:A.u});let r=y();if(r.getSubscriberCount(p)>=4)return void ai(a,{type:"terminal_error",error:"Terminal subscriber limit reached"});let s=!1,t=Date.now(),u=await r.subscribe(p,{onOutput:b=>{if(n()){if(!s){s=!0;let a=Math.max(0,Math.round(Date.now()-t));l.firstOutputLatencyCount+=1,l.firstOutputLatencyTotalMs+=a,l.firstOutputLatencyLastMs=a,l.firstOutputLatencyMinMs=null===l.firstOutputLatencyMinMs?a:Math.min(l.firstOutputLatencyMinMs,a),l.firstOutputLatencyMaxMs=null===l.firstOutputLatencyMaxMs?a:Math.max(l.firstOutputLatencyMaxMs,a)}ai(a,{type:"terminal_output",data:b})}},onExit:({exitCode:b})=>{n()&&ai(a,{type:"terminal_exit",exitCode:b})},onError:b=>{(async()=>{try{if(await (0,A.y)(d,p)===null){let b=await r.captureSnapshot(p,{startLine:-200});b.length>0&&n()&&ai(a,{type:"terminal_output",data:b,fallback:!0})}}catch{}n()&&ai(a,{type:"terminal_error",error:b.message,fallback:!0})})()}});if(!n()){try{await u.unsubscribe()}catch{}return}c.terminalSubscription={worktreeId:d,cliToolId:e,sessionName:p,startedAt:t,unsubscribe:u.unsubscribe},ai(a,{type:"terminal_status",connected:!0,worktreeId:d,cliToolId:e})}function ak(a,b){let c=R.get(a);if(!c)return b();let d=(c.terminalWriteQueue??Promise.resolve()).then(b,b);return c.terminalWriteQueue=d.catch(()=>void 0),d}function al(a,b){return ak(a,()=>an(a,b))}function am(a,b){return ak(a,()=>ao(a,b))}async function an(a,b){let c=R.get(a),d=c?.terminalSubscription;if(!d)return void ai(a,{type:"terminal_error",error:"No active terminal subscription"});let e="string"==typeof b.data?b.data:"";if(0===e.length||e.length>4096)return void ai(a,{type:"terminal_error",error:"Invalid terminal input"});try{let b=await (0,A.y)(d.worktreeId,d.sessionName);if(null!==b)return void ai(a,{type:"terminal_error",error:b});await y().sendInput(d.sessionName,e)}catch(b){ai(a,{type:"terminal_error",error:b instanceof Error?b.message:"Failed to send terminal input"})}}async function ao(a,b){let c=R.get(a),d=c?.terminalSubscription;if(d){if("number"!=typeof b.cols||!Number.isInteger(b.cols)||b.cols<20||b.cols>500||"number"!=typeof b.rows||!Number.isInteger(b.rows)||b.rows<5||b.rows>200)return void ai(a,{type:"terminal_error",error:"Invalid terminal resize payload"});try{let c=await (0,A.y)(d.worktreeId,d.sessionName);if(null!==c)return void ai(a,{type:"terminal_error",error:c});await y().resize(d.sessionName,b.cols,b.rows)}catch(b){ai(a,{type:"terminal_error",error:b instanceof Error?b.message:"Failed to resize terminal"})}}}async function ap(a){let b=R.get(a);if(!b)return;let c=++b.terminalSubscriptionSeq,d=b.terminalSubscription;if(d){b.terminalSubscription=null;try{await d.unsubscribe()}catch{}R.get(a)===b&&b.terminalSubscriptionSeq===c&&ai(a,{type:"terminal_status",connected:!1})}}function aq(a){let b=S.get(a);return!!b&&b.size>0}let ar={publish:ag,hasSubscribers:aq,cleanupRooms:aB,migrateRooms:az};function as(){let a=O();return a&&a!==ar?a:null}function at(a,b){null===O()&&0===S.size&&function(a,b,c=Date.now()){let d=(0,M.v)("__realtimeUnroutedPublish",()=>({total:0,suppressed:0,lastWarnedAt:null,operations:{}}));if(d.total+=1,d.operations[a]=(d.operations[a]??0)+1,null!==d.lastWarnedAt&&c-d.lastWarnedAt<6e4){d.suppressed+=1;return}let e=d.suppressed;d.suppressed=0,d.lastWarnedAt=c,N.warn("realtime:no-room-publisher",{operation:a,worktreeId:b,total:d.total,suppressedSinceLastWarning:e,operations:{...d.operations}})}(a,b)}function au(a,b){let c=as();if(c)return void c.publish(a,b);at("broadcast",a),ag(a,b)}function av(a){let b=as();return b?b.hasSubscribers(a):(at("hasRoomSubscribers",a),aq(a))}function aw(a,b){b.worktreeId?au(b.worktreeId,{type:a,...b}):P.warn("broadcast:missing-worktree-id")}let ax="worktree_renamed";function ay(a){let b=as();return b?b.migrateRooms(a):az(a)}function az(a){let b=new Map;for(let{oldId:c,newId:d}of a)c&&d&&c!==d&&b.set(c,d);if(0===b.size)return[];let c=[];for(let[a,d]of b){let b=S.get(a);b&&0!==b.size&&(S.delete(a),c.push({oldId:a,newId:d,sockets:b}))}let d=[];for(let{oldId:a,newId:b,sockets:e}of c){let c=S.get(b)??new Set;for(let d of e){c.add(d);let e=R.get(d);e&&(e.worktreeIds.delete(a),e.worktreeIds.add(b)),ai(d,{type:ax,worktreeId:b,previousWorktreeId:a})}S.set(b,c),d.push({oldId:a,newId:b,subscribers:e.size})}for(let a of R.values()){let c=a.terminalSubscription;if(!c)continue;let d=b.get(c.worktreeId);if(d)try{if(!(0,h.hR)(c.cliToolId))continue;c.sessionName=(0,i.mf)(c.cliToolId,d),c.worktreeId=d}catch(a){P.warn("terminal:rename-failed",{worktreeId:c.worktreeId,newId:d,error:a instanceof Error?a.message:String(a)})}}return d.length>0&&P.info("rooms:migrated",{count:d.length}),d}function aA(a){let b=as();if(b)return void b.cleanupRooms(a);aB(a)}function aB(a){for(let b of a){let a=S.get(b);a&&(a.forEach(a=>{let c=R.get(a);c&&c.worktreeIds.delete(b)}),S.delete(b))}}function aC(){let a=null!==T&&T.unregister();T=null,(a||null===O())&&L(),ac(),Q&&(R.forEach(a=>{a.ws.close()}),R.clear(),S.clear(),Q.close(),Q=null)}let aD={handleMessage:ae,runHeartbeatSweep:aa,startHeartbeat:ab,stopHeartbeat:ac,handleClientVersion:af,handleProxyUpgrade:_,handleTerminalSubscribe:aj,handleTerminalInput:al,handleTerminalResize:am,handleTerminalUnsubscribe:ap,handleDisconnect:ah,registerClientForTest(a,b=!0){R.set(a,{ws:a,worktreeIds:new Set,terminalSubscription:null,terminalSubscriptionSeq:0,isAlive:b})},getClientInfoForTest:a=>R.get(a),listClientsForTest:()=>Array.from(R.values()),resetStateForTest(){ac(),R.clear(),S.clear()}}},43925:(a,b,c)=>{"use strict";c.d(b,{PJ:()=>l,dz:()=>m,vQ:()=>j});var d=c(57836),e=c(23854),f=c(72626),g=c(30008),h=c(70096);let i=(0,f.h)("relay-triggers");function j(a,b,d,e){let f={worktreeId:a,cliToolId:b,instanceId:d??b};(async()=>{try{let{notifyRelayTurnCompleted:a}=await Promise.all([c.e(1634),c.e(3480),c.e(252),c.e(8800),c.e(7905),c.e(255),c.e(9731),c.e(1601),c.e(6119),c.e(720),c.e(8918),c.e(1656),c.e(9540),c.e(4194),c.e(1210)]).then(c.bind(c,71210));await a(f,{settled:e})}catch(c){i.warn("relay-turn-trigger-failed",{worktreeId:a,cliToolId:b,instanceId:f.instanceId,error:c instanceof Error?c.message:String(c)})}})()}async function k(){try{let{runRelayMaintenanceTick:a}=await Promise.all([c.e(1634),c.e(3480),c.e(252),c.e(8800),c.e(7905),c.e(255),c.e(9731),c.e(1601),c.e(6119),c.e(720),c.e(8918),c.e(1656),c.e(9540),c.e(4194),c.e(1210)]).then(c.bind(c,71210));await a()}catch(a){i.warn("relay-maintenance-failed",{error:a instanceof Error?a.message:String(a)})}}function l(){m(),globalThis.__relayTriggersUnsubscribe=(0,d.wN)(a=>{a.waiting&&"prompt"===a.kind&&((0,g.yg)(a.worktreeId,a.cliToolId,a.instanceId,(0,h.VM)(a.cliToolId).capabilities.eventIdentity)||function(a,b,d){let e={worktreeId:a,cliToolId:b,instanceId:d??b};(async()=>{try{let{notifyRelayPromptWaiting:a}=await Promise.all([c.e(1634),c.e(3480),c.e(252),c.e(8800),c.e(7905),c.e(255),c.e(9731),c.e(1601),c.e(6119),c.e(720),c.e(8918),c.e(1656),c.e(9540),c.e(4194),c.e(1210)]).then(c.bind(c,71210));a(e)}catch(c){i.warn("relay-prompt-trigger-failed",{worktreeId:a,cliToolId:b,instanceId:e.instanceId,error:c instanceof Error?c.message:String(c)})}})()}(a.worktreeId,a.cliToolId,a.instanceId))});let a=setInterval(()=>void k(),e.ie);a.unref?.(),globalThis.__relayMaintenanceTimer=a}function m(){let a=globalThis.__relayTriggersUnsubscribe;a&&(a(),globalThis.__relayTriggersUnsubscribe=void 0),globalThis.__relayMaintenanceTimer&&(clearInterval(globalThis.__relayMaintenanceTimer),globalThis.__relayMaintenanceTimer=void 0)}},47990:()=>{},54036:(a,b,c)=>{"use strict";c.d(b,{aq:()=>d,gu:()=>f,kr:()=>h});let d="cm_auth_token",e=/^[0-9a-f]{64}$/;function f(a){return!!a&&e.test(a)}let g=2592e6;function h(){let a=process.env.CM_AUTH_EXPIRE,b=Date.now();if(a)try{return b+function(a){let b=a.match(/^(\d+)([hdm])$/);if(!b)throw Error(`Invalid duration format: "${a}". Use Nh, Nd, or Nm (e.g., "24h", "7d", "90m")`);let c=parseInt(b[1],10),d=b[2],e={h:36e5,d:864e5,m:6e4}[d];if(void 0===e)throw Error(`Invalid duration unit: "${d}"`);let f=c*e;if(f<36e5)throw Error(`Duration too short: minimum is 1h (60m). Got: "${a}"`);if(f>g)throw Error(`Duration too long: maximum is 30d (720h). Got: "${a}"`);return f}(a)}catch{return b+864e5}return process.env.CM_AUTH_TOKEN_HASH?b+864e5:null}},55233:(a,b,c)=>{"use strict";c.d(b,{DH:()=>o,b3:()=>q,dV:()=>p});var d=c(25754),e=c(88807),f=c(43167),g=c(73753),h=c(72626),i=c(72119),j=c(52445),k=c(61191),l=c(27519);let m=(0,h.h)("push/model-change-notifier"),n={en:i.agentModel.changed,ja:j.agentModel.changed};function o(a,b,c){return n[(0,k.resolvePushLocale)(a)].replace("{from}",b).replace("{to}",c)}function p(a){try{let b=(0,f.Se)(a),c=null;for(let a of b){let b=a.updatedAt.getTime();(null===c||b>c.updatedAt)&&(c={updatedAt:b,locale:a.locale})}return(0,k.resolvePushLocale)(c?.locale??d.Xn)}catch{return d.Xn}}async function q(a){if(!(0,l.lU)())return m.debug("model-change-push-suppressed",{worktreeId:a.worktreeId,instanceId:a.instanceId,reason:"unconfigured"}),"unconfigured";try{await (0,k.notifyPushSubscribers)({worktreeId:a.worktreeId,worktreeName:function(a){try{return(0,g.getWorktreeById)((0,e.getDbInstance)(),a)?.name??a}catch{return a}}(a.worktreeId),kind:"failure",agentName:a.instanceId,instanceId:a.instanceId,modelChange:{from:a.from,to:a.to,body:function(a,b){let c={};for(let e of d.dI)c[e]=o(e,a,b);return c}(a.from,a.to)}},a.at),m.info("model-change-push-raised",{worktreeId:a.worktreeId,instanceId:a.instanceId,from:a.from,to:a.to,source:a.source})}catch(b){m.warn("model-change-push-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId,error:b instanceof Error?b.message:String(b)})}return null}},56455:(a,b,c)=>{"use strict";c.d(b,{u:()=>g,y:()=>h});var d=c(88807),e=c(56791),f=c(31347);let g="Session belongs to another CommandMate server";async function h(a,b){let c=(0,e.getWorktreeById)((0,d.getDbInstance)(),a);return c?"foreign"===(await (0,f.s_)(b,c.path)).verdict?g:null:"Worktree not found"}},88081:(a,b,c)=>{"use strict";c.d(b,{JT:()=>m,QK:()=>k,aq:()=>f.aq,nr:()=>l,r0:()=>p,sO:()=>h,x:()=>q,y2:()=>n,zr:()=>o});var d=c(55511),e=c.n(d),f=c(54036);let g={maxAttempts:5,lockoutDuration:9e5,cleanupInterval:36e5},h=86400,i=(()=>{let a=process.env.CM_AUTH_TOKEN_HASH||void 0;return a?(0,f.gu)(a)?a:void console.error("[auth] CM_AUTH_TOKEN_HASH is not a valid SHA-256 hash"):void 0})(),j=(0,f.kr)();function k(a){return e().createHash("sha256").update(a).digest("hex")}function l(a){if(!i||!a||"string"!=typeof a||null!==j&&Date.now()>j)return!1;let b=k(a),c=Buffer.from(b,"hex"),d=Buffer.from(i,"hex");return c.length===d.length&&e().timingSafeEqual(c,d)}function m(a){let b={};if(!a)return b;for(let c of a.split(";")){let a=c.indexOf("=");if(-1===a)continue;let d=c.substring(0,a).trim(),e=c.substring(a+1).trim();d&&(b[d]=e)}return b}function n(){return!!i}function o(){if(null===j)return 0;let a=j-Date.now();return a<=0?0:Math.floor(a/1e3)}function p(a){return{httpOnly:!0,sameSite:"strict",secure:!!process.env.CM_HTTPS_CERT,maxAge:a,path:"/"}}function q(){let a=new Map,b=setInterval(()=>{let b=Date.now();for(let[c,d]of a){let e=null===d.lockedUntil||b>d.lockedUntil,f=b-d.lastAttempt>g.lockoutDuration;e&&f&&a.delete(c)}},g.cleanupInterval);return b.unref&&b.unref(),{checkLimit(b){let c=a.get(b);if(!c)return{allowed:!0};if(null!==c.lockedUntil){let a=Date.now();if(a<c.lockedUntil)return{allowed:!1,retryAfter:Math.ceil((c.lockedUntil-a)/1e3)};c.attempts=0,c.lockedUntil=null}return{allowed:!0}},recordFailure(b){let c=Date.now(),d=a.get(b)||{attempts:0,lockedUntil:null,lastAttempt:c};d.attempts++,d.lastAttempt=c,d.attempts>=g.maxAttempts&&(d.lockedUntil=c+g.lockoutDuration),a.set(b,d)},recordSuccess(b){a.delete(b)},destroy(){clearInterval(b),a.clear()}}}},90164:(a,b,c)=>{"use strict";c.d(b,{Dk:()=>e,kD:()=>f});let d="https://github.com/Kewton/CommandMate",e=`${d}/releases/`,f=`${d}/blob/main/docs/security-guide.md`}};
|
|
9
|
+
`)}catch{}a.destroy()}async function _(a,b,c,d){let e,f=(a.url||"/").split("?")[0].split("/")[2]||"";if(!f)return void $(b,"400 Bad Request");try{let a=d.getDb(),b=d.getCache(a);e=await b.getByPathPrefix(f)}catch(a){P.error("ws-proxy:cache-error",{pathPrefix:f,error:a instanceof Error?a.message:String(a)}),!b.destroyed&&b.writable&&$(b,"502 Bad Gateway");return}if(b.destroyed||!b.writable)return;if(!e)return void $(b,"404 Not Found");if(!e.enabled)return void $(b,"503 Service Unavailable");if(!e.websocketEnabled)return void $(b,"403 Forbidden");if(!V.has(e.targetHost)){P.warn("ws-proxy:ssrf-blocked",{pathPrefix:f}),$(b,"403 Forbidden");return}let g=d.netConnect({host:e.targetHost,port:e.targetPort}),h=!1,i=!1,j=()=>{if(!i){i=!0;try{g.destroy()}catch{}try{b.destroy()}catch{}}};g.on("connect",()=>{h=!0;try{let b=function(a){let b=a.method||"GET",c=a.url||"/",d=a.httpVersion||"1.1",e=[`${b} ${c} HTTP/${d}`];for(let[b,c]of Object.entries(a.headers))if(void 0!==c)if(Array.isArray(c))for(let a of c)e.push(`${b}: ${a}`);else e.push(`${b}: ${c}`);return e.join("\r\n")+"\r\n\r\n"}(a);g.write(b)}catch(a){P.error("ws-proxy:upstream-write-error",{pathPrefix:f,error:a instanceof Error?a.message:String(a)}),j();return}b.pipe(g),g.pipe(b)}),g.on("error",a=>{P.error("ws-proxy:upstream-error",{pathPrefix:f,error:a.message}),h||b.destroyed||!b.writable?j():$(b,"502 Bad Gateway")}),g.on("close",()=>{j()}),b.on("error",a=>{P.error("ws-proxy:client-error",{pathPrefix:f,error:a.message}),j()}),b.on("close",()=>{j()})}function aa(){R.forEach((a,b)=>{if(!a.isAlive){P.warn("heartbeat:terminate",{rooms:a.worktreeIds.size});try{b.terminate()}catch{}ah(b);return}a.isAlive=!1;try{b.ping()}catch(a){P.error("heartbeat:ping-failed",{error:a instanceof Error?a.message:String(a)})}if(b.readyState===d.kb.OPEN)try{b.send(JSON.stringify({type:"heartbeat",at:Date.now()}))}catch{}})}function ab(){ac(),U=setInterval(aa,3e4),U.unref?.()}function ac(){null!==U&&(clearInterval(U),U=null)}function ad(a,b){Q=new d.zu({noServer:!0}),T=function(a){let b=(globalThis.__realtimeRoomPublisherGeneration??0)+1;return globalThis.__realtimeRoomPublisherGeneration=b,globalThis.__realtimeRoomPublisher={generation:b,publisher:a},globalThis.__realtimeUnroutedPublish=void 0,{token:b,unregister:()=>(function(a){let b=globalThis.__realtimeRoomPublisher;return!!b&&b.generation===a&&(globalThis.__realtimeRoomPublisher=void 0,!0)})(b)}}(ar),function(a){L();let b=(0,K.wN)(b=>{a(b.worktreeId,{type:"session_status_changed",worktreeId:b.worktreeId,cliTool:b.cliToolId,instance:b.instanceId??b.cliToolId,isWaitingForResponse:b.waiting,waitingKind:b.kind??null,waitingSince:b.since})});globalThis.__waitingStatusBroadcastUnsubscribe=b,function(a){I();let b=(0,G.onAgentModelChange)(b=>{H.info("model-changed",{worktreeId:b.worktreeId,cliToolId:b.cliToolId,instanceId:b.instanceId,from:b.from,to:b.to,source:b.source});let c=function(a){try{let b=(0,j.getDbInstance)(),c=(0,F.dV)(b),d=(0,E.createModelChangeMessage)(b,{worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId,content:(0,F.DH)(c,a.from,a.to),at:a.at});return{type:"message",worktreeId:a.worktreeId,message:d}}catch(b){return H.warn("model-change-history-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId,error:b instanceof Error?b.message:String(b)}),null}}(b);try{c&&a(b.worktreeId,c),a(b.worktreeId,{type:D.T4,worktreeId:b.worktreeId,cliTool:b.cliToolId,instance:b.instanceId,from:b.from,to:b.to,source:b.source,at:b.at})}catch(a){H.warn("model-change-broadcast-failed",{worktreeId:b.worktreeId,instanceId:b.instanceId,error:a instanceof Error?a.message:String(a)})}(0,F.b3)(b)});globalThis.__modelChangeBroadcastUnsubscribe=b}(a),(0,J.PJ)()}(ag),ab();let c=(a,b,c)=>{let d=a.url||"/";if(d.startsWith("/_next/")){b.write("HTTP/1.1 426 Upgrade Required\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"),b.destroy();return}if((0,g.Rh)()){let c=(0,g.Z2)(a.socket.remoteAddress||"");if(!(0,g.c$)(c,(0,g.nu)())){let a=c.substring(0,45);P.warn("websocket:denied",{ip:a}),b.write("HTTP/1.1 403 Forbidden\r\n\r\n"),b.destroy();return}}if((0,f.y2)()&&!Z(a.headers)){let c=a.headers.cookie||"",d=(0,f.JT)(c)[f.aq];if(!d||!(0,f.nr)(d)){b.write("HTTP/1.1 401 Unauthorized\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"),b.destroy();return}}if(d.startsWith("/proxy/"))return void(async()=>{try{await _(a,b,c,{getDb:()=>(0,j.getDbInstance)(),getCache:a=>(0,B.Ds)(a),netConnect:a=>(0,e.connect)(a)})}catch(a){if(P.error("ws-proxy:unhandled-error",{error:a instanceof Error?a.message:String(a)}),!b.destroyed&&b.writable){try{b.write("HTTP/1.1 500 Internal Server Error\r\nContent-Length: 0\r\nConnection: close\r\n\r\n")}catch{}b.destroy()}}})();Q.handleUpgrade(a,b,c,b=>{Q.emit("connection",b,a)})};for(let d of[a,...b?.additionalServers??[]])d.on("upgrade",c);Q.on("error",a=>{P.error("server:error",{error:a.message})}),Q.on("connection",a=>{let b={ws:a,worktreeIds:new Set,terminalSubscription:null,terminalSubscriptionSeq:0,isAlive:!0};R.set(a,b),a.on("pong",()=>{let b=R.get(a);b&&(b.isAlive=!0)}),a.on("message",b=>{try{let c=JSON.parse(b.toString());ae(a,c)}catch(a){P.error("message:parse-failed",{error:a instanceof Error?a.message:String(a)})}}),a.on("close",()=>{ah(a)}),a.on("error",b=>{"WS_ERR_INVALID_CLOSE_CODE"===b.code||b.message?.includes("Invalid WebSocket frame")||b.message?.includes("write after end")||b.message?.includes("ECONNRESET")||b.message?.includes("EPIPE")||P.error("websocket:error",{error:b.message});try{a.terminate()}catch{}ah(a)})})}function ae(a,b){switch(b.type){case"subscribe":if(!b.worktreeId)return;var c=a,d=b.worktreeId;let e=R.get(c);e&&(e.worktreeIds.add(d),S.has(d)||S.set(d,new Set),S.get(d).add(c));break;case"unsubscribe":if(!b.worktreeId)return;!function(a,b){let c=R.get(a);if(!c)return;c.worktreeIds.delete(b);let d=S.get(b);d&&(d.delete(a),0===d.size&&S.delete(b))}(a,b.worktreeId);break;case"broadcast":if(!b.worktreeId)return;ag(b.worktreeId,b.data);break;case D.ST:af(a,b);break;case"terminal_subscribe":aj(a,b);break;case"terminal_input":al(a,b);break;case"terminal_resize":am(a,b);break;case"terminal_unsubscribe":ap(a);break;default:P.warn("message:unknown-type")}}function af(a,b){let c="string"==typeof b.version?b.version:"";if(!c)return;let e=(0,C.E2)(c);if(e&&a.readyState===d.kb.OPEN)try{a.send(JSON.stringify({type:D.Oo,serverVersion:e.serverVersion,clientVersion:e.clientVersion}))}catch(a){P.error("version:notify-failed",{error:a instanceof Error?a.message:String(a)})}}function ag(a,b){let c=S.get(a);if(c&&0!==c.size)try{let e=JSON.stringify({type:"broadcast",worktreeId:a,data:b});c.forEach(a=>{if(a.readyState===d.kb.OPEN)try{a.send(e)}catch(a){P.error("broadcast:send-failed",{error:a instanceof Error?a.message:String(a)})}})}catch(b){P.error("broadcast:failed",{worktreeId:a,error:b instanceof Error?b.message:String(b)});try{let b=JSON.stringify({type:"broadcast",worktreeId:a,data:{error:"Message encoding error"}});c.forEach(a=>{if(a.readyState===d.kb.OPEN)try{a.send(b)}catch{}})}catch(a){P.error("fallback:send-failed",{error:a instanceof Error?a.message:String(a)})}}}function ah(a){let b=R.get(a);b&&(b.worktreeIds.forEach(b=>{let c=S.get(b);c&&(c.delete(a),0===c.size&&S.delete(b))}),b.terminalSubscriptionSeq+=1,b.terminalSubscription&&(b.terminalSubscription.unsubscribe().catch(()=>{}),b.terminalSubscription=null),R.delete(a))}function ai(a,b){a.readyState===d.kb.OPEN&&a.send(JSON.stringify(b))}async function aj(a,b){let c=R.get(a);if(!c)return void ai(a,{type:"terminal_error",error:"Unauthorized WebSocket client"});if("true"!==process.env.TMUX_CONTROL_MODE_ENABLED)return void ai(a,{type:"terminal_error",error:"Tmux control mode is disabled"});let{worktreeId:d,cliToolId:e}=b;if(!d||!e||!(0,h.hR)(e))return void ai(a,{type:"terminal_error",error:"Invalid terminal subscription parameters"});let f=(0,j.getDbInstance)(),g=(0,k.getWorktreeById)(f,d);if(!g)return void ai(a,{type:"terminal_error",error:"Worktree not found"});let m=++c.terminalSubscriptionSeq,n=()=>R.get(a)===c&&c.terminalSubscriptionSeq===m,o=c.terminalSubscription;if(o){c.terminalSubscription=null;try{await o.unsubscribe()}catch{}}if(!n())return;let p=(0,i.mf)(e,d),q=await (0,z.s_)(p,g.path);if(!n())return;if("foreign"===q.verdict)return void ai(a,{type:"terminal_error",error:A.u});let r=y();if(r.getSubscriberCount(p)>=4)return void ai(a,{type:"terminal_error",error:"Terminal subscriber limit reached"});let s=!1,t=Date.now(),u=await r.subscribe(p,{onOutput:b=>{if(n()){if(!s){s=!0;let a=Math.max(0,Math.round(Date.now()-t));l.firstOutputLatencyCount+=1,l.firstOutputLatencyTotalMs+=a,l.firstOutputLatencyLastMs=a,l.firstOutputLatencyMinMs=null===l.firstOutputLatencyMinMs?a:Math.min(l.firstOutputLatencyMinMs,a),l.firstOutputLatencyMaxMs=null===l.firstOutputLatencyMaxMs?a:Math.max(l.firstOutputLatencyMaxMs,a)}ai(a,{type:"terminal_output",data:b})}},onExit:({exitCode:b})=>{n()&&ai(a,{type:"terminal_exit",exitCode:b})},onError:b=>{(async()=>{try{if(await (0,A.y)(d,p)===null){let b=await r.captureSnapshot(p,{startLine:-200});b.length>0&&n()&&ai(a,{type:"terminal_output",data:b,fallback:!0})}}catch{}n()&&ai(a,{type:"terminal_error",error:b.message,fallback:!0})})()}});if(!n()){try{await u.unsubscribe()}catch{}return}c.terminalSubscription={worktreeId:d,cliToolId:e,sessionName:p,startedAt:t,unsubscribe:u.unsubscribe},ai(a,{type:"terminal_status",connected:!0,worktreeId:d,cliToolId:e})}function ak(a,b){let c=R.get(a);if(!c)return b();let d=(c.terminalWriteQueue??Promise.resolve()).then(b,b);return c.terminalWriteQueue=d.catch(()=>void 0),d}function al(a,b){return ak(a,()=>an(a,b))}function am(a,b){return ak(a,()=>ao(a,b))}async function an(a,b){let c=R.get(a),d=c?.terminalSubscription;if(!d)return void ai(a,{type:"terminal_error",error:"No active terminal subscription"});let e="string"==typeof b.data?b.data:"";if(0===e.length||e.length>4096)return void ai(a,{type:"terminal_error",error:"Invalid terminal input"});try{let b=await (0,A.y)(d.worktreeId,d.sessionName);if(null!==b)return void ai(a,{type:"terminal_error",error:b});await y().sendInput(d.sessionName,e)}catch(b){ai(a,{type:"terminal_error",error:b instanceof Error?b.message:"Failed to send terminal input"})}}async function ao(a,b){let c=R.get(a),d=c?.terminalSubscription;if(d){if("number"!=typeof b.cols||!Number.isInteger(b.cols)||b.cols<20||b.cols>500||"number"!=typeof b.rows||!Number.isInteger(b.rows)||b.rows<5||b.rows>200)return void ai(a,{type:"terminal_error",error:"Invalid terminal resize payload"});try{let c=await (0,A.y)(d.worktreeId,d.sessionName);if(null!==c)return void ai(a,{type:"terminal_error",error:c});await y().resize(d.sessionName,b.cols,b.rows)}catch(b){ai(a,{type:"terminal_error",error:b instanceof Error?b.message:"Failed to resize terminal"})}}}async function ap(a){let b=R.get(a);if(!b)return;let c=++b.terminalSubscriptionSeq,d=b.terminalSubscription;if(d){b.terminalSubscription=null;try{await d.unsubscribe()}catch{}R.get(a)===b&&b.terminalSubscriptionSeq===c&&ai(a,{type:"terminal_status",connected:!1})}}function aq(a){let b=S.get(a);return!!b&&b.size>0}let ar={publish:ag,hasSubscribers:aq,cleanupRooms:aB,migrateRooms:az};function as(){let a=O();return a&&a!==ar?a:null}function at(a,b){null===O()&&0===S.size&&function(a,b,c=Date.now()){let d=(0,M.v)("__realtimeUnroutedPublish",()=>({total:0,suppressed:0,lastWarnedAt:null,operations:{}}));if(d.total+=1,d.operations[a]=(d.operations[a]??0)+1,null!==d.lastWarnedAt&&c-d.lastWarnedAt<6e4){d.suppressed+=1;return}let e=d.suppressed;d.suppressed=0,d.lastWarnedAt=c,N.warn("realtime:no-room-publisher",{operation:a,worktreeId:b,total:d.total,suppressedSinceLastWarning:e,operations:{...d.operations}})}(a,b)}function au(a,b){let c=as();if(c)return void c.publish(a,b);at("broadcast",a),ag(a,b)}function av(a){let b=as();return b?b.hasSubscribers(a):(at("hasRoomSubscribers",a),aq(a))}function aw(a,b){b.worktreeId?au(b.worktreeId,{type:a,...b}):P.warn("broadcast:missing-worktree-id")}let ax="worktree_renamed";function ay(a){let b=as();return b?b.migrateRooms(a):az(a)}function az(a){let b=new Map;for(let{oldId:c,newId:d}of a)c&&d&&c!==d&&b.set(c,d);if(0===b.size)return[];let c=[];for(let[a,d]of b){let b=S.get(a);b&&0!==b.size&&(S.delete(a),c.push({oldId:a,newId:d,sockets:b}))}let d=[];for(let{oldId:a,newId:b,sockets:e}of c){let c=S.get(b)??new Set;for(let d of e){c.add(d);let e=R.get(d);e&&(e.worktreeIds.delete(a),e.worktreeIds.add(b)),ai(d,{type:ax,worktreeId:b,previousWorktreeId:a})}S.set(b,c),d.push({oldId:a,newId:b,subscribers:e.size})}for(let a of R.values()){let c=a.terminalSubscription;if(!c)continue;let d=b.get(c.worktreeId);if(d)try{if(!(0,h.hR)(c.cliToolId))continue;c.sessionName=(0,i.mf)(c.cliToolId,d),c.worktreeId=d}catch(a){P.warn("terminal:rename-failed",{worktreeId:c.worktreeId,newId:d,error:a instanceof Error?a.message:String(a)})}}return d.length>0&&P.info("rooms:migrated",{count:d.length}),d}function aA(a){let b=as();if(b)return void b.cleanupRooms(a);aB(a)}function aB(a){for(let b of a){let a=S.get(b);a&&(a.forEach(a=>{let c=R.get(a);c&&c.worktreeIds.delete(b)}),S.delete(b))}}function aC(){let a=null!==T&&T.unregister();T=null,(a||null===O())&&L(),ac(),Q&&(R.forEach(a=>{a.ws.close()}),R.clear(),S.clear(),Q.close(),Q=null)}let aD={handleMessage:ae,runHeartbeatSweep:aa,startHeartbeat:ab,stopHeartbeat:ac,handleClientVersion:af,handleProxyUpgrade:_,handleTerminalSubscribe:aj,handleTerminalInput:al,handleTerminalResize:am,handleTerminalUnsubscribe:ap,handleDisconnect:ah,registerClientForTest(a,b=!0){R.set(a,{ws:a,worktreeIds:new Set,terminalSubscription:null,terminalSubscriptionSeq:0,isAlive:b})},getClientInfoForTest:a=>R.get(a),listClientsForTest:()=>Array.from(R.values()),resetStateForTest(){ac(),R.clear(),S.clear()}}},43925:(a,b,c)=>{"use strict";c.d(b,{PJ:()=>l,dz:()=>m,vQ:()=>j});var d=c(36261),e=c(23854),f=c(72626),g=c(30008),h=c(70096);let i=(0,f.h)("relay-triggers");function j(a,b,d,e){let f={worktreeId:a,cliToolId:b,instanceId:d??b};(async()=>{try{let{notifyRelayTurnCompleted:a}=await Promise.all([c.e(1634),c.e(3480),c.e(252),c.e(8800),c.e(7905),c.e(255),c.e(9731),c.e(1601),c.e(6119),c.e(720),c.e(8918),c.e(1656),c.e(9540),c.e(4194),c.e(1210)]).then(c.bind(c,71210));await a(f,{settled:e})}catch(c){i.warn("relay-turn-trigger-failed",{worktreeId:a,cliToolId:b,instanceId:f.instanceId,error:c instanceof Error?c.message:String(c)})}})()}async function k(){try{let{runRelayMaintenanceTick:a}=await Promise.all([c.e(1634),c.e(3480),c.e(252),c.e(8800),c.e(7905),c.e(255),c.e(9731),c.e(1601),c.e(6119),c.e(720),c.e(8918),c.e(1656),c.e(9540),c.e(4194),c.e(1210)]).then(c.bind(c,71210));await a()}catch(a){i.warn("relay-maintenance-failed",{error:a instanceof Error?a.message:String(a)})}}function l(){m(),globalThis.__relayTriggersUnsubscribe=(0,d.wN)(a=>{a.waiting&&"prompt"===a.kind&&((0,g.yg)(a.worktreeId,a.cliToolId,a.instanceId,(0,h.VM)(a.cliToolId).capabilities.eventIdentity)||function(a,b,d){let e={worktreeId:a,cliToolId:b,instanceId:d??b};(async()=>{try{let{notifyRelayPromptWaiting:a}=await Promise.all([c.e(1634),c.e(3480),c.e(252),c.e(8800),c.e(7905),c.e(255),c.e(9731),c.e(1601),c.e(6119),c.e(720),c.e(8918),c.e(1656),c.e(9540),c.e(4194),c.e(1210)]).then(c.bind(c,71210));a(e)}catch(c){i.warn("relay-prompt-trigger-failed",{worktreeId:a,cliToolId:b,instanceId:e.instanceId,error:c instanceof Error?c.message:String(c)})}})()}(a.worktreeId,a.cliToolId,a.instanceId))});let a=setInterval(()=>void k(),e.ie);a.unref?.(),globalThis.__relayMaintenanceTimer=a}function m(){let a=globalThis.__relayTriggersUnsubscribe;a&&(a(),globalThis.__relayTriggersUnsubscribe=void 0),globalThis.__relayMaintenanceTimer&&(clearInterval(globalThis.__relayMaintenanceTimer),globalThis.__relayMaintenanceTimer=void 0)}},47990:()=>{},54036:(a,b,c)=>{"use strict";c.d(b,{aq:()=>d,gu:()=>f,kr:()=>h});let d="cm_auth_token",e=/^[0-9a-f]{64}$/;function f(a){return!!a&&e.test(a)}let g=2592e6;function h(){let a=process.env.CM_AUTH_EXPIRE,b=Date.now();if(a)try{return b+function(a){let b=a.match(/^(\d+)([hdm])$/);if(!b)throw Error(`Invalid duration format: "${a}". Use Nh, Nd, or Nm (e.g., "24h", "7d", "90m")`);let c=parseInt(b[1],10),d=b[2],e={h:36e5,d:864e5,m:6e4}[d];if(void 0===e)throw Error(`Invalid duration unit: "${d}"`);let f=c*e;if(f<36e5)throw Error(`Duration too short: minimum is 1h (60m). Got: "${a}"`);if(f>g)throw Error(`Duration too long: maximum is 30d (720h). Got: "${a}"`);return f}(a)}catch{return b+864e5}return process.env.CM_AUTH_TOKEN_HASH?b+864e5:null}},55233:(a,b,c)=>{"use strict";c.d(b,{DH:()=>o,b3:()=>q,dV:()=>p});var d=c(25754),e=c(88807),f=c(43167),g=c(73753),h=c(72626),i=c(72119),j=c(52445),k=c(61191),l=c(27519);let m=(0,h.h)("push/model-change-notifier"),n={en:i.agentModel.changed,ja:j.agentModel.changed};function o(a,b,c){return n[(0,k.resolvePushLocale)(a)].replace("{from}",b).replace("{to}",c)}function p(a){try{let b=(0,f.Se)(a),c=null;for(let a of b){let b=a.updatedAt.getTime();(null===c||b>c.updatedAt)&&(c={updatedAt:b,locale:a.locale})}return(0,k.resolvePushLocale)(c?.locale??d.Xn)}catch{return d.Xn}}async function q(a){if(!(0,l.lU)())return m.debug("model-change-push-suppressed",{worktreeId:a.worktreeId,instanceId:a.instanceId,reason:"unconfigured"}),"unconfigured";try{await (0,k.notifyPushSubscribers)({worktreeId:a.worktreeId,worktreeName:function(a){try{return(0,g.getWorktreeById)((0,e.getDbInstance)(),a)?.name??a}catch{return a}}(a.worktreeId),kind:"failure",agentName:a.instanceId,instanceId:a.instanceId,modelChange:{from:a.from,to:a.to,body:function(a,b){let c={};for(let e of d.dI)c[e]=o(e,a,b);return c}(a.from,a.to)}},a.at),m.info("model-change-push-raised",{worktreeId:a.worktreeId,instanceId:a.instanceId,from:a.from,to:a.to,source:a.source})}catch(b){m.warn("model-change-push-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId,error:b instanceof Error?b.message:String(b)})}return null}},56455:(a,b,c)=>{"use strict";c.d(b,{u:()=>g,y:()=>h});var d=c(88807),e=c(56791),f=c(31347);let g="Session belongs to another CommandMate server";async function h(a,b){let c=(0,e.getWorktreeById)((0,d.getDbInstance)(),a);return c?"foreign"===(await (0,f.s_)(b,c.path)).verdict?g:null:"Worktree not found"}},88081:(a,b,c)=>{"use strict";c.d(b,{JT:()=>m,QK:()=>k,aq:()=>f.aq,nr:()=>l,r0:()=>p,sO:()=>h,x:()=>q,y2:()=>n,zr:()=>o});var d=c(55511),e=c.n(d),f=c(54036);let g={maxAttempts:5,lockoutDuration:9e5,cleanupInterval:36e5},h=86400,i=(()=>{let a=process.env.CM_AUTH_TOKEN_HASH||void 0;return a?(0,f.gu)(a)?a:void console.error("[auth] CM_AUTH_TOKEN_HASH is not a valid SHA-256 hash"):void 0})(),j=(0,f.kr)();function k(a){return e().createHash("sha256").update(a).digest("hex")}function l(a){if(!i||!a||"string"!=typeof a||null!==j&&Date.now()>j)return!1;let b=k(a),c=Buffer.from(b,"hex"),d=Buffer.from(i,"hex");return c.length===d.length&&e().timingSafeEqual(c,d)}function m(a){let b={};if(!a)return b;for(let c of a.split(";")){let a=c.indexOf("=");if(-1===a)continue;let d=c.substring(0,a).trim(),e=c.substring(a+1).trim();d&&(b[d]=e)}return b}function n(){return!!i}function o(){if(null===j)return 0;let a=j-Date.now();return a<=0?0:Math.floor(a/1e3)}function p(a){return{httpOnly:!0,sameSite:"strict",secure:!!process.env.CM_HTTPS_CERT,maxAge:a,path:"/"}}function q(){let a=new Map,b=setInterval(()=>{let b=Date.now();for(let[c,d]of a){let e=null===d.lockedUntil||b>d.lockedUntil,f=b-d.lastAttempt>g.lockoutDuration;e&&f&&a.delete(c)}},g.cleanupInterval);return b.unref&&b.unref(),{checkLimit(b){let c=a.get(b);if(!c)return{allowed:!0};if(null!==c.lockedUntil){let a=Date.now();if(a<c.lockedUntil)return{allowed:!1,retryAfter:Math.ceil((c.lockedUntil-a)/1e3)};c.attempts=0,c.lockedUntil=null}return{allowed:!0}},recordFailure(b){let c=Date.now(),d=a.get(b)||{attempts:0,lockedUntil:null,lastAttempt:c};d.attempts++,d.lastAttempt=c,d.attempts>=g.maxAttempts&&(d.lockedUntil=c+g.lockoutDuration),a.set(b,d)},recordSuccess(b){a.delete(b)},destroy(){clearInterval(b),a.clear()}}}},90164:(a,b,c)=>{"use strict";c.d(b,{Dk:()=>e,kD:()=>f});let d="https://github.com/Kewton/CommandMate",e=`${d}/releases/`,f=`${d}/blob/main/docs/security-guide.md`}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=8791,exports.ids=[8791],exports.modules={1363:(a,b,c)=>{c.d(b,{GJ:()=>e,c2:()=>f});let d=(0,c(36925).v)("__tmuxSessionCreatedListeners",()=>new Map);function e(a,b){let c=d.get(a);return void 0===c&&(c=new Set,d.set(a,c)),c.add(b),()=>{let c=d.get(a);void 0!==c&&(c.delete(b),0===c.size&&d.delete(a))}}function f(a){let b=d.get(a);if(void 0!==b)for(let c of(d.delete(a),b))try{c()}catch{}}},8953:(a,b,c)=>{c.d(b,{G2:()=>f,Mx:()=>g,TM:()=>h,pU:()=>e,qD:()=>d,sM:()=>j});let d=["Up","Down","Left","Right","Enter","Escape","Tab","BTab","PageUp","PageDown","Home","End","q","1","2","3","4","5","6","7","8","9","y","n"],e=[...d,"s"],f=[...e,"C-a"],g="C-x",h=["C-p","C-t"],i=["a","l","t","m","g","u","r","c"],j=[...d,g,...h,...i];[...d,...h,...i]},31347:(a,b,c)=>{c.d(b,{RG:()=>d.RG,St:()=>d.St,fS:()=>d.fS,hb:()=>d.hb,id:()=>d.id,s_:()=>d.s_});var d=c(96463)},31442:(a,b,c)=>{c.d(b,{$D:()=>v,Bl:()=>A,Fk:()=>t,HL:()=>f,Ix:()=>z,KB:()=>u,L0:()=>l,Ls:()=>M,N2:()=>n,ND:()=>q,N_:()=>h,RS:()=>O,Rr:()=>K,Ys:()=>s,bq:()=>o,cD:()=>r,eC:()=>i,g4:()=>L,gM:()=>F,jp:()=>j,jx:()=>G,lY:()=>p,n9:()=>C,om:()=>w,sL:()=>N,tx:()=>m,wv:()=>k});var d=c(16983),e=c(40964);let f="mcbd-";function g(a){return`=${a}:`}function h(a){return a.startsWith(f)}let i="@cm_status",j="@cm_worktree",k="@cm_tool",l="@cm_instance",m="@cm_updated",n="@cm_delegated",o=[i,j,k,l,m,n],p="[CommandMate #{@cm_tool}/#{@cm_instance} #{@cm_status}] #{window_width}x#{window_height}";function q(a,b,c){return["set-option","-t",g(a),b,c]}function r(a,b){return["set-option","-u","-t",g(a),b]}function s(a,b){return["show-options","-t",g(a),b]}function t(a,b){return["show-options","-v","-t",g(a),b]}function u(a,b){return q(a,"status-right",b)}function v(a){return r(a,"status-right")}function w(a=process.env){let b=(a.CM_TMUX_STATUS??"").trim().toLowerCase();return"off"!==b&&"0"!==b&&"false"!==b}function x(a,b,c){return["set-hook","-t",g(a),b,c]}function y(a,b){return["set-hook","-u","-t",g(a),b]}function z(a){return["list-clients","-t",g(a),"-F","#{client_control_mode}"]}function A(a){return a.split("\n").map(a=>a.trim()).filter(a=>"0"===a).length}let B=["claude"];function C(a){if(!h(a))return!1;let b=(0,e.NN)(a)?.cliToolId;return void 0!==b&&B.includes(b)}let D="client-attached[0]",E="client-attached[1]";function F(a=process.env){return"on"===(a.CM_LIVE_ATTACH_HOOK??"").trim().toLowerCase()}function G(a=process.env){return"on"===(a.CM_READ_MODE_AUTO_POPUP??"").trim().toLowerCase()}function H(a){if(!/["$`\\\n\r]/.test(a))return`"${a}"`}function I(a,b,c=[]){let d=[a,...b,...c].join(" ");return`run-shell -b '${d}'`}let J=["#{session_name}","#{client_control_mode}","#{client_name}"];function K(a,b){let c=H(b);if(void 0!==c)return x(a,D,I(c,J))}function L(a){return y(a,D)}function M(a,b){let c=H(b);if(void 0!==c)return x(a,E,I(c,J))}function N(a){return y(a,E)}function O(a,b=d.Jn,c=d.sO){return[["set-window-option","-t",g(a),"window-size","manual"],["resize-window","-t",g(a),"-x",String(b),"-y",String(c)],r(a,n)]}},54325:(a,b,c)=>{c.d(b,{LE:()=>f,Oo:()=>e,ST:()=>d,T4:()=>k,dz:()=>j,r9:()=>h,rx:()=>i,rz:()=>g});let d="client_version",e="version_mismatch";function f(a,b){return!!a&&!!b&&"0.0.0"!==a&&"0.0.0"!==b&&a!==b}let g="chat_turn_progress",h=1e3;function i(a,b=65536){return b<=0?{body:"",truncated:a.length>0}:a.length<=b?{body:a,truncated:!1}:{body:a.slice(a.length-b),truncated:!0}}let j="messages_invalidated",k="model_changed"},77864:(a,b,c)=>{c.d(b,{Mj:()=>e,yy:()=>f});let d=["Enter","Escape","Tab","BTab","BSpace","DC","Up","Down","Left","Right","Home","End","PageUp","PageDown","C-a","C-b","C-c","C-d","C-e","C-f","C-g","C-h","C-i","C-j","C-k","C-l","C-m","C-n","C-o","C-p","C-q","C-r","C-s","C-t","C-u","C-v","C-w","C-x","C-y","C-z"],e=32;function f(a){if("object"!=typeof a||null===a)return!1;if("key"===a.type){var b;return"string"==typeof(b=a.key)&&d.includes(b)}return"text"===a.type&&"string"==typeof a.text&&a.text.length>0&&a.text.length<=4096}},79892:(a,b,c)=>{c.d(b,{Xg:()=>H,ou:()=>M,Ce:()=>L,jw:()=>A,lA:()=>r,Hg:()=>w,nS:()=>v,N:()=>t,N6:()=>N,fY:()=>I,GW:()=>x,p$:()=>u,zT:()=>s,ur:()=>Q,V1:()=>B,ds:()=>K,KB:()=>G,Sb:()=>P});var d=c(79646),e=c(28354),f=c(93997),g=c(83598),h=c(15608),i=c(1363),j=c(16983),k=c(72626),l=c(8953),m=c(77864),n=c(86069);function o(a){return a.endsWith(";")?`${a.slice(0,-1)}\\;`:a}let p=(0,e.promisify)(d.execFile),q=(0,k.h)("tmux");function r(a){return`=${a}:`}async function s(a,b={}){let c,d,e,f=b.windowWidth??j.Jn,h=b.windowHeight??j.sO,i=r(a);try{c=(await p("tmux",["show-window-options","-v","-t",i,"window-size"],{timeout:5e3})).stdout.trim();let[a,b]=(await p("tmux",["display-message","-p","-t",i,"#{window_width}|#{window_height}"],{timeout:5e3})).stdout.trim().split("|").map(Number);Number.isFinite(a)&&(d=a),Number.isFinite(b)&&(e=b)}catch{}let k="manual"===c,l=d===f&&e===h;if(k&&l)return!1;if((b.respectAttachedClient??!0)&&await (0,g.Fh)(a))return q.info("session-geometry:delegated-to-client",{sessionName:a}),!1;try{return k||await p("tmux",["set-window-option","-t",i,"window-size","manual"],{timeout:5e3}),l||await p("tmux",["resize-window","-t",i,"-x",String(f),"-y",String(h)],{timeout:5e3}),!0}catch(b){return q.warn("session-geometry:reconcile-failed",{sessionName:a,error:b instanceof Error?b.message:String(b)}),!1}}async function t(a){try{return await p("tmux",["has-session","-t",r(a)],{timeout:5e3}),!0}catch{return(0,h.y)(a),!1}}async function u(a){try{return await p("tmux",["has-session","-t",r(a)],{timeout:5e3}),"present"}catch(d){let{code:b,killed:c}=d??{};if(1===b&&!c)return(0,h.y)(a),"absent";return"unknown"}}async function v(a){try{let{stdout:b}=await p("tmux",["display-message","-p","-t",r(a),"#{session_path}"],{timeout:5e3}),c=b.trim();return""===c?null:c}catch{return null}}async function w(a){try{let{stdout:b}=await p("tmux",["display-message","-p","-t",r(a),"#{pane_current_command}"],{timeout:5e3}),c=b.trim();return""===c?null:c}catch{return null}}async function x(){try{let{stdout:a}=await p("tmux",["list-sessions","-F","#{session_name} #{session_windows} #{session_attached} #{session_path}"],{timeout:5e3});if(!a||""===a.trim())return[];return a.split("\n").filter(a=>""!==a.trim()).map(a=>{let[b,c,d,...e]=a.split(" ");return{name:b,windows:parseInt(c,10)||0,attached:"1"===d,path:e.join(" ")}})}catch{return[]}}let y=["sleep","2147483647"];async function z(a,b){let c="";try{let{stdout:a}=await p("tmux",["show-options","-gv","default-shell"],{timeout:5e3});c=a.trim()}catch{}c||(c=process.env.SHELL||"/bin/sh"),await p("tmux",["respawn-pane","-k","-t",`${r(a)}0`,"-c",b,c,"-l"],{timeout:5e3})}async function A(a,b){let c,d,e,f,g;"string"==typeof a?(c=a,d=b,e=j.eu,f=j.Jn,g=j.sO):(c=a.sessionName,d=a.workingDirectory,e=a.historyLimit||j.eu,f=a.windowWidth||j.Jn,g=a.windowHeight||j.sO);try{await p("tmux",["new-session","-d","-s",c,"-c",d,"-x",String(f),"-y",String(g),...y],{timeout:5e3}),await p("tmux",["set-option","-t",r(c),"history-limit",String(e)],{timeout:5e3});try{await p("tmux",["new-window","-k","-t",`${r(c)}0`,"-c",d],{timeout:5e3})}catch(a){q.warn("session-history-limit:window-rebuild-failed",{sessionName:c,historyLimit:e,error:a instanceof Error?a.message:String(a)}),await z(c,d)}await s(c,{windowWidth:f,windowHeight:g,respectAttachedClient:!1})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to create tmux session: ${a}`)}(0,i.c2)(c)}async function B(a,b,c=!0,d){if(d?.literal&&c)throw new C("sendKeys: { literal: true } cannot be combined with sendEnter — a trailing C-m would be typed as text. Send Enter as a separate key.","not-started",0);let e=o(b),f=d?.literal?function(a,b){if("literal"===b.kind)return["send-keys","-t",a,"-l","--",o(b.text)];if(!(0,n.vY)(b.name))throw Error(`Invalid key sequence key name: ${b.name}`);return["send-keys","-t",a,"--",b.name]}(r(a),{kind:"literal",text:b}):c?["send-keys","-t",r(a),e,"C-m"]:["send-keys","-t",r(a),e];try{await p("tmux",f,{timeout:5e3})}catch(b){let a=b instanceof Error?b.message:String(b);throw new C(`Failed to send keys to tmux session: ${a}`,D(b),0)}}class C extends Error{constructor(a,b,c){super(a),this.delivery=b,this.keysDelivered=c,this.name="TmuxSendError"}}function D(a){if("object"!=typeof a||null===a)return"indeterminate";let{code:b,killed:c,signal:d}=a;return!0===c||"string"==typeof d&&""!==d?"indeterminate":"number"==typeof b||"string"==typeof b?"not-started":"indeterminate"}let E=new Set(["Up","Down","Left","Right","Enter","Space","Tab","Escape","BTab","BSpace","DC","PageUp","PageDown","Home","End","q","1","2","3","4","5","6","7","8","9","y","s","C-x","C-p","C-t","a","l","n","t","m","g","u","r","c","C-a","C-r"]);class F extends Error{constructor(a){super(`Special key sequence stopped after ${a} key(s)`),this.keysSent=a,this.name="SpecialKeysAbortedError"}}async function G(a,b,c){if(0===b.length)return;for(let a of b)if(!E.has(a))throw new C(`Invalid special key: ${a}`,"not-started",0);let d=0;try{for(let e=0;e<b.length;e++)if(await p("tmux",["send-keys","-t",r(a),b[e]],{timeout:5e3}),d=e+1,e<b.length-1&&(await new Promise(a=>setTimeout(a,100)),c?.shouldContinue&&!c.shouldContinue()))throw new F(e+1)}catch(b){if(b instanceof F)throw b;let a=b instanceof Error?b.message:String(b);throw new C(`Failed to send special keys to tmux session: ${a}`,D(b),d)}}async function H(a,b){let c,d;"number"==typeof b?(c=-b,d="-"):b?(c=b.startLine??-1e4,d=b.endLine??"-"):(c=-1e3,d="-");try{let{stdout:b}=await p("tmux",["capture-pane","-t",r(a),"-p","-e","-S",String(c),"-E",String(d)],{timeout:5e3,maxBuffer:0xa00000});return b}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to capture pane: ${a}`)}}async function I(a){try{return await p("tmux",["kill-session","-t",r(a)],{timeout:5e3}),(0,h.y)(a),!0}catch(b){let a=b instanceof Error?b.message:String(b);if(a?.includes("no server running")||a?.includes("can't find session"))return!1;throw Error(`Failed to kill tmux session: ${a}`)}}let J=new Set(["Escape","C-c","C-d","C-m","Enter"]);async function K(a,b){if(!J.has(b))throw Error(`Invalid special key: ${b}`);try{await p("tmux",["send-keys","-t",r(a),b],{timeout:5e3})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to send special key: ${a}`)}}async function L(a){try{await p("tmux",["send-keys","-t",r(a),"C-u"],{timeout:5e3})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to clear tmux input line: ${a}`)}}async function M(a){try{await p("tmux",["send-keys","-t",r(a),"C-e","C-u"],{timeout:5e3})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to clear tmux composer line: ${a}`)}}function N(a,b=l.qD){return b.includes(a)&&E.has(a)}function O(a){let b=setTimeout(()=>(0,f.gm)(a),250);b.unref?.()}async function P(a,b){await G(a,b),(0,f.gm)(a),O(a)}async function Q(a,b){for(let a of b)if(!(0,m.yy)(a))throw Error("Invalid direct input event");let c=r(a);for(let a of b){if("key"===a.type){await p("tmux",["send-keys","-t",c,"--",a.key],{timeout:5e3});continue}let b=Buffer.from(a.text,"utf8");for(let a=0;a<b.length;a+=256){let d=Array.from(b.subarray(a,a+256),a=>a.toString(16).padStart(2,"0"));await p("tmux",["send-keys","-t",c,"-H",...d],{timeout:5e3})}}(0,f.gm)(a),O(a)}},83598:(a,b,c)=>{c.d(b,{Fh:()=>m,G9:()=>n,Us:()=>k,zQ:()=>l});var d=c(79646),e=c(28354),f=c(31442),g=c(36925);let h=(0,e.promisify)(d.execFile),i=(0,g.v)("__cmGeometryDelegationCache",()=>new Map),j=(0,g.v)("__cmGeometryDelegationEdge",()=>new Map);async function k(a,b=Date.now()){let c=i.get(a);if(c&&b-c.readAt<1e3)return c.delegated;let d=!1;try{let{stdout:b}=await h("tmux",(0,f.Fk)(a,f.N2),{timeout:5e3});d="1"===b.trim()}catch{d=!1}return i.set(a,{delegated:d,readAt:b}),d}async function l(a,b=Date.now()){let c=await k(a,b),d=j.get(a)??!1;return j.set(a,c),{delegated:c,released:d&&!c}}async function m(a){try{let{stdout:b}=await h("tmux",(0,f.Ix)(a),{timeout:5e3});return(0,f.Bl)(b)>0}catch{return!1}}function n(a){i.delete(a),j.delete(a)}},86069:(a,b,c)=>{c.d(b,{IS:()=>e,J_:()=>h,iF:()=>f,vY:()=>g});let d=["Escape","C-c","C-d","C-m","Enter"];function e(a,b){return void 0===b?{kind:"key",name:a}:{kind:"key",name:a,delayAfterMs:b}}function f(a,b){return void 0===b?{kind:"literal",text:a}:{kind:"literal",text:a,delayAfterMs:b}}function g(a){return d.includes(a)}let h="unknown"},93997:(a,b,c)=>{c.d(b,{AW:()=>q,Ws:()=>n,XD:()=>m,aq:()=>u,gm:()=>s,pc:()=>t,sl:()=>h,vF:()=>r,wd:()=>p,xE:()=>g});var d=c(72626),e=c(36925);let f=(0,d.h)("tmux-capture-cache"),g=1e4;function h(a,b=g){return b>0&&a>=b}function i(){return(0,e.v)("__tmuxCaptureCache",()=>new Map)}function j(){return(0,e.v)("__tmuxCaptureCacheInflight",()=>new Map)}function k(){return(0,e.v)("__tmuxCaptureCacheInflightStartedAt",()=>new WeakMap)}function l(){return(0,e.v)("__tmuxCaptureCacheGeneration",()=>({global:0,sessions:new Map}))}function m(a){let b=l();return{global:b.global,session:b.sessions.get(a)??0}}function n(a,b){let c=m(a);return c.global===b.global&&c.session===b.session}function o(a){let b=a.endsWith("\n");return{rows:(b?a.slice(0,-1):a).split("\n"),terminated:b}}function p(a,b){if(""===a)return"";let{rows:c,terminated:d}=o(a);return b>=c.length?a:c.slice(-b).join("\n")+(d?"\n":"")}function q(a,b){return""!==a&&b<o(a).rows.length}function r(a,b,c,d){let e=i(),f=Date.now();for(let[a,b]of e)f-b.timestamp>5e3&&e.delete(a);if(e.size>=100&&!e.has(a)){let a=null,b=1/0;for(let[c,d]of e)d.timestamp<b&&(b=d.timestamp,a=c);a&&e.delete(a)}e.set(a,{output:b,capturedLines:c,timestamp:f,fetchStartedAt:d??f})}function s(a){i().delete(a);let b=l().sessions;b.set(a,(b.get(a)??0)+1),j().delete(a),f.debug("cache:invalidate",{sessionName:a})}function t(){i().clear(),j().clear();let a=l();a.global+=1,a.sessions.clear()}async function u(a,b,c,d,e){let f=function(a){let b=i().get(a);return!b||Date.now()-b.timestamp>5e3?null:b.fetchStartedAt}(a),h=function(a,b){let c=i(),d=c.get(a);return d?Date.now()-d.timestamp>5e3?(c.delete(a),null):b>d.capturedLines?null:p(d.output,b):null}(a,b);if(null!==h){null!==f&&d?.({fetchStartedAt:f,source:"cache"});let c=i().get(a);return c&&e?.(q(c.output,b)),h}let l=j(),o=l.get(a);if(o){let a=k().get(o),c=await o;return void 0!==a&&d?.({fetchStartedAt:a,source:"joined"}),e?.(q(c,b)),p(c,b)}let s=m(a),t=Date.now(),u=c();l.set(a,u),k().set(u,t);try{let c=await u;return c.length>0&&n(a,s)&&r(a,c,g,t),d?.({fetchStartedAt:t,source:"fetched"}),e?.(q(c,b)),p(c,b)}finally{l.get(a)===u&&l.delete(a)}}},96463:(a,b,c)=>{c.d(b,{RG:()=>s,St:()=>r,fS:()=>t,hb:()=>k,id:()=>o,s_:()=>q});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(72626),i=c(79892);let j=(0,h.h)("session-ownership"),k="session_owned_by_other_server";class l extends Error{constructor(a,b,c){super(`tmux session "${a}" belongs to another server (session_path=${b??"unknown"}, worktree=${c})`),this.sessionName=a,this.sessionPath=b,this.worktreePath=c,this.code=k,this.name="ForeignSessionError"}}function m(a){let b;try{b=e().realpathSync.native(a)}catch{b=g().resolve(a)}return b.length>1&&(b=b.replace(/\/+$/,"")),""===b?"/":b}function n(a,b,c=m){return null!==a&&""!==a&&c(a)===c(b)}function o(){let a=new Map,b=b=>{let c=a.get(b);return void 0===c&&(c=m(b),a.set(b,c)),c};return(a,c)=>n(a,c,b)}let p=new Set;async function q(a,b){if(!await (0,i.N)(a))return{verdict:"absent",sessionPath:null};let c=await (0,i.nS)(a);return null!==c&&n(c,b)?{verdict:"owned",sessionPath:c}:(p.has(a)||(p.add(a),j.warn("session:foreign-detected",{sessionName:a,sessionPath:c,worktreePath:b})),{verdict:"foreign",sessionPath:c})}async function r(a,b){let c=await q(a,b);if("foreign"===c.verdict)throw new l(a,c.sessionPath,b);return c}function s(a,b){return{error:`tmux session "${a}" belongs to another CommandMate server`,code:k,sessionName:a,sessionPath:b}}function t(a,b,c=o()){let d=new Set;for(let e of a)c(e.path??null,b)&&d.add(e.name);return d}}};
|
|
1
|
+
"use strict";exports.id=8791,exports.ids=[8791],exports.modules={1363:(a,b,c)=>{c.d(b,{GJ:()=>e,c2:()=>f});let d=(0,c(36925).v)("__tmuxSessionCreatedListeners",()=>new Map);function e(a,b){let c=d.get(a);return void 0===c&&(c=new Set,d.set(a,c)),c.add(b),()=>{let c=d.get(a);void 0!==c&&(c.delete(b),0===c.size&&d.delete(a))}}function f(a){let b=d.get(a);if(void 0!==b)for(let c of(d.delete(a),b))try{c()}catch{}}},8953:(a,b,c)=>{c.d(b,{G2:()=>f,Mx:()=>g,TM:()=>h,pU:()=>e,qD:()=>d,sM:()=>j});let d=["Up","Down","Left","Right","Enter","Escape","Tab","BTab","PageUp","PageDown","Home","End","q","1","2","3","4","5","6","7","8","9","y","n"],e=[...d,"s"],f=[...e,"C-a"],g="C-x",h=["C-p","C-t"],i=["a","l","t","m","g","u","r","c"],j=[...d,g,...h,...i];[...d,...h,...i]},31347:(a,b,c)=>{c.d(b,{RG:()=>d.RG,St:()=>d.St,fS:()=>d.fS,hb:()=>d.hb,id:()=>d.id,s_:()=>d.s_});var d=c(96463)},31442:(a,b,c)=>{c.d(b,{$D:()=>v,Bl:()=>A,Fk:()=>t,HL:()=>f,Ix:()=>z,KB:()=>u,L0:()=>l,Ls:()=>M,N2:()=>n,ND:()=>q,N_:()=>h,RS:()=>O,Rr:()=>K,Ys:()=>s,bq:()=>o,cD:()=>r,eC:()=>i,g4:()=>L,gM:()=>F,jp:()=>j,jx:()=>G,lY:()=>p,n9:()=>C,om:()=>w,sL:()=>N,tx:()=>m,wv:()=>k});var d=c(16983),e=c(40964);let f="mcbd-";function g(a){return`=${a}:`}function h(a){return a.startsWith(f)}let i="@cm_status",j="@cm_worktree",k="@cm_tool",l="@cm_instance",m="@cm_updated",n="@cm_delegated",o=[i,j,k,l,m,n],p="[CommandMate #{@cm_tool}/#{@cm_instance} #{@cm_status}] #{window_width}x#{window_height}";function q(a,b,c){return["set-option","-t",g(a),b,c]}function r(a,b){return["set-option","-u","-t",g(a),b]}function s(a,b){return["show-options","-t",g(a),b]}function t(a,b){return["show-options","-v","-t",g(a),b]}function u(a,b){return q(a,"status-right",b)}function v(a){return r(a,"status-right")}function w(a=process.env){let b=(a.CM_TMUX_STATUS??"").trim().toLowerCase();return"off"!==b&&"0"!==b&&"false"!==b}function x(a,b,c){return["set-hook","-t",g(a),b,c]}function y(a,b){return["set-hook","-u","-t",g(a),b]}function z(a){return["list-clients","-t",g(a),"-F","#{client_control_mode}"]}function A(a){return a.split("\n").map(a=>a.trim()).filter(a=>"0"===a).length}let B=["claude"];function C(a){if(!h(a))return!1;let b=(0,e.NN)(a)?.cliToolId;return void 0!==b&&B.includes(b)}let D="client-attached[0]",E="client-attached[1]";function F(a=process.env){return"on"===(a.CM_LIVE_ATTACH_HOOK??"").trim().toLowerCase()}function G(a=process.env){return"on"===(a.CM_READ_MODE_AUTO_POPUP??"").trim().toLowerCase()}function H(a){if(!/["$`\\\n\r]/.test(a))return`"${a}"`}function I(a,b,c=[]){let d=[a,...b,...c].join(" ");return`run-shell -b '${d}'`}let J=["#{session_name}","#{client_control_mode}","#{client_name}"];function K(a,b){let c=H(b);if(void 0!==c)return x(a,D,I(c,J))}function L(a){return y(a,D)}function M(a,b){let c=H(b);if(void 0!==c)return x(a,E,I(c,J))}function N(a){return y(a,E)}function O(a,b=d.Jn,c=d.sO){return[["set-window-option","-t",g(a),"window-size","manual"],["resize-window","-t",g(a),"-x",String(b),"-y",String(c)],r(a,n)]}},54325:(a,b,c)=>{c.d(b,{LE:()=>f,Oo:()=>e,ST:()=>d,T4:()=>k,dz:()=>j,r9:()=>h,rx:()=>i,rz:()=>g});let d="client_version",e="version_mismatch";function f(a,b){return!!a&&!!b&&"0.0.0"!==a&&"0.0.0"!==b&&a!==b}let g="chat_turn_progress",h=1e3;function i(a,b=65536){return b<=0?{body:"",truncated:a.length>0}:a.length<=b?{body:a,truncated:!1}:{body:a.slice(a.length-b),truncated:!0}}let j="messages_invalidated",k="model_changed"},77864:(a,b,c)=>{c.d(b,{Mj:()=>e,yy:()=>f});let d=["Enter","Escape","Tab","BTab","BSpace","DC","Up","Down","Left","Right","Home","End","PageUp","PageDown","C-a","C-b","C-c","C-d","C-e","C-f","C-g","C-h","C-i","C-j","C-k","C-l","C-m","C-n","C-o","C-p","C-q","C-r","C-s","C-t","C-u","C-v","C-w","C-x","C-y","C-z"],e=32;function f(a){if("object"!=typeof a||null===a)return!1;if("key"===a.type){var b;return"string"==typeof(b=a.key)&&d.includes(b)}return"text"===a.type&&"string"==typeof a.text&&a.text.length>0&&a.text.length<=4096}},79892:(a,b,c)=>{c.d(b,{Xg:()=>H,ou:()=>M,kz:()=>N,Ce:()=>L,jw:()=>A,lA:()=>r,Hg:()=>w,nS:()=>v,N:()=>t,N6:()=>O,fY:()=>I,GW:()=>x,p$:()=>u,zT:()=>s,ur:()=>R,V1:()=>B,ds:()=>K,KB:()=>G,Sb:()=>Q});var d=c(79646),e=c(28354),f=c(93997),g=c(83598),h=c(15608),i=c(1363),j=c(16983),k=c(72626),l=c(8953),m=c(77864),n=c(86069);function o(a){return a.endsWith(";")?`${a.slice(0,-1)}\\;`:a}let p=(0,e.promisify)(d.execFile),q=(0,k.h)("tmux");function r(a){return`=${a}:`}async function s(a,b={}){let c,d,e,f=b.windowWidth??j.Jn,h=b.windowHeight??j.sO,i=r(a);try{c=(await p("tmux",["show-window-options","-v","-t",i,"window-size"],{timeout:5e3})).stdout.trim();let[a,b]=(await p("tmux",["display-message","-p","-t",i,"#{window_width}|#{window_height}"],{timeout:5e3})).stdout.trim().split("|").map(Number);Number.isFinite(a)&&(d=a),Number.isFinite(b)&&(e=b)}catch{}let k="manual"===c,l=d===f&&e===h;if(k&&l)return!1;if((b.respectAttachedClient??!0)&&await (0,g.Fh)(a))return q.info("session-geometry:delegated-to-client",{sessionName:a}),!1;try{return k||await p("tmux",["set-window-option","-t",i,"window-size","manual"],{timeout:5e3}),l||await p("tmux",["resize-window","-t",i,"-x",String(f),"-y",String(h)],{timeout:5e3}),!0}catch(b){return q.warn("session-geometry:reconcile-failed",{sessionName:a,error:b instanceof Error?b.message:String(b)}),!1}}async function t(a){try{return await p("tmux",["has-session","-t",r(a)],{timeout:5e3}),!0}catch{return(0,h.y)(a),!1}}async function u(a){try{return await p("tmux",["has-session","-t",r(a)],{timeout:5e3}),"present"}catch(d){let{code:b,killed:c}=d??{};if(1===b&&!c)return(0,h.y)(a),"absent";return"unknown"}}async function v(a){try{let{stdout:b}=await p("tmux",["display-message","-p","-t",r(a),"#{session_path}"],{timeout:5e3}),c=b.trim();return""===c?null:c}catch{return null}}async function w(a){try{let{stdout:b}=await p("tmux",["display-message","-p","-t",r(a),"#{pane_current_command}"],{timeout:5e3}),c=b.trim();return""===c?null:c}catch{return null}}async function x(){try{let{stdout:a}=await p("tmux",["list-sessions","-F","#{session_name} #{session_windows} #{session_attached} #{session_path}"],{timeout:5e3});if(!a||""===a.trim())return[];return a.split("\n").filter(a=>""!==a.trim()).map(a=>{let[b,c,d,...e]=a.split(" ");return{name:b,windows:parseInt(c,10)||0,attached:"1"===d,path:e.join(" ")}})}catch{return[]}}let y=["sleep","2147483647"];async function z(a,b){let c="";try{let{stdout:a}=await p("tmux",["show-options","-gv","default-shell"],{timeout:5e3});c=a.trim()}catch{}c||(c=process.env.SHELL||"/bin/sh"),await p("tmux",["respawn-pane","-k","-t",`${r(a)}0`,"-c",b,c,"-l"],{timeout:5e3})}async function A(a,b){let c,d,e,f,g;"string"==typeof a?(c=a,d=b,e=j.eu,f=j.Jn,g=j.sO):(c=a.sessionName,d=a.workingDirectory,e=a.historyLimit||j.eu,f=a.windowWidth||j.Jn,g=a.windowHeight||j.sO);try{await p("tmux",["new-session","-d","-s",c,"-c",d,"-x",String(f),"-y",String(g),...y],{timeout:5e3}),await p("tmux",["set-option","-t",r(c),"history-limit",String(e)],{timeout:5e3});try{await p("tmux",["new-window","-k","-t",`${r(c)}0`,"-c",d],{timeout:5e3})}catch(a){q.warn("session-history-limit:window-rebuild-failed",{sessionName:c,historyLimit:e,error:a instanceof Error?a.message:String(a)}),await z(c,d)}await s(c,{windowWidth:f,windowHeight:g,respectAttachedClient:!1})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to create tmux session: ${a}`)}(0,i.c2)(c)}async function B(a,b,c=!0,d){if(d?.literal&&c)throw new C("sendKeys: { literal: true } cannot be combined with sendEnter — a trailing C-m would be typed as text. Send Enter as a separate key.","not-started",0);let e=o(b),f=d?.literal?function(a,b){if("literal"===b.kind)return["send-keys","-t",a,"-l","--",o(b.text)];if(!(0,n.vY)(b.name))throw Error(`Invalid key sequence key name: ${b.name}`);return["send-keys","-t",a,"--",b.name]}(r(a),{kind:"literal",text:b}):c?["send-keys","-t",r(a),e,"C-m"]:["send-keys","-t",r(a),e];try{await p("tmux",f,{timeout:5e3})}catch(b){let a=b instanceof Error?b.message:String(b);throw new C(`Failed to send keys to tmux session: ${a}`,D(b),0)}}class C extends Error{constructor(a,b,c){super(a),this.delivery=b,this.keysDelivered=c,this.name="TmuxSendError"}}function D(a){if("object"!=typeof a||null===a)return"indeterminate";let{code:b,killed:c,signal:d}=a;return!0===c||"string"==typeof d&&""!==d?"indeterminate":"number"==typeof b||"string"==typeof b?"not-started":"indeterminate"}let E=new Set(["Up","Down","Left","Right","Enter","Space","Tab","Escape","BTab","BSpace","DC","PageUp","PageDown","Home","End","q","1","2","3","4","5","6","7","8","9","y","s","C-x","C-p","C-t","a","l","n","t","m","g","u","r","c","C-a","C-r"]);class F extends Error{constructor(a){super(`Special key sequence stopped after ${a} key(s)`),this.keysSent=a,this.name="SpecialKeysAbortedError"}}async function G(a,b,c){if(0===b.length)return;for(let a of b)if(!E.has(a))throw new C(`Invalid special key: ${a}`,"not-started",0);let d=0;try{for(let e=0;e<b.length;e++)if(await p("tmux",["send-keys","-t",r(a),b[e]],{timeout:5e3}),d=e+1,e<b.length-1&&(await new Promise(a=>setTimeout(a,100)),c?.shouldContinue&&!c.shouldContinue()))throw new F(e+1)}catch(b){if(b instanceof F)throw b;let a=b instanceof Error?b.message:String(b);throw new C(`Failed to send special keys to tmux session: ${a}`,D(b),d)}}async function H(a,b){let c,d;"number"==typeof b?(c=-b,d="-"):b?(c=b.startLine??-1e4,d=b.endLine??"-"):(c=-1e3,d="-");try{let{stdout:b}=await p("tmux",["capture-pane","-t",r(a),"-p","-e","-S",String(c),"-E",String(d)],{timeout:5e3,maxBuffer:0xa00000});return b}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to capture pane: ${a}`)}}async function I(a){try{return await p("tmux",["kill-session","-t",r(a)],{timeout:5e3}),(0,h.y)(a),!0}catch(b){let a=b instanceof Error?b.message:String(b);if(a?.includes("no server running")||a?.includes("can't find session"))return!1;throw Error(`Failed to kill tmux session: ${a}`)}}let J=new Set(["Escape","C-c","C-d","C-m","Enter"]);async function K(a,b){if(!J.has(b))throw Error(`Invalid special key: ${b}`);try{await p("tmux",["send-keys","-t",r(a),b],{timeout:5e3})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to send special key: ${a}`)}}async function L(a){try{await p("tmux",["send-keys","-t",r(a),"C-u"],{timeout:5e3})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to clear tmux input line: ${a}`)}}async function M(a){try{await p("tmux",["send-keys","-t",r(a),"C-e","C-u"],{timeout:5e3})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to clear tmux composer line: ${a}`)}}async function N(a){try{await p("tmux",["send-keys","-t",r(a),"C-e","BSpace"],{timeout:5e3})}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`Failed to clear tmux composer paste placeholder: ${a}`)}}function O(a,b=l.qD){return b.includes(a)&&E.has(a)}function P(a){let b=setTimeout(()=>(0,f.gm)(a),250);b.unref?.()}async function Q(a,b){await G(a,b),(0,f.gm)(a),P(a)}async function R(a,b){for(let a of b)if(!(0,m.yy)(a))throw Error("Invalid direct input event");let c=r(a);for(let a of b){if("key"===a.type){await p("tmux",["send-keys","-t",c,"--",a.key],{timeout:5e3});continue}let b=Buffer.from(a.text,"utf8");for(let a=0;a<b.length;a+=256){let d=Array.from(b.subarray(a,a+256),a=>a.toString(16).padStart(2,"0"));await p("tmux",["send-keys","-t",c,"-H",...d],{timeout:5e3})}}(0,f.gm)(a),P(a)}},83598:(a,b,c)=>{c.d(b,{Fh:()=>m,G9:()=>n,Us:()=>k,zQ:()=>l});var d=c(79646),e=c(28354),f=c(31442),g=c(36925);let h=(0,e.promisify)(d.execFile),i=(0,g.v)("__cmGeometryDelegationCache",()=>new Map),j=(0,g.v)("__cmGeometryDelegationEdge",()=>new Map);async function k(a,b=Date.now()){let c=i.get(a);if(c&&b-c.readAt<1e3)return c.delegated;let d=!1;try{let{stdout:b}=await h("tmux",(0,f.Fk)(a,f.N2),{timeout:5e3});d="1"===b.trim()}catch{d=!1}return i.set(a,{delegated:d,readAt:b}),d}async function l(a,b=Date.now()){let c=await k(a,b),d=j.get(a)??!1;return j.set(a,c),{delegated:c,released:d&&!c}}async function m(a){try{let{stdout:b}=await h("tmux",(0,f.Ix)(a),{timeout:5e3});return(0,f.Bl)(b)>0}catch{return!1}}function n(a){i.delete(a),j.delete(a)}},86069:(a,b,c)=>{c.d(b,{IS:()=>e,J_:()=>h,iF:()=>f,vY:()=>g});let d=["Escape","C-c","C-d","C-m","Enter"];function e(a,b){return void 0===b?{kind:"key",name:a}:{kind:"key",name:a,delayAfterMs:b}}function f(a,b){return void 0===b?{kind:"literal",text:a}:{kind:"literal",text:a,delayAfterMs:b}}function g(a){return d.includes(a)}let h="unknown"},93997:(a,b,c)=>{c.d(b,{AW:()=>q,Ws:()=>n,XD:()=>m,aq:()=>u,gm:()=>s,pc:()=>t,sl:()=>h,vF:()=>r,wd:()=>p,xE:()=>g});var d=c(72626),e=c(36925);let f=(0,d.h)("tmux-capture-cache"),g=1e4;function h(a,b=g){return b>0&&a>=b}function i(){return(0,e.v)("__tmuxCaptureCache",()=>new Map)}function j(){return(0,e.v)("__tmuxCaptureCacheInflight",()=>new Map)}function k(){return(0,e.v)("__tmuxCaptureCacheInflightStartedAt",()=>new WeakMap)}function l(){return(0,e.v)("__tmuxCaptureCacheGeneration",()=>({global:0,sessions:new Map}))}function m(a){let b=l();return{global:b.global,session:b.sessions.get(a)??0}}function n(a,b){let c=m(a);return c.global===b.global&&c.session===b.session}function o(a){let b=a.endsWith("\n");return{rows:(b?a.slice(0,-1):a).split("\n"),terminated:b}}function p(a,b){if(""===a)return"";let{rows:c,terminated:d}=o(a);return b>=c.length?a:c.slice(-b).join("\n")+(d?"\n":"")}function q(a,b){return""!==a&&b<o(a).rows.length}function r(a,b,c,d){let e=i(),f=Date.now();for(let[a,b]of e)f-b.timestamp>5e3&&e.delete(a);if(e.size>=100&&!e.has(a)){let a=null,b=1/0;for(let[c,d]of e)d.timestamp<b&&(b=d.timestamp,a=c);a&&e.delete(a)}e.set(a,{output:b,capturedLines:c,timestamp:f,fetchStartedAt:d??f})}function s(a){i().delete(a);let b=l().sessions;b.set(a,(b.get(a)??0)+1),j().delete(a),f.debug("cache:invalidate",{sessionName:a})}function t(){i().clear(),j().clear();let a=l();a.global+=1,a.sessions.clear()}async function u(a,b,c,d,e){let f=function(a){let b=i().get(a);return!b||Date.now()-b.timestamp>5e3?null:b.fetchStartedAt}(a),h=function(a,b){let c=i(),d=c.get(a);return d?Date.now()-d.timestamp>5e3?(c.delete(a),null):b>d.capturedLines?null:p(d.output,b):null}(a,b);if(null!==h){null!==f&&d?.({fetchStartedAt:f,source:"cache"});let c=i().get(a);return c&&e?.(q(c.output,b)),h}let l=j(),o=l.get(a);if(o){let a=k().get(o),c=await o;return void 0!==a&&d?.({fetchStartedAt:a,source:"joined"}),e?.(q(c,b)),p(c,b)}let s=m(a),t=Date.now(),u=c();l.set(a,u),k().set(u,t);try{let c=await u;return c.length>0&&n(a,s)&&r(a,c,g,t),d?.({fetchStartedAt:t,source:"fetched"}),e?.(q(c,b)),p(c,b)}finally{l.get(a)===u&&l.delete(a)}}},96463:(a,b,c)=>{c.d(b,{RG:()=>s,St:()=>r,fS:()=>t,hb:()=>k,id:()=>o,s_:()=>q});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(72626),i=c(79892);let j=(0,h.h)("session-ownership"),k="session_owned_by_other_server";class l extends Error{constructor(a,b,c){super(`tmux session "${a}" belongs to another server (session_path=${b??"unknown"}, worktree=${c})`),this.sessionName=a,this.sessionPath=b,this.worktreePath=c,this.code=k,this.name="ForeignSessionError"}}function m(a){let b;try{b=e().realpathSync.native(a)}catch{b=g().resolve(a)}return b.length>1&&(b=b.replace(/\/+$/,"")),""===b?"/":b}function n(a,b,c=m){return null!==a&&""!==a&&c(a)===c(b)}function o(){let a=new Map,b=b=>{let c=a.get(b);return void 0===c&&(c=m(b),a.set(b,c)),c};return(a,c)=>n(a,c,b)}let p=new Set;async function q(a,b){if(!await (0,i.N)(a))return{verdict:"absent",sessionPath:null};let c=await (0,i.nS)(a);return null!==c&&n(c,b)?{verdict:"owned",sessionPath:c}:(p.has(a)||(p.add(a),j.warn("session:foreign-detected",{sessionName:a,sessionPath:c,worktreePath:b})),{verdict:"foreign",sessionPath:c})}async function r(a,b){let c=await q(a,b);if("foreign"===c.verdict)throw new l(a,c.sessionPath,b);return c}function s(a,b){return{error:`tmux session "${a}" belongs to another CommandMate server`,code:k,sessionName:a,sessionPath:b}}function t(a,b,c=o()){let d=new Set;for(let e of a)c(e.path??null,b)&&d.add(e.name);return d}}};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use strict";exports.id=9390,exports.ids=[9390],exports.modules={2466:(a,b,c)=>{c.d(b,{Gb:()=>e,ek:()=>i,u_:()=>h});var d=c(13287);let e=200;function f(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function g(a,b){if("string"!=typeof a)return null;let c=a.trim();return""===c?null:c.slice(0,b)}function h(a){if(!f(a)||!Array.isArray(a.questions)||0===a.questions.length||a.questions.length>20)return null;let b=[];for(let c of a.questions){let a=function(a){if(!f(a))return null;let b=g(a.question,1e3);if(null===b||!Array.isArray(a.options)||0===a.options.length||a.options.length>20)return null;let c=[];for(let b of a.options){let a=function(a){if(!f(a))return null;let b=g(a.label,e);return null===b?null:{label:b,description:g(a.description,500)}}(b);if(null===a)return null;c.push(a)}return{question:b,header:g(a.header,64),multiSelect:!0===a.multiSelect,choices:c}}(c);if(null===a)return null;b.push(a)}return b}function i(a){if(!f(a)||a.tool_name!==d.k$)return null;let b=h(a.tool_input);return null===b?null:{questions:b,promptId:g(a.prompt_id,256)}}},18529:(a,b,c)=>{c.d(b,{$x:()=>t,Lj:()=>u,Q1:()=>s,QH:()=>v});var d=c(29021),e=c(21820),f=c(33873),g=c(8004),h=c(24455),i=c(72626),j=c(43252),k=c(79827),l=c(36925);let m=(0,i.h)("lib/hooks/sources/opencode/launch-settings"),n=(0,l.v)("__opencodeLaunchSettings",()=>new Map);function o(a){return(0,h.v7)(a.worktreeId,a.cliToolId,a.instanceId)}function p(){let a=(0,f.join)((0,e.homedir)(),".commandmate","opencode-launch-settings.json");return(0,g.T)(process.env.CM_OPENCODE_LAUNCH_SETTINGS_FILE,a,"CM_OPENCODE_LAUNCH_SETTINGS_FILE")}function q(){try{let a=JSON.parse((0,d.readFileSync)(p(),"utf8"));if("object"!=typeof a||null===a||Array.isArray(a))return{};let b={};for(let[c,d]of Object.entries(a)){let a=(0,k.ZH)(d);(0,k.Mj)(a)&&(b[c]=a)}return b}catch{return{}}}function r(a){let b=p();try{(0,d.mkdirSync)((0,f.dirname)(b),{recursive:!0}),(0,d.writeFileSync)(b,`${JSON.stringify(a,null,2)}
|
|
2
|
-
`,{mode:384})}catch(a){m.warn("opencode-launch-settings-write-failed",{path:b,error:a instanceof Error?a.message:String(a)})}}function s(a){let b=o(a),c=n.get(b);if(c)return c;let d=q()[b];return d?(n.set(b,d),d):{...k.gF}}function t(a,b){let c=o(a),d=(0,k.ZH)(b??{}),e=q();return(0,k.Mj)(d)?(n.set(c,d),e[c]=d,r(e)):(n.delete(c),c in e&&(delete e[c],r(e))),d}function u(a){let b=(0,k.ZH)(a??{}),c=[];b.agent&&c.push(`--agent ${(0,j.ZL)(b.agent)}`);let d=(0,k.sw)(b);return d&&c.push(`--model ${(0,j.ZL)(d)}`),c.length>0?` ${c.join(" ")}`:""}function v(a){let b=(0,k.ZH)(a??{}),c={};return b.agent&&(c.agent=b.agent),b.providerId&&b.modelId&&(c.model={providerID:b.providerId,modelID:b.modelId}),b.variant&&(c.variant=b.variant),Object.keys(c).length>0?c:null}},27128:(a,b,c)=>{function d(a){return a.replace(/\s+/g," ").trim()}function e(a,b){return a.length<=b?a:`${a.slice(0,b-1)}…`}function f(a,b,c){return a.length<=b?a:a.slice(0,b-c.length)+c}function g(a){return a.split("\n").map(a=>a.length>0?`> ${a}`:">").join("\n")}function h(a){let b=[],c=[],d=[];for(let e of a)0!==e.text.length&&("tool"===e.kind?d.push(e.text):"reasoning"===e.kind?c.push(e.text):b.push(e.text));let e=b.join("\n\n"),f=0===c.length?"":[`> **Thinking (${c.length})**`,">",c.map(g).join("\n>\n")].join("\n"),h=0===d.length?"":[`> **Tool calls (${d.length})**`,">",...d.map(g)].join("\n");return{body:[e,f,h].filter(a=>a.length>0).join("\n\n"),prose:e,reasoningLog:f,reasoningBlocks:c.length,toolLog:h,toolCalls:d.length}}c.d(b,{PB:()=>d,Wv:()=>e,mg:()=>f,t3:()=>h})},33198:(a,b,c)=>{c.d(b,{FN:()=>S,lf:()=>K,ym:()=>O,hS:()=>M,f4:()=>N,wb:()=>J,bP:()=>Q,yn:()=>L,H1:()=>P});var d=c(72626),e=c(24455),f=c(3161),g=c(95375),h=c(27939),i=c(62171),j=c(57510),k=c(49791),l=c(86594),m=c(98322),n=c(36925);let o=(0,d.h)("lib/hooks/sources/opencode/history"),p=(0,n.v)("__opencodeTranscripts",()=>new Map);function q(a){return(0,e.v7)(a.worktreeId,a.cliToolId,a.instanceId)}function r(a){let b=q(a),c=p.get(b);return c||(c=new Map,p.set(b,c)),c}async function s(a,b){try{let{emitChatTurnProgress:d}=await Promise.all([c.e(1356),c.e(1503),c.e(1634),c.e(1191),c.e(8791),c.e(7491),c.e(1719),c.e(3505),c.e(2119),c.e(2445),c.e(3480),c.e(252),c.e(8800),c.e(7905),c.e(255),c.e(9731),c.e(8728),c.e(1601),c.e(6119),c.e(720),c.e(8918),c.e(1656),c.e(9130)]).then(c.bind(c,79565));await d({worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId??a.cliToolId},()=>{let a=(0,m.JZ)(b);return 0===a.body.length?null:{turnKey:(0,l.jT)(a.userMessageId),body:a.body,partial:!1}})}catch(b){o.debug("opencode-transcript-progress-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,error:b instanceof Error?b.message:String(b)})}}function t(a){return"number"==typeof a&&Number.isFinite(a)?a:null}async function u(a,b,c=Date.now()){let d=p.get(q(a)),e=d?.get(b);return!!e&&!!d&&(d.delete(b),v(a,(0,m.JZ)(e),Math.max(e.startedAt,c),"stream"))}async function v(a,b,d,e){let f=a.instanceId??a.cliToolId;try{if(0===b.body.length)return o.info("opencode-transcript-turn-empty",{worktreeId:a.worktreeId,instanceId:f,sessionId:b.sessionId,origin:e}),!1;b.unknownPartTypes.length>0&&o.info("opencode-transcript-unknown-parts",{worktreeId:a.worktreeId,instanceId:f,sessionId:b.sessionId,partTypes:b.unknownPartTypes});let g=(0,l.jT)(b.userMessageId),[{getDbInstance:h},{createMessage:i,findMessageByRequestId:j},{broadcastMessage:k}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,56791)),Promise.all([c.e(1356),c.e(1503),c.e(1191),c.e(8791),c.e(7491),c.e(1719),c.e(3505),c.e(2119),c.e(2445),c.e(8728)]).then(c.bind(c,43015))]),m=h();if(j(m,a.worktreeId,g))return o.debug("opencode-transcript-turn-already-saved",{worktreeId:a.worktreeId,instanceId:f,requestId:g,origin:e}),!1;let n=i(m,{worktreeId:a.worktreeId,role:"assistant",content:b.body,messageType:"normal",timestamp:new Date(d>0?d:Date.now()),cliToolId:a.cliToolId,instanceId:f,requestId:g});return k("message",{worktreeId:a.worktreeId,message:n}),o.info("opencode-transcript-turn-saved",{worktreeId:a.worktreeId,instanceId:f,sessionId:b.sessionId,requestId:g,origin:e,bodyLength:b.body.length,textParts:b.textParts,toolParts:b.toolParts}),!0}catch(c){return o.error("opencode-transcript-write-failed",{worktreeId:a.worktreeId,instanceId:f,sessionId:b.sessionId,origin:e,error:c instanceof Error?c.message:String(c)}),!1}}async function w(a,b,c){let d=a.instanceId??a.cliToolId;try{let e=await (0,k.EI)(b,c);if(null===e)return o.info("opencode-transcript-backfill-unavailable",{worktreeId:a.worktreeId,instanceId:d,port:b,sessionId:c}),0;let f=(0,m.ed)(e,c),g=[...f].sort((a,b)=>b.startedAt-a.startedAt),h=g.slice(0,50);g.length>h.length&&o.warn("opencode-transcript-backfill-truncated",{worktreeId:a.worktreeId,instanceId:d,sessionId:c,examined:h.length,skipped:g.length-h.length,limit:50});let i=function(a){let b=new Map;if(!Array.isArray(a))return b;for(let c of a){if(!(0,j.Qd)(c))continue;let a=(0,j.Qd)(c.info)?c.info:null;if(!a||"assistant"!==a.role)continue;let d=(0,j.O2)(a,m.Pv);if(!d)continue;let e=(0,j.Qd)(a.time)?a.time:null,f=t(e?.completed)??t(e?.created)??null;null!==f&&f>(b.get(d)??0)&&b.set(d,f)}return b}(e),l=0;for(let b of[...h].reverse())await v(a,(0,m.JZ)(b),Math.max(b.startedAt,i.get(b.userMessageId)??0),"backfill")&&(l+=1);return o.info("opencode-transcript-backfill-done",{worktreeId:a.worktreeId,instanceId:d,port:b,sessionId:c,turns:f.length,written:l}),l}catch(e){return o.error("opencode-transcript-backfill-failed",{worktreeId:a.worktreeId,instanceId:d,port:b,sessionId:c,error:e instanceof Error?e.message:String(e)}),0}}var x=c(75356),y=c(98211),z=c(90488),A=c(84574);function B(a){let b=(0,j.Qd)(a.properties)?a.properties:{};return(0,j.NZ)(b,["sessionID"])}function C(a,b){for(;a.size>b;){let b=a.keys().next();if(b.done)break;a.delete(b.value)}}let D=(0,d.h)("lib/hooks/sources/opencode/subscription"),E=[1e3,2e3,4e3,8e3,15e3,3e4],F=(0,n.v)("__opencodeSubscriptions",()=>new Map),G=(0,n.v)("__opencodeDroppedLiveness",()=>new Map),H=(0,n.v)("__opencodeProbedActivity",()=>new Map);function I(a){return(0,e.v7)(a.worktreeId,a.cliToolId,a.instanceId)}function J(a){return F.has(I(a))}function K(a){let b=I(a);return F.get(b)?.liveness??G.get(b)??{state:"unknown"}}function L(a,b,c){H.set(I(a),{activity:b,at:c})}function M(a){return H.get(I(a))??null}function N(a){return"live"===K(a).state}function O(a){return F.get(I(a))?.gate.primarySession()??null}function P(a,b,c){let d=F.get(I(a));if(!d)return{seen:Promise.resolve(!1),cancel:()=>{}};let e=()=>{},f=new Promise(a=>{e=a}),g=d.idleWaiters.get(b)??new Set;d.idleWaiters.set(b,g);let h=null,i=a=>{g.delete(i)&&(0===g.size&&d.idleWaiters.delete(b),null!==h&&clearTimeout(h),e(a))};return g.add(i),h=setTimeout(()=>i(!1),c),h.unref?.(),{seen:f,cancel:()=>i(!1)}}async function Q(a,b,c,d={}){let e=I(a),f=F.get(e);if(f)return R(f);G.delete(e),H.delete(e);let g=d.port??(0,A.hC)(a);if(null===g)return D.info("opencode-subscription-skipped-no-port",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId}),{close:async()=>{},liveness:{state:"unknown"}};let h={key:e,target:a,port:g,onEvent:b,normalize:c,gate:function(a=64,b=512,c=64){let d=new Map,e=new Set,f=new Set,g=null,h=(b,c)=>{d.delete(b),d.set(b,c),C(d,a)},i=()=>null!==g&&"busy"===d.get(g),k=a=>{var b;h(a,"busy"),b=a,!f.has(b)&&g!==b&&(i()||(g=b))};return{observe(a,l){let m=function(a){let b=(0,j.Qd)(a.properties)?a.properties:{},c=(0,j.Qd)(b.info)?b.info:null;return null!==c&&(0,j.NZ)(c,["parentID"])?(0,j.NZ)(c,["id"])??(0,j.NZ)(b,["sessionID"]):null}(l);if(null!==m&&(f.add(m),C(f,c),g===m&&(g=null)),"message.updated"===a){let{role:a,id:c}=function(a){let b=(0,j.Qd)(a.properties)?a.properties:{};return{role:(0,j.NZ)(b,["info","role"]),id:(0,j.NZ)(b,["info","id"])}}(l);if("user"!==a||null===c)return{kind:"ignored"};let d=B(l)??"";return e.has(c)?{kind:"suppressed",sessionId:d,reason:"already-announced"}:(e.add(c),C(e,b),{kind:"announced",sessionId:d,messageId:c})}if("session.status"===a){if("busy"!==function(a){let b=(0,j.Qd)(a.properties)?a.properties:{};return(0,j.NZ)(b,["status","type"])}(l))return{kind:"ignored"};let a=B(l);return null===a?{kind:"ignored"}:(k(a),{kind:"armed",sessionId:a})}if("session.error"===a){let a=B(l);return null===a?{kind:"ignored"}:{kind:"failed",sessionId:a,errorName:function(a){let b=(0,j.Qd)(a.properties)?a.properties:{};return(0,j.NZ)(b,["error","name"])}(l)}}if("session.idle"!==a)return{kind:"ignored"};let n=B(l);if(null===n)return{kind:"ignored"};if(f.has(n)||null!==g&&n!==g&&i())return h(n,"idle"),{kind:"suppressed",sessionId:n,reason:"foreign-session"};let o=d.get(n);return void 0===o?{kind:"suppressed",sessionId:n,reason:"never-armed"}:"idle"===o?{kind:"suppressed",sessionId:n,reason:"already-completed"}:(h(n,"idle"),{kind:"completed",sessionId:n})},isArmed:a=>"busy"===d.get(a),arm(a){k(a)},armedSessions:()=>[...d.entries()].filter(([,a])=>"busy"===a).map(([a])=>a),primarySession:()=>g,reset(){d.clear(),g=null}}}(),resync:d.resync??"none",seenDecisions:new Set,idleWaiters:new Map,announcedUpdates:new Set,streamController:new AbortController,lifetimeController:new AbortController,serverVersion:null,liveness:{state:"unknown"},closed:!1,watchdog:null};return F.set(e,h),D.info("opencode-subscription-opened",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:g}),V(h),R(h)}function R(a){return{close:async()=>{await S(a.target)},get liveness(){return a.liveness}}}async function S(a){let b=I(a);G.delete(b),H.delete(b);let c=F.get(b);if(c){for(let a of(c.closed=!0,T(c),[...c.idleWaiters.values()]))for(let b of[...a])b(!1);c.idleWaiters.clear(),c.streamController.abort(),c.lifetimeController.abort(),F.delete(b),(0,f.cI)(a),p.delete(q(a)),(0,i.WC)(a),D.info("opencode-subscription-closed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:c.port})}}function T(a){null!==a.watchdog&&(clearTimeout(a.watchdog),a.watchdog=null)}function U(a){T(a);let b=setTimeout(()=>{a.closed||(D.warn("opencode-subscription-heartbeat-lost",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,port:a.port,afterMs:3e4}),a.streamController.abort())},3e4);b.unref?.(),a.watchdog=b}async function V(a){let b=0;for(;!a.closed;){a.streamController=new AbortController;let c=a.gate.armedSessions();a.gate.reset();let d="stream-ended";try{let e=await W(a);if(a.closed)break;if("changed"===e)return;if("unreachable"===e)d="health-unreachable";else{let d=await (0,k.mi)(a.port,a.streamController.signal);for await(let e of(a.liveness={state:"live",lastHeartbeatAt:Date.now()},U(a),await X(a),await Y(a,c),await Z(a),b=0,d))b=0,U(a),function(a,b){let c=(0,j.O2)(b,"type");("server.heartbeat"===c||"server.connected"===c)&&(a.liveness={state:"live",lastHeartbeatAt:Date.now()}),$(a,b,Date.now())}(a,e)}}catch(a){d=a instanceof Error?a.message:String(a)}finally{T(a)}if(a.closed)break;a.liveness={state:"lost",since:Date.now(),reason:d},D.warn("opencode-subscription-disconnected",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,port:a.port,reason:d,attempt:b}),await function(a,b){return new Promise(c=>{if(b.aborted)return void c();let d=()=>{clearTimeout(e),c()};b.addEventListener("abort",d,{once:!0});let e=setTimeout(()=>{b.removeEventListener("abort",d),c()},a);e.unref?.()})}(function(a){let b=Math.min(a,E.length-1);return E[b]}(b),a.lifetimeController.signal),b+=1}}async function W(a){var b,c;let d=await (0,k.sc)(a.port);if("healthy"!==d.kind)return D.info("opencode-subscription-health-unavailable",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,port:a.port,outcome:d.kind,status:"rejected"===d.kind?d.status:void 0}),"unreachable";let e=d.health.version;return null===a.serverVersion||null===e?(a.serverVersion??=e,"same"):e===a.serverVersion?"same":(b=a,c=e,D.warn("opencode-subscription-port-identity-changed",{worktreeId:b.target.worktreeId,instanceId:b.target.instanceId??b.target.cliToolId,port:b.port,reason:"port_identity_changed",expectedVersion:b.serverVersion,observedVersion:c}),b.closed=!0,T(b),b.streamController.abort(),b.lifetimeController.abort(),b.liveness={state:"lost",since:Date.now(),reason:"port_identity_changed"},F.delete(b.key),G.set(b.key,b.liveness),"changed")}async function X(a){let b=Date.now(),[c,d]=await Promise.all([(0,k.Li)(a.port),(0,k.er)(a.port)]),e=(c,d)=>{let e=c.slice(0,50);for(let f of(c.length>e.length&&D.warn("opencode-resync-truncated",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,type:d,examined:e.length,skipped:c.length-e.length,limit:50}),e)){let c=(0,j.O2)(f,"id");!c||a.seenDecisions.has(c)||$(a,{id:`resync_${c}`,type:d,properties:f},b)}};e(c,"permission.asked"),e(d,"question.asked")}async function Y(a,b){if("session-status-poll"!==a.resync)return;let c=await (0,k.mY)(a.port);if(null===c)return void D.info("opencode-resync-status-unavailable",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,port:a.port});let d=[];for(let[b,e]of Object.entries(c))"busy"===e&&(a.gate.arm(b),d.push(b));let e=[];for(let d of b)"idle"===c[d]&&(a.gate.arm(d),e.push(d),$(a,{id:`resync_idle_${d}`,type:"session.idle",properties:{sessionID:d}},Date.now()));(d.length>0||e.length>0)&&D.info("opencode-turn-state-recovered",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,port:a.port,rearmed:d,synthesized:e,primarySession:a.gate.primarySession()})}async function Z(a){try{let b=(0,h.KA)(a.target)?.sessionId??null,c=a.gate.primarySession()??b;if(!c)return;await w(a.target,a.port,c)}catch(b){D.warn("opencode-history-recovery-failed",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,port:a.port,error:b instanceof Error?b.message:String(b)})}}function $(a,b,c){var d,e;let h=(0,j.O2)(b,"type");if("message.part.updated"===h){let a=(0,x.Zu)(b),c=(0,x.Dp)(b);a&&c&&(0,y.XL)(a,c)}if("session.updated"===h){let d=(0,f.Tv)(b,c);d&&(0,f.G1)(a.target,d)}if(("session.updated"===h||"message.updated"===h)&&(0,g.recordAgentReportedEffort)(a.target.worktreeId,a.target.cliToolId,a.target.instanceId,(0,x.Jd)(b)),("message.updated"===h||"message.part.updated"===h)&&function(a,b,c){try{let d=(0,j.O2)(b,"type"),e=(0,j.Qd)(b.properties)?b.properties:{},f=(0,j.O2)(e,"sessionID");if(!f)return;if("message.updated"===d){let b=(0,j.Qd)(e.info)?e.info:null;if(!b||"assistant"!==b.role)return;let d=(0,j.O2)(b,"parentID");if(!d)return;let g=r(a),h=g.get(f),i=h?.userMessageId===d?h:(0,m.lp)(f,d,c);if(i!==h)for(h&&o.info("opencode-transcript-turn-superseded",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,sessionId:f,abandoned:h.userMessageId}),g.set(f,i);g.size>16;){let b=g.keys().next();if(b.done)break;g.delete(b.value),o.info("opencode-transcript-turn-evicted",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,sessionId:b.value,reason:"max-open-turns"})}let k=(0,j.O2)(b,"id");k&&(0,m.ZG)(i,k);return}if("message.part.updated"!==d)return;let g=(0,m.TB)(e.part);if(!g)return;let h=r(a).get(f);if(!h||!(0,m.QT)(h,g.messageId))return void o.debug("opencode-transcript-part-unattached",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,sessionId:f,partType:g.type,reason:h?"foreign-message":"no-open-turn"});(0,m.yG)(h,g)||o.warn("opencode-transcript-turn-overflow",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,sessionId:f,partType:g.type}),s(a,h)}catch(b){o.error("opencode-transcript-record-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,error:b instanceof Error?b.message:String(b)})}}(a.target,b,c),("session.diff"===h||"session.updated"===h||"message.updated"===h)&&(0,i.hf)(a.target,b,c),"installation.update-available"===h&&function(a,b,c){let d=(0,j.Qd)(b.properties)?b.properties:{},e=(0,j.O2)(d,"version");if(e){if(a.announcedUpdates.has(e))return D.info("opencode-update-available-repeat-dropped",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,version:e});a.announcedUpdates.add(e),D.info("opencode-update-available",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,version:e}),(0,z.BF)(a.target,a.target.instanceId??a.target.cliToolId,e,c)}}(a,b,c),"session.idle"===h){let c=(0,j.O2)((0,j.Qd)(b.properties)?b.properties:{},"sessionID");if(c){let b=a.idleWaiters.get(c);if(b)for(let a of[...b])a(!0);u(a.target,c)}}let k=a.gate.observe(h,b);"failed"===k.kind&&D.warn("opencode-session-error",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,sessionId:k.sessionId,errorName:k.errorName});let l=null;try{l=a.normalize({payload:b,receivedAt:c})}catch(a){D.error("opencode-normalize-threw",{type:h,error:a instanceof Error?a.message:String(a)});return}if(!l)return;let n=(d=l.event,e=k,"stop"===d&&"completed"!==e.kind?"suppressed"===e.kind?e.reason:"not-a-turn-end":"user_prompt_submit"===d&&"announced"!==e.kind?"suppressed"===e.kind?e.reason:"not-a-new-prompt":null);if(null!==n)return void D.info("opencode-repeat-suppressed",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,sessionId:l.conversationId,event:l.event,reason:n});!function(a,b){let c=(0,j.O2)(b,"type");if("permission.asked"!==c&&"question.asked"!==c)return;let d=(0,j.Qd)(b.properties)?b.properties:{},e=(0,j.O2)(d,"id");if(e)for(a.seenDecisions.add(e);a.seenDecisions.size>256;){let b=a.seenDecisions.values().next();if(b.done)break;a.seenDecisions.delete(b.value)}}(a,b);try{a.onEvent(l)}catch(a){D.error("opencode-event-handler-failed",{type:h,error:a instanceof Error?a.message:String(a)})}}},62171:(a,b,c)=>{c.d(b,{HL:()=>r,WC:()=>s,hf:()=>q,ki:()=>v,pw:()=>w,rn:()=>t,t2:()=>u});var d=c(72626),e=c(24455),f=c(85322),g=c(84574),h=c(49791),i=c(36925);let j=(0,d.h)("lib/hooks/sources/opencode/diff"),k=(0,i.v)("__opencodeSessionDiff",()=>new Map),l=(0,i.v)("__opencodeSessionDiffRefreshes",()=>new Set);function m(a){return(0,e.v7)(a.worktreeId,a.cliToolId,a.instanceId)}function n(a){return{sessionId:null,turnMessageId:null,files:[],filesAt:null,revertedFiles:[],revertedMessageId:null,at:a}}function o(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function p(a,b){let c=a[b];return"string"!=typeof c||0===c.length?null:c.slice(0,128)}function q(a,b,c){let d=m(a),e=k.get(d)??n(c),f=function(a){if("message.updated"!==a.type)return null;let b=o(a.properties)?a.properties:null,c=b&&o(b.info)?b.info:null;if(!c||"user"!==c.role)return null;let d=p(c,"id");return d?{sessionId:p(c,"sessionID"),messageId:d}:null}(b);if(f){if(f.messageId===e.turnMessageId)return;k.set(d,{...e,sessionId:f.sessionId??e.sessionId,turnMessageId:f.messageId,files:[],filesAt:null,at:c});return}let g=function(a){let b=a.type,c=o(a.properties)?a.properties:null;if(!c)return null;if("session.diff"===b)return{kind:"files",sessionId:p(c,"sessionID"),files:(0,h.M)(c.diff)};if("session.updated"===b){let a=o(c.info)?c.info:null;if(!a||"string"==typeof a.parentID&&a.parentID.length>0)return null;let b=o(a.revert)?a.revert:null;return{kind:"held",sessionId:p(a,"id"),messageId:b?p(b,"messageID"):null}}return null}(b);if(g){if("files"===g.kind)return void k.set(d,{...e,sessionId:g.sessionId??e.sessionId,revertedFiles:g.files,at:c});k.set(d,{...e,sessionId:g.sessionId??e.sessionId,revertedMessageId:g.messageId,revertedFiles:null===g.messageId?[]:e.revertedFiles,at:c})}}function r(a,b,c){return b!==f.k?null:k.get((0,e.v7)(a,b,c))??null}function s(a){let b=m(a);k.delete(b),l.delete(b)}function t(a){if(a.cliToolId!==f.k)return null;let b=m(a),c=k.get(b);if(!c)return null;if(null!==c.filesAt||null===c.sessionId||null===c.turnMessageId||l.has(b))return c;let d=(0,g.hC)(a);return null===d||(l.add(b),u(a,d,c.sessionId,c.turnMessageId).finally(()=>{l.delete(b)})),c}async function u(a,b,c,d){let e=await (0,h.iv)(b,c,d);if(null===e)return j.debug("opencode-turn-diff-unavailable",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,sessionId:c}),null;let f=m(a),g=k.get(f);return g&&g.turnMessageId===d&&k.set(f,{...g,files:e,filesAt:Date.now()}),e}function v(a,b,c){let d=m(a),e=Date.now(),f=k.get(d)??n(e);k.set(d,{...f,revertedMessageId:b,revertedFiles:c,at:e})}function w(a,b){let c=r(a,f.k,b);if(!c)return null;let d=new Set;for(let a of[...c.files,...c.revertedFiles])null!==a.file&&d.add(a.file);let e=[...c.files,...c.revertedFiles].filter(a=>null===a.file).length;return d.size+e}},75356:(a,b,c)=>{c.d(b,{C8:()=>h,Dp:()=>o,Jd:()=>l,Mn:()=>q,Tm:()=>g,Zu:()=>p,aF:()=>f,lu:()=>t,oG:()=>r,pV:()=>k,vE:()=>i});var d=c(62887),e=c(57510);let f="permission_prompt",g="question_prompt",h=d.KC,i="error";function j(a){return(0,e.Qd)(a.properties)?a.properties:{}}function k(a){let b=j(a).info;return(0,e.Qd)(b)?(0,e.NZ)(b,["model","modelID"])??(0,e.NZ)(b,["model","id"]):null}function l(a){let b=j(a).info;return(0,e.Qd)(b)?(0,e.NZ)(b,["model","variant"])??(0,e.NZ)(b,["variant"]):null}function m(a){return(0,e.NZ)(j(a),["part","state","status"])}function n(a){return"tool"===(0,e.NZ)(j(a),["part","type"])}function o(a){return(0,e.NZ)(j(a),["part","tool"])}function p(a){return(0,e.NZ)(j(a),["part","callID"])}function q(a){return(0,e.NZ)(j(a),["requestID"])}function r(a){let b=j(a);switch((0,e.NZ)(a,["type"])){case"permission.asked":case"question.asked":return(0,e.hY)((0,e.NZ)(b,["id"]));case"permission.replied":return(0,e.hY)(q(a));case"message.updated":return(0,e.hY)((0,e.NZ)(b,["info","id"]));case"message.part.updated":return(0,e.hY)(p(a));default:return null}}let s=["completed","error"],t=[(0,e.KR)("session.idle","stop"),(0,e.KR)("session.created","session_start"),(0,e.KR)("session.deleted","session_end"),(a,b)=>"message.updated"===a&&"user"===(0,e.NZ)(j(b),["info","role"])?{event:"user_prompt_submit"}:null,(a,b)=>"message.part.updated"===a&&n(b)&&"running"===m(b)?{event:"pre_tool_use",detail:(0,e.Wv)(o(b)),toolCallId:p(b)}:null,(a,b)=>"message.part.updated"===a&&n(b)&&s.includes(m(b)??"")?{event:"post_tool_use",detail:(0,e.Wv)(o(b)),toolCallId:p(b)}:null,(0,e.KR)("permission.asked","notification",f),(0,e.KR)("question.asked","notification",g),(0,e.KR)("session.error","notification",i),(0,e.KR)("permission.replied","notification",h)].map(function(a){return(b,c)=>{let d=a(b,c);return d?{...d,conversationId:d.conversationId??(0,e.NZ)(j(c),["sessionID"])}:null}})},86594:(a,b,c)=>{function d(a){return`oc-turn:${a}`}function e(a){return`claude-turn:${a}`}function f(a){return`claude-prompt:${a}`}c.d(b,{Ac:()=>j,H_:()=>f,O1:()=>k,ST:()=>g,TW:()=>n,Wr:()=>h,ZS:()=>i,jN:()=>l,jT:()=>d,qe:()=>e,sT:()=>m});let g="partial:";function h(a,b){return`${g}${a}:${b}`}function i(a){return`codex-turn:${a}`}function j(a){return`codex-prompt:${a}`}function k(a,b){return`antigravity-turn:${a}#${b}`}function l(a,b){return`antigravity-prompt:${a}#${b}`}function m(a){return`command-code-turn:${a}`}function n(a){return`command-code-prompt:${a}`}},90488:(a,b,c)=>{c.d(b,{BF:()=>j,Vo:()=>h,dJ:()=>i});let d=(0,c(72626).h)("lib/hooks/sources/opencode/push");async function e(a){try{let[{getDbInstance:b},{getWorktreeById:d}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,56791))]);return d(b(),a)?.name??a}catch{return a}}async function f(){return Promise.all([c.e(1356),c.e(1191)]).then(c.bind(c,61191))}async function g(a,b){return{worktreeId:a.worktreeId,worktreeName:await e(a.worktreeId),instanceId:b}}async function h(a,b,c,e){try{let{notifyPushSubscribers:h,buildExcerpt:i}=await f(),j=await g(a,b);await h({...j,kind:"prompt",agentName:b,waitingKind:"prompt",waitingSince:e,excerpt:i(c??void 0,80)},e),d.info("opencode-question-push-sent",{worktreeId:a.worktreeId,instanceId:b,hasQuestion:null!==c})}catch(c){d.warn("opencode-question-push-failed",{worktreeId:a.worktreeId,instanceId:b,error:c instanceof Error?c.message:String(c)})}}async function i(a,b,c,e,h,i){if("MessageAbortedError"===c)return void d.info("opencode-error-push-skipped-interrupt",{worktreeId:a.worktreeId,instanceId:b,errorName:c});try{let{notifyPushSubscribers:j,buildExcerpt:k}=await f(),l=await g(a,b);await j({...l,kind:"failure",agentName:b,excerpt:k(e??void 0,80),failure:{reason:"agent-session-error",signature:`opencode:session-error:${h??"unknown"}:${c??"unknown"}`}},i),d.info("opencode-error-push-sent",{worktreeId:a.worktreeId,instanceId:b,errorName:c,sessionId:h})}catch(c){d.warn("opencode-error-push-failed",{worktreeId:a.worktreeId,instanceId:b,error:c instanceof Error?c.message:String(c)})}}async function j(a,b,c,e){try{let{notifyPushSubscribers:h}=await f(),i=await g(a,b);await h({...i,kind:"completion",agentName:b,excerpt:c,updateAvailable:{agent:b,version:c}},e),d.info("opencode-update-push-sent",{worktreeId:a.worktreeId,instanceId:b,version:c})}catch(c){d.warn("opencode-update-push-failed",{worktreeId:a.worktreeId,instanceId:b,error:c instanceof Error?c.message:String(c)})}}},98211:(a,b,c)=>{c.d(b,{AB:()=>m,FZ:()=>i,LF:()=>l,Lu:()=>k,XL:()=>g,v1:()=>j});var d=c(2466),e=c(57510);let f=(0,c(36925).v)("__opencodeToolCallNames",()=>new Map);function g(a,b){for(f.delete(a),f.set(a,b);f.size>256;){let a=f.keys().next();if(a.done)break;f.delete(a.value)}}function h(a){return"string"==typeof a.type&&(0,e.Qd)(a.properties)?a.properties:a}function i(a){var b;let c=h(a),d=(0,e.O2)(c,"id"),g=(0,e.O2)(c,"sessionID");if(!d||!g||Array.isArray(c.questions))return null;let i=(0,e.O2)(c,"permission"),j=(0,e.Qd)(c.metadata)?c.metadata:{};return{toolName:((b=(0,e.NZ)(c,["tool","callID"]))?f.get(b)??null:null)??i??"permission",toolInput:{permission:i,patterns:Array.isArray(c.patterns)?c.patterns:[],...j},promptId:d,sessionId:g,permissionMode:null,permissionSuggestions:Array.isArray(c.always)?c.always:null}}function j(a){let b=h(a),c=(0,e.O2)(b,"id");if(!c)return null;let f=(0,d.u_)({questions:b.questions});return null===f?null:{questions:f,promptId:c}}function k(a,b){let c=i(a);return c&&c.promptId?{kind:"permission",id:c.promptId,conversationId:c.sessionId,subject:{kind:"permission",toolName:c.toolName,toolInput:c.toolInput},raw:a,askedAt:b}:null}function l(a,b){let c=k(a,b);if(!c||"permission"!==c.subject.kind)return null;let d=c.subject.toolInput.patterns;return{toolName:c.subject.toolName,patterns:Array.isArray(d)?d:[]}}function m(a,b){let c=h(a),d=(0,e.O2)(c,"id"),f=j(a);return d&&f?{kind:"question",id:d,conversationId:(0,e.O2)(c,"sessionID"),subject:{kind:"question",spec:f},raw:a,askedAt:b}:null}},98322:(a,b,c)=>{c.d(b,{JZ:()=>m,Pv:()=>f,QT:()=>i,TB:()=>j,ZG:()=>h,ed:()=>n,lp:()=>g,yG:()=>k});var d=c(57510),e=c(27128);let f="parentID";function g(a,b,c){return{sessionId:a,userMessageId:b,parts:new Map,assistantMessageIds:new Set,startedAt:c,overflowed:!1}}function h(a,b){a.assistantMessageIds.add(b)}function i(a,b){return a.assistantMessageIds.has(b)}function j(a){if(!(0,d.Qd)(a))return null;let b=(0,d.O2)(a,"id"),c=(0,d.O2)(a,"messageID"),e=(0,d.O2)(a,"type");if(!b||!c||!e)return null;let f=(0,d.Qd)(a.state)?a.state:null;return{id:b,messageId:c,type:e,text:"string"==typeof a.text?a.text:null,tool:(0,d.O2)(a,"tool"),status:f?(0,d.O2)(f,"status"):null,title:f?(0,d.O2)(f,"title"):null,error:f?(0,d.O2)(f,"error")??(0,d.NZ)(f,["error","message"]):null}}function k(a,b){return!a.parts.has(b.id)&&a.parts.size>=512?(a.overflowed=!0,!1):(a.parts.set(b.id,b),!0)}let l=new Set(["step-start","step-finish","snapshot","patch"]);function m(a){let b=[],c=new Set,d=0,f=0;for(let g of a.parts.values()){if("text"===g.type){let a=g.text?.trim()??"";if(0===a.length)continue;b.push({kind:"prose",text:a}),d+=1;continue}if("reasoning"===g.type){let a=g.text?.trim()??"";if(0===a.length)continue;b.push({kind:"reasoning",text:a});continue}if("tool"===g.type){if("pending"===g.status)continue;b.push({kind:"tool",text:function(a){let b=a.tool??"tool",c=a.title??null,d="error"===a.status,f=`- \`${b}\`${c?` — ${(0,e.PB)(c)}`:""}`;return d?a.error?`${f} _(error: ${(0,e.PB)(a.error)})_`:`${f} _(error)_`:f}(g)}),f+=1;continue}l.has(g.type)||c.add(g.type)}let g=(0,e.t3)(b),h=g.body;return h=(0,e.mg)(h,2e5,"\n\n_(truncated)_"),{sessionId:a.sessionId,userMessageId:a.userMessageId,body:h,textParts:d,toolParts:f,reasoningParts:g.reasoningBlocks,unknownPartTypes:[...c]}}function n(a,b){if(!Array.isArray(a))return[];let c=new Map;for(let e of a){if(!(0,d.Qd)(e))continue;let a=(0,d.Qd)(e.info)?e.info:null;if(!a||"assistant"!==a.role)continue;let l=(0,d.O2)(a,f);if(!l)continue;let m=function(a,b){let c=a;for(let a of b){if(!(0,d.Qd)(c))return null;c=c[a]}return"number"==typeof c&&Number.isFinite(c)?c:null}(a,["time","created"])??0,n=c.get(l);n||(n=g(b,l,m),c.set(l,n));let o=(0,d.O2)(a,"id");for(let a of(o&&h(n,o),Array.isArray(e.parts)?e.parts:[])){let b=j(a);b&&i(n,b.messageId)&&k(n,b)}}return[...c.values()]}}};
|
|
2
|
+
`,{mode:384})}catch(a){m.warn("opencode-launch-settings-write-failed",{path:b,error:a instanceof Error?a.message:String(a)})}}function s(a){let b=o(a),c=n.get(b);if(c)return c;let d=q()[b];return d?(n.set(b,d),d):{...k.gF}}function t(a,b){let c=o(a),d=(0,k.ZH)(b??{}),e=q();return(0,k.Mj)(d)?(n.set(c,d),e[c]=d,r(e)):(n.delete(c),c in e&&(delete e[c],r(e))),d}function u(a){let b=(0,k.ZH)(a??{}),c=[];b.agent&&c.push(`--agent ${(0,j.ZL)(b.agent)}`);let d=(0,k.sw)(b);return d&&c.push(`--model ${(0,j.ZL)(d)}`),c.length>0?` ${c.join(" ")}`:""}function v(a){let b=(0,k.ZH)(a??{}),c={};return b.agent&&(c.agent=b.agent),b.providerId&&b.modelId&&(c.model={providerID:b.providerId,modelID:b.modelId}),b.variant&&(c.variant=b.variant),Object.keys(c).length>0?c:null}},27128:(a,b,c)=>{function d(a){return a.replace(/\s+/g," ").trim()}function e(a,b){return a.length<=b?a:`${a.slice(0,b-1)}…`}function f(a,b,c){return a.length<=b?a:a.slice(0,b-c.length)+c}function g(a){return a.split("\n").map(a=>a.length>0?`> ${a}`:">").join("\n")}function h(a){let b=[],c=[],d=[];for(let e of a)0!==e.text.length&&("tool"===e.kind?d.push(e.text):"reasoning"===e.kind?c.push(e.text):b.push(e.text));let e=b.join("\n\n"),f=0===c.length?"":[`> **Thinking (${c.length})**`,">",c.map(g).join("\n>\n")].join("\n"),h=0===d.length?"":[`> **Tool calls (${d.length})**`,">",...d.map(g)].join("\n");return{body:[e,f,h].filter(a=>a.length>0).join("\n\n"),prose:e,reasoningLog:f,reasoningBlocks:c.length,toolLog:h,toolCalls:d.length}}c.d(b,{PB:()=>d,Wv:()=>e,mg:()=>f,t3:()=>h})},33198:(a,b,c)=>{c.d(b,{FN:()=>S,lf:()=>K,ym:()=>O,hS:()=>M,f4:()=>N,wb:()=>J,bP:()=>Q,yn:()=>L,H1:()=>P});var d=c(72626),e=c(24455),f=c(3161),g=c(95375),h=c(27939),i=c(62171),j=c(57510),k=c(49791),l=c(86594),m=c(98322),n=c(36925);let o=(0,d.h)("lib/hooks/sources/opencode/history"),p=(0,n.v)("__opencodeTranscripts",()=>new Map);function q(a){return(0,e.v7)(a.worktreeId,a.cliToolId,a.instanceId)}function r(a){let b=q(a),c=p.get(b);return c||(c=new Map,p.set(b,c)),c}async function s(a,b){try{let{emitChatTurnProgress:d}=await Promise.all([c.e(1356),c.e(1503),c.e(1634),c.e(1191),c.e(8791),c.e(7491),c.e(1719),c.e(3505),c.e(2119),c.e(2445),c.e(3480),c.e(252),c.e(8800),c.e(7905),c.e(255),c.e(9731),c.e(8728),c.e(1601),c.e(6119),c.e(720),c.e(8918),c.e(1656),c.e(9130)]).then(c.bind(c,55283));await d({worktreeId:a.worktreeId,cliToolId:a.cliToolId,instanceId:a.instanceId??a.cliToolId},()=>{let a=(0,m.JZ)(b);return 0===a.body.length?null:{turnKey:(0,l.jT)(a.userMessageId),body:a.body,partial:!1}})}catch(b){o.debug("opencode-transcript-progress-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,error:b instanceof Error?b.message:String(b)})}}function t(a){return"number"==typeof a&&Number.isFinite(a)?a:null}async function u(a,b,c=Date.now()){let d=p.get(q(a)),e=d?.get(b);return!!e&&!!d&&(d.delete(b),v(a,(0,m.JZ)(e),Math.max(e.startedAt,c),"stream"))}async function v(a,b,d,e){let f=a.instanceId??a.cliToolId;try{if(0===b.body.length)return o.info("opencode-transcript-turn-empty",{worktreeId:a.worktreeId,instanceId:f,sessionId:b.sessionId,origin:e}),!1;b.unknownPartTypes.length>0&&o.info("opencode-transcript-unknown-parts",{worktreeId:a.worktreeId,instanceId:f,sessionId:b.sessionId,partTypes:b.unknownPartTypes});let g=(0,l.jT)(b.userMessageId),[{getDbInstance:h},{createMessage:i,findMessageByRequestId:j},{broadcastMessage:k}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,56791)),Promise.all([c.e(1356),c.e(1503),c.e(1191),c.e(8791),c.e(7491),c.e(1719),c.e(3505),c.e(2119),c.e(2445),c.e(8728)]).then(c.bind(c,43015))]),m=h();if(j(m,a.worktreeId,g))return o.debug("opencode-transcript-turn-already-saved",{worktreeId:a.worktreeId,instanceId:f,requestId:g,origin:e}),!1;let n=i(m,{worktreeId:a.worktreeId,role:"assistant",content:b.body,messageType:"normal",timestamp:new Date(d>0?d:Date.now()),cliToolId:a.cliToolId,instanceId:f,requestId:g});return k("message",{worktreeId:a.worktreeId,message:n}),o.info("opencode-transcript-turn-saved",{worktreeId:a.worktreeId,instanceId:f,sessionId:b.sessionId,requestId:g,origin:e,bodyLength:b.body.length,textParts:b.textParts,toolParts:b.toolParts}),!0}catch(c){return o.error("opencode-transcript-write-failed",{worktreeId:a.worktreeId,instanceId:f,sessionId:b.sessionId,origin:e,error:c instanceof Error?c.message:String(c)}),!1}}async function w(a,b,c){let d=a.instanceId??a.cliToolId;try{let e=await (0,k.EI)(b,c);if(null===e)return o.info("opencode-transcript-backfill-unavailable",{worktreeId:a.worktreeId,instanceId:d,port:b,sessionId:c}),0;let f=(0,m.ed)(e,c),g=[...f].sort((a,b)=>b.startedAt-a.startedAt),h=g.slice(0,50);g.length>h.length&&o.warn("opencode-transcript-backfill-truncated",{worktreeId:a.worktreeId,instanceId:d,sessionId:c,examined:h.length,skipped:g.length-h.length,limit:50});let i=function(a){let b=new Map;if(!Array.isArray(a))return b;for(let c of a){if(!(0,j.Qd)(c))continue;let a=(0,j.Qd)(c.info)?c.info:null;if(!a||"assistant"!==a.role)continue;let d=(0,j.O2)(a,m.Pv);if(!d)continue;let e=(0,j.Qd)(a.time)?a.time:null,f=t(e?.completed)??t(e?.created)??null;null!==f&&f>(b.get(d)??0)&&b.set(d,f)}return b}(e),l=0;for(let b of[...h].reverse())await v(a,(0,m.JZ)(b),Math.max(b.startedAt,i.get(b.userMessageId)??0),"backfill")&&(l+=1);return o.info("opencode-transcript-backfill-done",{worktreeId:a.worktreeId,instanceId:d,port:b,sessionId:c,turns:f.length,written:l}),l}catch(e){return o.error("opencode-transcript-backfill-failed",{worktreeId:a.worktreeId,instanceId:d,port:b,sessionId:c,error:e instanceof Error?e.message:String(e)}),0}}var x=c(75356),y=c(98211),z=c(90488),A=c(84574);function B(a){let b=(0,j.Qd)(a.properties)?a.properties:{};return(0,j.NZ)(b,["sessionID"])}function C(a,b){for(;a.size>b;){let b=a.keys().next();if(b.done)break;a.delete(b.value)}}let D=(0,d.h)("lib/hooks/sources/opencode/subscription"),E=[1e3,2e3,4e3,8e3,15e3,3e4],F=(0,n.v)("__opencodeSubscriptions",()=>new Map),G=(0,n.v)("__opencodeDroppedLiveness",()=>new Map),H=(0,n.v)("__opencodeProbedActivity",()=>new Map);function I(a){return(0,e.v7)(a.worktreeId,a.cliToolId,a.instanceId)}function J(a){return F.has(I(a))}function K(a){let b=I(a);return F.get(b)?.liveness??G.get(b)??{state:"unknown"}}function L(a,b,c){H.set(I(a),{activity:b,at:c})}function M(a){return H.get(I(a))??null}function N(a){return"live"===K(a).state}function O(a){return F.get(I(a))?.gate.primarySession()??null}function P(a,b,c){let d=F.get(I(a));if(!d)return{seen:Promise.resolve(!1),cancel:()=>{}};let e=()=>{},f=new Promise(a=>{e=a}),g=d.idleWaiters.get(b)??new Set;d.idleWaiters.set(b,g);let h=null,i=a=>{g.delete(i)&&(0===g.size&&d.idleWaiters.delete(b),null!==h&&clearTimeout(h),e(a))};return g.add(i),h=setTimeout(()=>i(!1),c),h.unref?.(),{seen:f,cancel:()=>i(!1)}}async function Q(a,b,c,d={}){let e=I(a),f=F.get(e);if(f)return R(f);G.delete(e),H.delete(e);let g=d.port??(0,A.hC)(a);if(null===g)return D.info("opencode-subscription-skipped-no-port",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId}),{close:async()=>{},liveness:{state:"unknown"}};let h={key:e,target:a,port:g,onEvent:b,normalize:c,gate:function(a=64,b=512,c=64){let d=new Map,e=new Set,f=new Set,g=null,h=(b,c)=>{d.delete(b),d.set(b,c),C(d,a)},i=()=>null!==g&&"busy"===d.get(g),k=a=>{var b;h(a,"busy"),b=a,!f.has(b)&&g!==b&&(i()||(g=b))};return{observe(a,l){let m=function(a){let b=(0,j.Qd)(a.properties)?a.properties:{},c=(0,j.Qd)(b.info)?b.info:null;return null!==c&&(0,j.NZ)(c,["parentID"])?(0,j.NZ)(c,["id"])??(0,j.NZ)(b,["sessionID"]):null}(l);if(null!==m&&(f.add(m),C(f,c),g===m&&(g=null)),"message.updated"===a){let{role:a,id:c}=function(a){let b=(0,j.Qd)(a.properties)?a.properties:{};return{role:(0,j.NZ)(b,["info","role"]),id:(0,j.NZ)(b,["info","id"])}}(l);if("user"!==a||null===c)return{kind:"ignored"};let d=B(l)??"";return e.has(c)?{kind:"suppressed",sessionId:d,reason:"already-announced"}:(e.add(c),C(e,b),{kind:"announced",sessionId:d,messageId:c})}if("session.status"===a){if("busy"!==function(a){let b=(0,j.Qd)(a.properties)?a.properties:{};return(0,j.NZ)(b,["status","type"])}(l))return{kind:"ignored"};let a=B(l);return null===a?{kind:"ignored"}:(k(a),{kind:"armed",sessionId:a})}if("session.error"===a){let a=B(l);return null===a?{kind:"ignored"}:{kind:"failed",sessionId:a,errorName:function(a){let b=(0,j.Qd)(a.properties)?a.properties:{};return(0,j.NZ)(b,["error","name"])}(l)}}if("session.idle"!==a)return{kind:"ignored"};let n=B(l);if(null===n)return{kind:"ignored"};if(f.has(n)||null!==g&&n!==g&&i())return h(n,"idle"),{kind:"suppressed",sessionId:n,reason:"foreign-session"};let o=d.get(n);return void 0===o?{kind:"suppressed",sessionId:n,reason:"never-armed"}:"idle"===o?{kind:"suppressed",sessionId:n,reason:"already-completed"}:(h(n,"idle"),{kind:"completed",sessionId:n})},isArmed:a=>"busy"===d.get(a),arm(a){k(a)},armedSessions:()=>[...d.entries()].filter(([,a])=>"busy"===a).map(([a])=>a),primarySession:()=>g,reset(){d.clear(),g=null}}}(),resync:d.resync??"none",seenDecisions:new Set,idleWaiters:new Map,announcedUpdates:new Set,streamController:new AbortController,lifetimeController:new AbortController,serverVersion:null,liveness:{state:"unknown"},closed:!1,watchdog:null};return F.set(e,h),D.info("opencode-subscription-opened",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:g}),V(h),R(h)}function R(a){return{close:async()=>{await S(a.target)},get liveness(){return a.liveness}}}async function S(a){let b=I(a);G.delete(b),H.delete(b);let c=F.get(b);if(c){for(let a of(c.closed=!0,T(c),[...c.idleWaiters.values()]))for(let b of[...a])b(!1);c.idleWaiters.clear(),c.streamController.abort(),c.lifetimeController.abort(),F.delete(b),(0,f.cI)(a),p.delete(q(a)),(0,i.WC)(a),D.info("opencode-subscription-closed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,port:c.port})}}function T(a){null!==a.watchdog&&(clearTimeout(a.watchdog),a.watchdog=null)}function U(a){T(a);let b=setTimeout(()=>{a.closed||(D.warn("opencode-subscription-heartbeat-lost",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,port:a.port,afterMs:3e4}),a.streamController.abort())},3e4);b.unref?.(),a.watchdog=b}async function V(a){let b=0;for(;!a.closed;){a.streamController=new AbortController;let c=a.gate.armedSessions();a.gate.reset();let d="stream-ended";try{let e=await W(a);if(a.closed)break;if("changed"===e)return;if("unreachable"===e)d="health-unreachable";else{let d=await (0,k.mi)(a.port,a.streamController.signal);for await(let e of(a.liveness={state:"live",lastHeartbeatAt:Date.now()},U(a),await X(a),await Y(a,c),await Z(a),b=0,d))b=0,U(a),function(a,b){let c=(0,j.O2)(b,"type");("server.heartbeat"===c||"server.connected"===c)&&(a.liveness={state:"live",lastHeartbeatAt:Date.now()}),$(a,b,Date.now())}(a,e)}}catch(a){d=a instanceof Error?a.message:String(a)}finally{T(a)}if(a.closed)break;a.liveness={state:"lost",since:Date.now(),reason:d},D.warn("opencode-subscription-disconnected",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,port:a.port,reason:d,attempt:b}),await function(a,b){return new Promise(c=>{if(b.aborted)return void c();let d=()=>{clearTimeout(e),c()};b.addEventListener("abort",d,{once:!0});let e=setTimeout(()=>{b.removeEventListener("abort",d),c()},a);e.unref?.()})}(function(a){let b=Math.min(a,E.length-1);return E[b]}(b),a.lifetimeController.signal),b+=1}}async function W(a){var b,c;let d=await (0,k.sc)(a.port);if("healthy"!==d.kind)return D.info("opencode-subscription-health-unavailable",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,port:a.port,outcome:d.kind,status:"rejected"===d.kind?d.status:void 0}),"unreachable";let e=d.health.version;return null===a.serverVersion||null===e?(a.serverVersion??=e,"same"):e===a.serverVersion?"same":(b=a,c=e,D.warn("opencode-subscription-port-identity-changed",{worktreeId:b.target.worktreeId,instanceId:b.target.instanceId??b.target.cliToolId,port:b.port,reason:"port_identity_changed",expectedVersion:b.serverVersion,observedVersion:c}),b.closed=!0,T(b),b.streamController.abort(),b.lifetimeController.abort(),b.liveness={state:"lost",since:Date.now(),reason:"port_identity_changed"},F.delete(b.key),G.set(b.key,b.liveness),"changed")}async function X(a){let b=Date.now(),[c,d]=await Promise.all([(0,k.Li)(a.port),(0,k.er)(a.port)]),e=(c,d)=>{let e=c.slice(0,50);for(let f of(c.length>e.length&&D.warn("opencode-resync-truncated",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,type:d,examined:e.length,skipped:c.length-e.length,limit:50}),e)){let c=(0,j.O2)(f,"id");!c||a.seenDecisions.has(c)||$(a,{id:`resync_${c}`,type:d,properties:f},b)}};e(c,"permission.asked"),e(d,"question.asked")}async function Y(a,b){if("session-status-poll"!==a.resync)return;let c=await (0,k.mY)(a.port);if(null===c)return void D.info("opencode-resync-status-unavailable",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,port:a.port});let d=[];for(let[b,e]of Object.entries(c))"busy"===e&&(a.gate.arm(b),d.push(b));let e=[];for(let d of b)"idle"===c[d]&&(a.gate.arm(d),e.push(d),$(a,{id:`resync_idle_${d}`,type:"session.idle",properties:{sessionID:d}},Date.now()));(d.length>0||e.length>0)&&D.info("opencode-turn-state-recovered",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,port:a.port,rearmed:d,synthesized:e,primarySession:a.gate.primarySession()})}async function Z(a){try{let b=(0,h.KA)(a.target)?.sessionId??null,c=a.gate.primarySession()??b;if(!c)return;await w(a.target,a.port,c)}catch(b){D.warn("opencode-history-recovery-failed",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,port:a.port,error:b instanceof Error?b.message:String(b)})}}function $(a,b,c){var d,e;let h=(0,j.O2)(b,"type");if("message.part.updated"===h){let a=(0,x.Zu)(b),c=(0,x.Dp)(b);a&&c&&(0,y.XL)(a,c)}if("session.updated"===h){let d=(0,f.Tv)(b,c);d&&(0,f.G1)(a.target,d)}if(("session.updated"===h||"message.updated"===h)&&(0,g.recordAgentReportedEffort)(a.target.worktreeId,a.target.cliToolId,a.target.instanceId,(0,x.Jd)(b)),("message.updated"===h||"message.part.updated"===h)&&function(a,b,c){try{let d=(0,j.O2)(b,"type"),e=(0,j.Qd)(b.properties)?b.properties:{},f=(0,j.O2)(e,"sessionID");if(!f)return;if("message.updated"===d){let b=(0,j.Qd)(e.info)?e.info:null;if(!b||"assistant"!==b.role)return;let d=(0,j.O2)(b,"parentID");if(!d)return;let g=r(a),h=g.get(f),i=h?.userMessageId===d?h:(0,m.lp)(f,d,c);if(i!==h)for(h&&o.info("opencode-transcript-turn-superseded",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,sessionId:f,abandoned:h.userMessageId}),g.set(f,i);g.size>16;){let b=g.keys().next();if(b.done)break;g.delete(b.value),o.info("opencode-transcript-turn-evicted",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,sessionId:b.value,reason:"max-open-turns"})}let k=(0,j.O2)(b,"id");k&&(0,m.ZG)(i,k);return}if("message.part.updated"!==d)return;let g=(0,m.TB)(e.part);if(!g)return;let h=r(a).get(f);if(!h||!(0,m.QT)(h,g.messageId))return void o.debug("opencode-transcript-part-unattached",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,sessionId:f,partType:g.type,reason:h?"foreign-message":"no-open-turn"});(0,m.yG)(h,g)||o.warn("opencode-transcript-turn-overflow",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,sessionId:f,partType:g.type}),s(a,h)}catch(b){o.error("opencode-transcript-record-failed",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,error:b instanceof Error?b.message:String(b)})}}(a.target,b,c),("session.diff"===h||"session.updated"===h||"message.updated"===h)&&(0,i.hf)(a.target,b,c),"installation.update-available"===h&&function(a,b,c){let d=(0,j.Qd)(b.properties)?b.properties:{},e=(0,j.O2)(d,"version");if(e){if(a.announcedUpdates.has(e))return D.info("opencode-update-available-repeat-dropped",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,version:e});a.announcedUpdates.add(e),D.info("opencode-update-available",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,version:e}),(0,z.BF)(a.target,a.target.instanceId??a.target.cliToolId,e,c)}}(a,b,c),"session.idle"===h){let c=(0,j.O2)((0,j.Qd)(b.properties)?b.properties:{},"sessionID");if(c){let b=a.idleWaiters.get(c);if(b)for(let a of[...b])a(!0);u(a.target,c)}}let k=a.gate.observe(h,b);"failed"===k.kind&&D.warn("opencode-session-error",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,sessionId:k.sessionId,errorName:k.errorName});let l=null;try{l=a.normalize({payload:b,receivedAt:c})}catch(a){D.error("opencode-normalize-threw",{type:h,error:a instanceof Error?a.message:String(a)});return}if(!l)return;let n=(d=l.event,e=k,"stop"===d&&"completed"!==e.kind?"suppressed"===e.kind?e.reason:"not-a-turn-end":"user_prompt_submit"===d&&"announced"!==e.kind?"suppressed"===e.kind?e.reason:"not-a-new-prompt":null);if(null!==n)return void D.info("opencode-repeat-suppressed",{worktreeId:a.target.worktreeId,instanceId:a.target.instanceId??a.target.cliToolId,sessionId:l.conversationId,event:l.event,reason:n});!function(a,b){let c=(0,j.O2)(b,"type");if("permission.asked"!==c&&"question.asked"!==c)return;let d=(0,j.Qd)(b.properties)?b.properties:{},e=(0,j.O2)(d,"id");if(e)for(a.seenDecisions.add(e);a.seenDecisions.size>256;){let b=a.seenDecisions.values().next();if(b.done)break;a.seenDecisions.delete(b.value)}}(a,b);try{a.onEvent(l)}catch(a){D.error("opencode-event-handler-failed",{type:h,error:a instanceof Error?a.message:String(a)})}}},62171:(a,b,c)=>{c.d(b,{HL:()=>r,WC:()=>s,hf:()=>q,ki:()=>v,pw:()=>w,rn:()=>t,t2:()=>u});var d=c(72626),e=c(24455),f=c(85322),g=c(84574),h=c(49791),i=c(36925);let j=(0,d.h)("lib/hooks/sources/opencode/diff"),k=(0,i.v)("__opencodeSessionDiff",()=>new Map),l=(0,i.v)("__opencodeSessionDiffRefreshes",()=>new Set);function m(a){return(0,e.v7)(a.worktreeId,a.cliToolId,a.instanceId)}function n(a){return{sessionId:null,turnMessageId:null,files:[],filesAt:null,revertedFiles:[],revertedMessageId:null,at:a}}function o(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function p(a,b){let c=a[b];return"string"!=typeof c||0===c.length?null:c.slice(0,128)}function q(a,b,c){let d=m(a),e=k.get(d)??n(c),f=function(a){if("message.updated"!==a.type)return null;let b=o(a.properties)?a.properties:null,c=b&&o(b.info)?b.info:null;if(!c||"user"!==c.role)return null;let d=p(c,"id");return d?{sessionId:p(c,"sessionID"),messageId:d}:null}(b);if(f){if(f.messageId===e.turnMessageId)return;k.set(d,{...e,sessionId:f.sessionId??e.sessionId,turnMessageId:f.messageId,files:[],filesAt:null,at:c});return}let g=function(a){let b=a.type,c=o(a.properties)?a.properties:null;if(!c)return null;if("session.diff"===b)return{kind:"files",sessionId:p(c,"sessionID"),files:(0,h.M)(c.diff)};if("session.updated"===b){let a=o(c.info)?c.info:null;if(!a||"string"==typeof a.parentID&&a.parentID.length>0)return null;let b=o(a.revert)?a.revert:null;return{kind:"held",sessionId:p(a,"id"),messageId:b?p(b,"messageID"):null}}return null}(b);if(g){if("files"===g.kind)return void k.set(d,{...e,sessionId:g.sessionId??e.sessionId,revertedFiles:g.files,at:c});k.set(d,{...e,sessionId:g.sessionId??e.sessionId,revertedMessageId:g.messageId,revertedFiles:null===g.messageId?[]:e.revertedFiles,at:c})}}function r(a,b,c){return b!==f.k?null:k.get((0,e.v7)(a,b,c))??null}function s(a){let b=m(a);k.delete(b),l.delete(b)}function t(a){if(a.cliToolId!==f.k)return null;let b=m(a),c=k.get(b);if(!c)return null;if(null!==c.filesAt||null===c.sessionId||null===c.turnMessageId||l.has(b))return c;let d=(0,g.hC)(a);return null===d||(l.add(b),u(a,d,c.sessionId,c.turnMessageId).finally(()=>{l.delete(b)})),c}async function u(a,b,c,d){let e=await (0,h.iv)(b,c,d);if(null===e)return j.debug("opencode-turn-diff-unavailable",{worktreeId:a.worktreeId,instanceId:a.instanceId??a.cliToolId,sessionId:c}),null;let f=m(a),g=k.get(f);return g&&g.turnMessageId===d&&k.set(f,{...g,files:e,filesAt:Date.now()}),e}function v(a,b,c){let d=m(a),e=Date.now(),f=k.get(d)??n(e);k.set(d,{...f,revertedMessageId:b,revertedFiles:c,at:e})}function w(a,b){let c=r(a,f.k,b);if(!c)return null;let d=new Set;for(let a of[...c.files,...c.revertedFiles])null!==a.file&&d.add(a.file);let e=[...c.files,...c.revertedFiles].filter(a=>null===a.file).length;return d.size+e}},75356:(a,b,c)=>{c.d(b,{C8:()=>h,Dp:()=>o,Jd:()=>l,Mn:()=>q,Tm:()=>g,Zu:()=>p,aF:()=>f,lu:()=>t,oG:()=>r,pV:()=>k,vE:()=>i});var d=c(62887),e=c(57510);let f="permission_prompt",g="question_prompt",h=d.KC,i="error";function j(a){return(0,e.Qd)(a.properties)?a.properties:{}}function k(a){let b=j(a).info;return(0,e.Qd)(b)?(0,e.NZ)(b,["model","modelID"])??(0,e.NZ)(b,["model","id"]):null}function l(a){let b=j(a).info;return(0,e.Qd)(b)?(0,e.NZ)(b,["model","variant"])??(0,e.NZ)(b,["variant"]):null}function m(a){return(0,e.NZ)(j(a),["part","state","status"])}function n(a){return"tool"===(0,e.NZ)(j(a),["part","type"])}function o(a){return(0,e.NZ)(j(a),["part","tool"])}function p(a){return(0,e.NZ)(j(a),["part","callID"])}function q(a){return(0,e.NZ)(j(a),["requestID"])}function r(a){let b=j(a);switch((0,e.NZ)(a,["type"])){case"permission.asked":case"question.asked":return(0,e.hY)((0,e.NZ)(b,["id"]));case"permission.replied":return(0,e.hY)(q(a));case"message.updated":return(0,e.hY)((0,e.NZ)(b,["info","id"]));case"message.part.updated":return(0,e.hY)(p(a));default:return null}}let s=["completed","error"],t=[(0,e.KR)("session.idle","stop"),(0,e.KR)("session.created","session_start"),(0,e.KR)("session.deleted","session_end"),(a,b)=>"message.updated"===a&&"user"===(0,e.NZ)(j(b),["info","role"])?{event:"user_prompt_submit"}:null,(a,b)=>"message.part.updated"===a&&n(b)&&"running"===m(b)?{event:"pre_tool_use",detail:(0,e.Wv)(o(b)),toolCallId:p(b)}:null,(a,b)=>"message.part.updated"===a&&n(b)&&s.includes(m(b)??"")?{event:"post_tool_use",detail:(0,e.Wv)(o(b)),toolCallId:p(b)}:null,(0,e.KR)("permission.asked","notification",f),(0,e.KR)("question.asked","notification",g),(0,e.KR)("session.error","notification",i),(0,e.KR)("permission.replied","notification",h)].map(function(a){return(b,c)=>{let d=a(b,c);return d?{...d,conversationId:d.conversationId??(0,e.NZ)(j(c),["sessionID"])}:null}})},86594:(a,b,c)=>{function d(a){return`oc-turn:${a}`}function e(a){return`claude-turn:${a}`}function f(a){return`claude-prompt:${a}`}c.d(b,{Ac:()=>j,H_:()=>f,O1:()=>k,ST:()=>g,TW:()=>n,Wr:()=>h,ZS:()=>i,jN:()=>l,jT:()=>d,qe:()=>e,sT:()=>m});let g="partial:";function h(a,b){return`${g}${a}:${b}`}function i(a){return`codex-turn:${a}`}function j(a){return`codex-prompt:${a}`}function k(a,b){return`antigravity-turn:${a}#${b}`}function l(a,b){return`antigravity-prompt:${a}#${b}`}function m(a){return`command-code-turn:${a}`}function n(a){return`command-code-prompt:${a}`}},90488:(a,b,c)=>{c.d(b,{BF:()=>j,Vo:()=>h,dJ:()=>i});let d=(0,c(72626).h)("lib/hooks/sources/opencode/push");async function e(a){try{let[{getDbInstance:b},{getWorktreeById:d}]=await Promise.all([Promise.resolve().then(c.bind(c,88807)),Promise.resolve().then(c.bind(c,56791))]);return d(b(),a)?.name??a}catch{return a}}async function f(){return Promise.all([c.e(1356),c.e(1191)]).then(c.bind(c,61191))}async function g(a,b){return{worktreeId:a.worktreeId,worktreeName:await e(a.worktreeId),instanceId:b}}async function h(a,b,c,e){try{let{notifyPushSubscribers:h,buildExcerpt:i}=await f(),j=await g(a,b);await h({...j,kind:"prompt",agentName:b,waitingKind:"prompt",waitingSince:e,excerpt:i(c??void 0,80)},e),d.info("opencode-question-push-sent",{worktreeId:a.worktreeId,instanceId:b,hasQuestion:null!==c})}catch(c){d.warn("opencode-question-push-failed",{worktreeId:a.worktreeId,instanceId:b,error:c instanceof Error?c.message:String(c)})}}async function i(a,b,c,e,h,i){if("MessageAbortedError"===c)return void d.info("opencode-error-push-skipped-interrupt",{worktreeId:a.worktreeId,instanceId:b,errorName:c});try{let{notifyPushSubscribers:j,buildExcerpt:k}=await f(),l=await g(a,b);await j({...l,kind:"failure",agentName:b,excerpt:k(e??void 0,80),failure:{reason:"agent-session-error",signature:`opencode:session-error:${h??"unknown"}:${c??"unknown"}`}},i),d.info("opencode-error-push-sent",{worktreeId:a.worktreeId,instanceId:b,errorName:c,sessionId:h})}catch(c){d.warn("opencode-error-push-failed",{worktreeId:a.worktreeId,instanceId:b,error:c instanceof Error?c.message:String(c)})}}async function j(a,b,c,e){try{let{notifyPushSubscribers:h}=await f(),i=await g(a,b);await h({...i,kind:"completion",agentName:b,excerpt:c,updateAvailable:{agent:b,version:c}},e),d.info("opencode-update-push-sent",{worktreeId:a.worktreeId,instanceId:b,version:c})}catch(c){d.warn("opencode-update-push-failed",{worktreeId:a.worktreeId,instanceId:b,error:c instanceof Error?c.message:String(c)})}}},98211:(a,b,c)=>{c.d(b,{AB:()=>m,FZ:()=>i,LF:()=>l,Lu:()=>k,XL:()=>g,v1:()=>j});var d=c(2466),e=c(57510);let f=(0,c(36925).v)("__opencodeToolCallNames",()=>new Map);function g(a,b){for(f.delete(a),f.set(a,b);f.size>256;){let a=f.keys().next();if(a.done)break;f.delete(a.value)}}function h(a){return"string"==typeof a.type&&(0,e.Qd)(a.properties)?a.properties:a}function i(a){var b;let c=h(a),d=(0,e.O2)(c,"id"),g=(0,e.O2)(c,"sessionID");if(!d||!g||Array.isArray(c.questions))return null;let i=(0,e.O2)(c,"permission"),j=(0,e.Qd)(c.metadata)?c.metadata:{};return{toolName:((b=(0,e.NZ)(c,["tool","callID"]))?f.get(b)??null:null)??i??"permission",toolInput:{permission:i,patterns:Array.isArray(c.patterns)?c.patterns:[],...j},promptId:d,sessionId:g,permissionMode:null,permissionSuggestions:Array.isArray(c.always)?c.always:null}}function j(a){let b=h(a),c=(0,e.O2)(b,"id");if(!c)return null;let f=(0,d.u_)({questions:b.questions});return null===f?null:{questions:f,promptId:c}}function k(a,b){let c=i(a);return c&&c.promptId?{kind:"permission",id:c.promptId,conversationId:c.sessionId,subject:{kind:"permission",toolName:c.toolName,toolInput:c.toolInput},raw:a,askedAt:b}:null}function l(a,b){let c=k(a,b);if(!c||"permission"!==c.subject.kind)return null;let d=c.subject.toolInput.patterns;return{toolName:c.subject.toolName,patterns:Array.isArray(d)?d:[]}}function m(a,b){let c=h(a),d=(0,e.O2)(c,"id"),f=j(a);return d&&f?{kind:"question",id:d,conversationId:(0,e.O2)(c,"sessionID"),subject:{kind:"question",spec:f},raw:a,askedAt:b}:null}},98322:(a,b,c)=>{c.d(b,{JZ:()=>m,Pv:()=>f,QT:()=>i,TB:()=>j,ZG:()=>h,ed:()=>n,lp:()=>g,yG:()=>k});var d=c(57510),e=c(27128);let f="parentID";function g(a,b,c){return{sessionId:a,userMessageId:b,parts:new Map,assistantMessageIds:new Set,startedAt:c,overflowed:!1}}function h(a,b){a.assistantMessageIds.add(b)}function i(a,b){return a.assistantMessageIds.has(b)}function j(a){if(!(0,d.Qd)(a))return null;let b=(0,d.O2)(a,"id"),c=(0,d.O2)(a,"messageID"),e=(0,d.O2)(a,"type");if(!b||!c||!e)return null;let f=(0,d.Qd)(a.state)?a.state:null;return{id:b,messageId:c,type:e,text:"string"==typeof a.text?a.text:null,tool:(0,d.O2)(a,"tool"),status:f?(0,d.O2)(f,"status"):null,title:f?(0,d.O2)(f,"title"):null,error:f?(0,d.O2)(f,"error")??(0,d.NZ)(f,["error","message"]):null}}function k(a,b){return!a.parts.has(b.id)&&a.parts.size>=512?(a.overflowed=!0,!1):(a.parts.set(b.id,b),!0)}let l=new Set(["step-start","step-finish","snapshot","patch"]);function m(a){let b=[],c=new Set,d=0,f=0;for(let g of a.parts.values()){if("text"===g.type){let a=g.text?.trim()??"";if(0===a.length)continue;b.push({kind:"prose",text:a}),d+=1;continue}if("reasoning"===g.type){let a=g.text?.trim()??"";if(0===a.length)continue;b.push({kind:"reasoning",text:a});continue}if("tool"===g.type){if("pending"===g.status)continue;b.push({kind:"tool",text:function(a){let b=a.tool??"tool",c=a.title??null,d="error"===a.status,f=`- \`${b}\`${c?` — ${(0,e.PB)(c)}`:""}`;return d?a.error?`${f} _(error: ${(0,e.PB)(a.error)})_`:`${f} _(error)_`:f}(g)}),f+=1;continue}l.has(g.type)||c.add(g.type)}let g=(0,e.t3)(b),h=g.body;return h=(0,e.mg)(h,2e5,"\n\n_(truncated)_"),{sessionId:a.sessionId,userMessageId:a.userMessageId,body:h,textParts:d,toolParts:f,reasoningParts:g.reasoningBlocks,unknownPartTypes:[...c]}}function n(a,b){if(!Array.isArray(a))return[];let c=new Map;for(let e of a){if(!(0,d.Qd)(e))continue;let a=(0,d.Qd)(e.info)?e.info:null;if(!a||"assistant"!==a.role)continue;let l=(0,d.O2)(a,f);if(!l)continue;let m=function(a,b){let c=a;for(let a of b){if(!(0,d.Qd)(c))return null;c=c[a]}return"number"==typeof c&&Number.isFinite(c)?c:null}(a,["time","created"])??0,n=c.get(l);n||(n=g(b,l,m),c.set(l,n));let o=(0,d.O2)(a,"id");for(let a of(o&&h(n,o),Array.isArray(e.parts)?e.parts:[])){let b=j(a);b&&i(n,b.messageId)&&k(n,b)}}return[...c.values()]}}};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=9627,exports.ids=[9627],exports.modules={3161:(a,b,c)=>{c.d(b,{G1:()=>i,Jl:()=>j,T9:()=>t,Tv:()=>o,Yv:()=>p,cI:()=>k,sI:()=>s,sc:()=>u});var d=c(24455),e=c(49791),f=c(84574),g=c(36925);let h=(0,g.v)("__agentSessionTelemetry",()=>new Map);function i(a,b){h.set((0,d.v7)(a.worktreeId,a.cliToolId,a.instanceId),b)}function j(a,b,c){return h.get((0,d.v7)(a,b,c))??null}function k(a){var b;h.delete((0,d.v7)(a.worktreeId,a.cliToolId,a.instanceId)),b=a,q.delete((0,d.v7)(b.worktreeId,b.cliToolId,b.instanceId))}function l(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function m(a,b,c){let d=a[b];return"string"!=typeof d||0===d.length?null:d.slice(0,c)}function n(a,b){let c=a[b];return"number"==typeof c&&Number.isFinite(c)?c:null}function o(a,b){let c=l(a.properties)?a.properties:null;return c?p(c.info,b):null}function p(a,b){let c=l(a)?a:null;if(!c||"string"==typeof c.parentID&&c.parentID.length>0)return null;let d=l(c.model)?c.model:{};return{id:m(c,"id",120),title:m(c,"title",200),agent:m(c,"agent",120),model:m(d,"id",120),provider:m(d,"providerID",120),cost:n(c,"cost"),tokens:function(a){let b=l(a.tokens)?a.tokens:null;if(!b)return{input:null,output:null,reasoning:null,cacheRead:null,cacheWrite:null,total:null};let c=l(b.cache)?b.cache:{};return{input:n(b,"input"),output:n(b,"output"),reasoning:n(b,"reasoning"),cacheRead:n(c,"read"),cacheWrite:n(c,"write"),total:n(b,"total")}}(c),at:b}}let q=(0,g.v)("__agentSessionContextUsage",()=>new Map),r=(0,g.v)("__agentSessionContextRefreshes",()=>new Set);function s(a,b){return null!==a&&null!==b&&Number.isFinite(a)&&Number.isFinite(b)&&!(b<=0)?Math.round(a/b*100):null}function t(a,b){q.set((0,d.v7)(a.worktreeId,a.cliToolId,a.instanceId),b)}function u(a,b){let c=(0,d.v7)(a.worktreeId,a.cliToolId,a.instanceId),e=q.get(c)??null;return!b||!b.id||"opencode-v2"===a.cliToolId||e&&e.sessionAt===b.at||r.has(c)||(r.add(c),v(a,b).finally(()=>{r.delete(c)})),e}async function v(a,b){let c=b.id;if(!c)return null;let d=(0,f.hC)(a);if(null===d)return null;let[g,h]=await Promise.all([(0,e.bg)(d,c),b.provider&&b.model?(0,e.Lf)(d,b.provider,b.model):Promise.resolve(null)]),i={tokens:g,limit:h,percent:s(g,h),sessionAt:b.at,at:Date.now()};return t(a,i),i}},4868:(a,b,c)=>{function d(a,b){let c=a.prepare(`
|
|
1
|
+
"use strict";exports.id=9627,exports.ids=[9627],exports.modules={2232:(a,b,c)=>{c.d(b,{ul:()=>m,t6:()=>h,FW:()=>l,Ke:()=>k,QN:()=>j,eJ:()=>o,dR:()=>i,P0:()=>n});var d=c(82366),e=c.n(d),f=c(16983);let g=[36e5,72e5,108e5,144e5,18e6,216e5,252e5,288e5,324e5,36e6,396e5,432e5,468e5,504e5,54e6,576e5,612e5,648e5,684e5,72e6,756e5,792e5,828e5,864e5],h=36e5;function i(a){return"number"==typeof a&&g.includes(a)}let j=5e3,k=f.sO,l=5e3,m=20;function n(a){if(a.length>500)return{valid:!1,error:"Pattern must be 500 characters or less"};if(!e()(a))return{valid:!1,error:"Pattern may cause performance issues (catastrophic backtracking detected)"};try{return new RegExp(a),{valid:!0}}catch{return{valid:!1,error:"Invalid regular expression syntax"}}}function o(a,b,c=100){try{return a.test(b)}catch{return null}}},3161:(a,b,c)=>{c.d(b,{G1:()=>i,Jl:()=>j,T9:()=>t,Tv:()=>o,Yv:()=>p,cI:()=>k,sI:()=>s,sc:()=>u});var d=c(24455),e=c(49791),f=c(84574),g=c(36925);let h=(0,g.v)("__agentSessionTelemetry",()=>new Map);function i(a,b){h.set((0,d.v7)(a.worktreeId,a.cliToolId,a.instanceId),b)}function j(a,b,c){return h.get((0,d.v7)(a,b,c))??null}function k(a){var b;h.delete((0,d.v7)(a.worktreeId,a.cliToolId,a.instanceId)),b=a,q.delete((0,d.v7)(b.worktreeId,b.cliToolId,b.instanceId))}function l(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function m(a,b,c){let d=a[b];return"string"!=typeof d||0===d.length?null:d.slice(0,c)}function n(a,b){let c=a[b];return"number"==typeof c&&Number.isFinite(c)?c:null}function o(a,b){let c=l(a.properties)?a.properties:null;return c?p(c.info,b):null}function p(a,b){let c=l(a)?a:null;if(!c||"string"==typeof c.parentID&&c.parentID.length>0)return null;let d=l(c.model)?c.model:{};return{id:m(c,"id",120),title:m(c,"title",200),agent:m(c,"agent",120),model:m(d,"id",120),provider:m(d,"providerID",120),cost:n(c,"cost"),tokens:function(a){let b=l(a.tokens)?a.tokens:null;if(!b)return{input:null,output:null,reasoning:null,cacheRead:null,cacheWrite:null,total:null};let c=l(b.cache)?b.cache:{};return{input:n(b,"input"),output:n(b,"output"),reasoning:n(b,"reasoning"),cacheRead:n(c,"read"),cacheWrite:n(c,"write"),total:n(b,"total")}}(c),at:b}}let q=(0,g.v)("__agentSessionContextUsage",()=>new Map),r=(0,g.v)("__agentSessionContextRefreshes",()=>new Set);function s(a,b){return null!==a&&null!==b&&Number.isFinite(a)&&Number.isFinite(b)&&!(b<=0)?Math.round(a/b*100):null}function t(a,b){q.set((0,d.v7)(a.worktreeId,a.cliToolId,a.instanceId),b)}function u(a,b){let c=(0,d.v7)(a.worktreeId,a.cliToolId,a.instanceId),e=q.get(c)??null;return!b||!b.id||"opencode-v2"===a.cliToolId||e&&e.sessionAt===b.at||r.has(c)||(r.add(c),v(a,b).finally(()=>{r.delete(c)})),e}async function v(a,b){let c=b.id;if(!c)return null;let d=(0,f.hC)(a);if(null===d)return null;let[g,h]=await Promise.all([(0,e.bg)(d,c),b.provider&&b.model?(0,e.Lf)(d,b.provider,b.model):Promise.resolve(null)]),i={tokens:g,limit:h,percent:s(g,h),sessionAt:b.at,at:Date.now()};return t(a,i),i}},4868:(a,b,c)=>{function d(a,b){let c=a.prepare(`
|
|
2
2
|
SELECT date, content, generated_by_tool, model, created_at, updated_at
|
|
3
3
|
FROM daily_reports
|
|
4
4
|
WHERE date = ?
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
FROM agent_session_costs
|
|
47
47
|
${d}
|
|
48
48
|
GROUP BY worktree_id
|
|
49
|
-
ORDER BY cost IS NULL, cost DESC, worktree_id`).all(...c?[b,c]:[b]).map(a=>({worktreeId:a.worktree_id,sessions:a.sessions,cost:a.cost,tokensInput:a.tokens_input,tokensOutput:a.tokens_output,tokensReasoning:a.tokens_reasoning,tokensCacheRead:a.tokens_cache_read,tokensCacheWrite:a.tokens_cache_write}));return{date:b,worktrees:e,total:function(a){let b=b=>{let c=null;for(let d of a){let a=b(d);null!==a&&(c=(c??0)+a)}return c};return{sessions:a.reduce((a,b)=>a+b.sessions,0),cost:b(a=>a.cost),tokensInput:b(a=>a.tokensInput),tokensOutput:b(a=>a.tokensOutput),tokensReasoning:b(a=>a.tokensReasoning),tokensCacheRead:b(a=>a.tokensCacheRead),tokensCacheWrite:b(a=>a.tokensCacheWrite)}}(e)}}c.d(b,{PY:()=>f,UB:()=>g,c0:()=>e})},15194:(a,b,c)=>{c.d(b,{Ab:()=>h,FV:()=>t,NL:()=>s,QP:()=>u,Sj:()=>l,VA:()=>f,XH:()=>d,_J:()=>v,ef:()=>n,hR:()=>o,lu:()=>q,n6:()=>k,oo:()=>p,pL:()=>m,pQ:()=>i,qR:()=>g,vz:()=>r});let d=["claude","codex","gemini","vibe-local","opencode","copilot","antigravity","command-code","opencode-v2"],e=new Set(["claude","opencode","copilot","opencode-v2"]);function f(a){return e.has(a)}function g(a,b){return!f(a)&&!b}let h=10,i=50,j=/^[a-zA-Z0-9_-]+$/;function k(a){return"string"==typeof a&&a.length>0&&a.length<=64&&j.test(a)}function l(a,b){return!a||a===b}function m(a,b){let c=`${b}-`;return a.startsWith(c)?a.slice(c.length):a}let n={claude:"Claude",codex:"Codex",gemini:"Gemini","vibe-local":"Vibe Local",opencode:"OpenCode",copilot:"Copilot",antigravity:"Antigravity","command-code":"Command Code","opencode-v2":"OpenCode V2"};function o(a){return d.includes(a)}function p(a){return n[a]??a}function q(a){return a.map((a,b)=>({id:a,cliTool:a,alias:p(a),order:b}))}let r=128,s=2097152;function t(a){return"number"==typeof a&&Number.isInteger(a)&&a>=r&&a<=s}let u=/^[a-zA-Z0-9][a-zA-Z0-9._:/-]*$/;function v(a){return"function"==typeof a.supportsImage&&!0===a.supportsImage()}},16983:(a,b,c)=>{c.d(b,{Jn:()=>e,Lg:()=>h,_u:()=>j,ao:()=>i,eu:()=>g,sO:()=>d,xT:()=>f});let d=1e3,e=200,f=200,g=2e4,h=121,i="CM_OPENCODE_PANE_WIDTH";function j(a="undefined"==typeof process?void 0:process.env){let b=a?.[i];if(void 0===b)return 80;let c=b.trim();if(!/^\d+$/.test(c))return 80;let d=Number.parseInt(c,10);return d<40||d>400?80:d}},24455:(a,b,c)=>{c.d(b,{B8:()=>I,BT:()=>O,CS:()=>k,Cs:()=>B,DR:()=>C,Fb:()=>J,G:()=>K,GE:()=>o,LP:()=>G,Re:()=>R,SD:()=>H,UL:()=>N,Ue:()=>m,W8:()=>t,XK:()=>u,Xz:()=>p,ZO:()=>M,_9:()=>E,aq:()=>s,eK:()=>x,fC:()=>Q,hN:()=>D,kC:()=>F,pL:()=>n,ps:()=>L,v7:()=>l});var d=c(
|
|
49
|
+
ORDER BY cost IS NULL, cost DESC, worktree_id`).all(...c?[b,c]:[b]).map(a=>({worktreeId:a.worktree_id,sessions:a.sessions,cost:a.cost,tokensInput:a.tokens_input,tokensOutput:a.tokens_output,tokensReasoning:a.tokens_reasoning,tokensCacheRead:a.tokens_cache_read,tokensCacheWrite:a.tokens_cache_write}));return{date:b,worktrees:e,total:function(a){let b=b=>{let c=null;for(let d of a){let a=b(d);null!==a&&(c=(c??0)+a)}return c};return{sessions:a.reduce((a,b)=>a+b.sessions,0),cost:b(a=>a.cost),tokensInput:b(a=>a.tokensInput),tokensOutput:b(a=>a.tokensOutput),tokensReasoning:b(a=>a.tokensReasoning),tokensCacheRead:b(a=>a.tokensCacheRead),tokensCacheWrite:b(a=>a.tokensCacheWrite)}}(e)}}c.d(b,{PY:()=>f,UB:()=>g,c0:()=>e})},15194:(a,b,c)=>{c.d(b,{Ab:()=>h,FV:()=>t,NL:()=>s,QP:()=>u,Sj:()=>l,VA:()=>f,XH:()=>d,_J:()=>v,ef:()=>n,hR:()=>o,lu:()=>q,n6:()=>k,oo:()=>p,pL:()=>m,pQ:()=>i,qR:()=>g,vz:()=>r});let d=["claude","codex","gemini","vibe-local","opencode","copilot","antigravity","command-code","opencode-v2"],e=new Set(["claude","opencode","copilot","opencode-v2"]);function f(a){return e.has(a)}function g(a,b){return!f(a)&&!b}let h=10,i=50,j=/^[a-zA-Z0-9_-]+$/;function k(a){return"string"==typeof a&&a.length>0&&a.length<=64&&j.test(a)}function l(a,b){return!a||a===b}function m(a,b){let c=`${b}-`;return a.startsWith(c)?a.slice(c.length):a}let n={claude:"Claude",codex:"Codex",gemini:"Gemini","vibe-local":"Vibe Local",opencode:"OpenCode",copilot:"Copilot",antigravity:"Antigravity","command-code":"Command Code","opencode-v2":"OpenCode V2"};function o(a){return d.includes(a)}function p(a){return n[a]??a}function q(a){return a.map((a,b)=>({id:a,cliTool:a,alias:p(a),order:b}))}let r=128,s=2097152;function t(a){return"number"==typeof a&&Number.isInteger(a)&&a>=r&&a<=s}let u=/^[a-zA-Z0-9][a-zA-Z0-9._:/-]*$/;function v(a){return"function"==typeof a.supportsImage&&!0===a.supportsImage()}},16983:(a,b,c)=>{c.d(b,{Jn:()=>e,Lg:()=>h,_u:()=>j,ao:()=>i,eu:()=>g,sO:()=>d,xT:()=>f});let d=1e3,e=200,f=200,g=2e4,h=121,i="CM_OPENCODE_PANE_WIDTH";function j(a="undefined"==typeof process?void 0:process.env){let b=a?.[i];if(void 0===b)return 80;let c=b.trim();if(!/^\d+$/.test(c))return 80;let d=Number.parseInt(c,10);return d<40||d>400?80:d}},24455:(a,b,c)=>{c.d(b,{B8:()=>I,BT:()=>O,CS:()=>k,Cs:()=>B,DR:()=>C,Fb:()=>J,G:()=>K,GE:()=>o,LP:()=>G,Re:()=>R,SD:()=>H,UL:()=>N,Ue:()=>m,W8:()=>t,XK:()=>u,Xz:()=>p,ZO:()=>M,_9:()=>E,aq:()=>s,eK:()=>x,fC:()=>Q,hN:()=>D,kC:()=>F,pL:()=>n,ps:()=>L,v7:()=>l});var d=c(2232),e=c(66007),f=c(15194),g=c(72626),h=c(90166),i=c(36925);let j=(0,g.h)("auto-yes-state"),k=":";function l(a,b,c){if(a.includes(k))throw Error(`worktreeId must not contain '${k}': ${a}`);if(!c||c===b)return`${a}${k}${b}`;if(c.includes(k))throw Error(`instanceId must not contain '${k}': ${c}`);return`${a}${k}${b}${k}${c}`}function m(a){let b=a.indexOf(k);return -1===b?a:a.substring(0,b)}function n(a){let b=a.split(k)[1];return void 0===b?null:(0,f.hR)(b)?b:null}function o(a){let b=a.split(k);return b[2]??b[1]??null}function p(a){return a.answerMode??h.Rb}let q=(0,i.v)("__autoYesStates",()=>new Map);function r(a){return Date.now()>=a.expiresAt}function s(a,b="claude",c){let d=l(a,b,c),e=q.get(d);return e?!e.enabled&&"server-restart"===e.stopReason&&r(e)?(q.delete(d),null):e.enabled&&r(e)?u(a,b,"expired",c):e:null}function t(a,b,c,e,f,g,i){let j=l(a,b,g);if(!c)return u(a,b,void 0,g);{if(void 0!==e&&!(0,d.dR)(e))throw RangeError(`Invalid Auto-Yes duration: ${String(e)} (must be 1-24 whole hours in ms)`);let c=void 0===i?s(a,b,g):null,k=Date.now(),l={enabled:!0,enabledAt:k,expiresAt:k+(e??d.t6),stopPattern:f,answerMode:i??(c?.enabled?p(c):h.Rb)};return q.set(j,l),w(),l}}function u(a,b="claude",c,d,e){let f=l(a,b,d),g=q.get(f),h={enabled:!1,enabledAt:g?.enabledAt??0,expiresAt:g?.expiresAt??0,stopPattern:g?.stopPattern,stopReason:c,stopMatchedText:e};return q.set(f,h),w(),h}let v=(0,i.v)("__autoYesShutdownStarted",()=>({value:!1,onChangeAfterShutdown:null}));function w(){if(!v.value)return;let a=v.onChangeAfterShutdown;if(a)try{a()}catch{}}function x(){return v.value}let y="…[truncated]",z=new TextEncoder;function A(a){return z.encode(a).length}function B(a,b,c){let e=m(a),f=n(a);if(!f)return!1;let g=o(a)??void 0,h=s(e,f,g);if(!h?.stopPattern)return!1;if(!(0,d.P0)(h.stopPattern).valid)return j.warn("invalid-stop-pattern",{detail:String({compositeKey:a})}),u(e,f,void 0,g),!1;try{let i=new RegExp(h.stopPattern),k=(0,d.eJ)(i,b);if(null===k)return j.warn("stop-condition-check",{detail:String({compositeKey:a})}),u(e,f,void 0,g),!1;if(k){let d=function(a,b){let c;try{c=a.exec(b)}catch{return null}if(!c)return null;let d=c.index,e=d+c[0].length,f=b.split("\n"),g=b.slice(0,d).split("\n").length-1,h=b.slice(0,e).split("\n").length-1,i=Math.max(0,g-1),j=Math.min(f.length-1,h+1),k=f.slice(i,j+1).join("\n"),l=k.trim();return function(a,b=400){if(A(a)<=b)return a;let c=b-A(y);if(c<=0)return y;let d=0,e="";for(let b of a){let a=A(b);if(d+a>c)break;e+=b,d+=a}return e+y}(l.length>0?l:k)}(i,b)??void 0;return u(e,f,"stop_pattern_matched",g,d),c&&c(a),j.warn("stop-condition-matched",{detail:String({compositeKey:a})}),!0}}catch{j.warn("stop-condition-check",{detail:String({compositeKey:a})})}return!1}function C(a){let b=m(a);return!!(0,e.h6)(b)&&!!n(a)&&(q.delete(a),w(),!0)}function D(){return Array.from(q.keys())}function E(a,b){return a.filter(a=>m(a)===b)}function F(a){return E(Array.from(q.keys()),a)}function G(a){let b=F(a);return b.forEach(a=>q.delete(a)),b.length>0&&w(),b.length}function H(a){let b=new Map;for(let c of Array.from(q.keys())){let d=n(c);if(!d)continue;let e=m(c),f=o(c)??d,g=s(e,d,f);if(!g?.enabled)continue;let h=b.get(e)??{},i={enabled:!0,expiresAt:g.expiresAt};a?.(e,d,f)&&(i.blockedByContract=!0),h[f]=i,b.set(e,h)}return b}function I(){let a=new Map;for(let b of Array.from(q.keys())){let c=n(b);if(!c)continue;let d=m(b),e=o(b)??c,f=s(d,c,e);if(!f||f.enabled||"server-restart"!==f.stopReason)continue;let g=a.get(d)??{};g[e]="server-restart",a.set(d,g)}return a}function J(){let a=new Map;for(let b of Array.from(q.keys())){let c=n(b);if(!c)continue;let d=m(b),e=o(b)??c,f=s(d,c,e);if(!f?.enabled)continue;let g=a.get(d)??{};g[e]=p(f),a.set(d,g)}return a}function K(a){return a<P?L:Math.min(L*Math.pow(2,a-P+1),O)}let L=2e3,M=5e3,N=1e4,O=6e4,P=5,Q=50,R=50},26923:(a,b,c)=>{c.d(b,{Ds:()=>p,L:()=>q,Q9:()=>l,Uo:()=>o,Wo:()=>m,e2:()=>t,iH:()=>n,iM:()=>s,yi:()=>r});var d=c(52201),e=c(38186);let f="sidebar_group_order",g="recent_browse_paths",h="default_selected_agents",i="default_surface_mode";function j(a,b){try{let c=a.prepare("SELECT value FROM app_settings WHERE key = ?").get(b);if(!c)return null;let d=JSON.parse(c.value);if(!Array.isArray(d)||!d.every(a=>"string"==typeof a))return null;return d}catch{return null}}function k(a,b,c){let d=Date.now();a.prepare(`
|
|
50
50
|
INSERT INTO app_settings (key, value, created_at, updated_at)
|
|
51
51
|
VALUES (?, ?, ?, ?)
|
|
52
52
|
ON CONFLICT(key) DO UPDATE SET
|
|
@@ -199,7 +199,7 @@
|
|
|
199
199
|
AND COALESCE(instance_id, cli_tool_id, 'claude') = ?
|
|
200
200
|
ORDER BY timestamp DESC
|
|
201
201
|
LIMIT 1
|
|
202
|
-
`).get(b,c,d);if(!e)return null;let h=g(e);return h.promptData?.status==="answered"?null:h}function M(a,b){return j(a,{worktreeId:b.worktreeId,role:"assistant",content:b.content,messageType:"normal",timestamp:new Date(b.at),requestId:`${H}${b.relayId}:${b.kind}`,cliToolId:b.cliToolId,instanceId:b.instanceId??b.cliToolId})}},57510:(a,b,c)=>{c.d(b,{KR:()=>e,NZ:()=>p,O2:()=>j,Qd:()=>o,Uq:()=>q,Wv:()=>l,ex:()=>i,hY:()=>n,mJ:()=>f,oJ:()=>k,qU:()=>g});var d=c(62887);function e(a,b,c){return d=>d===a?{event:b,detail:c??null}:null}function f(a){return Object.entries(a).map(([a,b])=>e(a,b))}function g(a,b,c){for(let d of a){let a=d(b,c);if(a)return a}return null}let h=(0,c(36925).v)("__agentSourceUnknownEvents",()=>new Map);function i(a,b){let c=h.get(a)??{count:0,names:[]};c.count+=1;let d=b??"(unnamed)";!c.names.includes(d)&&c.names.length<32&&c.names.push(d),h.set(a,c)}function j(a,b){let c=a[b];return"string"==typeof c&&""!==c?c:null}function k(a,b){for(let c of b){let b=j(a,c);if(null!==b)return b}return null}function l(a){return null===a||""===a?null:a.slice(0,d.h9)}let m=/^[A-Za-z0-9._:-]+$/;function n(a){return null===a||a.length>128?null:m.test(a)?a:null}function o(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function p(a,b){let c=a;for(let a of b){if(!o(c))return null;c=c[a]}return"string"==typeof c&&""!==c?c:null}function q(a,b,c,e={}){var f;let g=void 0!==a.detail&&null!==a.detail?l(a.detail):l(e.detail?.(a.event,b)??null);return{event:a.event,detail:g,conversationId:a.conversationId??(e.conversationId?k(b,e.conversationId):null),toolCallId:a.toolCallId??(e.toolCallId?k(b,e.toolCallId):null),model:null===(f=e.extractModel?.(b)??(e.modelFields?k(b,e.modelFields):null))||""===f?null:f.slice(0,d.h9),raw:b,receivedAt:c}}},62887:(a,b,c)=>{c.d(b,{HV:()=>h,KC:()=>g,b0:()=>d,h9:()=>f,o0:()=>e});let d=["stop","notification","session_start","user_prompt_submit","session_end","pre_tool_use","post_tool_use"];function e(a){return"string"==typeof a&&d.includes(a)}let f=128,g="permission_replied",h="self_resume_pending"},64185:(a,b,c)=>{c.d(b,{DE:()=>n,oZ:()=>m});var d=c(29021),e=c(33873),f=c(4689),g=c(72626),h=c(52201);let i=(0,g.h)("repo-agents-config"),j=["version","agents","primary"],k=new Map;function l(a,b=120){let c=("string"==typeof a?a:Array.isArray(a)?"a list":null===a?"null":"object"==typeof a?"a mapping":String(a)).replace(/[\u0000-\u001F\u007F-\u009F]/g," ");return c.length>b?`${c.slice(0,b)}...`:c}function m(a,b=Date.now()){let c=function(a){let b,c=(0,e.join)(a,".commandmate/agents.yaml");try{b=(0,d.readFileSync)(c,"utf8")}catch(b){let a=b.code;if("ENOENT"===a||"ENOTDIR"===a)return null;return i.warn("repo-agents:read-failed",{source:c,code:a,error:l(b.message)}),null}let g=Buffer.byteLength(b,"utf8");return g>65536?(i.warn("repo-agents:too-large",{source:c,bytes:g,limit:65536}),null):function(a,b){var c;let d;try{d=(0,f.qg)(a)}catch(a){return i.warn("repo-agents:yaml-parse-failed",{source:b,error:l(a.message)}),null}if(null==d)return i.debug("repo-agents:empty",{source:b}),null;if(!("object"==typeof(c=d)&&null!==c&&!Array.isArray(c)))return i.warn("repo-agents:not-a-mapping",{source:b,got:l(d)}),null;let e=Object.keys(d).filter(a=>!j.includes(a));if(e.length>0)return i.warn("repo-agents:unknown-keys",{source:b,keys:e.map(a=>l(a,40))}),null;if(void 0!==d.version&&null!==d.version&&1!==("number"==typeof d.version?d.version:"string"==typeof d.version&&/^\d+$/.test(d.version)?Number(d.version):null))return i.warn("repo-agents:unsupported-version",{source:b,got:l(d.version)}),null;if(!Array.isArray(d.agents))return i.warn("repo-agents:agents-not-a-list",{source:b,got:l(d.agents)}),null;let g=(0,h.Lt)(d.agents);if(!g.valid)return i.warn("repo-agents:invalid-agents",{source:b,error:g.error,got:d.agents.map(a=>l(a,40))}),null;let k=g.value;if(void 0===d.primary||null===d.primary)return k;if("string"!=typeof d.primary||!k.includes(d.primary))return i.warn("repo-agents:primary-not-in-agents",{source:b,got:l(d.primary,40),agents:k}),null;let m=d.primary;return[m,...k.filter(a=>a!==m)]}(b,c)}(a);return k.set(a,{value:c,expiresAt:b+6e4}),c}function n(a,b=Date.now()){if(!a)return null;let c=k.get(a);return c&&c.expiresAt>b?c.value:m(a,b)}},66007:(a,b,c)=>{c.d(b,{B9:()=>m,Px:()=>o,Uc:()=>l,b$:()=>n,h6:()=>k});var d=c(33873),e=c.n(d),f=c(29021),g=c(72626),h=c(80438);let i=(0,g.h)("path-validator"),j=/^[a-zA-Z0-9_-]+$/;function k(a){return!!a&&0!==a.length&&j.test(a)}function l(a,b){return a===b||a.startsWith(b+e().sep)}function m(a,b){if(!a||""===a.trim()||a.includes("\0"))return!1;let c=a;try{c=decodeURIComponent(a)}catch{c=a}if(c.includes("\0"))return!1;let d=e().resolve(b),f=e().resolve(b,c),g=e().relative(d,f);return!(g.startsWith("..")||e().isAbsolute(g))}function n(a,b){if(!a||""===a.trim())throw Error("Invalid path: Path cannot be empty");if(a.includes("\0"))throw Error("Invalid path: Null bytes not allowed");if(!m(a,b))throw Error(`Path is outside allowed directory: ${a} (allowed root: ${b})`);let c=a;try{c=decodeURIComponent(a)}catch{c=a}return e().resolve(b,c)}function o(a,b){let c;try{c=(0,f.realpathSync)(b)}catch{return!1}let d=e().resolve(b,a);if((0,f.existsSync)(d))try{let b=(0,f.realpathSync)(d),e=l(b,c);return e||(0,h.h)(i,"symlink-rejected",{targetPath:a,resolvedTarget:b}),e}catch{return!1}try{if((0,f.lstatSync)(d).isSymbolicLink())try{let b=(0,f.readlinkSync)(d),g=e().resolve(e().dirname(d),b),j=l(g,c);return j||(0,h.h)(i,"dangling-symlink-rejected",{targetPath:a,resolvedLinkTarget:g}),j}catch{return!1}}catch{}let g=e().dirname(d);for(;g!==e().dirname(g);){if((0,f.existsSync)(g))try{let a=(0,f.realpathSync)(g),b=l(a,c);return b||(0,h.h)(i,"symlink-ancestor-rejected",{currentPath:g,resolvedAncestor:a}),b}catch{break}g=e().dirname(g)}return!1}},
|
|
202
|
+
`).get(b,c,d);if(!e)return null;let h=g(e);return h.promptData?.status==="answered"?null:h}function M(a,b){return j(a,{worktreeId:b.worktreeId,role:"assistant",content:b.content,messageType:"normal",timestamp:new Date(b.at),requestId:`${H}${b.relayId}:${b.kind}`,cliToolId:b.cliToolId,instanceId:b.instanceId??b.cliToolId})}},57510:(a,b,c)=>{c.d(b,{KR:()=>e,NZ:()=>p,O2:()=>j,Qd:()=>o,Uq:()=>q,Wv:()=>l,ex:()=>i,hY:()=>n,mJ:()=>f,oJ:()=>k,qU:()=>g});var d=c(62887);function e(a,b,c){return d=>d===a?{event:b,detail:c??null}:null}function f(a){return Object.entries(a).map(([a,b])=>e(a,b))}function g(a,b,c){for(let d of a){let a=d(b,c);if(a)return a}return null}let h=(0,c(36925).v)("__agentSourceUnknownEvents",()=>new Map);function i(a,b){let c=h.get(a)??{count:0,names:[]};c.count+=1;let d=b??"(unnamed)";!c.names.includes(d)&&c.names.length<32&&c.names.push(d),h.set(a,c)}function j(a,b){let c=a[b];return"string"==typeof c&&""!==c?c:null}function k(a,b){for(let c of b){let b=j(a,c);if(null!==b)return b}return null}function l(a){return null===a||""===a?null:a.slice(0,d.h9)}let m=/^[A-Za-z0-9._:-]+$/;function n(a){return null===a||a.length>128?null:m.test(a)?a:null}function o(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function p(a,b){let c=a;for(let a of b){if(!o(c))return null;c=c[a]}return"string"==typeof c&&""!==c?c:null}function q(a,b,c,e={}){var f;let g=void 0!==a.detail&&null!==a.detail?l(a.detail):l(e.detail?.(a.event,b)??null);return{event:a.event,detail:g,conversationId:a.conversationId??(e.conversationId?k(b,e.conversationId):null),toolCallId:a.toolCallId??(e.toolCallId?k(b,e.toolCallId):null),model:null===(f=e.extractModel?.(b)??(e.modelFields?k(b,e.modelFields):null))||""===f?null:f.slice(0,d.h9),raw:b,receivedAt:c}}},62887:(a,b,c)=>{c.d(b,{HV:()=>h,KC:()=>g,b0:()=>d,h9:()=>f,o0:()=>e});let d=["stop","notification","session_start","user_prompt_submit","session_end","pre_tool_use","post_tool_use"];function e(a){return"string"==typeof a&&d.includes(a)}let f=128,g="permission_replied",h="self_resume_pending"},64185:(a,b,c)=>{c.d(b,{DE:()=>n,oZ:()=>m});var d=c(29021),e=c(33873),f=c(4689),g=c(72626),h=c(52201);let i=(0,g.h)("repo-agents-config"),j=["version","agents","primary"],k=new Map;function l(a,b=120){let c=("string"==typeof a?a:Array.isArray(a)?"a list":null===a?"null":"object"==typeof a?"a mapping":String(a)).replace(/[\u0000-\u001F\u007F-\u009F]/g," ");return c.length>b?`${c.slice(0,b)}...`:c}function m(a,b=Date.now()){let c=function(a){let b,c=(0,e.join)(a,".commandmate/agents.yaml");try{b=(0,d.readFileSync)(c,"utf8")}catch(b){let a=b.code;if("ENOENT"===a||"ENOTDIR"===a)return null;return i.warn("repo-agents:read-failed",{source:c,code:a,error:l(b.message)}),null}let g=Buffer.byteLength(b,"utf8");return g>65536?(i.warn("repo-agents:too-large",{source:c,bytes:g,limit:65536}),null):function(a,b){var c;let d;try{d=(0,f.qg)(a)}catch(a){return i.warn("repo-agents:yaml-parse-failed",{source:b,error:l(a.message)}),null}if(null==d)return i.debug("repo-agents:empty",{source:b}),null;if(!("object"==typeof(c=d)&&null!==c&&!Array.isArray(c)))return i.warn("repo-agents:not-a-mapping",{source:b,got:l(d)}),null;let e=Object.keys(d).filter(a=>!j.includes(a));if(e.length>0)return i.warn("repo-agents:unknown-keys",{source:b,keys:e.map(a=>l(a,40))}),null;if(void 0!==d.version&&null!==d.version&&1!==("number"==typeof d.version?d.version:"string"==typeof d.version&&/^\d+$/.test(d.version)?Number(d.version):null))return i.warn("repo-agents:unsupported-version",{source:b,got:l(d.version)}),null;if(!Array.isArray(d.agents))return i.warn("repo-agents:agents-not-a-list",{source:b,got:l(d.agents)}),null;let g=(0,h.Lt)(d.agents);if(!g.valid)return i.warn("repo-agents:invalid-agents",{source:b,error:g.error,got:d.agents.map(a=>l(a,40))}),null;let k=g.value;if(void 0===d.primary||null===d.primary)return k;if("string"!=typeof d.primary||!k.includes(d.primary))return i.warn("repo-agents:primary-not-in-agents",{source:b,got:l(d.primary,40),agents:k}),null;let m=d.primary;return[m,...k.filter(a=>a!==m)]}(b,c)}(a);return k.set(a,{value:c,expiresAt:b+6e4}),c}function n(a,b=Date.now()){if(!a)return null;let c=k.get(a);return c&&c.expiresAt>b?c.value:m(a,b)}},66007:(a,b,c)=>{c.d(b,{B9:()=>m,Px:()=>o,Uc:()=>l,b$:()=>n,h6:()=>k});var d=c(33873),e=c.n(d),f=c(29021),g=c(72626),h=c(80438);let i=(0,g.h)("path-validator"),j=/^[a-zA-Z0-9_-]+$/;function k(a){return!!a&&0!==a.length&&j.test(a)}function l(a,b){return a===b||a.startsWith(b+e().sep)}function m(a,b){if(!a||""===a.trim()||a.includes("\0"))return!1;let c=a;try{c=decodeURIComponent(a)}catch{c=a}if(c.includes("\0"))return!1;let d=e().resolve(b),f=e().resolve(b,c),g=e().relative(d,f);return!(g.startsWith("..")||e().isAbsolute(g))}function n(a,b){if(!a||""===a.trim())throw Error("Invalid path: Path cannot be empty");if(a.includes("\0"))throw Error("Invalid path: Null bytes not allowed");if(!m(a,b))throw Error(`Path is outside allowed directory: ${a} (allowed root: ${b})`);let c=a;try{c=decodeURIComponent(a)}catch{c=a}return e().resolve(b,c)}function o(a,b){let c;try{c=(0,f.realpathSync)(b)}catch{return!1}let d=e().resolve(b,a);if((0,f.existsSync)(d))try{let b=(0,f.realpathSync)(d),e=l(b,c);return e||(0,h.h)(i,"symlink-rejected",{targetPath:a,resolvedTarget:b}),e}catch{return!1}try{if((0,f.lstatSync)(d).isSymbolicLink())try{let b=(0,f.readlinkSync)(d),g=e().resolve(e().dirname(d),b),j=l(g,c);return j||(0,h.h)(i,"dangling-symlink-rejected",{targetPath:a,resolvedLinkTarget:g}),j}catch{return!1}}catch{}let g=e().dirname(d);for(;g!==e().dirname(g);){if((0,f.existsSync)(g))try{let a=(0,f.realpathSync)(g),b=l(a,c);return b||(0,h.h)(i,"symlink-ancestor-rejected",{currentPath:g,resolvedAncestor:a}),b}catch{break}g=e().dirname(g)}return!1}},70997:(a,b,c)=>{c.d(b,{v:()=>d});let d="claude"},73753:(a,b,c)=>{c.d(b,{DC:()=>v,Dx:()=>u,GA:()=>A,HZ:()=>r,NV:()=>l,O:()=>s,P9:()=>C,Rm:()=>H,Sj:()=>E,ZL:()=>n,_D:()=>w,_h:()=>o,ef:()=>x,getWorktreeById:()=>m,hq:()=>p,iu:()=>y,nO:()=>D,oZ:()=>G,p4:()=>B,s:()=>z,uJ:()=>F,vi:()=>k,yB:()=>t,z1:()=>q});var d=c(52201),e=c(64185),f=c(26923),g=c(52660),h=c(27923);let i=new Set;function j(a){return new Set(a.prepare("SELECT DISTINCT worktree_id FROM agent_instances").all().map(a=>a.worktree_id))}function k(a,b){let c=`
|
|
203
203
|
SELECT
|
|
204
204
|
w.id, w.name, w.path, w.repository_path, w.repository_name, w.description,
|
|
205
205
|
w.last_user_message, w.last_user_message_at, w.last_message_summary,
|
|
@@ -17,11 +17,11 @@
|
|
|
17
17
|
"wasm": [],
|
|
18
18
|
"assets": [],
|
|
19
19
|
"env": {
|
|
20
|
-
"__NEXT_BUILD_ID": "
|
|
21
|
-
"NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "
|
|
22
|
-
"__NEXT_PREVIEW_MODE_ID": "
|
|
23
|
-
"__NEXT_PREVIEW_MODE_SIGNING_KEY": "
|
|
24
|
-
"__NEXT_PREVIEW_MODE_ENCRYPTION_KEY": "
|
|
20
|
+
"__NEXT_BUILD_ID": "3_JtAZaKMJEDFIIfkHv4n",
|
|
21
|
+
"NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "ZesgEYeUxrX98bV68DFua4JDvtmtIviMc1x/M9x/PUs=",
|
|
22
|
+
"__NEXT_PREVIEW_MODE_ID": "62242c3dcb3729861a43dd3721860f1a",
|
|
23
|
+
"__NEXT_PREVIEW_MODE_SIGNING_KEY": "15db5021bd90324092faf395d4cd3bb6ee8c223b50559d8fb06550f265e4ef9d",
|
|
24
|
+
"__NEXT_PREVIEW_MODE_ENCRYPTION_KEY": "7c5d107fa263971b4d5f32898dc6c2087669cadc7911c9c410514c01ef20e3a7"
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-838df0273b03af19.js" defer=""></script><script src="/_next/static/chunks/framework-eaf13c96191cb608.js" defer=""></script><script src="/_next/static/chunks/main-37ca13e38030fe8b.js" defer=""></script><script src="/_next/static/chunks/pages/_app-4b3fb5e477a0267f.js" defer=""></script><script src="/_next/static/chunks/pages/_error-c970d8b55ace1b48.js" defer=""></script><script src="/_next/static/
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-838df0273b03af19.js" defer=""></script><script src="/_next/static/chunks/framework-eaf13c96191cb608.js" defer=""></script><script src="/_next/static/chunks/main-37ca13e38030fe8b.js" defer=""></script><script src="/_next/static/chunks/pages/_app-4b3fb5e477a0267f.js" defer=""></script><script src="/_next/static/chunks/pages/_error-c970d8b55ace1b48.js" defer=""></script><script src="/_next/static/3_JtAZaKMJEDFIIfkHv4n/_buildManifest.js" defer=""></script><script src="/_next/static/3_JtAZaKMJEDFIIfkHv4n/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"3_JtAZaKMJEDFIIfkHv4n","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|