@qt4798/pi-web 0.9.18-beta.1 → 0.9.19
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-path-routes-manifest.json +13 -6
- package/.next/build-manifest.json +3 -3
- package/.next/react-loadable-manifest.json +2 -2
- package/.next/required-server-files.js +1 -1
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +44 -0
- package/.next/server/app/_global-error/page.js +2 -2
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +2 -2
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
- package/.next/server/app/api/agent/[id]/events/route.js +2 -2
- package/.next/server/app/api/agent/[id]/route.js +1 -1
- package/.next/server/app/api/agent/new/route.js +1 -1
- package/.next/server/app/api/agent/running/events/route.js +1 -1
- package/.next/server/app/api/agent/running/route.js +1 -1
- package/.next/server/app/api/auth/all-providers/route.js +1 -1
- package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/combined/route.js +1 -1
- package/.next/server/app/api/auth/login/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/providers/route.js +1 -1
- package/.next/server/app/api/backup/export/route.js +1 -1
- package/.next/server/app/api/backup/import/route.js +1 -1
- package/.next/server/app/api/cwd/browse/route.js +1 -1
- package/.next/server/app/api/cwd/validate/route.js +1 -1
- package/.next/server/app/api/deepseek/balance/route.js +1 -0
- package/.next/server/app/api/deepseek/balance/route.js.nft.json +1 -0
- package/.next/server/app/api/deepseek/balance/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/default-cwd/route.js +1 -1
- package/.next/server/app/api/events/route.js +2 -2
- package/.next/server/app/api/features/route.js +1 -1
- package/.next/server/app/api/file-index/route.js +1 -1
- package/.next/server/app/api/files/[...path]/route.js +1 -1
- package/.next/server/app/api/git/diff/route.js +1 -1
- package/.next/server/app/api/git/push/route.js +1 -1
- package/.next/server/app/api/git/stash/route.js +1 -1
- package/.next/server/app/api/git/status/route.js +1 -1
- package/.next/server/app/api/home/route.js +1 -1
- package/.next/server/app/api/import/discover/route.js +1 -1
- package/.next/server/app/api/import/execute/route.js +1 -1
- package/.next/server/app/api/import/status/route.js +1 -1
- package/.next/server/app/api/logs/route.js +1 -1
- package/.next/server/app/api/mcp/route.js +2 -0
- package/.next/server/app/api/mcp/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/models/route.js +1 -1
- package/.next/server/app/api/models-config/builtin/route.js +1 -1
- package/.next/server/app/api/models-config/builtin/route.js.nft.json +1 -1
- package/.next/server/app/api/models-config/catalog/route.js +1 -1
- package/.next/server/app/api/models-config/discover/route.js +1 -1
- package/.next/server/app/api/models-config/route.js +1 -1
- package/.next/server/app/api/models-config/route.js.nft.json +1 -1
- package/.next/server/app/api/models-config/test/route.js +1 -1
- package/.next/server/app/api/modes/route.js +1 -1
- package/.next/server/app/api/opencode-zen/external/key/route.js +1 -0
- package/.next/server/app/api/opencode-zen/external/key/route.js.nft.json +1 -0
- package/.next/server/app/api/opencode-zen/external/key/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/opencode-zen/external/test/route.js +1 -0
- package/.next/server/app/api/opencode-zen/external/test/route.js.nft.json +1 -0
- package/.next/server/app/api/opencode-zen/external/test/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/opencode-zen/import/route.js +1 -1
- package/.next/server/app/api/opencode-zen/key/route.js +1 -1
- package/.next/server/app/api/opencode-zen/route.js +1 -1
- package/.next/server/app/api/opencode-zen/test/route.js +1 -1
- package/.next/server/app/api/plugins/route.js +1 -1
- package/.next/server/app/api/project-trust/route.js +1 -1
- package/.next/server/app/api/proxy/route.js +1 -1
- package/.next/server/app/api/proxy/test/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/auto-name/route.js +2 -2
- package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/export/route.js +2 -2
- package/.next/server/app/api/sessions/[id]/queue-recovery/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
- package/.next/server/app/api/sessions/route.js +1 -1
- package/.next/server/app/api/settings/title-model/route.js +1 -1
- package/.next/server/app/api/skills/check/route.js +1 -1
- package/.next/server/app/api/skills/install/route.js +1 -1
- package/.next/server/app/api/skills/route.js +1 -1
- package/.next/server/app/api/skills/search/route.js +1 -1
- package/.next/server/app/api/skills/update/route.js +1 -1
- package/.next/server/app/api/snippets/[id]/route.js +1 -0
- package/.next/server/app/api/snippets/[id]/route.js.nft.json +1 -0
- package/.next/server/app/api/snippets/[id]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/snippets/route.js +1 -0
- package/.next/server/app/api/snippets/route.js.nft.json +1 -0
- package/.next/server/app/api/snippets/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/subagents/route.js +2 -0
- package/.next/server/app/api/subagents/route.js.nft.json +1 -0
- package/.next/server/app/api/subagents/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/tasks/[id]/[action]/route.js +1 -1
- package/.next/server/app/api/tasks/[id]/changed-files/route.js +1 -1
- package/.next/server/app/api/tasks/[id]/diff/route.js +2 -2
- package/.next/server/app/api/tasks/[id]/events/route.js +1 -1
- package/.next/server/app/api/tasks/[id]/route.js +1 -1
- package/.next/server/app/api/tasks/batch/route.js +1 -1
- package/.next/server/app/api/tasks/events/route.js +2 -2
- package/.next/server/app/api/tasks/route.js +1 -1
- package/.next/server/app/api/tasks/settings/route.js +1 -1
- package/.next/server/app/api/tasks/templates/route.js +1 -1
- package/.next/server/app/api/themes/[name]/route.js +1 -1
- package/.next/server/app/api/themes/route.js +1 -1
- package/.next/server/app/api/usage/route.js +1 -1
- package/.next/server/app/api/vision-config/route.js +2 -2
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/icon.ico/route.js +1 -1
- package/.next/server/app/icon.png/route.js +1 -1
- package/.next/server/app/icon.svg/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +4 -4
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/index.segments/_full.segment.rsc +4 -4
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/page.js +17 -14
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +13 -6
- package/.next/server/chunks/1213.js +1 -1
- package/.next/server/chunks/1499.js +1 -1
- package/.next/server/chunks/2303.js +1 -1
- package/.next/server/chunks/2498.js +1 -0
- package/.next/server/chunks/4253.js +2 -2
- package/.next/server/chunks/440.js +1 -1
- package/.next/server/chunks/6429.js +1 -1
- package/.next/server/chunks/7915.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/middleware.js +3 -3
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/static/chunks/{3308.4b28a1cf1ba95ccb.js → 3308.d45be6730587846b.js} +1 -1
- package/.next/static/chunks/{7370-bb8f0d070d8d0508.js → 9103-7c410d401717ec38.js} +1 -1
- package/.next/static/chunks/99.280e10a836dfdb17.js +24 -0
- package/.next/static/chunks/app/_global-error/page-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/bash-output/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/events/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/agent/new/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/agent/running/events/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/agent/running/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/auth/all-providers/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/auth/combined/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/auth/login/[provider]/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/auth/providers/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/backup/export/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/backup/import/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/cwd/browse/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/cwd/validate/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/deepseek/balance/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/default-cwd/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/events/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/features/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/file-index/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/files/[...path]/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/git/diff/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/git/push/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/git/stash/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/git/status/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/home/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/import/discover/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/import/execute/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/import/status/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/logs/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/mcp/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/models/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/models-config/builtin/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/models-config/catalog/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/models-config/discover/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/models-config/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/models-config/test/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/modes/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/opencode-zen/external/key/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/opencode-zen/external/test/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/opencode-zen/import/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/opencode-zen/key/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/opencode-zen/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/opencode-zen/test/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/plugins/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/project-trust/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/proxy/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/proxy/test/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/context/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/export/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/queue-recovery/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/state/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/sessions/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/settings/title-model/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/skills/check/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/skills/install/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/skills/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/skills/search/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/skills/update/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/snippets/[id]/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/snippets/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/subagents/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/[action]/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/changed-files/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/diff/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/events/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/tasks/batch/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/tasks/events/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/tasks/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/tasks/settings/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/tasks/templates/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/themes/[name]/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/themes/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/usage/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/vision-config/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/app/page-451c953ad6232c59.js +53 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-6bdd527b5ef202bf.js +1 -0
- package/.next/static/chunks/webpack-06a1a811cd141d40.js +1 -0
- package/.next/static/css/dda15933a7f70fbf.css +1 -0
- package/.next/static/rddGyDxw8t2Q1B_osP7Xr/_buildManifest.js +1 -0
- package/.next/trace +9 -10
- package/.next/trace-build +1 -1
- package/.next/types/app/api/deepseek/balance/route.ts +351 -0
- package/.next/types/app/api/mcp/route.ts +351 -0
- package/.next/types/app/api/opencode-zen/external/key/route.ts +351 -0
- package/.next/types/app/api/opencode-zen/external/test/route.ts +351 -0
- package/.next/types/app/api/snippets/[id]/route.ts +351 -0
- package/.next/types/app/api/snippets/route.ts +351 -0
- package/.next/types/app/api/subagents/route.ts +351 -0
- package/.next/types/routes.d.ts +8 -1
- package/.next/types/validator.ts +63 -0
- package/README.md +81 -158
- package/bin/pi-web-options.js +8 -2
- package/bin/pi-web.js +0 -0
- package/package.json +3 -3
- package/.next/static/chunks/2480.cf27ca02e5b19761.js +0 -24
- package/.next/static/chunks/app/_global-error/page-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/bash-output/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/events/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/agent/new/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/agent/running/events/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/agent/running/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/auth/all-providers/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/auth/combined/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/auth/login/[provider]/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/auth/providers/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/backup/export/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/backup/import/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/cwd/browse/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/cwd/validate/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/default-cwd/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/events/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/features/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/file-index/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/files/[...path]/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/git/diff/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/git/push/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/git/stash/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/git/status/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/home/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/import/discover/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/import/execute/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/import/status/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/logs/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/models/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/models-config/builtin/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/models-config/catalog/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/models-config/discover/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/models-config/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/models-config/test/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/modes/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/opencode-zen/import/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/opencode-zen/key/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/opencode-zen/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/opencode-zen/test/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/plugins/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/project-trust/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/proxy/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/proxy/test/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/context/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/export/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/queue-recovery/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/state/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/sessions/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/settings/title-model/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/skills/check/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/skills/install/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/skills/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/skills/search/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/skills/update/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/tasks/[id]/[action]/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/tasks/[id]/changed-files/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/tasks/[id]/diff/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/tasks/[id]/events/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/tasks/[id]/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/tasks/batch/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/tasks/events/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/tasks/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/tasks/settings/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/tasks/templates/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/themes/[name]/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/themes/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/usage/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/vision-config/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/app/page-8bcd937bdba8d19c.js +0 -50
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-05965789d7c1c4dc.js +0 -1
- package/.next/static/chunks/webpack-d878f0bb0b95ae97.js +0 -1
- package/.next/static/css/0a86c1753fca4340.css +0 -1
- package/.next/static/gaIw_JxiSjTlS_2wAVEa6/_buildManifest.js +0 -1
- /package/.next/static/{gaIw_JxiSjTlS_2wAVEa6 → rddGyDxw8t2Q1B_osP7Xr}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
exports.id=4253,exports.ids=[4253],exports.modules={12144:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{OF:()=>B});var e=c(75430),f=c(29862),g=c(55511),h=c(29021),i=c(33873),j=c(18437),k=c(17114),l=c(88250),m=c(96515),n=c(15253),o=c(69453),p=c(61577),q=c(44290),r=c(30116),s=c(97563),t=c(57856),u=c(29040),v=c(46162),w=a([e,f,m,n,o,q,u,v]);[e,f,m,n,o,q,u,v]=w.then?(await w)():w;let C=new Set(["message_update","message_end","agent_end","entry_appended","session_info_changed","queue_update","prompt_done","agent_settled","auto_compaction_end","compaction_end"]),D=["read","bash","edit","write","grep","find","ls"];class E extends e.Theme{constructor(){super({thinkingXhigh:""},{selectedBg:""},"truecolor")}fg(...[,a]){return a}bg(...[,a]){return a}bold(a){return a}italic(a){return a}underline(a){return a}inverse(a){return a}strikethrough(a){return a}getFgAnsi(){return""}getBgAnsi(){return""}getThinkingBorderColor(){return a=>a}getBashModeBorderColor(){return a=>a}}let F=new E,G=new f.KeybindingsManager(f.TUI_KEYBINDINGS);function x(a,b){if(0===b.length)return[];let c=new Set(D),d=a.getAllTools().map(a=>a.name).filter(a=>!c.has(a));return[...new Set([...b,...d])]}class H{constructor(a,b){this.inner=a,this.cwd=b,this.listeners=[],this.pendingUiResponses=new Map,this.pendingUiRequests=new Map,this.activeCustomUis=new Map,this.extensionStatuses=new Map,this.extensionWidgets=new Map,this.promptRunning=!1,this.promptPhase=null,this.extensionsBound=!1,this.extensionBindingPromise=null,this.extensionBindingError=null,this.forceEmptySystemPrompt=!1,this.unsubscribe=null,this.idleTimer=null,this.queueMirror=[],this.queueRecovery=[],this.pendingQueueHints={steer:[],followUp:[]},this.queueMutationTail=Promise.resolve(),this.onDestroyCallback=null,this.shutdownPromise=null,this._alive=!0,this.approvalPolicy=(0,r.ni)((0,q.lN)().permissionRules),this.approvalMode=(0,q.lN)().toolApprovalMode,this.pendingApprovals=new Map,this.approvalSeq=0,this.approvalHookInstalled=!1,this.opencodeSwitchUnsubscribe=null;const c=(0,q.lN)(a.sessionId);this.approvalMode=c.toolApprovalMode,this.approvalPolicy=(0,r.ni)(c.permissionRules)}get sessionId(){return this.inner.sessionId}get sessionFile(){return this.inner.sessionFile??""}isAlive(){return this._alive}isRunning(){return this._alive&&(this.promptRunning||this.inner.isStreaming||this.inner.isCompacting||this.inner.isBashRunning)}runtimeSnapshot(){let a=this.inner.isStreaming,b=this.promptRunning,c=this.inner.isCompacting,d=this.inner.isBashRunning;return{id:this.sessionId,running:this.isRunning(),isStreaming:a,isPromptRunning:b,isCompacting:c,isBashRunning:d,phase:d?"running_command":this.promptPhase??(a||b||c?"waiting_model":null)}}start(){this.installApprovalHook(),this.opencodeSwitchUnsubscribe=(0,v.rY)(a=>{this.emit({type:"opencode_zen_switch",...a})}),this.unsubscribe=this.inner.subscribe(a=>{("agent_end"===a.type||"message_end"===a.type||"entry_appended"===a.type||"session_info_changed"===a.type)&&(0,o.mD)(),("agent_end"===a.type||"agent_settled"===a.type||"auto_compaction_end"===a.type||"compaction_end"===a.type)&&this.resetIdleTimer(),"queue_update"===a.type&&this.reconcileQueue(a.steering,a.followUp),C.has(a.type)&&function(a,b,c){let d=globalThis.__piSessionBusListeners;if(!d||0===d.size)return;if("message_update"!==a)return A({type:a,sessionId:b,payload:c});let e=J.get(b),f={type:a,sessionId:b,payload:c};e?(clearTimeout(e.timer),e.event=f):J.set(b,{event:f,timer:setTimeout(()=>{let a=J.get(b);a&&(J.delete(b),A(a.event))},80)})}(a.type,this.sessionId,a),this.emit(a),z()}),this.resetIdleTimer(),z()}loadQueueRecovery(){if(!this.sessionFile)return;let a=this.inner.getSteeringMessages(),b=this.inner.getFollowUpMessages();if(a.length||b.length){this.queueRecovery=[],this.reconcileQueue([...a],[...b]);return}this.queueRecovery=(0,k.ov)(this.sessionFile)}setApprovalMode(a){this.approvalMode=a}setApprovalPolicy(a){this.approvalPolicy=a}installApprovalHook(){if(this.approvalHookInstalled||!this.inner.agent?.beforeToolCall)return;this.approvalHookInstalled=!0;let a=this.inner.agent.beforeToolCall;this.inner.agent.beforeToolCall=async b=>{let c=b.toolCall?.name??"",d=b.args,e=(0,r.LD)(this.approvalPolicy,c,{mode:this.approvalMode,readOnly:s.MJ.has(c.toLowerCase()),args:d});if("deny"===e)return{block:!0,reason:`Denied by policy rule: ${c} is not permitted.`};if("ask"===e){let a=await this.askForApproval(c,d);if(!a.approve)return{block:!0,reason:a.reason||`Rejected by user: ${c}`}}return a?a(b):void 0}}askForApproval(a,b){return new Promise(c=>{let d=`approval-${++this.approvalSeq}`,e=setTimeout(()=>{this.pendingApprovals.delete(d),this.emit({type:"tool_approval_resolved",id:d,approve:!1,reason:`Approval request timed out after 120s: ${a}`}),c({approve:!1,reason:`Approval request timed out after 120s: ${a}`})},12e4);this.pendingApprovals.set(d,{resolve:c,timer:e,toolName:a}),this.emit({type:"tool_approval_request",id:d,toolName:a,args:function(a){if(null===a||"object"!=typeof a)return a;let b={};for(let[c,d]of Object.entries(a))if(null!=d&&"content"!==c&&"data"!==c&&"newString"!==c&&"oldString"!==c){if("string"==typeof d){b[c]=d.length>200?`${d.slice(0,200)}…`:d;continue}if("number"==typeof d||"boolean"==typeof d){b[c]=d;continue}b[c]=Array.isArray(d)?`[array:${d.length}]`:"[object]"}return b}(b)})})}resolveApproval(a,b,c){let d=this.pendingApprovals.get(a);return!!d&&(this.pendingApprovals.delete(a),clearTimeout(d.timer),d.resolve({approve:b,reason:c}),!0)}rejectAllApprovals(a){for(let[b,c]of this.pendingApprovals)this.pendingApprovals.delete(b),clearTimeout(c.timer),c.resolve({approve:!1,reason:a})}getPendingApprovals(){return Array.from(this.pendingApprovals.entries()).map(([a,b])=>({id:a,toolName:b.toolName}))}pendingRecoveryView(){return this.queueRecovery.map(({id:a,kind:b,text:c,images:d,queuedAt:e})=>({id:a,kind:b,text:c,hasImages:!!d?.length,queuedAt:e}))}persistQueue(){if(!this.sessionFile)return;let a=[...this.queueRecovery,...this.queueMirror];a.length?(0,k.pj)(this.sessionFile,a):(0,k.wx)(this.sessionFile)}hintQueueImages(a,b){this.pendingQueueHints[a].push(b?.length?b:[])}reconcileQueue(a,b){let c=(a,b)=>{if(!b)return this.queueMirror.filter(b=>b.kind===a);let c=new Set;return b.map(b=>{let d=this.queueMirror.find(d=>d.kind===a&&d.text===b&&!c.has(d));if(d)return c.add(d),d;let e=(0,k.Gc)(a,b,this.pendingQueueHints[a].shift());return c.add(e),e})};this.queueMirror=[...c("steer",a),...c("followUp",b)],this.persistQueue()}async requeueEntry(a){let b=(0,j.kc)(a.images);if(b)throw Error(b);this.hintQueueImages(a.kind,a.images),"steer"===a.kind?await this.inner.steer(a.text,a.images):await this.inner.followUp(a.text,a.images)}ensureMirrored(a){this.queueMirror.find(b=>b.kind===a.kind&&b.text===a.text)||(this.queueMirror.push({...a}),this.pendingQueueHints[a.kind].pop())}async replaceLiveQueue(a,b){for(let b of(this.inner.clearQueue(),this.pendingQueueHints={steer:[],followUp:[]},a))await this.requeueEntry(b);for(let a of b)await this.requeueEntry(a);let c={steering:[...this.inner.getSteeringMessages()],followUp:[...this.inner.getFollowUpMessages()]};return this.reconcileQueue(c.steering,c.followUp),c}async withQueueMutation(a){let b,c=this.queueMutationTail;this.queueMutationTail=new Promise(a=>{b=a}),await c;try{return await a()}finally{b()}}async mutateLiveQueue(a,b){return this.withQueueMutation(async()=>{let c=this.queueMirror.filter(a=>"steer"===a.kind),d=this.queueMirror.filter(a=>"followUp"===a.kind),e=b("steer"===a?c:d),f=await this.replaceLiveQueue(c,d);return{value:e,queues:f}})}validateQueueEntries(a){for(let b of a){if("steer"!==b.kind&&"followUp"!==b.kind||"string"!=typeof b.text)continue;let a=(0,j.kc)(b.images);if(a)throw Error(a)}}runAgentContinue(){if(this.inner.isStreaming||this.inner.isBashRunning||this.promptRunning)return;let a=[...this.queueMirror];0!==a.length&&(this.queueMirror=[],this.persistQueue(),this.promptRunning=!0,this.promptPhase="waiting_model",this.bootstrapQueuedRun(a))}async bootstrapQueuedRun(a){for(let b of(this.inner.clearQueue(),this.pendingQueueHints={steer:[],followUp:[]},a))try{await this.inner.prompt(b.text,b.images?.length?{images:b.images}:void 0)}catch(a){this.promptRunning=!1,this.promptPhase=null,this.resetIdleTimer(),(0,o.mD)(),this.emit({type:"prompt_error",errorMessage:a instanceof Error?a.message:String(a)}),this.emit({type:"prompt_done"});return}this.promptRunning=!1,this.promptPhase=null,this.resetIdleTimer(),this.emit({type:"prompt_done"})}setForceEmptySystemPrompt(a){this.forceEmptySystemPrompt=a,this.applyForcedEmptySystemPrompt()}beginExtensionBinding(a={}){this.ensureExtensionsBound(a).catch(a=>{console.error("[pi-web] failed to dispatch session_start to extensions:",a instanceof Error?a.message:a)})}ensureExtensionsBound(a={}){return(a.forceEmptySystemPrompt&&(this.forceEmptySystemPrompt=!0),this.extensionsBound)?(this.applyForcedEmptySystemPrompt(),Promise.resolve()):(this.extensionBindingPromise||(this.extensionBindingError=null,this.extensionBindingPromise=(async()=>{if(!this._alive)return;let a=this.createExtensionUiContext();if("function"==typeof this.inner.bindExtensions){let b=this.inner.bindExtensions;await b.call(this.inner,{uiContext:a,mode:"rpc",commandContextActions:this.createExtensionCommandContextActions(),shutdownHandler:()=>this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"notify",notifyType:"warning",message:"Extension requested shutdown, but shutdown is not supported in pi-web."}),onError:a=>this.emit({type:"extension_error",extensionPath:a.extensionPath,event:a.event,error:a.error})})}else this.inner.extensionRunner.setUIContext?.(a,"rpc");this.extensionsBound=!0,this.applyForcedEmptySystemPrompt(),console.log(`[pi-web] session_start dispatched to extensions for session ${this.inner.sessionId}`)})().catch(a=>{throw this.extensionBindingError=a,a})),this.extensionBindingPromise)}async waitForExtensionsBound(){try{this.extensionBindingPromise&&await this.extensionBindingPromise}catch(a){throw a instanceof Error?a:Error(String(a))}if(this.extensionBindingError)throw this.extensionBindingError instanceof Error?this.extensionBindingError:Error(String(this.extensionBindingError))}shouldWaitForExtensions(a){return"prompt"===a||"steer"===a||"follow_up"===a||"get_commands"===a}applyForcedEmptySystemPrompt(){this.forceEmptySystemPrompt&&this.inner.agent.state&&(this.inner.agent.state.systemPrompt="")}emit(a){for(let b of this.listeners)b(a)}resetIdleTimer(){this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=setTimeout(()=>{this.isRunning()?this.resetIdleTimer():this.shutdown().catch(a=>{console.error("[pi-web] failed to shut down idle session:",a instanceof Error?a.message:a)})},18e5)}persistBashOnlySession(){let a=this.inner.sessionManager,b=a.getSessionFile();if(!b||(0,h.existsSync)(b))return;let c=a.getHeader();if(!c)return;let d=[c,...a.getEntries()].map(a=>JSON.stringify(a)).join("\n")+"\n";(0,h.writeFileSync)(b,d,{encoding:"utf8",flag:"wx"}),a.flushed=!0,(0,o.O8)(this.inner.sessionId,b)}onEvent(a){for(let b of(this.listeners.push(a),this.pendingUiRequests.values()))a(b);return()=>{let b=this.listeners.indexOf(a);-1!==b&&this.listeners.splice(b,1)}}onDestroy(a){this.onDestroyCallback=a}async send(a){this.resetIdleTimer();let b=a.type;if("prompt"===b||"steer"===b||"follow_up"===b||"requeue_at"===b){let b=(0,j.kc)(a.images);if(b)throw Error(b)}switch(this.shouldWaitForExtensions(b)&&await this.waitForExtensionsBound(),b){case"prompt":{if(this.inner.isBashRunning)throw Error("Cannot send a prompt while a shell command is running");let b=a.images,c=a.streamingBehavior;return c&&this.inner.isStreaming&&this.hintQueueImages("followUp"===c?"followUp":"steer",b),this.promptRunning=!0,this.promptPhase=String(a.message??"").trimStart().startsWith("/")?"running_command":"waiting_model",z(),this.inner.prompt(a.message,{...b?.length?{images:b}:{},...c?{streamingBehavior:c}:{},source:"rpc"}).then(()=>{this.promptRunning=!1,this.promptPhase=null,this.resetIdleTimer(),c||this.emit({type:"prompt_done"}),z()}).catch(a=>{this.promptRunning=!1,this.promptPhase=null,this.resetIdleTimer(),(0,o.mD)(),this.emit({type:"prompt_error",errorMessage:a instanceof Error?a.message:String(a)}),c||this.emit({type:"prompt_done"}),z()}),null}case"abort":return await this.inner.abort(),null;case"get_state":{let a=this.inner.model,b=this.inner.getContextUsage();return{sessionId:this.inner.sessionId,sessionFile:this.inner.sessionFile??"",isStreaming:this.inner.isStreaming,isPromptRunning:this.promptRunning,isBashRunning:this.inner.isBashRunning,isCompacting:this.inner.isCompacting,phase:this.runtimeSnapshot().phase,model:a?{id:a.id,provider:a.provider}:void 0,messageCount:0,pendingMessageCount:this.inner.pendingMessageCount,queuedMessages:{steering:[...this.inner.getSteeringMessages()],followUp:[...this.inner.getFollowUpMessages()]},pendingRecovery:this.pendingRecoveryView(),contextUsage:b?{percent:b.percent,contextWindow:b.contextWindow,tokens:b.tokens}:null,systemPrompt:this.inner.agent.state?.systemPrompt??"",thinkingLevel:this.inner.agent.state?.thinkingLevel??"off",extensionStatuses:this.getExtensionStatuses(),extensionWidgets:this.getExtensionWidgets()}}case"set_model":{let{provider:b,modelId:c}=a,d=this.inner.modelRuntime.getModel(b,c);if(!d)throw Error(`Model not found: ${b}/${c}`);return await this.inner.setModel(d),(0,l.k)(),(0,o.mD)(),{id:d.id,provider:d.provider}}case"fork":{let b,c=a.entryId,d=this.inner.sessionManager,f=this.inner.sessionFile;if(!d.isPersisted())return{cancelled:!0};if(!f)throw Error("Persisted session is missing a session file");let g=d.getEntry(c);if(!g)throw Error("Invalid entry ID for forking");let h=d.getSessionDir();if(g.parentId){let a=e.SessionManager.open(f,h).createBranchedSession(g.parentId);if(!a)throw Error("Failed to create forked session");b=a}else{let a=e.SessionManager.create(d.getCwd(),h);a.newSession({parentSession:f}),b=a.getSessionFile()}let i=e.SessionManager.open(b,h).getSessionId();return(0,o.O8)(i,b),(0,o.mD)(),await this.shutdown(),{cancelled:!1,newSessionId:i}}case"navigate_tree":return{cancelled:(await this.inner.navigateTree(a.targetId,{})).cancelled};case"set_thinking_level":{let b=a.level;return this.inner.setThinkingLevel(b),"xhigh"===b&&this.inner.model?.compat?.thinkingFormat==="deepseek"&&this.inner.agent?.state&&(this.inner.agent.state.thinkingLevel="xhigh"),(0,o.mD)(),null}case"compact":try{return await this.inner.compact(a.customInstructions)}finally{(0,o.mD)()}case"set_session_name":{let b=a.name?.trim();if(!b)throw Error("Session name cannot be empty");return this.inner.setSessionName(b),(0,o.mD)(),null}case"get_session_stats":return{...this.inner.getSessionStats(),sessionName:this.inner.sessionManager.getSessionName()};case"get_last_assistant_text":return{text:this.inner.getLastAssistantText()??""};case"clear_queue":return this.queueMirror=[],this.pendingQueueHints={steer:[],followUp:[]},this.persistQueue(),this.inner.clearQueue();case"move_queue":{let b=a.kind,c=Number(a.fromIndex),d=Number(a.toIndex);if("steer"!==b&&"followUp"!==b||!Number.isInteger(c)||!Number.isInteger(d))throw Error("move_queue requires a queue kind and integer indexes");let{queues:e}=await this.mutateLiveQueue(b,a=>{if(c<0||c>=a.length||d<0||d>=a.length)throw Error("move_queue index out of range");let[b]=a.splice(c,1);a.splice(d,0,b)});return e}case"recall_queue_item":{let b=a.kind,c=Number(a.index);if("steer"!==b&&"followUp"!==b||!Number.isInteger(c))throw Error("recall_queue_item requires a queue kind and integer index");let{value:d,queues:e}=await this.mutateLiveQueue(b,a=>{if(c<0||c>=a.length)throw Error("recall_queue_item index out of range");let[b]=a.splice(c,1);return b});return{entry:{text:d.text,images:d.images??[]},...e}}case"requeue_at":{let b=a.kind,c=Number(a.index),d=a.text;if("steer"!==b&&"followUp"!==b||!Number.isInteger(c)||!d?.trim())throw Error("requeue_at requires a queue kind, integer index, and text");let e=a.images,{queues:f}=await this.mutateLiveQueue(b,a=>{if(c<0||c>a.length)throw Error("requeue_at index out of range");a.splice(c,0,(0,k.Gc)(b,d,e))});return f}case"remove_queue_item":{let b=a.kind,c=Number(a.index);if("steer"!==b&&"followUp"!==b||!Number.isInteger(c))throw Error("remove_queue_item requires a queue kind and integer index");let{queues:d}=await this.mutateLiveQueue(b,a=>{if(c<0||c>=a.length)throw Error("remove_queue_item index out of range");a.splice(c,1)});return d}case"resolve_recovery":{let b=new Set(a.keep??[]),c=new Set(a.discard??[]),d=!0===a.continueRun,e=0;for(let a of this.queueRecovery)b.has(a.id)&&(await this.requeueEntry(a),this.ensureMirrored(a),e+=1);return this.queueRecovery=this.queueRecovery.filter(a=>!b.has(a.id)&&!c.has(a.id)),this.persistQueue(),d&&e>0&&this.runAgentContinue(),{remaining:this.pendingRecoveryView(),kept:e}}case"export_queue":return{live:this.queueMirror.map(a=>({...a})),recovery:this.queueRecovery.map(a=>({...a}))};case"import_queue":{let b=a.entries;if(!Array.isArray(b))throw Error("import_queue requires entries[]");this.validateQueueEntries(b);let c=0;for(let a of b){if("steer"!==a.kind&&"followUp"!==a.kind||"string"!=typeof a.text)continue;let b=(0,k.Gc)(a.kind,a.text,a.images);await this.requeueEntry(b),this.ensureMirrored(b),c+=1}return this.persistQueue(),{imported:c,steering:[...this.inner.getSteeringMessages()],followUp:[...this.inner.getFollowUpMessages()]}}case"stage_recovery":{let b=a.entries;if(!Array.isArray(b))throw Error("stage_recovery requires entries[]");this.validateQueueEntries(b);let c=0;for(let a of b)("steer"===a.kind||"followUp"===a.kind)&&"string"==typeof a.text&&(this.queueRecovery.push((0,k.Gc)(a.kind,a.text,a.images)),c+=1);return this.persistQueue(),{staged:c,pendingRecovery:this.pendingRecoveryView()}}case"steer":{let b=a.images;this.hintQueueImages("steer",b),this.promptPhase="waiting_model",z();try{await this.inner.steer(a.message,b?.length?b:void 0)}finally{this.promptPhase=null,z()}return null}case"follow_up":{let b=a.images;this.hintQueueImages("followUp",b),this.promptPhase="waiting_model",z();try{await this.inner.followUp(a.message,b?.length?b:void 0)}finally{this.promptPhase=null,z()}return null}case"get_tools":{let a=this.inner.getAllTools(),b=new Set(this.inner.getActiveToolNames());return a.map(a=>({name:a.name,description:a.description,active:b.has(a.name)}))}case"get_commands":{let a=[];for(let b of this.inner.extensionRunner.getRegisteredCommands())a.push({name:b.invocationName,description:b.description,source:"extension",sourceInfo:b.sourceInfo});for(let b of this.inner.promptTemplates)a.push({name:b.name,description:b.description,source:"prompt",sourceInfo:b.sourceInfo});for(let b of this.inner.resourceLoader.getSkills().skills)a.push({name:`skill:${b.name}`,description:b.description,source:"skill",sourceInfo:b.sourceInfo});return{commands:a}}case"set_tools":{let b=a.toolNames;return this.setForceEmptySystemPrompt(0===b.length),this.inner.setActiveToolsByName(x(this.inner,b)),this.applyForcedEmptySystemPrompt(),null}case"reload":return await this.waitForExtensionsBound(),this.extensionStatuses.clear(),this.extensionWidgets.clear(),this.syncProjectTrust(),await this.inner.reload(),"function"!=typeof this.inner.bindExtensions&&this.inner.extensionRunner.setUIContext?.(this.createExtensionUiContext(),"rpc"),this.applyForcedEmptySystemPrompt(),{success:!0};case"abort_compaction":return this.inner.abortCompaction(),null;case"resolve_approval":return{resolved:this.resolveApproval(a.id,!!a.approve,a.reason)};case"set_approval_mode":{let b=a.mode;if("ask"!==b&&"auto"!==b&&"yolo"!==b)throw Error(`Invalid approval mode: ${String(b)}`);return this.setApprovalMode(b),null}case"set_approval_policy":{let b=a.policy;return this.setApprovalPolicy((0,r.ni)(b)),null}case"get_approval_state":return{mode:this.approvalMode,pending:this.getPendingApprovals()};case"extension_ui_response":return this.resolveExtensionUiResponse(a),null;case"extension_ui_input":return this.handleExtensionUiInput(a.id,a.data),null;case"bash":{if(this.promptRunning||this.inner.isStreaming||this.inner.isCompacting||this.inner.isBashRunning)throw Error("Cannot run a shell command while the session is busy");let b=this.inner.executeBash(a.command,void 0,{excludeFromContext:a.excludeFromContext});try{let a=await b;return this.persistBashOnlySession(),a}finally{this.resetIdleTimer(),(0,o.mD)(),z()}}case"abort_bash":return this.inner.abortBash(),z(),null;default:throw Error(`Unsupported command: ${b}`)}}destroy(){if(this._alive){for(let a of(this._alive=!1,this.idleTimer&&clearTimeout(this.idleTimer),this.inner.isBashRunning&&this.inner.abortBash(),this.unsubscribe?.(),this.opencodeSwitchUnsubscribe?.(),this.opencodeSwitchUnsubscribe=null,this.pendingUiResponses.values()))a.cancel();for(let a of Array.from(this.activeCustomUis.keys()))this.closeCustomUi(a,void 0);this.pendingUiResponses.clear(),this.pendingUiRequests.clear(),this.rejectAllApprovals("Session closed while approval was pending");try{this.inner.dispose()}finally{this.onDestroyCallback?.(),z()}}}async shutdown(){return this.shutdownPromise?this.shutdownPromise:this._alive?(this.shutdownPromise=(async()=>{try{try{await this.waitForExtensionsBound()}catch(a){console.error("[pi-web] extension binding failed before session shutdown:",a instanceof Error?a.message:a)}await this.inner.extensionRunner.emit?.({type:"session_shutdown",reason:"quit"})}finally{this.destroy()}})(),this.shutdownPromise):void 0}resolveExtensionUiResponse(a){let b=this.pendingUiResponses.get(a.id);b&&b.resolve(a)}getExtensionStatuses(){return Array.from(this.extensionStatuses,([a,b])=>({key:a,text:b}))}getExtensionWidgets(){return Array.from(this.extensionWidgets.values())}getCustomUiWidth(a){if(!a||"object"!=typeof a)return t.p1;let b=a.overlayOptions,c="function"==typeof b?b():b;if(!c||"object"!=typeof c)return t.p1;let d=c.width;return"number"==typeof d&&Number.isFinite(d)?Math.max(40,Math.min(140,Math.round(d))):t.p1}emitCustomUiRender(a,b){let c;try{c=b.component.render(b.width)}catch(a){c=[`Extension custom UI render failed: ${a instanceof Error?a.message:String(a)}`]}let d={type:"extension_ui_request",id:a,method:"custom",lines:c};this.pendingUiRequests.set(a,d),this.emit(d)}closeCustomUi(a,b){let c=this.activeCustomUis.get(a);if(c&&!c.settled){c.settled=!0,this.activeCustomUis.delete(a),this.pendingUiRequests.delete(a);try{c.component.dispose?.()}catch{}this.emit({type:"extension_ui_request",id:a,method:"custom",lines:[],closed:!0}),c.resolve(b)}}handleExtensionUiInput(a,b){let c=this.activeCustomUis.get(a);if(c&&"string"==typeof b)try{c.component.handleInput?.(b),this.activeCustomUis.has(a)&&this.emitCustomUiRender(a,c)}catch(b){this.closeCustomUi(a,void 0),this.emit({type:"extension_error",extensionPath:`custom-ui:${a}`,event:"custom_ui_input",error:b instanceof Error?b.message:String(b)})}}requestExtensionCustomUi(a,b){if("function"!=typeof a)return Promise.resolve(void 0);let c=(0,g.randomUUID)(),d=this.getCustomUiWidth(b);return new Promise(b=>{let e=!1,f=(0,t.TQ)(()=>{let a=this.activeCustomUis.get(c);a&&this.emitCustomUiRender(c,a)},d),g=a=>{e||(e=!0,b(a))},h=a=>{this.activeCustomUis.has(c)?this.closeCustomUi(c,a):g(a)};Promise.resolve().then(()=>a(f,F,G,h)).then(a=>{if(e){try{a?.dispose?.()}catch{}return}if(!a||"object"!=typeof a||"function"!=typeof a.render)return void g(void 0);let b={component:a,width:d,resolve:a=>g(a),settled:!1};this.activeCustomUis.set(c,b),this.emitCustomUiRender(c,b)}).catch(a=>{e||(this.emit({type:"extension_error",extensionPath:`custom-ui:${c}`,event:"custom_ui",error:a instanceof Error?a.message:String(a)}),g(void 0))})})}requestExtensionUi(a,b,c,d,e){if(e?.aborted)return Promise.resolve(b);let f=(0,g.randomUUID)(),h={type:"extension_ui_request",id:f,...a,...d?{timeout:d,expiresAt:Date.now()+d}:{}};return new Promise(a=>{let g,i=()=>{g&&clearTimeout(g),e?.removeEventListener("abort",k),this.pendingUiRequests.delete(f),this.pendingUiResponses.delete(f)},j=b=>{i(),a(b)},k=()=>j(b);d&&(g=setTimeout(()=>j(b),d)),e?.addEventListener("abort",k,{once:!0}),this.pendingUiRequests.set(f,h),this.pendingUiResponses.set(f,{resolve:a=>j(c(a)),cancel:()=>j(b)}),this.emit(h)})}createExtensionUiContext(){return{select:(a,b,c)=>this.requestExtensionUi({method:"select",title:a,options:b,...c?.timeout?{timeout:c.timeout}:{}},void 0,a=>"value"in a?a.value:void 0,c?.timeout,c?.signal),confirm:(a,b,c)=>this.requestExtensionUi({method:"confirm",title:a,message:b,...c?.timeout?{timeout:c.timeout}:{}},!1,a=>"confirmed"in a&&a.confirmed,c?.timeout,c?.signal),input:(a,b,c)=>this.requestExtensionUi({method:"input",title:a,...void 0!==b?{placeholder:b}:{},...c?.timeout?{timeout:c.timeout}:{}},void 0,a=>"value"in a?a.value:void 0,c?.timeout,c?.signal),editor:(a,b,c)=>this.requestExtensionUi({method:"editor",title:a,...void 0!==b?{prefill:b}:{},...c?.timeout?{timeout:c.timeout}:{}},void 0,a=>"value"in a?a.value:void 0,c?.timeout,c?.signal),notify:(a,b)=>{this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"notify",message:a,notifyType:b})},onTerminalInput:()=>()=>{},setStatus:(a,b)=>{void 0===b?this.extensionStatuses.delete(a):this.extensionStatuses.set(a,b),this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"setStatus",statusKey:a,statusText:b})},setWorkingMessage:()=>{},setWorkingVisible:()=>{},setWorkingIndicator:()=>{},setHiddenThinkingLabel:()=>{},setWidget:(a,b,c)=>{(void 0===b||Array.isArray(b))&&(void 0===b?this.extensionWidgets.delete(a):this.extensionWidgets.set(a,{key:a,lines:b,placement:c?.placement??"aboveEditor"}),this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"setWidget",widgetKey:a,widgetLines:b,widgetPlacement:c?.placement}))},setFooter:()=>{},setHeader:()=>{},setTitle:a=>{this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"setTitle",title:a})},custom:(a,b)=>this.requestExtensionCustomUi(a,b),pasteToEditor:a=>{this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"set_editor_text",text:a})},setEditorText:a=>{this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"set_editor_text",text:a})},getEditorText:()=>"",addAutocompleteProvider:()=>{},setEditorComponent:()=>{},getEditorComponent:()=>void 0,get theme(){return F},getAllThemes:()=>[],getTheme:()=>void 0,setTheme:()=>({success:!1,error:"Theme switching is not supported in pi-web extension UI yet"}),getToolsExpanded:()=>!1,setToolsExpanded:()=>{}}}syncProjectTrust(){this.inner.settingsManager.setProjectTrusted((0,n.Y1)(this.cwd,(0,e.getAgentDir)()).trusted)}createExtensionCommandContextActions(){return{waitForIdle:async()=>{let a=this.inner.agent;await a.waitForIdle?.()},newSession:async()=>({cancelled:!0}),fork:async()=>({cancelled:!0}),navigateTree:async(a,b)=>({cancelled:(await this.inner.navigateTree(a,{summarize:b?.summarize})).cancelled}),switchSession:async()=>({cancelled:!0}),reload:async()=>{this.extensionStatuses.clear(),this.extensionWidgets.clear(),this.syncProjectTrust(),await this.inner.reload({beforeSessionStart:()=>{this.inner.extensionRunner.setUIContext?.(this.createExtensionUiContext(),"rpc")}}),this.applyForcedEmptySystemPrompt()}}}}function y(){if(!globalThis.__piSessions){globalThis.__piSessions=new Map;let a=()=>Promise.allSettled(Array.from(globalThis.__piSessions?.values()??[],a=>a.shutdown()));process.once("exit",()=>globalThis.__piSessions?.forEach(a=>a.destroy())),process.once("SIGINT",()=>{a().finally(()=>process.exit(130))}),process.once("SIGTERM",()=>{a().finally(()=>process.exit(143))})}return globalThis.__piSessions}let I="";function z(){let a=globalThis.__piRunningListeners;if(!a||0===a.size){I="";return}let b=function(){let a=[];for(let[b,c]of y()){if(!c.isAlive())continue;let d=c.runtimeSnapshot();d.running&&a.push({...d,id:d.id||b})}return a}(),c=JSON.stringify(b);if(c!==I)for(let d of(I=c,a))try{d(b)}catch{}}let J=new Map;function A(a){let b=globalThis.__piSessionBusListeners;if(b&&0!==b.size)for(let c of b)try{c(a)}catch{}}async function B(a,b,c,d={}){let f,g,j,{toolNames:k,initialModel:q,thinkingLevel:r}=d,s=y(),t=(globalThis.__piStartLocks||(globalThis.__piStartLocks=new Map),globalThis.__piStartLocks),u=s.get(a);if(u?.isAlive())return{session:u,realSessionId:a};let w=t.get(a);if(w)return w;if(b)f=e.SessionManager.open(b,void 0);else{if(!c)throw Error("cwd is required for a new session");f=e.SessionManager.create(c,void 0)}let z=f.getCwd(),A=(globalThis.__piStartingSessionCwds||(globalThis.__piStartingSessionCwds=new Map),g=globalThis.__piStartingSessionCwds,j=function(a){let b=(0,i.resolve)(a);try{return(0,h.realpathSync)(b)}catch{return b}}(z),g.set(j,(g.get(j)??0)+1),()=>{let a=(g.get(j)??1)-1;a>0?g.set(j,a):g.delete(j)}),C=(async()=>{let a;(0,e.initTheme)();let b=(0,e.getAgentDir)();void 0!==k&&(a=0===k.length?[]:void 0);let c=(0,n.Fk)(z,b),d=await (0,e.createAgentSessionServices)({cwd:z,agentDir:b,...c?{resourceLoaderReloadOptions:c}:{}});(0,v.MO)()&&await (0,v.zB)(d.modelRuntime);let g=await (0,m.py)(d.modelRuntime,d.settingsManager.getEnabledModels()),h=d.settingsManager.getDefaultProvider(),i=d.settingsManager.getDefaultModel(),j=f.getBranch().some(a=>"message"===a.type)?{scopedModels:[...g.scopedModels]}:(0,m.IR)(g,{...q?{requestedModel:q}:{},...h&&i?{defaultModel:{provider:h,modelId:i}}:{},...r?{thinkingLevel:r}:{}}),{session:t}=await (0,e.createAgentSessionFromServices)({services:d,sessionManager:f,...j.model?{model:j.model}:{},...j.thinkingLevel?{thinkingLevel:j.thinkingLevel}:{},...j.scopedModels.length>0?{scopedModels:j.scopedModels}:{},...void 0!==a?{tools:a}:{}}),u=t.agent,w=u.streamFunction;u.streamFunction=(a,b,c)=>w(a,b,(0,v.qk)(a.provider)?{...c,fetch:(0,v.xl)(c?.fetch,c?.sessionId)}:c),(await (0,p.o)(d.settingsManager,{...q?{model:q}:{},...r?{thinkingLevel:r}:{}},{...t.model?{model:{provider:t.model.provider,modelId:t.model.id}}:{},thinkingLevel:t.agent.state?.thinkingLevel??"off",supportsThinking:t.supportsThinking()})).modelDefaultChanged&&(0,l.k)(),k&&k.length>0&&t.setActiveToolsByName(x(t,k));let y=new H(t,z);k?.length===0&&y.setForceEmptySystemPrompt(!0),y.start(),y.loadQueueRecovery();let A=t.sessionId,B=t.sessionFile;return B&&(0,o.O8)(A,B),y.onDestroy(()=>s.delete(A)),s.set(A,y),y.beginExtensionBinding({forceEmptySystemPrompt:k?.length===0}),{session:y,realSessionId:A}})().finally(()=>{t.delete(a),A()});return t.set(a,C),C}d()}catch(a){d(a)}})},12817:a=>{"use strict";a.exports=function(a){if(null===a||"object"!=typeof a)return a;if(a instanceof Object)var c={__proto__:b(a)};else var c=Object.create(null);return Object.getOwnPropertyNames(a).forEach(function(b){Object.defineProperty(c,b,Object.getOwnPropertyDescriptor(a,b))}),c};var b=Object.getPrototypeOf||function(a){return a.__proto__}},12969:(a,b,c)=>{"use strict";c.d(b,{$:()=>g});var d=c(55511),e=c(29021),f=c(33873);function g(a,b){let c=(0,f.dirname)(a),g=(0,f.join)(c,`.${(0,f.basename)(a)}-${(0,d.randomUUID)()}.tmp`),h=!1;try{(0,e.writeFileSync)(g,b,{encoding:"utf8",flag:"wx",mode:384,flush:!0}),(0,e.renameSync)(g,a)}catch(a){throw h=!0,a}finally{try{(0,e.unlinkSync)(g)}catch(a){if("ENOENT"!==a.code&&!h)throw a}}}},13884:(a,b,c)=>{"use strict";let d=c(93329);a.exports={toPromise:function(a){return(...b)=>new Promise((c,d)=>{b.push((a,b)=>{a?d(a):c(b)}),a(...b)})},toSync:function(a){return(...b)=>{let c,d;if(b.push((a,b)=>{c=a,d=b}),a(...b),c)throw c;return d}},toSyncOptions:function(a){var b;let c;if((a={...a}).fs=(c={...b=a.fs||d},["mkdir","realpath","stat","rmdir","utimes"].forEach(a=>{c[a]=(...c)=>{let d,e=c.pop();try{d=b[`${a}Sync`](...c)}catch(a){return e(a)}e(null,d)}}),c),"number"==typeof a.retries&&a.retries>0||a.retries&&"number"==typeof a.retries.retries&&a.retries.retries>0)throw Object.assign(Error("Cannot use retries with the sync api"),{code:"ESYNC"});return a}}},14253:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{ensureTaskEngine:()=>n});var e=c(29021),f=c(33873),g=c(79646),h=c(62391),i=c(65562),j=c(12144),k=a([i,j]);[i,j]=k.then?(await k)():k;let D=new Set,E=null,F="__piTaskEngine";function l(){return globalThis[F]??E}function m(){let a=l();if(!a)throw Error("task engine not running");return a}function n(){if(l())return!0;if(!function(){let a=(0,i.z1)("__engine__"),b=(0,f.join)(a,"engine.lock");try{if((0,e.mkdirSync)(a,{recursive:!0}),(0,e.existsSync)(b)&&!function(a){try{let b=Number((0,e.readFileSync)(a,"utf8").trim());if(Number.isInteger(b)&&b>0&&function(a){try{return process.kill(a,0),!0}catch{return!1}}(b))return!1;return(0,e.unlinkSync)(a),!0}catch{try{return(0,e.unlinkSync)(a),!0}catch{return!1}}}(b))return!1;let c=(0,e.openSync)(b,"wx");return(0,e.writeFileSync)(c,String(process.pid)),globalThis.__taskEngineLockFd=c,!0}catch{return!1}}())return!1;let a={live:new Map,byTask:new Map,launching:new Map,pumpLocks:new Map,reconcileTimer:null,stopped:!1};return E=a,globalThis[F]=a,B(),a.reconcileTimer=setInterval(()=>{C()},3e4),!0}function o(){return new Date().toISOString()}function p(a,b,c="engine",d){(0,i.fd)(a),b&&(0,i.Q1)(a.projectRoot,{taskId:a.id,kind:b,actor:c,payload:d??null});var e={type:"upsert",id:a.id};for(let a of D)a(e)}function q(a,b,c,d,f){let g=function(a){for(let b of l()?.byTask.values()??[])if(b.taskId===a)return(0,i._o)(b.projectRoot,a)??null;let b=(0,i.z1)("__engine__").replace(/__engine__$/,"");if(!(0,e.existsSync)(b))return null;for(let c of(0,e.readdirSync)(b,{withFileTypes:!0})){if(!c.isDirectory()||"__engine__"===c.name)continue;let b=(0,i._o)(A(c.name),a);if(b)return b}return null}(a);if(!g||g.runSeq!==b||!c.includes(g.status))return null;let h={...g,...f,status:d,updatedAt:o()};return p(h),h}async function r(a){let b=m(),c=(b.pumpLocks.get(a)??Promise.resolve()).then(()=>s(a));b.pumpLocks.set(a,c.catch(()=>void 0)),await c}async function s(a){let b=m();if(b.stopped)return;let c=(0,i.Rv)(a);if(!c.autoProcess)return;let d=(0,i.h6)(a),e=[...b.byTask.values()].filter(b=>b.projectRoot===a).length,f=c.maxConcurrent>0?c.maxConcurrent:1/0;if(!(e>=f))for(let c of d.filter(a=>"queued"===a.status).sort((a,b)=>a.sortOrder-b.sortOrder)){if(e>=f)break;!b.launching.has(c.id)&&await t(c.id,a)&&(e+=1)}}async function t(a,b){let c=m(),d=(0,i._o)(b,a);if(!d||"queued"!==d.status)return!1;let e=globalThis,f=e.__taskLaunchToken=(e.__taskLaunchToken??0)+1;if(c.launching.set(a,f),!q(a,d.runSeq,["queued"],"preparing",{startedAt:o()}))return c.launching.delete(a),!1;(0,i.Q1)(b,{taskId:a,kind:"preparing",actor:"engine"});try{var g,j,k;let e,f,l,n,p,r,s=await (0,h.KI)(b);if(!s.projectRoot)throw Error("Not a git repository");let t=`task/${a}-${d.title.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40)||"task"}`,x=null;try{x=(await (0,h.l)(s.projectRoot,t)).path}catch(b){let a=await u(s.projectRoot,t);if(!a)throw b;x=a}let A=s.branch??null,B=(0,i.Rv)(b);B.initCommand&&await y(x,B.initCommand);let{session:C}=await v(d,x),D={taskId:a,runSeq:d.runSeq,connectionId:C.sessionId,projectRoot:b,session:C,pendingRequests:new Set};if(c.live.set(C.sessionId,D),c.byTask.set(a,D),(g=D).session.onEvent(a=>{let b=a.type;(async()=>{var c,d;let e=m().live.get(g.connectionId);if(!e||e.taskId!==g.taskId)return;let f=(0,i._o)(g.projectRoot,g.taskId);if(f&&("running"===f.status||"awaiting_input"===f.status||"merging"===f.status))switch(b){case"extension_ui_request":{let b=a.method,c=a.id;b&&c&&["confirm","input","select","editor"].includes(b)&&(g.pendingRequests.add(c),"running"===f.status&&(q(g.taskId,g.runSeq,["running"],"awaiting_input"),(0,i.Q1)(f.projectRoot,{taskId:g.taskId,kind:"awaiting_input",actor:"engine",payload:{method:b,id:c}})));break}case"extension_ui_response":{let b=a.id;b&&g.pendingRequests.delete(b)&&0===g.pendingRequests.size&&"awaiting_input"===f.status&&q(g.taskId,g.runSeq,["awaiting_input"],"running");break}case"agent_end":if(g.pendingRequests.size>0)break;if("merging"===f.status){let a;c=g,(a=(0,i._o)(c.projectRoot,c.taskId))&&"merging"===a.status&&z(c.session.cwd,"git rev-parse --short HEAD").then(a=>a.output.trim()).catch(()=>null).then(async a=>{let b=(0,i._o)(c.projectRoot,c.taskId);if(b){q(b.id,b.runSeq,["merging"],"done",{mergeCommit:a,finishedAt:o()}),(0,i.Q1)(b.projectRoot,{taskId:b.id,kind:"merged",actor:"engine",payload:{commit:a}});try{b.worktreePath&&await (0,h.IL)(c.projectRoot,b.worktreePath,!0).catch(()=>void 0),b.workBranch&&await y(c.projectRoot,`git branch -D ${JSON.stringify(b.workBranch)}`).catch(()=>void 0)}catch{}}});break}w(g,f);break;case"prompt_error":{let b,c=a.errorMessage??"agent error";q(g.taskId,g.runSeq,["running","awaiting_input"],"failed",{failureReason:"agent_error",lastError:c,settledAt:o(),finishedAt:o()}),(0,i.Q1)(f.projectRoot,{taskId:g.taskId,kind:"failed",actor:"engine",payload:{reason:"agent_error",message:c}}),d=g,(b=m()).live.delete(d.connectionId),b.byTask.delete(d.taskId);break}case"agent_start":"awaiting_input"===f.status&&0===g.pendingRequests.size&&q(g.taskId,g.runSeq,["awaiting_input"],"running")}})()}),!q(a,d.runSeq,["preparing"],"running",{worktreePath:x,workBranch:t,baseBranch:A,conversationId:C.sessionId,sessionFile:C.sessionFile,runSeq:d.runSeq}))return c.live.delete(C.sessionId),c.byTask.delete(a),C.shutdown().catch(()=>void 0),!1;(0,i.Q1)(b,{taskId:a,kind:"started",actor:"engine",payload:{runSeq:d.runSeq,branch:t}});let E=(j=d,k=B,e=j.config?.prompt??j.title,f=k.stagePrompts?.work??k.stagePrompts?.all??"",l=j.config?.agentType??k.defaultAgentType,n=`You are working on task "${j.title}" in a git worktree branch.
|
|
1
|
+
exports.id=4253,exports.ids=[4253],exports.modules={12144:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{OF:()=>B});var e=c(75430),f=c(29862),g=c(55511),h=c(29021),i=c(33873),j=c(18437),k=c(17114),l=c(88250),m=c(96515),n=c(15253),o=c(69453),p=c(61577),q=c(44290),r=c(30116),s=c(97563),t=c(57856),u=c(29040),v=c(46162),w=a([e,f,m,n,o,q,u,v]);[e,f,m,n,o,q,u,v]=w.then?(await w)():w;let C=new Set(["agent_start","message_start","message_update","message_end","agent_end","entry_appended","session_info_changed","queue_update","prompt_done","agent_settled","auto_compaction_end","compaction_end"]),D=["read","bash","edit","write","grep","find","ls"];class E extends e.Theme{constructor(){super({thinkingXhigh:""},{selectedBg:""},"truecolor")}fg(...[,a]){return a}bg(...[,a]){return a}bold(a){return a}italic(a){return a}underline(a){return a}inverse(a){return a}strikethrough(a){return a}getFgAnsi(){return""}getBgAnsi(){return""}getThinkingBorderColor(){return a=>a}getBashModeBorderColor(){return a=>a}}let F=new E,G=new f.KeybindingsManager(f.TUI_KEYBINDINGS);function x(a,b){if(0===b.length)return[];let c=new Set(D),d=a.getAllTools().map(a=>a.name).filter(a=>!c.has(a));return[...new Set([...b,...d])]}class H{constructor(a,b){this.inner=a,this.cwd=b,this.listeners=[],this.pendingUiResponses=new Map,this.pendingUiRequests=new Map,this.activeCustomUis=new Map,this.extensionStatuses=new Map,this.extensionWidgets=new Map,this.promptRunning=!1,this.promptPhase=null,this.extensionsBound=!1,this.extensionBindingPromise=null,this.extensionBindingError=null,this.forceEmptySystemPrompt=!1,this.unsubscribe=null,this.idleTimer=null,this.queueMirror=[],this.queueRecovery=[],this.pendingQueueHints={steer:[],followUp:[]},this.queueMutationTail=Promise.resolve(),this.onDestroyCallback=null,this.shutdownPromise=null,this._alive=!0,this.approvalPolicy=(0,r.ni)((0,q.lN)().permissionRules),this.approvalMode=(0,q.lN)().toolApprovalMode,this.pendingApprovals=new Map,this.approvalSeq=0,this.approvalHookInstalled=!1,this.opencodeSwitchUnsubscribe=null;const c=(0,q.lN)(a.sessionId);this.approvalMode=c.toolApprovalMode,this.approvalPolicy=(0,r.ni)(c.permissionRules)}get sessionId(){return this.inner.sessionId}get sessionFile(){return this.inner.sessionFile??""}isAlive(){return this._alive}isRunning(){return this._alive&&(this.promptRunning||this.inner.isStreaming||this.inner.isCompacting||this.inner.isBashRunning)}runtimeSnapshot(){let a=this.inner.isStreaming,b=this.promptRunning,c=this.inner.isCompacting,d=this.inner.isBashRunning;return{id:this.sessionId,running:this.isRunning(),isStreaming:a,isPromptRunning:b,isCompacting:c,isBashRunning:d,phase:d?"running_command":this.promptPhase??(a||b||c?"waiting_model":null)}}start(){this.installApprovalHook(),this.opencodeSwitchUnsubscribe=(0,v.rY)(a=>{this.emit({type:"opencode_zen_switch",...a})}),this.unsubscribe=this.inner.subscribe(a=>{("agent_end"===a.type||"message_end"===a.type||"entry_appended"===a.type||"session_info_changed"===a.type)&&(0,o.mD)(),("agent_end"===a.type||"agent_settled"===a.type||"auto_compaction_end"===a.type||"compaction_end"===a.type)&&this.resetIdleTimer(),"queue_update"===a.type&&this.reconcileQueue(a.steering,a.followUp),C.has(a.type)&&function(a,b,c){let d=globalThis.__piSessionBusListeners;if(!d||0===d.size)return;if("message_update"!==a)return A({type:a,sessionId:b,payload:c});let e=J.get(b),f={type:a,sessionId:b,payload:c};e?(clearTimeout(e.timer),e.event=f):J.set(b,{event:f,timer:setTimeout(()=>{let a=J.get(b);a&&(J.delete(b),A(a.event))},80)})}(a.type,this.sessionId,a),this.emit(a),z()}),this.resetIdleTimer(),z()}loadQueueRecovery(){if(!this.sessionFile)return;let a=this.inner.getSteeringMessages(),b=this.inner.getFollowUpMessages();if(a.length||b.length){this.queueRecovery=[],this.reconcileQueue([...a],[...b]);return}this.queueRecovery=(0,k.ov)(this.sessionFile)}setApprovalMode(a){this.approvalMode=a}setApprovalPolicy(a){this.approvalPolicy=a}installApprovalHook(){if(this.approvalHookInstalled||!this.inner.agent?.beforeToolCall)return;this.approvalHookInstalled=!0;let a=this.inner.agent.beforeToolCall;this.inner.agent.beforeToolCall=async b=>{let c=b.toolCall?.name??"",d=b.args,e=(0,r.LD)(this.approvalPolicy,c,{mode:this.approvalMode,readOnly:s.MJ.has(c.toLowerCase()),args:d});if("deny"===e)return{block:!0,reason:`Denied by policy rule: ${c} is not permitted.`};if("ask"===e){let a=await this.askForApproval(c,d);if(!a.approve)return{block:!0,reason:a.reason||`Rejected by user: ${c}`}}return a?a(b):void 0}}askForApproval(a,b){return new Promise(c=>{let d=`approval-${++this.approvalSeq}`,e=setTimeout(()=>{this.pendingApprovals.delete(d),this.emit({type:"tool_approval_resolved",id:d,approve:!1,reason:`Approval request timed out after 120s: ${a}`}),c({approve:!1,reason:`Approval request timed out after 120s: ${a}`})},12e4);this.pendingApprovals.set(d,{resolve:c,timer:e,toolName:a}),this.emit({type:"tool_approval_request",id:d,toolName:a,args:function(a){if(null===a||"object"!=typeof a)return a;let b={};for(let[c,d]of Object.entries(a))if(null!=d&&"content"!==c&&"data"!==c&&"newString"!==c&&"oldString"!==c){if("string"==typeof d){b[c]=d.length>200?`${d.slice(0,200)}…`:d;continue}if("number"==typeof d||"boolean"==typeof d){b[c]=d;continue}b[c]=Array.isArray(d)?`[array:${d.length}]`:"[object]"}return b}(b)})})}resolveApproval(a,b,c){let d=this.pendingApprovals.get(a);return!!d&&(this.pendingApprovals.delete(a),clearTimeout(d.timer),d.resolve({approve:b,reason:c}),!0)}rejectAllApprovals(a){for(let[b,c]of this.pendingApprovals)this.pendingApprovals.delete(b),clearTimeout(c.timer),c.resolve({approve:!1,reason:a})}getPendingApprovals(){return Array.from(this.pendingApprovals.entries()).map(([a,b])=>({id:a,toolName:b.toolName}))}pendingRecoveryView(){return this.queueRecovery.map(({id:a,kind:b,text:c,images:d,queuedAt:e})=>({id:a,kind:b,text:c,hasImages:!!d?.length,queuedAt:e}))}persistQueue(){if(!this.sessionFile)return;let a=[...this.queueRecovery,...this.queueMirror];a.length?(0,k.pj)(this.sessionFile,a):(0,k.wx)(this.sessionFile)}hintQueueImages(a,b){this.pendingQueueHints[a].push(b?.length?b:[])}reconcileQueue(a,b){let c=(a,b)=>{if(!b)return this.queueMirror.filter(b=>b.kind===a);let c=new Set;return b.map(b=>{let d=this.queueMirror.find(d=>d.kind===a&&d.text===b&&!c.has(d));if(d)return c.add(d),d;let e=(0,k.Gc)(a,b,this.pendingQueueHints[a].shift());return c.add(e),e})};this.queueMirror=[...c("steer",a),...c("followUp",b)],this.persistQueue()}async requeueEntry(a){let b=(0,j.kc)(a.images);if(b)throw Error(b);this.hintQueueImages(a.kind,a.images),"steer"===a.kind?await this.inner.steer(a.text,a.images):await this.inner.followUp(a.text,a.images)}ensureMirrored(a){this.queueMirror.find(b=>b.kind===a.kind&&b.text===a.text)||(this.queueMirror.push({...a}),this.pendingQueueHints[a.kind].pop())}async replaceLiveQueue(a,b){for(let b of(this.inner.clearQueue(),this.pendingQueueHints={steer:[],followUp:[]},a))await this.requeueEntry(b);for(let a of b)await this.requeueEntry(a);let c={steering:[...this.inner.getSteeringMessages()],followUp:[...this.inner.getFollowUpMessages()]};return this.reconcileQueue(c.steering,c.followUp),c}async withQueueMutation(a){let b,c=this.queueMutationTail;this.queueMutationTail=new Promise(a=>{b=a}),await c;try{return await a()}finally{b()}}async mutateLiveQueue(a,b){return this.withQueueMutation(async()=>{let c=this.queueMirror.filter(a=>"steer"===a.kind),d=this.queueMirror.filter(a=>"followUp"===a.kind),e=b("steer"===a?c:d),f=await this.replaceLiveQueue(c,d);return{value:e,queues:f}})}validateQueueEntries(a){for(let b of a){if("steer"!==b.kind&&"followUp"!==b.kind||"string"!=typeof b.text)continue;let a=(0,j.kc)(b.images);if(a)throw Error(a)}}runAgentContinue(){if(this.inner.isStreaming||this.inner.isBashRunning||this.promptRunning)return;let a=[...this.queueMirror];0!==a.length&&(this.queueMirror=[],this.persistQueue(),this.promptRunning=!0,this.promptPhase="waiting_model",this.bootstrapQueuedRun(a))}async bootstrapQueuedRun(a){for(let b of(this.inner.clearQueue(),this.pendingQueueHints={steer:[],followUp:[]},a))try{await this.inner.prompt(b.text,b.images?.length?{images:b.images}:void 0)}catch(a){this.promptRunning=!1,this.promptPhase=null,this.resetIdleTimer(),(0,o.mD)(),this.emit({type:"prompt_error",errorMessage:a instanceof Error?a.message:String(a)}),this.emit({type:"prompt_done"});return}this.promptRunning=!1,this.promptPhase=null,this.resetIdleTimer(),this.emit({type:"prompt_done"})}setForceEmptySystemPrompt(a){this.forceEmptySystemPrompt=a,this.applyForcedEmptySystemPrompt()}beginExtensionBinding(a={}){this.ensureExtensionsBound(a).catch(a=>{console.error("[pi-web] failed to dispatch session_start to extensions:",a instanceof Error?a.message:a)})}ensureExtensionsBound(a={}){return(a.forceEmptySystemPrompt&&(this.forceEmptySystemPrompt=!0),this.extensionsBound)?(this.applyForcedEmptySystemPrompt(),Promise.resolve()):(this.extensionBindingPromise||(this.extensionBindingError=null,this.extensionBindingPromise=(async()=>{if(!this._alive)return;let a=this.createExtensionUiContext();if("function"==typeof this.inner.bindExtensions){let b=this.inner.bindExtensions;await b.call(this.inner,{uiContext:a,mode:"rpc",commandContextActions:this.createExtensionCommandContextActions(),shutdownHandler:()=>this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"notify",notifyType:"warning",message:"Extension requested shutdown, but shutdown is not supported in pi-web."}),onError:a=>this.emit({type:"extension_error",extensionPath:a.extensionPath,event:a.event,error:a.error})})}else this.inner.extensionRunner.setUIContext?.(a,"rpc");this.extensionsBound=!0,this.applyForcedEmptySystemPrompt(),console.log(`[pi-web] session_start dispatched to extensions for session ${this.inner.sessionId}`)})().catch(a=>{throw this.extensionBindingError=a,a})),this.extensionBindingPromise)}async waitForExtensionsBound(){try{this.extensionBindingPromise&&await this.extensionBindingPromise}catch(a){throw a instanceof Error?a:Error(String(a))}if(this.extensionBindingError)throw this.extensionBindingError instanceof Error?this.extensionBindingError:Error(String(this.extensionBindingError))}shouldWaitForExtensions(a){return"prompt"===a||"steer"===a||"follow_up"===a||"get_commands"===a}applyForcedEmptySystemPrompt(){this.forceEmptySystemPrompt&&this.inner.agent.state&&(this.inner.agent.state.systemPrompt="")}emit(a){for(let b of this.listeners)b(a)}resetIdleTimer(){this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=setTimeout(()=>{this.isRunning()?this.resetIdleTimer():this.shutdown().catch(a=>{console.error("[pi-web] failed to shut down idle session:",a instanceof Error?a.message:a)})},18e5)}persistBashOnlySession(){let a=this.inner.sessionManager,b=a.getSessionFile();if(!b||(0,h.existsSync)(b))return;let c=a.getHeader();if(!c)return;let d=[c,...a.getEntries()].map(a=>JSON.stringify(a)).join("\n")+"\n";(0,h.writeFileSync)(b,d,{encoding:"utf8",flag:"wx"}),a.flushed=!0,(0,o.O8)(this.inner.sessionId,b)}onEvent(a){for(let b of(this.listeners.push(a),this.pendingUiRequests.values()))a(b);return()=>{let b=this.listeners.indexOf(a);-1!==b&&this.listeners.splice(b,1)}}onDestroy(a){this.onDestroyCallback=a}async send(a){this.resetIdleTimer();let b=a.type;if("prompt"===b||"steer"===b||"follow_up"===b||"requeue_at"===b){let b=(0,j.kc)(a.images);if(b)throw Error(b)}switch(this.shouldWaitForExtensions(b)&&await this.waitForExtensionsBound(),b){case"prompt":{if(this.inner.isBashRunning)throw Error("Cannot send a prompt while a shell command is running");let b=a.images,c=a.streamingBehavior;return c&&this.inner.isStreaming&&this.hintQueueImages("followUp"===c?"followUp":"steer",b),this.promptRunning=!0,this.promptPhase=String(a.message??"").trimStart().startsWith("/")?"running_command":"waiting_model",z(),this.inner.prompt(a.message,{...b?.length?{images:b}:{},...c?{streamingBehavior:c}:{},source:"rpc"}).then(()=>{this.promptRunning=!1,this.promptPhase=null,this.resetIdleTimer(),c||this.emit({type:"prompt_done"}),z()}).catch(a=>{this.promptRunning=!1,this.promptPhase=null,this.resetIdleTimer(),(0,o.mD)(),this.emit({type:"prompt_error",errorMessage:a instanceof Error?a.message:String(a)}),c||this.emit({type:"prompt_done"}),z()}),null}case"abort":return await this.inner.abort(),null;case"get_state":{let a=this.inner.model,b=this.inner.getContextUsage();return{sessionId:this.inner.sessionId,sessionFile:this.inner.sessionFile??"",isStreaming:this.inner.isStreaming,isPromptRunning:this.promptRunning,isBashRunning:this.inner.isBashRunning,isCompacting:this.inner.isCompacting,phase:this.runtimeSnapshot().phase,model:a?{id:a.id,provider:a.provider}:void 0,messageCount:0,pendingMessageCount:this.inner.pendingMessageCount,queuedMessages:{steering:[...this.inner.getSteeringMessages()],followUp:[...this.inner.getFollowUpMessages()]},pendingRecovery:this.pendingRecoveryView(),contextUsage:b?{percent:b.percent,contextWindow:b.contextWindow,tokens:b.tokens}:null,systemPrompt:this.inner.agent.state?.systemPrompt??"",thinkingLevel:this.inner.agent.state?.thinkingLevel??"off",extensionStatuses:this.getExtensionStatuses(),extensionWidgets:this.getExtensionWidgets()}}case"set_model":{let{provider:b,modelId:c}=a,d=this.inner.modelRuntime.getModel(b,c);if(!d)throw Error(`Model not found: ${b}/${c}`);return await this.inner.setModel(d),(0,l.k)(),(0,o.mD)(),{id:d.id,provider:d.provider}}case"fork":{let b,c=a.entryId,d=this.inner.sessionManager,f=this.inner.sessionFile;if(!d.isPersisted())return{cancelled:!0};if(!f)throw Error("Persisted session is missing a session file");let g=d.getEntry(c);if(!g)throw Error("Invalid entry ID for forking");let h=d.getSessionDir();if(g.parentId){let a=e.SessionManager.open(f,h).createBranchedSession(g.parentId);if(!a)throw Error("Failed to create forked session");b=a}else{let a=e.SessionManager.create(d.getCwd(),h);a.newSession({parentSession:f}),b=a.getSessionFile()}let i=e.SessionManager.open(b,h).getSessionId();return(0,o.O8)(i,b),(0,o.mD)(),await this.shutdown(),{cancelled:!1,newSessionId:i}}case"navigate_tree":return{cancelled:(await this.inner.navigateTree(a.targetId,{})).cancelled};case"set_thinking_level":{let b=a.level;return this.inner.setThinkingLevel(b),"xhigh"===b&&this.inner.model?.compat?.thinkingFormat==="deepseek"&&this.inner.agent?.state&&(this.inner.agent.state.thinkingLevel="xhigh"),(0,o.mD)(),null}case"compact":try{return await this.inner.compact(a.customInstructions)}finally{(0,o.mD)()}case"set_session_name":{let b=a.name?.trim();if(!b)throw Error("Session name cannot be empty");return this.inner.setSessionName(b),(0,o.mD)(),null}case"get_session_stats":return{...this.inner.getSessionStats(),sessionName:this.inner.sessionManager.getSessionName()};case"get_last_assistant_text":return{text:this.inner.getLastAssistantText()??""};case"clear_queue":return this.queueMirror=[],this.pendingQueueHints={steer:[],followUp:[]},this.persistQueue(),this.inner.clearQueue();case"move_queue":{let b=a.kind,c=Number(a.fromIndex),d=Number(a.toIndex);if("steer"!==b&&"followUp"!==b||!Number.isInteger(c)||!Number.isInteger(d))throw Error("move_queue requires a queue kind and integer indexes");let{queues:e}=await this.mutateLiveQueue(b,a=>{if(c<0||c>=a.length||d<0||d>=a.length)throw Error("move_queue index out of range");let[b]=a.splice(c,1);a.splice(d,0,b)});return e}case"recall_queue_item":{let b=a.kind,c=Number(a.index);if("steer"!==b&&"followUp"!==b||!Number.isInteger(c))throw Error("recall_queue_item requires a queue kind and integer index");let{value:d,queues:e}=await this.mutateLiveQueue(b,a=>{if(c<0||c>=a.length)throw Error("recall_queue_item index out of range");let[b]=a.splice(c,1);return b});return{entry:{text:d.text,images:d.images??[]},...e}}case"requeue_at":{let b=a.kind,c=Number(a.index),d=a.text;if("steer"!==b&&"followUp"!==b||!Number.isInteger(c)||!d?.trim())throw Error("requeue_at requires a queue kind, integer index, and text");let e=a.images,{queues:f}=await this.mutateLiveQueue(b,a=>{if(c<0||c>a.length)throw Error("requeue_at index out of range");a.splice(c,0,(0,k.Gc)(b,d,e))});return f}case"remove_queue_item":{let b=a.kind,c=Number(a.index);if("steer"!==b&&"followUp"!==b||!Number.isInteger(c))throw Error("remove_queue_item requires a queue kind and integer index");let{queues:d}=await this.mutateLiveQueue(b,a=>{if(c<0||c>=a.length)throw Error("remove_queue_item index out of range");a.splice(c,1)});return d}case"resolve_recovery":{let b=new Set(a.keep??[]),c=new Set(a.discard??[]),d=!0===a.continueRun,e=0;for(let a of this.queueRecovery)b.has(a.id)&&(await this.requeueEntry(a),this.ensureMirrored(a),e+=1);return this.queueRecovery=this.queueRecovery.filter(a=>!b.has(a.id)&&!c.has(a.id)),this.persistQueue(),d&&e>0&&this.runAgentContinue(),{remaining:this.pendingRecoveryView(),kept:e}}case"export_queue":return{live:this.queueMirror.map(a=>({...a})),recovery:this.queueRecovery.map(a=>({...a}))};case"import_queue":{let b=a.entries;if(!Array.isArray(b))throw Error("import_queue requires entries[]");this.validateQueueEntries(b);let c=0;for(let a of b){if("steer"!==a.kind&&"followUp"!==a.kind||"string"!=typeof a.text)continue;let b=(0,k.Gc)(a.kind,a.text,a.images);await this.requeueEntry(b),this.ensureMirrored(b),c+=1}return this.persistQueue(),{imported:c,steering:[...this.inner.getSteeringMessages()],followUp:[...this.inner.getFollowUpMessages()]}}case"stage_recovery":{let b=a.entries;if(!Array.isArray(b))throw Error("stage_recovery requires entries[]");this.validateQueueEntries(b);let c=0;for(let a of b)("steer"===a.kind||"followUp"===a.kind)&&"string"==typeof a.text&&(this.queueRecovery.push((0,k.Gc)(a.kind,a.text,a.images)),c+=1);return this.persistQueue(),{staged:c,pendingRecovery:this.pendingRecoveryView()}}case"steer":{let b=a.images;this.hintQueueImages("steer",b),this.promptPhase="waiting_model",z();try{await this.inner.steer(a.message,b?.length?b:void 0)}finally{this.promptPhase=null,z()}return null}case"follow_up":{let b=a.images;this.hintQueueImages("followUp",b),this.promptPhase="waiting_model",z();try{await this.inner.followUp(a.message,b?.length?b:void 0)}finally{this.promptPhase=null,z()}return null}case"get_tools":{let a=this.inner.getAllTools(),b=new Set(this.inner.getActiveToolNames());return a.map(a=>({name:a.name,description:a.description,active:b.has(a.name)}))}case"get_commands":{let a=[];for(let b of this.inner.extensionRunner.getRegisteredCommands())a.push({name:b.invocationName,description:b.description,source:"extension",sourceInfo:b.sourceInfo});for(let b of this.inner.promptTemplates)a.push({name:b.name,description:b.description,source:"prompt",sourceInfo:b.sourceInfo});for(let b of this.inner.resourceLoader.getSkills().skills)a.push({name:`skill:${b.name}`,description:b.description,source:"skill",sourceInfo:b.sourceInfo});return{commands:a}}case"set_tools":{let b=a.toolNames;return this.setForceEmptySystemPrompt(0===b.length),this.inner.setActiveToolsByName(x(this.inner,b)),this.applyForcedEmptySystemPrompt(),null}case"reload":return await this.waitForExtensionsBound(),this.extensionStatuses.clear(),this.extensionWidgets.clear(),this.syncProjectTrust(),await this.inner.reload(),"function"!=typeof this.inner.bindExtensions&&this.inner.extensionRunner.setUIContext?.(this.createExtensionUiContext(),"rpc"),this.applyForcedEmptySystemPrompt(),{success:!0};case"abort_compaction":return this.inner.abortCompaction(),null;case"resolve_approval":return{resolved:this.resolveApproval(a.id,!!a.approve,a.reason)};case"set_approval_mode":{let b=a.mode;if("ask"!==b&&"auto"!==b&&"yolo"!==b)throw Error(`Invalid approval mode: ${String(b)}`);return this.setApprovalMode(b),null}case"set_approval_policy":{let b=a.policy;return this.setApprovalPolicy((0,r.ni)(b)),null}case"get_approval_state":return{mode:this.approvalMode,pending:this.getPendingApprovals()};case"extension_ui_response":return this.resolveExtensionUiResponse(a),null;case"extension_ui_input":return this.handleExtensionUiInput(a.id,a.data),null;case"bash":{if(this.promptRunning||this.inner.isStreaming||this.inner.isCompacting||this.inner.isBashRunning)throw Error("Cannot run a shell command while the session is busy");let b=this.inner.executeBash(a.command,void 0,{excludeFromContext:a.excludeFromContext});try{let a=await b;return this.persistBashOnlySession(),a}finally{this.resetIdleTimer(),(0,o.mD)(),z()}}case"abort_bash":return this.inner.abortBash(),z(),null;default:throw Error(`Unsupported command: ${b}`)}}destroy(){if(this._alive){for(let a of(this._alive=!1,this.idleTimer&&clearTimeout(this.idleTimer),this.inner.isBashRunning&&this.inner.abortBash(),this.unsubscribe?.(),this.opencodeSwitchUnsubscribe?.(),this.opencodeSwitchUnsubscribe=null,this.pendingUiResponses.values()))a.cancel();for(let a of Array.from(this.activeCustomUis.keys()))this.closeCustomUi(a,void 0);this.pendingUiResponses.clear(),this.pendingUiRequests.clear(),this.rejectAllApprovals("Session closed while approval was pending");try{this.inner.dispose()}finally{this.onDestroyCallback?.(),z()}}}async shutdown(){return this.shutdownPromise?this.shutdownPromise:this._alive?(this.shutdownPromise=(async()=>{try{try{await this.waitForExtensionsBound()}catch(a){console.error("[pi-web] extension binding failed before session shutdown:",a instanceof Error?a.message:a)}await this.inner.extensionRunner.emit?.({type:"session_shutdown",reason:"quit"})}finally{this.destroy()}})(),this.shutdownPromise):void 0}resolveExtensionUiResponse(a){let b=this.pendingUiResponses.get(a.id);b&&b.resolve(a)}getExtensionStatuses(){return Array.from(this.extensionStatuses,([a,b])=>({key:a,text:b}))}getExtensionWidgets(){return Array.from(this.extensionWidgets.values())}getCustomUiWidth(a){if(!a||"object"!=typeof a)return t.p1;let b=a.overlayOptions,c="function"==typeof b?b():b;if(!c||"object"!=typeof c)return t.p1;let d=c.width;return"number"==typeof d&&Number.isFinite(d)?Math.max(40,Math.min(140,Math.round(d))):t.p1}emitCustomUiRender(a,b){let c;try{c=b.component.render(b.width)}catch(a){c=[`Extension custom UI render failed: ${a instanceof Error?a.message:String(a)}`]}let d={type:"extension_ui_request",id:a,method:"custom",lines:c};this.pendingUiRequests.set(a,d),this.emit(d)}closeCustomUi(a,b){let c=this.activeCustomUis.get(a);if(c&&!c.settled){c.settled=!0,this.activeCustomUis.delete(a),this.pendingUiRequests.delete(a);try{c.component.dispose?.()}catch{}this.emit({type:"extension_ui_request",id:a,method:"custom",lines:[],closed:!0}),c.resolve(b)}}handleExtensionUiInput(a,b){let c=this.activeCustomUis.get(a);if(c&&"string"==typeof b)try{c.component.handleInput?.(b),this.activeCustomUis.has(a)&&this.emitCustomUiRender(a,c)}catch(b){this.closeCustomUi(a,void 0),this.emit({type:"extension_error",extensionPath:`custom-ui:${a}`,event:"custom_ui_input",error:b instanceof Error?b.message:String(b)})}}requestExtensionCustomUi(a,b){if("function"!=typeof a)return Promise.resolve(void 0);let c=(0,g.randomUUID)(),d=this.getCustomUiWidth(b);return new Promise(b=>{let e=!1,f=(0,t.TQ)(()=>{let a=this.activeCustomUis.get(c);a&&this.emitCustomUiRender(c,a)},d),g=a=>{e||(e=!0,b(a))},h=a=>{this.activeCustomUis.has(c)?this.closeCustomUi(c,a):g(a)};Promise.resolve().then(()=>a(f,F,G,h)).then(a=>{if(e){try{a?.dispose?.()}catch{}return}if(!a||"object"!=typeof a||"function"!=typeof a.render)return void g(void 0);let b={component:a,width:d,resolve:a=>g(a),settled:!1};this.activeCustomUis.set(c,b),this.emitCustomUiRender(c,b)}).catch(a=>{e||(this.emit({type:"extension_error",extensionPath:`custom-ui:${c}`,event:"custom_ui",error:a instanceof Error?a.message:String(a)}),g(void 0))})})}requestExtensionUi(a,b,c,d,e){if(e?.aborted)return Promise.resolve(b);let f=(0,g.randomUUID)(),h={type:"extension_ui_request",id:f,...a,...d?{timeout:d,expiresAt:Date.now()+d}:{}};return new Promise(a=>{let g,i=()=>{g&&clearTimeout(g),e?.removeEventListener("abort",k),this.pendingUiRequests.delete(f),this.pendingUiResponses.delete(f)},j=b=>{i(),a(b)},k=()=>j(b);d&&(g=setTimeout(()=>j(b),d)),e?.addEventListener("abort",k,{once:!0}),this.pendingUiRequests.set(f,h),this.pendingUiResponses.set(f,{resolve:a=>j(c(a)),cancel:()=>j(b)}),this.emit(h)})}createExtensionUiContext(){return{select:(a,b,c)=>this.requestExtensionUi({method:"select",title:a,options:b,...c?.timeout?{timeout:c.timeout}:{}},void 0,a=>"value"in a?a.value:void 0,c?.timeout,c?.signal),confirm:(a,b,c)=>this.requestExtensionUi({method:"confirm",title:a,message:b,...c?.timeout?{timeout:c.timeout}:{}},!1,a=>"confirmed"in a&&a.confirmed,c?.timeout,c?.signal),input:(a,b,c)=>this.requestExtensionUi({method:"input",title:a,...void 0!==b?{placeholder:b}:{},...c?.timeout?{timeout:c.timeout}:{}},void 0,a=>"value"in a?a.value:void 0,c?.timeout,c?.signal),editor:(a,b,c)=>this.requestExtensionUi({method:"editor",title:a,...void 0!==b?{prefill:b}:{},...c?.timeout?{timeout:c.timeout}:{}},void 0,a=>"value"in a?a.value:void 0,c?.timeout,c?.signal),notify:(a,b)=>{this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"notify",message:a,notifyType:b})},onTerminalInput:()=>()=>{},setStatus:(a,b)=>{void 0===b?this.extensionStatuses.delete(a):this.extensionStatuses.set(a,b),this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"setStatus",statusKey:a,statusText:b})},setWorkingMessage:()=>{},setWorkingVisible:()=>{},setWorkingIndicator:()=>{},setHiddenThinkingLabel:()=>{},setWidget:(a,b,c)=>{(void 0===b||Array.isArray(b))&&(void 0===b?this.extensionWidgets.delete(a):this.extensionWidgets.set(a,{key:a,lines:b,placement:c?.placement??"aboveEditor"}),this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"setWidget",widgetKey:a,widgetLines:b,widgetPlacement:c?.placement}))},setFooter:()=>{},setHeader:()=>{},setTitle:a=>{this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"setTitle",title:a})},custom:(a,b)=>this.requestExtensionCustomUi(a,b),pasteToEditor:a=>{this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"set_editor_text",text:a})},setEditorText:a=>{this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"set_editor_text",text:a})},getEditorText:()=>"",addAutocompleteProvider:()=>{},setEditorComponent:()=>{},getEditorComponent:()=>void 0,get theme(){return F},getAllThemes:()=>[],getTheme:()=>void 0,setTheme:()=>({success:!1,error:"Theme switching is not supported in pi-web extension UI yet"}),getToolsExpanded:()=>!1,setToolsExpanded:()=>{}}}syncProjectTrust(){this.inner.settingsManager.setProjectTrusted((0,n.Y1)(this.cwd,(0,e.getAgentDir)()).trusted)}createExtensionCommandContextActions(){return{waitForIdle:async()=>{let a=this.inner.agent;await a.waitForIdle?.()},newSession:async()=>({cancelled:!0}),fork:async()=>({cancelled:!0}),navigateTree:async(a,b)=>({cancelled:(await this.inner.navigateTree(a,{summarize:b?.summarize})).cancelled}),switchSession:async()=>({cancelled:!0}),reload:async()=>{this.extensionStatuses.clear(),this.extensionWidgets.clear(),this.syncProjectTrust(),await this.inner.reload({beforeSessionStart:()=>{this.inner.extensionRunner.setUIContext?.(this.createExtensionUiContext(),"rpc")}}),this.applyForcedEmptySystemPrompt()}}}}function y(){if(!globalThis.__piSessions){globalThis.__piSessions=new Map;let a=()=>Promise.allSettled(Array.from(globalThis.__piSessions?.values()??[],a=>a.shutdown()));process.once("exit",()=>globalThis.__piSessions?.forEach(a=>a.destroy())),process.once("SIGINT",()=>{a().finally(()=>process.exit(130))}),process.once("SIGTERM",()=>{a().finally(()=>process.exit(143))})}return globalThis.__piSessions}let I="";function z(){let a=globalThis.__piRunningListeners;if(!a||0===a.size){I="";return}let b=function(){let a=[];for(let[b,c]of y()){if(!c.isAlive())continue;let d=c.runtimeSnapshot();d.running&&a.push({...d,id:d.id||b})}return a}(),c=JSON.stringify(b);if(c!==I)for(let d of(I=c,a))try{d(b)}catch{}}let J=new Map;function A(a){let b=globalThis.__piSessionBusListeners;if(b&&0!==b.size)for(let c of b)try{c(a)}catch{}}async function B(a,b,c,d={}){let f,g,j,{toolNames:k,initialModel:q,thinkingLevel:r}=d,s=y(),t=(globalThis.__piStartLocks||(globalThis.__piStartLocks=new Map),globalThis.__piStartLocks),u=s.get(a);if(u?.isAlive())return{session:u,realSessionId:a};let w=t.get(a);if(w)return w;if(b)f=e.SessionManager.open(b,void 0);else{if(!c)throw Error("cwd is required for a new session");f=e.SessionManager.create(c,void 0)}let z=f.getCwd(),A=(globalThis.__piStartingSessionCwds||(globalThis.__piStartingSessionCwds=new Map),g=globalThis.__piStartingSessionCwds,j=function(a){let b=(0,i.resolve)(a);try{return(0,h.realpathSync)(b)}catch{return b}}(z),g.set(j,(g.get(j)??0)+1),()=>{let a=(g.get(j)??1)-1;a>0?g.set(j,a):g.delete(j)}),C=(async()=>{let a;(0,e.initTheme)();let b=(0,e.getAgentDir)();void 0!==k&&(a=0===k.length?[]:void 0);let c=(0,n.Fk)(z,b),d=await (0,e.createAgentSessionServices)({cwd:z,agentDir:b,...c?{resourceLoaderReloadOptions:c}:{}});(0,v.MO)()&&await (0,v.zB)(d.modelRuntime);let g=await (0,m.py)(d.modelRuntime,d.settingsManager.getEnabledModels()),h=d.settingsManager.getDefaultProvider(),i=d.settingsManager.getDefaultModel(),j=f.getBranch().some(a=>"message"===a.type)?{scopedModels:[...g.scopedModels]}:(0,m.IR)(g,{...q?{requestedModel:q}:{},...h&&i?{defaultModel:{provider:h,modelId:i}}:{},...r?{thinkingLevel:r}:{}}),{session:t}=await (0,e.createAgentSessionFromServices)({services:d,sessionManager:f,...j.model?{model:j.model}:{},...j.thinkingLevel?{thinkingLevel:j.thinkingLevel}:{},...j.scopedModels.length>0?{scopedModels:j.scopedModels}:{},...void 0!==a?{tools:a}:{}}),u=t.agent,w=u.streamFunction;u.streamFunction=(a,b,c)=>w(a,b,(0,v.qk)(a.provider)?{...c,fetch:(0,v.xl)(c?.fetch,c?.sessionId)}:c),(await (0,p.o)(d.settingsManager,{...q?{model:q}:{},...r?{thinkingLevel:r}:{}},{...t.model?{model:{provider:t.model.provider,modelId:t.model.id}}:{},thinkingLevel:t.agent.state?.thinkingLevel??"off",supportsThinking:t.supportsThinking()})).modelDefaultChanged&&(0,l.k)(),k&&k.length>0&&t.setActiveToolsByName(x(t,k));let y=new H(t,z);k?.length===0&&y.setForceEmptySystemPrompt(!0),y.start(),y.loadQueueRecovery();let A=t.sessionId,B=t.sessionFile;return B&&(0,o.O8)(A,B),y.onDestroy(()=>s.delete(A)),s.set(A,y),y.beginExtensionBinding({forceEmptySystemPrompt:k?.length===0}),{session:y,realSessionId:A}})().finally(()=>{t.delete(a),A()});return t.set(a,C),C}d()}catch(a){d(a)}})},12817:a=>{"use strict";a.exports=function(a){if(null===a||"object"!=typeof a)return a;if(a instanceof Object)var c={__proto__:b(a)};else var c=Object.create(null);return Object.getOwnPropertyNames(a).forEach(function(b){Object.defineProperty(c,b,Object.getOwnPropertyDescriptor(a,b))}),c};var b=Object.getPrototypeOf||function(a){return a.__proto__}},12969:(a,b,c)=>{"use strict";c.d(b,{$:()=>g});var d=c(55511),e=c(29021),f=c(33873);function g(a,b){let c=(0,f.dirname)(a),g=(0,f.join)(c,`.${(0,f.basename)(a)}-${(0,d.randomUUID)()}.tmp`),h=!1;try{(0,e.writeFileSync)(g,b,{encoding:"utf8",flag:"wx",mode:384,flush:!0}),(0,e.renameSync)(g,a)}catch(a){throw h=!0,a}finally{try{(0,e.unlinkSync)(g)}catch(a){if("ENOENT"!==a.code&&!h)throw a}}}},13884:(a,b,c)=>{"use strict";let d=c(93329);a.exports={toPromise:function(a){return(...b)=>new Promise((c,d)=>{b.push((a,b)=>{a?d(a):c(b)}),a(...b)})},toSync:function(a){return(...b)=>{let c,d;if(b.push((a,b)=>{c=a,d=b}),a(...b),c)throw c;return d}},toSyncOptions:function(a){var b;let c;if((a={...a}).fs=(c={...b=a.fs||d},["mkdir","realpath","stat","rmdir","utimes"].forEach(a=>{c[a]=(...c)=>{let d,e=c.pop();try{d=b[`${a}Sync`](...c)}catch(a){return e(a)}e(null,d)}}),c),"number"==typeof a.retries&&a.retries>0||a.retries&&"number"==typeof a.retries.retries&&a.retries.retries>0)throw Object.assign(Error("Cannot use retries with the sync api"),{code:"ESYNC"});return a}}},14253:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{ensureTaskEngine:()=>n});var e=c(29021),f=c(33873),g=c(79646),h=c(62391),i=c(65562),j=c(12144),k=a([i,j]);[i,j]=k.then?(await k)():k;let D=new Set,E=null,F="__piTaskEngine";function l(){return globalThis[F]??E}function m(){let a=l();if(!a)throw Error("task engine not running");return a}function n(){if(l())return!0;if(!function(){let a=(0,i.z1)("__engine__"),b=(0,f.join)(a,"engine.lock");try{if((0,e.mkdirSync)(a,{recursive:!0}),(0,e.existsSync)(b)&&!function(a){try{let b=Number((0,e.readFileSync)(a,"utf8").trim());if(Number.isInteger(b)&&b>0&&function(a){try{return process.kill(a,0),!0}catch{return!1}}(b))return!1;return(0,e.unlinkSync)(a),!0}catch{try{return(0,e.unlinkSync)(a),!0}catch{return!1}}}(b))return!1;let c=(0,e.openSync)(b,"wx");return(0,e.writeFileSync)(c,String(process.pid)),globalThis.__taskEngineLockFd=c,!0}catch{return!1}}())return!1;let a={live:new Map,byTask:new Map,launching:new Map,pumpLocks:new Map,reconcileTimer:null,stopped:!1};return E=a,globalThis[F]=a,B(),a.reconcileTimer=setInterval(()=>{C()},3e4),!0}function o(){return new Date().toISOString()}function p(a,b,c="engine",d){(0,i.fd)(a),b&&(0,i.Q1)(a.projectRoot,{taskId:a.id,kind:b,actor:c,payload:d??null});var e={type:"upsert",id:a.id};for(let a of D)a(e)}function q(a,b,c,d,f){let g=function(a){for(let b of l()?.byTask.values()??[])if(b.taskId===a)return(0,i._o)(b.projectRoot,a)??null;let b=(0,i.z1)("__engine__").replace(/__engine__$/,"");if(!(0,e.existsSync)(b))return null;for(let c of(0,e.readdirSync)(b,{withFileTypes:!0})){if(!c.isDirectory()||"__engine__"===c.name)continue;let b=(0,i._o)(A(c.name),a);if(b)return b}return null}(a);if(!g||g.runSeq!==b||!c.includes(g.status))return null;let h={...g,...f,status:d,updatedAt:o()};return p(h),h}async function r(a){let b=m(),c=(b.pumpLocks.get(a)??Promise.resolve()).then(()=>s(a));b.pumpLocks.set(a,c.catch(()=>void 0)),await c}async function s(a){let b=m();if(b.stopped)return;let c=(0,i.Rv)(a);if(!c.autoProcess)return;let d=(0,i.h6)(a),e=[...b.byTask.values()].filter(b=>b.projectRoot===a).length,f=c.maxConcurrent>0?c.maxConcurrent:1/0;if(!(e>=f))for(let c of d.filter(a=>"queued"===a.status).sort((a,b)=>a.sortOrder-b.sortOrder)){if(e>=f)break;!b.launching.has(c.id)&&await t(c.id,a)&&(e+=1)}}async function t(a,b){let c=m(),d=(0,i._o)(b,a);if(!d||"queued"!==d.status)return!1;let e=globalThis,f=e.__taskLaunchToken=(e.__taskLaunchToken??0)+1;if(c.launching.set(a,f),!q(a,d.runSeq,["queued"],"preparing",{startedAt:o()}))return c.launching.delete(a),!1;(0,i.Q1)(b,{taskId:a,kind:"preparing",actor:"engine"});try{var g,j,k;let e,f,l,n,p,r,s=await (0,h.KI)(b);if(!s.projectRoot)throw Error("Not a git repository");let t=`task/${a}-${d.title.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40)||"task"}`,x=null;try{x=(await (0,h.l)(s.projectRoot,t)).path}catch(b){let a=await u(s.projectRoot,t);if(!a)throw b;x=a}let A=s.branch??null,B=(0,i.Rv)(b);B.initCommand&&await y(x,B.initCommand);let{session:C}=await v(d,x),D={taskId:a,runSeq:d.runSeq,connectionId:C.sessionId,projectRoot:b,session:C,pendingRequests:new Set};if(c.live.set(C.sessionId,D),c.byTask.set(a,D),(g=D).session.onEvent(a=>{let b=a.type;(async()=>{var c,d;let e=m().live.get(g.connectionId);if(!e||e.taskId!==g.taskId)return;let f=(0,i._o)(g.projectRoot,g.taskId);if(f&&("running"===f.status||"awaiting_input"===f.status||"merging"===f.status))switch(b){case"extension_ui_request":{let b=a.method,c=a.id;b&&c&&["confirm","input","select","editor"].includes(b)&&(g.pendingRequests.add(c),"running"===f.status&&(q(g.taskId,g.runSeq,["running"],"awaiting_input"),(0,i.Q1)(f.projectRoot,{taskId:g.taskId,kind:"awaiting_input",actor:"engine",payload:{method:b,id:c}})));break}case"extension_ui_response":{let b=a.id;b&&g.pendingRequests.delete(b)&&0===g.pendingRequests.size&&"awaiting_input"===f.status&&q(g.taskId,g.runSeq,["awaiting_input"],"running");break}case"agent_end":if(g.pendingRequests.size>0)break;if("merging"===f.status){let a;c=g,(a=(0,i._o)(c.projectRoot,c.taskId))&&"merging"===a.status&&z(c.session.cwd,"git rev-parse --short HEAD").then(a=>a.output.trim()).catch(()=>null).then(async a=>{let b=(0,i._o)(c.projectRoot,c.taskId);if(b){q(b.id,b.runSeq,["merging"],"done",{mergeCommit:a,finishedAt:o()}),(0,i.Q1)(b.projectRoot,{taskId:b.id,kind:"merged",actor:"engine",payload:{commit:a}});try{b.worktreePath&&await (0,h.IL)(c.projectRoot,b.worktreePath,!0).catch(()=>void 0),b.workBranch&&await y(c.projectRoot,`git branch -D ${JSON.stringify(b.workBranch)}`).catch(()=>void 0)}catch{}}});break}w(g,f);break;case"prompt_error":{let b,c=a.errorMessage??"agent error";q(g.taskId,g.runSeq,["running","awaiting_input"],"failed",{failureReason:"agent_error",lastError:c,settledAt:o(),finishedAt:o()}),(0,i.Q1)(f.projectRoot,{taskId:g.taskId,kind:"failed",actor:"engine",payload:{reason:"agent_error",message:c}}),d=g,(b=m()).live.delete(d.connectionId),b.byTask.delete(d.taskId);break}case"agent_start":"awaiting_input"===f.status&&0===g.pendingRequests.size&&q(g.taskId,g.runSeq,["awaiting_input"],"running")}})()}),!q(a,d.runSeq,["preparing"],"running",{worktreePath:x,workBranch:t,baseBranch:A,conversationId:C.sessionId,sessionFile:C.sessionFile,runSeq:d.runSeq}))return c.live.delete(C.sessionId),c.byTask.delete(a),C.shutdown().catch(()=>void 0),!1;(0,i.Q1)(b,{taskId:a,kind:"started",actor:"engine",payload:{runSeq:d.runSeq,branch:t}});let E=(j=d,k=B,e=j.config?.prompt??j.title,f=k.stagePrompts?.work??k.stagePrompts?.all??"",l=j.config?.agentType??k.defaultAgentType,n=`You are working on task "${j.title}" in a git worktree branch.
|
|
2
2
|
`+(l?`Agent: ${l}
|
|
3
3
|
`:"")+`Complete the work described below.
|
|
4
4
|
|
|
@@ -13,4 +13,4 @@ ${p}
|
|
|
13
13
|
|
|
14
14
|
`:"",n+r+e+(f?`
|
|
15
15
|
|
|
16
|
-
${f}`:""));return await C.send({type:"prompt",message:E}),!0}catch(e){let c=e instanceof Error?e.message:String(e),d=(0,i._o)(b,a);return d&&("preparing"===d.status||"queued"===d.status)&&(q(a,d.runSeq,[d.status],"failed",{failureReason:"setup_error",lastError:c,settledAt:o(),finishedAt:o()}),(0,i.Q1)(b,{taskId:a,kind:"failed",actor:"engine",payload:{reason:"setup_error",message:c}})),!1}finally{c.launching.delete(a)}}async function u(a,b){try{let c=(await (0,h.P9)(a)).find(a=>a.branch===b);return c?.path??null}catch{return null}}async function v(a,b){let c=`task-${a.id}`,{session:d}=await (0,j.OF)(c,"",b,{});return{session:d}}async function w(a,b){let c=m().live.get(a.connectionId);if(!c||c.taskId!==a.taskId||!q(a.taskId,a.runSeq,["running","awaiting_input"],"review",{settledAt:o()}))return;(0,i.Q1)(b.projectRoot,{taskId:a.taskId,kind:"review",actor:"engine"});let d=(0,i.Rv)(b.projectRoot);d.preflightCommand&&await x(a,d.preflightCommand)}async function x(a,b){let c=(0,i._o)(a.projectRoot,a.taskId);if(c){p({...c,preflight:{status:"running",command:b}},"preflight_start","engine",{command:b});try{let c=await z(a.session.cwd,b),d=(0,i._o)(a.projectRoot,a.taskId);if(!d)return;p({...d,preflight:{status:0===c.code?"passed":"failed",command:b,exitCode:c.code,outputTail:0===c.code?null:c.output.slice(-4e3)}},0===c.code?"preflight_passed":"preflight_failed","engine",{command:b,exitCode:c.code})}catch(d){let c=(0,i._o)(a.projectRoot,a.taskId);if(!c)return;p({...c,preflight:{status:"failed",command:b,outputTail:d instanceof Error?d.message:String(d)}},"preflight_failed","engine",{command:b})}}}function y(a,b){return new Promise((c,d)=>{let e=(0,g.spawn)(b,{cwd:a,shell:!0,stdio:"ignore"});e.on("error",d),e.on("exit",a=>{0===a?c():d(Error(`init command exited with code ${a??"null"}`))})})}function z(a,b){return new Promise(c=>{let d=(0,g.spawn)(b,{cwd:a,shell:!0}),e="";d.stdout?.on("data",a=>{e+=a.toString()}),d.stderr?.on("data",a=>{e+=a.toString()}),d.on("error",()=>c({code:1,output:e})),d.on("exit",a=>c({code:a,output:e}))})}function A(a){return"/"+a.split("--").map(a=>decodeURIComponent(a)).join("/")}async function B(){try{await C()}catch{}}async function C(){let a=m();if(!a)return;let b=(0,i.z1)("__engine__").replace(/__engine__$/,"");if((0,e.existsSync)(b))for(let c of(0,e.readdirSync)(b,{withFileTypes:!0})){if(!c.isDirectory()||"__engine__"===c.name)continue;let b=A(c.name);for(let c of(0,i.h6)(b)){let d=a.byTask.get(c.id);d||"running"!==c.status&&"awaiting_input"!==c.status&&"merging"!==c.status?d||"preparing"!==c.status||(q(c.id,c.runSeq,["preparing"],"todo",{startedAt:null}),(0,i.Q1)(b,{taskId:c.id,kind:"recovered",actor:"engine"})):(q(c.id,c.runSeq,[c.status],"failed",{failureReason:"interrupted",lastError:"Engine restarted; the run was interrupted.",settledAt:o(),finishedAt:o()}),(0,i.Q1)(b,{taskId:c.id,kind:"interrupted",actor:"engine"}))}l()&&r(b)}}d()}catch(a){d(a)}})},15253:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Fk:()=>h,Y1:()=>g});var e=c(75430),f=a([e]);function g(a,b){return a&&(0,e.hasTrustRequiringProjectResources)(a)?{requiresTrust:!0,trusted:!0===new e.ProjectTrustStore(b).get(a)}:{requiresTrust:!1,trusted:!0}}function h(a,b){if(!g(a,b).requiresTrust)return;let c=new e.ProjectTrustStore(b);return{resolveProjectTrust:async()=>!0===c.get(a)}}e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},16176:a=>{"use strict";let b=Symbol();a.exports.probe=function(a,c,d){let e=c[b];if(e)return c.stat(a,(a,b)=>{if(a)return d(a);d(null,b.mtime,e)});let f=new Date(1e3*Math.ceil(Date.now()/1e3)+5);c.utimes(a,f,f,e=>{if(e)return d(e);c.stat(a,(a,e)=>{if(a)return d(a);let f=e.mtime.getTime()%1e3==0?"s":"ms";Object.defineProperty(c,b,{value:f}),d(null,e.mtime,f)})})},a.exports.getMtime=function(a){let b=Date.now();return"s"===a&&(b=1e3*Math.ceil(b/1e3)),new Date(b)}},17114:(a,b,c)=>{"use strict";c.d(b,{Gc:()=>g,ov:()=>h,pj:()=>i,wx:()=>j});var d=c(55511),e=c(29021);function f(a){return`${a}.queue.json`}function g(a,b,c){return{id:(0,d.randomUUID)(),kind:a,text:b,...c&&c.length>0?{images:c}:{},queuedAt:Date.now()}}function h(a){let b=f(a);if(!(0,e.existsSync)(b))return[];try{let a=JSON.parse((0,e.readFileSync)(b,"utf8"));if(!a||1!==a.version||!Array.isArray(a.entries))return[];return a.entries.filter(a=>!!a&&("steer"===a.kind||"followUp"===a.kind)&&"string"==typeof a.text)}catch{return[]}}function i(a,b){if(!a)return;let c=f(a),g=`${c}.tmp-${process.pid}-${(0,d.randomUUID)()}`;try{(0,e.writeFileSync)(g,JSON.stringify({version:1,entries:b}),"utf8"),(0,e.renameSync)(g,c)}catch(a){try{(0,e.rmSync)(g,{force:!0})}catch{}console.error(`[pi-web] failed to persist queue sidecar ${c}:`,a instanceof Error?a.message:String(a))}}function j(a){try{(0,e.rmSync)(f(a),{force:!0})}catch{}}},18437:(a,b,c)=>{"use strict";function d(a){if(void 0===a)return null;if(!Array.isArray(a))return"images must be an array";if(a.length>10)return"A message can include at most 10 images";for(let b of a)if(!function(a){var b;if(!a||"object"!=typeof a||"image"!==a.type||"string"!=typeof a.data||"string"!=typeof a.mimeType||(b=a.mimeType,!/^image\/[A-Za-z0-9][A-Za-z0-9!#$&^_.+-]*$/.test(b)))return!1;let c=function(a){if(!a||a.length%4!=0)return null;let b=a.endsWith("==")?2:+!!a.endsWith("="),c=a.length-b,d=null;for(let b=0;b<c;b+=1){var e;let c=(e=a.charCodeAt(b))>=65&&e<=90?e-65:e>=97&&e<=122?e-97+26:e>=48&&e<=57?e-48+52:43===e?62:47===e?63:null;if(null===c)return null;d=c}for(let b=c;b<a.length;b+=1)if("="!==a[b])return null;return 2===b&&d%16!=0||1===b&&d%4!=0?null:a.length/4*3-b}(a.data);return null!==c&&c<=0xa00000}(b))return"Each image must be valid base64 image data with an image MIME type and be 10MB or smaller";return null}c.d(b,{kc:()=>d})},18827:(a,b,c)=>{var d=c(27910).Stream;a.exports=function(a){return{ReadStream:function b(c,e){if(!(this instanceof b))return new b(c,e);d.call(this);var f=this;this.path=c,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=65536;for(var g=Object.keys(e=e||{}),h=0,i=g.length;h<i;h++){var j=g[h];this[j]=e[j]}if(this.encoding&&this.setEncoding(this.encoding),void 0!==this.start){if("number"!=typeof this.start)throw TypeError("start must be a Number");if(void 0===this.end)this.end=1/0;else if("number"!=typeof this.end)throw TypeError("end must be a Number");if(this.start>this.end)throw Error("start must be <= end");this.pos=this.start}null!==this.fd?process.nextTick(function(){f._read()}):a.open(this.path,this.flags,this.mode,function(a,b){if(a){f.emit("error",a),f.readable=!1;return}f.fd=b,f.emit("open",b),f._read()})},WriteStream:function b(c,e){if(!(this instanceof b))return new b(c,e);d.call(this),this.path=c,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0;for(var f=Object.keys(e=e||{}),g=0,h=f.length;g<h;g++){var i=f[g];this[i]=e[i]}if(void 0!==this.start){if("number"!=typeof this.start)throw TypeError("start must be a Number");if(this.start<0)throw Error("start must be >= zero");this.pos=this.start}this.busy=!1,this._queue=[],null===this.fd&&(this._open=a.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush())}}}},29040:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{wF:()=>o});var e=c(73024),f=c(76760),g=c(75430),h=c(12969),i=a([g]);g=(i.then?(await i)():i)[0];let p=new Set([400,401,403,404,408,409,413,429,500,502,503,504]);function j(){return(0,f.join)((0,g.getAgentDir)(),"pi-web-error-log.json")}function k(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.id&&"string"==typeof a.timestamp&&("error"===a.level||"warning"===a.level||"info"===a.level)&&"string"==typeof a.source&&"string"==typeof a.message}function l(a){return a.replace(/https?:\/\/[^\s/@]+:[^\s/@]+@/gi,"https://[redacted]@").replace(/Bearer\s+[A-Za-z0-9._~+/=-]+/gi,"Bearer [redacted]").replace(/\bsk-[A-Za-z0-9_-]{8,}\b/g,"sk-[redacted]").replace(/\b(?:oc|opencode|zen)[_-]?[A-Za-z0-9._~-]{12,}\b/gi,"[key-redacted]").replace(/((?:api[_-]?key|token|password|secret)\s*[:=]\s*)([^\s,;]+)/gi,"$1[redacted]")}function m(a){return a.length>2e4?`${a.slice(0,2e4)}…`:a}function n(a){let b=a.match(/\bHTTP\s+(\d{3})\b|\bstatus(?:\s+code)?\s*[:=]?\s*(\d{3})\b|\b(4\d{2}|5\d{2})\b/i),c=Number(b?.[1]??b?.[2]??b?.[3]);return p.has(c)?c:void 0}function o(a){let b=function(){globalThis.__piErrorLogState||(globalThis.__piErrorLogState={loaded:!1,entries:[]});let a=globalThis.__piErrorLogState;if(!a.loaded){a.loaded=!0;try{if((0,e.existsSync)(j())){let b=JSON.parse((0,e.readFileSync)(j(),"utf8"));Array.isArray(b)&&(a.entries=b.filter(k).slice(-500))}}catch{a.entries=[]}}return a}(),c=m(l(a.message.trim())),d=a.details?m(l(a.details)):void 0,f={id:`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,timestamp:new Date().toISOString(),level:a.level??"error",source:a.source??"unknown",...void 0!==a.statusCode?{statusCode:a.statusCode}:void 0!==n(c)?{statusCode:n(c)}:{},...a.provider?{provider:a.provider}:{},...a.model?{model:a.model}:{},...a.sessionId?{sessionId:a.sessionId}:{},message:c||"Unknown error",...d?{details:d}:{}};b.entries.push(f),b.entries.length>500&&b.entries.splice(0,b.entries.length-500);var g=b.entries;try{(0,h.$)(j(),JSON.stringify(g,null,2))}catch{}return f}d()}catch(a){d(a)}})},30116:(a,b,c)=>{"use strict";c.d(b,{LD:()=>m,kP:()=>o,ni:()=>n});var d=c(97563);function e(a){if(!a)return[];let b=[];for(let c of a){let a=function(a){let b=a.trim();if(!b)return null;let c=b.indexOf("="),d=b.indexOf("(");if(c>0&&(d<0||c<d)){let a=b.slice(0,c).trim();return a?{tool:a,subject:b.slice(c+1),literal:!0}:null}if(d>=0&&b.endsWith(")")){let a=b.slice(0,d).trim();return a?{tool:a,subject:b.slice(d+1,-1)}:null}return{tool:b}}(c);a&&b.push(a)}return b}function f(a){return void 0===a.subject?a.tool:a.literal?`${a.tool}=${a.subject}`:`${a.tool}(${a.subject})`}function g(a){return a.includes("*")||a.includes("?")}function h(a,b){return void 0===b.subject||""!==a&&(b.literal||!g(b.subject)?a===b.subject:(function(a){let b="^";for(let c of a)"*"===c?b+=".*":"?"===c?b+=".":b+=c.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return RegExp(b+"$")})(b.subject).test(a))}function i(a,b){return a.toLowerCase()===b.toLowerCase()}function j(a,b,c){for(let d of a)if(i(d.tool,b)&&h(c,d))return!0;return!1}function k(a){let b=a.trim();return!!b&&!!(/\$\(/.test(b)||/`/.test(b)||/(^|\s)(python|python3|node|ruby|perl|php)\s+-[a-z]*c(\s|$)/i.test(b)||/(^|\s)(sh|bash|zsh)\s+-c(\s|$)/i.test(b)||/(^|\s)(sudo|su)\s/i.test(b)||/;\s*[a-z]/i.test(b)||/\|\s*(sh|bash|zsh|python|python3|node)\b/i.test(b)||/\|\s*tee\b/i.test(b))}let l=["ls","cat","head","tail","grep","rg","find","wc","echo","pwd","cd","git status","git diff","git log","git branch","git remote","git stash list","git show","git ls-files","which","type","env","file","stat","du","df","history","man","less","more","tree","git diff --","git log --","curl -I","curl --head"];function m(a,b,c={}){let e=c.mode??"auto",f=c.readOnly??d.MJ.has(b.toLowerCase()),n=function(a,b){if("bash"===a.toLowerCase()){let a=b?.command;return"string"==typeof a&&a.trim()?`command:${a.trim()}`:""}let c=b??{},d="string"==typeof c.source_path?c.source_path:"",e="string"==typeof c.destination_path?c.destination_path:"";if(d&&e)return e!==d?`${d}\u0000${e}`:d;for(let a of["path","file_path","file","glob","pattern","directory"]){let b=c[a];if("string"==typeof b&&b)return b}return""}(b,c.args),o="bash"===b.toLowerCase(),p=o&&n.startsWith("command:")?n.slice(8):"";if(j(a.deny,b,n))return"deny";if(o&&p){let c=k(p);return j(a.allow,b,n)&&!c?"allow":j(a.ask,b,n)?"ask":c?a.allow.some(a=>i(a.tool,b)&&void 0!==a.subject&&!g(a.subject)&&h(n,a))||"yolo"===e?"allow":"ask":!function(a){let b=a.trim();if(!b||k(b)||/[;&|>]/.test(b))return!1;let c=b.toLowerCase();for(let a of l)if(c===a||c.startsWith(a+" "))return!0;return!1}(p)?"ask"===e?"ask":"allow":"allow"}return j(a.allow,b,n)?"allow":j(a.ask,b,n)?"ask":f?"allow":"ask"===e?"ask":"allow"}function n(a){return{allow:e(a?.allow),ask:e(a?.ask),deny:e(a?.deny)}}function o(a){return{allow:a.allow.map(f),ask:a.ask.map(f),deny:a.deny.map(f)}}},30223:a=>{a.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"],"win32"!==process.platform&&a.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT"),"linux"===process.platform&&a.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")},32982:(a,b,c)=>{"use strict";function d(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function e(a){let b=function(a){let b={},c=a?.models;if(!Array.isArray(c))return b;for(let a of c)d(a)&&"string"==typeof a.id&&a.id&&(b[a.id]={...a});return b}(a),c=function(a){let b=a?.modelOverrides;if(!d(b))return{};let c={};for(let[a,e]of Object.entries(b))d(e)&&(c[a]={...e});return c}(a),e=new Set([...Object.keys(b),...Object.keys(c)]),f={};for(let a of e)f[a]={...b[a]??{},...c[a]??{}};return f}c.d(b,{du:()=>e})},39466:(a,b,c)=>{var d=c(81115),e=process.cwd,f=null,g=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return f||(f=e.call(process)),f};try{process.cwd()}catch(a){}if("function"==typeof process.chdir){var h=process.chdir;process.chdir=function(a){f=null,h.call(process,a)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,h)}a.exports=function(a){var b,c,e;function f(b){return b?function(c,d,e){return b.call(a,c,d,function(a){m(a)&&(a=null),e&&e.apply(this,arguments)})}:b}function h(b){return b?function(c,d){try{return b.call(a,c,d)}catch(a){if(!m(a))throw a}}:b}function i(b){return b?function(c,d,e,f){return b.call(a,c,d,e,function(a){m(a)&&(a=null),f&&f.apply(this,arguments)})}:b}function j(b){return b?function(c,d,e){try{return b.call(a,c,d,e)}catch(a){if(!m(a))throw a}}:b}function k(b){return b?function(c,d,e){function f(a,b){b&&(b.uid<0&&(b.uid+=0x100000000),b.gid<0&&(b.gid+=0x100000000)),e&&e.apply(this,arguments)}return"function"==typeof d&&(e=d,d=null),d?b.call(a,c,d,f):b.call(a,c,f)}:b}function l(b){return b?function(c,d){var e=d?b.call(a,c,d):b.call(a,c);return e&&(e.uid<0&&(e.uid+=0x100000000),e.gid<0&&(e.gid+=0x100000000)),e}:b}function m(a){return!a||"ENOSYS"===a.code||(!process.getuid||0!==process.getuid())&&("EINVAL"===a.code||"EPERM"===a.code)}d.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&((c=a).lchmod=function(a,b,e){c.open(a,d.O_WRONLY|d.O_SYMLINK,b,function(a,d){if(a){e&&e(a);return}c.fchmod(d,b,function(a){c.close(d,function(b){e&&e(a||b)})})})},c.lchmodSync=function(a,b){var e,f=c.openSync(a,d.O_WRONLY|d.O_SYMLINK,b),g=!0;try{e=c.fchmodSync(f,b),g=!1}finally{if(g)try{c.closeSync(f)}catch(a){}else c.closeSync(f)}return e}),a.lutimes||(e=a,d.hasOwnProperty("O_SYMLINK")&&e.futimes?(e.lutimes=function(a,b,c,f){e.open(a,d.O_SYMLINK,function(a,d){if(a){f&&f(a);return}e.futimes(d,b,c,function(a){e.close(d,function(b){f&&f(a||b)})})})},e.lutimesSync=function(a,b,c){var f,g=e.openSync(a,d.O_SYMLINK),h=!0;try{f=e.futimesSync(g,b,c),h=!1}finally{if(h)try{e.closeSync(g)}catch(a){}else e.closeSync(g)}return f}):e.futimes&&(e.lutimes=function(a,b,c,d){d&&process.nextTick(d)},e.lutimesSync=function(){})),a.chown=i(a.chown),a.fchown=i(a.fchown),a.lchown=i(a.lchown),a.chmod=f(a.chmod),a.fchmod=f(a.fchmod),a.lchmod=f(a.lchmod),a.chownSync=j(a.chownSync),a.fchownSync=j(a.fchownSync),a.lchownSync=j(a.lchownSync),a.chmodSync=h(a.chmodSync),a.fchmodSync=h(a.fchmodSync),a.lchmodSync=h(a.lchmodSync),a.stat=k(a.stat),a.fstat=k(a.fstat),a.lstat=k(a.lstat),a.statSync=l(a.statSync),a.fstatSync=l(a.fstatSync),a.lstatSync=l(a.lstatSync),a.chmod&&!a.lchmod&&(a.lchmod=function(a,b,c){c&&process.nextTick(c)},a.lchmodSync=function(){}),a.chown&&!a.lchown&&(a.lchown=function(a,b,c,d){d&&process.nextTick(d)},a.lchownSync=function(){}),"win32"===g&&(a.rename="function"!=typeof a.rename?a.rename:function(b){function c(c,d,e){var f=Date.now(),g=0;b(c,d,function h(i){if(i&&("EACCES"===i.code||"EPERM"===i.code||"EBUSY"===i.code)&&Date.now()-f<6e4){setTimeout(function(){a.stat(d,function(a,f){a&&"ENOENT"===a.code?b(c,d,h):e(i)})},g),g<100&&(g+=10);return}e&&e(i)})}return Object.setPrototypeOf&&Object.setPrototypeOf(c,b),c}(a.rename)),a.read="function"!=typeof a.read?a.read:function(b){function c(c,d,e,f,g,h){var i;if(h&&"function"==typeof h){var j=0;i=function(k,l,m){if(k&&"EAGAIN"===k.code&&j<10)return j++,b.call(a,c,d,e,f,g,i);h.apply(this,arguments)}}return b.call(a,c,d,e,f,g,i)}return Object.setPrototypeOf&&Object.setPrototypeOf(c,b),c}(a.read),a.readSync="function"!=typeof a.readSync?a.readSync:(b=a.readSync,function(c,d,e,f,g){for(var h=0;;)try{return b.call(a,c,d,e,f,g)}catch(a){if("EAGAIN"===a.code&&h<10){h++;continue}throw a}})}},44290:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{lN:()=>j});var e=c(74986),f=c(97563),g=c(30116),h=a([e]);function i(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=a.permissionRules,c=(0,g.kP)((0,g.ni)(b));return{collaborationMode:(0,f.UY)(a.collaborationMode),tokenMode:(0,f.wI)(a.tokenMode),toolApprovalMode:(0,f.g0)(a.toolApprovalMode),permissionRules:{allow:Array.isArray(c.allow)?c.allow:[],ask:Array.isArray(c.ask)?c.ask:[],deny:Array.isArray(c.deny)?c.deny:[]}}}function j(a){let b=(0,f.Md)(),c=(0,e.Tu)();if(a){let b=c.modesPerSession;if(b&&"object"==typeof b&&!Array.isArray(b)){let c=i(b[a]);if(c)return c}}return i(c.modes)??b}e=(h.then?(await h)():h)[0],d()}catch(a){d(a)}})},46162:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{MO:()=>s,qk:()=>k,rY:()=>l,xl:()=>w,zB:()=>t});var e=c(73024),f=c(76760),g=c(3433),h=c(75430);c(12969);var i=c(29040),j=a([h,i]);[h,i]=j.then?(await j)():j;let x=["opencode","opencode-go"];function k(a){return x.includes(a)}function l(a){return globalThis.__piOpenCodeZenSwitchListeners??=new Set,globalThis.__piOpenCodeZenSwitchListeners.add(a),()=>globalThis.__piOpenCodeZenSwitchListeners?.delete(a)}function m(){return(0,f.join)((0,h.getAgentDir)(),"opencode-zen.json")}function n(){return{accounts:[],autoSwitch:!0,cooldownMs:6e4}}function o(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function p(a,b){if(!o(a))return null;let c="string"==typeof a.apiKey?a.apiKey.trim():"";if(!c)return null;let d="string"==typeof a.id&&a.id.trim()?a.id.trim():`account-${b+1}`;return{id:d,note:"string"==typeof a.note&&a.note.trim()?a.note.trim():d,apiKey:c,enabled:!1!==a.enabled,proxy:function(a){let b=o(a)?a:{},c=Number(b.port),d="string"==typeof b.url?b.url.trim():"",e="string"==typeof b.protocol?b.protocol.toLowerCase():void 0,f="https"===e||"socks5"===e?e:"http";if(d&&(void 0===e||"http"===e||"https"===e||"socks5"===e))try{let a=d.match(/^([a-z][a-z0-9+.-]*):\/\//i)?.[1]?.toLowerCase();("socks5"===a||"https"===a)&&(f=a)}catch{}if(d)try{let a=new URL(/^(https?|socks5):\/\//i.test(d)?d:`http://${d}`);d="http:"!==a.protocol&&"https:"!==a.protocol&&"socks5:"!==a.protocol||a.username||a.password||"/"!==a.pathname&&""!==a.pathname||a.search||a.hash?"":`${a.protocol}//${a.hostname}`}catch{d=""}return{protocol:f,enabled:!1!==b.enabled,url:d,port:Number.isInteger(c)&&c>0&&c<=65535?c:0,username:"string"==typeof b.username?b.username:"",password:"string"==typeof b.password?b.password:""}}(a.proxy)}}function q(a){let b=o(a)?a:{},c=Array.isArray(b.accounts)?b.accounts.map(p).filter(a=>null!==a):[],d=Number(b.cooldownMs);return{accounts:c,autoSwitch:!1!==b.autoSwitch,cooldownMs:Number.isFinite(d)?Math.min(Math.max(d,0),6e5):6e4}}function r(){return globalThis.__piOpenCodeZenState||(globalThis.__piOpenCodeZenState={config:function(){try{if((0,e.existsSync)(m()))return q(JSON.parse((0,e.readFileSync)(m(),"utf8")));let a=(0,f.join)((0,h.getAgentDir)(),"auth.json");if((0,e.existsSync)(a)){let b=JSON.parse((0,e.readFileSync)(a,"utf8")),c=o(b.opencode)?b.opencode:null,d=c&&"string"==typeof c.key?c.key.trim():"";if(d)return q({accounts:[{id:"legacy-opencode",note:"默认 OpenCode Zen",apiKey:d,enabled:!0,proxy:{protocol:"http",enabled:!1,url:"",port:0,username:"",password:""}}]})}return n()}catch{return n()}}(),activeIndex:0,cooldownUntil:new Map,dispatchers:new Map}),globalThis.__piOpenCodeZenState}function s(){return r().config.accounts.find(a=>a.enabled&&a.apiKey)?.apiKey??null}async function t(a){let b=s();if(b)for(let c of(await Promise.allSettled(x.map(c=>a.setRuntimeApiKey(c,b)))))"rejected"===c.status&&(0,i.wF)({level:"warning",source:"opencode-zen-runtime",provider:"opencode",message:`设置 OpenCode Zen runtime Key 失败:${c.reason instanceof Error?c.reason.message:String(c.reason)}`})}function u(a,b=new Set){let c=Date.now(),d=a.config.accounts.length;if(0===d)return null;for(let e=0;e<d;e++){let f=(a.activeIndex+e)%d,g=a.config.accounts[f];if(!(!g.enabled||!g.apiKey||b.has(g.id))&&!((a.cooldownUntil.get(g.id)??0)>c))return a.activeIndex=(f+1)%d,g}return null}async function v(a,b){let c=b?.body;if(null!==c){if(void 0===c&&a instanceof Request&&null!==a.body)try{return await a.clone().arrayBuffer()}catch{return}if(void 0!==c&&("string"==typeof c||c instanceof ArrayBuffer||ArrayBuffer.isView(c)||c instanceof Blob))return c}}function w(a=globalThis.fetch.bind(globalThis),b,c){return async(d,e)=>{let f;if(!function(a){try{let b="string"==typeof a||a instanceof URL?a.toString():a.url;return"opencode.ai"===new URL(b).hostname}catch{return!1}}(d))return a(d,e);let h=c?{config:q(c),activeIndex:0,cooldownUntil:new Map,dispatchers:new Map}:r(),j=h.config.accounts.filter(a=>a.enabled&&a.apiKey);if(0===j.length)return new Response("OpenCode Zen accounts are unavailable",{status:503});let k=await v(d,e),l=!(d instanceof Request?null!==d.body:e?.body!==void 0&&null!==e.body)||void 0!==k,m=new Set,n=u(h,m);if(!n)return new Response("OpenCode Zen accounts are cooling down",{status:503,headers:{"Retry-After":String(Math.ceil(h.config.cooldownMs/1e3))}});let o=null,p=h.config.autoSwitch&&l?Math.max(j.length,1):1;for(let c=0;c<p&&n;c++){m.add(n.id);let j=function(a,b,c,d,e){let f=new Headers(a instanceof Request?a.headers:void 0);b?.headers&&new Headers(b.headers).forEach((a,b)=>f.set(b,a)),f.set("authorization",`Bearer ${d.apiKey}`);let h=function(a,b){var c;let d=function(a){if(!a.enabled||!a.url||!a.port)return null;if(!Number.isInteger(a.port)||a.port<1||a.port>65535)throw Error("代理端口无效,必须为 1-65535 的整数");let b=a.url.trim();if(b.includes("://")&&!/^(https?|socks5):\/\//i.test(b))throw Error("OpenCode Zen 账号代理仅支持 http/https/socks5");/^(https?|socks5):\/\//i.test(b)||(b=`http://${b}`);let c=new URL(b);if(c.username||c.password||"/"!==c.pathname||c.search||c.hash)throw Error("代理 URL 只允许主机名,用户名和密码请填写独立字段");if(c.port=String(a.port),a.username&&(c.username=a.username),a.password&&(c.password=a.password),"http:"!==c.protocol&&"https:"!==c.protocol&&"socks5:"!==c.protocol)throw Error("OpenCode Zen 账号代理仅支持 http/https/socks5");return c.toString()}(b.proxy);if(!d)return;let e=a.dispatchers.get(b.id);if(e)return e;let f=(c=b.proxy.protocol,"socks5"===c?new g.EV(d):new g.kT(d));return a.dispatchers.set(b.id,f),f}(c,d);return{...b,...a instanceof Request&&b?.method===void 0?{method:a.method}:{},headers:f,...void 0!==e?{body:e}:{},...h?{dispatcher:h}:{}}}(d,e,h,n,k),l=j.dispatcher?await (0,g.hd)("string"==typeof d||d instanceof URL?d.toString():d.url,j):await a(d,j);if(429!==l.status||!h.config.autoSwitch||c===p-1)return l.ok&&f&&function(a){for(let b of globalThis.__piOpenCodeZenSwitchListeners??[])b(a)}({sessionId:b,from:f,to:n.note,statusCode:429}),l;let q=await l.arrayBuffer();o=new Response(q,{status:l.status,statusText:l.statusText,headers:l.headers});let r=n;if(h.cooldownUntil.set(r.id,Date.now()+h.config.cooldownMs),!(n=u(h,m)))break;h.lastSwitch={timestamp:new Date().toISOString(),from:r.note,to:n.note,statusCode:429},f=r.note,(0,i.wF)({level:"info",source:"opencode-zen-switch",provider:"opencode",message:`OpenCode Zen 429,已从 ${r.note} 切换到 ${n.note}`})}return o??new Response("OpenCode Zen accounts are unavailable",{status:503})}}d()}catch(a){d(a)}})},54366:(a,b,c)=>{"use strict";function d(){return{defaultAgentType:null,modeId:null,configValues:{},autoProcess:!0,maxConcurrent:1,mergeStrategy:"merge",deleteWorktreeDefault:!0,preflightCommand:null,initCommand:null,stagePrompts:null}}c.d(b,{os:()=>d})},57856:(a,b,c)=>{"use strict";c.d(b,{TQ:()=>e,p1:()=>d});let d=92;function e(a,b=d,c=40){return Object.freeze({terminal:Object.freeze({columns:b,rows:c,kittyProtocolActive:!1}),requestRender:a})}},61446:(a,b,c)=>{"use strict";let d=c(62404),{toPromise:e,toSync:f,toSyncOptions:g}=c(13884);async function h(a,b){let c=await e(d.lock)(a,b);return e(c)}a.exports=h,a.exports.lock=h,a.exports.unlock=function(a,b){return e(d.unlock)(a,b)},a.exports.lockSync=function(a,b){let c=f(d.lock)(a,g(b));return f(c)},a.exports.unlockSync=function(a,b){return f(d.unlock)(a,g(b))},a.exports.check=function(a,b){return e(d.check)(a,b)},a.exports.checkSync=function(a,b){return f(d.check)(a,g(b))}},61577:(a,b,c)=>{"use strict";async function d(a,b,c){if(!b.model&&!b.thinkingLevel)return{modelDefaultChanged:!1};let d=!1;return b.model&&c.model&&b.model.provider===c.model.provider&&b.model.modelId===c.model.modelId&&(a.setDefaultModelAndProvider(c.model.provider,c.model.modelId),d=!0),b.thinkingLevel&&(c.supportsThinking||"off"!==c.thinkingLevel)&&a.setDefaultThinkingLevel(c.thinkingLevel),await a.flush(),{modelDefaultChanged:d}}c.d(b,{o:()=>d})},62391:(a,b,c)=>{"use strict";c.d(b,{l:()=>o,P9:()=>n,IL:()=>p,KI:()=>l});var d=c(79646),e=c(29021),f=c(33873);function g(a){return a&&"win32"===process.platform?(0,f.normalize)(a):a}function h(a,b){return a===b||!!a&&!!b&&"win32"===process.platform&&g(a).toLowerCase()===g(b).toLowerCase()}let i=(0,c(28354).promisify)(d.execFile);function j(){globalThis.__piProjectCache?.clear()}async function k(a,b){let{stdout:c}=await i("git",["-C",a,...b],{timeout:1e4,maxBuffer:1048576,env:{...process.env,LC_ALL:"C"}});return c.trim()}async function l(a){let b,c=(globalThis.__piProjectCache||(globalThis.__piProjectCache=new Map),globalThis.__piProjectCache),d=c.get(a);if(d&&d.expiresAt>Date.now())return d.info;try{if(!(0,e.existsSync)(a))return b=function(a){let b=(0,f.dirname)(a);if(!b.endsWith("-worktrees"))return null;let c=b.slice(0,-10);return c&&(0,e.existsSync)((0,f.join)(c,".git"))?{projectRoot:c,branch:(0,f.basename)(a),isWorktree:!0,isTopLevel:!0}:null}(a)??{projectRoot:a,branch:null,isWorktree:!1,isTopLevel:!1},c.set(a,{info:b,expiresAt:Date.now()+6e4}),b;let[d,i,j,l]=(await k(a,["rev-parse","--path-format=absolute","--git-common-dir","--git-dir","--show-toplevel","--abbrev-ref","HEAD"])).split("\n").map(a=>a.trim()),[m,n,o]=[d,i,j].map(g),p=a;try{p=(0,e.realpathSync)(a)}catch{}let q=h(o,p),r=!h(n,m)&&q;b={projectRoot:r?(0,f.dirname)(m):a,branch:l&&"HEAD"!==l?l:null,isWorktree:r,isTopLevel:q}}catch{b={projectRoot:a,branch:null,isWorktree:!1,isTopLevel:!1}}return c.set(a,{info:b,expiresAt:Date.now()+6e4}),b}async function m(a){let b=await k(a,["rev-parse","--path-format=absolute","--git-common-dir"]);return(0,f.dirname)(g(b))}async function n(a){let b=await k(a,["worktree","list","--porcelain"]),c=[],d=null,f=()=>{d?.path&&!d.prunable&&(0,e.existsSync)(d.path)&&c.push({path:d.path,branch:d.branch??null,isMain:0===c.length}),d=null};for(let a of b.split("\n"))a.startsWith("worktree ")?(f(),d={path:g(a.slice(9).trim())}):a.startsWith("branch ")&&d?d.branch=a.slice(7).trim().replace(/^refs\/heads\//,""):a.startsWith("prunable")&&d?d.prunable=!0:""===a.trim()&&f();return f(),c}async function o(a,b){let c=b.trim();if(!c)throw Error("Branch name is required");let d=c.replace(/[\/\\:*?"<>|\s]+/g,"-").replace(/^-+|-+$/g,"");if(!d)throw Error(`Invalid branch name: ${b}`);let g=await m(a),h=`${(0,f.resolve)(g)}-worktrees`,i=(0,f.join)(h,d);if((0,e.existsSync)(i))throw Error(`Directory already exists: ${i}`);(0,e.mkdirSync)(h,{recursive:!0});let l=!1;try{await k(g,["rev-parse","--verify","--quiet",`refs/heads/${c}`]),l=!0}catch{l=!1}try{l?await k(g,["worktree","add","--",i,c]):await k(g,["worktree","add","-b",c,"--",i])}catch(a){throw Error(q(a))}return!function(a){if(!a)return;let b=a.replace(/\\/g,"/");(!globalThis.__piAdditionalAllowedRoots&&(globalThis.__piAdditionalAllowedRoots=new Set),globalThis.__piAdditionalAllowedRoots).add(b),globalThis.__piAllowedRootsCache?.roots.add(b)}(i),j(),{path:i,branch:c}}async function p(a,b,c=!1){let d=(await n(a)).find(a=>h(a.path,b));if(!d)throw Error(`Not a worktree of this repository: ${b}`);if(d.isMain)throw Error("Cannot remove the main worktree");try{await k(a,["worktree","remove",...c?["--force"]:[],b])}catch(a){throw Error(q(a))}j()}function q(a){let b=a.stderr;return"string"==typeof b&&b.trim()?b.trim():a instanceof Error?a.message:String(a)}},62404:(a,b,c)=>{"use strict";let d=c(33873),e=c(93329),f=c(81463),g=c(75856),h=c(16176),i={};function j(a,b){return b.lockfilePath||`${a}.lock`}function k(a,b,c){if(!b.realpath)return c(null,d.resolve(a));b.fs.realpath(a,c)}function l(a,b){return a.mtime.getTime()<Date.now()-b.stale}function m(a,b,c){b.fs.rmdir(j(a,b),a=>{if(a&&"ENOENT"!==a.code)return c(a);c()})}function n(a,b,c){b.released=!0,b.updateTimeout&&clearTimeout(b.updateTimeout),i[a]===b&&delete i[a],b.options.onCompromised(c)}function o(a,b,c){k(a,b={fs:e,realpath:!0,...b},(a,d)=>{if(a)return c(a);let e=i[d];if(!e)return c(Object.assign(Error("Lock is not acquired/owned by you"),{code:"ENOTACQUIRED"}));e.updateTimeout&&clearTimeout(e.updateTimeout),e.released=!0,delete i[d],m(d,b,c)})}g(()=>{for(let a in i){let b=i[a].options;try{b.fs.rmdirSync(j(a,b))}catch(a){}}}),a.exports.lock=function(a,b,c){(b={stale:1e4,update:null,realpath:!0,retries:0,fs:e,onCompromised:a=>{throw a},...b}).retries=b.retries||0,b.retries="number"==typeof b.retries?{retries:b.retries}:b.retries,b.stale=Math.max(b.stale||0,2e3),b.update=null==b.update?b.stale/2:b.update||0,b.update=Math.max(Math.min(b.update,b.stale/2),1e3),k(a,b,(a,d)=>{if(a)return c(a);let e=f.operation(b.retries);e.attempt(()=>{!function a(b,c,d){let e=j(b,c);c.fs.mkdir(e,f=>f?"EEXIST"!==f.code?d(f):c.stale<=0?d(Object.assign(Error("Lock file is already being held"),{code:"ELOCKED",file:b})):void c.fs.stat(e,(e,f)=>e?"ENOENT"===e.code?a(b,{...c,stale:0},d):d(e):l(f,c)?void m(b,c,e=>{if(e)return d(e);a(b,{...c,stale:0},d)}):d(Object.assign(Error("Lock file is already being held"),{code:"ELOCKED",file:b}))):h.probe(e,c.fs,(a,b,f)=>{if(a)return c.fs.rmdir(e,()=>{}),d(a);d(null,b,f)}))}(d,b,(a,f,g)=>{if(e.retry(a))return;if(a)return c(e.mainError());let k=i[d]={lockfilePath:j(d,b),mtime:f,mtimePrecision:g,options:b,lastUpdate:Date.now()};!function a(b,c){let d=i[b];!d.updateTimeout&&(d.updateDelay=d.updateDelay||c.update,d.updateTimeout=setTimeout(()=>{d.updateTimeout=null,c.fs.stat(d.lockfilePath,(e,f)=>{let g=d.lastUpdate+c.stale<Date.now();if(e)return"ENOENT"===e.code||g?n(b,d,Object.assign(e,{code:"ECOMPROMISED"})):(d.updateDelay=1e3,a(b,c));if(d.mtime.getTime()!==f.mtime.getTime())return n(b,d,Object.assign(Error("Unable to update lock within the stale threshold"),{code:"ECOMPROMISED"}));let i=h.getMtime(d.mtimePrecision);c.fs.utimes(d.lockfilePath,i,i,e=>{let f=d.lastUpdate+c.stale<Date.now();if(!d.released){if(e)return"ENOENT"===e.code||f?n(b,d,Object.assign(e,{code:"ECOMPROMISED"})):(d.updateDelay=1e3,a(b,c));d.mtime=i,d.lastUpdate=Date.now(),d.updateDelay=null,a(b,c)}})})},d.updateDelay),d.updateTimeout.unref&&d.updateTimeout.unref())}(d,b),c(null,a=>{if(k.released)return a&&a(Object.assign(Error("Lock is already released"),{code:"ERELEASED"}));o(d,{...b,realpath:!1},a)})})})})},a.exports.unlock=o,a.exports.check=function(a,b,c){(b={stale:1e4,realpath:!0,fs:e,...b}).stale=Math.max(b.stale||0,2e3),k(a,b,(a,d)=>{if(a)return c(a);b.fs.stat(j(d,b),(a,d)=>a?"ENOENT"===a.code?c(null,!1):c(a):c(null,!l(d,b)))})},a.exports.getLocks=function(){return i}},65562:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Q1:()=>u,Rv:()=>v,_o:()=>s,fd:()=>t,h6:()=>r,z1:()=>m});var e=c(29021),f=c(33873),g=c(75430),h=c(12969),i=c(69420),j=c(54366),k=a([g]);function l(){return(0,f.join)((0,g.getAgentDir)(),"tasks")}function m(a){return(0,f.join)(l(),(0,i.A0)(a).replace(/^\/+/,"").split("/").filter(Boolean).map(a=>encodeURIComponent(a)).join("--")||"root")}function n(a){return(0,f.join)(m(a),"tasks.jsonl")}function o(){return(0,f.join)(l(),"settings.json")}function p(a){(0,e.existsSync)(a)||(0,e.mkdirSync)(a,{recursive:!0,mode:448})}function q(a){if(!(0,e.existsSync)(a))return[];let b=(0,e.readFileSync)(a,"utf8"),c=[];for(let a of b.split("\n")){let b=a.trim();if(b)try{c.push(JSON.parse(b))}catch{}}return c}function r(a){return q(n(a)).sort((a,b)=>a.sortOrder-b.sortOrder||a.id-b.id)}function s(a,b){return r(a).find(a=>a.id===b)??null}function t(a){let b,c=n(a.projectRoot),d=r(a.projectRoot),e=d.findIndex(b=>b.id===a.id),f={...a,updatedAt:new Date().toISOString()};e>=0?d[e]=f:d.push(f),p(c.substring(0,c.lastIndexOf("/"))),b=d.map(a=>JSON.stringify(a)).join("\n")+"\n",(0,h.$)(c,b)}function u(a,b){let c=(0,f.join)(m(a),"events.jsonl"),d=q(c).reduce((a,b)=>Math.max(a,b.id),0)+1,g={...b,payload:b.payload??null,id:d,createdAt:new Date().toISOString()};return p(c.substring(0,c.lastIndexOf("/"))),(0,e.writeFileSync)(c,JSON.stringify(g)+"\n",{encoding:"utf8",flag:"a",mode:384}),g}function v(a){let b=function(a){let b=o();if(!(0,e.existsSync)(b))return null;try{return JSON.parse((0,e.readFileSync)(b,"utf8"))[a]??null}catch{return null}}(a),c=function(){let a=o();if(!(0,e.existsSync)(a))return(0,j.os)();try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));return{...(0,j.os)(),...b._global??{}}}catch{return(0,j.os)()}}();return b?{...c,...b,configValues:{...c.configValues,...b.configValues??{}}}:c}g=(k.then?(await k)():k)[0],d()}catch(a){d(a)}})},67313:(a,b,c)=>{var d=c(92759);b.operation=function(a){return new d(b.timeouts(a),{forever:a&&a.forever,unref:a&&a.unref,maxRetryTime:a&&a.maxRetryTime})},b.timeouts=function(a){if(a instanceof Array)return[].concat(a);var b={retries:10,factor:2,minTimeout:1e3,maxTimeout:1/0,randomize:!1};for(var c in a)b[c]=a[c];if(b.minTimeout>b.maxTimeout)throw Error("minTimeout is greater than maxTimeout");for(var d=[],e=0;e<b.retries;e++)d.push(this.createTimeout(e,b));return a&&a.forever&&!d.length&&d.push(this.createTimeout(e,b)),d.sort(function(a,b){return a-b}),d},b.createTimeout=function(a,b){var c=Math.round((b.randomize?Math.random()+1:1)*b.minTimeout*Math.pow(b.factor,a));return Math.min(c,b.maxTimeout)},b.wrap=function(a,c,d){if(c instanceof Array&&(d=c,c=null),!d)for(var e in d=[],a)"function"==typeof a[e]&&d.push(e);for(var f=0;f<d.length;f++){var g=d[f],h=a[g];a[g]=(function(d){var e=b.operation(c),f=Array.prototype.slice.call(arguments,1),g=f.pop();f.push(function(a){e.retry(a)||(a&&(arguments[0]=e.mainError()),g.apply(this,arguments))}),e.attempt(function(){d.apply(a,f)})}).bind(a,h),a[g].options=c}}},69420:(a,b,c)=>{"use strict";function d(a){return/^[a-zA-Z]:[\\/]/.test(a)||a.startsWith("\\\\")?a.replace(/\\/g,"/"):a}c.d(b,{A0:()=>d})},69453:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{O8:()=>i,mD:()=>h});var e=c(75430);c(29021);var f=c(33873);c(62391);var g=a([e]);function h(){globalThis.__piSessionListGeneration=(globalThis.__piSessionListGeneration??0)+1,globalThis.__piSessionListCache=void 0}function i(a,b){let c=(0,f.normalize)(b),d=(globalThis.__piSessionPathCache||(globalThis.__piSessionPathCache=new Map),globalThis.__piSessionPathCache),e=(globalThis.__piPathToSessionIdCache||(globalThis.__piPathToSessionIdCache=new Map),globalThis.__piPathToSessionIdCache),g=d.get(a),h=e.get(c);g&&g!==c&&e.get(g)===a&&e.delete(g),h&&h!==a&&d.get(h)===c&&d.delete(h),d.set(a,c),e.set(c,a)}e=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},74986:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Tu:()=>i});var e=c(73024),f=c(76760);c(61446);var g=c(75430);c(12969);var h=a([g]);function i(){let a=(0,f.join)((0,g.getAgentDir)(),"settings.json");if(!(0,e.existsSync)(a))return{};try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));return null===b||"object"!=typeof b||Array.isArray(b)?{}:b}catch{return{}}}g=(h.then?(await h)():h)[0],d()}catch(a){d(a)}})},75856:(a,b,c)=>{var d=global.process;let e=function(a){return a&&"object"==typeof a&&"function"==typeof a.removeListener&&"function"==typeof a.emit&&"function"==typeof a.reallyExit&&"function"==typeof a.listeners&&"function"==typeof a.kill&&"number"==typeof a.pid&&"function"==typeof a.on};if(e(d)){var f,g=c(12412),h=c(30223),i=/^win/i.test(d.platform),j=c(94735);"function"!=typeof j&&(j=j.EventEmitter),d.__signal_exit_emitter__?f=d.__signal_exit_emitter__:((f=d.__signal_exit_emitter__=new j).count=0,f.emitted={}),f.infinite||(f.setMaxListeners(1/0),f.infinite=!0),a.exports=function(a,b){if(!e(global.process))return function(){};g.equal(typeof a,"function","a callback must be provided for exit handler"),!1===n&&o();var c="exit";return b&&b.alwaysLast&&(c="afterexit"),f.on(c,a),function(){f.removeListener(c,a),0===f.listeners("exit").length&&0===f.listeners("afterexit").length&&k()}};var k=function(){n&&e(global.process)&&(n=!1,h.forEach(function(a){try{d.removeListener(a,m[a])}catch(a){}}),d.emit=r,d.reallyExit=p,f.count-=1)};a.exports.unload=k;var l=function(a,b,c){f.emitted[a]||(f.emitted[a]=!0,f.emit(a,b,c))},m={};h.forEach(function(a){m[a]=function(){e(global.process)&&d.listeners(a).length===f.count&&(k(),l("exit",null,a),l("afterexit",null,a),i&&"SIGHUP"===a&&(a="SIGINT"),d.kill(d.pid,a))}}),a.exports.signals=function(){return h};var n=!1,o=function(){!n&&e(global.process)&&(n=!0,f.count+=1,h=h.filter(function(a){try{return d.on(a,m[a]),!0}catch(a){return!1}}),d.emit=s,d.reallyExit=q)};a.exports.load=o;var p=d.reallyExit,q=function(a){e(global.process)&&(d.exitCode=a||0,l("exit",d.exitCode,null),l("afterexit",d.exitCode,null),p.call(d,d.exitCode))},r=d.emit,s=function(a,b){if(!("exit"===a&&e(global.process)))return r.apply(this,arguments);void 0!==b&&(d.exitCode=b);var c=r.apply(this,arguments);return l("exit",d.exitCode,null),l("afterexit",d.exitCode,null),c}}else a.exports=function(){return function(){}}},80723:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{fr:()=>j});var e=c(29021),f=c(33873),g=c(75430),h=c(74986),i=a([g,h]);function j(){let a=(0,f.join)((0,g.getAgentDir)(),"models.json");if(!(0,e.existsSync)(a))return{providers:{}};try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));return null!==b&&"object"==typeof b?b:{providers:{}}}catch{return{providers:{}}}}[g,h]=i.then?(await i)():i,d()}catch(a){d(a)}})},81463:(a,b,c)=>{a.exports=c(67313)},88250:(a,b,c)=>{"use strict";function d(){let a=(globalThis.__piModelsCacheState||(globalThis.__piModelsCacheState={entries:new Map,inFlight:new Map,generation:0}),globalThis.__piModelsCacheState);a.generation+=1,a.entries.clear(),a.inFlight.clear()}c.d(b,{k:()=>d})},92759:a=>{function b(a,b){"boolean"==typeof b&&(b={forever:b}),this._originalTimeouts=JSON.parse(JSON.stringify(a)),this._timeouts=a,this._options=b||{},this._maxRetryTime=b&&b.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}a.exports=b,b.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts},b.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timeouts=[],this._cachedTimeouts=null},b.prototype.retry=function(a){if(this._timeout&&clearTimeout(this._timeout),!a)return!1;var b=new Date().getTime();if(a&&b-this._operationStart>=this._maxRetryTime)return this._errors.unshift(Error("RetryOperation timeout occurred")),!1;this._errors.push(a);var c=this._timeouts.shift();if(void 0===c)if(!this._cachedTimeouts)return!1;else this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),c=this._timeouts.shift();var d=this,e=setTimeout(function(){d._attempts++,d._operationTimeoutCb&&(d._timeout=setTimeout(function(){d._operationTimeoutCb(d._attempts)},d._operationTimeout),d._options.unref&&d._timeout.unref()),d._fn(d._attempts)},c);return this._options.unref&&e.unref(),!0},b.prototype.attempt=function(a,b){this._fn=a,b&&(b.timeout&&(this._operationTimeout=b.timeout),b.cb&&(this._operationTimeoutCb=b.cb));var c=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){c._operationTimeoutCb()},c._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)},b.prototype.try=function(a){console.log("Using RetryOperation.try() is deprecated"),this.attempt(a)},b.prototype.start=function(a){console.log("Using RetryOperation.start() is deprecated"),this.attempt(a)},b.prototype.start=b.prototype.try,b.prototype.errors=function(){return this._errors},b.prototype.attempts=function(){return this._attempts},b.prototype.mainError=function(){if(0===this._errors.length)return null;for(var a={},b=null,c=0,d=0;d<this._errors.length;d++){var e=this._errors[d],f=e.message,g=(a[f]||0)+1;a[f]=g,g>=c&&(b=e,c=g)}return b}},93329:(a,b,c)=>{var d,e,f,g=c(29021),h=c(39466),i=c(18827),j=c(12817),k=c(28354);function l(a,b){Object.defineProperty(a,d,{get:function(){return b}})}"function"==typeof Symbol&&"function"==typeof Symbol.for?(d=Symbol.for("graceful-fs.queue"),e=Symbol.for("graceful-fs.previous")):(d="___graceful-fs.queue",e="___graceful-fs.previous");var m=function(){};function n(a){h(a),a.gracefulify=n,a.createReadStream=function(b,c){return new a.ReadStream(b,c)},a.createWriteStream=function(b,c){return new a.WriteStream(b,c)};var b=a.readFile;a.readFile=function(a,c,d){return"function"==typeof c&&(d=c,c=null),function a(c,d,e,f){return b(c,d,function(b){b&&("EMFILE"===b.code||"ENFILE"===b.code)?o([a,[c,d,e],b,f||Date.now(),Date.now()]):"function"==typeof e&&e.apply(this,arguments)})}(a,c,d)};var c=a.writeFile;a.writeFile=function(a,b,d,e){return"function"==typeof d&&(e=d,d=null),function a(b,d,e,f,g){return c(b,d,e,function(c){c&&("EMFILE"===c.code||"ENFILE"===c.code)?o([a,[b,d,e,f],c,g||Date.now(),Date.now()]):"function"==typeof f&&f.apply(this,arguments)})}(a,b,d,e)};var d=a.appendFile;d&&(a.appendFile=function(a,b,c,e){return"function"==typeof c&&(e=c,c=null),function a(b,c,e,f,g){return d(b,c,e,function(d){d&&("EMFILE"===d.code||"ENFILE"===d.code)?o([a,[b,c,e,f],d,g||Date.now(),Date.now()]):"function"==typeof f&&f.apply(this,arguments)})}(a,b,c,e)});var e=a.copyFile;e&&(a.copyFile=function(a,b,c,d){return"function"==typeof c&&(d=c,c=0),function a(b,c,d,f,g){return e(b,c,d,function(e){e&&("EMFILE"===e.code||"ENFILE"===e.code)?o([a,[b,c,d,f],e,g||Date.now(),Date.now()]):"function"==typeof f&&f.apply(this,arguments)})}(a,b,c,d)});var f=a.readdir;a.readdir=function(a,b,c){"function"==typeof b&&(c=b,b=null);var d=g.test(process.version)?function(a,b,c,d){return f(a,e(a,b,c,d))}:function(a,b,c,d){return f(a,b,e(a,b,c,d))};return d(a,b,c);function e(a,b,c,e){return function(f,g){f&&("EMFILE"===f.code||"ENFILE"===f.code)?o([d,[a,b,c],f,e||Date.now(),Date.now()]):(g&&g.sort&&g.sort(),"function"==typeof c&&c.call(this,f,g))}}};var g=/^v[0-5]\./;if("v0.8"===process.version.substr(0,4)){var j=i(a);q=j.ReadStream,r=j.WriteStream}var k=a.ReadStream;k&&(q.prototype=Object.create(k.prototype),q.prototype.open=function(){var a=this;t(a.path,a.flags,a.mode,function(b,c){b?(a.autoClose&&a.destroy(),a.emit("error",b)):(a.fd=c,a.emit("open",c),a.read())})});var l=a.WriteStream;l&&(r.prototype=Object.create(l.prototype),r.prototype.open=function(){var a=this;t(a.path,a.flags,a.mode,function(b,c){b?(a.destroy(),a.emit("error",b)):(a.fd=c,a.emit("open",c))})}),Object.defineProperty(a,"ReadStream",{get:function(){return q},set:function(a){q=a},enumerable:!0,configurable:!0}),Object.defineProperty(a,"WriteStream",{get:function(){return r},set:function(a){r=a},enumerable:!0,configurable:!0});var m=q;Object.defineProperty(a,"FileReadStream",{get:function(){return m},set:function(a){m=a},enumerable:!0,configurable:!0});var p=r;function q(a,b){return this instanceof q?(k.apply(this,arguments),this):q.apply(Object.create(q.prototype),arguments)}function r(a,b){return this instanceof r?(l.apply(this,arguments),this):r.apply(Object.create(r.prototype),arguments)}Object.defineProperty(a,"FileWriteStream",{get:function(){return p},set:function(a){p=a},enumerable:!0,configurable:!0});var s=a.open;function t(a,b,c,d){return"function"==typeof c&&(d=c,c=null),function a(b,c,d,e,f){return s(b,c,d,function(g,h){g&&("EMFILE"===g.code||"ENFILE"===g.code)?o([a,[b,c,d,e],g,f||Date.now(),Date.now()]):"function"==typeof e&&e.apply(this,arguments)})}(a,b,c,d)}return a.open=t,a}function o(a){m("ENQUEUE",a[0].name,a[1]),g[d].push(a),q()}function p(){for(var a=Date.now(),b=0;b<g[d].length;++b)g[d][b].length>2&&(g[d][b][3]=a,g[d][b][4]=a);q()}function q(){if(clearTimeout(f),f=void 0,0!==g[d].length){var a=g[d].shift(),b=a[0],c=a[1],e=a[2],h=a[3],i=a[4];if(void 0===h)m("RETRY",b.name,c),b.apply(null,c);else if(Date.now()-h>=6e4){m("TIMEOUT",b.name,c);var j=c.pop();"function"==typeof j&&j.call(null,e)}else Date.now()-i>=Math.min(1.2*Math.max(i-h,1),100)?(m("RETRY",b.name,c),b.apply(null,c.concat([h]))):g[d].push(a);void 0===f&&(f=setTimeout(q,0))}}k.debuglog?m=k.debuglog("gfs4"):/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&(m=function(){var a=k.format.apply(k,arguments);console.error(a="GFS4: "+a.split(/\n/).join("\nGFS4: "))}),!g[d]&&(l(g,global[d]||[]),g.close=function(a){function b(b,c){return a.call(g,b,function(a){a||p(),"function"==typeof c&&c.apply(this,arguments)})}return Object.defineProperty(b,e,{value:a}),b}(g.close),g.closeSync=function(a){function b(b){a.apply(g,arguments),p()}return Object.defineProperty(b,e,{value:a}),b}(g.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&process.on("exit",function(){m(g[d]),c(12412).equal(g[d].length,0)})),global[d]||l(global,g[d]),a.exports=n(j(g)),process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!g.__patched&&(a.exports=n(g),g.__patched=!0)},96515:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{IR:()=>l,py:()=>k});var e=c(75430),f=c(80723),g=c(32982),h=a([e,f]);[e,f]=h.then?(await h)():h;let m=null;async function i(a){let b=Date.now();if(m&&b-m.at<6e4)return m.data;let c=await a.getAvailable();return m={data:c,at:b},c}function j(a,b){return a.provider===b.provider&&a.id===b.modelId}async function k(a,b,c={}){let d=(0,f.fr)().providers??{},h=new Set;for(let[a,b]of Object.entries(d)){let c=(0,g.du)(b);for(let[b,d]of Object.entries(c))!0===d.hidden&&h.add(`${a}/${b}`)}let j=(b??[]).map(a=>a.trim()).filter(Boolean),l=[],m=[],n={},o=[];if(0===j.length)l=await i(a);else{let b=await (0,e.resolveModelScopeWithDiagnostics)(j,a);for(let c of(m=b.scopedModels,l=b.scopedModels.length>0?b.scopedModels.map(a=>a.model):await i(a),o.push(...b.diagnostics.map(a=>a.message)),m))c.thinkingLevel&&(n[`${c.model.provider}/${c.model.id}`]=c.thinkingLevel)}return c.includeHidden||(l=l.filter(a=>!h.has(`${a.provider}/${a.id}`))),{visible:l,scopedModels:c.includeHidden||l.length===m.length?m:m.filter(a=>!h.has(`${a.model.provider}/${a.model.id}`)),thinkingLevelPins:n,warnings:o}}function l(a,b={}){let c=b.requestedModel?a.visible.find(a=>j(a,b.requestedModel)):void 0;if(b.requestedModel&&!c)throw Error(`Model is not available in the enabled scope: ${b.requestedModel.provider}/${b.requestedModel.modelId}`);let d=c?a.scopedModels.find(a=>j(a.model,{provider:c.provider,modelId:c.id})):void 0,e=!c&&b.defaultModel?a.scopedModels.find(a=>j(a.model,b.defaultModel)):void 0,f=c?void 0:e??a.scopedModels[0],g=c||f||!b.defaultModel?void 0:a.visible.find(a=>j(a,b.defaultModel)),h=c??f?.model??g,i=d??f,k=b.thinkingLevel??i?.thinkingLevel;return{...h?{model:h}:{},...k?{thinkingLevel:k}:{},scopedModels:[...a.scopedModels]}}d()}catch(a){d(a)}})},97563:(a,b,c)=>{"use strict";c.d(b,{MJ:()=>k,Md:()=>g,UY:()=>h,g0:()=>j,wI:()=>i});let d="normal",e="full",f="auto";function g(){return{collaborationMode:d,tokenMode:e,toolApprovalMode:f,permissionRules:{allow:[],ask:[],deny:[]}}}function h(a){return"normal"===a||"plan"===a||"goal"===a?a:d}function i(a){return"economy"===a||"delivery"===a||"full"===a?a:e}function j(a){return"ask"===a||"auto"===a||"yolo"===a?a:f}let k=new Set(["read","grep","find","ls","bash_output","get_tools","get_commands","get_session_stats"])}};
|
|
16
|
+
${f}`:""));return await C.send({type:"prompt",message:E}),!0}catch(e){let c=e instanceof Error?e.message:String(e),d=(0,i._o)(b,a);return d&&("preparing"===d.status||"queued"===d.status)&&(q(a,d.runSeq,[d.status],"failed",{failureReason:"setup_error",lastError:c,settledAt:o(),finishedAt:o()}),(0,i.Q1)(b,{taskId:a,kind:"failed",actor:"engine",payload:{reason:"setup_error",message:c}})),!1}finally{c.launching.delete(a)}}async function u(a,b){try{let c=(await (0,h.P9)(a)).find(a=>a.branch===b);return c?.path??null}catch{return null}}async function v(a,b){let c=`task-${a.id}`,{session:d}=await (0,j.OF)(c,"",b,{});return{session:d}}async function w(a,b){let c=m().live.get(a.connectionId);if(!c||c.taskId!==a.taskId||!q(a.taskId,a.runSeq,["running","awaiting_input"],"review",{settledAt:o()}))return;(0,i.Q1)(b.projectRoot,{taskId:a.taskId,kind:"review",actor:"engine"});let d=(0,i.Rv)(b.projectRoot);d.preflightCommand&&await x(a,d.preflightCommand)}async function x(a,b){let c=(0,i._o)(a.projectRoot,a.taskId);if(c){p({...c,preflight:{status:"running",command:b}},"preflight_start","engine",{command:b});try{let c=await z(a.session.cwd,b),d=(0,i._o)(a.projectRoot,a.taskId);if(!d)return;p({...d,preflight:{status:0===c.code?"passed":"failed",command:b,exitCode:c.code,outputTail:0===c.code?null:c.output.slice(-4e3)}},0===c.code?"preflight_passed":"preflight_failed","engine",{command:b,exitCode:c.code})}catch(d){let c=(0,i._o)(a.projectRoot,a.taskId);if(!c)return;p({...c,preflight:{status:"failed",command:b,outputTail:d instanceof Error?d.message:String(d)}},"preflight_failed","engine",{command:b})}}}function y(a,b){return new Promise((c,d)=>{let e=(0,g.spawn)(b,{cwd:a,shell:!0,stdio:"ignore"});e.on("error",d),e.on("exit",a=>{0===a?c():d(Error(`init command exited with code ${a??"null"}`))})})}function z(a,b){return new Promise(c=>{let d=(0,g.spawn)(b,{cwd:a,shell:!0}),e="";d.stdout?.on("data",a=>{e+=a.toString()}),d.stderr?.on("data",a=>{e+=a.toString()}),d.on("error",()=>c({code:1,output:e})),d.on("exit",a=>c({code:a,output:e}))})}function A(a){return"/"+a.split("--").map(a=>decodeURIComponent(a)).join("/")}async function B(){try{await C()}catch{}}async function C(){let a=m();if(!a)return;let b=(0,i.z1)("__engine__").replace(/__engine__$/,"");if((0,e.existsSync)(b))for(let c of(0,e.readdirSync)(b,{withFileTypes:!0})){if(!c.isDirectory()||"__engine__"===c.name)continue;let b=A(c.name);for(let c of(0,i.h6)(b)){let d=a.byTask.get(c.id);d||"running"!==c.status&&"awaiting_input"!==c.status&&"merging"!==c.status?d||"preparing"!==c.status||(q(c.id,c.runSeq,["preparing"],"todo",{startedAt:null}),(0,i.Q1)(b,{taskId:c.id,kind:"recovered",actor:"engine"})):(q(c.id,c.runSeq,[c.status],"failed",{failureReason:"interrupted",lastError:"Engine restarted; the run was interrupted.",settledAt:o(),finishedAt:o()}),(0,i.Q1)(b,{taskId:c.id,kind:"interrupted",actor:"engine"}))}l()&&r(b)}}d()}catch(a){d(a)}})},15253:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Fk:()=>h,Y1:()=>g});var e=c(75430),f=a([e]);function g(a,b){return a&&(0,e.hasTrustRequiringProjectResources)(a)?{requiresTrust:!0,trusted:!0===new e.ProjectTrustStore(b).get(a)}:{requiresTrust:!1,trusted:!0}}function h(a,b){if(!g(a,b).requiresTrust)return;let c=new e.ProjectTrustStore(b);return{resolveProjectTrust:async()=>!0===c.get(a)}}e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},16176:a=>{"use strict";let b=Symbol();a.exports.probe=function(a,c,d){let e=c[b];if(e)return c.stat(a,(a,b)=>{if(a)return d(a);d(null,b.mtime,e)});let f=new Date(1e3*Math.ceil(Date.now()/1e3)+5);c.utimes(a,f,f,e=>{if(e)return d(e);c.stat(a,(a,e)=>{if(a)return d(a);let f=e.mtime.getTime()%1e3==0?"s":"ms";Object.defineProperty(c,b,{value:f}),d(null,e.mtime,f)})})},a.exports.getMtime=function(a){let b=Date.now();return"s"===a&&(b=1e3*Math.ceil(b/1e3)),new Date(b)}},17114:(a,b,c)=>{"use strict";c.d(b,{Gc:()=>g,ov:()=>h,pj:()=>i,wx:()=>j});var d=c(55511),e=c(29021);function f(a){return`${a}.queue.json`}function g(a,b,c){return{id:(0,d.randomUUID)(),kind:a,text:b,...c&&c.length>0?{images:c}:{},queuedAt:Date.now()}}function h(a){let b=f(a);if(!(0,e.existsSync)(b))return[];try{let a=JSON.parse((0,e.readFileSync)(b,"utf8"));if(!a||1!==a.version||!Array.isArray(a.entries))return[];return a.entries.filter(a=>!!a&&("steer"===a.kind||"followUp"===a.kind)&&"string"==typeof a.text)}catch{return[]}}function i(a,b){if(!a)return;let c=f(a),g=`${c}.tmp-${process.pid}-${(0,d.randomUUID)()}`;try{(0,e.writeFileSync)(g,JSON.stringify({version:1,entries:b}),"utf8"),(0,e.renameSync)(g,c)}catch(a){try{(0,e.rmSync)(g,{force:!0})}catch{}console.error(`[pi-web] failed to persist queue sidecar ${c}:`,a instanceof Error?a.message:String(a))}}function j(a){try{(0,e.rmSync)(f(a),{force:!0})}catch{}}},18437:(a,b,c)=>{"use strict";function d(a){if(void 0===a)return null;if(!Array.isArray(a))return"images must be an array";if(a.length>10)return"A message can include at most 10 images";for(let b of a)if(!function(a){var b;if(!a||"object"!=typeof a||"image"!==a.type||"string"!=typeof a.data||"string"!=typeof a.mimeType||(b=a.mimeType,!/^image\/[A-Za-z0-9][A-Za-z0-9!#$&^_.+-]*$/.test(b)))return!1;let c=function(a){if(!a||a.length%4!=0)return null;let b=a.endsWith("==")?2:+!!a.endsWith("="),c=a.length-b,d=null;for(let b=0;b<c;b+=1){var e;let c=(e=a.charCodeAt(b))>=65&&e<=90?e-65:e>=97&&e<=122?e-97+26:e>=48&&e<=57?e-48+52:43===e?62:47===e?63:null;if(null===c)return null;d=c}for(let b=c;b<a.length;b+=1)if("="!==a[b])return null;return 2===b&&d%16!=0||1===b&&d%4!=0?null:a.length/4*3-b}(a.data);return null!==c&&c<=0xa00000}(b))return"Each image must be valid base64 image data with an image MIME type and be 10MB or smaller";return null}c.d(b,{kc:()=>d})},18827:(a,b,c)=>{var d=c(27910).Stream;a.exports=function(a){return{ReadStream:function b(c,e){if(!(this instanceof b))return new b(c,e);d.call(this);var f=this;this.path=c,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=65536;for(var g=Object.keys(e=e||{}),h=0,i=g.length;h<i;h++){var j=g[h];this[j]=e[j]}if(this.encoding&&this.setEncoding(this.encoding),void 0!==this.start){if("number"!=typeof this.start)throw TypeError("start must be a Number");if(void 0===this.end)this.end=1/0;else if("number"!=typeof this.end)throw TypeError("end must be a Number");if(this.start>this.end)throw Error("start must be <= end");this.pos=this.start}null!==this.fd?process.nextTick(function(){f._read()}):a.open(this.path,this.flags,this.mode,function(a,b){if(a){f.emit("error",a),f.readable=!1;return}f.fd=b,f.emit("open",b),f._read()})},WriteStream:function b(c,e){if(!(this instanceof b))return new b(c,e);d.call(this),this.path=c,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0;for(var f=Object.keys(e=e||{}),g=0,h=f.length;g<h;g++){var i=f[g];this[i]=e[i]}if(void 0!==this.start){if("number"!=typeof this.start)throw TypeError("start must be a Number");if(this.start<0)throw Error("start must be >= zero");this.pos=this.start}this.busy=!1,this._queue=[],null===this.fd&&(this._open=a.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush())}}}},29040:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{wF:()=>o});var e=c(73024),f=c(76760),g=c(75430),h=c(12969),i=a([g]);g=(i.then?(await i)():i)[0];let p=new Set([400,401,403,404,408,409,413,429,500,502,503,504]);function j(){return(0,f.join)((0,g.getAgentDir)(),"pi-web-error-log.json")}function k(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.id&&"string"==typeof a.timestamp&&("error"===a.level||"warning"===a.level||"info"===a.level)&&"string"==typeof a.source&&"string"==typeof a.message}function l(a){return a.replace(/https?:\/\/[^\s/@]+:[^\s/@]+@/gi,"https://[redacted]@").replace(/Bearer\s+[A-Za-z0-9._~+/=-]+/gi,"Bearer [redacted]").replace(/\bsk-[A-Za-z0-9_-]{8,}\b/g,"sk-[redacted]").replace(/\b(?:oc|opencode|zen)[_-]?[A-Za-z0-9._~-]{12,}\b/gi,"[key-redacted]").replace(/((?:api[_-]?key|token|password|secret)\s*[:=]\s*)([^\s,;]+)/gi,"$1[redacted]")}function m(a){return a.length>2e4?`${a.slice(0,2e4)}…`:a}function n(a){let b=a.match(/\bHTTP\s+(\d{3})\b|\bstatus(?:\s+code)?\s*[:=]?\s*(\d{3})\b|\b(4\d{2}|5\d{2})\b/i),c=Number(b?.[1]??b?.[2]??b?.[3]);return p.has(c)?c:void 0}function o(a){let b=function(){globalThis.__piErrorLogState||(globalThis.__piErrorLogState={loaded:!1,entries:[]});let a=globalThis.__piErrorLogState;if(!a.loaded){a.loaded=!0;try{if((0,e.existsSync)(j())){let b=JSON.parse((0,e.readFileSync)(j(),"utf8"));Array.isArray(b)&&(a.entries=b.filter(k).slice(-500))}}catch{a.entries=[]}}return a}(),c=m(l(a.message.trim())),d=a.details?m(l(a.details)):void 0,f={id:`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,timestamp:new Date().toISOString(),level:a.level??"error",source:a.source??"unknown",...void 0!==a.statusCode?{statusCode:a.statusCode}:void 0!==n(c)?{statusCode:n(c)}:{},...a.provider?{provider:a.provider}:{},...a.model?{model:a.model}:{},...a.sessionId?{sessionId:a.sessionId}:{},message:c||"Unknown error",...d?{details:d}:{}};b.entries.push(f),b.entries.length>500&&b.entries.splice(0,b.entries.length-500);var g=b.entries;try{(0,h.$)(j(),JSON.stringify(g,null,2))}catch{}return f}d()}catch(a){d(a)}})},30116:(a,b,c)=>{"use strict";c.d(b,{LD:()=>m,kP:()=>o,ni:()=>n});var d=c(97563);function e(a){if(!a)return[];let b=[];for(let c of a){let a=function(a){let b=a.trim();if(!b)return null;let c=b.indexOf("="),d=b.indexOf("(");if(c>0&&(d<0||c<d)){let a=b.slice(0,c).trim();return a?{tool:a,subject:b.slice(c+1),literal:!0}:null}if(d>=0&&b.endsWith(")")){let a=b.slice(0,d).trim();return a?{tool:a,subject:b.slice(d+1,-1)}:null}return{tool:b}}(c);a&&b.push(a)}return b}function f(a){return void 0===a.subject?a.tool:a.literal?`${a.tool}=${a.subject}`:`${a.tool}(${a.subject})`}function g(a){return a.includes("*")||a.includes("?")}function h(a,b){return void 0===b.subject||""!==a&&(b.literal||!g(b.subject)?a===b.subject:(function(a){let b="^";for(let c of a)"*"===c?b+=".*":"?"===c?b+=".":b+=c.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return RegExp(b+"$")})(b.subject).test(a))}function i(a,b){return a.toLowerCase()===b.toLowerCase()}function j(a,b,c){for(let d of a)if(i(d.tool,b)&&h(c,d))return!0;return!1}function k(a){let b=a.trim();return!!b&&!!(/\$\(/.test(b)||/`/.test(b)||/(^|\s)(python|python3|node|ruby|perl|php)\s+-[a-z]*c(\s|$)/i.test(b)||/(^|\s)(sh|bash|zsh)\s+-c(\s|$)/i.test(b)||/(^|\s)(sudo|su)\s/i.test(b)||/;\s*[a-z]/i.test(b)||/\|\s*(sh|bash|zsh|python|python3|node)\b/i.test(b)||/\|\s*tee\b/i.test(b))}let l=["ls","cat","head","tail","grep","rg","find","wc","echo","pwd","cd","git status","git diff","git log","git branch","git remote","git stash list","git show","git ls-files","which","type","env","file","stat","du","df","history","man","less","more","tree","git diff --","git log --","curl -I","curl --head"];function m(a,b,c={}){let e=c.mode??"auto",f=c.readOnly??d.MJ.has(b.toLowerCase()),n=function(a,b){if("bash"===a.toLowerCase()){let a=b?.command;return"string"==typeof a&&a.trim()?`command:${a.trim()}`:""}let c=b??{},d="string"==typeof c.source_path?c.source_path:"",e="string"==typeof c.destination_path?c.destination_path:"";if(d&&e)return e!==d?`${d}\u0000${e}`:d;for(let a of["path","file_path","file","glob","pattern","directory"]){let b=c[a];if("string"==typeof b&&b)return b}return""}(b,c.args),o="bash"===b.toLowerCase(),p=o&&n.startsWith("command:")?n.slice(8):"";if(j(a.deny,b,n))return"deny";if(o&&p){let c=k(p);return j(a.allow,b,n)&&!c?"allow":j(a.ask,b,n)?"ask":c?a.allow.some(a=>i(a.tool,b)&&void 0!==a.subject&&!g(a.subject)&&h(n,a))||"yolo"===e?"allow":"ask":!function(a){let b=a.trim();if(!b||k(b)||/[;&|>]/.test(b))return!1;let c=b.toLowerCase();for(let a of l)if(c===a||c.startsWith(a+" "))return!0;return!1}(p)?"ask"===e?"ask":"allow":"allow"}return j(a.allow,b,n)?"allow":j(a.ask,b,n)?"ask":f?"allow":"ask"===e?"ask":"allow"}function n(a){return{allow:e(a?.allow),ask:e(a?.ask),deny:e(a?.deny)}}function o(a){return{allow:a.allow.map(f),ask:a.ask.map(f),deny:a.deny.map(f)}}},30223:a=>{a.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"],"win32"!==process.platform&&a.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT"),"linux"===process.platform&&a.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")},32982:(a,b,c)=>{"use strict";function d(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function e(a){let b=function(a){let b={},c=a?.models;if(!Array.isArray(c))return b;for(let a of c)d(a)&&"string"==typeof a.id&&a.id&&(b[a.id]={...a});return b}(a),c=function(a){let b=a?.modelOverrides;if(!d(b))return{};let c={};for(let[a,e]of Object.entries(b))d(e)&&(c[a]={...e});return c}(a),e=new Set([...Object.keys(b),...Object.keys(c)]),f={};for(let a of e)f[a]={...b[a]??{},...c[a]??{}};return f}c.d(b,{du:()=>e})},39466:(a,b,c)=>{var d=c(81115),e=process.cwd,f=null,g=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return f||(f=e.call(process)),f};try{process.cwd()}catch(a){}if("function"==typeof process.chdir){var h=process.chdir;process.chdir=function(a){f=null,h.call(process,a)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,h)}a.exports=function(a){var b,c,e;function f(b){return b?function(c,d,e){return b.call(a,c,d,function(a){m(a)&&(a=null),e&&e.apply(this,arguments)})}:b}function h(b){return b?function(c,d){try{return b.call(a,c,d)}catch(a){if(!m(a))throw a}}:b}function i(b){return b?function(c,d,e,f){return b.call(a,c,d,e,function(a){m(a)&&(a=null),f&&f.apply(this,arguments)})}:b}function j(b){return b?function(c,d,e){try{return b.call(a,c,d,e)}catch(a){if(!m(a))throw a}}:b}function k(b){return b?function(c,d,e){function f(a,b){b&&(b.uid<0&&(b.uid+=0x100000000),b.gid<0&&(b.gid+=0x100000000)),e&&e.apply(this,arguments)}return"function"==typeof d&&(e=d,d=null),d?b.call(a,c,d,f):b.call(a,c,f)}:b}function l(b){return b?function(c,d){var e=d?b.call(a,c,d):b.call(a,c);return e&&(e.uid<0&&(e.uid+=0x100000000),e.gid<0&&(e.gid+=0x100000000)),e}:b}function m(a){return!a||"ENOSYS"===a.code||(!process.getuid||0!==process.getuid())&&("EINVAL"===a.code||"EPERM"===a.code)}d.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&((c=a).lchmod=function(a,b,e){c.open(a,d.O_WRONLY|d.O_SYMLINK,b,function(a,d){if(a){e&&e(a);return}c.fchmod(d,b,function(a){c.close(d,function(b){e&&e(a||b)})})})},c.lchmodSync=function(a,b){var e,f=c.openSync(a,d.O_WRONLY|d.O_SYMLINK,b),g=!0;try{e=c.fchmodSync(f,b),g=!1}finally{if(g)try{c.closeSync(f)}catch(a){}else c.closeSync(f)}return e}),a.lutimes||(e=a,d.hasOwnProperty("O_SYMLINK")&&e.futimes?(e.lutimes=function(a,b,c,f){e.open(a,d.O_SYMLINK,function(a,d){if(a){f&&f(a);return}e.futimes(d,b,c,function(a){e.close(d,function(b){f&&f(a||b)})})})},e.lutimesSync=function(a,b,c){var f,g=e.openSync(a,d.O_SYMLINK),h=!0;try{f=e.futimesSync(g,b,c),h=!1}finally{if(h)try{e.closeSync(g)}catch(a){}else e.closeSync(g)}return f}):e.futimes&&(e.lutimes=function(a,b,c,d){d&&process.nextTick(d)},e.lutimesSync=function(){})),a.chown=i(a.chown),a.fchown=i(a.fchown),a.lchown=i(a.lchown),a.chmod=f(a.chmod),a.fchmod=f(a.fchmod),a.lchmod=f(a.lchmod),a.chownSync=j(a.chownSync),a.fchownSync=j(a.fchownSync),a.lchownSync=j(a.lchownSync),a.chmodSync=h(a.chmodSync),a.fchmodSync=h(a.fchmodSync),a.lchmodSync=h(a.lchmodSync),a.stat=k(a.stat),a.fstat=k(a.fstat),a.lstat=k(a.lstat),a.statSync=l(a.statSync),a.fstatSync=l(a.fstatSync),a.lstatSync=l(a.lstatSync),a.chmod&&!a.lchmod&&(a.lchmod=function(a,b,c){c&&process.nextTick(c)},a.lchmodSync=function(){}),a.chown&&!a.lchown&&(a.lchown=function(a,b,c,d){d&&process.nextTick(d)},a.lchownSync=function(){}),"win32"===g&&(a.rename="function"!=typeof a.rename?a.rename:function(b){function c(c,d,e){var f=Date.now(),g=0;b(c,d,function h(i){if(i&&("EACCES"===i.code||"EPERM"===i.code||"EBUSY"===i.code)&&Date.now()-f<6e4){setTimeout(function(){a.stat(d,function(a,f){a&&"ENOENT"===a.code?b(c,d,h):e(i)})},g),g<100&&(g+=10);return}e&&e(i)})}return Object.setPrototypeOf&&Object.setPrototypeOf(c,b),c}(a.rename)),a.read="function"!=typeof a.read?a.read:function(b){function c(c,d,e,f,g,h){var i;if(h&&"function"==typeof h){var j=0;i=function(k,l,m){if(k&&"EAGAIN"===k.code&&j<10)return j++,b.call(a,c,d,e,f,g,i);h.apply(this,arguments)}}return b.call(a,c,d,e,f,g,i)}return Object.setPrototypeOf&&Object.setPrototypeOf(c,b),c}(a.read),a.readSync="function"!=typeof a.readSync?a.readSync:(b=a.readSync,function(c,d,e,f,g){for(var h=0;;)try{return b.call(a,c,d,e,f,g)}catch(a){if("EAGAIN"===a.code&&h<10){h++;continue}throw a}})}},44290:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{lN:()=>j});var e=c(74986),f=c(97563),g=c(30116),h=a([e]);function i(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=a.permissionRules,c=(0,g.kP)((0,g.ni)(b));return{collaborationMode:(0,f.UY)(a.collaborationMode),tokenMode:(0,f.wI)(a.tokenMode),toolApprovalMode:(0,f.g0)(a.toolApprovalMode),permissionRules:{allow:Array.isArray(c.allow)?c.allow:[],ask:Array.isArray(c.ask)?c.ask:[],deny:Array.isArray(c.deny)?c.deny:[]}}}function j(a){let b=(0,f.Md)(),c=(0,e.Tu)();if(a){let b=c.modesPerSession;if(b&&"object"==typeof b&&!Array.isArray(b)){let c=i(b[a]);if(c)return c}}return i(c.modes)??b}e=(h.then?(await h)():h)[0],d()}catch(a){d(a)}})},46162:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{MO:()=>u,qk:()=>l,rY:()=>m,xl:()=>y,zB:()=>v});var e=c(73024),f=c(76760),g=c(3433),h=c(75430);c(12969);var i=c(29040),j=a([h,i]);function k(a=Date.now()){let b=new Date(a);return Date.UTC(b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate()+1,0,0,0)}[h,i]=j.then?(await j)():j;let z=["opencode"];function l(a){return"opencode"===a||"opencode-go"===a}function m(a){return globalThis.__piOpenCodeZenSwitchListeners??=new Set,globalThis.__piOpenCodeZenSwitchListeners.add(a),()=>globalThis.__piOpenCodeZenSwitchListeners?.delete(a)}function n(a){for(let b of globalThis.__piOpenCodeZenSwitchListeners??[])b(a)}function o(){return(0,f.join)((0,h.getAgentDir)(),"opencode-zen.json")}function p(){return{accounts:[],autoSwitch:!0,cooldownMs:6e4,externalAccess:{enabled:!1,port:7474,apiKey:""}}}function q(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function r(a,b){if(!q(a))return null;let c="string"==typeof a.apiKey?a.apiKey.trim():"";if(!c)return null;let d="string"==typeof a.id&&a.id.trim()?a.id.trim():`account-${b+1}`;return{id:d,note:"string"==typeof a.note&&a.note.trim()?a.note.trim():d,apiKey:c,enabled:!1!==a.enabled,proxy:function(a){let b=q(a)?a:{},c=Number(b.port),d="string"==typeof b.url?b.url.trim():"",e="string"==typeof b.protocol?b.protocol.toLowerCase():void 0,f="https"===e||"socks5"===e?e:"http";if(d&&(void 0===e||"http"===e||"https"===e||"socks5"===e))try{let a=d.match(/^([a-z][a-z0-9+.-]*):\/\//i)?.[1]?.toLowerCase();("socks5"===a||"https"===a)&&(f=a)}catch{}if(d)try{let a=new URL(/^(https?|socks5):\/\//i.test(d)?d:`http://${d}`);d="http:"!==a.protocol&&"https:"!==a.protocol&&"socks5:"!==a.protocol||a.username||a.password||"/"!==a.pathname&&""!==a.pathname||a.search||a.hash?"":`${a.protocol}//${a.hostname}`}catch{d=""}return{protocol:f,enabled:!1!==b.enabled,url:d,port:Number.isInteger(c)&&c>0&&c<=65535?c:0,username:"string"==typeof b.username?b.username:"",password:"string"==typeof b.password?b.password:""}}(a.proxy)}}function s(a){var b;let c,d,e=q(a)?a:{},f=Array.isArray(e.accounts)?e.accounts.map(r).filter(a=>null!==a):[],g=Number(e.cooldownMs),h=p().externalAccess;return{accounts:f,autoSwitch:!1!==e.autoSwitch,cooldownMs:Number.isFinite(g)?Math.min(Math.max(g,0),6e5):6e4,externalAccess:(b=e.externalAccess,c=q(b)?b:{},d=Number(c.port),{enabled:!0===c.enabled,port:Number.isInteger(d)&&d>0&&d<=65535?d:h.port,apiKey:"string"==typeof c.apiKey?c.apiKey.trim():h.apiKey})}}function t(){return globalThis.__piOpenCodeZenState||(globalThis.__piOpenCodeZenState={config:function(){try{if((0,e.existsSync)(o()))return s(JSON.parse((0,e.readFileSync)(o(),"utf8")));let a=(0,f.join)((0,h.getAgentDir)(),"auth.json");if((0,e.existsSync)(a)){let b=JSON.parse((0,e.readFileSync)(a,"utf8")),c=q(b.opencode)?b.opencode:null,d=c&&"string"==typeof c.key?c.key.trim():"";if(d)return s({accounts:[{id:"legacy-opencode",note:"默认 OpenCode Zen",apiKey:d,enabled:!0,proxy:{protocol:"http",enabled:!1,url:"",port:0,username:"",password:""}}]})}return p()}catch{return p()}}(),activeIndex:0,cooldownUntil:new Map,dispatchers:new Map}),globalThis.__piOpenCodeZenState}function u(){return t().config.accounts.find(a=>a.enabled&&a.apiKey)?.apiKey??null}async function v(a){let b=u();if(b)for(let c of(await Promise.allSettled(z.map(c=>a.setRuntimeApiKey(c,b)))))"rejected"===c.status&&(0,i.wF)({level:"warning",source:"opencode-zen-runtime",provider:"opencode",message:`设置 OpenCode Zen runtime Key 失败:${c.reason instanceof Error?c.reason.message:String(c.reason)}`})}function w(a,b=new Set,c=!1){let d=Date.now(),e=a.config.accounts.length;if(0===e)return null;let f=null;for(let c=0;c<e;c++){let g=(a.activeIndex+c)%e,h=a.config.accounts[g];if(!h.enabled||!h.apiKey||b.has(h.id))continue;let i=a.cooldownUntil.get(h.id),j=i?.until??0;if(j>d){i?.daily||f&&!(j<f.until)||(f={account:h,index:g,until:j});continue}return a.activeIndex=(g+1)%e,h}return c&&f?(a.activeIndex=(f.index+1)%e,f.account):null}async function x(a,b){let c=b?.body;if(null!==c){if(void 0===c&&a instanceof Request&&null!==a.body)try{return await a.clone().arrayBuffer()}catch{return}if(void 0!==c&&("string"==typeof c||c instanceof ArrayBuffer||ArrayBuffer.isView(c)||c instanceof Blob))return c}}function y(a=globalThis.fetch.bind(globalThis),b,c){let d=c?{config:s(c),activeIndex:0,cooldownUntil:new Map,dispatchers:new Map}:t();return async(c,e)=>{let f;if(!function(a){try{let b="string"==typeof a||a instanceof URL?a.toString():a.url;return"opencode.ai"===new URL(b).hostname}catch{return!1}}(c))return a(c,e);let h=d.config.accounts.filter(a=>a.enabled&&a.apiKey);if(0===h.length)return new Response("OpenCode Zen accounts are unavailable",{status:503});let j=async b=>{let f,h,i=(f=new Headers(c instanceof Request?c.headers:void 0),e?.headers&&new Headers(e.headers).forEach((a,b)=>f.set(b,a)),f.set("authorization",`Bearer ${b.apiKey}`),h=function(a,b){var c;let d=function(a){if(!a.enabled||!a.url||!a.port)return null;if(!Number.isInteger(a.port)||a.port<1||a.port>65535)throw Error("代理端口无效,必须为 1-65535 的整数");let b=a.url.trim();if(b.includes("://")&&!/^(https?|socks5):\/\//i.test(b))throw Error("OpenCode Zen 账号代理仅支持 http/https/socks5");/^(https?|socks5):\/\//i.test(b)||(b=`http://${b}`);let c=new URL(b);if(c.username||c.password||"/"!==c.pathname||c.search||c.hash)throw Error("代理 URL 只允许主机名,用户名和密码请填写独立字段");if(c.port=String(a.port),a.username&&(c.username=a.username),a.password&&(c.password=a.password),"http:"!==c.protocol&&"https:"!==c.protocol&&"socks5:"!==c.protocol)throw Error("OpenCode Zen 账号代理仅支持 http/https/socks5");return c.toString()}(b.proxy);if(!d)return;let e=a.dispatchers.get(b.id);if(e)return e;let f=(c=b.proxy.protocol,"socks5"===c?new g.EV(d):new g.kT(d));return a.dispatchers.set(b.id,f),f}(d,b),{...e,...c instanceof Request&&e?.method===void 0?{method:c.method}:{},headers:f,...void 0!==l?{body:l}:{},...h?{dispatcher:h}:{}});return i.dispatcher?await (0,g.hd)("string"==typeof c||c instanceof URL?c.toString():c.url,i):await a(c,i)},l=await x(c,e),m=!(c instanceof Request?null!==c.body:e?.body!==void 0&&null!==e.body)||void 0!==l,o=new Set,p=w(d,o)??w(d,o,!0);if(!p){let a=1/0;for(let b of d.cooldownUntil.values())b.until<a&&(a=b.until);let b=Number.isFinite(a)?Math.max(1,Math.ceil((a-Date.now())/1e3)):Math.ceil(d.config.cooldownMs/1e3);return new Response("OpenCode Zen accounts are cooling down",{status:503,headers:{"Retry-After":String(b)}})}let q=null,r=d.config.autoSwitch&&m?Math.min(Math.max(h.length,1),3):1;for(let a=0;a<r&&p;a++){o.add(p.id);let c=await j(p);if(429!==c.status||!d.config.autoSwitch)return c.ok&&(d.lastSuccessId=p.id),c.ok&&f&&n({sessionId:b,from:f,to:p.note,statusCode:429}),c;let e=await c.arrayBuffer();q=new Response(e,{status:c.status,statusText:c.statusText,headers:c.headers});let g=p;if(d.cooldownUntil.set(g.id,{until:k(),daily:!0}),a===r-1||!(p=w(d,o,!0)))break;d.lastSwitch={timestamp:new Date().toISOString(),from:g.note,to:p.note,statusCode:429},f=g.note,(0,i.wF)({level:"info",source:"opencode-zen-switch",provider:"opencode",message:`OpenCode Zen 429,已从 ${g.note} 切换到 ${p.note}`})}if(q&&d.config.autoSwitch&&o.size>0){let a=Date.now()+1e4;for(let b of o){let c=d.cooldownUntil.get(b);c&&!c.daily&&c.until>a&&d.cooldownUntil.set(b,{until:a,daily:!1})}}if(q&&d.config.autoSwitch&&m&&d.lastSuccessId&&!o.has(d.lastSuccessId)){let a=d.config.accounts.find(a=>a.id===d.lastSuccessId&&a.enabled&&a.apiKey&&!d.cooldownUntil.get(a.id)?.daily);if(a){o.add(a.id),(0,i.wF)({level:"info",source:"opencode-zen-switch",provider:"opencode",message:`OpenCode Zen 全败后回退最近成功账号 ${a.note}`});let c=await j(a);if(429!==c.status)return c.ok&&(d.activeIndex=Math.max(0,d.config.accounts.findIndex(b=>b.id===a.id)),d.lastSuccessId=a.id,f&&n({sessionId:b,from:f,to:a.note,statusCode:429})),c;let e=await c.arrayBuffer();q=new Response(e,{status:c.status,statusText:c.statusText,headers:c.headers}),d.cooldownUntil.set(a.id,{until:k(),daily:!0})}}return q??new Response("OpenCode Zen accounts are unavailable",{status:503})}}d()}catch(a){d(a)}})},54366:(a,b,c)=>{"use strict";function d(){return{defaultAgentType:null,modeId:null,configValues:{},autoProcess:!0,maxConcurrent:1,mergeStrategy:"merge",deleteWorktreeDefault:!0,preflightCommand:null,initCommand:null,stagePrompts:null}}c.d(b,{os:()=>d})},57856:(a,b,c)=>{"use strict";c.d(b,{TQ:()=>e,p1:()=>d});let d=92;function e(a,b=d,c=40){return Object.freeze({terminal:Object.freeze({columns:b,rows:c,kittyProtocolActive:!1}),requestRender:a})}},61446:(a,b,c)=>{"use strict";let d=c(62404),{toPromise:e,toSync:f,toSyncOptions:g}=c(13884);async function h(a,b){let c=await e(d.lock)(a,b);return e(c)}a.exports=h,a.exports.lock=h,a.exports.unlock=function(a,b){return e(d.unlock)(a,b)},a.exports.lockSync=function(a,b){let c=f(d.lock)(a,g(b));return f(c)},a.exports.unlockSync=function(a,b){return f(d.unlock)(a,g(b))},a.exports.check=function(a,b){return e(d.check)(a,b)},a.exports.checkSync=function(a,b){return f(d.check)(a,g(b))}},61577:(a,b,c)=>{"use strict";async function d(a,b,c){if(!b.model&&!b.thinkingLevel)return{modelDefaultChanged:!1};let d=!1;return b.model&&c.model&&b.model.provider===c.model.provider&&b.model.modelId===c.model.modelId&&(a.setDefaultModelAndProvider(c.model.provider,c.model.modelId),d=!0),b.thinkingLevel&&(c.supportsThinking||"off"!==c.thinkingLevel)&&a.setDefaultThinkingLevel(c.thinkingLevel),await a.flush(),{modelDefaultChanged:d}}c.d(b,{o:()=>d})},62391:(a,b,c)=>{"use strict";c.d(b,{l:()=>o,P9:()=>n,IL:()=>p,KI:()=>l});var d=c(79646),e=c(29021),f=c(33873);function g(a){return a&&"win32"===process.platform?(0,f.normalize)(a):a}function h(a,b){return a===b||!!a&&!!b&&"win32"===process.platform&&g(a).toLowerCase()===g(b).toLowerCase()}let i=(0,c(28354).promisify)(d.execFile);function j(){globalThis.__piProjectCache?.clear()}async function k(a,b){let{stdout:c}=await i("git",["-C",a,...b],{timeout:1e4,maxBuffer:1048576,env:{...process.env,LC_ALL:"C"}});return c.trim()}async function l(a){let b,c=(globalThis.__piProjectCache||(globalThis.__piProjectCache=new Map),globalThis.__piProjectCache),d=c.get(a);if(d&&d.expiresAt>Date.now())return d.info;try{if(!(0,e.existsSync)(a))return b=function(a){let b=(0,f.dirname)(a);if(!b.endsWith("-worktrees"))return null;let c=b.slice(0,-10);return c&&(0,e.existsSync)((0,f.join)(c,".git"))?{projectRoot:c,branch:(0,f.basename)(a),isWorktree:!0,isTopLevel:!0}:null}(a)??{projectRoot:a,branch:null,isWorktree:!1,isTopLevel:!1},c.set(a,{info:b,expiresAt:Date.now()+6e4}),b;let[d,i,j,l]=(await k(a,["rev-parse","--path-format=absolute","--git-common-dir","--git-dir","--show-toplevel","--abbrev-ref","HEAD"])).split("\n").map(a=>a.trim()),[m,n,o]=[d,i,j].map(g),p=a;try{p=(0,e.realpathSync)(a)}catch{}let q=h(o,p),r=!h(n,m)&&q;b={projectRoot:r?(0,f.dirname)(m):a,branch:l&&"HEAD"!==l?l:null,isWorktree:r,isTopLevel:q}}catch{b={projectRoot:a,branch:null,isWorktree:!1,isTopLevel:!1}}return c.set(a,{info:b,expiresAt:Date.now()+6e4}),b}async function m(a){let b=await k(a,["rev-parse","--path-format=absolute","--git-common-dir"]);return(0,f.dirname)(g(b))}async function n(a){let b=await k(a,["worktree","list","--porcelain"]),c=[],d=null,f=()=>{d?.path&&!d.prunable&&(0,e.existsSync)(d.path)&&c.push({path:d.path,branch:d.branch??null,isMain:0===c.length}),d=null};for(let a of b.split("\n"))a.startsWith("worktree ")?(f(),d={path:g(a.slice(9).trim())}):a.startsWith("branch ")&&d?d.branch=a.slice(7).trim().replace(/^refs\/heads\//,""):a.startsWith("prunable")&&d?d.prunable=!0:""===a.trim()&&f();return f(),c}async function o(a,b){let c=b.trim();if(!c)throw Error("Branch name is required");let d=c.replace(/[\/\\:*?"<>|\s]+/g,"-").replace(/^-+|-+$/g,"");if(!d)throw Error(`Invalid branch name: ${b}`);let g=await m(a),h=`${(0,f.resolve)(g)}-worktrees`,i=(0,f.join)(h,d);if((0,e.existsSync)(i))throw Error(`Directory already exists: ${i}`);(0,e.mkdirSync)(h,{recursive:!0});let l=!1;try{await k(g,["rev-parse","--verify","--quiet",`refs/heads/${c}`]),l=!0}catch{l=!1}try{l?await k(g,["worktree","add","--",i,c]):await k(g,["worktree","add","-b",c,"--",i])}catch(a){throw Error(q(a))}return!function(a){if(!a)return;let b=a.replace(/\\/g,"/");(!globalThis.__piAdditionalAllowedRoots&&(globalThis.__piAdditionalAllowedRoots=new Set),globalThis.__piAdditionalAllowedRoots).add(b),globalThis.__piAllowedRootsCache?.roots.add(b)}(i),j(),{path:i,branch:c}}async function p(a,b,c=!1){let d=(await n(a)).find(a=>h(a.path,b));if(!d)throw Error(`Not a worktree of this repository: ${b}`);if(d.isMain)throw Error("Cannot remove the main worktree");try{await k(a,["worktree","remove",...c?["--force"]:[],b])}catch(a){throw Error(q(a))}j()}function q(a){let b=a.stderr;return"string"==typeof b&&b.trim()?b.trim():a instanceof Error?a.message:String(a)}},62404:(a,b,c)=>{"use strict";let d=c(33873),e=c(93329),f=c(81463),g=c(75856),h=c(16176),i={};function j(a,b){return b.lockfilePath||`${a}.lock`}function k(a,b,c){if(!b.realpath)return c(null,d.resolve(a));b.fs.realpath(a,c)}function l(a,b){return a.mtime.getTime()<Date.now()-b.stale}function m(a,b,c){b.fs.rmdir(j(a,b),a=>{if(a&&"ENOENT"!==a.code)return c(a);c()})}function n(a,b,c){b.released=!0,b.updateTimeout&&clearTimeout(b.updateTimeout),i[a]===b&&delete i[a],b.options.onCompromised(c)}function o(a,b,c){k(a,b={fs:e,realpath:!0,...b},(a,d)=>{if(a)return c(a);let e=i[d];if(!e)return c(Object.assign(Error("Lock is not acquired/owned by you"),{code:"ENOTACQUIRED"}));e.updateTimeout&&clearTimeout(e.updateTimeout),e.released=!0,delete i[d],m(d,b,c)})}g(()=>{for(let a in i){let b=i[a].options;try{b.fs.rmdirSync(j(a,b))}catch(a){}}}),a.exports.lock=function(a,b,c){(b={stale:1e4,update:null,realpath:!0,retries:0,fs:e,onCompromised:a=>{throw a},...b}).retries=b.retries||0,b.retries="number"==typeof b.retries?{retries:b.retries}:b.retries,b.stale=Math.max(b.stale||0,2e3),b.update=null==b.update?b.stale/2:b.update||0,b.update=Math.max(Math.min(b.update,b.stale/2),1e3),k(a,b,(a,d)=>{if(a)return c(a);let e=f.operation(b.retries);e.attempt(()=>{!function a(b,c,d){let e=j(b,c);c.fs.mkdir(e,f=>f?"EEXIST"!==f.code?d(f):c.stale<=0?d(Object.assign(Error("Lock file is already being held"),{code:"ELOCKED",file:b})):void c.fs.stat(e,(e,f)=>e?"ENOENT"===e.code?a(b,{...c,stale:0},d):d(e):l(f,c)?void m(b,c,e=>{if(e)return d(e);a(b,{...c,stale:0},d)}):d(Object.assign(Error("Lock file is already being held"),{code:"ELOCKED",file:b}))):h.probe(e,c.fs,(a,b,f)=>{if(a)return c.fs.rmdir(e,()=>{}),d(a);d(null,b,f)}))}(d,b,(a,f,g)=>{if(e.retry(a))return;if(a)return c(e.mainError());let k=i[d]={lockfilePath:j(d,b),mtime:f,mtimePrecision:g,options:b,lastUpdate:Date.now()};!function a(b,c){let d=i[b];!d.updateTimeout&&(d.updateDelay=d.updateDelay||c.update,d.updateTimeout=setTimeout(()=>{d.updateTimeout=null,c.fs.stat(d.lockfilePath,(e,f)=>{let g=d.lastUpdate+c.stale<Date.now();if(e)return"ENOENT"===e.code||g?n(b,d,Object.assign(e,{code:"ECOMPROMISED"})):(d.updateDelay=1e3,a(b,c));if(d.mtime.getTime()!==f.mtime.getTime())return n(b,d,Object.assign(Error("Unable to update lock within the stale threshold"),{code:"ECOMPROMISED"}));let i=h.getMtime(d.mtimePrecision);c.fs.utimes(d.lockfilePath,i,i,e=>{let f=d.lastUpdate+c.stale<Date.now();if(!d.released){if(e)return"ENOENT"===e.code||f?n(b,d,Object.assign(e,{code:"ECOMPROMISED"})):(d.updateDelay=1e3,a(b,c));d.mtime=i,d.lastUpdate=Date.now(),d.updateDelay=null,a(b,c)}})})},d.updateDelay),d.updateTimeout.unref&&d.updateTimeout.unref())}(d,b),c(null,a=>{if(k.released)return a&&a(Object.assign(Error("Lock is already released"),{code:"ERELEASED"}));o(d,{...b,realpath:!1},a)})})})})},a.exports.unlock=o,a.exports.check=function(a,b,c){(b={stale:1e4,realpath:!0,fs:e,...b}).stale=Math.max(b.stale||0,2e3),k(a,b,(a,d)=>{if(a)return c(a);b.fs.stat(j(d,b),(a,d)=>a?"ENOENT"===a.code?c(null,!1):c(a):c(null,!l(d,b)))})},a.exports.getLocks=function(){return i}},65562:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Q1:()=>u,Rv:()=>v,_o:()=>s,fd:()=>t,h6:()=>r,z1:()=>m});var e=c(29021),f=c(33873),g=c(75430),h=c(12969),i=c(69420),j=c(54366),k=a([g]);function l(){return(0,f.join)((0,g.getAgentDir)(),"tasks")}function m(a){return(0,f.join)(l(),(0,i.A0)(a).replace(/^\/+/,"").split("/").filter(Boolean).map(a=>encodeURIComponent(a)).join("--")||"root")}function n(a){return(0,f.join)(m(a),"tasks.jsonl")}function o(){return(0,f.join)(l(),"settings.json")}function p(a){(0,e.existsSync)(a)||(0,e.mkdirSync)(a,{recursive:!0,mode:448})}function q(a){if(!(0,e.existsSync)(a))return[];let b=(0,e.readFileSync)(a,"utf8"),c=[];for(let a of b.split("\n")){let b=a.trim();if(b)try{c.push(JSON.parse(b))}catch{}}return c}function r(a){return q(n(a)).sort((a,b)=>a.sortOrder-b.sortOrder||a.id-b.id)}function s(a,b){return r(a).find(a=>a.id===b)??null}function t(a){let b,c=n(a.projectRoot),d=r(a.projectRoot),e=d.findIndex(b=>b.id===a.id),f={...a,updatedAt:new Date().toISOString()};e>=0?d[e]=f:d.push(f),p(c.substring(0,c.lastIndexOf("/"))),b=d.map(a=>JSON.stringify(a)).join("\n")+"\n",(0,h.$)(c,b)}function u(a,b){let c=(0,f.join)(m(a),"events.jsonl"),d=q(c).reduce((a,b)=>Math.max(a,b.id),0)+1,g={...b,payload:b.payload??null,id:d,createdAt:new Date().toISOString()};return p(c.substring(0,c.lastIndexOf("/"))),(0,e.writeFileSync)(c,JSON.stringify(g)+"\n",{encoding:"utf8",flag:"a",mode:384}),g}function v(a){let b=function(a){let b=o();if(!(0,e.existsSync)(b))return null;try{return JSON.parse((0,e.readFileSync)(b,"utf8"))[a]??null}catch{return null}}(a),c=function(){let a=o();if(!(0,e.existsSync)(a))return(0,j.os)();try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));return{...(0,j.os)(),...b._global??{}}}catch{return(0,j.os)()}}();return b?{...c,...b,configValues:{...c.configValues,...b.configValues??{}}}:c}g=(k.then?(await k)():k)[0],d()}catch(a){d(a)}})},67313:(a,b,c)=>{var d=c(92759);b.operation=function(a){return new d(b.timeouts(a),{forever:a&&a.forever,unref:a&&a.unref,maxRetryTime:a&&a.maxRetryTime})},b.timeouts=function(a){if(a instanceof Array)return[].concat(a);var b={retries:10,factor:2,minTimeout:1e3,maxTimeout:1/0,randomize:!1};for(var c in a)b[c]=a[c];if(b.minTimeout>b.maxTimeout)throw Error("minTimeout is greater than maxTimeout");for(var d=[],e=0;e<b.retries;e++)d.push(this.createTimeout(e,b));return a&&a.forever&&!d.length&&d.push(this.createTimeout(e,b)),d.sort(function(a,b){return a-b}),d},b.createTimeout=function(a,b){var c=Math.round((b.randomize?Math.random()+1:1)*b.minTimeout*Math.pow(b.factor,a));return Math.min(c,b.maxTimeout)},b.wrap=function(a,c,d){if(c instanceof Array&&(d=c,c=null),!d)for(var e in d=[],a)"function"==typeof a[e]&&d.push(e);for(var f=0;f<d.length;f++){var g=d[f],h=a[g];a[g]=(function(d){var e=b.operation(c),f=Array.prototype.slice.call(arguments,1),g=f.pop();f.push(function(a){e.retry(a)||(a&&(arguments[0]=e.mainError()),g.apply(this,arguments))}),e.attempt(function(){d.apply(a,f)})}).bind(a,h),a[g].options=c}}},69420:(a,b,c)=>{"use strict";function d(a){return/^[a-zA-Z]:[\\/]/.test(a)||a.startsWith("\\\\")?a.replace(/\\/g,"/"):a}c.d(b,{A0:()=>d})},69453:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{O8:()=>i,mD:()=>h});var e=c(75430);c(29021);var f=c(33873);c(62391);var g=a([e]);function h(){globalThis.__piSessionListGeneration=(globalThis.__piSessionListGeneration??0)+1,globalThis.__piSessionListCache=void 0}function i(a,b){let c=(0,f.normalize)(b),d=(globalThis.__piSessionPathCache||(globalThis.__piSessionPathCache=new Map),globalThis.__piSessionPathCache),e=(globalThis.__piPathToSessionIdCache||(globalThis.__piPathToSessionIdCache=new Map),globalThis.__piPathToSessionIdCache),g=d.get(a),h=e.get(c);g&&g!==c&&e.get(g)===a&&e.delete(g),h&&h!==a&&d.get(h)===c&&d.delete(h),d.set(a,c),e.set(c,a)}e=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},74986:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Tu:()=>i});var e=c(73024),f=c(76760);c(61446);var g=c(75430);c(12969);var h=a([g]);function i(){let a=(0,f.join)((0,g.getAgentDir)(),"settings.json");if(!(0,e.existsSync)(a))return{};try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));return null===b||"object"!=typeof b||Array.isArray(b)?{}:b}catch{return{}}}g=(h.then?(await h)():h)[0],d()}catch(a){d(a)}})},75856:(a,b,c)=>{var d=global.process;let e=function(a){return a&&"object"==typeof a&&"function"==typeof a.removeListener&&"function"==typeof a.emit&&"function"==typeof a.reallyExit&&"function"==typeof a.listeners&&"function"==typeof a.kill&&"number"==typeof a.pid&&"function"==typeof a.on};if(e(d)){var f,g=c(12412),h=c(30223),i=/^win/i.test(d.platform),j=c(94735);"function"!=typeof j&&(j=j.EventEmitter),d.__signal_exit_emitter__?f=d.__signal_exit_emitter__:((f=d.__signal_exit_emitter__=new j).count=0,f.emitted={}),f.infinite||(f.setMaxListeners(1/0),f.infinite=!0),a.exports=function(a,b){if(!e(global.process))return function(){};g.equal(typeof a,"function","a callback must be provided for exit handler"),!1===n&&o();var c="exit";return b&&b.alwaysLast&&(c="afterexit"),f.on(c,a),function(){f.removeListener(c,a),0===f.listeners("exit").length&&0===f.listeners("afterexit").length&&k()}};var k=function(){n&&e(global.process)&&(n=!1,h.forEach(function(a){try{d.removeListener(a,m[a])}catch(a){}}),d.emit=r,d.reallyExit=p,f.count-=1)};a.exports.unload=k;var l=function(a,b,c){f.emitted[a]||(f.emitted[a]=!0,f.emit(a,b,c))},m={};h.forEach(function(a){m[a]=function(){e(global.process)&&d.listeners(a).length===f.count&&(k(),l("exit",null,a),l("afterexit",null,a),i&&"SIGHUP"===a&&(a="SIGINT"),d.kill(d.pid,a))}}),a.exports.signals=function(){return h};var n=!1,o=function(){!n&&e(global.process)&&(n=!0,f.count+=1,h=h.filter(function(a){try{return d.on(a,m[a]),!0}catch(a){return!1}}),d.emit=s,d.reallyExit=q)};a.exports.load=o;var p=d.reallyExit,q=function(a){e(global.process)&&(d.exitCode=a||0,l("exit",d.exitCode,null),l("afterexit",d.exitCode,null),p.call(d,d.exitCode))},r=d.emit,s=function(a,b){if(!("exit"===a&&e(global.process)))return r.apply(this,arguments);void 0!==b&&(d.exitCode=b);var c=r.apply(this,arguments);return l("exit",d.exitCode,null),l("afterexit",d.exitCode,null),c}}else a.exports=function(){return function(){}}},80723:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{fr:()=>j});var e=c(29021),f=c(33873),g=c(75430),h=c(74986),i=a([g,h]);function j(){let a=(0,f.join)((0,g.getAgentDir)(),"models.json");if(!(0,e.existsSync)(a))return{providers:{}};try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));return null!==b&&"object"==typeof b?b:{providers:{}}}catch{return{providers:{}}}}[g,h]=i.then?(await i)():i,d()}catch(a){d(a)}})},81463:(a,b,c)=>{a.exports=c(67313)},88250:(a,b,c)=>{"use strict";function d(){let a=(globalThis.__piModelsCacheState||(globalThis.__piModelsCacheState={entries:new Map,inFlight:new Map,generation:0}),globalThis.__piModelsCacheState);a.generation+=1,a.entries.clear(),a.inFlight.clear()}c.d(b,{k:()=>d})},92759:a=>{function b(a,b){"boolean"==typeof b&&(b={forever:b}),this._originalTimeouts=JSON.parse(JSON.stringify(a)),this._timeouts=a,this._options=b||{},this._maxRetryTime=b&&b.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}a.exports=b,b.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts},b.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timeouts=[],this._cachedTimeouts=null},b.prototype.retry=function(a){if(this._timeout&&clearTimeout(this._timeout),!a)return!1;var b=new Date().getTime();if(a&&b-this._operationStart>=this._maxRetryTime)return this._errors.unshift(Error("RetryOperation timeout occurred")),!1;this._errors.push(a);var c=this._timeouts.shift();if(void 0===c)if(!this._cachedTimeouts)return!1;else this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),c=this._timeouts.shift();var d=this,e=setTimeout(function(){d._attempts++,d._operationTimeoutCb&&(d._timeout=setTimeout(function(){d._operationTimeoutCb(d._attempts)},d._operationTimeout),d._options.unref&&d._timeout.unref()),d._fn(d._attempts)},c);return this._options.unref&&e.unref(),!0},b.prototype.attempt=function(a,b){this._fn=a,b&&(b.timeout&&(this._operationTimeout=b.timeout),b.cb&&(this._operationTimeoutCb=b.cb));var c=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){c._operationTimeoutCb()},c._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)},b.prototype.try=function(a){console.log("Using RetryOperation.try() is deprecated"),this.attempt(a)},b.prototype.start=function(a){console.log("Using RetryOperation.start() is deprecated"),this.attempt(a)},b.prototype.start=b.prototype.try,b.prototype.errors=function(){return this._errors},b.prototype.attempts=function(){return this._attempts},b.prototype.mainError=function(){if(0===this._errors.length)return null;for(var a={},b=null,c=0,d=0;d<this._errors.length;d++){var e=this._errors[d],f=e.message,g=(a[f]||0)+1;a[f]=g,g>=c&&(b=e,c=g)}return b}},93329:(a,b,c)=>{var d,e,f,g=c(29021),h=c(39466),i=c(18827),j=c(12817),k=c(28354);function l(a,b){Object.defineProperty(a,d,{get:function(){return b}})}"function"==typeof Symbol&&"function"==typeof Symbol.for?(d=Symbol.for("graceful-fs.queue"),e=Symbol.for("graceful-fs.previous")):(d="___graceful-fs.queue",e="___graceful-fs.previous");var m=function(){};function n(a){h(a),a.gracefulify=n,a.createReadStream=function(b,c){return new a.ReadStream(b,c)},a.createWriteStream=function(b,c){return new a.WriteStream(b,c)};var b=a.readFile;a.readFile=function(a,c,d){return"function"==typeof c&&(d=c,c=null),function a(c,d,e,f){return b(c,d,function(b){b&&("EMFILE"===b.code||"ENFILE"===b.code)?o([a,[c,d,e],b,f||Date.now(),Date.now()]):"function"==typeof e&&e.apply(this,arguments)})}(a,c,d)};var c=a.writeFile;a.writeFile=function(a,b,d,e){return"function"==typeof d&&(e=d,d=null),function a(b,d,e,f,g){return c(b,d,e,function(c){c&&("EMFILE"===c.code||"ENFILE"===c.code)?o([a,[b,d,e,f],c,g||Date.now(),Date.now()]):"function"==typeof f&&f.apply(this,arguments)})}(a,b,d,e)};var d=a.appendFile;d&&(a.appendFile=function(a,b,c,e){return"function"==typeof c&&(e=c,c=null),function a(b,c,e,f,g){return d(b,c,e,function(d){d&&("EMFILE"===d.code||"ENFILE"===d.code)?o([a,[b,c,e,f],d,g||Date.now(),Date.now()]):"function"==typeof f&&f.apply(this,arguments)})}(a,b,c,e)});var e=a.copyFile;e&&(a.copyFile=function(a,b,c,d){return"function"==typeof c&&(d=c,c=0),function a(b,c,d,f,g){return e(b,c,d,function(e){e&&("EMFILE"===e.code||"ENFILE"===e.code)?o([a,[b,c,d,f],e,g||Date.now(),Date.now()]):"function"==typeof f&&f.apply(this,arguments)})}(a,b,c,d)});var f=a.readdir;a.readdir=function(a,b,c){"function"==typeof b&&(c=b,b=null);var d=g.test(process.version)?function(a,b,c,d){return f(a,e(a,b,c,d))}:function(a,b,c,d){return f(a,b,e(a,b,c,d))};return d(a,b,c);function e(a,b,c,e){return function(f,g){f&&("EMFILE"===f.code||"ENFILE"===f.code)?o([d,[a,b,c],f,e||Date.now(),Date.now()]):(g&&g.sort&&g.sort(),"function"==typeof c&&c.call(this,f,g))}}};var g=/^v[0-5]\./;if("v0.8"===process.version.substr(0,4)){var j=i(a);q=j.ReadStream,r=j.WriteStream}var k=a.ReadStream;k&&(q.prototype=Object.create(k.prototype),q.prototype.open=function(){var a=this;t(a.path,a.flags,a.mode,function(b,c){b?(a.autoClose&&a.destroy(),a.emit("error",b)):(a.fd=c,a.emit("open",c),a.read())})});var l=a.WriteStream;l&&(r.prototype=Object.create(l.prototype),r.prototype.open=function(){var a=this;t(a.path,a.flags,a.mode,function(b,c){b?(a.destroy(),a.emit("error",b)):(a.fd=c,a.emit("open",c))})}),Object.defineProperty(a,"ReadStream",{get:function(){return q},set:function(a){q=a},enumerable:!0,configurable:!0}),Object.defineProperty(a,"WriteStream",{get:function(){return r},set:function(a){r=a},enumerable:!0,configurable:!0});var m=q;Object.defineProperty(a,"FileReadStream",{get:function(){return m},set:function(a){m=a},enumerable:!0,configurable:!0});var p=r;function q(a,b){return this instanceof q?(k.apply(this,arguments),this):q.apply(Object.create(q.prototype),arguments)}function r(a,b){return this instanceof r?(l.apply(this,arguments),this):r.apply(Object.create(r.prototype),arguments)}Object.defineProperty(a,"FileWriteStream",{get:function(){return p},set:function(a){p=a},enumerable:!0,configurable:!0});var s=a.open;function t(a,b,c,d){return"function"==typeof c&&(d=c,c=null),function a(b,c,d,e,f){return s(b,c,d,function(g,h){g&&("EMFILE"===g.code||"ENFILE"===g.code)?o([a,[b,c,d,e],g,f||Date.now(),Date.now()]):"function"==typeof e&&e.apply(this,arguments)})}(a,b,c,d)}return a.open=t,a}function o(a){m("ENQUEUE",a[0].name,a[1]),g[d].push(a),q()}function p(){for(var a=Date.now(),b=0;b<g[d].length;++b)g[d][b].length>2&&(g[d][b][3]=a,g[d][b][4]=a);q()}function q(){if(clearTimeout(f),f=void 0,0!==g[d].length){var a=g[d].shift(),b=a[0],c=a[1],e=a[2],h=a[3],i=a[4];if(void 0===h)m("RETRY",b.name,c),b.apply(null,c);else if(Date.now()-h>=6e4){m("TIMEOUT",b.name,c);var j=c.pop();"function"==typeof j&&j.call(null,e)}else Date.now()-i>=Math.min(1.2*Math.max(i-h,1),100)?(m("RETRY",b.name,c),b.apply(null,c.concat([h]))):g[d].push(a);void 0===f&&(f=setTimeout(q,0))}}k.debuglog?m=k.debuglog("gfs4"):/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&(m=function(){var a=k.format.apply(k,arguments);console.error(a="GFS4: "+a.split(/\n/).join("\nGFS4: "))}),!g[d]&&(l(g,global[d]||[]),g.close=function(a){function b(b,c){return a.call(g,b,function(a){a||p(),"function"==typeof c&&c.apply(this,arguments)})}return Object.defineProperty(b,e,{value:a}),b}(g.close),g.closeSync=function(a){function b(b){a.apply(g,arguments),p()}return Object.defineProperty(b,e,{value:a}),b}(g.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&process.on("exit",function(){m(g[d]),c(12412).equal(g[d].length,0)})),global[d]||l(global,g[d]),a.exports=n(j(g)),process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!g.__patched&&(a.exports=n(g),g.__patched=!0)},96515:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{IR:()=>l,py:()=>k});var e=c(75430),f=c(80723),g=c(32982),h=a([e,f]);[e,f]=h.then?(await h)():h;let m=null;async function i(a){let b=Date.now();if(m&&b-m.at<6e4)return m.data;let c=await a.getAvailable();return m={data:c,at:b},c}function j(a,b){return a.provider===b.provider&&a.id===b.modelId}async function k(a,b,c={}){let d=(0,f.fr)().providers??{},h=new Set;for(let[a,b]of Object.entries(d)){let c=(0,g.du)(b);for(let[b,d]of Object.entries(c))!0===d.hidden&&h.add(`${a}/${b}`)}let j=(b??[]).map(a=>a.trim()).filter(Boolean),l=[],m=[],n={},o=[];if(0===j.length)l=await i(a);else{let b=await (0,e.resolveModelScopeWithDiagnostics)(j,a);for(let c of(m=b.scopedModels,l=b.scopedModels.length>0?b.scopedModels.map(a=>a.model):await i(a),o.push(...b.diagnostics.map(a=>a.message)),m))c.thinkingLevel&&(n[`${c.model.provider}/${c.model.id}`]=c.thinkingLevel)}return c.includeHidden||(l=l.filter(a=>!h.has(`${a.provider}/${a.id}`))),{visible:l,scopedModels:c.includeHidden||l.length===m.length?m:m.filter(a=>!h.has(`${a.model.provider}/${a.model.id}`)),thinkingLevelPins:n,warnings:o}}function l(a,b={}){let c=b.requestedModel?a.visible.find(a=>j(a,b.requestedModel)):void 0;if(b.requestedModel&&!c)throw Error(`Model is not available in the enabled scope: ${b.requestedModel.provider}/${b.requestedModel.modelId}`);let d=c?a.scopedModels.find(a=>j(a.model,{provider:c.provider,modelId:c.id})):void 0,e=!c&&b.defaultModel?a.scopedModels.find(a=>j(a.model,b.defaultModel)):void 0,f=c?void 0:e??a.scopedModels[0],g=c||f||!b.defaultModel?void 0:a.visible.find(a=>j(a,b.defaultModel)),h=c??f?.model??g,i=d??f,k=b.thinkingLevel??i?.thinkingLevel;return{...h?{model:h}:{},...k?{thinkingLevel:k}:{},scopedModels:[...a.scopedModels]}}d()}catch(a){d(a)}})},97563:(a,b,c)=>{"use strict";c.d(b,{MJ:()=>k,Md:()=>g,UY:()=>h,g0:()=>j,wI:()=>i});let d="normal",e="full",f="auto";function g(){return{collaborationMode:d,tokenMode:e,toolApprovalMode:f,permissionRules:{allow:[],ask:[],deny:[]}}}function h(a){return"normal"===a||"plan"===a||"goal"===a?a:d}function i(a){return"economy"===a||"delivery"===a||"full"===a?a:e}function j(a){return"ask"===a||"auto"===a||"yolo"===a?a:f}let k=new Set(["read","grep","find","ls","bash_output","get_tools","get_commands","get_session_stats"])}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=440,exports.ids=[440],exports.modules={23097:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{D:()=>n,Z:()=>p});var e=c(33873),f=c(21820),g=c(29021),h=c(75430),i=c(49228),j=c(36525),k=c(40402),l=a([h,i,k]);function m(){return globalThis.__piImportJobs||(globalThis.__piImportJobs=new Map),globalThis.__piImportJobs}[h,i,k]=l.then?(await l)():l;let q=(0,e.join)((0,h.getAgentDir)(),"sessions");function n(a){let b=`import-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,c=0,d=[];for(let b of a){let a=(0,i.mO)(b);if(!a||0===a.files.length)continue;let e=(0,i.Ol)(b);d.push({projectName:b,piCwdDir:e,files:a.files,flat:a.flat}),c+=a.files.length}let e={jobId:b,source:"reasonix",total:c,imported:0,skipped:0,errors:0,currentFile:"",done:!1,sessionIds:[],createdAt:Date.now()};return m().set(b,e),o(e,d).catch(a=>{console.error("[import-reasonix] Fatal:",a),e.done=!0}),{jobId:b}}async function o(a,b){for(let{projectName:c,piCwdDir:d,files:h,flat:k}of b){let b,l=(0,i.mO)(c);if(!l)continue;let m=l.sessionsDir;if(k)b=(0,f.homedir)();else{let a=c.replace(/^-/,""),d=a.split("-");b="win32"===process.platform&&d.length>=2&&/^[a-zA-Z]$/.test(d[0])?d[0].toUpperCase()+":\\"+d.slice(1).join("\\"):"/"+a.replace(/-/g,"/")}try{let a=(0,e.join)(q,d),c=(0,g.readdirSync)(a).filter(a=>a.endsWith(".jsonl"));if(c.length>0){let d=(0,g.readFileSync)((0,e.join)(a,c[0]),"utf-8").split("\n")[0].replace(/\r$/,""),f=JSON.parse(d);f.cwd&&(b=f.cwd)}}catch{}let n=(0,e.join)(q,d);for(let c of((0,g.mkdirSync)(n,{recursive:!0}),h)){a.currentFile=c;try{let d=(0,e.join)(m,c),f=k?(0,g.statSync)(d).mtime.toISOString().slice(0,19).replace(/[:.]/g,"-"):c.slice(0,19).replace(/[:.]/g,"-"),h=(0,j.je)(d,b,c);if((0,g.readdirSync)(n).find(a=>a.includes(f.split("-")[0])&&a.endsWith(".jsonl"))&&0===h.messageCount||0===h.messageCount){a.skipped++;continue}let i=`${f}Z_${h.sessionId}.jsonl`,l=(0,e.join)(n,i);if((0,g.existsSync)(l)){a.skipped++;continue}let o=(0,j.aN)(h.entries);(0,g.writeFileSync)(l,o,"utf-8"),a.imported++,a.sessionIds.push(h.sessionId)}catch(b){a.errors++,console.error(`[import-reasonix] Error converting ${c}:`,b)}await new Promise(a=>setImmediate(a))}}for(let[b,c]of(a.done=!0,a.currentFile="",(0,k.mD)(),m()))c.done&&Date.now()-c.createdAt>18e5&&m().delete(b)}function p(a){return m().get(a)??null}d()}catch(a){d(a)}})},36525:(a,b,c)=>{c.d(b,{aN:()=>h,je:()=>g});var d=c(77598),e=c(73024);function f(){return(0,d.randomBytes)(4).toString("hex")}function g(a,b,c){let d,g,h,i,j,k,l,m,n,o,p=(0,e.readFileSync)(a,"utf-8").trim().split("\n").map(a=>a.replace(/\r$/,"")).filter(a=>a.trim()),{timestamp:q,provider:r,modelId:s}=function(a,b){let c=a.replace(/\.jsonl$/,"").split("-"),d=c[0]??"",e=c[1]??"",f=d.slice(0,4),g=d.slice(4,6),h=d.slice(6,8),i=e.slice(0,2),j=e.slice(2,4),k=e.slice(4,6),l=e.slice(7,10),m=new Date(`${f}-${g}-${h}T${i}:${j}:${k}.${l}Z`);if(Number.isNaN(m.getTime()))return{timestamp:b??new Date(0).toISOString(),provider:"unknown",modelId:"unknown"};let n=c.slice(2).join("-"),o="freebuff",p="unknown";if(n){let a=n.split("-");a.length>=3&&"freebuff"===a[0].toLowerCase()?(o="freebuff",p=a.slice(1).join("/")):a.length>=2&&"session"!==a[0].toLowerCase()?(o=a[0].toLowerCase(),p=a.slice(1).join("/")):"session"===n.toLowerCase()?(o="freebuff",p="unknown"):p=n}return{timestamp:m.toISOString(),provider:o,modelId:p}}(c,(0,e.statSync)(a).mtime.toISOString()),t=(d=Date.now(),g=(a,b)=>a.toString(16).padStart(b,"0"),h=()=>Math.floor(65536*Math.random()),i=Math.floor(d/0x100000000),j=d%0x100000000,k=g(i,8),l=g(j>>16&65535,4),m=g(28672|4095&j,4),n=g(32768|16383&h(),4),o=g(h(),4)+g(h(),4)+g(h(),4),`${k}-${l}-${m}-${n}-${o}`),u=[];u.push({type:"session",version:3,id:t,timestamp:q,cwd:b,importedFrom:"reasonix"});let v=f();u.push({type:"model_change",id:v,parentId:null,timestamp:q,provider:r,modelId:s});let w=v;for(let a of p){let b=function(a,b,c){let d;if(!a||""===a.trim())return{entry:null,reason:"empty"};try{d=JSON.parse(a)}catch{return{entry:null,reason:"parse-error"}}let e=d.role;if("system"===e)return{entry:null,reason:"system"};let g=f();if("user"===e){let a=("string"==typeof d.content?d.content:JSON.stringify(d.content))??"";return{entry:{type:"message",id:g,parentId:b,timestamp:d.createdAt?new Date(d.createdAt).toISOString():c,message:{role:"user",content:[{type:"text",text:a}]}}}}if("assistant"===e){let a=[];if(d.reasoning_content&&a.push({type:"thinking",thinking:d.reasoning_content}),d.tool_calls&&Array.isArray(d.tool_calls))for(let b of d.tool_calls){let c={};if(b.arguments)try{c="string"==typeof b.arguments?JSON.parse(b.arguments):b.arguments}catch{c={raw:b.arguments}}a.push({type:"toolCall",id:b.id||`reasonix_${f()}`,name:b.name,arguments:c})}return(d.content&&"string"==typeof d.content&&d.content.trim()&&!d.tool_calls&&a.push({type:"text",text:d.content}),0===a.length)?{entry:null,reason:"empty-assistant"}:{entry:{type:"message",id:g,parentId:b,timestamp:c,message:{role:"assistant",content:a}}}}if("tool"===e){let a=("string"==typeof d.content?d.content:JSON.stringify(d.content))??"";return{entry:{type:"message",id:g,parentId:b,timestamp:c,message:{role:"toolResult",toolCallId:d.tool_call_id||"unknown",toolName:d.name||"unknown",content:[{type:"text",text:a}],isError:!1}}}}return d.content?{entry:{type:"message",id:g,parentId:b,timestamp:c,message:{role:"user",content:[{type:"text",text:("string"==typeof d.content?d.content:JSON.stringify(d.content))??""}]}}}:{entry:null,reason:`unknown-role:${e}`}}(a,w,q);b&&b.entry&&(u.push(b.entry),w=b.entry.id)}let x=u.filter(a=>"message"===a.type).length;return{entries:u,sessionId:t,messageCount:x}}function h(a){return a.map(a=>JSON.stringify(a)).join("\n")+"\n"}},49228:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{I6:()=>o,Ol:()=>l,Ts:()=>q,mO:()=>p});var e=c(21820),f=c(33873),g=c(29021),h=c(75430),i=a([h]);function j(){let a=[],b=process.env.APPDATA;return b&&b.length>0&&a.push((0,f.join)(b,"reasonix")),a.push((0,f.join)((0,e.homedir)(),".reasonix")),a.filter((b,c)=>a.indexOf(b)===c)}h=(i.then?(await i)():i)[0];let r=[".events.jsonl",".conflicts.jsonl",".telemetry.json",".recovery.json",".goal-state.json",".event-index.json",".recovery.jsonl",".ckpt",".meta",".lock",".lease.json",".lease.lock",".jobs"];function k(a){if(!a.endsWith(".jsonl"))return!1;for(let b of r)if(a.endsWith(b))return!1;return!0}function l(a){let b=a.replace(/^-/,"").replace(/^[/\\]/,"").replace(/[/\\:]/g,"-");return`--${b}--`}let s=(0,f.join)((0,h.getAgentDir)(),"sessions");function m(a){return(0,g.existsSync)((0,f.join)(s,a))}function n(a){try{return(0,g.readdirSync)((0,f.join)(s,a)).filter(a=>a.endsWith(".jsonl")).length}catch{return 0}}function o(){let a=(0,g.existsSync)(function(){for(let a of j()){let b=(0,f.join)(a,"projects");if((0,g.existsSync)(b))return b}return(0,f.join)(j()[0],"projects")}())||(0,g.existsSync)(function(){for(let a of j()){let b=(0,f.join)(a,"sessions");if((0,g.existsSync)(b))return b}return(0,f.join)(j()[0],"sessions")}());return[{key:"reasonix",label:"Reasonix",available:a,status:a?"available":"unavailable"},{key:"codex",label:"Codex",available:!1,status:"coming-soon"},{key:"opencode",label:"OpenCode",available:!1,status:"coming-soon"},{key:"claude",label:"Claude Code",available:!1,status:"coming-soon"}]}function p(a){if(!a||a.split(/[\\/]/).some(a=>""===a||"."===a||".."===a))return null;for(let b of j()){let c=(0,f.join)(b,"projects",a,"sessions");if((0,g.existsSync)(c))try{let a=(0,g.readdirSync)(c).filter(k);return{sessionsDir:c,files:a,flat:!1}}catch{return null}}for(let b of j()){let c=(0,f.join)(b,"sessions");if((0,g.existsSync)(c))try{let b=`${a}-`,d=(0,g.readdirSync)(c).filter(a=>k(a)&&a.startsWith(b));if(d.length>0)return{sessionsDir:c,files:d,flat:!0}}catch{break}}return null}function q(){let a=j(),b=a.map(a=>(0,f.join)(a,"projects")).filter(a=>(0,g.existsSync)(a)),c=a.map(a=>(0,f.join)(a,"sessions")).filter(a=>(0,g.existsSync)(a));if(0===b.length&&0===c.length)return{available:!1,projects:[],totalSessions:0};let d=[],e=0,h=new Set;for(let a of b){let b;try{b=(0,g.readdirSync)(a,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>a.name)}catch{b=[]}for(let a of b){if(h.has(a))continue;let b=p(a);if(!b||0===b.files.length)continue;h.add(a);let c=l(a),f=m(c);d.push({name:a,sessions:b.files.length,piCwdDir:c,matched:f,existingCount:f?n(c):0}),e+=b.files.length}}for(let a of c){let b;try{b=(0,g.readdirSync)(a).filter(k)}catch{b=[]}let c=new Map;for(let a of b){let b=a.split("-")[0];b&&c.set(b,(c.get(b)??0)+1)}for(let[a,b]of c){if(h.has(a))continue;let c=l(a),f=m(c);d.push({name:a,sessions:b,piCwdDir:c,matched:f,existingCount:f?n(c):0}),e+=b}}return{available:!0,projects:d,totalSessions:e}}d()}catch(a){d(a)}})},66544:(a,b,c)=>{c.d(b,{E2:()=>j,EN:()=>i});var d=c(77030);function e(a){return(a.startsWith("[")&&a.endsWith("]")?a.slice(1,-1):a).toLowerCase().replace(/\.$/,"")}function f(a){if(!a||/[\s/@\\]/.test(a))return null;try{let b=new URL(`http://${a}`);if(b.username||b.password||"/"!==b.pathname||b.search||b.hash)return null;return e(b.hostname)}catch{return null}}function g(){return[process.env.PI_WEB_HOSTNAME,...process.env.PI_WEB_ALLOWED_HOSTS?.split(",")??[]].filter(a=>!!a?.trim())}function h(a){try{return new URL(a).origin}catch{return null}}function i(a,b=g()){return!!function(a,b=g()){let c=a.headers.get("host"),h=c?f(c):null;return!!h&&(!!("localhost"===h||h.endsWith(".localhost")||(0,d.isIP)(h))||b.some(a=>{let b;return((b=a?.trim())?(0,d.isIP)(b)?e(b):f(b):null)===h}))}(a,b)&&(!!function(a){if("GET"!==a.method||"navigate"!==a.headers.get("sec-fetch-mode")||"document"!==a.headers.get("sec-fetch-dest")||"?1"!==a.headers.get("sec-fetch-user"))return!1;try{return/^\/api\/sessions\/[^/]+\/export$/.test(new URL(a.url).pathname)}catch{return!1}}(a)||!(a.headers.has("origin")||a.headers.has("sec-fetch-site"))||function(a){let b,c;if("cross-site"===a.headers.get("sec-fetch-site"))return!1;let d=a.headers.get("origin");if(!d)return!0;let e=(b=new URL(a.url),(c=a.headers.get("host"))?h(`${b.protocol}//${c}`):null);return null!==e&&h(d)===e}(a))}function j(a){let b=a.headers.get("content-type")?.split(";",1)[0]?.trim().toLowerCase();return"application/json"===b||!!(b?.startsWith("application/")&&b.endsWith("+json"))}}};
|
|
1
|
+
"use strict";exports.id=440,exports.ids=[440],exports.modules={23097:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{D:()=>n,Z:()=>p});var e=c(33873),f=c(21820),g=c(29021),h=c(75430),i=c(49228),j=c(36525),k=c(40402),l=a([h,i,k]);function m(){return globalThis.__piImportJobs||(globalThis.__piImportJobs=new Map),globalThis.__piImportJobs}[h,i,k]=l.then?(await l)():l;let q=(0,e.join)((0,h.getAgentDir)(),"sessions");function n(a){let b=`import-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,c=0,d=[];for(let b of a){let a=(0,i.mO)(b);if(!a||0===a.files.length)continue;let e=(0,i.Ol)(b);d.push({projectName:b,piCwdDir:e,files:a.files,flat:a.flat}),c+=a.files.length}let e={jobId:b,source:"reasonix",total:c,imported:0,skipped:0,errors:0,currentFile:"",done:!1,sessionIds:[],createdAt:Date.now()};return m().set(b,e),o(e,d).catch(a=>{console.error("[import-reasonix] Fatal:",a),e.done=!0}),{jobId:b}}async function o(a,b){for(let{projectName:c,piCwdDir:d,files:h,flat:k}of b){let b,l=(0,i.mO)(c);if(!l)continue;let m=l.sessionsDir;if(k)b=(0,f.homedir)();else{let a=c.replace(/^-/,""),d=a.split("-");b="win32"===process.platform&&d.length>=2&&/^[a-zA-Z]$/.test(d[0])?d[0].toUpperCase()+":\\"+d.slice(1).join("\\"):"/"+a.replace(/-/g,"/")}try{let a=(0,e.join)(q,d),c=(0,g.readdirSync)(a).filter(a=>a.endsWith(".jsonl"));if(c.length>0){let d=(0,g.readFileSync)((0,e.join)(a,c[0]),"utf-8").split("\n")[0].replace(/\r$/,""),f=JSON.parse(d);f.cwd&&(b=f.cwd)}}catch{}let n=(0,e.join)(q,d);for(let c of((0,g.mkdirSync)(n,{recursive:!0}),h)){a.currentFile=c;try{let d=(0,e.join)(m,c),f=k?(0,g.statSync)(d).mtime.toISOString().slice(0,19).replace(/[:.]/g,"-"):c.slice(0,19).replace(/[:.]/g,"-"),h=(0,j.je)(d,b,c);if((0,g.readdirSync)(n).find(a=>a.includes(f.split("-")[0])&&a.endsWith(".jsonl"))&&0===h.messageCount||0===h.messageCount){a.skipped++;continue}let i=`${f}Z_${h.sessionId}.jsonl`,l=(0,e.join)(n,i);if((0,g.existsSync)(l)){a.skipped++;continue}let o=(0,j.aN)(h.entries);(0,g.writeFileSync)(l,o,"utf-8"),a.imported++,a.sessionIds.push(h.sessionId)}catch(b){a.errors++,console.error(`[import-reasonix] Error converting ${c}:`,b)}await new Promise(a=>setImmediate(a))}}for(let[b,c]of(a.done=!0,a.currentFile="",(0,k.mD)(),m()))c.done&&Date.now()-c.createdAt>18e5&&m().delete(b)}function p(a){return m().get(a)??null}d()}catch(a){d(a)}})},36525:(a,b,c)=>{c.d(b,{aN:()=>h,je:()=>g});var d=c(77598),e=c(73024);function f(){return(0,d.randomBytes)(4).toString("hex")}function g(a,b,c){let d,g,h,i,j,k,l,m,n,o,p=(0,e.readFileSync)(a,"utf-8").trim().split("\n").map(a=>a.replace(/\r$/,"")).filter(a=>a.trim()),{timestamp:q,provider:r,modelId:s}=function(a,b){let c=a.replace(/\.jsonl$/,"").split("-"),d=c[0]??"",e=c[1]??"",f=d.slice(0,4),g=d.slice(4,6),h=d.slice(6,8),i=e.slice(0,2),j=e.slice(2,4),k=e.slice(4,6),l=e.slice(7,10),m=new Date(`${f}-${g}-${h}T${i}:${j}:${k}.${l}Z`);if(Number.isNaN(m.getTime()))return{timestamp:b??new Date(0).toISOString(),provider:"unknown",modelId:"unknown"};let n=c.slice(2).join("-"),o="freebuff",p="unknown";if(n){let a=n.split("-");a.length>=3&&"freebuff"===a[0].toLowerCase()?(o="freebuff",p=a.slice(1).join("/")):a.length>=2&&"session"!==a[0].toLowerCase()?(o=a[0].toLowerCase(),p=a.slice(1).join("/")):"session"===n.toLowerCase()?(o="freebuff",p="unknown"):p=n}return{timestamp:m.toISOString(),provider:o,modelId:p}}(c,(0,e.statSync)(a).mtime.toISOString()),t=(d=Date.now(),g=(a,b)=>a.toString(16).padStart(b,"0"),h=()=>Math.floor(65536*Math.random()),i=Math.floor(d/0x100000000),j=d%0x100000000,k=g(i,8),l=g(j>>16&65535,4),m=g(28672|4095&j,4),n=g(32768|16383&h(),4),o=g(h(),4)+g(h(),4)+g(h(),4),`${k}-${l}-${m}-${n}-${o}`),u=[];u.push({type:"session",version:3,id:t,timestamp:q,cwd:b,importedFrom:"reasonix"});let v=f();u.push({type:"model_change",id:v,parentId:null,timestamp:q,provider:r,modelId:s});let w=v;for(let a of p){let b=function(a,b,c){let d;if(!a||""===a.trim())return{entry:null,reason:"empty"};try{d=JSON.parse(a)}catch{return{entry:null,reason:"parse-error"}}let e=d.role;if("system"===e)return{entry:null,reason:"system"};let g=f();if("user"===e){let a=("string"==typeof d.content?d.content:JSON.stringify(d.content))??"";return{entry:{type:"message",id:g,parentId:b,timestamp:d.createdAt?new Date(d.createdAt).toISOString():c,message:{role:"user",content:[{type:"text",text:a}]}}}}if("assistant"===e){let a=[];if(d.reasoning_content&&a.push({type:"thinking",thinking:d.reasoning_content}),d.tool_calls&&Array.isArray(d.tool_calls))for(let b of d.tool_calls){let c={};if(b.arguments)try{c="string"==typeof b.arguments?JSON.parse(b.arguments):b.arguments}catch{c={raw:b.arguments}}a.push({type:"toolCall",id:b.id||`reasonix_${f()}`,name:b.name,arguments:c})}return(d.content&&"string"==typeof d.content&&d.content.trim()&&!d.tool_calls&&a.push({type:"text",text:d.content}),0===a.length)?{entry:null,reason:"empty-assistant"}:{entry:{type:"message",id:g,parentId:b,timestamp:c,message:{role:"assistant",content:a}}}}if("tool"===e){let a=("string"==typeof d.content?d.content:JSON.stringify(d.content))??"";return{entry:{type:"message",id:g,parentId:b,timestamp:c,message:{role:"toolResult",toolCallId:d.tool_call_id||"unknown",toolName:d.name||"unknown",content:[{type:"text",text:a}],isError:!1}}}}return d.content?{entry:{type:"message",id:g,parentId:b,timestamp:c,message:{role:"user",content:[{type:"text",text:("string"==typeof d.content?d.content:JSON.stringify(d.content))??""}]}}}:{entry:null,reason:`unknown-role:${e}`}}(a,w,q);b&&b.entry&&(u.push(b.entry),w=b.entry.id)}let x=u.filter(a=>"message"===a.type).length;return{entries:u,sessionId:t,messageCount:x}}function h(a){return a.map(a=>JSON.stringify(a)).join("\n")+"\n"}},49228:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{I6:()=>o,Ol:()=>l,Ts:()=>q,mO:()=>p});var e=c(21820),f=c(33873),g=c(29021),h=c(75430),i=a([h]);function j(){let a=[],b=process.env.APPDATA;return b&&b.length>0&&a.push((0,f.join)(b,"reasonix")),a.push((0,f.join)((0,e.homedir)(),".reasonix")),a.filter((b,c)=>a.indexOf(b)===c)}h=(i.then?(await i)():i)[0];let r=[".events.jsonl",".conflicts.jsonl",".telemetry.json",".recovery.json",".goal-state.json",".event-index.json",".recovery.jsonl",".ckpt",".meta",".lock",".lease.json",".lease.lock",".jobs"];function k(a){if(!a.endsWith(".jsonl"))return!1;for(let b of r)if(a.endsWith(b))return!1;return!0}function l(a){let b=a.replace(/^-/,"").replace(/^[/\\]/,"").replace(/[/\\:]/g,"-");return`--${b}--`}let s=(0,f.join)((0,h.getAgentDir)(),"sessions");function m(a){return(0,g.existsSync)((0,f.join)(s,a))}function n(a){try{return(0,g.readdirSync)((0,f.join)(s,a)).filter(a=>a.endsWith(".jsonl")).length}catch{return 0}}function o(){let a=(0,g.existsSync)(function(){for(let a of j()){let b=(0,f.join)(a,"projects");if((0,g.existsSync)(b))return b}return(0,f.join)(j()[0],"projects")}())||(0,g.existsSync)(function(){for(let a of j()){let b=(0,f.join)(a,"sessions");if((0,g.existsSync)(b))return b}return(0,f.join)(j()[0],"sessions")}());return[{key:"reasonix",label:"Reasonix",available:a,status:a?"available":"unavailable"},{key:"codex",label:"Codex",available:!1,status:"coming-soon"},{key:"opencode",label:"OpenCode",available:!1,status:"coming-soon"},{key:"claude",label:"Claude Code",available:!1,status:"coming-soon"}]}function p(a){if(!a||a.split(/[\\/]/).some(a=>""===a||"."===a||".."===a))return null;for(let b of j()){let c=(0,f.join)(b,"projects",a,"sessions");if((0,g.existsSync)(c))try{let a=(0,g.readdirSync)(c).filter(k);return{sessionsDir:c,files:a,flat:!1}}catch{return null}}for(let b of j()){let c=(0,f.join)(b,"sessions");if((0,g.existsSync)(c))try{let b=`${a}-`,d=(0,g.readdirSync)(c).filter(a=>k(a)&&a.startsWith(b));if(d.length>0)return{sessionsDir:c,files:d,flat:!0}}catch{break}}return null}function q(){let a=j(),b=a.map(a=>(0,f.join)(a,"projects")).filter(a=>(0,g.existsSync)(a)),c=a.map(a=>(0,f.join)(a,"sessions")).filter(a=>(0,g.existsSync)(a));if(0===b.length&&0===c.length)return{available:!1,projects:[],totalSessions:0};let d=[],e=0,h=new Set;for(let a of b){let b;try{b=(0,g.readdirSync)(a,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>a.name)}catch{b=[]}for(let a of b){if(h.has(a))continue;let b=p(a);if(!b||0===b.files.length)continue;h.add(a);let c=l(a),f=m(c);d.push({name:a,sessions:b.files.length,piCwdDir:c,matched:f,existingCount:f?n(c):0}),e+=b.files.length}}for(let a of c){let b;try{b=(0,g.readdirSync)(a).filter(k)}catch{b=[]}let c=new Map;for(let a of b){let b=a.split("-")[0];b&&c.set(b,(c.get(b)??0)+1)}for(let[a,b]of c){if(h.has(a))continue;let c=l(a),f=m(c);d.push({name:a,sessions:b,piCwdDir:c,matched:f,existingCount:f?n(c):0}),e+=b}}return{available:!0,projects:d,totalSessions:e}}d()}catch(a){d(a)}})},66544:(a,b,c)=>{c.d(b,{E2:()=>k,EN:()=>j});var d=c(77030);function e(a){return(a.startsWith("[")&&a.endsWith("]")?a.slice(1,-1):a).toLowerCase().replace(/\.$/,"")}function f(a){if(!a||/[\s/@\\]/.test(a))return null;try{let b=new URL(`http://${a}`);if(b.username||b.password||"/"!==b.pathname||b.search||b.hash)return null;return e(b.hostname)}catch{return null}}function g(){return[process.env.PI_WEB_HOSTNAME,...process.env.PI_WEB_ALLOWED_HOSTS?.split(",")??[]].filter(a=>!!a?.trim())}function h(a){try{return new URL(a).origin}catch{return null}}let i=new Set(["POST","PUT","PATCH","DELETE"]);function j(a,b=g()){return!!function(a,b=g()){let c=a.headers.get("host"),h=c?f(c):null;return!!h&&(!!("localhost"===h||h.endsWith(".localhost")||(0,d.isIP)(h))||b.some(a=>{let b;return((b=a?.trim())?(0,d.isIP)(b)?e(b):f(b):null)===h}))}(a,b)&&(!!function(a){if("GET"!==a.method||"navigate"!==a.headers.get("sec-fetch-mode")||"document"!==a.headers.get("sec-fetch-dest")||"?1"!==a.headers.get("sec-fetch-user"))return!1;try{return/^\/api\/sessions\/[^/]+\/export$/.test(new URL(a.url).pathname)}catch{return!1}}(a)||(a.headers.has("origin")||a.headers.has("sec-fetch-site")?function(a){let b,c;if("cross-site"===a.headers.get("sec-fetch-site"))return!1;let d=a.headers.get("origin");if(!d)return!0;let e=(b=new URL(a.url),(c=a.headers.get("host"))?h(`${b.protocol}//${c}`):null);return null!==e&&h(d)===e}(a):!i.has((a.method??"GET").toUpperCase())))}function k(a){let b=a.headers.get("content-type")?.split(";",1)[0]?.trim().toLowerCase();return"application/json"===b||!!(b?.startsWith("application/")&&b.endsWith("+json"))}}};
|