@qt4798/pi-web 0.9.15 → 0.9.16-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +29 -13
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/react-loadable-manifest.json +4 -0
- package/.next/required-server-files.js +1 -1
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +107 -0
- package/.next/server/app/_global-error/page.js +3 -3
- 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 +1 -1
- package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- 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 +1 -1
- package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
- package/.next/server/app/api/agent/[id]/events/route.js +1 -1
- 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/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/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/default-cwd/route.js +1 -1
- package/.next/server/app/api/features/route.js +1 -0
- package/.next/server/app/api/features/route.js.nft.json +1 -0
- package/.next/server/app/api/features/route_client-reference-manifest.js +1 -0
- 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 +6 -1
- package/.next/server/app/api/git/diff/route.js.nft.json +1 -1
- package/.next/server/app/api/git/push/route.js +2 -0
- package/.next/server/app/api/git/push/route.js.nft.json +1 -0
- package/.next/server/app/api/git/push/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/git/stash/route.js +2 -0
- package/.next/server/app/api/git/stash/route.js.nft.json +1 -0
- package/.next/server/app/api/git/stash/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/git/status/route.js +6 -1
- package/.next/server/app/api/git/status/route.js.nft.json +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/models/route.js +1 -1
- package/.next/server/app/api/models-config/builtin/route.js +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/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 -0
- package/.next/server/app/api/proxy/route.js.nft.json +1 -0
- package/.next/server/app/api/proxy/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/proxy/test/route.js +1 -0
- package/.next/server/app/api/proxy/test/route.js.nft.json +1 -0
- package/.next/server/app/api/proxy/test/route_client-reference-manifest.js +1 -0
- 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 +2 -2
- 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/tasks/[id]/[action]/route.js +1 -0
- package/.next/server/app/api/tasks/[id]/[action]/route.js.nft.json +1 -0
- package/.next/server/app/api/tasks/[id]/[action]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/tasks/[id]/changed-files/route.js +6 -0
- package/.next/server/app/api/tasks/[id]/changed-files/route.js.nft.json +1 -0
- package/.next/server/app/api/tasks/[id]/changed-files/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/tasks/[id]/diff/route.js +6 -0
- package/.next/server/app/api/tasks/[id]/diff/route.js.nft.json +1 -0
- package/.next/server/app/api/tasks/[id]/diff/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/tasks/[id]/events/route.js +1 -0
- package/.next/server/app/api/tasks/[id]/events/route.js.nft.json +1 -0
- package/.next/server/app/api/tasks/[id]/events/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/tasks/[id]/route.js +1 -0
- package/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -0
- package/.next/server/app/api/tasks/[id]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/tasks/batch/route.js +1 -0
- package/.next/server/app/api/tasks/batch/route.js.nft.json +1 -0
- package/.next/server/app/api/tasks/batch/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/tasks/events/route.js +3 -0
- package/.next/server/app/api/tasks/events/route.js.nft.json +1 -0
- package/.next/server/app/api/tasks/events/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/tasks/route.js +1 -0
- package/.next/server/app/api/tasks/route.js.nft.json +1 -0
- package/.next/server/app/api/tasks/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/tasks/settings/route.js +1 -0
- package/.next/server/app/api/tasks/settings/route.js.nft.json +1 -0
- package/.next/server/app/api/tasks/settings/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/tasks/templates/route.js +1 -0
- package/.next/server/app/api/tasks/templates/route.js.nft.json +1 -0
- package/.next/server/app/api/tasks/templates/route_client-reference-manifest.js +1 -0
- 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 -0
- package/.next/server/app/api/usage/route.js.nft.json +1 -0
- package/.next/server/app/api/usage/route_client-reference-manifest.js +1 -0
- 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 +3 -3
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/page.js +11 -4
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +29 -13
- package/.next/server/chunks/1499.js +22 -0
- package/.next/server/chunks/2834.js +1 -0
- package/.next/server/chunks/4253.js +16 -0
- package/.next/server/chunks/7774.js +121 -0
- package/.next/server/chunks/7915.js +1 -1
- package/.next/server/instrumentation.js +1 -1
- package/.next/server/instrumentation.js.nft.json +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/bQwfA6rX4NaYbsubUoY4b/_buildManifest.js +1 -0
- package/.next/static/chunks/8898-89d80b9022b54177.js +1 -0
- package/.next/static/chunks/app/_global-error/page-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/bash-output/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/events/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/agent/new/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/agent/running/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/auth/all-providers/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/auth/login/[provider]/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/auth/providers/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/backup/export/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/backup/import/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/cwd/browse/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/cwd/validate/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/default-cwd/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/features/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/file-index/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/files/[...path]/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/git/diff/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/git/push/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/git/stash/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/git/status/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/home/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/import/discover/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/import/execute/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/import/status/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/models/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/models-config/builtin/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/models-config/catalog/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/models-config/discover/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/models-config/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/models-config/test/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/plugins/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/project-trust/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/proxy/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/proxy/test/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/context/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/export/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/queue-recovery/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/state/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/sessions/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/settings/title-model/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/skills/check/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/skills/install/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/skills/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/skills/search/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/skills/update/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/[action]/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/changed-files/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/diff/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/events/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/tasks/batch/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/tasks/events/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/tasks/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/tasks/settings/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/tasks/templates/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/themes/[name]/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/themes/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/usage/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/app/page-3a71956f793d87f7.js +22 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-fc8ab8f162e8d6f5.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-fc8ab8f162e8d6f5.js +1 -0
- package/.next/trace +179 -7
- package/.next/trace-build +1 -1
- package/.next/types/app/api/features/route.ts +351 -0
- package/.next/types/app/api/git/push/route.ts +351 -0
- package/.next/types/app/api/git/stash/route.ts +351 -0
- package/.next/types/app/api/proxy/route.ts +351 -0
- package/.next/types/app/api/proxy/test/route.ts +351 -0
- package/.next/types/app/api/tasks/[id]/[action]/route.ts +351 -0
- package/.next/types/app/api/tasks/[id]/changed-files/route.ts +351 -0
- package/.next/types/app/api/tasks/[id]/diff/route.ts +351 -0
- package/.next/types/app/api/tasks/[id]/events/route.ts +351 -0
- package/.next/types/app/api/tasks/[id]/route.ts +351 -0
- package/.next/types/app/api/tasks/batch/route.ts +351 -0
- package/.next/types/app/api/tasks/events/route.ts +351 -0
- package/.next/types/app/api/tasks/route.ts +351 -0
- package/.next/types/app/api/tasks/settings/route.ts +351 -0
- package/.next/types/app/api/tasks/templates/route.ts +351 -0
- package/.next/types/app/api/usage/route.ts +351 -0
- package/.next/types/routes.d.ts +17 -1
- package/.next/types/validator.ts +144 -0
- package/README.en.md +47 -0
- package/README.md +63 -2
- package/package.json +1 -1
- package/.next/server/chunks/3961.js +0 -6
- package/.next/static/2u8qV5tbHVkAgCeA8TyZR/_buildManifest.js +0 -1
- package/.next/static/chunks/7253-7943c800c2fd7b70.js +0 -1
- package/.next/static/chunks/app/_global-error/page-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/bash-output/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/events/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/agent/new/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/agent/running/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/auth/all-providers/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/auth/login/[provider]/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/auth/providers/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/backup/export/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/backup/import/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/cwd/browse/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/cwd/validate/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/default-cwd/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/file-index/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/files/[...path]/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/git/diff/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/git/status/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/home/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/import/discover/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/import/execute/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/import/status/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/models/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/models-config/builtin/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/models-config/catalog/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/models-config/discover/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/models-config/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/models-config/test/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/plugins/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/project-trust/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/context/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/export/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/queue-recovery/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/state/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/sessions/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/settings/title-model/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/skills/check/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/skills/install/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/skills/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/skills/search/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/skills/update/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/themes/[name]/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/themes/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/app/page-3e915a4cae4742de.js +0 -15
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-bc5f4c047207b363.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-bc5f4c047207b363.js +0 -1
- /package/.next/static/{2u8qV5tbHVkAgCeA8TyZR → bQwfA6rX4NaYbsubUoY4b}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"27123":{"*":{"id":"81921","name":"*","chunks":[],"async":false}},"39247":{"*":{"id":"55100","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"35421","name":"*","chunks":[],"async":false}},"
|
|
1
|
+
globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"27123":{"*":{"id":"81921","name":"*","chunks":[],"async":false}},"39247":{"*":{"id":"55100","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"35421","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"60440","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"82265","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"61335","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"84342","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"74661","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"70664","name":"*","chunks":[],"async":false}},"92911":{"*":{"id":"1361","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/esm/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/esm/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/esm/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/katex/dist/katex.min.css":{"id":84559,"name":"*","chunks":["7177","static/chunks/app/layout-7b635840991e69cb.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/app/globals.css":{"id":66872,"name":"*","chunks":["7177","static/chunks/app/layout-7b635840991e69cb.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/@fontsource/ia-writer-quattro/index.css":{"id":26408,"name":"*","chunks":["7177","static/chunks/app/layout-7b635840991e69cb.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/@fontsource/ia-writer-quattro/400-italic.css":{"id":8057,"name":"*","chunks":["7177","static/chunks/app/layout-7b635840991e69cb.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/@fontsource/ia-writer-quattro/700.css":{"id":35279,"name":"*","chunks":["7177","static/chunks/app/layout-7b635840991e69cb.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/@fontsource/ia-writer-quattro/700-italic.css":{"id":48276,"name":"*","chunks":["7177","static/chunks/app/layout-7b635840991e69cb.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/node_modules/@fontsource/lilex/index.css":{"id":12043,"name":"*","chunks":["7177","static/chunks/app/layout-7b635840991e69cb.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/components/AppShell.tsx":{"id":92911,"name":"*","chunks":["7330","static/chunks/d3ac728e-7964f816a1ca64e5.js","8898","static/chunks/8898-89d80b9022b54177.js","8974","static/chunks/app/page-3a71956f793d87f7.js"],"async":false},"/Volumes/1T 原装/项目研发/pi-web-QT/hooks/useI18n.tsx":{"id":39247,"name":"*","chunks":["7330","static/chunks/d3ac728e-7964f816a1ca64e5.js","8898","static/chunks/8898-89d80b9022b54177.js","8974","static/chunks/app/page-3a71956f793d87f7.js"],"async":false}},"entryCSSFiles":{"/Volumes/1T 原装/项目研发/pi-web-QT/":[],"/Volumes/1T 原装/项目研发/pi-web-QT/app/layout":[{"inlined":false,"path":"static/css/3790610024d16435.css"},{"inlined":false,"path":"static/css/f8b227e230256326.css"}],"/Volumes/1T 原装/项目研发/pi-web-QT/app/page":[]},"rscModuleMapping":{"8057":{"*":{"id":"17","name":"*","chunks":[],"async":false}},"12043":{"*":{"id":"47561","name":"*","chunks":[],"async":false}},"26408":{"*":{"id":"77222","name":"*","chunks":[],"async":false}},"27123":{"*":{"id":"95547","name":"*","chunks":[],"async":false}},"35279":{"*":{"id":"10289","name":"*","chunks":[],"async":false}},"39247":{"*":{"id":"73884","name":"*","chunks":[],"async":false}},"48276":{"*":{"id":"64388","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"98099","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"15098","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"33859","name":"*","chunks":[],"async":false}},"66872":{"*":{"id":"82704","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"16237","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"47644","name":"*","chunks":[],"async":false}},"84559":{"*":{"id":"25319","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"36675","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"98562","name":"*","chunks":[],"async":false}},"92911":{"*":{"id":"35790","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}};
|
|
@@ -19,38 +19,54 @@
|
|
|
19
19
|
"/api/sessions/[id]/route": "app/api/sessions/[id]/route.js",
|
|
20
20
|
"/api/sessions/[id]/state/route": "app/api/sessions/[id]/state/route.js",
|
|
21
21
|
"/api/sessions/route": "app/api/sessions/route.js",
|
|
22
|
+
"/api/tasks/[id]/[action]/route": "app/api/tasks/[id]/[action]/route.js",
|
|
23
|
+
"/api/tasks/[id]/diff/route": "app/api/tasks/[id]/diff/route.js",
|
|
24
|
+
"/api/tasks/[id]/events/route": "app/api/tasks/[id]/events/route.js",
|
|
25
|
+
"/api/tasks/[id]/route": "app/api/tasks/[id]/route.js",
|
|
26
|
+
"/api/tasks/batch/route": "app/api/tasks/batch/route.js",
|
|
27
|
+
"/api/tasks/route": "app/api/tasks/route.js",
|
|
28
|
+
"/api/tasks/settings/route": "app/api/tasks/settings/route.js",
|
|
29
|
+
"/api/tasks/templates/route": "app/api/tasks/templates/route.js",
|
|
22
30
|
"/api/themes/[name]/route": "app/api/themes/[name]/route.js",
|
|
23
31
|
"/api/themes/route": "app/api/themes/route.js",
|
|
24
32
|
"/api/worktrees/route": "app/api/worktrees/route.js",
|
|
25
33
|
"/icon.ico/route": "app/icon.ico/route.js",
|
|
26
34
|
"/icon.png/route": "app/icon.png/route.js",
|
|
27
35
|
"/icon.svg/route": "app/icon.svg/route.js",
|
|
28
|
-
"/api/
|
|
36
|
+
"/api/agent/[id]/bash-output/route": "app/api/agent/[id]/bash-output/route.js",
|
|
37
|
+
"/api/agent/[id]/events/route": "app/api/agent/[id]/events/route.js",
|
|
29
38
|
"/api/agent/running/route": "app/api/agent/running/route.js",
|
|
39
|
+
"/api/auth/all-providers/route": "app/api/auth/all-providers/route.js",
|
|
30
40
|
"/api/auth/api-key/[provider]/route": "app/api/auth/api-key/[provider]/route.js",
|
|
31
|
-
"/api/
|
|
32
|
-
"/api/auth/providers/route": "app/api/auth/providers/route.js",
|
|
33
|
-
"/api/agent/[id]/bash-output/route": "app/api/agent/[id]/bash-output/route.js",
|
|
41
|
+
"/api/auth/login/[provider]/route": "app/api/auth/login/[provider]/route.js",
|
|
34
42
|
"/api/auth/logout/[provider]/route": "app/api/auth/logout/[provider]/route.js",
|
|
43
|
+
"/api/auth/providers/route": "app/api/auth/providers/route.js",
|
|
35
44
|
"/api/backup/export/route": "app/api/backup/export/route.js",
|
|
36
|
-
"/api/
|
|
45
|
+
"/api/backup/import/route": "app/api/backup/import/route.js",
|
|
46
|
+
"/api/features/route": "app/api/features/route.js",
|
|
37
47
|
"/api/git/diff/route": "app/api/git/diff/route.js",
|
|
48
|
+
"/api/git/push/route": "app/api/git/push/route.js",
|
|
49
|
+
"/api/git/stash/route": "app/api/git/stash/route.js",
|
|
38
50
|
"/api/git/status/route": "app/api/git/status/route.js",
|
|
39
|
-
"/api/models-config/
|
|
51
|
+
"/api/models-config/catalog/route": "app/api/models-config/catalog/route.js",
|
|
40
52
|
"/api/models-config/builtin/route": "app/api/models-config/builtin/route.js",
|
|
53
|
+
"/api/models-config/discover/route": "app/api/models-config/discover/route.js",
|
|
41
54
|
"/api/models-config/route": "app/api/models-config/route.js",
|
|
42
|
-
"/api/models-config/catalog/route": "app/api/models-config/catalog/route.js",
|
|
43
|
-
"/api/backup/import/route": "app/api/backup/import/route.js",
|
|
44
|
-
"/api/models/route": "app/api/models/route.js",
|
|
45
55
|
"/api/models-config/test/route": "app/api/models-config/test/route.js",
|
|
56
|
+
"/api/models/route": "app/api/models/route.js",
|
|
57
|
+
"/api/plugins/route": "app/api/plugins/route.js",
|
|
46
58
|
"/api/project-trust/route": "app/api/project-trust/route.js",
|
|
47
|
-
"/api/
|
|
48
|
-
"/api/
|
|
59
|
+
"/api/proxy/route": "app/api/proxy/route.js",
|
|
60
|
+
"/api/proxy/test/route": "app/api/proxy/test/route.js",
|
|
49
61
|
"/api/sessions/[id]/export/route": "app/api/sessions/[id]/export/route.js",
|
|
62
|
+
"/api/settings/title-model/route": "app/api/settings/title-model/route.js",
|
|
63
|
+
"/api/skills/check/route": "app/api/skills/check/route.js",
|
|
50
64
|
"/api/skills/install/route": "app/api/skills/install/route.js",
|
|
51
65
|
"/api/skills/route": "app/api/skills/route.js",
|
|
52
|
-
"/api/skills/update/route": "app/api/skills/update/route.js",
|
|
53
66
|
"/api/skills/search/route": "app/api/skills/search/route.js",
|
|
54
|
-
"/api/
|
|
67
|
+
"/api/skills/update/route": "app/api/skills/update/route.js",
|
|
68
|
+
"/api/tasks/[id]/changed-files/route": "app/api/tasks/[id]/changed-files/route.js",
|
|
69
|
+
"/api/tasks/events/route": "app/api/tasks/events/route.js",
|
|
70
|
+
"/api/usage/route": "app/api/usage/route.js",
|
|
55
71
|
"/page": "app/page.js"
|
|
56
72
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";exports.id=1499,exports.ids=[1499],exports.modules={6835:(a,b,c)=>{c.d(b,{os:()=>d});function d(){return{defaultAgentType:null,modeId:null,configValues:{},autoProcess:!0,maxConcurrent:1,mergeStrategy:"merge",deleteWorktreeDefault:!0,preflightCommand:null,initCommand:null,stagePrompts:null}}},46583:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{AI:()=>H,D2:()=>E,Mx:()=>z,Q1:()=>A,Rv:()=>D,_o:()=>w,_s:()=>C,bT:()=>y,dm:()=>B,eG:()=>G,fd:()=>x,h6:()=>v,jf:()=>F,k9:()=>I,listTaskProjects:()=>r,z1:()=>m});var e=c(29021),f=c(33873),g=c(75430),h=c(8102),i=c(50593),j=c(6835),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(a){return(0,f.join)(m(a),"events.jsonl")}function p(){return(0,f.join)(l(),"settings.json")}function q(){return(0,f.join)(l(),"templates.jsonl")}function r(){let a=l();return(0,e.existsSync)(a)?(0,e.readdirSync)(a,{withFileTypes:!0}).filter(a=>a.isDirectory()&&"__engine__"!==a.name).map(a=>{var b;return b=a.name,"/"+b.split("--").map(a=>decodeURIComponent(a)).join("/")}):[]}function s(a){(0,e.existsSync)(a)||(0,e.mkdirSync)(a,{recursive:!0,mode:448})}function t(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 u(a,b){s(a.substring(0,a.lastIndexOf("/")));let c=b.map(a=>JSON.stringify(a)).join("\n")+"\n";(0,h.$)(a,c)}g=(k.then?(await k)():k)[0];let J="__piTaskStore";function v(a){return t(n(a)).sort((a,b)=>a.sortOrder-b.sortOrder||a.id-b.id)}function w(a,b){return v(a).find(a=>a.id===b)??null}function x(a){let b=n(a.projectRoot),c=v(a.projectRoot),d=c.findIndex(b=>b.id===a.id),e={...a,updatedAt:new Date().toISOString()};d>=0?c[d]=e:c.push(e),u(b,c)}function y(a,b){let c=n(a),d=v(a).filter(a=>a.id!==b);u(c,d)}function z(a,b){let c,d,g=((c=globalThis)[J]||(c[J]={nextId:1}),(d=c[J]).nextId<=1&&(d.nextId=function(){let a=l();if(!(0,e.existsSync)(a))return 1;let b=0;for(let c of(0,e.readdirSync)(a,{withFileTypes:!0})){if(!c.isDirectory())continue;let d=(0,f.join)(a,c.name,"tasks.jsonl");if((0,e.existsSync)(d))for(let a of t(d))a.id>b&&(b=a.id)}return b+1}()),d.nextId++),h=new Date().toISOString(),i={...b(g,h),projectRoot:a};return x(i),i}function A(a,b){let c=o(a),d=t(c).reduce((a,b)=>Math.max(a,b.id),0)+1,f={...b,payload:b.payload??null,id:d,createdAt:new Date().toISOString()};return s(c.substring(0,c.lastIndexOf("/"))),(0,e.writeFileSync)(c,JSON.stringify(f)+"\n",{encoding:"utf8",flag:"a",mode:384}),f}function B(a,b,c=500){return t(o(a)).filter(a=>a.taskId===b).slice(-c)}function C(a){let b=p();if(!(0,e.existsSync)(b))return null;try{return JSON.parse((0,e.readFileSync)(b,"utf8"))[a]??null}catch{return null}}function D(a){let b=C(a),c=function(){let a=p();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}function E(a,b){let c=p(),d={};if((0,e.existsSync)(c))try{d=JSON.parse((0,e.readFileSync)(c,"utf8"))}catch{d={}}d[a]=b,s(l()),(0,h.$)(c,JSON.stringify(d,null,2))}function F(a){let b=p();if((0,e.existsSync)(b))try{let c=JSON.parse((0,e.readFileSync)(b,"utf8"));delete c[a],(0,h.$)(b,JSON.stringify(c,null,2))}catch{}}function G(){return t(q())}function H(a){let b=G(),c=b.findIndex(b=>b.id===a.id);c>=0?b[c]=a:b.push(a),u(q(),b)}function I(a){let b=G().filter(b=>b.id!==a);u(q(),b)}d()}catch(a){d(a)}})},50593:(a,b,c)=>{c.d(b,{A0:()=>d});function d(a){return/^[a-zA-Z]:[\\/]/.test(a)||a.startsWith("\\\\")?a.replace(/\\/g,"/"):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"))}},80154:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{KG:()=>F,Kx:()=>u,MR:()=>J,Me:()=>N,Q$:()=>M,Rt:()=>O,UT:()=>q,YC:()=>P,gc:()=>E,lC:()=>r,m5:()=>L,oM:()=>K,r5:()=>k,vq:()=>s,yX:()=>I});var e=c(29021);c(33873);var f=c(79646),g=c(24923),h=c(46583),i=c(56429),j=a([h,i]);[h,i]=j.then?(await j)():j;let R=new Set;function k(a){return R.add(a),()=>R.delete(a)}function l(a){for(let b of R)b(a)}function m(){return globalThis.__piTaskEngine??null}function n(){let a=m();if(!a)throw Error("task engine not running");return a}function o(){return new Date().toISOString()}function p(a,b,c="engine",d){(0,h.fd)(a),b&&(0,h.Q1)(a.projectRoot,{taskId:a.id,kind:b,actor:c,payload:d??null}),l({type:"upsert",id:a.id})}function q(a){let b=(0,h.Mx)(a.projectRoot,(b,c)=>({id:b,projectRoot:a.projectRoot,title:a.title,config:a.config,status:"todo",failureReason:null,lastError:null,runSeq:0,sortOrder:(0,h.h6)(a.projectRoot).length,worktreePath:null,conversationId:null,sessionFile:null,baseBranch:null,workBranch:null,verdict:null,resultSummary:null,userNote:null,filesChanged:null,additions:null,deletions:null,mergeCommit:null,preflight:null,archivedAt:null,createdAt:c,updatedAt:c,startedAt:null,settledAt:null,finishedAt:null}));return(0,h.Q1)(b.projectRoot,{taskId:b.id,kind:"created",actor:"user",payload:{title:b.title}}),l({type:"upsert",id:b.id}),u(b.projectRoot),b}function r(a,b){let c=(0,h._o)(b.projectRoot,a);if(!c)return null;let d={...c,title:b.title,config:b.config};return p(d,"updated","user"),u(d.projectRoot),d}function s(a,b,c){let d=(0,h._o)(b,a);if(!d)return;d.worktreePath&&d.workBranch&&c&&(async()=>{try{await (0,g.IL)(b,d.worktreePath,!0)}catch{}try{await C(b,`git branch -D ${JSON.stringify(d.workBranch)}`)}catch{}})();let e=m(),f=e?.byTask.get(a);f&&(f.session.send({type:"abort"}).catch(()=>void 0),e?.live.delete(f.connectionId),e?.byTask.delete(a)),(0,h.bT)(b,a),l({type:"delete",id:a})}function t(a,b,c,d,f){let g=function(a){for(let b of m()?.byTask.values()??[])if(b.taskId===a)return(0,h._o)(b.projectRoot,a)??null;let b=(0,h.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,h._o)(H(c.name),a);if(b)return b}return null}(a);if(!g||g.runSeq!==b||!c.includes(g.status))return null;let i={...g,...f,status:d,updatedAt:o()};return p(i),i}function u(a){m()&&v(a)}async function v(a){let b=n(),c=(b.pumpLocks.get(a)??Promise.resolve()).then(()=>w(a));b.pumpLocks.set(a,c.catch(()=>void 0)),await c}async function w(a){let b=n();if(b.stopped)return;let c=(0,h.Rv)(a);if(!c.autoProcess)return;let d=(0,h.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 x(c.id,a)&&(e+=1)}}async function x(a,b){let c=n(),d=(0,h._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),!t(a,d.runSeq,["queued"],"preparing",{startedAt:o()}))return c.launching.delete(a),!1;(0,h.Q1)(b,{taskId:a,kind:"preparing",actor:"engine"});try{var i,j,k;let e,f,l,m,p,q,r=await (0,g.KI)(b);if(!r.projectRoot)throw Error("Not a git repository");let s=`task/${a}-${d.title.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40)||"task"}`,u=null;try{u=(await (0,g.l)(r.projectRoot,s)).path}catch(b){let a=await y(r.projectRoot,s);if(!a)throw b;u=a}let v=r.branch??null,w=(0,h.Rv)(b);w.initCommand&&await C(u,w.initCommand);let{session:x}=await z(d,u),B={taskId:a,runSeq:d.runSeq,connectionId:x.sessionId,projectRoot:b,session:x,pendingRequests:new Set};if(c.live.set(x.sessionId,B),c.byTask.set(a,B),(i=B).session.onEvent(a=>{let b=a.type;(async()=>{var c,d;let e=n().live.get(i.connectionId);if(!e||e.taskId!==i.taskId)return;let f=(0,h._o)(i.projectRoot,i.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)&&(i.pendingRequests.add(c),"running"===f.status&&(t(i.taskId,i.runSeq,["running"],"awaiting_input"),(0,h.Q1)(f.projectRoot,{taskId:i.taskId,kind:"awaiting_input",actor:"engine",payload:{method:b,id:c}})));break}case"extension_ui_response":{let b=a.id;b&&i.pendingRequests.delete(b)&&0===i.pendingRequests.size&&"awaiting_input"===f.status&&t(i.taskId,i.runSeq,["awaiting_input"],"running");break}case"agent_end":if(i.pendingRequests.size>0)break;if("merging"===f.status){let a;c=i,(a=(0,h._o)(c.projectRoot,c.taskId))&&"merging"===a.status&&D(c.session.cwd,"git rev-parse --short HEAD").then(a=>a.output.trim()).catch(()=>null).then(async a=>{let b=(0,h._o)(c.projectRoot,c.taskId);if(b){t(b.id,b.runSeq,["merging"],"done",{mergeCommit:a,finishedAt:o()}),(0,h.Q1)(b.projectRoot,{taskId:b.id,kind:"merged",actor:"engine",payload:{commit:a}});try{b.worktreePath&&await (0,g.IL)(c.projectRoot,b.worktreePath,!0).catch(()=>void 0),b.workBranch&&await C(c.projectRoot,`git branch -D ${JSON.stringify(b.workBranch)}`).catch(()=>void 0)}catch{}}});break}A(i,f);break;case"prompt_error":{let b,c=a.errorMessage??"agent error";t(i.taskId,i.runSeq,["running","awaiting_input"],"failed",{failureReason:"agent_error",lastError:c,settledAt:o(),finishedAt:o()}),(0,h.Q1)(f.projectRoot,{taskId:i.taskId,kind:"failed",actor:"engine",payload:{reason:"agent_error",message:c}}),d=i,(b=n()).live.delete(d.connectionId),b.byTask.delete(d.taskId);break}case"agent_start":"awaiting_input"===f.status&&0===i.pendingRequests.size&&t(i.taskId,i.runSeq,["awaiting_input"],"running")}})()}),!t(a,d.runSeq,["preparing"],"running",{worktreePath:u,workBranch:s,baseBranch:v,conversationId:x.sessionId,sessionFile:x.sessionFile,runSeq:d.runSeq}))return c.live.delete(x.sessionId),c.byTask.delete(a),x.shutdown().catch(()=>void 0),!1;(0,h.Q1)(b,{taskId:a,kind:"started",actor:"engine",payload:{runSeq:d.runSeq,branch:s}});let E=(j=d,k=w,e=j.config?.prompt??j.title,f=k.stagePrompts?.work??k.stagePrompts?.all??"",l=j.config?.agentType??k.defaultAgentType,m=`You are working on task "${j.title}" in a git worktree branch.
|
|
2
|
+
`+(l?`Agent: ${l}
|
|
3
|
+
`:"")+`Complete the work described below.
|
|
4
|
+
|
|
5
|
+
`+`IMPORTANT RULES:
|
|
6
|
+
`+`- Work ONLY inside this worktree directory. Do not touch other checkouts.
|
|
7
|
+
`+`- Do NOT run "git add", "git commit", "git push" or "git merge" unless the task explicitly asks you to. Leave git alone.
|
|
8
|
+
`+`- Do NOT modify files outside this worktree.
|
|
9
|
+
`+`- When you are done, write a short "Result summary" paragraph describing what you changed.
|
|
10
|
+
|
|
11
|
+
`,q=(p=j.userNote?.trim())?`User note on this (re)start:
|
|
12
|
+
${p}
|
|
13
|
+
|
|
14
|
+
`:"",m+q+e+(f?`
|
|
15
|
+
|
|
16
|
+
${f}`:""));return await x.send({type:"prompt",message:E}),!0}catch(e){let c=e instanceof Error?e.message:String(e),d=(0,h._o)(b,a);return d&&("preparing"===d.status||"queued"===d.status)&&(t(a,d.runSeq,[d.status],"failed",{failureReason:"setup_error",lastError:c,settledAt:o(),finishedAt:o()}),(0,h.Q1)(b,{taskId:a,kind:"failed",actor:"engine",payload:{reason:"setup_error",message:c}})),!1}finally{c.launching.delete(a)}}async function y(a,b){try{let c=(await (0,g.P9)(a)).find(a=>a.branch===b);return c?.path??null}catch{return null}}async function z(a,b){let c=`task-${a.id}`,{session:d}=await (0,i.OF)(c,"",b,{});return{session:d}}async function A(a,b){let c=n().live.get(a.connectionId);if(!c||c.taskId!==a.taskId||!t(a.taskId,a.runSeq,["running","awaiting_input"],"review",{settledAt:o()}))return;(0,h.Q1)(b.projectRoot,{taskId:a.taskId,kind:"review",actor:"engine"});let d=(0,h.Rv)(b.projectRoot);d.preflightCommand&&await B(a,d.preflightCommand)}async function B(a,b){let c=(0,h._o)(a.projectRoot,a.taskId);if(c){p({...c,preflight:{status:"running",command:b}},"preflight_start","engine",{command:b});try{let c=await D(a.session.cwd,b),d=(0,h._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,h._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 C(a,b){return new Promise((c,d)=>{let e=(0,f.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 D(a,b){return new Promise(c=>{let d=(0,f.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}))})}async function E(a,b){let c=(0,h._o)(b,a);if(!c||"todo"!==c.status)return;let d={...c,status:"queued",runSeq:c.runSeq+1};p(d,"queued","user"),u(b)}async function F(a){let b=a?[a]:await G(),c=0;for(let a of b){for(let b of(0,h.h6)(a).filter(a=>"todo"===a.status)){let a={...b,status:"queued",runSeq:b.runSeq+1};p(a,"queued","user"),c+=1}u(a)}return c}async function G(){let a=(0,h.z1)("__engine__").replace(/__engine__$/,"");return(0,e.existsSync)(a)?(0,e.readdirSync)(a,{withFileTypes:!0}).filter(a=>a.isDirectory()&&"__engine__"!==a.name).map(a=>H(a.name)):[]}function H(a){return"/"+a.split("--").map(a=>decodeURIComponent(a)).join("/")}async function I(a,b,c){let d=(0,h._o)(b,a);if(!d)return;let e=m(),f=e?.byTask.get(a);f&&e?(await f.session.send({type:"abort"}).catch(()=>void 0),t(a,f.runSeq,["running","awaiting_input","preparing","queued"],"canceled",{settledAt:o(),finishedAt:o()}),e.live.delete(f.connectionId),e.byTask.delete(a)):t(a,d.runSeq,["todo","queued","preparing"],"canceled",{settledAt:o(),finishedAt:o()}),(0,h.Q1)(b,{taskId:a,kind:"canceled",actor:"user",payload:c?{reason:c}:null})}async function J(a,b,c){let d=(0,h._o)(b,a);if(!d||"failed"!==d.status)return;let e={...d,status:"queued",runSeq:d.runSeq+1,lastError:null,failureReason:null,userNote:c??d.userNote};p(e,"queued","user",{retry:!0,note:c??null}),u(b)}async function K(a,b,c){let d=(0,h._o)(b,a);if(!d||"canceled"!==d.status)return;let e={...d,status:"todo",lastError:null,failureReason:null,userNote:c??d.userNote};p(e,"requeued","user",{note:c??null}),u(b)}async function L(a,b,c){let d=(0,h._o)(b,a);if(!d||"review"!==d.status)return;let e={...d,status:"queued",runSeq:d.runSeq+1,preflight:null};p(e,"returned","user",{feedback:c}),(0,h.Q1)(b,{taskId:a,kind:"return_feedback",actor:"user",payload:{feedback:c}}),u(b)}async function M(a,b,c){let d=(0,h._o)(b,a);if(!d)return;let e={...d,archivedAt:c?o():null};p(e,c?"archived":"unarchived","user")}async function N(a,b){let c=(0,h.h6)(a),d=new Map(c.map(a=>[a.id,a])),e=[];b.forEach((a,b)=>{let c=d.get(a);c&&e.push({...c,sortOrder:b})});let f=new Set(b),g=b.length;for(let a of c)f.has(a.id)||e.push({...a,sortOrder:g++});for(let a of e)(0,h.fd)(a);e.length>0&&l({type:"upsert",id:e[0].id})}async function O(a,b,c){let d=(0,h._o)(b,a);if(d&&"review"===d.status){if(0!==d.filesChanged)throw Error("Task has changes to merge; use merge instead");if(t(a,d.runSeq,["review"],"done",{finishedAt:o()}),(0,h.Q1)(b,{taskId:a,kind:"completed",actor:"user",payload:{deleteWorktree:c}}),c)try{d.worktreePath&&await (0,g.IL)(b,d.worktreePath,!0).catch(()=>void 0),d.workBranch&&await C(b,`git branch -D ${JSON.stringify(d.workBranch)}`).catch(()=>void 0)}catch{}}}async function P(a,b,c,d){let e=(0,h._o)(b,a);if(!e||"review"!==e.status)return;let f=m(),g=f?.byTask.get(a),i={...e,status:"merging"};p(i,"merging","user",{message:c,deleteWorktree:d}),(0,h.Q1)(b,{taskId:a,kind:"merge_requested",actor:"user",payload:{message:c,deleteWorktree:d}});try{if(g){let a=`Merge your changes into the base branch (${e.baseBranch??"the current base"}).
|
|
17
|
+
Rules:
|
|
18
|
+
- Work ONLY in this worktree; run git merge/commit from this worktree directory.
|
|
19
|
+
- Do NOT commit unrelated changes that exist in other checkouts — commit only the files your task changed.
|
|
20
|
+
- Do NOT touch or push other branches.
|
|
21
|
+
`+(c?`Use this commit message: "${c}"
|
|
22
|
+
`:"Write a concise commit message yourself.\n")+(d?"After merging, the worktree may be cleaned up.":"Keep the worktree after merging.");await g.session.send({type:"prompt",message:a})}else await Q(b,e,c,d)}catch(e){let c=e instanceof Error?e.message:String(e),d=(0,h._o)(b,a);d&&"merging"===d.status&&(t(a,d.runSeq,["merging"],"review",{lastError:`Merge failed: ${c}`}),(0,h.Q1)(b,{taskId:a,kind:"merge_failed",actor:"engine",payload:{message:c}}))}}async function Q(a,b,c,d){if(!b.worktreePath||!b.workBranch)throw Error("No worktree to merge");if((await D(a,"git status --porcelain")).output.trim().length>0)throw Error("Main checkout has uncommitted changes; the agent-driven merge cannot run. Commit or stash them first.");let e=null!=c;if(await C(a,`git merge --${e?"squash":"no-ff"} ${b.workBranch}`),e){let d=c||`Merge task ${b.id}: ${b.title}`;await C(a,`git commit -m ${JSON.stringify(d)}`)}let f=await D(a,"git rev-parse --short HEAD");t(b.id,b.runSeq,["merging"],"done",{mergeCommit:f.output.trim(),finishedAt:o()}),(0,h.Q1)(a,{taskId:b.id,kind:"merged",actor:"engine",payload:{commit:f.output.trim()}}),d&&b.worktreePath&&await (0,g.IL)(a,b.worktreePath,!0).catch(()=>void 0),d&&b.workBranch&&await C(a,`git branch -D ${JSON.stringify(b.workBranch)}`).catch(()=>void 0)}d()}catch(a){d(a)}})}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=2834,exports.ids=[2834],exports.modules={12834:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{applyProxyEnv:()=>j,readProxyConfig:()=>i});var e=c(29021),f=c(33873),g=c(75430);c(12969);var h=a([g]);g=(h.then?(await h)():h)[0];let k=["http","https","socks5"];function i(){let a=function(){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{}}}().proxy,b={enabled:!1,protocol:"http",host:"127.0.0.1",port:7890,username:"",password:"",noProxy:"localhost,127.0.0.1,.local"};if(!a||"object"!=typeof a||Array.isArray(a))return b;let c=k.includes(a.protocol)?a.protocol:b.protocol,d=Number(a.port),h=Number.isInteger(d)&&d>=1&&d<=65535;return{enabled:"boolean"==typeof a.enabled?a.enabled:b.enabled,protocol:c,host:"string"==typeof a.host&&a.host.length>0?a.host:b.host,port:h?d:b.port,username:"string"==typeof a.username?a.username:"",password:"string"==typeof a.password?a.password:"",noProxy:"string"==typeof a.noProxy?a.noProxy:b.noProxy}}function j(a){let b=function(a){if(!a.enabled||!a.host||!a.port)return null;let b="";if(a.username){let c=encodeURIComponent(a.username);b=a.password?`${c}:${encodeURIComponent(a.password)}@`:`${c}@`}return`${a.protocol}://${b}${a.host}:${a.port}`}(a);b?(process.env.HTTP_PROXY=b,process.env.HTTPS_PROXY=b,process.env.NO_PROXY=a.noProxy||""):(delete process.env.HTTP_PROXY,delete process.env.HTTPS_PROXY,process.env.NO_PROXY="")}d()}catch(a){d(a)}})},12969:(a,b,c)=>{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}}}}};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";exports.id=4253,exports.ids=[4253],exports.modules={12144:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{OF:()=>t});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(57856),r=a([e,f,m,n,o]);[e,f,m,n,o]=r.then?(await r)():r;let u=["read","bash","edit","write","grep","find","ls"];class v extends e.Theme{constructor(){super({thinkingXhigh:""},{},"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 w=new v,x=new f.KeybindingsManager(f.TUI_KEYBINDINGS);function s(a,b){if(0===b.length)return[];let c=new Set(u),d=a.getAllTools().map(a=>a.name).filter(a=>!c.has(a));return[...new Set([...b,...d])]}class y{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.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}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)}start(){this.unsubscribe=this.inner.subscribe(a=>{"agent_end"===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),this.emit(a)}),this.resetIdleTimer()}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)}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.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.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.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)})},6e5)}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.inner.prompt(a.message,{...b?.length?{images:b}:{},...c?{streamingBehavior:c}:{},source:"rpc"}).then(()=>{this.promptRunning=!1,this.resetIdleTimer(),c||this.emit({type:"prompt_done"})}).catch(a=>{this.promptRunning=!1,this.resetIdleTimer(),(0,o.mD)(),this.emit({type:"prompt_error",errorMessage:a instanceof Error?a.message:String(a)}),c||this.emit({type:"prompt_done"})}),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,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;return this.hintQueueImages("steer",b),await this.inner.steer(a.message,b?.length?b:void 0),null}case"follow_up":{let b=a.images;return this.hintQueueImages("followUp",b),await this.inner.followUp(a.message,b?.length?b:void 0),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(s(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"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)()}}case"abort_bash":return this.inner.abortBash(),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.pendingUiResponses.values()))a.cancel();for(let a of Array.from(this.activeCustomUis.keys()))this.closeCustomUi(a,void 0);this.pendingUiResponses.clear(),this.pendingUiRequests.clear();try{this.inner.dispose()}finally{this.onDestroyCallback?.()}}}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 q.p1;let b=a.overlayOptions,c="function"==typeof b?b():b;if(!c||"object"!=typeof c)return q.p1;let d=c.width;return"number"==typeof d&&Number.isFinite(d)?Math.max(40,Math.min(140,Math.round(d))):q.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,q.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,w,x,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 w},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()}}}}async function t(a,b,c,d={}){let f,g,j,{toolNames:k,initialModel:q,thinkingLevel:r}=d,u=function(){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}(),v=(globalThis.__piStartLocks||(globalThis.__piStartLocks=new Map),globalThis.__piStartLocks),w=u.get(a);if(w?.isAlive())return{session:w,realSessionId:a};let x=v.get(a);if(x)return x;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)}),B=(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}:{}}),g=await (0,m.p)(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.I)(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}:{}});(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(s(t,k));let v=new y(t,z);k?.length===0&&v.setForceEmptySystemPrompt(!0),v.start(),v.loadQueueRecovery();let w=t.sessionId,x=t.sessionFile;return x&&(0,o.O8)(w,x),v.onDestroy(()=>u.delete(w)),u.set(w,v),v.beginExtensionBinding({forceEmptySystemPrompt:k?.length===0}),{session:v,realSessionId:w}})().finally(()=>{v.delete(a),A()});return v.set(a,B),B}d()}catch(a){d(a)}})},12969:(a,b,c)=>{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}}}},14253:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{ensureTaskEngine:()=>n});var e=c(29021),f=c(33873),g=c(79646),h=c(88002),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
|
+
`+(l?`Agent: ${l}
|
|
3
|
+
`:"")+`Complete the work described below.
|
|
4
|
+
|
|
5
|
+
`+`IMPORTANT RULES:
|
|
6
|
+
`+`- Work ONLY inside this worktree directory. Do not touch other checkouts.
|
|
7
|
+
`+`- Do NOT run "git add", "git commit", "git push" or "git merge" unless the task explicitly asks you to. Leave git alone.
|
|
8
|
+
`+`- Do NOT modify files outside this worktree.
|
|
9
|
+
`+`- When you are done, write a short "Result summary" paragraph describing what you changed.
|
|
10
|
+
|
|
11
|
+
`,r=(p=j.userNote?.trim())?`User note on this (re)start:
|
|
12
|
+
${p}
|
|
13
|
+
|
|
14
|
+
`:"",n+r+e+(f?`
|
|
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)=>{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)}})},17114:(a,b,c)=>{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)=>{c.d(b,{kc:()=>d});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}},32982:(a,b,c)=>{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})},54366:(a,b,c)=>{c.d(b,{os:()=>d});function d(){return{defaultAgentType:null,modeId:null,configValues:{},autoProcess:!0,maxConcurrent:1,mergeStrategy:"merge",deleteWorktreeDefault:!0,preflightCommand:null,initCommand:null,stagePrompts:null}}},57856:(a,b,c)=>{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})}},61577:(a,b,c)=>{c.d(b,{o:()=>d});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}}},65562:(a,b,c)=>{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)}})},69420:(a,b,c)=>{c.d(b,{A0:()=>d});function d(a){return/^[a-zA-Z]:[\\/]/.test(a)||a.startsWith("\\\\")?a.replace(/\\/g,"/"):a}},69453:(a,b,c)=>{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(88002);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)}})},80723:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{fr:()=>i});var e=c(29021),f=c(33873),g=c(75430);c(12969);var h=a([g]);function i(){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.then?(await h)():h)[0],d()}catch(a){d(a)}})},88002:(a,b,c)=>{c.d(b,{l:()=>m,P9:()=>l,IL:()=>n,KI:()=>j});var d=c(79646),e=c(29021),f=c(33873);let g=(0,c(28354).promisify)(d.execFile);function h(){globalThis.__piProjectCache?.clear()}async function i(a,b){let{stdout:c}=await g("git",["-C",a,...b],{timeout:1e4,maxBuffer:1048576,env:{...process.env,LC_ALL:"C"}});return c.trim()}async function j(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,g,h,j]=(await i(a,["rev-parse","--path-format=absolute","--git-common-dir","--git-dir","--show-toplevel","--abbrev-ref","HEAD"])).split("\n").map(a=>a.trim()),k=a;try{k=(0,e.realpathSync)(a)}catch{}let l=h===k,m=g!==d&&l;b={projectRoot:m?(0,f.dirname)(d):a,branch:j&&"HEAD"!==j?j:null,isWorktree:m,isTopLevel:l}}catch{b={projectRoot:a,branch:null,isWorktree:!1,isTopLevel:!1}}return c.set(a,{info:b,expiresAt:Date.now()+6e4}),b}async function k(a){let b=await i(a,["rev-parse","--path-format=absolute","--git-common-dir"]);return(0,f.dirname)(b)}async function l(a){let b=await i(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: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 m(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 k(a),j=`${(0,f.resolve)(g)}-worktrees`,l=(0,f.join)(j,d);if((0,e.existsSync)(l))throw Error(`Directory already exists: ${l}`);(0,e.mkdirSync)(j,{recursive:!0});let m=!1;try{await i(g,["rev-parse","--verify","--quiet",`refs/heads/${c}`]),m=!0}catch{m=!1}try{m?await i(g,["worktree","add","--",l,c]):await i(g,["worktree","add","-b",c,"--",l])}catch(a){throw Error(o(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)}(l),h(),{path:l,branch:c}}async function n(a,b,c=!1){let d=(await l(a)).find(a=>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 i(a,["worktree","remove",...c?["--force"]:[],b])}catch(a){throw Error(o(a))}h()}function o(a){let b=a.stderr;return"string"==typeof b&&b.trim()?b.trim():a instanceof Error?a.message:String(a)}},88250:(a,b,c)=>{c.d(b,{k:()=>d});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()}},96515:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{I:()=>k,p:()=>j});var e=c(75430),f=c(80723),g=c(32982),h=a([e,f]);function i(a,b){return a.provider===b.provider&&a.id===b.modelId}async function j(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 i=(b??[]).map(a=>a.trim()).filter(Boolean),k=[],l=[],m={},n=[];if(0===i.length)k=await a.getAvailable();else{let b=await (0,e.resolveModelScopeWithDiagnostics)(i,a);for(let c of(l=b.scopedModels,k=b.scopedModels.length>0?b.scopedModels.map(a=>a.model):await a.getAvailable(),n.push(...b.diagnostics.map(a=>a.message)),l))c.thinkingLevel&&(m[`${c.model.provider}/${c.model.id}`]=c.thinkingLevel)}return c.includeHidden||(k=k.filter(a=>!h.has(`${a.provider}/${a.id}`))),{visible:k,scopedModels:c.includeHidden||k.length===l.length?l:l.filter(a=>!h.has(`${a.model.provider}/${a.model.id}`)),thinkingLevelPins:m,warnings:n}}function k(a,b={}){let c=b.requestedModel?a.visible.find(a=>i(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=>i(a.model,{provider:c.provider,modelId:c.id})):void 0,e=!c&&b.defaultModel?a.scopedModels.find(a=>i(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=>i(a,b.defaultModel)),h=c??f?.model??g,j=d??f,l=b.thinkingLevel??j?.thinkingLevel;return{...h?{model:h}:{},...l?{thinkingLevel:l}:{},scopedModels:[...a.scopedModels]}}[e,f]=h.then?(await h)():h,d()}catch(a){d(a)}})}};
|