@qt4798/pi-web 0.18.10 → 0.18.11
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 +17 -18
- package/.next/build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.js +1 -1
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +0 -6
- package/.next/server/app/_global-error/page.js +1 -1
- 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/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
- package/.next/server/app/api/agent/[id]/events/route.js +2 -2
- package/.next/server/app/api/agent/[id]/lease/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/events/route.js +1 -1
- package/.next/server/app/api/agent/running/route.js +1 -1
- package/.next/server/app/api/app-update/route.js +1 -1
- package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/combined/route.js +1 -1
- package/.next/server/app/api/auth/login/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/providers/route.js +1 -1
- package/.next/server/app/api/backup/export/route.js +1 -1
- package/.next/server/app/api/backup/import/route.js +1 -1
- package/.next/server/app/api/cwd/browse/route.js +1 -1
- package/.next/server/app/api/cwd/validate/route.js +1 -1
- package/.next/server/app/api/default-cwd/route.js +1 -1
- package/.next/server/app/api/events/route.js +2 -2
- package/.next/server/app/api/features/route.js +1 -1
- package/.next/server/app/api/file-index/route.js +1 -1
- package/.next/server/app/api/files/[...path]/route.js +1 -1
- package/.next/server/app/api/git/diff/route.js +2 -2
- package/.next/server/app/api/git/push/route.js +1 -1
- package/.next/server/app/api/git/stash/route.js +1 -1
- package/.next/server/app/api/git/status/route.js +1 -1
- package/.next/server/app/api/home/route.js +1 -1
- package/.next/server/app/api/import/discover/route.js +1 -1
- package/.next/server/app/api/import/execute/route.js +1 -1
- package/.next/server/app/api/import/status/route.js +1 -1
- package/.next/server/app/api/logs/route.js +1 -1
- package/.next/server/app/api/mcp/restart/route.js +1 -1
- package/.next/server/app/api/mcp/route.js +2 -2
- package/.next/server/app/api/models/enabled/route.js +1 -1
- package/.next/server/app/api/models/refresh/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/modes/route.js +1 -1
- package/.next/server/app/api/plugins/check/route.js +1 -1
- package/.next/server/app/api/plugins/route.js +1 -1
- package/.next/server/app/api/project-aliases/route.js +1 -1
- package/.next/server/app/api/project-trust/route.js +1 -1
- package/.next/server/app/api/projects/visibility/route.js +1 -1
- package/.next/server/app/api/provider-usage/query/route.js +1 -1
- package/.next/server/app/api/proxy/route.js +1 -1
- package/.next/server/app/api/proxy/test/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/auto-name/route.js +2 -2
- package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/details/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]/entries/[entryId]/tool-result-image/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/sessions/search/route.js +1 -1
- package/.next/server/app/api/settings/title-model/route.js +1 -1
- package/.next/server/app/api/skills/check/route.js +1 -1
- package/.next/server/app/api/skills/install/route.js +1 -1
- package/.next/server/app/api/skills/route.js +1 -1
- package/.next/server/app/api/skills/search/route.js +1 -1
- package/.next/server/app/api/skills/update/route.js +1 -1
- package/.next/server/app/api/snippets/[id]/route.js +1 -1
- package/.next/server/app/api/snippets/route.js +1 -1
- package/.next/server/app/api/subagents/[id]/route.js +1 -1
- package/.next/server/app/api/subagents/profiles/route.js +1 -1
- package/.next/server/app/api/subagents/settings/route.js +1 -1
- package/.next/server/app/api/tasks/[id]/[action]/route.js +1 -1
- package/.next/server/app/api/tasks/[id]/changed-files/route.js +1 -1
- package/.next/server/app/api/tasks/[id]/diff/route.js +2 -2
- package/.next/server/app/api/tasks/[id]/events/route.js +1 -1
- package/.next/server/app/api/tasks/[id]/route.js +1 -1
- package/.next/server/app/api/tasks/batch/route.js +1 -1
- package/.next/server/app/api/tasks/events/route.js +2 -2
- package/.next/server/app/api/tasks/route.js +1 -1
- package/.next/server/app/api/tasks/settings/route.js +1 -1
- package/.next/server/app/api/tasks/templates/route.js +1 -1
- package/.next/server/app/api/terminal/[id]/events/route.js +2 -2
- package/.next/server/app/api/terminal/[id]/route.js +1 -1
- package/.next/server/app/api/terminal/route.js +1 -1
- package/.next/server/app/api/themes/[name]/route.js +1 -1
- package/.next/server/app/api/themes/route.js +1 -1
- package/.next/server/app/api/tools/extension-tools/route.js +1 -1
- package/.next/server/app/api/tools/settings/route.js +1 -1
- package/.next/server/app/api/usage/route.js +1 -1
- package/.next/server/app/api/vision-config/route.js +2 -2
- package/.next/server/app/api/web-auth/route.js +1 -1
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/icon.ico/route.js +1 -1
- package/.next/server/app/icon.png/route.js +1 -1
- package/.next/server/app/icon.svg/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +4 -4
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/index.segments/_full.segment.rsc +4 -4
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login/page.js +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +1 -1
- package/.next/server/app/login.rsc +3 -3
- package/.next/server/app/login.segments/_full.segment.rsc +3 -3
- package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/page.js +15 -15
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +17 -18
- package/.next/server/chunks/3379.js +1 -1
- package/.next/server/chunks/4253.js +3 -3
- package/.next/server/chunks/6429.js +3 -3
- package/.next/server/chunks/7915.js +1 -1
- package/.next/server/chunks/8152.js +1 -1
- package/.next/server/middleware-build-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/server/webpack-runtime.js +1 -1
- package/.next/static/chunks/2981-f36a0ad7528e24b1.js +1 -0
- package/.next/static/chunks/8272-a2dd6dc928b6876e.js +1 -0
- package/.next/static/chunks/app/_global-error/page-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/bash-output/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/events/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/lease/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/agent/new/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/agent/running/events/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/agent/running/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/app-update/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/auth/combined/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/auth/login/[provider]/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/auth/providers/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/backup/export/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/backup/import/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/cwd/browse/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/cwd/validate/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/default-cwd/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/events/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/features/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/file-index/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/files/[...path]/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/git/diff/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/git/push/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/git/stash/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/git/status/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/home/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/import/discover/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/import/execute/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/import/status/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/logs/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/mcp/restart/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/mcp/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/models/enabled/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/models/refresh/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/models/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/models-config/builtin/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/models-config/catalog/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/models-config/discover/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/models-config/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/models-config/test/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/modes/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/plugins/check/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/plugins/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/project-aliases/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/project-trust/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/projects/visibility/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/provider-usage/query/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/proxy/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/proxy/test/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/context/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/details/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/export/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/queue-recovery/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/state/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/sessions/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/sessions/search/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/settings/title-model/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/skills/check/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/skills/install/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/skills/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/skills/search/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/skills/update/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/snippets/[id]/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/snippets/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/subagents/[id]/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/subagents/profiles/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/subagents/settings/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/[action]/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/changed-files/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/diff/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/events/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/tasks/batch/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/tasks/events/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/tasks/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/tasks/settings/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/tasks/templates/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/terminal/[id]/events/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/terminal/[id]/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/terminal/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/themes/[name]/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/themes/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/tools/extension-tools/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/tools/settings/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/usage/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/vision-config/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/web-auth/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/app/{page-b5504be1d93b8430.js → page-34c582c8b53234cc.js} +11 -11
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-43ebd38332159d0f.js +1 -0
- package/.next/static/chunks/{webpack-e1f649c791588f74.js → webpack-8937e0633207540f.js} +1 -1
- package/.next/static/css/2d92ddfd19010e95.css +1 -0
- package/.next/static/vqJU0DdnD5Laxw6J_7xzv/_buildManifest.js +1 -0
- package/.next/trace +84 -83
- package/.next/trace-build +1 -1
- package/.next/types/routes.d.ts +1 -2
- package/.next/types/validator.ts +0 -9
- package/package.json +3 -1
- package/.next/server/app/api/project-state/route.js +0 -1
- package/.next/server/app/api/project-state/route.js.nft.json +0 -1
- package/.next/server/app/api/project-state/route_client-reference-manifest.js +0 -1
- package/.next/static/Bc4W8o_I-azZJvzY-9RoR/_buildManifest.js +0 -1
- package/.next/static/chunks/2981-20a2f99db34a0dc8.js +0 -1
- package/.next/static/chunks/7650-4f948821e59fd720.js +0 -1
- package/.next/static/chunks/app/_global-error/page-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/bash-output/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/events/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/lease/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/agent/new/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/agent/running/events/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/agent/running/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/app-update/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/auth/combined/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/auth/login/[provider]/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/auth/providers/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/backup/export/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/backup/import/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/cwd/browse/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/cwd/validate/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/default-cwd/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/events/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/features/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/file-index/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/files/[...path]/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/git/diff/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/git/push/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/git/stash/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/git/status/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/home/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/import/discover/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/import/execute/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/import/status/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/logs/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/mcp/restart/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/mcp/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/models/enabled/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/models/refresh/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/models/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/models-config/builtin/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/models-config/catalog/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/models-config/discover/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/models-config/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/models-config/test/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/modes/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/plugins/check/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/plugins/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/project-aliases/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/project-state/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/project-trust/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/projects/visibility/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/provider-usage/query/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/proxy/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/proxy/test/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/context/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/details/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/export/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/queue-recovery/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/state/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/sessions/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/sessions/search/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/settings/title-model/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/skills/check/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/skills/install/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/skills/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/skills/search/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/skills/update/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/snippets/[id]/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/snippets/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/subagents/[id]/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/subagents/profiles/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/subagents/settings/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/tasks/[id]/[action]/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/tasks/[id]/changed-files/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/tasks/[id]/diff/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/tasks/[id]/events/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/tasks/[id]/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/tasks/batch/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/tasks/events/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/tasks/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/tasks/settings/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/tasks/templates/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/terminal/[id]/events/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/terminal/[id]/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/terminal/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/themes/[name]/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/themes/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/tools/extension-tools/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/tools/settings/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/usage/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/vision-config/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/web-auth/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-df454574f4d3121d.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-df454574f4d3121d.js +0 -1
- package/.next/static/css/e11550eee90cf54b.css +0 -1
- package/.next/types/app/api/project-state/route.ts +0 -353
- /package/.next/static/{Bc4W8o_I-azZJvzY-9RoR → vqJU0DdnD5Laxw6J_7xzv}/_ssgManifest.js +0 -0
|
@@ -5,7 +5,7 @@ ${b}`:`Subagent ${a.sessionId} completed without text output.`}return"aborted"==
|
|
|
5
5
|
${k(a)}`}function m(a,b,c=()=>!0){return{name:o,hidden:!0,factory:d=>{let g;if(!c())return;let i=b().filter(a=>a.enabled),l=i.map(a=>a.name),m=l.length>0?l.join(", "):"none";d.registerTool((0,f.defineTool)({name:"Agent",label:"Agent",description:`Delegate a focused task to a configured subagent. Each subagent runs as a full, inspectable Pi session. Use background mode for independent work and foreground mode when the result is needed immediately.
|
|
6
6
|
|
|
7
7
|
Available agent types:
|
|
8
|
-
${(g=i.filter(a=>a.enabled),0===g.length?"No subagent profiles are currently enabled.":g.map(a=>{let b=[`Tools: ${a.tools.length>0?a.tools.join(", "):"none"}`];return a.model&&b.push(`Model: ${a.model}`),`- ${a.name}: ${a.description} (${b.join("; ")})`}).join("\n"))}`,promptSnippet:"Delegate a focused task to an inspectable subagent session",promptGuidelines:["Use Agent for a focused task that benefits from an isolated context.","Use multiple background Agent calls in the same response for independent parallel work.","Do not duplicate work already delegated to a running subagent."],executionMode:"parallel",parameters:e.Type.Object({subagent_type:e.Type.Optional(e.Type.String({description:`Configured agent profile. Available types: ${m}. Default: general-purpose.`})),prompt:e.Type.String({description:"The complete task for the subagent."}),resume:e.Type.Optional(e.Type.String({description:"Existing subagent session ID to continue instead of creating a new session."})),input_files:e.Type.Optional(e.Type.Array(e.Type.String(),{description:"UTF-8 text files under the session cwd to include with the task.",maxItems:h.Wv})),description:e.Type.String({description:"Short activity label shown in the UI."}),run_in_background:e.Type.Optional(e.Type.Boolean({description:"Return immediately and notify this session when complete."})),model:e.Type.Optional(e.Type.String({description:"Optional provider/modelId override."})),thinking:e.Type.Optional(e.Type.String({description:"Optional thinking level override."})),max_turns:e.Type.Optional(e.Type.Number({description:"Optional positive agent turn limit."})),inherit_context:e.Type.Optional(e.Type.Boolean({description:"Include the parent session's active conversation context."})),isolation:e.Type.Optional(e.Type.String({description:"Run the subagent in an isolated git worktree."}))}),async execute(b,c,d,e,f){try{let g=c.resume?.trim(),h=g?await a.resume({parentContext:f,parentToolCallId:b,sessionId:g,task:c.prompt,description:c.description,...void 0!==c.run_in_background?{runInBackground:c.run_in_background}:{},signal:d,onUpdate:a=>e?.({content:[{type:"text",text:`${a.profile}: ${a.description} (${a.status})`}],details:j(a)})}):await a.start({parentContext:f,parentToolCallId:b,profile:c.subagent_type??"general-purpose",task:c.prompt,...c.input_files?{inputFiles:c.input_files}:{},description:c.description,...void 0!==c.run_in_background?{runInBackground:c.run_in_background}:{},...c.model?{model:c.model}:{},...c.thinking?{thinking:c.thinking}:{},...c.max_turns?{maxTurns:c.max_turns}:{},...void 0!==c.inherit_context?{inheritContext:c.inherit_context}:{},..."worktree"===c.isolation?{isolation:"worktree"}:{},signal:d,onUpdate:a=>e?.({content:[{type:"text",text:`${a.profile}: ${a.description} (${a.status})`}],details:j(a)})});if(h.run.runInBackground)return h.completion.then(b=>a.notifyParent(b)).catch(a=>{console.error("[pi-web] failed to deliver subagent completion:",a instanceof Error?a.message:a)}),{content:[{type:"text",text:`Subagent started in background. Session ID: ${h.run.sessionId}. You will be notified when it completes.`}],details:j(h.run)};let i=await h.completion;return{content:[{type:"text",text:k(i)}],details:j(i),..."failed"===i.status?{isError:!0}:{}}}catch(a){return{content:[{type:"text",text:a instanceof Error?a.message:String(a)}],details:void 0,isError:!0}}}})),d.registerTool((0,f.defineTool)({name:"get_subagent_result",label:"Get agent result",description:"Check an inspectable subagent session and retrieve its latest result.",parameters:e.Type.Object({agent_id:e.Type.String({description:"Subagent session ID."}),wait:e.Type.Optional(e.Type.Boolean({description:"Wait until the subagent finishes."}))}),async execute(b,c,d){let e=await a.get(c.agent_id);if(!e)return{content:[{type:"text",text:`Subagent not found: ${c.agent_id}`}],details:void 0,isError:!0};for(;c.wait&&("starting"===e.status||"running"===e.status);)if(await new Promise((a,b)=>{let c=()=>{clearTimeout(e),b(Error("Result wait aborted"))},e=setTimeout(()=>{d?.removeEventListener("abort",c),a()},500);d?.aborted?c():d?.addEventListener("abort",c,{once:!0})}),!(e=await a.get(c.agent_id)))return{content:[{type:"text",text:`Subagent not found: ${c.agent_id}`}],details:void 0,isError:!0};return e.runInBackground&&s.has(e.status)&&a.markResultConsumed(e.sessionId),{content:[{type:"text",text:k(e)}],details:j(e),..."failed"===e.status?{isError:!0}:{}}}})),d.registerTool((0,f.defineTool)({name:"steer_subagent",label:"Steer agent",description:"Send a steering message to a currently running subagent session.",parameters:e.Type.Object({agent_id:e.Type.String({description:"Subagent session ID."}),message:e.Type.String({description:"Instruction to inject after the current tool execution."})}),async execute(b,c){try{return await a.steer(c.agent_id,c.message),{content:[{type:"text",text:`Steering message sent to ${c.agent_id}.`}],details:void 0}}catch(a){return{content:[{type:"text",text:a instanceof Error?a.message:String(a)}],details:void 0,isError:!0}}}}))}}}function n(a){let b=a.extensions.find(a=>a.path===p);if(!b?.tools.has("Agent"))return a;let c=new Set(a.extensions.filter(a=>a.path!==p).filter(a=>{let b=(a.sourceInfo?.source??"").replace(/^npm:/,"").split("@")[0],c=a.path.replaceAll("\\","/").split("/");return b===r||c.some(a=>a===r)}).filter(a=>[...q].some(b=>a.tools.has(b))).map(a=>a.path));return 0===c.size?a:{...a,extensions:a.extensions.filter(a=>!c.has(a.path)),errors:a.errors.filter(a=>!c.has(a.path)&&(a.path!==p||![...c].some(b=>[...q].some(c=>a.error===`Tool "${c}" conflicts with ${b}`))))}}d()}catch(a){d(a)}})},12144:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{OF:()=>R});var e=c(75430),f=c(29862),g=c(55511),h=c(29021),i=c(33873),j=c(18437),k=c(17114),l=c(65869),m=c(96515),n=c(15253),o=c(69453),p=c(8084),q=c(41035);c(54035);var r=c(12559),s=c(84851),t=c(70274),u=c(5564),v=c(27486),w=c(81186),x=c(61577),y=c(44290),z=c(30116),A=c(97563),B=c(32302),C=c(2692),D=c(57856),E=c(29040),F=c(91099),G=c(12394),H=a([e,f,m,n,o,p,q,s,t,u,v,w,y,E,G]);[e,f,m,n,o,p,q,s,t,u,v,w,y,E,G]=H.then?(await H)():H;let S=new Set(["agent_start","message_start","message_update","message_end","agent_end","entry_appended","session_info_changed","queue_update","prompt_done","agent_settled","auto_compaction_end","compaction_end"]),T=function(a=process.env.PI_WEB_IDLE_TIMEOUT_MS){let b=(a??"").trim();if(""===b)return 6e5;let c=Number(b);return!Number.isFinite(c)||c<0||!Number.isInteger(c)||c>0x7fffffff?(console.warn(`[pi-web] invalid PI_WEB_IDLE_TIMEOUT_MS "${a}", falling back to 600000ms`),6e5):c}(),U=new Set(["fork","clone"]),V=new Set(["get_state","abort","steer","follow_up_draft"]),W=["read","bash","powershell","edit","write","grep","find","ls"];class X extends e.Theme{constructor(){super({muted:"",text:"",thinkingXhigh:"",searchMatchText:""},{selectedBg:""},"truecolor")}fg(...[,a]){return a}bg(...[,a]){return a}bold(a){return a}italic(a){return a}underline(a){return a}inverse(a){return a}strikethrough(a){return a}getFgAnsi(){return""}getBgAnsi(){return""}getThinkingBorderColor(){return a=>a}getBashModeBorderColor(){return a=>a}}let Y=new X,Z=new f.KeybindingsManager(f.TUI_KEYBINDINGS);function I(a,b){if(0===b.length)return[];let c=new Set(W),d=(0,u.wQ)(b,a.settingsManager.getDefaultTools()),e=a.getAllTools().map(a=>a.name).filter(a=>!c.has(a));return(0,v.H4)([...new Set([...d,...e])],(0,v.t0)())}class ${constructor(a,b=""){this.inner=a,this.listeners=[],this.activeToolEvents=new Map,this.pendingUiResponses=new Map,this.pendingUiRequests=new Map,this.activeCustomUis=new Map,this.extensionUiAbortController=new AbortController,this.extensionStatuses=new Map,this.extensionWidgets=new Map,this.promptRunning=!1,this.promptPhase=null,this.extensionsBound=!1,this.extensionBindingPromise=null,this.extensionBindingError=null,this.forceEmptySystemPrompt=!1,this.exactSystemPrompt=null,this.pendingPromptCount=0,this.activeMutatingCommands=0,this.agentRunNeedsCompletion=!1,this.promptAdmissionTail=Promise.resolve(),this.sessionReplacement=null,this.forceShutdownOnIdle=!1,this.unsubscribe=null,this.idleTimer=null,this.subscriberCount=0,this.disposeGraceTimer=null,this.lastActivityAt=Date.now(),this.queueMirror=[],this.queueRecovery=[],this.persistenceRevoked=!1,this.queueBootstrap=null,this.pendingQueueHints={steer:[],followUp:[]},this.queueMutationTail=Promise.resolve(),this.onDestroyCallback=null,this.shutdownPromise=null,this.sessionShutdownEmitted=!1,this._alive=!0,this.approvalPolicy=(0,z.ni)((0,y.lN)().permissionRules),this.approvalMode=(0,y.lN)().toolApprovalMode,this.pendingApprovals=new Map,this.approvalSeq=0,this.approvalHookInstalled=!1,this.goalEngine=new F.aA,this.goalTokensAccounted=0,this.goalToolCallsAccounted=0,this.goalContinuationInFlight=!1,this.goalContinuationPending=!1,this.goalDriveScheduled=!1,this.wrapperChatOnly=!1,this.wrapperSuppressNotifications=!1,this.cwd="string"==typeof b?b:"";const c="string"==typeof b?{}:b;c.onAgentRunComplete&&(this.onAgentRunComplete=c.onAgentRunComplete),c.suppressCompletionNotifications&&this.setSuppressCompletionNotifications(!0),c.chatOnly&&this.setChatOnly(!0),c.exactSystemPrompt&&(this.exactSystemPrompt=c.exactSystemPrompt(),this.applyExactSystemPrompt());const d=(0,y.lN)(a.sessionId);if(this.approvalMode=d.toolApprovalMode,this.approvalPolicy=(0,z.ni)(d.permissionRules),a.sessionFile){const b=(0,F.bo)(a.sessionFile);"idle"!==b.status&&this.goalEngine.hydrate(b)}}get sessionId(){return this.inner.sessionId}get sessionFile(){return this.inner.sessionFile??""}isAlive(){return this._alive}evictIfDiskAhead(){if(!this.isAlive()||this.isRunning())return!1;let a=(0,o.H6)(this.sessionFile);return!(!a||this.inner.sessionManager.getEntry(a)||this.isRunning())&&(this.destroy(),(0,o.mD)(),!0)}async waitUntilReady(){}isShuttingDown(){return null!==this.shutdownPromise}whenShutdown(){return this.shutdownPromise}isRunning(){return this._alive&&(this.pendingPromptCount>0||this.inner.isStreaming||this.inner.isCompacting||this.inner.isBashRunning)}runtimeSnapshot(){let a=this.inner.isStreaming,b=this.promptRunning,c=this.inner.isCompacting,d=this.inner.isBashRunning;return{id:this.sessionId,running:this.isRunning(),isStreaming:a,isPromptRunning:b,isCompacting:c,isBashRunning:d,phase:d?"running_command":this.promptPhase??(a||b||c?"waiting_model":null)}}setChatOnly(a){this.wrapperChatOnly=a}setSuppressCompletionNotifications(a){this.wrapperSuppressNotifications=a}isChatOnly(){return this.wrapperChatOnly}hasSuppressedCompletionNotifications(){return this.wrapperSuppressNotifications}start(){this.installApprovalHook(),this.goalEngine.setOnChanged(a=>{this.sessionFile&&!this.persistenceRevoked&&(0,F.eG)(this.sessionFile,a),this.emit({type:"goal_state_changed",goalState:a}),P("goal_state_changed",this.sessionId,{type:"goal_state_changed",goalState:a})}),this.goalEngine.isRunning()&&(this.goalContinuationPending=!0,this.maybeDriveGoalContinuation()),this.unsubscribe=this.inner.subscribe(a=>{("agent_end"===a.type||"message_end"===a.type||"entry_appended"===a.type||"session_info_changed"===a.type)&&(0,o.mD)(),("agent_end"===a.type||"agent_settled"===a.type||"auto_compaction_end"===a.type||"compaction_end"===a.type)&&this.resetIdleTimer(),"agent_start"===a.type&&(this.goalEngine.onAgentStart(),this.agentRunNeedsCompletion=!0),"agent_settled"===a.type&&(this.handleGoalSettled(),this.notifyAgentRunCompleteIfIdle()),"queue_update"===a.type&&this.reconcileQueue(a.steering,a.followUp),S.has(a.type)&&P(a.type,this.sessionId,a);let b=a.toolCallId;"string"==typeof b&&("tool_execution_start"===a.type||"tool_execution_update"===a.type?this.activeToolEvents.set(b,a):"tool_execution_end"===a.type&&this.activeToolEvents.delete(b)),this.emit(a),N()}),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)}getGoalState(){return this.goalEngine.getState()}handleGoalSettled(){if(!this.goalEngine.isRunning()){this.goalEngine.disarmContinuation(),this.goalContinuationPending=!1;return}let a=this.inner.getLastAssistantText()??"",b=this.currentSessionUsageTotal(),c=Math.max(0,b-this.goalTokensAccounted);this.goalTokensAccounted=b;let d=this.currentSessionToolCallTotal(),e=Math.max(0,d-this.goalToolCallsAccounted);this.goalToolCallsAccounted=d;let{verdict:f}=this.goalEngine.settleTurn(a,c,e);if("continue"!==f.action){this.goalEngine.disarmContinuation(),this.goalContinuationPending=!1;return}this.goalContinuationPending=!0,this.maybeDriveGoalContinuation()}maybeDriveGoalContinuation(){if(this.goalContinuationPending&&!this.goalDriveScheduled){if(!this.goalEngine.isRunning()){this.goalContinuationPending=!1;return}this.goalDriveScheduled=!0,setTimeout(()=>{this.goalDriveScheduled=!1,this.tryDriveGoalContinuation()},0)}}cancelGoalContinuation(){this.goalContinuationPending=!1,this.goalEngine.disarmContinuation()}tryDriveGoalContinuation(){let a=K(this.sessionId);if(!this._alive||this.isShuttingDown()||a.deleted||a.barriers>0)return void this.cancelGoalContinuation();if(this.goalContinuationPending){if(!this.goalEngine.isRunning()){this.goalContinuationPending=!1;return}this.goalContinuationInFlight||this.promptRunning||this.inner.isStreaming||this.inner.isBashRunning||(this.goalContinuationPending=!1,this.driveGoalContinuation())}}driveGoalContinuation(){if(!this.goalEngine.isRunning()||this.goalContinuationInFlight)return;this.goalContinuationInFlight=!0,this.promptRunning=!0,this.promptPhase="waiting_model",this.resetIdleTimer(),N();let a=()=>{this.promptRunning=!1,this.promptPhase=null,this.resetIdleTimer(),N()};this.acquirePromptAdmission().then(async b=>{try{if(!this.goalEngine.isRunning())return void a();let b=this.goalEngine.getState().goalText;if(!this._alive||this.isShuttingDown()||!b)return void a();L(this.sessionId),await this.inner.prompt((0,F.bx)(b),{source:"rpc",preflightResult:a=>{if(a){if(!this._alive||this.isShuttingDown()||!this.goalEngine.isRunning())throw new DOMException("Goal continuation cancelled","AbortError");L(this.sessionId)}}}),a(),this.emit({type:"prompt_done"}),this.maybeDriveGoalContinuation()}catch(b){a(),this.emit({type:"prompt_error",errorMessage:b instanceof Error?b.message:String(b)})}finally{b(),this.goalContinuationInFlight=!1}})}handleGoalStartCommand(a,b){let c=this.goalEngine.start(a,b);return this.goalTokensAccounted=this.currentSessionUsageTotal(),this.goalToolCallsAccounted=this.currentSessionToolCallTotal(),c}handleGoalStopCommand(){return this.goalEngine.stop(),this.goalTokensAccounted=0,this.goalToolCallsAccounted=0,this.goalEngine.getState()}currentSessionUsageTotal(){try{return function(a){let b=0;for(let c of a){let a=c?.message;if(!a||"assistant"!==a.role)continue;let d=a.usage;d&&(b+=(d.input??0)+(d.output??0)+(d.cacheRead??0)+(d.cacheWrite??0))}return b}(this.inner.sessionManager.getEntries())}catch{return 0}}currentSessionToolCallTotal(){try{return function(a){let b=0;for(let c of a){let a=c?.message;if(!a||"assistant"!==a.role)continue;let d=a.content;if(Array.isArray(d))for(let a of d)a&&"object"==typeof a&&"toolCall"===a.type&&(b+=1)}return b}(this.inner.sessionManager.getEntries())}catch{return 0}}setApprovalMode(a){this.approvalMode=a}setApprovalPolicy(a){this.approvalPolicy=a}installApprovalHook(){if(this.approvalHookInstalled||!this.inner.agent?.beforeToolCall)return;this.approvalHookInstalled=!0;let a=this.inner.agent.beforeToolCall;this.inner.agent.beforeToolCall=async b=>{let c=b.toolCall?.name??"",d=b.args,e=(0,z.LD)(this.approvalPolicy,c,{mode:this.approvalMode,readOnly:A.MJ.has(c.toLowerCase()),args:d});if("deny"===e)return{block:!0,reason:`Denied by policy rule: ${c} is not permitted.`};if("ask"===e){let a=await this.askForApproval(c,d);if(!a.approve)return{block:!0,reason:a.reason||`Rejected by user: ${c}`}}return a?a(b):void 0}}askForApproval(a,b){return new Promise(c=>{let d=`approval-${++this.approvalSeq}`,e=setTimeout(()=>{this.pendingApprovals.delete(d),this.emit({type:"tool_approval_resolved",id:d,approve:!1,reason:`Approval request timed out after 120s: ${a}`}),c({approve:!1,reason:`Approval request timed out after 120s: ${a}`})},12e4);this.pendingApprovals.set(d,{resolve:c,timer:e,toolName:a}),this.emit({type:"tool_approval_request",id:d,toolName:a,args:function(a){if(null===a||"object"!=typeof a)return a;let b={};for(let[c,d]of Object.entries(a))if(null!=d&&"content"!==c&&"data"!==c&&"newString"!==c&&"oldString"!==c){if("string"==typeof d){b[c]=d.length>200?`${d.slice(0,200)}…`:d;continue}if("number"==typeof d||"boolean"==typeof d){b[c]=d;continue}b[c]=Array.isArray(d)?`[array:${d.length}]`:"[object]"}return b}(b)})})}resolveApproval(a,b,c){let d=this.pendingApprovals.get(a);return!!d&&(this.pendingApprovals.delete(a),clearTimeout(d.timer),d.resolve({approve:b,reason:c}),!0)}rejectAllApprovals(a){for(let[b,c]of this.pendingApprovals)this.pendingApprovals.delete(b),clearTimeout(c.timer),c.resolve({approve:!1,reason:a})}getPendingApprovals(){return Array.from(this.pendingApprovals.entries()).map(([a,b])=>({id:a,toolName:b.toolName}))}pendingRecoveryView(){return this.queueRecovery.map(({id:a,kind:b,text:c,images:d,queuedAt:e})=>({id:a,kind:b,text:c,hasImages:!!d?.length,queuedAt:e}))}persistQueue(){if(!this.sessionFile||this.persistenceRevoked)return;let a=[...this.queueRecovery,...this.queueBootstrap?.entries??[],...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()}validateImagesSupportedByCurrentModel(){let a=this.inner.model;return!a?.id||Array.isArray(a.input)&&a.input.includes("image")?null:`Model "${a.id}" does not accept image input. Switch to a model with image support.`}async requeueEntry(a){let b=(0,j.kc)(a.images);if(b)throw Error(b);if(a.images?.length){let a=this.validateImagesSupportedByCurrentModel();if(a)throw Error(a)}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{if(!this._alive||this.isShuttingDown())throw Error("Session is shutting down");return L(this.sessionId),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._alive||this.isShuttingDown()||this.queueBootstrap||this.isRunning()||this.promptRunning)return;let a=[...this.queueMirror];if(0===a.length)return;let b={entries:a,cancelled:!1};this.queueBootstrap=b,this.queueMirror=[],this.persistQueue(),this.inner.clearQueue(),this.pendingQueueHints={steer:[],followUp:[]},this.pendingPromptCount+=1,this.promptRunning=!0,this.promptPhase="waiting_model",N(),this.bootstrapQueuedRun(b)}cancelQueuedRun(){let a=this.queueBootstrap;a&&(a.cancelled=!0,this.queueRecovery.push(...a.entries),a.entries=[],this.persistQueue())}async bootstrapQueuedRun(a){try{for(let b of[...a.entries]){let c,d,e=await this.acquirePromptAdmission();try{let f,g;if(a.cancelled||!this._alive||this.isShuttingDown()||this.inner.isStreaming||this.inner.isCompacting||this.inner.isBashRunning)break;L(this.sessionId),this.extensionUiAbortController.signal.aborted&&(this.extensionUiAbortController=new AbortController);let h=!1,i=()=>{h=!0,e()},j=!1,k=this.inner.sessionManager,l=k.appendMessage,m=function(c){let d=l.call(this,c);return c===f&&(g=d),!j&&g&&k.isPersisted()&&k.flushed&&(j=!0,a.entries=a.entries.filter(a=>a.id!==b.id),n()),d},n=()=>{this.queueRecovery=this.queueRecovery.filter(a=>a.id!==b.id),this.persistQueue()};k.appendMessage=m,d=()=>{k.appendMessage===m&&(k.appendMessage=l)},c=this.inner.subscribe(b=>{"message_start"!==b.type&&"message_end"!==b.type||"user"!==b.message.role||f||!h&&a.cancelled||(f=b.message,i(),c?.(),c=void 0)}),await this.inner.prompt(b.text,{...b.images?.length?{images:b.images}:{},source:"rpc",preflightResult:b=>{if(b){if(a.cancelled||!this._alive||this.isShuttingDown())throw new DOMException("Queued run cancelled","AbortError");L(this.sessionId),this.applyExactSystemPrompt(),i()}}})}finally{c?.(),d?.(),e()}}}catch(b){!a.cancelled&&this._alive&&((0,o.mD)(),this.emit({type:"prompt_error",errorMessage:b instanceof Error?b.message:String(b)}))}finally{this.queueRecovery.push(...a.entries),a.entries=[],this.queueBootstrap===a&&(this.queueBootstrap=null),this.persistQueue(),this.pendingPromptCount=Math.max(0,this.pendingPromptCount-1),this.promptRunning=this.pendingPromptCount>0,this.promptRunning||(this.promptPhase=null),this.resetIdleTimer(),N(),this._alive&&this.emit({type:"prompt_done"})}}setForceEmptySystemPrompt(a){this.forceEmptySystemPrompt=a,this.applyForcedEmptySystemPrompt()}setExactSystemPrompt(a){this.exactSystemPrompt=a,this.applyExactSystemPrompt()}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.applyExactSystemPrompt(),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.applyExactSystemPrompt(),console.log(`[pi-web] session_start dispatched to extensions for session ${this.inner.sessionId}`)})().catch(a=>{throw this.extensionBindingError=a,a})),this.extensionBindingPromise)}static{this.EXTENSION_BIND_TIMEOUT_MS=15e3}async waitForExtensionsBound(){let a=this.extensionBindingPromise;if(a)try{let b=new Promise((b,c)=>{let d=setTimeout(()=>c(Error("Extension binding timed out; continuing without waiting")),$.EXTENSION_BIND_TIMEOUT_MS);a.finally(()=>clearTimeout(d))});await Promise.race([a,b])}catch{}this.extensionBindingError&&console.warn("[pi-web] extension binding failed, continuing:",this.extensionBindingError)}shouldWaitForExtensions(a){return"prompt"===a||"steer"===a||"follow_up"===a||"get_commands"===a||"get_state"===a}applyForcedEmptySystemPrompt(){}applyExactSystemPrompt(){}emit(a){for(let b of this.listeners)try{b(a)}catch(a){console.error(`[pi-web] session ${this.sessionId} event listener threw:`,a instanceof Error?a.message:a)}}setActiveToolSelection(a){this.inner.setActiveToolsByName(I(this.inner,a)),this.applyExactSystemPrompt()}async acquirePromptAdmission(){let a,b=this.promptAdmissionTail;return this.promptAdmissionTail=new Promise(b=>{a=b}),await b,a}notifyAgentRunCompleteIfIdle(){if(!(!this.agentRunNeedsCompletion||this.isRunning())&&(this.agentRunNeedsCompletion=!1,!this.wrapperSuppressNotifications))try{this.onAgentRunComplete?.(this.sessionId)}catch(a){console.error("[pi-web] completion listener failed:",a instanceof Error?a.message:a)}}resetIdleTimer(){this.idleTimer&&clearTimeout(this.idleTimer),this._alive&&0!==T&&(this.isRunning()||(this.forceShutdownOnIdle=!1),this.idleTimer=setTimeout(()=>{!this.forceShutdownOnIdle&&(this.isRunning()||(0,r.Vj)({sessionId:this.sessionId,sessionFile:this.sessionFile||void 0}))?this.resetIdleTimer():this.shutdown().catch(a=>{console.error("[pi-web] failed to shut down idle session:",a instanceof Error?a.message:a)})},T))}touch(){this.lastActivityAt=Date.now(),this.cancelPendingDispose()}hasSubscribers(){return this.subscriberCount>0}get activityTimestamp(){return this.lastActivityAt}cancelPendingDispose(){this.disposeGraceTimer&&(clearTimeout(this.disposeGraceTimer),this.disposeGraceTimer=null)}scheduleDisposeIfIdle(){this.cancelPendingDispose(),!(this.subscriberCount>0||this.isRunning())&&this._alive&&(this.disposeGraceTimer=setTimeout(()=>{this.disposeGraceTimer=null,!(this.subscriberCount>0||this.isRunning())&&this._alive&&this.shutdown().catch(a=>{console.error("[pi-web] failed to shut down unwatched session:",a instanceof Error?a.message:a)})},6e4))}persistSessionFileIfMissing(){if(this.persistenceRevoked||!this._alive)return;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";try{(0,h.writeFileSync)(b,d,{encoding:"utf8",flag:"wx"})}catch(c){if("EEXIST"===c.code||(0,h.existsSync)(b)){a.flushed=!0,(0,o.O8)(this.inner.sessionId,b);return}throw c}a.flushed=!0,(0,o.O8)(this.inner.sessionId,b)}onEvent(a){for(let b of(this.listeners.push(a),this.subscriberCount+=1,this.cancelPendingDispose(),this.pendingUiRequests.values()))a(b);for(let b of this.activeToolEvents.values())a(b);return()=>{queueMicrotask(()=>{let b=this.listeners.indexOf(a);-1!==b&&this.listeners.splice(b,1)}),this.subscriberCount>0&&(this.subscriberCount-=1),this.scheduleDisposeIfIdle()}}onDestroy(a){this.onDestroyCallback=a}async withSessionReplacement(a,b){if(this.sessionReplacement)throw Error("Session is already being copied");this.sessionReplacement=a;try{return await b()}finally{this._alive&&(this.sessionReplacement=null)}}isSessionRunningForReplacement(){return this.inner.isBashRunning||this.inner.isStreaming||this.inner.isCompacting||this.pendingPromptCount>0}async shutdownAfterSessionReplacement(a){try{await this.shutdown()}catch(b){console.error(`[pi-web] ${a} succeeded, but source session shutdown failed:`,b instanceof Error?b.message:b)}}async send(a){if(!this._alive)throw Error("Session is shutting down");L(this.sessionId),this.touch();let b=a.type;if(b.startsWith("get_")||"export_queue"===b||this.resetIdleTimer(),"prompt"===b||"steer"===b||"follow_up"===b||"requeue_at"===b){let b=(0,j.kc)(a.images);if(b)throw Error(b);if(Array.isArray(a.images)&&a.images.length>0){let a=this.validateImagesSupportedByCurrentModel();if(a)throw Error(a)}}let c=V.has(b);if(this.sessionReplacement&&!c)throw Error("Session is being copied to a new session");if(U.has(b)&&this.activeMutatingCommands>0)throw Error(`Cannot ${b} while another session command is running`);this.shouldWaitForExtensions(b)&&await this.waitForExtensionsBound();let d=!c;d&&(this.activeMutatingCommands+=1);try{if(!this._alive||this.isShuttingDown())throw Error("Session is shutting down");if(L(this.sessionId),this.sessionReplacement&&!c)throw Error("Session is being copied to a new session");if("prompt"===b||"steer"===b||"follow_up"===b){let b=(0,j.kc)(a.images);if(b)throw Error(b)}switch(b){case"prompt":{let b=await this.acquirePromptAdmission();try{let b,c,d;if(!this._alive||this.isShuttingDown())throw Error("Session is shutting down");if(L(this.sessionId),this.inner.isBashRunning)throw Error("Cannot send a prompt while a shell command is running");this.extensionUiAbortController.signal.aborted&&(this.extensionUiAbortController=new AbortController);let e=a.images,f=a.streamingBehavior;f&&this.inner.isStreaming&&this.hintQueueImages("followUp"===f?"followUp":"steer",e);let g=!1,h=!1,i=!1,j=new Promise((a,d)=>{b=()=>{g=!0,this.agentRunNeedsCompletion=!0,h||(h=!0,a())},c=a=>{h||(h=!0,d(a))}}),k=()=>{i||(i=!0,this.pendingPromptCount=Math.max(0,this.pendingPromptCount-1),this.resetIdleTimer(),this.notifyAgentRunCompleteIfIdle())};this.pendingPromptCount+=1,this.promptRunning=!0,this.promptPhase=String(a.message??"").trimStart().startsWith("/")?"running_command":"waiting_model",N();try{d=this.inner.prompt(a.message,{...e?.length?{images:e}:{},...f?{streamingBehavior:f}:{},source:"rpc",preflightResult:a=>{if(a){if(!this._alive||this.isShuttingDown())throw Error("Session is shutting down");L(this.sessionId),this.applyExactSystemPrompt(),b()}}})}catch(a){throw k(),a}return d.then(()=>{b(),k(),this.promptRunning=!1,this.promptPhase=null,f||this.emit({type:"prompt_done"}),N(),this.maybeDriveGoalContinuation()},a=>{c(a),k(),this.promptRunning=!1,this.promptPhase=null,(0,o.mD)(),g&&(this.emit({type:"prompt_error",errorMessage:a instanceof Error?a.message:String(a)}),f||this.emit({type:"prompt_done"})),N(),this.maybeDriveGoalContinuation()}).catch(a=>{console.error("[pi-web] prompt completion handler failed:",a instanceof Error?a.message:a)}),await j,null}finally{b()}}case"abort":this.cancelQueuedRun(),this.cancelGoalContinuation(),this.forceShutdownOnIdle=!0,this.extensionUiAbortController.abort(new DOMException("Extension UI cancelled by Stop","AbortError"));try{await this.inner.abort()}finally{this.resetIdleTimer(),this.isRunning()||(this.forceShutdownOnIdle=!1)}return 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.pendingPromptCount>0,isBashRunning:this.inner.isBashRunning,isCompacting:this.inner.isCompacting,phase:this.runtimeSnapshot().phase,model:a?{id:a.id,provider:a.provider}:void 0,messageCount:0,pendingMessageCount:this.inner.pendingMessageCount,queuedMessages:{steering:[...this.inner.getSteeringMessages()],followUp:[...this.inner.getFollowUpMessages()]},pendingRecovery:this.pendingRecoveryView(),contextUsage:b?{percent:b.percent,contextWindow:b.contextWindow,tokens:b.tokens}:null,systemPrompt:this.exactSystemPrompt??this.inner.agent.state?.systemPrompt??"",thinkingLevel:this.inner.agent.state?.thinkingLevel??"off",extensionStatuses:this.getExtensionStatuses(),extensionWidgets:this.getExtensionWidgets(),goalState:this.goalEngine.getState()}}case"goal_start":{let b=String(a.goalText??"").trim();if(!b)throw Error("goal_start requires a non-empty goalText");let c=a.tokenBudget,d="number"==typeof c&&Number.isFinite(c)&&c>0?Math.floor(c):null,e=this.handleGoalStartCommand(b,d);return this.goalContinuationPending=!0,this.maybeDriveGoalContinuation(),{goalState:e}}case"goal_pause":return this.cancelGoalContinuation(),{goalState:this.goalEngine.pause()};case"goal_resume":{let a=this.goalEngine.resume();return"running"===a.status&&(this.goalContinuationPending=!0,this.maybeDriveGoalContinuation()),{goalState:a}}case"goal_stop":return this.cancelGoalContinuation(),{goalState:this.handleGoalStopCommand()};case"goal_edit":{let b=String(a.goalText??"").trim();if(!b)throw Error("goal_edit requires a non-empty goalText");let c=this.goalEngine.edit(b);return"running"===c.status&&(this.goalContinuationPending=!0,this.maybeDriveGoalContinuation()),{goalState:c}}case"get_goal_state":return{goalState:this.goalEngine.getState()};case"set_model":{let{provider:b,modelId:c}=a,d=this.inner.modelRuntime.getModel(b,c);if(!d)try{await this.inner.modelRuntime.refresh({allowNetwork:!1}),d=this.inner.modelRuntime.getModel(b,c)}catch{d=void 0}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":if(this.isSessionRunningForReplacement())throw Error("Cannot fork while the session is running");return this.withSessionReplacement("fork",async()=>{let b,c,d=a.entryId,f=this.inner.sessionManager,g=this.inner.sessionFile;if(!f.isPersisted())return{cancelled:!0};if(!g)throw Error("Persisted session is missing a session file");let i=f.getEntry(d);if(!i)throw Error("Invalid entry ID for forking");let j=f.getSessionDir();if(i.parentId){let a=(c=e.SessionManager.open(g,j)).createBranchedSession(i.parentId);if(!a)throw Error("Failed to create forked session");b=a}else b=(c=e.SessionManager.create(f.getCwd(),j,{parentSession:g})).getSessionFile();if(!(0,h.existsSync)(b)){let a=c.getHeader();if(!a)throw Error("Forked session is missing a session header");let d=[a,...c.getEntries()].map(a=>JSON.stringify(a)).join("\n")+"\n";(0,h.writeFileSync)(b,d,{encoding:"utf8",flag:"wx"})}let k=c.getSessionId();return(0,o.O8)(k,b),(0,o.mD)(),await this.shutdownAfterSessionReplacement("fork"),{cancelled:!1,newSessionId:k}});case"fork_branch":{if(this.isSessionRunningForReplacement())throw Error("Cannot fork while the session is running");let b=a.entryId,c=this.inner.sessionManager,d=this.inner.sessionFile;if(!c.isPersisted())return{cancelled:!0};if(!d)throw Error("Persisted session is missing a session file");if(!c.getEntry(b))throw Error("Invalid entry ID for forking");let f=c.getSessionDir(),g=e.SessionManager.open(d,f).createBranchedSession(b);if(!g)throw Error("Failed to create forked session");let h=e.SessionManager.open(g,f).getSessionId();return(0,o.O8)(h,g),(0,o.mD)(),{cancelled:!1,newSessionId:h}}case"clone":{if(this.isSessionRunningForReplacement())throw Error("Cannot clone while the session is running");let b=this.inner.sessionManager,c=this.inner.sessionFile,d="string"==typeof a.leafId?a.leafId:b.getLeafId(),f=d&&b.getBranch(d).some(a=>"message"===a.type&&"assistant"===a.message.role);if(!b.isPersisted()||!d||!f||!c||!(0,h.existsSync)(c))return{cancelled:!0};return this.withSessionReplacement("clone",async()=>{let a=b.getSessionDir(),f=e.SessionManager.open(c,a).createBranchedSession(d);if(!f||!(0,h.existsSync)(f))throw Error("Failed to clone current session branch");let g=e.SessionManager.open(f,a).getSessionId();return(0,o.O8)(g,f),(0,o.mD)(),await this.shutdownAfterSessionReplacement("clone"),{cancelled:!1,newSessionId:g}})}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.withQueueMutation(async()=>(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":return this.withQueueMutation(async()=>{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":return this.withQueueMutation(async()=>{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":return this.withQueueMutation(async()=>{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":return this.withQueueMutation(async()=>{let b=a.images;this.hintQueueImages("steer",b),this.promptPhase="waiting_model",N();try{await this.inner.steer(a.message,b?.length?b:void 0)}finally{this.promptPhase=null,N()}return null});case"follow_up":return this.withQueueMutation(async()=>{let b=a.images;this.hintQueueImages("followUp",b),this.promptPhase="waiting_model",N();try{await this.inner.followUp(a.message,b?.length?b:void 0)}finally{this.promptPhase=null,N()}return null});case"get_tools":{let a=this.inner.getAllTools(),b=new Set(this.inner.getActiveToolNames());return a.map(a=>({...a,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.setActiveToolSelection(b),null}case"reload":{let a=this.inner.getActiveToolNames();return await this.waitForExtensionsBound(),this.extensionStatuses.clear(),this.extensionWidgets.clear(),this.syncProjectTrust(),await this.inner.reload(),this.inner.setActiveToolsByName(I(this.inner,a)),"function"!=typeof this.inner.bindExtensions&&this.inner.extensionRunner.setUIContext?.(this.createExtensionUiContext(),"rpc"),this.applyForcedEmptySystemPrompt(),{success:!0}}case"abort_compaction":return this.inner.abortCompaction(),null;case"resolve_approval":return{resolved:this.resolveApproval(a.id,!!a.approve,a.reason)};case"set_approval_mode":{let b=a.mode;if("ask"!==b&&"auto"!==b&&"yolo"!==b)throw Error(`Invalid approval mode: ${String(b)}`);return this.setApprovalMode(b),null}case"set_approval_policy":{let b=a.policy;return this.setApprovalPolicy((0,z.ni)(b)),null}case"get_approval_state":return{mode:this.approvalMode,pending:this.getPendingApprovals()};case"extension_ui_response":return this.resolveExtensionUiResponse(a),null;case"extension_ui_input":return this.handleExtensionUiInput(a.id,a.data),null;case"set_auto_retry":return this.inner.setAutoRetryEnabled?.(a.enabled),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.settingsManager?.getShellPath?.(),c=(0,w.J1)("string"==typeof b&&b?{shellPath:b}:{}),d=this.inner.executeBash(a.command,void 0,{excludeFromContext:a.excludeFromContext,operations:c});try{let a=await d;return this.persistSessionFileIfMissing(),a}finally{this.resetIdleTimer(),(0,o.mD)()}}case"abort_bash":return this.forceShutdownOnIdle=!0,this.inner.abortBash(),N(),null;default:throw Error(`Unsupported command: ${b}`)}}finally{d&&(this.activeMutatingCommands=Math.max(0,this.activeMutatingCommands-1))}}destroy(){if(!this._alive)return;for(let a of(this._alive=!1,this.cancelQueuedRun(),this.cancelGoalContinuation(),this.idleTimer&&clearTimeout(this.idleTimer),this.cancelPendingDispose(),this.inner.isBashRunning&&this.inner.abortBash(),this.unsubscribe?.(),this.emit({type:"session_shutdown"}),this.sessionFile&&!this.persistenceRevoked&&this.goalEngine.hasActiveGoal()&&(0,F.eG)(this.sessionFile,this.goalEngine.getState()),this.pendingUiResponses.values()))a.cancel();for(let a of Array.from(this.activeCustomUis.keys()))this.closeCustomUi(a,void 0);this.pendingUiResponses.clear(),this.pendingUiRequests.clear(),this.activeToolEvents.clear(),this.rejectAllApprovals("Session closed while approval was pending");let a=()=>{try{this.inner.dispose()}finally{try{this.onDestroyCallback?.()}finally{N()}}};if(this.sessionShutdownEmitted)return void a();this.sessionShutdownEmitted=!0;let b=this.inner.extensionRunner?.emit;"function"!=typeof b?a():Promise.resolve().then(()=>b.call(this.inner.extensionRunner,{type:"session_shutdown",reason:"quit"})).catch(a=>{console.error("[pi-web] session_shutdown before dispose failed:",a instanceof Error?a.message:a)}).finally(a)}revokePersistenceForDeletion(){this.persistenceRevoked=!0,J(this.inner.sessionManager),this.cancelQueuedRun(),this.cancelGoalContinuation()}async drainForSessionRewrite(){this.cancelQueuedRun(),this.cancelGoalContinuation(),this.extensionUiAbortController.abort(new DOMException("Session is being changed","AbortError")),await this.inner.abort()}async shutdown(){return this.shutdownPromise?this.shutdownPromise:this._alive?(this.cancelQueuedRun(),this.cancelGoalContinuation(),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)}this.sessionShutdownEmitted||(this.sessionShutdownEmitted=!0,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 D.p1;let b=a.overlayOptions,c="function"==typeof b?b():b;if(!c||"object"!=typeof c)return D.p1;let d=c.width;return"number"==typeof d&&Number.isFinite(d)?Math.max(40,Math.min(140,Math.round(d))):D.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=this.extensionUiAbortController.signal;if(c.aborted)return Promise.reject(c.reason);let d=(0,g.randomUUID)(),e=this.getCustomUiWidth(b);return new Promise((b,f)=>{let g=!1,h=(0,D.TQ)(()=>{let a=this.activeCustomUis.get(d);a&&this.emitCustomUiRender(d,a)},e),i=a=>{g||(g=!0,c.removeEventListener("abort",k),c.aborted?f(c.reason):b(a))},j=a=>{this.activeCustomUis.has(d)?this.closeCustomUi(d,a):i(a)},k=()=>j(void 0);c.addEventListener("abort",k,{once:!0}),Promise.resolve().then(()=>g?void 0:a(h,Y,Z,j)).then(a=>{if(g){try{a?.dispose?.()}catch{}return}if(!a||"object"!=typeof a||"function"!=typeof a.render)return void i(void 0);let b={component:a,width:e,resolve:a=>i(a),settled:!1};this.activeCustomUis.set(d,b),this.emitCustomUiRender(d,b)}).catch(a=>{g||(this.emit({type:"extension_error",extensionPath:`custom-ui:${d}`,event:"custom_ui",error:a instanceof Error?a.message:String(a)}),i(void 0))})})}requestExtensionUi(a,b,c,d,e){if(e?.aborted)return Promise.resolve(b);let f=this.extensionUiAbortController.signal;if(f.aborted)return Promise.reject(f.reason);let h=e?AbortSignal.any([e,f]):f,i=(0,g.randomUUID)(),j={type:"extension_ui_request",id:i,...a,...d?{timeout:d,expiresAt:Date.now()+d}:{}};return new Promise((a,e)=>{let g,k=!1,l=()=>{g&&clearTimeout(g),h.removeEventListener("abort",n),this.pendingUiRequests.delete(i),this.pendingUiResponses.delete(i),this.emit({type:"extension_ui_closed",id:i})},m=b=>{k||(k=!0,l(),f.aborted?e(f.reason):a(b))},n=()=>m(b);d&&(g=setTimeout(()=>m(b),d)),h.addEventListener("abort",n,{once:!0}),this.pendingUiRequests.set(i,j),this.pendingUiResponses.set(i,{resolve:a=>m(c(a)),cancel:()=>m(b)}),this.emit(j)})}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 Y},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.applyExactSystemPrompt()}}}}function J(a){a&&(a.persist=!1)}function K(a){globalThis.__piSessionLifecycles??=new Map;let b=globalThis.__piSessionLifecycles.get(a);return b||(b={generation:0,barriers:0,deleted:!1,starts:new Set},globalThis.__piSessionLifecycles.set(a,b)),b}function L(a,b){let c=K(a);if(c.deleted||c.barriers>0||void 0!==b&&c.generation!==b)throw Error("Session was deleted or is being changed; retry after the operation finishes")}function M(){if(!globalThis.__piSessions){globalThis.__piSessions=new Map;let a=()=>Promise.allSettled(Array.from(globalThis.__piSessions?.values()??[],a=>a.shutdown()));process.once("exit",()=>globalThis.__piSessions?.forEach(a=>a.destroy())),process.once("SIGINT",()=>{a().finally(()=>process.exit(130))}),process.once("SIGTERM",()=>{a().finally(()=>process.exit(143))})}return globalThis.__piSessions}let _="";function N(){let a=globalThis.__piRunningListeners;if(!a||0===a.size){_="";return}let b=function(){let a=[];for(let[b,c]of M()){if(!c.isAlive())continue;let d=c.runtimeSnapshot();d.running&&a.push({...d,id:d.id||b})}return a}(),c=JSON.stringify(b);if(c!==_)for(let d of(_=c,a))try{d(b)}catch{}}let aa=(0,s.s)({getSession:a=>M().get(a),registerSession:(a,b)=>{let c,d,e;c=new $(a,a.sessionManager.getCwd()),b?.chatOnly?c.setForceEmptySystemPrompt(!0):b?.exactSystemPrompt&&c.setExactSystemPrompt(b.exactSystemPrompt),c.setChatOnly(!!b?.chatOnly),c.setSuppressCompletionNotifications(!0),c.start(),d=a.sessionId,e=M(),c.onDestroy(()=>e.delete(d)),e.set(d,c)},reopenSession:async(a,b)=>(await R(a,b,void 0)).session,resolveSessionPath:o.os,invalidateSessionList:o.mD,notifyRunningChange:N,isBuiltInSubagentsEnabled:t.N});!function(){try{let a=(0,t.M6)();if((0,h.existsSync)(a))return;(0,h.mkdirSync)(a.slice(0,a.lastIndexOf("/")),{recursive:!0}),(0,h.writeFileSync)(a,JSON.stringify({builtInEnabled:!0},null,2)+"\n")}catch(a){console.warn("[pi-web] failed to seed agents/settings.json:",a instanceof Error?a.message:a)}}();let ab=new Map;function O(a){let b=globalThis.__piSessionBusListeners;if(b&&0!==b.size)for(let c of b)try{c(a)}catch{}}function P(a,b,c){let d=globalThis.__piSessionBusListeners;if(!d||0===d.size)return;if("message_update"!==a)return void O({type:a,sessionId:b,payload:c});let e=ab.get(b),f={type:a,sessionId:b,payload:c};e?(clearTimeout(e.timer),e.event=f):ab.set(b,{event:f,timer:setTimeout(()=>{let a=ab.get(b);a&&(ab.delete(b),O(a.event))},80)})}function Q(a,b){let c=Date.now(),{provider:d,modelId:e,sessionId:f}=b,g=a.result.bind(a);a.result=async()=>{let a,b,h,i,j,k=await g();return a=Date.now()-c,b="error"===k.stopReason||"aborted"===k.stopReason,h=k.errorMessage?.trim(),j=(i=h?.match(/\bHTTP\s+(\d{3})\b|\bstatus(?:\s+code)?\s*[:=]?\s*(\d{3})\b/))?Number(i[1]??i[2]):void 0,(0,E.wF)({level:b?"error":"info",source:"model-call",provider:d,model:e,sessionId:f,...void 0!==j?{statusCode:j}:{},message:b?`模型调用失败 ${d}/${e}${h?`:${h}`:""}`:`模型调用成功 ${d}/${e}`,details:b?void 0:`耗时 ${a}ms`}),k};let h=a[Symbol.asyncIterator].bind(a);return a[Symbol.asyncIterator]=()=>{let a=h();return{next:()=>a.next().catch(a=>{throw(0,E.wF)({level:"error",source:"model-call",provider:d,model:e,sessionId:f,message:`模型调用传输错误 ${d}/${e}:${a instanceof Error?a.message:String(a)}`}),a})}},a}async function R(a,b,d,f={}){let g,j,k,r,s,u,v,w,y,z,{toolNames:A,initialModel:D,thinkingLevel:E,allowInitialModelFallback:F}=f,H=M(),N=(globalThis.__piStartLocks||(globalThis.__piStartLocks=new Map),globalThis.__piStartLocks),O=K(a),P=O.generation;L(a,P);let S=H.get(a);if(S?.isAlive()&&!S.isShuttingDown())return{session:S,realSessionId:a,created:!1};if(S){let a=S.whenShutdown();if(a){let b;try{await Promise.race([a,new Promise(a=>{b=setTimeout(a,1e4)})])}finally{clearTimeout(b)}}}L(a,P);let T=N.get(a);if(T)return T;if(b){if(!(0,h.existsSync)(b))throw Error("Session not found");if((g=e.SessionManager.open(b,void 0)).getSessionId()!==a)throw Error("Session identity changed")}else{if(!d)throw Error("cwd is required for a new session");g=e.SessionManager.create(d,void 0)}let U=g.getSessionId(),V=K(U),W=V.generation;L(U,W);let X=g.getCwd(),Y=b?(0,q.ph)(g.getEntries()):null,Z=(globalThis.__piStartingSessionCwds||(globalThis.__piStartingSessionCwds=new Map),y=globalThis.__piStartingSessionCwds,z=function(a){let b=(0,i.resolve)(a);try{return(0,h.realpathSync)(b)}catch{return b}}(X),y.set(z,(y.get(z)??0)+1),()=>{let a=(y.get(z)??1)-1;a>0?y.set(z,a):y.delete(z)}),_=new AbortController,ab=setTimeout(()=>_.abort(),25e3),ac=!1,ad=!1,ae=()=>{if(r&&!ad){ad=!0;try{r.cleanup()}catch{}}},af=()=>{J(g);let a=s;if(a&&v!==a)if(v=a,u)u.destroy();else try{a.dispose()}catch{}ae()},ag=new Promise((a,b)=>{w=b}),ah={settled:Promise.resolve(),cancel:a=>{k||(k=a,_.abort(a),af(),w(a))}};O.starts.add(ah),V.starts.add(ah);let ai=()=>{if(k)throw k;L(a,P),L(U,W)},aj=(async()=>{let b=Y?.tools??A??[],d=0===b.length;d||(0,e.initTheme)();let f=(0,e.getAgentDir)(),h=Y?.tools;Y||void 0===A||(h=0===b.length?[]:void 0);let i=!!(Y?.loadExtensions||Y?.loadSkills),v=Y?i?(0,n.Fk)(X,f):void 0:(0,n.Fk)(X,f),w={},y=(0,C.Q)(()=>w.current?.()),z=d||Y?.exactSystemPrompt!==void 0,J=await (0,e.createAgentSessionServices)({cwd:X,agentDir:f,modelRuntimeSignal:_.signal,resourceLoaderOptions:Y?{noExtensions:!0,noSkills:!0,noPromptTemplates:!0,noThemes:!0,noContextFiles:!0,appendSystemPrompt:Y.appendSystemPrompt,...z?{extensionFactories:[y]}:{}}:d?{...B.M,extensionFactories:[y]}:{extensionFactories:[(0,p.Vj)(aa.extensionRuntime,()=>(0,q.IR)(X),t.N)],extensionsOverride:a=>(0,p.U6)(a)},...v?{resourceLoaderReloadOptions:v}:{}});ai();let{createAsyncBashTools:K}=await Promise.resolve().then(c.bind(c,12394));ai(),r=new G.B;let L=K(r),N=await (0,m.py)(J.modelRuntime,J.settingsManager.getEnabledModels(),{signal:_.signal});ai();let O=D&&(!F||N.visible.some(a=>a.provider===D.provider&&a.id===D.modelId))?D:void 0,P=J.settingsManager.getDefaultProvider(),R=J.settingsManager.getDefaultModel(),S=g.getBranch(),T=S.some(a=>"message"===a.type&&"system"!==a.message.role),U=T?(0,o.Vg)(S):null,V=U?J.modelRuntime.getModel(U.provider,U.modelId):void 0,W=T?null:(0,m.IR)(N,{...O?{requestedModel:O}:{},...P&&R?{defaultModel:{provider:P,modelId:R}}:{},...E?{thinkingLevel:E}:{}}),Z=V&&J.modelRuntime.hasConfiguredAuth(V.provider)?V:W?.model;ai();let ab=(0,e.createAgentSessionFromServices)({services:J,sessionManager:g,...Z?{model:Z}:{},...W?.thinkingLevel?{thinkingLevel:W.thinkingLevel}:{},...N.scopedModels.length>0?{scopedModels:[...N.scopedModels]}:{},...void 0!==h?{tools:h}:{},customTools:L});ab.then(({session:a})=>{s=a,k&&af()},()=>{}),j=setTimeout(()=>{ah.cancel(Error("Session startup timed out while binding extensions/resources (40s)"))},4e4);let{session:ac}=await Promise.race([ab,ag]);clearTimeout(j),ai();try{let b=ac.agent,c=b.streamFunction;b.streamFunction=(b,d,e)=>{let f=c(b,d,e);return f instanceof Promise?f.then(c=>Q(c,{provider:b.provider,modelId:b.id,sessionId:a})):Q(f,{provider:b.provider,modelId:b.id,sessionId:a})},ai();let e=await (0,x.o)(J.settingsManager,{...D?{model:D}:{},...E?{thinkingLevel:E}:{}},{...ac.model?{model:{provider:ac.model.provider,modelId:ac.model.id}}:{},thinkingLevel:ac.agent.state?.thinkingLevel??"off",supportsThinking:ac.supportsThinking()});ai(),e.modelDefaultChanged&&(0,l.k)(),!Y&&A&&A.length>0&&ac.setActiveToolsByName(I(ac,A)),ai();let f=new $(ac,X);u=f,f.setChatOnly(d),f.setSuppressCompletionNotifications(void 0!==Y),A?.length===0||Y?.tools.length===0?f.setForceEmptySystemPrompt(!0):Y&&Y.appendSystemPrompt.length>0&&f.setExactSystemPrompt(Y.appendSystemPrompt[0]);let g=Y?.exactSystemPrompt!==void 0?Y.exactSystemPrompt:d?Y?Y.appendSystemPrompt[0]??"":(0,B.c)(ac.resourceLoader.getAgentsFiles().agentsFiles):null;w.current=null===g?void 0:()=>g,null!==g&&f.setExactSystemPrompt(g),f.start(),f.loadQueueRecovery();let h=ac.sessionId,i=ac.sessionFile;return i&&(0,o.O8)(h,i),f.persistSessionFileIfMissing(),f.onDestroy(()=>{ae(),H.get(h)===f&&H.delete(h)}),H.set(h,f),f.beginExtensionBinding({forceEmptySystemPrompt:A?.length===0}),!function(){let a=M();if(a.size<=12)return;let b=Array.from(a.entries()).filter(([,a])=>a.isAlive()&&!a.isRunning()&&!a.hasSubscribers()).sort((a,b)=>a[1].activityTimestamp-b[1].activityTimestamp),c=a.size-12;for(let[d,e]of b){if(c<=0)break;a.has(d)&&(console.log(`[pi-web] evicting idle unwatched session ${d} (registry cap 12)`),e.shutdown().catch(a=>{console.error(`[pi-web] failed to evict session ${d}:`,a instanceof Error?a.message:a)}),c-=1)}}(),{session:f,realSessionId:h,created:!0}}catch(a){throw af(),a}})().catch(a=>{throw af(),a}),ak=setTimeout(()=>{ah.cancel(Error("Session startup timed out after 60s (extension/resource binding may be hung); the start lock was released — retry the request to start over."))},6e4),al=Promise.race([aj,ag]).finally(()=>{N.get(a)===al&&N.delete(a),ac||(ac=!0,clearTimeout(ab),clearTimeout(ak),clearTimeout(j),O.starts.delete(ah),V.starts.delete(ah),Z())});return ah.settled=al,N.set(a,al),al}d()}catch(a){d(a)}})},12394:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{B:()=>p,createAsyncBashTools:()=>n});var e=c(31421),f=c(81186),g=c(75430),h=c(98052),i=a([f,g]);[f,g]=i.then?(await i)():i;class o{append(a){for(this.totalBytes+=a.length,this.tail.push(a),this.tailBytes+=a.length;this.tailBytes>258048&&this.tail.length>1;){let a=this.tail.shift();this.tailBytes-=a.length}if(this.headBytes<4096){let b=4096-this.headBytes;a.length<=b?(this.head.push(a),this.headBytes+=a.length):(this.head.push(a.subarray(0,b)),this.headBytes=4096)}}get hasOmission(){return this.totalBytes>this.headBytes+this.tailBytes}get omittedBytes(){return Math.max(0,this.totalBytes-this.headBytes-this.tailBytes)}toSnapshot(){if(!this.hasOmission)return Buffer.concat(this.tail).toString("utf-8");let a=[...this.head];return a.push(Buffer.from(`
|
|
8
|
+
${(g=i.filter(a=>a.enabled),0===g.length?"No subagent profiles are currently enabled.":g.map(a=>{let b=[`Tools: ${a.tools.length>0?a.tools.join(", "):"none"}`];return a.model&&b.push(`Model: ${a.model}`),`- ${a.name}: ${a.description} (${b.join("; ")})`}).join("\n"))}`,promptSnippet:"Delegate a focused task to an inspectable subagent session",promptGuidelines:["Use Agent for a focused task that benefits from an isolated context.","Use multiple background Agent calls in the same response for independent parallel work.","Do not duplicate work already delegated to a running subagent."],executionMode:"parallel",parameters:e.Type.Object({subagent_type:e.Type.Optional(e.Type.String({description:`Configured agent profile. Available types: ${m}. Default: general-purpose.`})),prompt:e.Type.String({description:"The complete task for the subagent."}),resume:e.Type.Optional(e.Type.String({description:"Existing subagent session ID to continue instead of creating a new session."})),input_files:e.Type.Optional(e.Type.Array(e.Type.String(),{description:"UTF-8 text files under the session cwd to include with the task.",maxItems:h.Wv})),description:e.Type.String({description:"Short activity label shown in the UI."}),run_in_background:e.Type.Optional(e.Type.Boolean({description:"Return immediately and notify this session when complete."})),model:e.Type.Optional(e.Type.String({description:"Optional provider/modelId override."})),thinking:e.Type.Optional(e.Type.String({description:"Optional thinking level override."})),max_turns:e.Type.Optional(e.Type.Number({description:"Optional positive agent turn limit."})),inherit_context:e.Type.Optional(e.Type.Boolean({description:"Include the parent session's active conversation context."})),isolation:e.Type.Optional(e.Type.String({description:"Run the subagent in an isolated git worktree."}))}),async execute(b,c,d,e,f){try{let g=c.resume?.trim(),h=g?await a.resume({parentContext:f,parentToolCallId:b,sessionId:g,task:c.prompt,description:c.description,...void 0!==c.run_in_background?{runInBackground:c.run_in_background}:{},signal:d,onUpdate:a=>e?.({content:[{type:"text",text:`${a.profile}: ${a.description} (${a.status})`}],details:j(a)})}):await a.start({parentContext:f,parentToolCallId:b,profile:c.subagent_type??"general-purpose",task:c.prompt,...c.input_files?{inputFiles:c.input_files}:{},description:c.description,...void 0!==c.run_in_background?{runInBackground:c.run_in_background}:{},...c.model?{model:c.model}:{},...c.thinking?{thinking:c.thinking}:{},...c.max_turns?{maxTurns:c.max_turns}:{},...void 0!==c.inherit_context?{inheritContext:c.inherit_context}:{},..."worktree"===c.isolation?{isolation:"worktree"}:{},signal:d,onUpdate:a=>e?.({content:[{type:"text",text:`${a.profile}: ${a.description} (${a.status})`}],details:j(a)})});if(h.run.runInBackground)return h.completion.then(b=>a.notifyParent(b)).catch(a=>{console.error("[pi-web] failed to deliver subagent completion:",a instanceof Error?a.message:a)}),{content:[{type:"text",text:`Subagent started in background. Session ID: ${h.run.sessionId}. You will be notified when it completes.`}],details:j(h.run)};let i=await h.completion;return{content:[{type:"text",text:k(i)}],details:j(i),..."failed"===i.status?{isError:!0}:{}}}catch(a){return{content:[{type:"text",text:a instanceof Error?a.message:String(a)}],details:void 0,isError:!0}}}})),d.registerTool((0,f.defineTool)({name:"get_subagent_result",label:"Get agent result",description:"Check an inspectable subagent session and retrieve its latest result.",parameters:e.Type.Object({agent_id:e.Type.String({description:"Subagent session ID."}),wait:e.Type.Optional(e.Type.Boolean({description:"Wait until the subagent finishes."}))}),async execute(b,c,d){let e=await a.get(c.agent_id);if(!e)return{content:[{type:"text",text:`Subagent not found: ${c.agent_id}`}],details:void 0,isError:!0};for(;c.wait&&("starting"===e.status||"running"===e.status);)if(await new Promise((a,b)=>{let c=()=>{clearTimeout(e),b(Error("Result wait aborted"))},e=setTimeout(()=>{d?.removeEventListener("abort",c),a()},500);d?.aborted?c():d?.addEventListener("abort",c,{once:!0})}),!(e=await a.get(c.agent_id)))return{content:[{type:"text",text:`Subagent not found: ${c.agent_id}`}],details:void 0,isError:!0};return e.runInBackground&&s.has(e.status)&&a.markResultConsumed(e.sessionId),{content:[{type:"text",text:k(e)}],details:j(e),..."failed"===e.status?{isError:!0}:{}}}})),d.registerTool((0,f.defineTool)({name:"steer_subagent",label:"Steer agent",description:"Send a steering message to a currently running subagent session.",parameters:e.Type.Object({agent_id:e.Type.String({description:"Subagent session ID."}),message:e.Type.String({description:"Instruction to inject after the current tool execution."})}),async execute(b,c){try{return await a.steer(c.agent_id,c.message),{content:[{type:"text",text:`Steering message sent to ${c.agent_id}.`}],details:void 0}}catch(a){return{content:[{type:"text",text:a instanceof Error?a.message:String(a)}],details:void 0,isError:!0}}}}))}}}function n(a){let b=a.extensions.find(a=>a.path===p);if(!b?.tools.has("Agent"))return a;let c=new Set(a.extensions.filter(a=>a.path!==p).filter(a=>{let b=(a.sourceInfo?.source??"").replace(/^npm:/,"").split("@")[0],c=a.path.replaceAll("\\","/").split("/");return b===r||c.some(a=>a===r)}).filter(a=>[...q].some(b=>a.tools.has(b))).map(a=>a.path));return 0===c.size?a:{...a,extensions:a.extensions.filter(a=>!c.has(a.path)),errors:a.errors.filter(a=>!c.has(a.path)&&(a.path!==p||![...c].some(b=>[...q].some(c=>a.error===`Tool "${c}" conflicts with ${b}`))))}}d()}catch(a){d(a)}})},12144:(a,b,c)=>{"use strict";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(65869),m=c(96515),n=c(15253),o=c(69453),p=c(8084),q=c(41035),r=c(54035),s=c(88573),t=c(12559),u=c(84851),v=c(70274),w=c(5564),x=c(27486),y=c(81186),z=c(61577),A=c(44290),B=c(30116),C=c(97563),D=c(32302),E=c(2692),F=c(57856),G=c(29040),H=c(91099),I=c(12394),J=a([e,f,m,n,o,p,q,u,v,w,x,y,A,G,I]);[e,f,m,n,o,p,q,u,v,w,x,y,A,G,I]=J.then?(await J)():J;let U=new Set(["agent_start","message_start","message_update","message_end","agent_end","entry_appended","session_info_changed","queue_update","prompt_done","agent_settled","auto_compaction_end","compaction_end"]),V=function(a=process.env.PI_WEB_IDLE_TIMEOUT_MS){let b=(a??"").trim();if(""===b)return 6e5;let c=Number(b);return!Number.isFinite(c)||c<0||!Number.isInteger(c)||c>0x7fffffff?(console.warn(`[pi-web] invalid PI_WEB_IDLE_TIMEOUT_MS "${a}", falling back to 600000ms`),6e5):c}(),W=new Set(["fork","clone"]),X=new Set(["get_state","abort","steer","follow_up_draft"]),Y=["read","bash","powershell","edit","write","grep","find","ls"];class Z extends e.Theme{constructor(){super({muted:"",text:"",thinkingXhigh:"",searchMatchText:""},{selectedBg:""},"truecolor")}fg(...[,a]){return a}bg(...[,a]){return a}bold(a){return a}italic(a){return a}underline(a){return a}inverse(a){return a}strikethrough(a){return a}getFgAnsi(){return""}getBgAnsi(){return""}getThinkingBorderColor(){return a=>a}getBashModeBorderColor(){return a=>a}}let $=new Z,_=new f.KeybindingsManager(f.TUI_KEYBINDINGS);function K(a,b){if(0===b.length)return[];let c=new Set(Y),d=(0,w.wQ)(b,a.settingsManager.getDefaultTools()),e=a.getAllTools().map(a=>a.name).filter(a=>!c.has(a));return(0,x.H4)([...new Set([...d,...e])],(0,x.t0)())}class aa{constructor(a,b=""){this.inner=a,this.listeners=[],this.activeToolEvents=new Map,this.pendingUiResponses=new Map,this.pendingUiRequests=new Map,this.activeCustomUis=new Map,this.extensionUiAbortController=new AbortController,this.extensionStatuses=new Map,this.extensionWidgets=new Map,this.promptRunning=!1,this.promptPhase=null,this.extensionsBound=!1,this.extensionBindingPromise=null,this.extensionBindingError=null,this.forceEmptySystemPrompt=!1,this.exactSystemPrompt=null,this.pendingPromptCount=0,this.activeMutatingCommands=0,this.agentRunNeedsCompletion=!1,this.promptAdmissionTail=Promise.resolve(),this.sessionReplacement=null,this.forceShutdownOnIdle=!1,this.unsubscribe=null,this.idleTimer=null,this.subscriberCount=0,this.disposeGraceTimer=null,this.lastActivityAt=Date.now(),this.queueMirror=[],this.queueRecovery=[],this.persistenceRevoked=!1,this.queueBootstrap=null,this.pendingQueueHints={steer:[],followUp:[]},this.queueMutationTail=Promise.resolve(),this.onDestroyCallback=null,this.shutdownPromise=null,this.sessionShutdownEmitted=!1,this._alive=!0,this.approvalPolicy=(0,B.ni)((0,A.lN)().permissionRules),this.approvalMode=(0,A.lN)().toolApprovalMode,this.pendingApprovals=new Map,this.approvalSeq=0,this.approvalHookInstalled=!1,this.goalEngine=new H.aA,this.goalTokensAccounted=0,this.goalToolCallsAccounted=0,this.goalContinuationInFlight=!1,this.goalContinuationPending=!1,this.goalDriveScheduled=!1,this.wrapperChatOnly=!1,this.wrapperSuppressNotifications=!1,this.cwd="string"==typeof b?b:"";const c="string"==typeof b?{}:b;c.onAgentRunComplete&&(this.onAgentRunComplete=c.onAgentRunComplete),c.suppressCompletionNotifications&&this.setSuppressCompletionNotifications(!0),c.chatOnly&&this.setChatOnly(!0),c.exactSystemPrompt&&(this.exactSystemPrompt=c.exactSystemPrompt(),this.applyExactSystemPrompt());const d=(0,A.lN)(a.sessionId);if(this.approvalMode=d.toolApprovalMode,this.approvalPolicy=(0,B.ni)(d.permissionRules),a.sessionFile){const b=(0,H.bo)(a.sessionFile);"idle"!==b.status&&this.goalEngine.hydrate(b)}}get sessionId(){return this.inner.sessionId}get sessionFile(){return this.inner.sessionFile??""}isAlive(){return this._alive}evictIfDiskAhead(){if(!this.isAlive()||this.isRunning())return!1;let a=(0,o.H6)(this.sessionFile);return!(!a||this.inner.sessionManager.getEntry(a)||this.isRunning())&&(this.destroy(),(0,o.mD)(),!0)}async waitUntilReady(){}isShuttingDown(){return null!==this.shutdownPromise}whenShutdown(){return this.shutdownPromise}isRunning(){return this._alive&&(this.pendingPromptCount>0||this.inner.isStreaming||this.inner.isCompacting||this.inner.isBashRunning)}runtimeSnapshot(){let a=this.inner.isStreaming,b=this.promptRunning,c=this.inner.isCompacting,d=this.inner.isBashRunning;return{id:this.sessionId,running:this.isRunning(),isStreaming:a,isPromptRunning:b,isCompacting:c,isBashRunning:d,phase:d?"running_command":this.promptPhase??(a||b||c?"waiting_model":null)}}setChatOnly(a){this.wrapperChatOnly=a}setSuppressCompletionNotifications(a){this.wrapperSuppressNotifications=a}isChatOnly(){return this.wrapperChatOnly}hasSuppressedCompletionNotifications(){return this.wrapperSuppressNotifications}start(){this.installApprovalHook(),this.goalEngine.setOnChanged(a=>{this.sessionFile&&!this.persistenceRevoked&&(0,H.eG)(this.sessionFile,a),this.emit({type:"goal_state_changed",goalState:a}),R("goal_state_changed",this.sessionId,{type:"goal_state_changed",goalState:a})}),this.goalEngine.isRunning()&&(this.goalContinuationPending=!0,this.maybeDriveGoalContinuation()),this.unsubscribe=this.inner.subscribe(a=>{("agent_end"===a.type||"message_end"===a.type||"entry_appended"===a.type||"session_info_changed"===a.type)&&(0,o.mD)(),("agent_end"===a.type||"agent_settled"===a.type||"auto_compaction_end"===a.type||"compaction_end"===a.type)&&this.resetIdleTimer(),"agent_start"===a.type&&(this.goalEngine.onAgentStart(),this.agentRunNeedsCompletion=!0),"agent_settled"===a.type&&(this.handleGoalSettled(),this.notifyAgentRunCompleteIfIdle()),"queue_update"===a.type&&this.reconcileQueue(a.steering,a.followUp),U.has(a.type)&&R(a.type,this.sessionId,a);let b=a.toolCallId;"string"==typeof b&&("tool_execution_start"===a.type||"tool_execution_update"===a.type?this.activeToolEvents.set(b,a):"tool_execution_end"===a.type&&this.activeToolEvents.delete(b)),this.emit(a),P()}),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)}getGoalState(){return this.goalEngine.getState()}handleGoalSettled(){if(!this.goalEngine.isRunning()){this.goalEngine.disarmContinuation(),this.goalContinuationPending=!1;return}let a=this.inner.getLastAssistantText()??"",b=this.currentSessionUsageTotal(),c=Math.max(0,b-this.goalTokensAccounted);this.goalTokensAccounted=b;let d=this.currentSessionToolCallTotal(),e=Math.max(0,d-this.goalToolCallsAccounted);this.goalToolCallsAccounted=d;let{verdict:f}=this.goalEngine.settleTurn(a,c,e);if("continue"!==f.action){this.goalEngine.disarmContinuation(),this.goalContinuationPending=!1;return}this.goalContinuationPending=!0,this.maybeDriveGoalContinuation()}maybeDriveGoalContinuation(){if(this.goalContinuationPending&&!this.goalDriveScheduled){if(!this.goalEngine.isRunning()){this.goalContinuationPending=!1;return}this.goalDriveScheduled=!0,setTimeout(()=>{this.goalDriveScheduled=!1,this.tryDriveGoalContinuation()},0)}}cancelGoalContinuation(){this.goalContinuationPending=!1,this.goalEngine.disarmContinuation()}tryDriveGoalContinuation(){let a=M(this.sessionId);if(!this._alive||this.isShuttingDown()||a.deleted||a.barriers>0)return void this.cancelGoalContinuation();if(this.goalContinuationPending){if(!this.goalEngine.isRunning()){this.goalContinuationPending=!1;return}this.goalContinuationInFlight||this.promptRunning||this.inner.isStreaming||this.inner.isBashRunning||(this.goalContinuationPending=!1,this.driveGoalContinuation())}}driveGoalContinuation(){if(!this.goalEngine.isRunning()||this.goalContinuationInFlight)return;this.goalContinuationInFlight=!0,this.promptRunning=!0,this.promptPhase="waiting_model",this.resetIdleTimer(),P();let a=()=>{this.promptRunning=!1,this.promptPhase=null,this.resetIdleTimer(),P()};this.acquirePromptAdmission().then(async b=>{try{if(!this.goalEngine.isRunning())return void a();let b=this.goalEngine.getState().goalText;if(!this._alive||this.isShuttingDown()||!b)return void a();N(this.sessionId),await this.inner.prompt((0,H.bx)(b),{source:"rpc",preflightResult:a=>{if(a){if(!this._alive||this.isShuttingDown()||!this.goalEngine.isRunning())throw new DOMException("Goal continuation cancelled","AbortError");N(this.sessionId)}}}),a(),this.emit({type:"prompt_done"}),this.maybeDriveGoalContinuation()}catch(b){a(),this.emit({type:"prompt_error",errorMessage:b instanceof Error?b.message:String(b)})}finally{b(),this.goalContinuationInFlight=!1}})}handleGoalStartCommand(a,b){let c=this.goalEngine.start(a,b);return this.goalTokensAccounted=this.currentSessionUsageTotal(),this.goalToolCallsAccounted=this.currentSessionToolCallTotal(),c}handleGoalStopCommand(){return this.goalEngine.stop(),this.goalTokensAccounted=0,this.goalToolCallsAccounted=0,this.goalEngine.getState()}currentSessionUsageTotal(){try{return function(a){let b=0;for(let c of a){let a=c?.message;if(!a||"assistant"!==a.role)continue;let d=a.usage;d&&(b+=(d.input??0)+(d.output??0)+(d.cacheRead??0)+(d.cacheWrite??0))}return b}(this.inner.sessionManager.getEntries())}catch{return 0}}currentSessionToolCallTotal(){try{return function(a){let b=0;for(let c of a){let a=c?.message;if(!a||"assistant"!==a.role)continue;let d=a.content;if(Array.isArray(d))for(let a of d)a&&"object"==typeof a&&"toolCall"===a.type&&(b+=1)}return b}(this.inner.sessionManager.getEntries())}catch{return 0}}setApprovalMode(a){this.approvalMode=a}setApprovalPolicy(a){this.approvalPolicy=a}installApprovalHook(){if(this.approvalHookInstalled||!this.inner.agent?.beforeToolCall)return;this.approvalHookInstalled=!0;let a=this.inner.agent.beforeToolCall;this.inner.agent.beforeToolCall=async b=>{let c=b.toolCall?.name??"",d=b.args,e=(0,B.LD)(this.approvalPolicy,c,{mode:this.approvalMode,readOnly:C.MJ.has(c.toLowerCase()),args:d});if("deny"===e)return{block:!0,reason:`Denied by policy rule: ${c} is not permitted.`};if("ask"===e){let a=await this.askForApproval(c,d);if(!a.approve)return{block:!0,reason:a.reason||`Rejected by user: ${c}`}}return a?a(b):void 0}}askForApproval(a,b){return new Promise(c=>{let d=`approval-${++this.approvalSeq}`,e=setTimeout(()=>{this.pendingApprovals.delete(d),this.emit({type:"tool_approval_resolved",id:d,approve:!1,reason:`Approval request timed out after 120s: ${a}`}),c({approve:!1,reason:`Approval request timed out after 120s: ${a}`})},12e4);this.pendingApprovals.set(d,{resolve:c,timer:e,toolName:a}),this.emit({type:"tool_approval_request",id:d,toolName:a,args:function(a){if(null===a||"object"!=typeof a)return a;let b={};for(let[c,d]of Object.entries(a))if(null!=d&&"content"!==c&&"data"!==c&&"newString"!==c&&"oldString"!==c){if("string"==typeof d){b[c]=d.length>200?`${d.slice(0,200)}…`:d;continue}if("number"==typeof d||"boolean"==typeof d){b[c]=d;continue}b[c]=Array.isArray(d)?`[array:${d.length}]`:"[object]"}return b}(b)})})}resolveApproval(a,b,c){let d=this.pendingApprovals.get(a);return!!d&&(this.pendingApprovals.delete(a),clearTimeout(d.timer),d.resolve({approve:b,reason:c}),!0)}rejectAllApprovals(a){for(let[b,c]of this.pendingApprovals)this.pendingApprovals.delete(b),clearTimeout(c.timer),c.resolve({approve:!1,reason:a})}getPendingApprovals(){return Array.from(this.pendingApprovals.entries()).map(([a,b])=>({id:a,toolName:b.toolName}))}pendingRecoveryView(){return this.queueRecovery.map(({id:a,kind:b,text:c,images:d,queuedAt:e})=>({id:a,kind:b,text:c,hasImages:!!d?.length,queuedAt:e}))}persistQueue(){if(!this.sessionFile||this.persistenceRevoked)return;let a=[...this.queueRecovery,...this.queueBootstrap?.entries??[],...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()}validateImagesSupportedByCurrentModel(){let a=this.inner.model;return!a?.id||Array.isArray(a.input)&&a.input.includes("image")?null:`Model "${a.id}" does not accept image input. Switch to a model with image support.`}async requeueEntry(a){let b=(0,j.kc)(a.images);if(b)throw Error(b);if(a.images?.length){let a=this.validateImagesSupportedByCurrentModel();if(a)throw Error(a)}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{if(!this._alive||this.isShuttingDown())throw Error("Session is shutting down");return N(this.sessionId),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._alive||this.isShuttingDown()||this.queueBootstrap||this.isRunning()||this.promptRunning)return;let a=[...this.queueMirror];if(0===a.length)return;let b={entries:a,cancelled:!1};this.queueBootstrap=b,this.queueMirror=[],this.persistQueue(),this.inner.clearQueue(),this.pendingQueueHints={steer:[],followUp:[]},this.pendingPromptCount+=1,this.promptRunning=!0,this.promptPhase="waiting_model",P(),this.bootstrapQueuedRun(b)}cancelQueuedRun(){let a=this.queueBootstrap;a&&(a.cancelled=!0,this.queueRecovery.push(...a.entries),a.entries=[],this.persistQueue())}async bootstrapQueuedRun(a){try{for(let b of[...a.entries]){let c,d,e=await this.acquirePromptAdmission();try{let f,g;if(a.cancelled||!this._alive||this.isShuttingDown()||this.inner.isStreaming||this.inner.isCompacting||this.inner.isBashRunning)break;N(this.sessionId),this.extensionUiAbortController.signal.aborted&&(this.extensionUiAbortController=new AbortController);let h=!1,i=()=>{h=!0,e()},j=!1,k=this.inner.sessionManager,l=k.appendMessage,m=function(c){let d=l.call(this,c);return c===f&&(g=d),!j&&g&&k.isPersisted()&&k.flushed&&(j=!0,a.entries=a.entries.filter(a=>a.id!==b.id),n()),d},n=()=>{this.queueRecovery=this.queueRecovery.filter(a=>a.id!==b.id),this.persistQueue()};k.appendMessage=m,d=()=>{k.appendMessage===m&&(k.appendMessage=l)},c=this.inner.subscribe(b=>{"message_start"!==b.type&&"message_end"!==b.type||"user"!==b.message.role||f||!h&&a.cancelled||(f=b.message,i(),c?.(),c=void 0)}),await this.inner.prompt(b.text,{...b.images?.length?{images:b.images}:{},source:"rpc",preflightResult:b=>{if(b){if(a.cancelled||!this._alive||this.isShuttingDown())throw new DOMException("Queued run cancelled","AbortError");N(this.sessionId),this.applyExactSystemPrompt(),i()}}})}finally{c?.(),d?.(),e()}}}catch(b){!a.cancelled&&this._alive&&((0,o.mD)(),this.emit({type:"prompt_error",errorMessage:b instanceof Error?b.message:String(b)}))}finally{this.queueRecovery.push(...a.entries),a.entries=[],this.queueBootstrap===a&&(this.queueBootstrap=null),this.persistQueue(),this.pendingPromptCount=Math.max(0,this.pendingPromptCount-1),this.promptRunning=this.pendingPromptCount>0,this.promptRunning||(this.promptPhase=null),this.resetIdleTimer(),P(),this._alive&&this.emit({type:"prompt_done"})}}setForceEmptySystemPrompt(a){this.forceEmptySystemPrompt=a,this.applyForcedEmptySystemPrompt()}setExactSystemPrompt(a){this.exactSystemPrompt=a,this.applyExactSystemPrompt()}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.applyExactSystemPrompt(),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.applyExactSystemPrompt(),console.log(`[pi-web] session_start dispatched to extensions for session ${this.inner.sessionId}`)})().catch(a=>{throw this.extensionBindingError=a,a})),this.extensionBindingPromise)}static{this.EXTENSION_BIND_TIMEOUT_MS=15e3}async waitForExtensionsBound(){let a=this.extensionBindingPromise;if(a)try{let b=new Promise((b,c)=>{let d=setTimeout(()=>c(Error("Extension binding timed out; continuing without waiting")),aa.EXTENSION_BIND_TIMEOUT_MS);a.finally(()=>clearTimeout(d))});await Promise.race([a,b])}catch{}this.extensionBindingError&&console.warn("[pi-web] extension binding failed, continuing:",this.extensionBindingError)}shouldWaitForExtensions(a){return"prompt"===a||"steer"===a||"follow_up"===a||"get_commands"===a||"get_state"===a}applyForcedEmptySystemPrompt(){}applyExactSystemPrompt(){}emit(a){for(let b of this.listeners)try{b(a)}catch(a){console.error(`[pi-web] session ${this.sessionId} event listener threw:`,a instanceof Error?a.message:a)}}setActiveToolSelection(a){this.inner.setActiveToolsByName(K(this.inner,a)),this.applyExactSystemPrompt()}async acquirePromptAdmission(){let a,b=this.promptAdmissionTail;return this.promptAdmissionTail=new Promise(b=>{a=b}),await b,a}notifyAgentRunCompleteIfIdle(){if(!(!this.agentRunNeedsCompletion||this.isRunning())&&(this.agentRunNeedsCompletion=!1,!this.wrapperSuppressNotifications))try{this.onAgentRunComplete?.(this.sessionId)}catch(a){console.error("[pi-web] completion listener failed:",a instanceof Error?a.message:a)}}resetIdleTimer(){this.idleTimer&&clearTimeout(this.idleTimer),this._alive&&0!==V&&(this.isRunning()||(this.forceShutdownOnIdle=!1),this.idleTimer=setTimeout(()=>{!this.forceShutdownOnIdle&&(this.isRunning()||(0,t.Vj)({sessionId:this.sessionId,sessionFile:this.sessionFile||void 0}))?this.resetIdleTimer():this.shutdown().catch(a=>{console.error("[pi-web] failed to shut down idle session:",a instanceof Error?a.message:a)})},V))}touch(){this.lastActivityAt=Date.now(),this.cancelPendingDispose()}hasSubscribers(){return this.subscriberCount>0}get activityTimestamp(){return this.lastActivityAt}cancelPendingDispose(){this.disposeGraceTimer&&(clearTimeout(this.disposeGraceTimer),this.disposeGraceTimer=null)}scheduleDisposeIfIdle(){this.cancelPendingDispose(),!(this.subscriberCount>0||this.isRunning())&&this._alive&&(this.disposeGraceTimer=setTimeout(()=>{this.disposeGraceTimer=null,!(this.subscriberCount>0||this.isRunning())&&this._alive&&this.shutdown().catch(a=>{console.error("[pi-web] failed to shut down unwatched session:",a instanceof Error?a.message:a)})},6e4))}persistSessionFileIfMissing(){if(this.persistenceRevoked||!this._alive)return;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";try{(0,h.writeFileSync)(b,d,{encoding:"utf8",flag:"wx"})}catch(c){if("EEXIST"===c.code||(0,h.existsSync)(b)){a.flushed=!0,(0,o.O8)(this.inner.sessionId,b);return}throw c}a.flushed=!0,(0,o.O8)(this.inner.sessionId,b)}onEvent(a){for(let b of(this.listeners.push(a),this.subscriberCount+=1,this.cancelPendingDispose(),this.pendingUiRequests.values()))a(b);for(let b of this.activeToolEvents.values())a(b);return()=>{queueMicrotask(()=>{let b=this.listeners.indexOf(a);-1!==b&&this.listeners.splice(b,1)}),this.subscriberCount>0&&(this.subscriberCount-=1),this.scheduleDisposeIfIdle()}}onDestroy(a){this.onDestroyCallback=a}async withSessionReplacement(a,b){if(this.sessionReplacement)throw Error("Session is already being copied");this.sessionReplacement=a;try{return await b()}finally{this._alive&&(this.sessionReplacement=null)}}isSessionRunningForReplacement(){return this.inner.isBashRunning||this.inner.isStreaming||this.inner.isCompacting||this.pendingPromptCount>0}async shutdownAfterSessionReplacement(a){try{await this.shutdown()}catch(b){console.error(`[pi-web] ${a} succeeded, but source session shutdown failed:`,b instanceof Error?b.message:b)}}async send(a){if(!this._alive)throw Error("Session is shutting down");N(this.sessionId),this.touch();let b=a.type;if(b.startsWith("get_")||"export_queue"===b||this.resetIdleTimer(),"prompt"===b||"steer"===b||"follow_up"===b||"requeue_at"===b){let b=(0,j.kc)(a.images);if(b)throw Error(b);if(Array.isArray(a.images)&&a.images.length>0){let a=this.validateImagesSupportedByCurrentModel();if(a)throw Error(a)}}let c=X.has(b);if(this.sessionReplacement&&!c)throw Error("Session is being copied to a new session");if(W.has(b)&&this.activeMutatingCommands>0)throw Error(`Cannot ${b} while another session command is running`);this.shouldWaitForExtensions(b)&&await this.waitForExtensionsBound();let d=!c;d&&(this.activeMutatingCommands+=1);try{if(!this._alive||this.isShuttingDown())throw Error("Session is shutting down");if(N(this.sessionId),this.sessionReplacement&&!c)throw Error("Session is being copied to a new session");if("prompt"===b||"steer"===b||"follow_up"===b){let b=(0,j.kc)(a.images);if(b)throw Error(b)}switch(b){case"prompt":{let b=await this.acquirePromptAdmission();try{let b,c,d;if(!this._alive||this.isShuttingDown())throw Error("Session is shutting down");if(N(this.sessionId),this.inner.isBashRunning)throw Error("Cannot send a prompt while a shell command is running");this.extensionUiAbortController.signal.aborted&&(this.extensionUiAbortController=new AbortController);let e=a.images,f=a.streamingBehavior;f&&this.inner.isStreaming&&this.hintQueueImages("followUp"===f?"followUp":"steer",e);let g=!1,h=!1,i=!1,j=new Promise((a,d)=>{b=()=>{g=!0,this.agentRunNeedsCompletion=!0,h||(h=!0,a())},c=a=>{h||(h=!0,d(a))}}),k=()=>{i||(i=!0,this.pendingPromptCount=Math.max(0,this.pendingPromptCount-1),this.resetIdleTimer(),this.notifyAgentRunCompleteIfIdle())};this.pendingPromptCount+=1,this.promptRunning=!0,this.promptPhase=String(a.message??"").trimStart().startsWith("/")?"running_command":"waiting_model",P();try{d=this.inner.prompt(a.message,{...e?.length?{images:e}:{},...f?{streamingBehavior:f}:{},source:"rpc",preflightResult:a=>{if(a){if(!this._alive||this.isShuttingDown())throw Error("Session is shutting down");N(this.sessionId),this.applyExactSystemPrompt(),b()}}})}catch(a){throw k(),a}return d.then(()=>{b(),k(),this.promptRunning=!1,this.promptPhase=null,f||this.emit({type:"prompt_done"}),P(),this.maybeDriveGoalContinuation()},a=>{c(a),k(),this.promptRunning=!1,this.promptPhase=null,(0,o.mD)(),g&&(this.emit({type:"prompt_error",errorMessage:a instanceof Error?a.message:String(a)}),f||this.emit({type:"prompt_done"})),P(),this.maybeDriveGoalContinuation()}).catch(a=>{console.error("[pi-web] prompt completion handler failed:",a instanceof Error?a.message:a)}),await j,null}finally{b()}}case"abort":this.cancelQueuedRun(),this.cancelGoalContinuation(),this.forceShutdownOnIdle=!0,this.extensionUiAbortController.abort(new DOMException("Extension UI cancelled by Stop","AbortError"));try{await this.inner.abort()}finally{this.resetIdleTimer(),this.isRunning()||(this.forceShutdownOnIdle=!1)}return 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.pendingPromptCount>0,isBashRunning:this.inner.isBashRunning,isCompacting:this.inner.isCompacting,phase:this.runtimeSnapshot().phase,model:a?{id:a.id,provider:a.provider}:void 0,messageCount:0,pendingMessageCount:this.inner.pendingMessageCount,queuedMessages:{steering:[...this.inner.getSteeringMessages()],followUp:[...this.inner.getFollowUpMessages()]},pendingRecovery:this.pendingRecoveryView(),contextUsage:b?{percent:b.percent,contextWindow:b.contextWindow,tokens:b.tokens}:null,systemPrompt:this.exactSystemPrompt??this.inner.agent.state?.systemPrompt??"",thinkingLevel:this.inner.agent.state?.thinkingLevel??"off",extensionStatuses:this.getExtensionStatuses(),extensionWidgets:this.getExtensionWidgets(),goalState:this.goalEngine.getState()}}case"goal_start":{let b=String(a.goalText??"").trim();if(!b)throw Error("goal_start requires a non-empty goalText");let c=a.tokenBudget,d="number"==typeof c&&Number.isFinite(c)&&c>0?Math.floor(c):null,e=this.handleGoalStartCommand(b,d);return this.goalContinuationPending=!0,this.maybeDriveGoalContinuation(),{goalState:e}}case"goal_pause":return this.cancelGoalContinuation(),{goalState:this.goalEngine.pause()};case"goal_resume":{let a=this.goalEngine.resume();return"running"===a.status&&(this.goalContinuationPending=!0,this.maybeDriveGoalContinuation()),{goalState:a}}case"goal_stop":return this.cancelGoalContinuation(),{goalState:this.handleGoalStopCommand()};case"goal_edit":{let b=String(a.goalText??"").trim();if(!b)throw Error("goal_edit requires a non-empty goalText");let c=this.goalEngine.edit(b);return"running"===c.status&&(this.goalContinuationPending=!0,this.maybeDriveGoalContinuation()),{goalState:c}}case"get_goal_state":return{goalState:this.goalEngine.getState()};case"set_model":{let{provider:b,modelId:c}=a,d=this.inner.modelRuntime.getModel(b,c);if(!d)try{await this.inner.modelRuntime.refresh({allowNetwork:!1}),d=this.inner.modelRuntime.getModel(b,c)}catch{d=void 0}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":if(this.isSessionRunningForReplacement())throw Error("Cannot fork while the session is running");return this.withSessionReplacement("fork",async()=>{let b,c,d=a.entryId,f=this.inner.sessionManager,g=this.inner.sessionFile;if(!f.isPersisted())return{cancelled:!0};if(!g)throw Error("Persisted session is missing a session file");let i=f.getEntry(d);if(!i)throw Error("Invalid entry ID for forking");let j=f.getSessionDir();if(i.parentId){let a=(c=e.SessionManager.open(g,j)).createBranchedSession(i.parentId);if(!a)throw Error("Failed to create forked session");b=a}else b=(c=e.SessionManager.create(f.getCwd(),j,{parentSession:g})).getSessionFile();if(!(0,h.existsSync)(b)){let a=c.getHeader();if(!a)throw Error("Forked session is missing a session header");let d=[a,...c.getEntries()].map(a=>JSON.stringify(a)).join("\n")+"\n";(0,h.writeFileSync)(b,d,{encoding:"utf8",flag:"wx"})}let k=c.getSessionId();return(0,o.O8)(k,b),(0,o.mD)(),await this.shutdownAfterSessionReplacement("fork"),{cancelled:!1,newSessionId:k}});case"fork_branch":{if(this.isSessionRunningForReplacement())throw Error("Cannot fork while the session is running");let b=a.entryId,c=this.inner.sessionManager,d=this.inner.sessionFile;if(!c.isPersisted())return{cancelled:!0};if(!d)throw Error("Persisted session is missing a session file");if(!c.getEntry(b))throw Error("Invalid entry ID for forking");let f=c.getSessionDir(),g=e.SessionManager.open(d,f).createBranchedSession(b);if(!g)throw Error("Failed to create forked session");let h=e.SessionManager.open(g,f).getSessionId();return(0,o.O8)(h,g),(0,o.mD)(),{cancelled:!1,newSessionId:h}}case"clone":{if(this.isSessionRunningForReplacement())throw Error("Cannot clone while the session is running");let b=this.inner.sessionManager,c=this.inner.sessionFile,d="string"==typeof a.leafId?a.leafId:b.getLeafId(),f=d&&b.getBranch(d).some(a=>"message"===a.type&&"assistant"===a.message.role);if(!b.isPersisted()||!d||!f||!c||!(0,h.existsSync)(c))return{cancelled:!0};return this.withSessionReplacement("clone",async()=>{let a=b.getSessionDir(),f=e.SessionManager.open(c,a).createBranchedSession(d);if(!f||!(0,h.existsSync)(f))throw Error("Failed to clone current session branch");let g=e.SessionManager.open(f,a).getSessionId();return(0,o.O8)(g,f),(0,o.mD)(),await this.shutdownAfterSessionReplacement("clone"),{cancelled:!1,newSessionId:g}})}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.withQueueMutation(async()=>(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":return this.withQueueMutation(async()=>{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":return this.withQueueMutation(async()=>{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":return this.withQueueMutation(async()=>{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":return this.withQueueMutation(async()=>{let b=a.images;this.hintQueueImages("steer",b),this.promptPhase="waiting_model",P();try{await this.inner.steer(a.message,b?.length?b:void 0)}finally{this.promptPhase=null,P()}return null});case"follow_up":return this.withQueueMutation(async()=>{let b=a.images;this.hintQueueImages("followUp",b),this.promptPhase="waiting_model",P();try{await this.inner.followUp(a.message,b?.length?b:void 0)}finally{this.promptPhase=null,P()}return null});case"get_tools":{let a=this.inner.getAllTools(),b=new Set(this.inner.getActiveToolNames());return a.map(a=>({...a,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.setActiveToolSelection(b),null}case"reload":{let a=this.inner.getActiveToolNames();return await this.waitForExtensionsBound(),this.extensionStatuses.clear(),this.extensionWidgets.clear(),this.syncProjectTrust(),await this.inner.reload(),this.inner.setActiveToolsByName(K(this.inner,a)),"function"!=typeof this.inner.bindExtensions&&this.inner.extensionRunner.setUIContext?.(this.createExtensionUiContext(),"rpc"),this.applyForcedEmptySystemPrompt(),{success:!0}}case"abort_compaction":return this.inner.abortCompaction(),null;case"resolve_approval":return{resolved:this.resolveApproval(a.id,!!a.approve,a.reason)};case"set_approval_mode":{let b=a.mode;if("ask"!==b&&"auto"!==b&&"yolo"!==b)throw Error(`Invalid approval mode: ${String(b)}`);return this.setApprovalMode(b),null}case"set_approval_policy":{let b=a.policy;return this.setApprovalPolicy((0,B.ni)(b)),null}case"get_approval_state":return{mode:this.approvalMode,pending:this.getPendingApprovals()};case"extension_ui_response":return this.resolveExtensionUiResponse(a),null;case"extension_ui_input":return this.handleExtensionUiInput(a.id,a.data),null;case"set_auto_retry":return this.inner.setAutoRetryEnabled?.(a.enabled),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.settingsManager?.getShellPath?.(),c=(0,y.J1)("string"==typeof b&&b?{shellPath:b}:{}),d=this.inner.executeBash(a.command,void 0,{excludeFromContext:a.excludeFromContext,operations:c});try{let a=await d;return this.persistSessionFileIfMissing(),a}finally{this.resetIdleTimer(),(0,o.mD)()}}case"abort_bash":return this.forceShutdownOnIdle=!0,this.inner.abortBash(),P(),null;default:throw Error(`Unsupported command: ${b}`)}}finally{d&&(this.activeMutatingCommands=Math.max(0,this.activeMutatingCommands-1))}}destroy(){if(!this._alive)return;for(let a of(this._alive=!1,this.cancelQueuedRun(),this.cancelGoalContinuation(),this.idleTimer&&clearTimeout(this.idleTimer),this.cancelPendingDispose(),this.inner.isBashRunning&&this.inner.abortBash(),this.unsubscribe?.(),this.emit({type:"session_shutdown"}),this.sessionFile&&!this.persistenceRevoked&&this.goalEngine.hasActiveGoal()&&(0,H.eG)(this.sessionFile,this.goalEngine.getState()),this.pendingUiResponses.values()))a.cancel();for(let a of Array.from(this.activeCustomUis.keys()))this.closeCustomUi(a,void 0);this.pendingUiResponses.clear(),this.pendingUiRequests.clear(),this.activeToolEvents.clear(),this.rejectAllApprovals("Session closed while approval was pending");let a=()=>{try{this.inner.dispose()}finally{try{this.onDestroyCallback?.()}finally{P()}}};if(this.sessionShutdownEmitted)return void a();this.sessionShutdownEmitted=!0;let b=this.inner.extensionRunner?.emit;"function"!=typeof b?a():Promise.resolve().then(()=>b.call(this.inner.extensionRunner,{type:"session_shutdown",reason:"quit"})).catch(a=>{console.error("[pi-web] session_shutdown before dispose failed:",a instanceof Error?a.message:a)}).finally(a)}revokePersistenceForDeletion(){this.persistenceRevoked=!0,L(this.inner.sessionManager),this.cancelQueuedRun(),this.cancelGoalContinuation()}async drainForSessionRewrite(){this.cancelQueuedRun(),this.cancelGoalContinuation(),this.extensionUiAbortController.abort(new DOMException("Session is being changed","AbortError")),await this.inner.abort()}async shutdown(){return this.shutdownPromise?this.shutdownPromise:this._alive?(this.cancelQueuedRun(),this.cancelGoalContinuation(),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)}this.sessionShutdownEmitted||(this.sessionShutdownEmitted=!0,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 F.p1;let b=a.overlayOptions,c="function"==typeof b?b():b;if(!c||"object"!=typeof c)return F.p1;let d=c.width;return"number"==typeof d&&Number.isFinite(d)?Math.max(40,Math.min(140,Math.round(d))):F.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=this.extensionUiAbortController.signal;if(c.aborted)return Promise.reject(c.reason);let d=(0,g.randomUUID)(),e=this.getCustomUiWidth(b);return new Promise((b,f)=>{let g=!1,h=(0,F.TQ)(()=>{let a=this.activeCustomUis.get(d);a&&this.emitCustomUiRender(d,a)},e),i=a=>{g||(g=!0,c.removeEventListener("abort",k),c.aborted?f(c.reason):b(a))},j=a=>{this.activeCustomUis.has(d)?this.closeCustomUi(d,a):i(a)},k=()=>j(void 0);c.addEventListener("abort",k,{once:!0}),Promise.resolve().then(()=>g?void 0:a(h,$,_,j)).then(a=>{if(g){try{a?.dispose?.()}catch{}return}if(!a||"object"!=typeof a||"function"!=typeof a.render)return void i(void 0);let b={component:a,width:e,resolve:a=>i(a),settled:!1};this.activeCustomUis.set(d,b),this.emitCustomUiRender(d,b)}).catch(a=>{g||(this.emit({type:"extension_error",extensionPath:`custom-ui:${d}`,event:"custom_ui",error:a instanceof Error?a.message:String(a)}),i(void 0))})})}requestExtensionUi(a,b,c,d,e){if(e?.aborted)return Promise.resolve(b);let f=this.extensionUiAbortController.signal;if(f.aborted)return Promise.reject(f.reason);let h=e?AbortSignal.any([e,f]):f,i=(0,g.randomUUID)(),j={type:"extension_ui_request",id:i,...a,...d?{timeout:d,expiresAt:Date.now()+d}:{}};return new Promise((a,e)=>{let g,k=!1,l=()=>{g&&clearTimeout(g),h.removeEventListener("abort",n),this.pendingUiRequests.delete(i),this.pendingUiResponses.delete(i),this.emit({type:"extension_ui_closed",id:i})},m=b=>{k||(k=!0,l(),f.aborted?e(f.reason):a(b))},n=()=>m(b);d&&(g=setTimeout(()=>m(b),d)),h.addEventListener("abort",n,{once:!0}),this.pendingUiRequests.set(i,j),this.pendingUiResponses.set(i,{resolve:a=>m(c(a)),cancel:()=>m(b)}),this.emit(j)})}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 $},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.applyExactSystemPrompt()}}}}function L(a){a&&(a.persist=!1)}function M(a){globalThis.__piSessionLifecycles??=new Map;let b=globalThis.__piSessionLifecycles.get(a);return b||(b={generation:0,barriers:0,deleted:!1,starts:new Set},globalThis.__piSessionLifecycles.set(a,b)),b}function N(a,b){let c=M(a);if(c.deleted||c.barriers>0||void 0!==b&&c.generation!==b)throw Error("Session was deleted or is being changed; retry after the operation finishes")}function O(){if(!globalThis.__piSessions){globalThis.__piSessions=new Map;let a=()=>Promise.allSettled(Array.from(globalThis.__piSessions?.values()??[],a=>a.shutdown()));process.once("exit",()=>globalThis.__piSessions?.forEach(a=>a.destroy())),process.once("SIGINT",()=>{a().finally(()=>process.exit(130))}),process.once("SIGTERM",()=>{a().finally(()=>process.exit(143))})}return globalThis.__piSessions}let ab="";function P(){let a=globalThis.__piRunningListeners;if(!a||0===a.size){ab="";return}let b=function(){let a=[];for(let[b,c]of O()){if(!c.isAlive())continue;let d=c.runtimeSnapshot();d.running&&a.push({...d,id:d.id||b})}return a}(),c=JSON.stringify(b);if(c!==ab)for(let d of(ab=c,a))try{d(b)}catch{}}let ac=(0,u.s)({getSession:a=>O().get(a),registerSession:(a,b)=>{let c,d,e;c=new aa(a,a.sessionManager.getCwd()),b?.chatOnly?c.setForceEmptySystemPrompt(!0):b?.exactSystemPrompt&&c.setExactSystemPrompt(b.exactSystemPrompt),c.setChatOnly(!!b?.chatOnly),c.setSuppressCompletionNotifications(!0),c.start(),d=a.sessionId,e=O(),c.onDestroy(()=>e.delete(d)),e.set(d,c)},reopenSession:async(a,b)=>(await T(a,b,void 0)).session,resolveSessionPath:o.os,invalidateSessionList:o.mD,notifyRunningChange:P,isBuiltInSubagentsEnabled:v.N});!function(){try{let a=(0,v.M6)();if((0,h.existsSync)(a))return;(0,h.mkdirSync)(a.slice(0,a.lastIndexOf("/")),{recursive:!0}),(0,h.writeFileSync)(a,JSON.stringify({builtInEnabled:!0},null,2)+"\n")}catch(a){console.warn("[pi-web] failed to seed agents/settings.json:",a instanceof Error?a.message:a)}}();let ad=new Map;function Q(a){let b=globalThis.__piSessionBusListeners;if(b&&0!==b.size)for(let c of b)try{c(a)}catch{}}function R(a,b,c){let d=globalThis.__piSessionBusListeners;if(!d||0===d.size)return;if("message_update"!==a)return void Q({type:a,sessionId:b,payload:c});let e=ad.get(b),f={type:a,sessionId:b,payload:c};e?(clearTimeout(e.timer),e.event=f):ad.set(b,{event:f,timer:setTimeout(()=>{let a=ad.get(b);a&&(ad.delete(b),Q(a.event))},80)})}function S(a,b){let c=Date.now(),{provider:d,modelId:e,sessionId:f}=b,g=a.result.bind(a);a.result=async()=>{let a,b,h,i,j,k=await g();return a=Date.now()-c,b="error"===k.stopReason||"aborted"===k.stopReason,h=k.errorMessage?.trim(),j=(i=h?.match(/\bHTTP\s+(\d{3})\b|\bstatus(?:\s+code)?\s*[:=]?\s*(\d{3})\b/))?Number(i[1]??i[2]):void 0,(0,G.wF)({level:b?"error":"info",source:"model-call",provider:d,model:e,sessionId:f,...void 0!==j?{statusCode:j}:{},message:b?`模型调用失败 ${d}/${e}${h?`:${h}`:""}`:`模型调用成功 ${d}/${e}`,details:b?void 0:`耗时 ${a}ms`}),k};let h=a[Symbol.asyncIterator].bind(a);return a[Symbol.asyncIterator]=()=>{let a=h();return{next:()=>a.next().catch(a=>{throw(0,G.wF)({level:"error",source:"model-call",provider:d,model:e,sessionId:f,message:`模型调用传输错误 ${d}/${e}:${a instanceof Error?a.message:String(a)}`}),a})}},a}async function T(a,b,d,f={}){let g,j,k,t,u,w,x,y,A,B,{toolNames:C,initialModel:F,thinkingLevel:G,allowInitialModelFallback:H}=f,J=O(),P=(globalThis.__piStartLocks||(globalThis.__piStartLocks=new Map),globalThis.__piStartLocks),Q=M(a),R=Q.generation;N(a,R);let U=J.get(a);if(U?.isAlive()&&!U.isShuttingDown())return{session:U,realSessionId:a,created:!1};if(U){let a=U.whenShutdown();if(a){let b;try{await Promise.race([a,new Promise(a=>{b=setTimeout(a,1e4)})])}finally{clearTimeout(b)}}}N(a,R);let V=P.get(a);if(V)return V;if(b){if(!(0,h.existsSync)(b))throw Error("Session not found");if((g=e.SessionManager.open(b,void 0)).getSessionId()!==a)throw Error("Session identity changed")}else{if(!d)throw Error("cwd is required for a new session");g=e.SessionManager.create(d,void 0)}let W=g.getSessionId(),X=M(W),Y=X.generation;N(W,Y);let Z=g.getCwd(),$=g.getEntries(),_=b?(0,q.ph)($):null,ab=_?void 0:(0,r.dS)($);_||void 0!==ab||void 0===C||(0,r.b5)(g,C);let ad=(globalThis.__piStartingSessionCwds||(globalThis.__piStartingSessionCwds=new Map),A=globalThis.__piStartingSessionCwds,B=function(a){let b=(0,i.resolve)(a);try{return(0,h.realpathSync)(b)}catch{return b}}(Z),A.set(B,(A.get(B)??0)+1),()=>{let a=(A.get(B)??1)-1;a>0?A.set(B,a):A.delete(B)}),ae=new AbortController,af=setTimeout(()=>ae.abort(),25e3),ag=!1,ah=!1,ai=()=>{if(t&&!ah){ah=!0;try{t.cleanup()}catch{}}},aj=()=>{L(g);let a=u;if(a&&x!==a)if(x=a,w)w.destroy();else try{a.dispose()}catch{}ai()},ak=new Promise((a,b)=>{y=b}),al={settled:Promise.resolve(),cancel:a=>{k||(k=a,ae.abort(a),aj(),y(a))}};Q.starts.add(al),X.starts.add(al);let am=()=>{if(k)throw k;N(a,R),N(W,Y)},an=(async()=>{let b=(0,s.Qf)({subagentTools:_?.tools,persistedTools:ab,requestedTools:C}),d=(0,s.J7)({toolSelection:b,subagentLoadsResources:!!(_?.loadExtensions||_?.loadSkills)});d||(0,e.initTheme)();let f=(0,e.getAgentDir)(),h=_?.tools;_||void 0===b||(h=0===b.length?[]:void 0);let i=!!(_?.loadExtensions||_?.loadSkills),r=_?i?(0,n.Fk)(Z,f):void 0:(0,n.Fk)(Z,f),x={},y=(0,E.Q)(()=>x.current?.()),A=d||_?.exactSystemPrompt!==void 0,B=await (0,e.createAgentSessionServices)({cwd:Z,agentDir:f,modelRuntimeSignal:ae.signal,resourceLoaderOptions:_?{noExtensions:!0,noSkills:!0,noPromptTemplates:!0,noThemes:!0,noContextFiles:!0,appendSystemPrompt:_.appendSystemPrompt,...A?{extensionFactories:[y]}:{}}:d?{...D.M,extensionFactories:[y]}:{extensionFactories:[(0,p.Vj)(ac.extensionRuntime,()=>(0,q.IR)(Z),v.N)],extensionsOverride:a=>(0,p.U6)(a)},...r?{resourceLoaderReloadOptions:r}:{}});am();let{createAsyncBashTools:L}=await Promise.resolve().then(c.bind(c,12394));am(),t=new I.B;let M=L(t),N=await (0,m.py)(B.modelRuntime,B.settingsManager.getEnabledModels(),{signal:ae.signal});am();let P=F&&(!H||N.visible.some(a=>a.provider===F.provider&&a.id===F.modelId))?F:void 0,Q=B.settingsManager.getDefaultProvider(),R=B.settingsManager.getDefaultModel(),T=g.getBranch(),U=T.some(a=>"message"===a.type&&"system"!==a.message.role),V=U?(0,o.Vg)(T):null,W=V?B.modelRuntime.getModel(V.provider,V.modelId):void 0,X=U?null:(0,m.IR)(N,{...P?{requestedModel:P}:{},...Q&&R?{defaultModel:{provider:Q,modelId:R}}:{},...G?{thinkingLevel:G}:{}}),Y=W&&B.modelRuntime.hasConfiguredAuth(W.provider)?W:X?.model;am();let $=(0,e.createAgentSessionFromServices)({services:B,sessionManager:g,...Y?{model:Y}:{},...X?.thinkingLevel?{thinkingLevel:X.thinkingLevel}:{},...N.scopedModels.length>0?{scopedModels:[...N.scopedModels]}:{},...void 0!==h?{tools:h}:{},customTools:M});$.then(({session:a})=>{u=a,k&&aj()},()=>{}),j=setTimeout(()=>{al.cancel(Error("Session startup timed out while binding extensions/resources (40s)"))},4e4);let{session:ad}=await Promise.race([$,ak]);clearTimeout(j),am();try{let c=ad.agent,e=c.streamFunction;c.streamFunction=(b,c,d)=>{let f=e(b,c,d);return f instanceof Promise?f.then(c=>S(c,{provider:b.provider,modelId:b.id,sessionId:a})):S(f,{provider:b.provider,modelId:b.id,sessionId:a})},am();let f=await (0,z.o)(B.settingsManager,{...F?{model:F}:{},...G?{thinkingLevel:G}:{}},{...ad.model?{model:{provider:ad.model.provider,modelId:ad.model.id}}:{},thinkingLevel:ad.agent.state?.thinkingLevel??"off",supportsThinking:ad.supportsThinking()});am(),f.modelDefaultChanged&&(0,l.k)(),_||d||void 0===b||ad.setActiveToolsByName(K(ad,b)),am();let g=new aa(ad,Z);w=g,g.setChatOnly(d),g.setSuppressCompletionNotifications(void 0!==_),b?.length===0?g.setForceEmptySystemPrompt(!0):_&&_.appendSystemPrompt.length>0&&g.setExactSystemPrompt(_.appendSystemPrompt[0]);let h=_?.exactSystemPrompt!==void 0?_.exactSystemPrompt:d?_?_.appendSystemPrompt[0]??"":(0,D.c)(ad.resourceLoader.getAgentsFiles().agentsFiles):null;x.current=null===h?void 0:()=>h,null!==h&&g.setExactSystemPrompt(h),g.start(),g.loadQueueRecovery();let i=ad.sessionId,j=ad.sessionFile;return j&&(0,o.O8)(i,j),g.persistSessionFileIfMissing(),g.onDestroy(()=>{ai(),J.get(i)===g&&J.delete(i)}),J.set(i,g),g.beginExtensionBinding({forceEmptySystemPrompt:b?.length===0}),!function(){let a=O();if(a.size<=12)return;let b=Array.from(a.entries()).filter(([,a])=>a.isAlive()&&!a.isRunning()&&!a.hasSubscribers()).sort((a,b)=>a[1].activityTimestamp-b[1].activityTimestamp),c=a.size-12;for(let[d,e]of b){if(c<=0)break;a.has(d)&&(console.log(`[pi-web] evicting idle unwatched session ${d} (registry cap 12)`),e.shutdown().catch(a=>{console.error(`[pi-web] failed to evict session ${d}:`,a instanceof Error?a.message:a)}),c-=1)}}(),{session:g,realSessionId:i,created:!0}}catch(a){throw aj(),a}})().catch(a=>{throw aj(),a}),ao=setTimeout(()=>{al.cancel(Error("Session startup timed out after 60s (extension/resource binding may be hung); the start lock was released — retry the request to start over."))},6e4),ap=Promise.race([an,ak]).finally(()=>{P.get(a)===ap&&P.delete(a),ag||(ag=!0,clearTimeout(af),clearTimeout(ao),clearTimeout(j),Q.starts.delete(al),X.starts.delete(al),ad())});return al.settled=ap,P.set(a,ap),ap}d()}catch(a){d(a)}})},12394:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{B:()=>p,createAsyncBashTools:()=>n});var e=c(31421),f=c(81186),g=c(75430),h=c(98052),i=a([f,g]);[f,g]=i.then?(await i)():i;class o{append(a){for(this.totalBytes+=a.length,this.tail.push(a),this.tailBytes+=a.length;this.tailBytes>258048&&this.tail.length>1;){let a=this.tail.shift();this.tailBytes-=a.length}if(this.headBytes<4096){let b=4096-this.headBytes;a.length<=b?(this.head.push(a),this.headBytes+=a.length):(this.head.push(a.subarray(0,b)),this.headBytes=4096)}}get hasOmission(){return this.totalBytes>this.headBytes+this.tailBytes}get omittedBytes(){return Math.max(0,this.totalBytes-this.headBytes-this.tailBytes)}toSnapshot(){if(!this.hasOmission)return Buffer.concat(this.tail).toString("utf-8");let a=[...this.head];return a.push(Buffer.from(`
|
|
9
9
|
... ${this.omittedBytes} bytes omitted ...
|
|
10
10
|
|
|
11
11
|
`)),a.push(...this.tail),Buffer.concat(a).toString("utf-8")}reset(){this.head=[],this.tail=[],this.headBytes=0,this.tailBytes=0,this.totalBytes=0}constructor(){this.head=[],this.tail=[],this.headBytes=0,this.tailBytes=0,this.totalBytes=0}}function j(a){if("win32"===process.platform)try{(0,e.spawn)("taskkill",["/F","/T","/PID",String(a)],{stdio:"ignore",detached:!0,windowsHide:!0})}catch{}else try{process.kill(-a,"SIGKILL")}catch{try{process.kill(a,"SIGKILL")}catch{}}}class p{spawn(a,b,c){let d,f=this.nextId++,h=(0,g.getShellConfig)(),i="stdin"===h.commandTransport,j=i?h.args:[...h.args,a],k=(0,e.spawn)(h.shell,j,{cwd:b,detached:"win32"!==process.platform,env:{...c,NO_COLOR:"1",TERM:"dumb"},stdio:["pipe","pipe","pipe"],windowsHide:!0});k.stdin?.on("error",()=>{}),i&&k.stdin?.end(a);let l=new Promise(a=>{d=a}),m={id:f,child:k,command:a,cwd:b,startedAt:Date.now(),buffer:new o,deltaBuffer:new o,exitCode:null,exited:!1,settled:l},n=a=>{m.buffer.append(a),m.deltaBuffer.append(a)};return k.stdout?.on("data",n),k.stderr?.on("data",n),k.once("exit",a=>{m.exited=!0,m.exitCode=a}),k.once("close",()=>d()),k.once("error",a=>{m.exited=!0;let b=Buffer.from(`
|
|
@@ -34,7 +34,7 @@ ${a.content}
|
|
|
34
34
|
${c}
|
|
35
35
|
</documents>`}},17114:(a,b,c)=>{"use strict";c.d(b,{Gc:()=>g,ov:()=>h,pj:()=>i,wx:()=>j});var d=c(55511),e=c(29021);function f(a){return`${a}.queue.json`}function g(a,b,c){return{id:(0,d.randomUUID)(),kind:a,text:b,...c&&c.length>0?{images:c}:{},queuedAt:Date.now()}}function h(a){let b=f(a);if(!(0,e.existsSync)(b))return[];try{let a=JSON.parse((0,e.readFileSync)(b,"utf8"));if(!a||1!==a.version||!Array.isArray(a.entries))return[];return a.entries.filter(a=>!!a&&("steer"===a.kind||"followUp"===a.kind)&&"string"==typeof a.text)}catch{return[]}}function i(a,b){if(!a)return;let c=f(a),g=`${c}.tmp-${process.pid}-${(0,d.randomUUID)()}`;try{(0,e.writeFileSync)(g,JSON.stringify({version:1,entries:b}),"utf8"),(0,e.renameSync)(g,c)}catch(a){try{(0,e.rmSync)(g,{force:!0})}catch{}console.error(`[pi-web] failed to persist queue sidecar ${c}:`,a instanceof Error?a.message:String(a))}}function j(a){try{(0,e.rmSync)(f(a),{force:!0})}catch{}}},18437:(a,b,c)=>{"use strict";function d(a){if(void 0===a)return null;if(!Array.isArray(a))return"images must be an array";if(a.length>10)return"A message can include at most 10 images";for(let b of a)if(!function(a){var b;if(!a||"object"!=typeof a||"image"!==a.type||"string"!=typeof a.data||"string"!=typeof a.mimeType||(b=a.mimeType,!/^image\/[A-Za-z0-9][A-Za-z0-9!#$&^_.+-]*$/.test(b)))return!1;let c=function(a){if(!a||a.length%4!=0)return null;let b=a.endsWith("==")?2:+!!a.endsWith("="),c=a.length-b,d=null;for(let b=0;b<c;b+=1){var e;let c=(e=a.charCodeAt(b))>=65&&e<=90?e-65:e>=97&&e<=122?e-97+26:e>=48&&e<=57?e-48+52:43===e?62:47===e?63:null;if(null===c)return null;d=c}for(let b=c;b<a.length;b+=1)if("="!==a[b])return null;return 2===b&&d%16!=0||1===b&&d%4!=0?null:a.length/4*3-b}(a.data);return null!==c&&c<=0xa00000}(b))return"Each image must be valid base64 image data with an image MIME type and be 10MB or smaller";return null}c.d(b,{kc:()=>d})},18827:(a,b,c)=>{var d=c(27910).Stream;a.exports=function(a){return{ReadStream:function b(c,e){if(!(this instanceof b))return new b(c,e);d.call(this);var f=this;this.path=c,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=65536;for(var g=Object.keys(e=e||{}),h=0,i=g.length;h<i;h++){var j=g[h];this[j]=e[j]}if(this.encoding&&this.setEncoding(this.encoding),void 0!==this.start){if("number"!=typeof this.start)throw TypeError("start must be a Number");if(void 0===this.end)this.end=1/0;else if("number"!=typeof this.end)throw TypeError("end must be a Number");if(this.start>this.end)throw Error("start must be <= end");this.pos=this.start}null!==this.fd?process.nextTick(function(){f._read()}):a.open(this.path,this.flags,this.mode,function(a,b){if(a){f.emit("error",a),f.readable=!1;return}f.fd=b,f.emit("open",b),f._read()})},WriteStream:function b(c,e){if(!(this instanceof b))return new b(c,e);d.call(this),this.path=c,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0;for(var f=Object.keys(e=e||{}),g=0,h=f.length;g<h;g++){var i=f[g];this[i]=e[i]}if(void 0!==this.start){if("number"!=typeof this.start)throw TypeError("start must be a Number");if(this.start<0)throw Error("start must be >= zero");this.pos=this.start}this.busy=!1,this._queue=[],null===this.fd&&(this._open=a.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush())}}}},27486:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{H4:()=>i,t0:()=>j});var e=c(73024),f=c(76760),g=c(75430);c(61446);var h=a([g]);function i(a,b){if(0===b.disabled.length)return[...a];let c=new Set(b.disabled);return a.filter(a=>!c.has(a))}function j(a=function(a=(0,g.getAgentDir)()){return(0,f.join)(a,"extension-tools.json")}()){if(!(0,e.existsSync)(a))return{disabled:[]};try{var b,c;return(c=b=JSON.parse((0,e.readFileSync)(a,"utf8")),"object"!=typeof c||null===c||Array.isArray(c))?{disabled:[]}:{disabled:Array.isArray(b.disabled)?[...new Set(b.disabled.filter(a=>"string"==typeof a&&""!==a.trim()).map(a=>a.trim()))]:[]}}catch{return{disabled:[]}}}g=(h.then?(await h)():h)[0],d()}catch(a){d(a)}})},29040:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{wF:()=>p});var e=c(73024),f=c(76760),g=c(75430),h=c(12969),i=a([g]);g=(i.then?(await i)():i)[0];let q=new Set([400,401,402,403,404,406,408,409,413,422,429,451,500,502,503,504]),r=new Set(["opencode-zen-external","opencode-zen-switch","opencode-zen-runtime","opencode-zen-sync"]);function j(){return(0,f.join)((0,g.getAgentDir)(),"pi-web-error-log.json")}function k(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.id&&"string"==typeof a.timestamp&&("error"===a.level||"warning"===a.level||"info"===a.level)&&"string"==typeof a.source&&"string"==typeof a.message}function l(a){return a.replace(/https?:\/\/[^\s/@]+:[^\s/@]+@/gi,"https://[redacted]@").replace(/Bearer\s+[A-Za-z0-9._~+/=-]+/gi,"Bearer [redacted]").replace(/\bsk-[A-Za-z0-9_-]{8,}\b/g,"sk-[redacted]").replace(/\b(?:oc|opencode|zen)[_-]?[A-Za-z0-9._~-]{12,}\b/gi,"[key-redacted]").replace(/((?:api[_-]?key|token|password|secret)\s*[:=]\s*)([^\s,;]+)/gi,"$1[redacted]")}function m(a){return a.length>2e4?`${a.slice(0,2e4)}…`:a}function n(a){let b=a.match(/\bHTTP\s+(\d{3})\b|\bstatus(?:\s+code)?\s*[:=]?\s*(\d{3})\b|\b(4\d{2}|5\d{2})\b/i),c=Number(b?.[1]??b?.[2]??b?.[3]);return q.has(c)?c:void 0}function o(a){try{(0,h.$)(j(),JSON.stringify(a,null,2))}catch{}}function p(a){let b=function(){globalThis.__piErrorLogState||(globalThis.__piErrorLogState={loaded:!1,entries:[]});let a=globalThis.__piErrorLogState;if(!a.loaded){a.loaded=!0;try{if((0,e.existsSync)(j())){let b=JSON.parse((0,e.readFileSync)(j(),"utf8"));if(Array.isArray(b)){let c=b.filter(k).slice(-500),d=c.filter(a=>!r.has(a.source));d.length!==c.length&&o(d),a.entries=d}}}catch{a.entries=[]}}return a}(),c=m(l(a.message.trim())),d=a.details?m(l(a.details)):void 0,f={id:`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,timestamp:new Date().toISOString(),level:a.level??"error",source:a.source??"unknown",...void 0!==a.statusCode?{statusCode:a.statusCode}:void 0!==n(c)?{statusCode:n(c)}:{},...a.provider?{provider:a.provider}:{},...a.model?{model:a.model}:{},...a.sessionId?{sessionId:a.sessionId}:{},message:c||"Unknown error",...d?{details:d}:{}};return b.entries.push(f),b.entries.length>500&&b.entries.splice(0,b.entries.length-500),o(b.entries),f}d()}catch(a){d(a)}})},30116:(a,b,c)=>{"use strict";c.d(b,{LD:()=>m,kP:()=>o,ni:()=>n});var d=c(97563);function e(a){if(!a)return[];let b=[];for(let c of a){let a=function(a){let b=a.trim();if(!b)return null;let c=b.indexOf("="),d=b.indexOf("(");if(c>0&&(d<0||c<d)){let a=b.slice(0,c).trim();return a?{tool:a,subject:b.slice(c+1),literal:!0}:null}if(d>=0&&b.endsWith(")")){let a=b.slice(0,d).trim();return a?{tool:a,subject:b.slice(d+1,-1)}:null}return{tool:b}}(c);a&&b.push(a)}return b}function f(a){return void 0===a.subject?a.tool:a.literal?`${a.tool}=${a.subject}`:`${a.tool}(${a.subject})`}function g(a){return a.includes("*")||a.includes("?")}function h(a,b){return void 0===b.subject||""!==a&&(b.literal||!g(b.subject)?a===b.subject:(function(a){let b="^";for(let c of a)"*"===c?b+=".*":"?"===c?b+=".":b+=c.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return RegExp(b+"$")})(b.subject).test(a))}function i(a,b){return a.toLowerCase()===b.toLowerCase()}function j(a,b,c){for(let d of a)if(i(d.tool,b)&&h(c,d))return!0;return!1}function k(a){let b=a.trim();return!!b&&!!(/\$\(/.test(b)||/`/.test(b)||/(^|\s)(python|python3|node|ruby|perl|php)\s+-[a-z]*c(\s|$)/i.test(b)||/(^|\s)(sh|bash|zsh)\s+-c(\s|$)/i.test(b)||/(^|\s)(sudo|su)\s/i.test(b)||/;\s*[a-z]/i.test(b)||/\|\s*(sh|bash|zsh|python|python3|node)\b/i.test(b)||/\|\s*tee\b/i.test(b))}let l=["ls","cat","head","tail","grep","rg","find","wc","echo","pwd","cd","git status","git diff","git log","git branch","git remote","git stash list","git show","git ls-files","which","type","env","file","stat","du","df","history","man","less","more","tree","git diff --","git log --","curl -I","curl --head"];function m(a,b,c={}){let e=c.mode??"auto",f=c.readOnly??d.MJ.has(b.toLowerCase()),n=function(a,b){if("bash"===a.toLowerCase()){let a=b?.command;return"string"==typeof a&&a.trim()?`command:${a.trim()}`:""}let c=b??{},d="string"==typeof c.source_path?c.source_path:"",e="string"==typeof c.destination_path?c.destination_path:"";if(d&&e)return e!==d?`${d}\u0000${e}`:d;for(let a of["path","file_path","file","glob","pattern","directory"]){let b=c[a];if("string"==typeof b&&b)return b}return""}(b,c.args),o="bash"===b.toLowerCase(),p=o&&n.startsWith("command:")?n.slice(8):"";if(j(a.deny,b,n))return"deny";if(o&&p){let c=k(p);return j(a.allow,b,n)&&!c?"allow":j(a.ask,b,n)?"ask":c?a.allow.some(a=>i(a.tool,b)&&void 0!==a.subject&&!g(a.subject)&&h(n,a))||"yolo"===e?"allow":"ask":!function(a){let b=a.trim();if(!b||k(b)||/[;&|>]/.test(b))return!1;let c=b.toLowerCase();for(let a of l)if(c===a||c.startsWith(a+" "))return!0;return!1}(p)?"ask"===e?"ask":"allow":"allow"}return j(a.allow,b,n)?"allow":j(a.ask,b,n)?"ask":f?"allow":"ask"===e?"ask":"allow"}function n(a){return{allow:e(a?.allow),ask:e(a?.ask),deny:e(a?.deny)}}function o(a){return{allow:a.allow.map(f),ask:a.ask.map(f),deny:a.deny.map(f)}}},30223:a=>{a.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"],"win32"!==process.platform&&a.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT"),"linux"===process.platform&&a.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")},32302:(a,b,c)=>{"use strict";c.d(b,{M:()=>d,c:()=>e});let d={noExtensions:!0,noSkills:!0,noPromptTemplates:!0,noThemes:!0,noContextFiles:!1,systemPrompt:" ",appendSystemPrompt:[" "],systemPromptOverride:()=>void 0,appendSystemPromptOverride:()=>[]};function e(a){return a.map(a=>a.content).join("\n\n")}},32982:(a,b,c)=>{"use strict";function d(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function e(a){let b=function(a){let b={},c=a?.models;if(!Array.isArray(c))return b;for(let a of c)d(a)&&"string"==typeof a.id&&a.id&&(b[a.id]={...a});return b}(a),c=function(a){let b=a?.modelOverrides;if(!d(b))return{};let c={};for(let[a,e]of Object.entries(b))d(e)&&(c[a]={...e});return c}(a),e=new Set([...Object.keys(b),...Object.keys(c)]),f={};for(let a of e)f[a]={...b[a]??{},...c[a]??{}};return f}c.d(b,{du:()=>e})},35015:(a,b,c)=>{"use strict";function d(a){let b=0===a.tools.length&&!a.loadSkills&&!a.loadExtensions,c="replace"===a.promptMode,d=[a.profileSystemPrompt];return a.inheritedParentContext&&!b&&d.push(a.inheritedParentContext),{chatOnly:b,appendSystemPrompt:d,delegatedTask:a.inheritedParentContext&&b?`${a.task}
|
|
36
36
|
|
|
37
|
-
${a.inheritedParentContext}`:a.task,...b||c?{exactSystemPrompt:a.profileSystemPrompt}:{}}}c.d(b,{r:()=>d})},37173:(a,b,c)=>{"use strict";c.d(b,{yv:()=>f});var d=c(82249);let e=/^(?:\uFEFF)?---[ \t]*(?:\r\n|\n|\r)/;function f(a){let b=function(a){let b=e.exec(a);if(!b)return null;let c=/^---[ \t]*(?:(?:\r\n|\n|\r)|$)/gm;c.lastIndex=b[0].length;let d=c.exec(a);return d?{yaml:a.slice(b[0].length,d.index).replace(/(?:\r\n|\n|\r)$/,""),rest:a.slice(d.index+d[0].length)}:null}(a);if(!b)return{data:null,rest:a};try{let a=(0,d.Hh)(b.yaml);if(a&&"object"==typeof a&&!Array.isArray(a))return{data:a,rest:b.rest}}catch{}return{data:null,rest:b.rest}}},39466:(a,b,c)=>{var d=c(81115),e=process.cwd,f=null,g=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return f||(f=e.call(process)),f};try{process.cwd()}catch(a){}if("function"==typeof process.chdir){var h=process.chdir;process.chdir=function(a){f=null,h.call(process,a)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,h)}a.exports=function(a){var b,c,e;function f(b){return b?function(c,d,e){return b.call(a,c,d,function(a){m(a)&&(a=null),e&&e.apply(this,arguments)})}:b}function h(b){return b?function(c,d){try{return b.call(a,c,d)}catch(a){if(!m(a))throw a}}:b}function i(b){return b?function(c,d,e,f){return b.call(a,c,d,e,function(a){m(a)&&(a=null),f&&f.apply(this,arguments)})}:b}function j(b){return b?function(c,d,e){try{return b.call(a,c,d,e)}catch(a){if(!m(a))throw a}}:b}function k(b){return b?function(c,d,e){function f(a,b){b&&(b.uid<0&&(b.uid+=0x100000000),b.gid<0&&(b.gid+=0x100000000)),e&&e.apply(this,arguments)}return"function"==typeof d&&(e=d,d=null),d?b.call(a,c,d,f):b.call(a,c,f)}:b}function l(b){return b?function(c,d){var e=d?b.call(a,c,d):b.call(a,c);return e&&(e.uid<0&&(e.uid+=0x100000000),e.gid<0&&(e.gid+=0x100000000)),e}:b}function m(a){return!a||"ENOSYS"===a.code||(!process.getuid||0!==process.getuid())&&("EINVAL"===a.code||"EPERM"===a.code)}d.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&((c=a).lchmod=function(a,b,e){c.open(a,d.O_WRONLY|d.O_SYMLINK,b,function(a,d){if(a){e&&e(a);return}c.fchmod(d,b,function(a){c.close(d,function(b){e&&e(a||b)})})})},c.lchmodSync=function(a,b){var e,f=c.openSync(a,d.O_WRONLY|d.O_SYMLINK,b),g=!0;try{e=c.fchmodSync(f,b),g=!1}finally{if(g)try{c.closeSync(f)}catch(a){}else c.closeSync(f)}return e}),a.lutimes||(e=a,d.hasOwnProperty("O_SYMLINK")&&e.futimes?(e.lutimes=function(a,b,c,f){e.open(a,d.O_SYMLINK,function(a,d){if(a){f&&f(a);return}e.futimes(d,b,c,function(a){e.close(d,function(b){f&&f(a||b)})})})},e.lutimesSync=function(a,b,c){var f,g=e.openSync(a,d.O_SYMLINK),h=!0;try{f=e.futimesSync(g,b,c),h=!1}finally{if(h)try{e.closeSync(g)}catch(a){}else e.closeSync(g)}return f}):e.futimes&&(e.lutimes=function(a,b,c,d){d&&process.nextTick(d)},e.lutimesSync=function(){})),a.chown=i(a.chown),a.fchown=i(a.fchown),a.lchown=i(a.lchown),a.chmod=f(a.chmod),a.fchmod=f(a.fchmod),a.lchmod=f(a.lchmod),a.chownSync=j(a.chownSync),a.fchownSync=j(a.fchownSync),a.lchownSync=j(a.lchownSync),a.chmodSync=h(a.chmodSync),a.fchmodSync=h(a.fchmodSync),a.lchmodSync=h(a.lchmodSync),a.stat=k(a.stat),a.fstat=k(a.fstat),a.lstat=k(a.lstat),a.statSync=l(a.statSync),a.fstatSync=l(a.fstatSync),a.lstatSync=l(a.lstatSync),a.chmod&&!a.lchmod&&(a.lchmod=function(a,b,c){c&&process.nextTick(c)},a.lchmodSync=function(){}),a.chown&&!a.lchown&&(a.lchown=function(a,b,c,d){d&&process.nextTick(d)},a.lchownSync=function(){}),"win32"===g&&(a.rename="function"!=typeof a.rename?a.rename:function(b){function c(c,d,e){var f=Date.now(),g=0;b(c,d,function h(i){if(i&&("EACCES"===i.code||"EPERM"===i.code||"EBUSY"===i.code)&&Date.now()-f<6e4){setTimeout(function(){a.stat(d,function(a,f){a&&"ENOENT"===a.code?b(c,d,h):e(i)})},g),g<100&&(g+=10);return}e&&e(i)})}return Object.setPrototypeOf&&Object.setPrototypeOf(c,b),c}(a.rename)),a.read="function"!=typeof a.read?a.read:function(b){function c(c,d,e,f,g,h){var i;if(h&&"function"==typeof h){var j=0;i=function(k,l,m){if(k&&"EAGAIN"===k.code&&j<10)return j++,b.call(a,c,d,e,f,g,i);h.apply(this,arguments)}}return b.call(a,c,d,e,f,g,i)}return Object.setPrototypeOf&&Object.setPrototypeOf(c,b),c}(a.read),a.readSync="function"!=typeof a.readSync?a.readSync:(b=a.readSync,function(c,d,e,f,g){for(var h=0;;)try{return b.call(a,c,d,e,f,g)}catch(a){if("EAGAIN"===a.code&&h<10){h++;continue}throw a}})}},41035:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$u:()=>z,I6:()=>x,IR:()=>s,gY:()=>y,o2:()=>B,ph:()=>w,pv:()=>C,rh:()=>t,st:()=>D,tP:()=>A});var e=c(75430);c(82249);var f=c(29021),g=c(33873),h=c(37173);c(12969);var i=c(83739),j=c(70274),k=c(14916),l=a([e,j]);[e,j]=l.then?(await l)():l;let A="pi-web:subagent",B="pi-web:subagent-status",C="pi-web:subagent-result",D=["Agent","get_subagent_result","steer_subagent"],E=["read","bash","edit","write","grep","find","ls"],F=new Set(E),G=new Set(D),H=new Set(["off","minimal","low","medium","high","xhigh","max"]),I=[{name:"general-purpose",displayName:"General purpose",description:"Handle a focused implementation or investigation task",systemPrompt:"Work autonomously on the delegated task. Keep the final answer concise and include important files, decisions, and remaining risks.",tools:E,loadSkills:!1,loadExtensions:!1,promptMode:"append",inheritContext:!1,runInBackground:!1,enabled:!0,scope:"builtin"},{name:"explore",displayName:"Explore",description:"Quickly inspect a codebase without modifying it",systemPrompt:"Explore the codebase to answer the delegated question. Do not modify files. Report concrete findings with file paths and relevant symbols.",tools:[...k.kU],loadSkills:!1,loadExtensions:!1,promptMode:"append",inheritContext:!1,runInBackground:!1,enabled:!0,scope:"builtin"},{name:"plan",displayName:"Plan",description:"Design an implementation plan without modifying files",systemPrompt:"Produce an implementation-ready plan for the delegated task. Inspect the repository as needed, do not modify files, and call out dependencies, risks, and verification steps.",tools:[...k.kU],loadSkills:!1,loadExtensions:!1,promptMode:"append",inheritContext:!1,runInBackground:!1,enabled:!0,scope:"builtin"}];function m(a){return"string"==typeof a&&a.trim()?a.trim():void 0}function n(a,b){return"boolean"==typeof a?a:b}function o(a,b){return"boolean"==typeof a?a:!!Array.isArray(a)||"string"==typeof a||b}function p(a){return(Array.isArray(a)?a:"string"==typeof a?a.split(","):[]).map(a=>String(a).trim()).filter(Boolean)}function q(a,b){let c=p(a);return c.includes("none")?[]:c.includes("all")||c.includes("*")?[...E]:0===c.length?[...b]:[...new Set(c.filter(a=>F.has(a)))]}function r(a){return[...new Set(p(a).filter(a=>a.toLowerCase().startsWith("ext:")))]}function s(a){let b,c=new Map((b=(0,j.Q$)(),I.map(a=>({...a,tools:[...a.tools],enabled:!b.has(a.name.toLowerCase())}))).map(a=>[a.name.toLowerCase(),a]));for(let[b,d]of[[(0,g.join)((0,e.getAgentDir)(),"agents"),"global"],[(0,g.join)((0,g.resolve)(a),".agents","agents"),"workspace"],[(0,g.join)((0,g.resolve)(a),".pi","agents"),"project"]])for(let e of function(a,b,c){return(0,f.existsSync)(a)?"global"===b||(0,i.x)(a,new Set([c]))?(0,f.readdirSync)(a,{withFileTypes:!0}).filter(a=>a.isFile()&&a.name.endsWith(".md")).map(c=>(function(a,b){try{let c=(0,f.readFileSync)(a,"utf8"),{data:d,rest:e}=(0,h.yv)(c),i=m(d?.name)??(0,g.basename)(a,".md");if(!/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(i))return null;let j=m(d?.thinking),k="number"==typeof d?.max_turns?Math.floor(d.max_turns):void 0,l=q(d?.tools,E),p=new Set(q(d?.disallowed_tools,[])),s=new Set(r(d?.disallowed_tools).map(a=>a.toLowerCase())),t=r(d?.tools).filter(a=>!s.has(a.toLowerCase()));return{name:i,displayName:m(d?.display_name)??i,description:m(d?.description)??i,systemPrompt:e.trim(),tools:l.filter(a=>!p.has(a)),...t.length>0?{extensionTools:t}:{},loadSkills:o(d?.load_skills??d?.skills,!1),loadExtensions:o(d?.load_extensions??d?.extensions,t.length>0),...m(d?.model)?{model:m(d?.model)}:{},...j&&H.has(j)?{thinking:j}:{},...k&&k>0?{maxTurns:k}:{},inheritContext:n(d?.inherit_context,!1),runInBackground:n(d?.run_in_background,!1),promptMode:d?.prompt_mode==="replace"?"replace":"append",...m(d?.color)?{color:m(d?.color)}:{},...d?.isolation==="worktree"||d?.isolation==="off"?{isolation:d.isolation}:{},..."boolean"==typeof d?.persist_session?{persistSession:d.persist_session}:{},enabled:n(d?.enabled,!0),scope:b,filePath:a}}catch{return null}})((0,g.join)(a,c.name),b)).filter(a=>null!==a):[]:[]}(b,d,a))c.set(e.name.toLowerCase(),e);return[...c.values()].sort((a,b)=>a.displayName.localeCompare(b.displayName))}function t(a,b){return s(a).find(a=>a.name.toLowerCase()===b.trim().toLowerCase()&&a.enabled)}function u(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function v(a){let b=a.find(a=>"custom"===a.type&&a.customType===A);if(!b||"custom"!==b.type||!u(b.data))return null;let c=b.data;return 1!==c.version||"string"!=typeof c.parentSessionId||"string"!=typeof c.parentSessionPath?null:c}function w(a){let b=v(a);if(!b)return null;let c=b.resourceSnapshot,d=u(c)&&!0===c.loadSkills,e=u(c)&&!0===c.loadExtensions;return u(c)&&1===c.version&&Array.isArray(c.appendSystemPrompt)&&c.appendSystemPrompt.every(a=>"string"==typeof a)&&Array.isArray(c.tools)&&c.tools.every(a=>"string"==typeof a&&a.length>0&&!G.has(a)&&(F.has(a)||e))?{appendSystemPrompt:[...c.appendSystemPrompt],tools:[...new Set(c.tools)],loadSkills:d,loadExtensions:e,..."string"==typeof c.exactSystemPrompt?{exactSystemPrompt:c.exactSystemPrompt}:{}}:null}function x(a,b){return[...new Set([...a,...[...b].filter(a=>!G.has(a))])]}function y(a,b){let c=b.map(a=>a.slice(4).toLowerCase());return[...a].flatMap(a=>{let b=a.path.replaceAll("\\","/").split("/").at(-2)??a.path,d=(a.sourceInfo?.source??"").replace(/^npm:/,""),e=new Set([b.toLowerCase(),d.toLowerCase()]);return c.some(b=>{if("*"===b)return!0;let[c,d]=b.split("/",2);return e.has(c)&&(!d||a.tools.has(d))})?[...a.tools.keys()].filter(a=>c.some(b=>{if("*"===b||b.endsWith("/*"))return"*"===b||e.has(b.slice(0,-2));let[c,d]=b.split("/",2);return e.has(c)&&(!d||d===a)})):[]})}function z(a,b,c){let d=v(a);if(!d)return null;let e=[...a].reverse().find(a=>"custom"===a.type&&(a.customType===C||a.customType===B)),f=e?.type==="custom"&&e.customType===C?e:void 0,g=f?.type==="custom"&&u(f.data)?f.data:void 0,h=e?.type==="custom"&&e.customType===B?e:void 0,i=h?.type==="custom"&&u(h.data)?h.data:void 0,j=g&&("completed"===g.status||"failed"===g.status||"aborted"===g.status)?g.status:i?.version===1&&("queued"===i.status||"running"===i.status)?i.status:"interrupted";return{sessionId:b,sessionPath:c,parentSessionId:d.parentSessionId,parentToolCallId:"string"==typeof d.parentToolCallId?d.parentToolCallId:"",profile:"string"==typeof d.profile?d.profile:"general-purpose",description:"string"==typeof d.description?d.description:"Subagent",task:"string"==typeof d.task?d.task:"",runInBackground:!0===d.runInBackground,status:j,createdAt:"string"==typeof d.createdAt?d.createdAt:"",...g&&"string"==typeof g.completedAt?{completedAt:g.completedAt}:{},...g&&"string"==typeof g.result?{result:g.result}:{},...g&&"string"==typeof g.error?{error:g.error}:{},..."string"==typeof d.worktreePath?{worktreePath:d.worktreePath}:{},..."string"==typeof d.worktreeBranch?{worktreeBranch:d.worktreeBranch}:{},...g&&"string"==typeof g.worktreeCleanupError?{worktreeCleanupError:g.worktreeCleanupError}:{}}}d()}catch(a){d(a)}})},44290:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{lN:()=>j});var e=c(74986),f=c(97563),g=c(30116),h=a([e]);function i(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=a.permissionRules,c=(0,g.kP)((0,g.ni)(b));return{collaborationMode:(0,f.UY)(a.collaborationMode),tokenMode:(0,f.wI)(a.tokenMode),toolApprovalMode:(0,f.g0)(a.toolApprovalMode),permissionRules:{allow:Array.isArray(c.allow)?c.allow:[],ask:Array.isArray(c.ask)?c.ask:[],deny:Array.isArray(c.deny)?c.deny:[]}}}function j(a){let b=(0,f.Md)(),c=(0,e.Tu)();if(a){let b=c.modesPerSession;if(b&&"object"==typeof b&&!Array.isArray(b)){let c=i(b[a]);if(c)return c}}return i(c.modes)??b}e=(h.then?(await h)():h)[0],d()}catch(a){d(a)}})},54035:(a,b,c)=>{"use strict";c(14916).C1,Symbol("cleared-tool-selection")},54366:(a,b,c)=>{"use strict";function d(){return{defaultAgentType:null,modeId:null,configValues:{},autoProcess:!0,maxConcurrent:1,mergeStrategy:"merge",deleteWorktreeDefault:!0,preflightCommand:null,initCommand:null,stagePrompts:null}}c.d(b,{os:()=>d})},55950:(a,b,c)=>{"use strict";c.d(b,{V:()=>d});class d{enqueue(a,b,c,d,e){let f,g=this.parents.get(a)??{limit:1,active:0,items:[]};g.limit=Math.max(1,Math.floor(b)||1);let h=new Promise((a,b)=>{f={run:c,onState:d,onCancel:e,resolve:a,reject:b,state:"queued",cancelled:!1}});return g.items.push(f),this.parents.set(a,g),d("queued"),this.pump(a,g),{promise:h,cancel:()=>"queued"===f.state&&!f.cancelled&&(f.cancelled=!0,Promise.resolve(f.onCancel?.()).then(()=>f.resolve(void 0),a=>f.reject(a)),this.pump(a,g),!0)}}pump(a,b){for(;b.active<b.limit&&b.items.length>0;){let c=b.items.shift();c.cancelled||(c.state="running",c.onState("running"),b.active+=1,c.run().then(c.resolve,c.reject).finally(()=>{b.active-=1,this.pump(a,b),0===b.active&&0===b.items.length&&this.parents.delete(a)}))}}constructor(){this.parents=new Map}}},57856:(a,b,c)=>{"use strict";c.d(b,{TQ:()=>e,p1:()=>d});let d=92;function e(a,b=d,c=40){return Object.freeze({terminal:Object.freeze({columns:b,rows:c,kittyProtocolActive:!1}),requestRender:a})}},61446:(a,b,c)=>{"use strict";let d=c(62404),{toPromise:e,toSync:f,toSyncOptions:g}=c(13884);async function h(a,b){let c=await e(d.lock)(a,b);return e(c)}a.exports=h,a.exports.lock=h,a.exports.unlock=function(a,b){return e(d.unlock)(a,b)},a.exports.lockSync=function(a,b){let c=f(d.lock)(a,g(b));return f(c)},a.exports.unlockSync=function(a,b){return f(d.unlock)(a,g(b))},a.exports.check=function(a,b){return e(d.check)(a,b)},a.exports.checkSync=function(a,b){return f(d.check)(a,g(b))}},61577:(a,b,c)=>{"use strict";async function d(a,b,c){if(!b.model&&!b.thinkingLevel)return{modelDefaultChanged:!1};let d=!1;return b.model&&c.model&&b.model.provider===c.model.provider&&b.model.modelId===c.model.modelId&&(a.setDefaultModelAndProvider(c.model.provider,c.model.modelId),d=!0),b.thinkingLevel&&(c.supportsThinking||"off"!==c.thinkingLevel)&&a.setDefaultThinkingLevel(c.thinkingLevel),await a.flush(),{modelDefaultChanged:d}}c.d(b,{o:()=>d})},62404:(a,b,c)=>{"use strict";let d=c(33873),e=c(93329),f=c(81463),g=c(75856),h=c(16176),i={};function j(a,b){return b.lockfilePath||`${a}.lock`}function k(a,b,c){if(!b.realpath)return c(null,d.resolve(a));b.fs.realpath(a,c)}function l(a,b){return a.mtime.getTime()<Date.now()-b.stale}function m(a,b,c){b.fs.rmdir(j(a,b),a=>{if(a&&"ENOENT"!==a.code)return c(a);c()})}function n(a,b,c){b.released=!0,b.updateTimeout&&clearTimeout(b.updateTimeout),i[a]===b&&delete i[a],b.options.onCompromised(c)}function o(a,b,c){k(a,b={fs:e,realpath:!0,...b},(a,d)=>{if(a)return c(a);let e=i[d];if(!e)return c(Object.assign(Error("Lock is not acquired/owned by you"),{code:"ENOTACQUIRED"}));e.updateTimeout&&clearTimeout(e.updateTimeout),e.released=!0,delete i[d],m(d,b,c)})}g(()=>{for(let a in i){let b=i[a].options;try{b.fs.rmdirSync(j(a,b))}catch(a){}}}),a.exports.lock=function(a,b,c){(b={stale:1e4,update:null,realpath:!0,retries:0,fs:e,onCompromised:a=>{throw a},...b}).retries=b.retries||0,b.retries="number"==typeof b.retries?{retries:b.retries}:b.retries,b.stale=Math.max(b.stale||0,2e3),b.update=null==b.update?b.stale/2:b.update||0,b.update=Math.max(Math.min(b.update,b.stale/2),1e3),k(a,b,(a,d)=>{if(a)return c(a);let e=f.operation(b.retries);e.attempt(()=>{!function a(b,c,d){let e=j(b,c);c.fs.mkdir(e,f=>f?"EEXIST"!==f.code?d(f):c.stale<=0?d(Object.assign(Error("Lock file is already being held"),{code:"ELOCKED",file:b})):void c.fs.stat(e,(e,f)=>e?"ENOENT"===e.code?a(b,{...c,stale:0},d):d(e):l(f,c)?void m(b,c,e=>{if(e)return d(e);a(b,{...c,stale:0},d)}):d(Object.assign(Error("Lock file is already being held"),{code:"ELOCKED",file:b}))):h.probe(e,c.fs,(a,b,f)=>{if(a)return c.fs.rmdir(e,()=>{}),d(a);d(null,b,f)}))}(d,b,(a,f,g)=>{if(e.retry(a))return;if(a)return c(e.mainError());let k=i[d]={lockfilePath:j(d,b),mtime:f,mtimePrecision:g,options:b,lastUpdate:Date.now()};!function a(b,c){let d=i[b];!d.updateTimeout&&(d.updateDelay=d.updateDelay||c.update,d.updateTimeout=setTimeout(()=>{d.updateTimeout=null,c.fs.stat(d.lockfilePath,(e,f)=>{let g=d.lastUpdate+c.stale<Date.now();if(e)return"ENOENT"===e.code||g?n(b,d,Object.assign(e,{code:"ECOMPROMISED"})):(d.updateDelay=1e3,a(b,c));if(d.mtime.getTime()!==f.mtime.getTime())return n(b,d,Object.assign(Error("Unable to update lock within the stale threshold"),{code:"ECOMPROMISED"}));let i=h.getMtime(d.mtimePrecision);c.fs.utimes(d.lockfilePath,i,i,e=>{let f=d.lastUpdate+c.stale<Date.now();if(!d.released){if(e)return"ENOENT"===e.code||f?n(b,d,Object.assign(e,{code:"ECOMPROMISED"})):(d.updateDelay=1e3,a(b,c));d.mtime=i,d.lastUpdate=Date.now(),d.updateDelay=null,a(b,c)}})})},d.updateDelay),d.updateTimeout.unref&&d.updateTimeout.unref())}(d,b),c(null,a=>{if(k.released)return a&&a(Object.assign(Error("Lock is already released"),{code:"ERELEASED"}));o(d,{...b,realpath:!1},a)})})})})},a.exports.unlock=o,a.exports.check=function(a,b,c){(b={stale:1e4,realpath:!0,fs:e,...b}).stale=Math.max(b.stale||0,2e3),k(a,b,(a,d)=>{if(a)return c(a);b.fs.stat(j(d,b),(a,d)=>a?"ENOENT"===a.code?c(null,!1):c(a):c(null,!l(d,b)))})},a.exports.getLocks=function(){return i}},65562:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Q1:()=>u,Rv:()=>v,_o:()=>s,fd:()=>t,h6:()=>r,z1:()=>m});var e=c(29021),f=c(33873),g=c(75430),h=c(12969),i=c(69420),j=c(54366),k=a([g]);function l(){return(0,f.join)((0,g.getAgentDir)(),"tasks")}function m(a){return(0,f.join)(l(),(0,i.A0)(a).replace(/^\/+/,"").split("/").filter(Boolean).map(a=>encodeURIComponent(a)).join("--")||"root")}function n(a){return(0,f.join)(m(a),"tasks.jsonl")}function o(){return(0,f.join)(l(),"settings.json")}function p(a){(0,e.existsSync)(a)||(0,e.mkdirSync)(a,{recursive:!0,mode:448})}function q(a){if(!(0,e.existsSync)(a))return[];let b=(0,e.readFileSync)(a,"utf8"),c=[];for(let a of b.split("\n")){let b=a.trim();if(b)try{c.push(JSON.parse(b))}catch{}}return c}function r(a){return q(n(a)).sort((a,b)=>a.sortOrder-b.sortOrder||a.id-b.id)}function s(a,b){return r(a).find(a=>a.id===b)??null}function t(a){let b,c=n(a.projectRoot),d=r(a.projectRoot),e=d.findIndex(b=>b.id===a.id),f={...a,updatedAt:new Date().toISOString()};e>=0?d[e]=f:d.push(f),p(c.substring(0,c.lastIndexOf("/"))),b=d.map(a=>JSON.stringify(a)).join("\n")+"\n",(0,h.$)(c,b)}function u(a,b){let c=(0,f.join)(m(a),"events.jsonl"),d=q(c).reduce((a,b)=>Math.max(a,b.id),0)+1,g={...b,payload:b.payload??null,id:d,createdAt:new Date().toISOString()};return p(c.substring(0,c.lastIndexOf("/"))),(0,e.writeFileSync)(c,JSON.stringify(g)+"\n",{encoding:"utf8",flag:"a",mode:384}),g}function v(a){let b=function(a){let b=o();if(!(0,e.existsSync)(b))return null;try{return JSON.parse((0,e.readFileSync)(b,"utf8"))[a]??null}catch{return null}}(a),c=function(){let a=o();if(!(0,e.existsSync)(a))return(0,j.os)();try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));return{...(0,j.os)(),...b._global??{}}}catch{return(0,j.os)()}}();return b?{...c,...b,configValues:{...c.configValues,...b.configValues??{}}}:c}g=(k.then?(await k)():k)[0],d()}catch(a){d(a)}})},65869:(a,b,c)=>{"use strict";function d(){let a=(globalThis.__piModelsCacheState||(globalThis.__piModelsCacheState={entries:new Map,inFlight:new Map,generation:0}),globalThis.__piModelsCacheState);a.generation+=1,a.entries.clear(),a.inFlight.clear()}c.d(b,{k:()=>d})},67313:(a,b,c)=>{var d=c(92759);b.operation=function(a){return new d(b.timeouts(a),{forever:a&&a.forever,unref:a&&a.unref,maxRetryTime:a&&a.maxRetryTime})},b.timeouts=function(a){if(a instanceof Array)return[].concat(a);var b={retries:10,factor:2,minTimeout:1e3,maxTimeout:1/0,randomize:!1};for(var c in a)b[c]=a[c];if(b.minTimeout>b.maxTimeout)throw Error("minTimeout is greater than maxTimeout");for(var d=[],e=0;e<b.retries;e++)d.push(this.createTimeout(e,b));return a&&a.forever&&!d.length&&d.push(this.createTimeout(e,b)),d.sort(function(a,b){return a-b}),d},b.createTimeout=function(a,b){var c=Math.round((b.randomize?Math.random()+1:1)*b.minTimeout*Math.pow(b.factor,a));return Math.min(c,b.maxTimeout)},b.wrap=function(a,c,d){if(c instanceof Array&&(d=c,c=null),!d)for(var e in d=[],a)"function"==typeof a[e]&&d.push(e);for(var f=0;f<d.length;f++){var g=d[f],h=a[g];a[g]=(function(d){var e=b.operation(c),f=Array.prototype.slice.call(arguments,1),g=f.pop();f.push(function(a){e.retry(a)||(a&&(arguments[0]=e.mainError()),g.apply(this,arguments))}),e.attempt(function(){d.apply(a,f)})}).bind(a,h),a[g].options=c}}},69420:(a,b,c)=>{"use strict";function d(a){return/^[a-zA-Z]:[\\/]/.test(a)||a.startsWith("\\\\")?a.replace(/\\/g,"/"):a}c.d(b,{A0:()=>d})},69453:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{H6:()=>u,O8:()=>G,Vg:()=>H,mD:()=>z,os:()=>F});var e=c(75430),f=c(29021),g=c(79748),h=c(33873),i=c(97563),j=c(7535),k=c(7561);c(4658);var l=c(88002),m=c(74986),n=c(85895),o=c(41035),p=c(88449),q=a([e,m,o,p]);[e,m,o,p]=q.then?(await q)():q;let I=p.q8,J=null;function r(a,b,c){let d=(0,f.openSync)(a,"r");try{let a=[],e=0,g=0,h=!1;for(;e<b&&g<c;){let i=Buffer.allocUnsafe(Math.min(4096,b-e)),j=(0,f.readSync)(d,i,0,i.length,e);if(0===j){h=!0;break}e+=j;let k=i.subarray(0,j),l=k.length;for(let a=0;a<k.length;a+=1)if(10===k[a]&&(g+=1)===c){l=a+1;break}a.push(k.subarray(0,l))}let i=Buffer.concat(a).toString("utf8"),j=i.split("\n");return h||i.endsWith("\n")||j.pop(),""===j.at(-1)&&j.pop(),j.map(a=>a.endsWith("\r")?a.slice(0,-1):a)}finally{(0,f.closeSync)(d)}}function s(a,b){let c=(0,f.openSync)(a,"r");try{let a=(0,f.fstatSync)(c).size,d=Math.max(0,a-b),e=Buffer.allocUnsafe(a-d),g=(0,f.readSync)(c,e,0,e.length,d);if(0===g)return[];let h=e.subarray(0,g).toString("utf8").split("\n");if(d>0){let a=Buffer.allocUnsafe(1);(0,f.readSync)(c,a,0,1,d-1),10!==a[0]&&h.shift()}return""===h.at(-1)&&h.pop(),h.map(a=>a.endsWith("\r")?a.slice(0,-1):a)}finally{(0,f.closeSync)(c)}}function t(a){return a.flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}})}function u(a){let b;if(a){try{b=s(a,65536)}catch{return}for(let a=b.length-1;a>=0;a-=1){let c=function(a){try{let b=JSON.parse(a);if("session"===b.type)return;return"string"==typeof b.id&&b.id?b.id:void 0}catch{return}}(b[a]);if(c)return c}}}async function v(a){let b=[...new Set(a.map(a=>a.cwd).filter(Boolean))],c=new Map;return await Promise.all(b.map(async a=>{c.set(a,await (0,l.KI)(a))})),a.map(a=>{let b=a.cwd?c.get(a.cwd):void 0,d=b?.projectRoot??a.cwd;return{...a,projectRoot:d,projectKey:(0,j.z)(d),...b?.branch?{branch:b.branch}:{},...b?.isWorktree?{isWorktree:!0}:{}}})}async function w(a){let b=(0,m.Tu)(),c=Array.isArray(b.sessionPins)?b.sessionPins:[],d=new Set(c.filter(a=>"string"==typeof a)),f=(0,n.JJ)((0,e.getAgentDir)()),g=new Map;for(let b of a)g.set((0,k.$)(b.path),b.id);return v(a.map(a=>(function(a,b,c){G(a.id,a.path);let{originSessionId:d,subagent:e}=function(a,b){let c=a.parentSessionPath?b.get((0,k.$)(a.parentSessionPath)):void 0;if(!a.parentSessionPath)return{originSessionId:c,subagent:null};try{var d;let b,e=(0,o.$u)((d=a.path,(b=t(r(d,262144,400).slice(1))).some(a=>"custom"===a.type&&a.customType===o.tP)?[...b,...t(s(d,262144))]:b),a.id,a.path);return{originSessionId:c,subagent:e}}catch{return{originSessionId:c,subagent:null}}}(a,b),f=!0===a.detailsPending;return{path:a.path,id:a.id,cwd:a.cwd,name:a.name,created:a.created.toISOString(),modified:a.modified.toISOString(),messageCount:a.messageCount,firstMessage:f&&!a.firstMessage?"":(0,i.CS)(a.firstMessage||"(no messages)").slice(0,300),parentSessionId:d,...e?{relation:{kind:"subagent",parentSessionId:e.parentSessionId,profile:e.profile,description:e.description,status:e.status,...e.createdAt?{createdAt:e.createdAt}:{},...e.completedAt?{completedAt:e.completedAt}:{}}}:a.parentSessionPath?{relation:{kind:"fork",...d?{originSessionId:d}:{}}}:{},transient:!1,...f?{detailsPending:!0}:{},pinned:c.pinSet.has(a.id),archived:!!c.archive[a.id],...c.archive[a.id]?{archivedAt:c.archive[a.id].archivedAt}:{},importedFrom:a.importedFrom}})(a,g,{pinSet:d,archive:f})))}async function x(){let a=globalThis.__piListSessionsOverride??I;return w(await a())}async function y(a={}){a.force&&z();let b=globalThis.__piSessionListGeneration??0,c=globalThis.__piSessionListCache;if(c&&c.generation===b&&Date.now()-c.ts<1e4)return c.data;let d=globalThis.__piSessionListStaleData;if(a.allowStale&&(c||d))return y().catch(()=>void 0),c?.data??d;if(globalThis.__piSessionListPromise&&globalThis.__piSessionListPromiseGeneration===b)return globalThis.__piSessionListPromise;let e=x().then(a=>(globalThis.__piSessionListGeneration??0)!==b?y():(globalThis.__piSessionListCache={data:a,ts:Date.now(),generation:b},globalThis.__piSessionListStaleData=a,a)).finally(()=>{globalThis.__piSessionListPromise===e&&(globalThis.__piSessionListPromise=void 0,globalThis.__piSessionListPromiseGeneration=void 0)});return globalThis.__piSessionListPromise=e,globalThis.__piSessionListPromiseGeneration=b,e}function z(){let a=globalThis.__piSessionListCache;a&&(globalThis.__piSessionListStaleData=a.data),globalThis.__piSessionListGeneration=(globalThis.__piSessionListGeneration??0)+1,globalThis.__piSessionListCache=void 0,J&&clearTimeout(J),J=setTimeout(()=>{J=null},300)}function A(){return globalThis.__piSessionPathCache||(globalThis.__piSessionPathCache=new Map),globalThis.__piSessionPathCache}function B(){return globalThis.__piPathToSessionIdCache||(globalThis.__piPathToSessionIdCache=new Map),globalThis.__piPathToSessionIdCache}let K=/^[A-Za-z0-9](?:[A-Za-z0-9._-]*[A-Za-z0-9])?$/;function C(){return(0,h.join)((0,e.getAgentDir)(),"sessions")}function D(a,b=(0,h.resolve)(C())){let c=(0,h.resolve)(a),d=(0,h.relative)(b,c);return""===d||".."===d||d.startsWith(`..${h.sep}`)||(0,h.isAbsolute)(d)?null:c}async function E(a){let b,c;if(!K.test(a))return null;let d=(0,h.resolve)(C());try{b=await (0,g.readdir)(d,{withFileTypes:!0})}catch{return null}let e=`_${a}.jsonl`;for(let f of b){let b;if(!f.isDirectory()&&!f.isSymbolicLink())continue;let i=D((0,h.join)(d,f.name),d);if(i){try{b=await (0,g.readdir)(i)}catch{continue}for(let f of b){if(!f.endsWith(e))continue;let b=D((0,h.join)(i,f),d);if(b){try{if(function(a){let b=r(a,65536,1)[0]?.trimEnd();if(!b)return null;try{let a=JSON.parse(b);return"session"===a.type?a:null}catch{return null}}(b)?.id!==a)continue}catch{continue}if(c&&c!==b)return null;c=b}}}}return c??null}async function F(a){let b=A().get(a);if(b)return b;let c=await E(a);return c?G(a,c):await y(),A().get(a)??null}function G(a,b){let c=(0,h.normalize)(b),d=A(),e=B(),f=d.get(a),g=e.get(c);f&&f!==c&&e.get(f)===a&&e.delete(f),g&&g!==a&&d.get(g)===c&&d.delete(g),d.set(a,c),e.set(c,a);let i=A();for(;i.size>4096;){let a=i.keys().next().value;if(void 0===a)break;!function(a){let b=A(),c=B(),d=b.get(a);b.delete(a),d&&c.get(d)===a&&c.delete(d)}(a)}}function H(a){for(let b=a.length-1;b>=0;b--){let c=a[b];if("model_change"===c.type)return{provider:c.provider,modelId:c.modelId}}return null}d()}catch(a){d(a)}})},70274:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{M6:()=>i,N:()=>l,Q$:()=>k,hd:()=>j});var e=c(73024),f=c(76760),g=c(75430);c(12969);var h=a([g]);function i(a=(0,g.getAgentDir)()){return(0,f.join)(a,"agents","settings.json")}function j(a=i()){var b,c,d,f;let g=function(a){if(!(0,e.existsSync)(a))return{};let b=JSON.parse((0,e.readFileSync)(a,"utf8"));if(null===b||"object"!=typeof b||Array.isArray(b))throw Error("Invalid subagent settings: expected an object");return b}(a);return c=!0===g.builtInEnabled,b=g.maxConcurrent,d="number"==typeof b&&Number.isInteger(b)&&b>=1&&b<=32?b:10,f=function(a){if(!Array.isArray(a))return[];let b=[],c=new Set;for(let d of a){if("string"!=typeof d)continue;let a=d.trim(),e=a.toLowerCase();!a||c.has(e)||(c.add(e),b.push(a))}return b}(g.disabledBuiltIns),Object.defineProperty({builtInEnabled:c,disabledBuiltIns:f},"maxConcurrent",{value:d,enumerable:!1,configurable:!0})}function k(a=i()){try{return new Set(j(a).disabledBuiltIns.map(a=>a.toLowerCase()))}catch{return new Set}}function l(a=i()){try{return j(a).builtInEnabled}catch{return!1}}g=(h.then?(await h)():h)[0],d()}catch(a){d(a)}})},74986:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Tu:()=>i});var e=c(73024),f=c(76760);c(61446);var g=c(75430);c(12969);var h=a([g]);function i(){let a=(0,f.join)((0,g.getAgentDir)(),"settings.json");if(!(0,e.existsSync)(a))return{};try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));return null===b||"object"!=typeof b||Array.isArray(b)?{}:b}catch{return{}}}g=(h.then?(await h)():h)[0],d()}catch(a){d(a)}})},75856:(a,b,c)=>{var d=global.process;let e=function(a){return a&&"object"==typeof a&&"function"==typeof a.removeListener&&"function"==typeof a.emit&&"function"==typeof a.reallyExit&&"function"==typeof a.listeners&&"function"==typeof a.kill&&"number"==typeof a.pid&&"function"==typeof a.on};if(e(d)){var f,g=c(12412),h=c(30223),i=/^win/i.test(d.platform),j=c(94735);"function"!=typeof j&&(j=j.EventEmitter),d.__signal_exit_emitter__?f=d.__signal_exit_emitter__:((f=d.__signal_exit_emitter__=new j).count=0,f.emitted={}),f.infinite||(f.setMaxListeners(1/0),f.infinite=!0),a.exports=function(a,b){if(!e(global.process))return function(){};g.equal(typeof a,"function","a callback must be provided for exit handler"),!1===n&&o();var c="exit";return b&&b.alwaysLast&&(c="afterexit"),f.on(c,a),function(){f.removeListener(c,a),0===f.listeners("exit").length&&0===f.listeners("afterexit").length&&k()}};var k=function(){n&&e(global.process)&&(n=!1,h.forEach(function(a){try{d.removeListener(a,m[a])}catch(a){}}),d.emit=r,d.reallyExit=p,f.count-=1)};a.exports.unload=k;var l=function(a,b,c){f.emitted[a]||(f.emitted[a]=!0,f.emit(a,b,c))},m={};h.forEach(function(a){m[a]=function(){e(global.process)&&d.listeners(a).length===f.count&&(k(),l("exit",null,a),l("afterexit",null,a),i&&"SIGHUP"===a&&(a="SIGINT"),d.kill(d.pid,a))}}),a.exports.signals=function(){return h};var n=!1,o=function(){!n&&e(global.process)&&(n=!0,f.count+=1,h=h.filter(function(a){try{return d.on(a,m[a]),!0}catch(a){return!1}}),d.emit=s,d.reallyExit=q)};a.exports.load=o;var p=d.reallyExit,q=function(a){e(global.process)&&(d.exitCode=a||0,l("exit",d.exitCode,null),l("afterexit",d.exitCode,null),p.call(d,d.exitCode))},r=d.emit,s=function(a,b){if(!("exit"===a&&e(global.process)))return r.apply(this,arguments);void 0!==b&&(d.exitCode=b);var c=r.apply(this,arguments);return l("exit",d.exitCode,null),l("afterexit",d.exitCode,null),c}}else a.exports=function(){return function(){}}},80723:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{fr:()=>j});var e=c(29021),f=c(33873),g=c(75430),h=c(74986),i=a([g,h]);function j(){let a=(0,f.join)((0,g.getAgentDir)(),"models.json");if(!(0,e.existsSync)(a))return{providers:{}};try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));return null!==b&&"object"==typeof b?b:{providers:{}}}catch{return{providers:{}}}}[g,h]=i.then?(await i)():i,d()}catch(a){d(a)}})},81186:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$9:()=>h,J1:()=>i});var e=c(75430),f=c(76760),g=a([e]);function h(a,b=process.platform){let c={...a};for(let a of Object.keys(c))(function(a,b){let c="win32"===b?a.toUpperCase():a;return"PORT"===c||"NODE_ENV"===c||c.startsWith("NEXT_")||"PI_WEB_PASSWORD"===c})(a,b)&&delete c[a];return c}function i(a={}){let{agentBinDir:b=(0,f.join)((0,e.getAgentDir)(),"bin"),baseEnvironment:c=process.env,localOperations:d=(0,e.createLocalBashOperations)({shellPath:a.shellPath}),platform:g=process.platform}=a;return{exec(a,e,f){var i;let j,k,l,m=(i=h(f.env??c,g),j="win32"===g?Object.keys(i).find(a=>"PATH"===a.toUpperCase())??"PATH":"PATH",k="win32"===g?";":":",(l=i[j]??"").split(k).filter(Boolean).includes(b)||(i[j]=[b,l].filter(Boolean).join(k)),i);return d.exec(a,e,{...f,env:m})}}}e=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},81463:(a,b,c)=>{a.exports=c(67313)},82249:(a,b,c)=>{"use strict";c.d(b,{Hh:()=>a6});var d=Symbol("NOT_RESOLVED");function e(a,b){return{tagName:a,nodeKind:"scalar",implicit:b.implicit??!1,matchByTagPrefix:b.matchByTagPrefix??!1,implicitFirstChars:b.implicitFirstChars??null,resolve:b.resolve,identify:b.identify,represent:b.represent??(a=>String(a)),representTagName:b.representTagName??(()=>a)}}function f(a,b){let c=void 0===b.finalize;return{tagName:a,nodeKind:"sequence",implicit:!1,matchByTagPrefix:b.matchByTagPrefix??!1,create:b.create,addItem:b.addItem,finalize:b.finalize??(a=>a),carrierIsResult:c,identify:b.identify,represent:b.represent??(a=>a),representTagName:b.representTagName??(()=>a)}}function g(a,b){let c=void 0===b.finalize;return{tagName:a,nodeKind:"mapping",implicit:!1,matchByTagPrefix:b.matchByTagPrefix??!1,create:b.create,addPair:b.addPair,has:b.has,keys:b.keys,get:b.get,finalize:b.finalize??(a=>a),carrierIsResult:c,identify:b.identify,represent:b.represent??(a=>a),representTagName:b.representTagName??(()=>a)}}var h=e("tag:yaml.org,2002:str",{resolve:a=>a,identify:a=>"string"==typeof a}),i=["","~","null","Null","NULL"],j=e("tag:yaml.org,2002:null",{implicit:!0,implicitFirstChars:["","~","n","N"],resolve:a=>-1!==i.indexOf(a)?null:d,identify:a=>null===a,represent:()=>"null"}),k=e("tag:yaml.org,2002:null",{implicit:!0,implicitFirstChars:["n"],resolve:(a,b)=>"null"===a||b&&""===a?null:d,identify:a=>null===a,represent:()=>"null"}),l=["","~","null","Null","NULL"],m=e("tag:yaml.org,2002:null",{implicit:!0,implicitFirstChars:["","~","n","N"],resolve:a=>-1!==l.indexOf(a)?null:d,identify:a=>null===a,represent:()=>"null"}),n=["true","True","TRUE"],o=["false","False","FALSE"],p=e("tag:yaml.org,2002:bool",{implicit:!0,implicitFirstChars:["t","T","f","F"],resolve:a=>-1!==n.indexOf(a)||-1===o.indexOf(a)&&d,identify:a=>"[object Boolean]"===Object.prototype.toString.call(a),represent:a=>a?"true":"false"}),q=["true"],r=["false"],s=e("tag:yaml.org,2002:bool",{implicit:!0,implicitFirstChars:["t","f"],resolve:a=>-1!==q.indexOf(a)||-1===r.indexOf(a)&&d,identify:a=>"[object Boolean]"===Object.prototype.toString.call(a),represent:a=>a?"true":"false"}),t=["true","True","TRUE","y","Y","yes","Yes","YES","on","On","ON"],u=["false","False","FALSE","n","N","no","No","NO","off","Off","OFF"],v=e("tag:yaml.org,2002:bool",{implicit:!0,implicitFirstChars:["y","Y","n","N","t","T","f","F","o","O"],resolve:a=>-1!==t.indexOf(a)||-1===u.indexOf(a)&&d,identify:a=>"[object Boolean]"===Object.prototype.toString.call(a),represent:a=>a?"true":"false"}),w=RegExp("^(?:0o[0-7]+|0x[0-9a-fA-F]+|[-+]?[0-9]+)$"),x=RegExp("^(?:[-+]?0b[0-1]+|[-+]?0o[0-7]+|[-+]?0x[0-9a-fA-F]+|[-+]?[0-9]+)$"),y=e("tag:yaml.org,2002:int",{implicit:!0,implicitFirstChars:["-","+",..."0123456789"],resolve:function(a,b){let c,e;if(b){if(!x.test(a))return d}else if(!w.test(a))return d;let f=(e=1,(("-"===(c=a)[0]||"+"===c[0])&&("-"===c[0]&&(e=-1),c=c.slice(1)),c.startsWith("0b"))?e*parseInt(c.slice(2),2):c.startsWith("0o")?e*parseInt(c.slice(2),8):c.startsWith("0x")?e*parseInt(c.slice(2),16):e*parseInt(c,10));return Number.isFinite(f)?f:d},identify:a=>Number.isInteger(a)&&!Object.is(a,-0)&&0>a.toString(10).indexOf("e"),represent:a=>a.toString(10)}),z=RegExp("^-?(?:0|[1-9][0-9]*)$"),A=RegExp("^(?:[-+]?0b[0-1]+|[-+]?0o[0-7]+|[-+]?0x[0-9a-fA-F]+|[-+]?[0-9]+)$"),B=e("tag:yaml.org,2002:int",{implicit:!0,implicitFirstChars:["-",..."0123456789"],resolve:function(a,b){let c,e;if(b){if(!A.test(a))return d}else if(!z.test(a))return d;let f=(e=1,(("-"===(c=a)[0]||"+"===c[0])&&("-"===c[0]&&(e=-1),c=c.slice(1)),c.startsWith("0b"))?e*parseInt(c.slice(2),2):c.startsWith("0o")?e*parseInt(c.slice(2),8):c.startsWith("0x")?e*parseInt(c.slice(2),16):e*parseInt(c,10));return Number.isFinite(f)?f:d},identify:a=>Number.isInteger(a)&&!Object.is(a,-0)&&0>a.toString(10).indexOf("e"),represent:a=>a.toString(10)}),C=RegExp("^(?:[-+]?0b[0-1_]+|[-+]?0[0-7_]+|[-+]?0x[0-9a-fA-F_]+|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+|[-+]?(?:0|[1-9][0-9_]*))$"),D=e("tag:yaml.org,2002:int",{implicit:!0,implicitFirstChars:["-","+",..."0123456789"],resolve:function(a){if(!C.test(a))return d;let b=function(a){let b=a.replace(/_/g,""),c=1;if(("-"===b[0]||"+"===b[0])&&("-"===b[0]&&(c=-1),b=b.slice(1)),b.startsWith("0b"))return c*parseInt(b.slice(2),2);if(b.startsWith("0x"))return c*parseInt(b.slice(2),16);if(b.includes(":")){let a=0;for(let c of b.split(":"))a=60*a+Number(c);return c*a}return"0"!==b&&"0"===b[0]?c*parseInt(b,8):c*parseInt(b,10)}(a);return Number.isFinite(b)?b:d},identify:a=>Number.isInteger(a)&&!Object.is(a,-0)&&0>a.toString(10).indexOf("e"),represent:a=>a.toString(10)}),E=RegExp("^(?:[-+]?[0-9]+(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?|[-+]?\\.[0-9]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),F=RegExp("^(?:[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),G=e("tag:yaml.org,2002:float",{implicit:!0,implicitFirstChars:["-","+",".",..."0123456789"],resolve:function(a){if(!E.test(a))return d;let b=a.toLowerCase(),c="-"===b[0]?-1:1;if("+-".includes(b[0])&&(b=b.slice(1)),".inf"===b)return 1===c?1/0:-1/0;if(".nan"===b)return NaN;let e=c*parseFloat(b);return Number.isFinite(e)||F.test(a)?e:d},identify:a=>"number"==typeof a&&(!Number.isInteger(a)||Object.is(a,-0)||a.toString(10).indexOf("e")>=0),represent:function(a){if(isNaN(a))return".nan";if(a===1/0)return".inf";if(a===-1/0)return"-.inf";if(Object.is(a,-0))return"-0.0";let b=a.toString(10);return/^[-+]?[0-9]+e/.test(b)?b.replace("e",".e"):b}}),H=RegExp("^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$"),I=RegExp("^(?:[-+]?[0-9]+(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?|[-+]?\\.[0-9]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),J=e("tag:yaml.org,2002:float",{implicit:!0,implicitFirstChars:["-",..."0123456789"],resolve:function(a,b){if(b){if(!I.test(a))return d;let b=a.toLowerCase(),c="-"===b[0]?-1:1;if("+-".includes(b[0])&&(b=b.slice(1)),".inf"===b)return 1===c?1/0:-1/0;if(".nan"===b)return NaN;let e=c*parseFloat(b);return Number.isFinite(e)?e:d}if(!H.test(a))return d;let c=Number(a);return Number.isFinite(c)?c:d},identify:a=>"number"==typeof a&&(!Number.isInteger(a)||Object.is(a,-0)||a.toString(10).indexOf("e")>=0),represent:function(a){if(isNaN(a))return".nan";if(a===1/0)return".inf";if(a===-1/0)return"-.inf";if(Object.is(a,-0))return"-0.0";let b=a.toString(10);return/^[-+]?[0-9]+e/.test(b)?b.replace("e",".e"):b}}),K=RegExp("^(?:[-+]?(?:(?:[0-9][0-9_]*)?\\.[0-9_]*)(?:[eE][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),L=RegExp("^(?:[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),M=e("tag:yaml.org,2002:float",{implicit:!0,implicitFirstChars:["-","+",".",..."0123456789"],resolve:function(a){if(!K.test(a))return d;let b=a.toLowerCase().replace(/_/g,""),c="-"===b[0]?-1:1;if("+-".includes(b[0])&&(b=b.slice(1)),".inf"===b)return 1===c?1/0:-1/0;if(".nan"===b)return NaN;let e=0;if(b.includes(":")){for(let a of b.split(":"))e=60*e+Number(a);e*=c}else e=c*parseFloat(b);return Number.isFinite(e)||L.test(a)?e:d},identify:a=>"number"==typeof a&&(!Number.isInteger(a)||Object.is(a,-0)||a.toString(10).indexOf("e")>=0),represent:function(a){if(isNaN(a))return".nan";if(a===1/0)return".inf";if(a===-1/0)return"-.inf";if(Object.is(a,-0))return"-0.0";let b=a.toString(10);return/^[-+]?[0-9]+e/.test(b)?b.replace("e",".e"):b}}),N=e("tag:yaml.org,2002:merge",{implicit:!0,implicitFirstChars:["<"],resolve:(a,b)=>"<<"===a||b&&""===a?"<<":d,identify:()=>!1}),O=/^[A-Za-z0-9+/]*={0,2}$/,P=e("tag:yaml.org,2002:binary",{resolve:function(a){let b=a.replace(/\s/g,"");if(b.length%4!=0||!O.test(b))return d;let c=atob(b),e=new Uint8Array(c.length);for(let a=0;a<c.length;a++)e[a]=c.charCodeAt(a);return e},identify:a=>"[object Uint8Array]"===Object.prototype.toString.call(a),represent:function(a){let b="";for(let c=0;c<a.length;c++)b+=String.fromCharCode(a[c]);return btoa(b)}}),Q=RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),R=RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function S(a,b,c,d=0,e=0,f=0,g=0){let h=new Date(Date.UTC(a,b,c,d,e,f,g));return h.setUTCFullYear(a,b,c),h}var T=e("tag:yaml.org,2002:timestamp",{implicit:!0,implicitFirstChars:[..."0123456789"],resolve:function(a){let b=Q.exec(a);if(null===b&&(b=R.exec(a)),null===b)return d;let c=+b[1],e=b[2]-1,f=+b[3];if(!b[4]){let a=S(c,e,f);return a.getUTCFullYear()!==c||a.getUTCMonth()!==e||a.getUTCDate()!==f?d:a}let g=+b[4],h=+b[5],i=+b[6],j=0;if(g>23||h>59||i>59)return d;if(b[7]){let a=b[7].slice(0,3);for(;a.length<3;)a+="0";j=+a}let k=S(c,e,f,g,h,i,j);if(k.getUTCFullYear()!==c||k.getUTCMonth()!==e||k.getUTCDate()!==f)return d;if(b[9]){let a=+b[10],c=+(b[11]||0);if(a>23||c>59)return d;let e=(60*a+c)*6e4;k.setTime(k.getTime()-("-"===b[9]?-e:e))}return k},identify:a=>a instanceof Date,represent:a=>a.toISOString()}),U=f("tag:yaml.org,2002:seq",{create:()=>[],addItem:(a,b)=>{a.push(b)},identify:Array.isArray});function V(a){if(null===a||"object"!=typeof a||Array.isArray(a))return!1;let b=Object.getPrototypeOf(a);return null===b||b===Object.prototype}function W(a,b){let c={};for(let d of b)void 0!==a[d]&&(c[d]=a[d]);return c}var X=f("tag:yaml.org,2002:omap",{create:()=>({list:[],seen:new Set}),addItem:(a,b)=>{let c;if(b instanceof Map){if(1!==b.size)return"cannot resolve an ordered map item";c=b.keys().next().value}else{if(!V(b))return"cannot resolve an ordered map item";let a=Object.keys(b);if(1!==a.length)return"cannot resolve an ordered map item";c=a[0]}return a.seen.has(c)?"duplicate key in ordered map":(a.seen.add(c),a.list.push(b),"")},finalize:a=>a.list,identify:()=>!1}),Y=f("tag:yaml.org,2002:pairs",{create:()=>[],addItem:(a,b)=>{if(b instanceof Map)return 1!==b.size?"cannot resolve a pairs item":(a.push(b.entries().next().value),"");if("[object Object]"!==Object.prototype.toString.call(b))return"cannot resolve a pairs item";let c=Object.keys(b);return 1!==c.length?"cannot resolve a pairs item":(a.push([c[0],b[c[0]]]),"")},identify:()=>!1}),Z=g("tag:yaml.org,2002:map",{create:()=>({}),identify:V,represent:a=>{let b=new Map;for(let c of Object.keys(a))b.set(c,a[c]);return b},addPair:(a,b,c)=>{if(null!==b&&"object"==typeof b)return"object-based map does not support complex keys";let d=String(b);return"__proto__"===d?Object.defineProperty(a,d,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[d]=c,""},has:(a,b)=>(null===b||"object"!=typeof b)&&Object.prototype.hasOwnProperty.call(a,String(b)),keys:a=>Object.keys(a),get:(a,b)=>{let c=String(b);return Object.prototype.hasOwnProperty.call(a,c)?a[c]:null}}),$=g("tag:yaml.org,2002:set",{create:()=>new Set,identify:a=>a instanceof Set,represent:a=>{let b=new Map;for(let c of a)b.set(c,null);return b},addPair:(a,b,c)=>null!==c?"cannot resolve a set item":(a.add(b),""),has:(a,b)=>a.has(b),keys:a=>a.keys(),get:()=>null}),_=class a{tags;implicitScalarTags;implicitScalarByFirstChar;implicitScalarAnyFirstChar;defaultScalarTag;defaultSequenceTag;defaultMappingTag;exact;prefix;constructor(a){const b=function(a){let b=[];for(let c of a){let a=b.length;for(let d=0;d<b.length;d++){let e=b[d];if(e.nodeKind===c.nodeKind&&e.tagName===c.tagName&&e.matchByTagPrefix===c.matchByTagPrefix){a=d;break}}b[a]=c}return b}(a),c=[],d={scalar:Object.create(null),sequence:Object.create(null),mapping:Object.create(null)},e={scalar:[],sequence:[],mapping:[]};for(const a of b){if("scalar"===a.nodeKind&&a.implicit){if(a.matchByTagPrefix)throw Error("Implicit scalar tags cannot match by tag prefix");c.push(a)}switch(a.nodeKind){case"scalar":a.matchByTagPrefix?e.scalar.push(a):d.scalar[a.tagName]=a;break;case"sequence":a.matchByTagPrefix?e.sequence.push(a):d.sequence[a.tagName]=a;break;case"mapping":a.matchByTagPrefix?e.mapping.push(a):d.mapping[a.tagName]=a}}const f=c.filter(a=>null===a.implicitFirstChars),g=new Set;for(const a of c)if(null!==a.implicitFirstChars)for(const b of a.implicitFirstChars)g.add(b);const h=new Map;for(const a of g)h.set(a,c.filter(b=>null===b.implicitFirstChars||-1!==b.implicitFirstChars.indexOf(a)));const i=d.scalar["tag:yaml.org,2002:str"];if(!i)throw Error("schema does not define the default scalar tag (tag:yaml.org,2002:str)");this.tags=b,this.implicitScalarTags=c,this.implicitScalarByFirstChar=h,this.implicitScalarAnyFirstChar=f,this.defaultScalarTag=i,this.defaultSequenceTag=d.sequence["tag:yaml.org,2002:seq"],this.defaultMappingTag=d.mapping["tag:yaml.org,2002:map"],this.exact=d,this.prefix=e}lookupScalarTag(a){let b=this.exact.scalar[a];if(b)return b;for(let b of this.prefix.scalar)if(a.startsWith(b.tagName))return b}lookupSequenceTag(a){let b=this.exact.sequence[a];if(b)return b;for(let b of this.prefix.sequence)if(a.startsWith(b.tagName))return b}lookupMappingTag(a){let b=this.exact.mapping[a];if(b)return b;for(let b of this.prefix.mapping)if(a.startsWith(b.tagName))return b}resolveImplicitScalarTag(a){for(let b of this.implicitScalarByFirstChar.get(a.charAt(0))??this.implicitScalarAnyFirstChar){let c=b.resolve(a,!1,b.tagName);if(c!==d)return{value:c,tag:b}}let b=this.defaultScalarTag;return{value:b.resolve(a,!1,b.tagName),tag:b}}withTags(...b){let c=[];for(let a of b)c=c.concat(a);return new a([...this.tags,...c])}},aa=new _([h,U,Z]);new _([...aa.tags,k,s,B,J]);var ab=new _([...aa.tags,j,p,y,G]);function ac(a){if(Array.isArray(a)){let b=Array.prototype.slice.call(a);for(let a=0;a<b.length;a++){if(Array.isArray(b[a]))return null;"object"==typeof b[a]&&"[object Object]"===Object.prototype.toString.call(b[a])&&(b[a]="[object Object]")}return String(b)}return"object"==typeof a&&"[object Object]"===Object.prototype.toString.call(a)?"[object Object]":String(a)}new _([...aa.tags,m,v,D,M,T,N,P,X,Y,$]).withTags({...D,resolve:(a,b,c)=>{let e=D.resolve(a,b,c);return e===d?y.resolve(a,b,c):e}},{...M,resolve:(a,b,c)=>{let e=M.resolve(a,b,c);return e===d?G.resolve(a,b,c):e}}),g("tag:yaml.org,2002:map",{create:()=>new Map,addPair:(a,b,c)=>(a.set(b,c),""),has:(a,b)=>a.has(b),keys:a=>a.keys(),get:(a,b)=>a.get(b),identify:a=>a instanceof Map||V(a),represent:a=>{if(a instanceof Map)return a;let b=new Map;for(let c of Object.keys(a))b.set(c,a[c]);return b}}),g("tag:yaml.org,2002:map",{create:()=>({}),identify:V,represent:a=>{let b=new Map;for(let c of Object.keys(a))b.set(c,a[c]);return b},addPair:(a,b,c)=>{let d=ac(b);return null===d?"nested arrays are not supported inside keys":("__proto__"===d?Object.defineProperty(a,d,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[d]=c,"")},has:(a,b)=>{let c=ac(b);return null!==c&&Object.prototype.hasOwnProperty.call(a,c)},keys:a=>Object.keys(a),get:(a,b)=>{let c=String(b);return Object.prototype.hasOwnProperty.call(a,c)?a[c]:null}});var ad={maxLength:79,indent:1,linesBefore:3,linesAfter:2};function ae(a,b,c,d,e){let f="",g="",h=Math.floor(e/2)-1;return d-b>h&&(b=d-h+(f=" ... ").length),c-d>h&&(c=d+h-(g=" ...").length),{str:f+a.slice(b,c).replace(/\t/g,"→")+g,pos:d-b+f.length}}function af(a,b){return" ".repeat(Math.max(b-a.length,0))+a}function ag(a,b){let c="";return a.mark?(a.mark.name&&(c+=`in "${a.mark.name}" `),c+=`(${a.mark.line+1}:${a.mark.column+1})`,!b&&a.mark.snippet&&(c+=`
|
|
37
|
+
${a.inheritedParentContext}`:a.task,...b||c?{exactSystemPrompt:a.profileSystemPrompt}:{}}}c.d(b,{r:()=>d})},37173:(a,b,c)=>{"use strict";c.d(b,{yv:()=>f});var d=c(82249);let e=/^(?:\uFEFF)?---[ \t]*(?:\r\n|\n|\r)/;function f(a){let b=function(a){let b=e.exec(a);if(!b)return null;let c=/^---[ \t]*(?:(?:\r\n|\n|\r)|$)/gm;c.lastIndex=b[0].length;let d=c.exec(a);return d?{yaml:a.slice(b[0].length,d.index).replace(/(?:\r\n|\n|\r)$/,""),rest:a.slice(d.index+d[0].length)}:null}(a);if(!b)return{data:null,rest:a};try{let a=(0,d.Hh)(b.yaml);if(a&&"object"==typeof a&&!Array.isArray(a))return{data:a,rest:b.rest}}catch{}return{data:null,rest:b.rest}}},39466:(a,b,c)=>{var d=c(81115),e=process.cwd,f=null,g=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return f||(f=e.call(process)),f};try{process.cwd()}catch(a){}if("function"==typeof process.chdir){var h=process.chdir;process.chdir=function(a){f=null,h.call(process,a)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,h)}a.exports=function(a){var b,c,e;function f(b){return b?function(c,d,e){return b.call(a,c,d,function(a){m(a)&&(a=null),e&&e.apply(this,arguments)})}:b}function h(b){return b?function(c,d){try{return b.call(a,c,d)}catch(a){if(!m(a))throw a}}:b}function i(b){return b?function(c,d,e,f){return b.call(a,c,d,e,function(a){m(a)&&(a=null),f&&f.apply(this,arguments)})}:b}function j(b){return b?function(c,d,e){try{return b.call(a,c,d,e)}catch(a){if(!m(a))throw a}}:b}function k(b){return b?function(c,d,e){function f(a,b){b&&(b.uid<0&&(b.uid+=0x100000000),b.gid<0&&(b.gid+=0x100000000)),e&&e.apply(this,arguments)}return"function"==typeof d&&(e=d,d=null),d?b.call(a,c,d,f):b.call(a,c,f)}:b}function l(b){return b?function(c,d){var e=d?b.call(a,c,d):b.call(a,c);return e&&(e.uid<0&&(e.uid+=0x100000000),e.gid<0&&(e.gid+=0x100000000)),e}:b}function m(a){return!a||"ENOSYS"===a.code||(!process.getuid||0!==process.getuid())&&("EINVAL"===a.code||"EPERM"===a.code)}d.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&((c=a).lchmod=function(a,b,e){c.open(a,d.O_WRONLY|d.O_SYMLINK,b,function(a,d){if(a){e&&e(a);return}c.fchmod(d,b,function(a){c.close(d,function(b){e&&e(a||b)})})})},c.lchmodSync=function(a,b){var e,f=c.openSync(a,d.O_WRONLY|d.O_SYMLINK,b),g=!0;try{e=c.fchmodSync(f,b),g=!1}finally{if(g)try{c.closeSync(f)}catch(a){}else c.closeSync(f)}return e}),a.lutimes||(e=a,d.hasOwnProperty("O_SYMLINK")&&e.futimes?(e.lutimes=function(a,b,c,f){e.open(a,d.O_SYMLINK,function(a,d){if(a){f&&f(a);return}e.futimes(d,b,c,function(a){e.close(d,function(b){f&&f(a||b)})})})},e.lutimesSync=function(a,b,c){var f,g=e.openSync(a,d.O_SYMLINK),h=!0;try{f=e.futimesSync(g,b,c),h=!1}finally{if(h)try{e.closeSync(g)}catch(a){}else e.closeSync(g)}return f}):e.futimes&&(e.lutimes=function(a,b,c,d){d&&process.nextTick(d)},e.lutimesSync=function(){})),a.chown=i(a.chown),a.fchown=i(a.fchown),a.lchown=i(a.lchown),a.chmod=f(a.chmod),a.fchmod=f(a.fchmod),a.lchmod=f(a.lchmod),a.chownSync=j(a.chownSync),a.fchownSync=j(a.fchownSync),a.lchownSync=j(a.lchownSync),a.chmodSync=h(a.chmodSync),a.fchmodSync=h(a.fchmodSync),a.lchmodSync=h(a.lchmodSync),a.stat=k(a.stat),a.fstat=k(a.fstat),a.lstat=k(a.lstat),a.statSync=l(a.statSync),a.fstatSync=l(a.fstatSync),a.lstatSync=l(a.lstatSync),a.chmod&&!a.lchmod&&(a.lchmod=function(a,b,c){c&&process.nextTick(c)},a.lchmodSync=function(){}),a.chown&&!a.lchown&&(a.lchown=function(a,b,c,d){d&&process.nextTick(d)},a.lchownSync=function(){}),"win32"===g&&(a.rename="function"!=typeof a.rename?a.rename:function(b){function c(c,d,e){var f=Date.now(),g=0;b(c,d,function h(i){if(i&&("EACCES"===i.code||"EPERM"===i.code||"EBUSY"===i.code)&&Date.now()-f<6e4){setTimeout(function(){a.stat(d,function(a,f){a&&"ENOENT"===a.code?b(c,d,h):e(i)})},g),g<100&&(g+=10);return}e&&e(i)})}return Object.setPrototypeOf&&Object.setPrototypeOf(c,b),c}(a.rename)),a.read="function"!=typeof a.read?a.read:function(b){function c(c,d,e,f,g,h){var i;if(h&&"function"==typeof h){var j=0;i=function(k,l,m){if(k&&"EAGAIN"===k.code&&j<10)return j++,b.call(a,c,d,e,f,g,i);h.apply(this,arguments)}}return b.call(a,c,d,e,f,g,i)}return Object.setPrototypeOf&&Object.setPrototypeOf(c,b),c}(a.read),a.readSync="function"!=typeof a.readSync?a.readSync:(b=a.readSync,function(c,d,e,f,g){for(var h=0;;)try{return b.call(a,c,d,e,f,g)}catch(a){if("EAGAIN"===a.code&&h<10){h++;continue}throw a}})}},41035:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$u:()=>z,I6:()=>x,IR:()=>s,gY:()=>y,o2:()=>B,ph:()=>w,pv:()=>C,rh:()=>t,st:()=>D,tP:()=>A});var e=c(75430);c(82249);var f=c(29021),g=c(33873),h=c(37173);c(12969);var i=c(83739),j=c(70274),k=c(14916),l=a([e,j]);[e,j]=l.then?(await l)():l;let A="pi-web:subagent",B="pi-web:subagent-status",C="pi-web:subagent-result",D=["Agent","get_subagent_result","steer_subagent"],E=["read","bash","edit","write","grep","find","ls"],F=new Set(E),G=new Set(D),H=new Set(["off","minimal","low","medium","high","xhigh","max"]),I=[{name:"general-purpose",displayName:"General purpose",description:"Handle a focused implementation or investigation task",systemPrompt:"Work autonomously on the delegated task. Keep the final answer concise and include important files, decisions, and remaining risks.",tools:E,loadSkills:!1,loadExtensions:!1,promptMode:"append",inheritContext:!1,runInBackground:!1,enabled:!0,scope:"builtin"},{name:"explore",displayName:"Explore",description:"Quickly inspect a codebase without modifying it",systemPrompt:"Explore the codebase to answer the delegated question. Do not modify files. Report concrete findings with file paths and relevant symbols.",tools:[...k.kU],loadSkills:!1,loadExtensions:!1,promptMode:"append",inheritContext:!1,runInBackground:!1,enabled:!0,scope:"builtin"},{name:"plan",displayName:"Plan",description:"Design an implementation plan without modifying files",systemPrompt:"Produce an implementation-ready plan for the delegated task. Inspect the repository as needed, do not modify files, and call out dependencies, risks, and verification steps.",tools:[...k.kU],loadSkills:!1,loadExtensions:!1,promptMode:"append",inheritContext:!1,runInBackground:!1,enabled:!0,scope:"builtin"}];function m(a){return"string"==typeof a&&a.trim()?a.trim():void 0}function n(a,b){return"boolean"==typeof a?a:b}function o(a,b){return"boolean"==typeof a?a:!!Array.isArray(a)||"string"==typeof a||b}function p(a){return(Array.isArray(a)?a:"string"==typeof a?a.split(","):[]).map(a=>String(a).trim()).filter(Boolean)}function q(a,b){let c=p(a);return c.includes("none")?[]:c.includes("all")||c.includes("*")?[...E]:0===c.length?[...b]:[...new Set(c.filter(a=>F.has(a)))]}function r(a){return[...new Set(p(a).filter(a=>a.toLowerCase().startsWith("ext:")))]}function s(a){let b,c=new Map((b=(0,j.Q$)(),I.map(a=>({...a,tools:[...a.tools],enabled:!b.has(a.name.toLowerCase())}))).map(a=>[a.name.toLowerCase(),a]));for(let[b,d]of[[(0,g.join)((0,e.getAgentDir)(),"agents"),"global"],[(0,g.join)((0,g.resolve)(a),".agents","agents"),"workspace"],[(0,g.join)((0,g.resolve)(a),".pi","agents"),"project"]])for(let e of function(a,b,c){return(0,f.existsSync)(a)?"global"===b||(0,i.x)(a,new Set([c]))?(0,f.readdirSync)(a,{withFileTypes:!0}).filter(a=>a.isFile()&&a.name.endsWith(".md")).map(c=>(function(a,b){try{let c=(0,f.readFileSync)(a,"utf8"),{data:d,rest:e}=(0,h.yv)(c),i=m(d?.name)??(0,g.basename)(a,".md");if(!/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(i))return null;let j=m(d?.thinking),k="number"==typeof d?.max_turns?Math.floor(d.max_turns):void 0,l=q(d?.tools,E),p=new Set(q(d?.disallowed_tools,[])),s=new Set(r(d?.disallowed_tools).map(a=>a.toLowerCase())),t=r(d?.tools).filter(a=>!s.has(a.toLowerCase()));return{name:i,displayName:m(d?.display_name)??i,description:m(d?.description)??i,systemPrompt:e.trim(),tools:l.filter(a=>!p.has(a)),...t.length>0?{extensionTools:t}:{},loadSkills:o(d?.load_skills??d?.skills,!1),loadExtensions:o(d?.load_extensions??d?.extensions,t.length>0),...m(d?.model)?{model:m(d?.model)}:{},...j&&H.has(j)?{thinking:j}:{},...k&&k>0?{maxTurns:k}:{},inheritContext:n(d?.inherit_context,!1),runInBackground:n(d?.run_in_background,!1),promptMode:d?.prompt_mode==="replace"?"replace":"append",...m(d?.color)?{color:m(d?.color)}:{},...d?.isolation==="worktree"||d?.isolation==="off"?{isolation:d.isolation}:{},..."boolean"==typeof d?.persist_session?{persistSession:d.persist_session}:{},enabled:n(d?.enabled,!0),scope:b,filePath:a}}catch{return null}})((0,g.join)(a,c.name),b)).filter(a=>null!==a):[]:[]}(b,d,a))c.set(e.name.toLowerCase(),e);return[...c.values()].sort((a,b)=>a.displayName.localeCompare(b.displayName))}function t(a,b){return s(a).find(a=>a.name.toLowerCase()===b.trim().toLowerCase()&&a.enabled)}function u(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function v(a){let b=a.find(a=>"custom"===a.type&&a.customType===A);if(!b||"custom"!==b.type||!u(b.data))return null;let c=b.data;return 1!==c.version||"string"!=typeof c.parentSessionId||"string"!=typeof c.parentSessionPath?null:c}function w(a){let b=v(a);if(!b)return null;let c=b.resourceSnapshot,d=u(c)&&!0===c.loadSkills,e=u(c)&&!0===c.loadExtensions;return u(c)&&1===c.version&&Array.isArray(c.appendSystemPrompt)&&c.appendSystemPrompt.every(a=>"string"==typeof a)&&Array.isArray(c.tools)&&c.tools.every(a=>"string"==typeof a&&a.length>0&&!G.has(a)&&(F.has(a)||e))?{appendSystemPrompt:[...c.appendSystemPrompt],tools:[...new Set(c.tools)],loadSkills:d,loadExtensions:e,..."string"==typeof c.exactSystemPrompt?{exactSystemPrompt:c.exactSystemPrompt}:{}}:null}function x(a,b){return[...new Set([...a,...[...b].filter(a=>!G.has(a))])]}function y(a,b){let c=b.map(a=>a.slice(4).toLowerCase());return[...a].flatMap(a=>{let b=a.path.replaceAll("\\","/").split("/").at(-2)??a.path,d=(a.sourceInfo?.source??"").replace(/^npm:/,""),e=new Set([b.toLowerCase(),d.toLowerCase()]);return c.some(b=>{if("*"===b)return!0;let[c,d]=b.split("/",2);return e.has(c)&&(!d||a.tools.has(d))})?[...a.tools.keys()].filter(a=>c.some(b=>{if("*"===b||b.endsWith("/*"))return"*"===b||e.has(b.slice(0,-2));let[c,d]=b.split("/",2);return e.has(c)&&(!d||d===a)})):[]})}function z(a,b,c){let d=v(a);if(!d)return null;let e=[...a].reverse().find(a=>"custom"===a.type&&(a.customType===C||a.customType===B)),f=e?.type==="custom"&&e.customType===C?e:void 0,g=f?.type==="custom"&&u(f.data)?f.data:void 0,h=e?.type==="custom"&&e.customType===B?e:void 0,i=h?.type==="custom"&&u(h.data)?h.data:void 0,j=g&&("completed"===g.status||"failed"===g.status||"aborted"===g.status)?g.status:i?.version===1&&("queued"===i.status||"running"===i.status)?i.status:"interrupted";return{sessionId:b,sessionPath:c,parentSessionId:d.parentSessionId,parentToolCallId:"string"==typeof d.parentToolCallId?d.parentToolCallId:"",profile:"string"==typeof d.profile?d.profile:"general-purpose",description:"string"==typeof d.description?d.description:"Subagent",task:"string"==typeof d.task?d.task:"",runInBackground:!0===d.runInBackground,status:j,createdAt:"string"==typeof d.createdAt?d.createdAt:"",...g&&"string"==typeof g.completedAt?{completedAt:g.completedAt}:{},...g&&"string"==typeof g.result?{result:g.result}:{},...g&&"string"==typeof g.error?{error:g.error}:{},..."string"==typeof d.worktreePath?{worktreePath:d.worktreePath}:{},..."string"==typeof d.worktreeBranch?{worktreeBranch:d.worktreeBranch}:{},...g&&"string"==typeof g.worktreeCleanupError?{worktreeCleanupError:g.worktreeCleanupError}:{}}}d()}catch(a){d(a)}})},44290:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{lN:()=>j});var e=c(74986),f=c(97563),g=c(30116),h=a([e]);function i(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=a.permissionRules,c=(0,g.kP)((0,g.ni)(b));return{collaborationMode:(0,f.UY)(a.collaborationMode),tokenMode:(0,f.wI)(a.tokenMode),toolApprovalMode:(0,f.g0)(a.toolApprovalMode),permissionRules:{allow:Array.isArray(c.allow)?c.allow:[],ask:Array.isArray(c.ask)?c.ask:[],deny:Array.isArray(c.deny)?c.deny:[]}}}function j(a){let b=(0,f.Md)(),c=(0,e.Tu)();if(a){let b=c.modesPerSession;if(b&&"object"==typeof b&&!Array.isArray(b)){let c=i(b[a]);if(c)return c}}return i(c.modes)??b}e=(h.then?(await h)():h)[0],d()}catch(a){d(a)}})},54035:(a,b,c)=>{"use strict";c.d(b,{b5:()=>i,dS:()=>h});var d=c(14916);let e="pi-web:tool-selection",f=new Set(d.C1),g=Symbol("cleared-tool-selection");function h(a){for(let c=a.length-1;c>=0;c-=1){var b;let d=a[c];if("custom"!==d.type||d.customType!==e)continue;let h="object"!=typeof(b=d.data)||null===b||Array.isArray(b)||1!==b.version?void 0:!0===b.cleared?g:!Array.isArray(b.tools)||b.tools.some(a=>"string"!=typeof a||!f.has(a))?void 0:[...new Set(b.tools)];if(void 0!==h)return h===g?void 0:h}}function i(a,b){a.appendCustomEntry(e,{version:1,tools:[...b]})}},54366:(a,b,c)=>{"use strict";function d(){return{defaultAgentType:null,modeId:null,configValues:{},autoProcess:!0,maxConcurrent:1,mergeStrategy:"merge",deleteWorktreeDefault:!0,preflightCommand:null,initCommand:null,stagePrompts:null}}c.d(b,{os:()=>d})},55950:(a,b,c)=>{"use strict";c.d(b,{V:()=>d});class d{enqueue(a,b,c,d,e){let f,g=this.parents.get(a)??{limit:1,active:0,items:[]};g.limit=Math.max(1,Math.floor(b)||1);let h=new Promise((a,b)=>{f={run:c,onState:d,onCancel:e,resolve:a,reject:b,state:"queued",cancelled:!1}});return g.items.push(f),this.parents.set(a,g),d("queued"),this.pump(a,g),{promise:h,cancel:()=>"queued"===f.state&&!f.cancelled&&(f.cancelled=!0,Promise.resolve(f.onCancel?.()).then(()=>f.resolve(void 0),a=>f.reject(a)),this.pump(a,g),!0)}}pump(a,b){for(;b.active<b.limit&&b.items.length>0;){let c=b.items.shift();c.cancelled||(c.state="running",c.onState("running"),b.active+=1,c.run().then(c.resolve,c.reject).finally(()=>{b.active-=1,this.pump(a,b),0===b.active&&0===b.items.length&&this.parents.delete(a)}))}}constructor(){this.parents=new Map}}},57856:(a,b,c)=>{"use strict";c.d(b,{TQ:()=>e,p1:()=>d});let d=92;function e(a,b=d,c=40){return Object.freeze({terminal:Object.freeze({columns:b,rows:c,kittyProtocolActive:!1}),requestRender:a})}},61446:(a,b,c)=>{"use strict";let d=c(62404),{toPromise:e,toSync:f,toSyncOptions:g}=c(13884);async function h(a,b){let c=await e(d.lock)(a,b);return e(c)}a.exports=h,a.exports.lock=h,a.exports.unlock=function(a,b){return e(d.unlock)(a,b)},a.exports.lockSync=function(a,b){let c=f(d.lock)(a,g(b));return f(c)},a.exports.unlockSync=function(a,b){return f(d.unlock)(a,g(b))},a.exports.check=function(a,b){return e(d.check)(a,b)},a.exports.checkSync=function(a,b){return f(d.check)(a,g(b))}},61577:(a,b,c)=>{"use strict";async function d(a,b,c){if(!b.model&&!b.thinkingLevel)return{modelDefaultChanged:!1};let d=!1;return b.model&&c.model&&b.model.provider===c.model.provider&&b.model.modelId===c.model.modelId&&(a.setDefaultModelAndProvider(c.model.provider,c.model.modelId),d=!0),b.thinkingLevel&&(c.supportsThinking||"off"!==c.thinkingLevel)&&a.setDefaultThinkingLevel(c.thinkingLevel),await a.flush(),{modelDefaultChanged:d}}c.d(b,{o:()=>d})},62404:(a,b,c)=>{"use strict";let d=c(33873),e=c(93329),f=c(81463),g=c(75856),h=c(16176),i={};function j(a,b){return b.lockfilePath||`${a}.lock`}function k(a,b,c){if(!b.realpath)return c(null,d.resolve(a));b.fs.realpath(a,c)}function l(a,b){return a.mtime.getTime()<Date.now()-b.stale}function m(a,b,c){b.fs.rmdir(j(a,b),a=>{if(a&&"ENOENT"!==a.code)return c(a);c()})}function n(a,b,c){b.released=!0,b.updateTimeout&&clearTimeout(b.updateTimeout),i[a]===b&&delete i[a],b.options.onCompromised(c)}function o(a,b,c){k(a,b={fs:e,realpath:!0,...b},(a,d)=>{if(a)return c(a);let e=i[d];if(!e)return c(Object.assign(Error("Lock is not acquired/owned by you"),{code:"ENOTACQUIRED"}));e.updateTimeout&&clearTimeout(e.updateTimeout),e.released=!0,delete i[d],m(d,b,c)})}g(()=>{for(let a in i){let b=i[a].options;try{b.fs.rmdirSync(j(a,b))}catch(a){}}}),a.exports.lock=function(a,b,c){(b={stale:1e4,update:null,realpath:!0,retries:0,fs:e,onCompromised:a=>{throw a},...b}).retries=b.retries||0,b.retries="number"==typeof b.retries?{retries:b.retries}:b.retries,b.stale=Math.max(b.stale||0,2e3),b.update=null==b.update?b.stale/2:b.update||0,b.update=Math.max(Math.min(b.update,b.stale/2),1e3),k(a,b,(a,d)=>{if(a)return c(a);let e=f.operation(b.retries);e.attempt(()=>{!function a(b,c,d){let e=j(b,c);c.fs.mkdir(e,f=>f?"EEXIST"!==f.code?d(f):c.stale<=0?d(Object.assign(Error("Lock file is already being held"),{code:"ELOCKED",file:b})):void c.fs.stat(e,(e,f)=>e?"ENOENT"===e.code?a(b,{...c,stale:0},d):d(e):l(f,c)?void m(b,c,e=>{if(e)return d(e);a(b,{...c,stale:0},d)}):d(Object.assign(Error("Lock file is already being held"),{code:"ELOCKED",file:b}))):h.probe(e,c.fs,(a,b,f)=>{if(a)return c.fs.rmdir(e,()=>{}),d(a);d(null,b,f)}))}(d,b,(a,f,g)=>{if(e.retry(a))return;if(a)return c(e.mainError());let k=i[d]={lockfilePath:j(d,b),mtime:f,mtimePrecision:g,options:b,lastUpdate:Date.now()};!function a(b,c){let d=i[b];!d.updateTimeout&&(d.updateDelay=d.updateDelay||c.update,d.updateTimeout=setTimeout(()=>{d.updateTimeout=null,c.fs.stat(d.lockfilePath,(e,f)=>{let g=d.lastUpdate+c.stale<Date.now();if(e)return"ENOENT"===e.code||g?n(b,d,Object.assign(e,{code:"ECOMPROMISED"})):(d.updateDelay=1e3,a(b,c));if(d.mtime.getTime()!==f.mtime.getTime())return n(b,d,Object.assign(Error("Unable to update lock within the stale threshold"),{code:"ECOMPROMISED"}));let i=h.getMtime(d.mtimePrecision);c.fs.utimes(d.lockfilePath,i,i,e=>{let f=d.lastUpdate+c.stale<Date.now();if(!d.released){if(e)return"ENOENT"===e.code||f?n(b,d,Object.assign(e,{code:"ECOMPROMISED"})):(d.updateDelay=1e3,a(b,c));d.mtime=i,d.lastUpdate=Date.now(),d.updateDelay=null,a(b,c)}})})},d.updateDelay),d.updateTimeout.unref&&d.updateTimeout.unref())}(d,b),c(null,a=>{if(k.released)return a&&a(Object.assign(Error("Lock is already released"),{code:"ERELEASED"}));o(d,{...b,realpath:!1},a)})})})})},a.exports.unlock=o,a.exports.check=function(a,b,c){(b={stale:1e4,realpath:!0,fs:e,...b}).stale=Math.max(b.stale||0,2e3),k(a,b,(a,d)=>{if(a)return c(a);b.fs.stat(j(d,b),(a,d)=>a?"ENOENT"===a.code?c(null,!1):c(a):c(null,!l(d,b)))})},a.exports.getLocks=function(){return i}},65562:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Q1:()=>u,Rv:()=>v,_o:()=>s,fd:()=>t,h6:()=>r,z1:()=>m});var e=c(29021),f=c(33873),g=c(75430),h=c(12969),i=c(69420),j=c(54366),k=a([g]);function l(){return(0,f.join)((0,g.getAgentDir)(),"tasks")}function m(a){return(0,f.join)(l(),(0,i.A0)(a).replace(/^\/+/,"").split("/").filter(Boolean).map(a=>encodeURIComponent(a)).join("--")||"root")}function n(a){return(0,f.join)(m(a),"tasks.jsonl")}function o(){return(0,f.join)(l(),"settings.json")}function p(a){(0,e.existsSync)(a)||(0,e.mkdirSync)(a,{recursive:!0,mode:448})}function q(a){if(!(0,e.existsSync)(a))return[];let b=(0,e.readFileSync)(a,"utf8"),c=[];for(let a of b.split("\n")){let b=a.trim();if(b)try{c.push(JSON.parse(b))}catch{}}return c}function r(a){return q(n(a)).sort((a,b)=>a.sortOrder-b.sortOrder||a.id-b.id)}function s(a,b){return r(a).find(a=>a.id===b)??null}function t(a){let b,c=n(a.projectRoot),d=r(a.projectRoot),e=d.findIndex(b=>b.id===a.id),f={...a,updatedAt:new Date().toISOString()};e>=0?d[e]=f:d.push(f),p(c.substring(0,c.lastIndexOf("/"))),b=d.map(a=>JSON.stringify(a)).join("\n")+"\n",(0,h.$)(c,b)}function u(a,b){let c=(0,f.join)(m(a),"events.jsonl"),d=q(c).reduce((a,b)=>Math.max(a,b.id),0)+1,g={...b,payload:b.payload??null,id:d,createdAt:new Date().toISOString()};return p(c.substring(0,c.lastIndexOf("/"))),(0,e.writeFileSync)(c,JSON.stringify(g)+"\n",{encoding:"utf8",flag:"a",mode:384}),g}function v(a){let b=function(a){let b=o();if(!(0,e.existsSync)(b))return null;try{return JSON.parse((0,e.readFileSync)(b,"utf8"))[a]??null}catch{return null}}(a),c=function(){let a=o();if(!(0,e.existsSync)(a))return(0,j.os)();try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));return{...(0,j.os)(),...b._global??{}}}catch{return(0,j.os)()}}();return b?{...c,...b,configValues:{...c.configValues,...b.configValues??{}}}:c}g=(k.then?(await k)():k)[0],d()}catch(a){d(a)}})},65869:(a,b,c)=>{"use strict";function d(){let a=(globalThis.__piModelsCacheState||(globalThis.__piModelsCacheState={entries:new Map,inFlight:new Map,generation:0}),globalThis.__piModelsCacheState);a.generation+=1,a.entries.clear(),a.inFlight.clear()}c.d(b,{k:()=>d})},67313:(a,b,c)=>{var d=c(92759);b.operation=function(a){return new d(b.timeouts(a),{forever:a&&a.forever,unref:a&&a.unref,maxRetryTime:a&&a.maxRetryTime})},b.timeouts=function(a){if(a instanceof Array)return[].concat(a);var b={retries:10,factor:2,minTimeout:1e3,maxTimeout:1/0,randomize:!1};for(var c in a)b[c]=a[c];if(b.minTimeout>b.maxTimeout)throw Error("minTimeout is greater than maxTimeout");for(var d=[],e=0;e<b.retries;e++)d.push(this.createTimeout(e,b));return a&&a.forever&&!d.length&&d.push(this.createTimeout(e,b)),d.sort(function(a,b){return a-b}),d},b.createTimeout=function(a,b){var c=Math.round((b.randomize?Math.random()+1:1)*b.minTimeout*Math.pow(b.factor,a));return Math.min(c,b.maxTimeout)},b.wrap=function(a,c,d){if(c instanceof Array&&(d=c,c=null),!d)for(var e in d=[],a)"function"==typeof a[e]&&d.push(e);for(var f=0;f<d.length;f++){var g=d[f],h=a[g];a[g]=(function(d){var e=b.operation(c),f=Array.prototype.slice.call(arguments,1),g=f.pop();f.push(function(a){e.retry(a)||(a&&(arguments[0]=e.mainError()),g.apply(this,arguments))}),e.attempt(function(){d.apply(a,f)})}).bind(a,h),a[g].options=c}}},69420:(a,b,c)=>{"use strict";function d(a){return/^[a-zA-Z]:[\\/]/.test(a)||a.startsWith("\\\\")?a.replace(/\\/g,"/"):a}c.d(b,{A0:()=>d})},69453:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{H6:()=>u,O8:()=>G,Vg:()=>H,mD:()=>z,os:()=>F});var e=c(75430),f=c(29021),g=c(79748),h=c(33873),i=c(97563),j=c(7535),k=c(7561);c(4658);var l=c(88002),m=c(74986),n=c(85895),o=c(41035),p=c(88449),q=a([e,m,o,p]);[e,m,o,p]=q.then?(await q)():q;let I=p.q8,J=null;function r(a,b,c){let d=(0,f.openSync)(a,"r");try{let a=[],e=0,g=0,h=!1;for(;e<b&&g<c;){let i=Buffer.allocUnsafe(Math.min(4096,b-e)),j=(0,f.readSync)(d,i,0,i.length,e);if(0===j){h=!0;break}e+=j;let k=i.subarray(0,j),l=k.length;for(let a=0;a<k.length;a+=1)if(10===k[a]&&(g+=1)===c){l=a+1;break}a.push(k.subarray(0,l))}let i=Buffer.concat(a).toString("utf8"),j=i.split("\n");return h||i.endsWith("\n")||j.pop(),""===j.at(-1)&&j.pop(),j.map(a=>a.endsWith("\r")?a.slice(0,-1):a)}finally{(0,f.closeSync)(d)}}function s(a,b){let c=(0,f.openSync)(a,"r");try{let a=(0,f.fstatSync)(c).size,d=Math.max(0,a-b),e=Buffer.allocUnsafe(a-d),g=(0,f.readSync)(c,e,0,e.length,d);if(0===g)return[];let h=e.subarray(0,g).toString("utf8").split("\n");if(d>0){let a=Buffer.allocUnsafe(1);(0,f.readSync)(c,a,0,1,d-1),10!==a[0]&&h.shift()}return""===h.at(-1)&&h.pop(),h.map(a=>a.endsWith("\r")?a.slice(0,-1):a)}finally{(0,f.closeSync)(c)}}function t(a){return a.flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}})}function u(a){let b;if(a){try{b=s(a,65536)}catch{return}for(let a=b.length-1;a>=0;a-=1){let c=function(a){try{let b=JSON.parse(a);if("session"===b.type)return;return"string"==typeof b.id&&b.id?b.id:void 0}catch{return}}(b[a]);if(c)return c}}}async function v(a){let b=[...new Set(a.map(a=>a.cwd).filter(Boolean))],c=new Map;return await Promise.all(b.map(async a=>{c.set(a,await (0,l.KI)(a))})),a.map(a=>{let b=a.cwd?c.get(a.cwd):void 0,d=b?.projectRoot??a.cwd;return{...a,projectRoot:d,projectKey:(0,j.z)(d),...b?.branch?{branch:b.branch}:{},...b?.isWorktree?{isWorktree:!0}:{}}})}async function w(a){let b=(0,m.Tu)(),c=Array.isArray(b.sessionPins)?b.sessionPins:[],d=new Set(c.filter(a=>"string"==typeof a)),f=(0,n.JJ)((0,e.getAgentDir)()),g=new Map;for(let b of a)g.set((0,k.$)(b.path),b.id);return v(a.map(a=>(function(a,b,c){G(a.id,a.path);let{originSessionId:d,subagent:e}=function(a,b){let c=a.parentSessionPath?b.get((0,k.$)(a.parentSessionPath)):void 0;if(!a.parentSessionPath)return{originSessionId:c,subagent:null};try{var d;let b,e=(0,o.$u)((d=a.path,(b=t(r(d,262144,400).slice(1))).some(a=>"custom"===a.type&&a.customType===o.tP)?[...b,...t(s(d,262144))]:b),a.id,a.path);return{originSessionId:c,subagent:e}}catch{return{originSessionId:c,subagent:null}}}(a,b),f=!0===a.detailsPending;return{path:a.path,id:a.id,cwd:a.cwd,name:a.name,created:a.created.toISOString(),modified:a.modified.toISOString(),messageCount:a.messageCount,firstMessage:f&&!a.firstMessage?"":(0,i.CS)(a.firstMessage||"(no messages)").slice(0,300),parentSessionId:d,...e?{relation:{kind:"subagent",parentSessionId:e.parentSessionId,profile:e.profile,description:e.description,status:e.status,...e.createdAt?{createdAt:e.createdAt}:{},...e.completedAt?{completedAt:e.completedAt}:{}}}:a.parentSessionPath?{relation:{kind:"fork",...d?{originSessionId:d}:{}}}:{},transient:!1,...f?{detailsPending:!0}:{},pinned:c.pinSet.has(a.id),archived:!!c.archive[a.id],...c.archive[a.id]?{archivedAt:c.archive[a.id].archivedAt}:{},importedFrom:a.importedFrom}})(a,g,{pinSet:d,archive:f})))}async function x(){let a=globalThis.__piListSessionsOverride??I;return w(await a())}async function y(a={}){a.force&&z();let b=globalThis.__piSessionListGeneration??0,c=globalThis.__piSessionListCache;if(c&&c.generation===b&&Date.now()-c.ts<1e4)return c.data;let d=globalThis.__piSessionListStaleData;if(a.allowStale&&(c||d))return y().catch(()=>void 0),c?.data??d;if(globalThis.__piSessionListPromise&&globalThis.__piSessionListPromiseGeneration===b)return globalThis.__piSessionListPromise;let e=x().then(a=>(globalThis.__piSessionListGeneration??0)!==b?y():(globalThis.__piSessionListCache={data:a,ts:Date.now(),generation:b},globalThis.__piSessionListStaleData=a,a)).finally(()=>{globalThis.__piSessionListPromise===e&&(globalThis.__piSessionListPromise=void 0,globalThis.__piSessionListPromiseGeneration=void 0)});return globalThis.__piSessionListPromise=e,globalThis.__piSessionListPromiseGeneration=b,e}function z(){let a=globalThis.__piSessionListCache;a&&(globalThis.__piSessionListStaleData=a.data),globalThis.__piSessionListGeneration=(globalThis.__piSessionListGeneration??0)+1,globalThis.__piSessionListCache=void 0,J&&clearTimeout(J),J=setTimeout(()=>{J=null},300)}function A(){return globalThis.__piSessionPathCache||(globalThis.__piSessionPathCache=new Map),globalThis.__piSessionPathCache}function B(){return globalThis.__piPathToSessionIdCache||(globalThis.__piPathToSessionIdCache=new Map),globalThis.__piPathToSessionIdCache}let K=/^[A-Za-z0-9](?:[A-Za-z0-9._-]*[A-Za-z0-9])?$/;function C(){return(0,h.join)((0,e.getAgentDir)(),"sessions")}function D(a,b=(0,h.resolve)(C())){let c=(0,h.resolve)(a),d=(0,h.relative)(b,c);return""===d||".."===d||d.startsWith(`..${h.sep}`)||(0,h.isAbsolute)(d)?null:c}async function E(a){let b,c;if(!K.test(a))return null;let d=(0,h.resolve)(C());try{b=await (0,g.readdir)(d,{withFileTypes:!0})}catch{return null}let e=`_${a}.jsonl`;for(let f of b){let b;if(!f.isDirectory()&&!f.isSymbolicLink())continue;let i=D((0,h.join)(d,f.name),d);if(i){try{b=await (0,g.readdir)(i)}catch{continue}for(let f of b){if(!f.endsWith(e))continue;let b=D((0,h.join)(i,f),d);if(b){try{if(function(a){let b=r(a,65536,1)[0]?.trimEnd();if(!b)return null;try{let a=JSON.parse(b);return"session"===a.type?a:null}catch{return null}}(b)?.id!==a)continue}catch{continue}if(c&&c!==b)return null;c=b}}}}return c??null}async function F(a){let b=A().get(a);if(b)return b;let c=await E(a);return c?G(a,c):await y(),A().get(a)??null}function G(a,b){let c=(0,h.normalize)(b),d=A(),e=B(),f=d.get(a),g=e.get(c);f&&f!==c&&e.get(f)===a&&e.delete(f),g&&g!==a&&d.get(g)===c&&d.delete(g),d.set(a,c),e.set(c,a);let i=A();for(;i.size>4096;){let a=i.keys().next().value;if(void 0===a)break;!function(a){let b=A(),c=B(),d=b.get(a);b.delete(a),d&&c.get(d)===a&&c.delete(d)}(a)}}function H(a){for(let b=a.length-1;b>=0;b--){let c=a[b];if("model_change"===c.type)return{provider:c.provider,modelId:c.modelId}}return null}d()}catch(a){d(a)}})},70274:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{M6:()=>i,N:()=>l,Q$:()=>k,hd:()=>j});var e=c(73024),f=c(76760),g=c(75430);c(12969);var h=a([g]);function i(a=(0,g.getAgentDir)()){return(0,f.join)(a,"agents","settings.json")}function j(a=i()){var b,c,d,f;let g=function(a){if(!(0,e.existsSync)(a))return{};let b=JSON.parse((0,e.readFileSync)(a,"utf8"));if(null===b||"object"!=typeof b||Array.isArray(b))throw Error("Invalid subagent settings: expected an object");return b}(a);return c=!0===g.builtInEnabled,b=g.maxConcurrent,d="number"==typeof b&&Number.isInteger(b)&&b>=1&&b<=32?b:10,f=function(a){if(!Array.isArray(a))return[];let b=[],c=new Set;for(let d of a){if("string"!=typeof d)continue;let a=d.trim(),e=a.toLowerCase();!a||c.has(e)||(c.add(e),b.push(a))}return b}(g.disabledBuiltIns),Object.defineProperty({builtInEnabled:c,disabledBuiltIns:f},"maxConcurrent",{value:d,enumerable:!1,configurable:!0})}function k(a=i()){try{return new Set(j(a).disabledBuiltIns.map(a=>a.toLowerCase()))}catch{return new Set}}function l(a=i()){try{return j(a).builtInEnabled}catch{return!1}}g=(h.then?(await h)():h)[0],d()}catch(a){d(a)}})},74986:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Tu:()=>i});var e=c(73024),f=c(76760);c(61446);var g=c(75430);c(12969);var h=a([g]);function i(){let a=(0,f.join)((0,g.getAgentDir)(),"settings.json");if(!(0,e.existsSync)(a))return{};try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));return null===b||"object"!=typeof b||Array.isArray(b)?{}:b}catch{return{}}}g=(h.then?(await h)():h)[0],d()}catch(a){d(a)}})},75856:(a,b,c)=>{var d=global.process;let e=function(a){return a&&"object"==typeof a&&"function"==typeof a.removeListener&&"function"==typeof a.emit&&"function"==typeof a.reallyExit&&"function"==typeof a.listeners&&"function"==typeof a.kill&&"number"==typeof a.pid&&"function"==typeof a.on};if(e(d)){var f,g=c(12412),h=c(30223),i=/^win/i.test(d.platform),j=c(94735);"function"!=typeof j&&(j=j.EventEmitter),d.__signal_exit_emitter__?f=d.__signal_exit_emitter__:((f=d.__signal_exit_emitter__=new j).count=0,f.emitted={}),f.infinite||(f.setMaxListeners(1/0),f.infinite=!0),a.exports=function(a,b){if(!e(global.process))return function(){};g.equal(typeof a,"function","a callback must be provided for exit handler"),!1===n&&o();var c="exit";return b&&b.alwaysLast&&(c="afterexit"),f.on(c,a),function(){f.removeListener(c,a),0===f.listeners("exit").length&&0===f.listeners("afterexit").length&&k()}};var k=function(){n&&e(global.process)&&(n=!1,h.forEach(function(a){try{d.removeListener(a,m[a])}catch(a){}}),d.emit=r,d.reallyExit=p,f.count-=1)};a.exports.unload=k;var l=function(a,b,c){f.emitted[a]||(f.emitted[a]=!0,f.emit(a,b,c))},m={};h.forEach(function(a){m[a]=function(){e(global.process)&&d.listeners(a).length===f.count&&(k(),l("exit",null,a),l("afterexit",null,a),i&&"SIGHUP"===a&&(a="SIGINT"),d.kill(d.pid,a))}}),a.exports.signals=function(){return h};var n=!1,o=function(){!n&&e(global.process)&&(n=!0,f.count+=1,h=h.filter(function(a){try{return d.on(a,m[a]),!0}catch(a){return!1}}),d.emit=s,d.reallyExit=q)};a.exports.load=o;var p=d.reallyExit,q=function(a){e(global.process)&&(d.exitCode=a||0,l("exit",d.exitCode,null),l("afterexit",d.exitCode,null),p.call(d,d.exitCode))},r=d.emit,s=function(a,b){if(!("exit"===a&&e(global.process)))return r.apply(this,arguments);void 0!==b&&(d.exitCode=b);var c=r.apply(this,arguments);return l("exit",d.exitCode,null),l("afterexit",d.exitCode,null),c}}else a.exports=function(){return function(){}}},80723:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{fr:()=>j});var e=c(29021),f=c(33873),g=c(75430),h=c(74986),i=a([g,h]);function j(){let a=(0,f.join)((0,g.getAgentDir)(),"models.json");if(!(0,e.existsSync)(a))return{providers:{}};try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));return null!==b&&"object"==typeof b?b:{providers:{}}}catch{return{providers:{}}}}[g,h]=i.then?(await i)():i,d()}catch(a){d(a)}})},81186:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$9:()=>h,J1:()=>i});var e=c(75430),f=c(76760),g=a([e]);function h(a,b=process.platform){let c={...a};for(let a of Object.keys(c))(function(a,b){let c="win32"===b?a.toUpperCase():a;return"PORT"===c||"NODE_ENV"===c||c.startsWith("NEXT_")||"PI_WEB_PASSWORD"===c})(a,b)&&delete c[a];return c}function i(a={}){let{agentBinDir:b=(0,f.join)((0,e.getAgentDir)(),"bin"),baseEnvironment:c=process.env,localOperations:d=(0,e.createLocalBashOperations)({shellPath:a.shellPath}),platform:g=process.platform}=a;return{exec(a,e,f){var i;let j,k,l,m=(i=h(f.env??c,g),j="win32"===g?Object.keys(i).find(a=>"PATH"===a.toUpperCase())??"PATH":"PATH",k="win32"===g?";":":",(l=i[j]??"").split(k).filter(Boolean).includes(b)||(i[j]=[b,l].filter(Boolean).join(k)),i);return d.exec(a,e,{...f,env:m})}}}e=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},81463:(a,b,c)=>{a.exports=c(67313)},82249:(a,b,c)=>{"use strict";c.d(b,{Hh:()=>a6});var d=Symbol("NOT_RESOLVED");function e(a,b){return{tagName:a,nodeKind:"scalar",implicit:b.implicit??!1,matchByTagPrefix:b.matchByTagPrefix??!1,implicitFirstChars:b.implicitFirstChars??null,resolve:b.resolve,identify:b.identify,represent:b.represent??(a=>String(a)),representTagName:b.representTagName??(()=>a)}}function f(a,b){let c=void 0===b.finalize;return{tagName:a,nodeKind:"sequence",implicit:!1,matchByTagPrefix:b.matchByTagPrefix??!1,create:b.create,addItem:b.addItem,finalize:b.finalize??(a=>a),carrierIsResult:c,identify:b.identify,represent:b.represent??(a=>a),representTagName:b.representTagName??(()=>a)}}function g(a,b){let c=void 0===b.finalize;return{tagName:a,nodeKind:"mapping",implicit:!1,matchByTagPrefix:b.matchByTagPrefix??!1,create:b.create,addPair:b.addPair,has:b.has,keys:b.keys,get:b.get,finalize:b.finalize??(a=>a),carrierIsResult:c,identify:b.identify,represent:b.represent??(a=>a),representTagName:b.representTagName??(()=>a)}}var h=e("tag:yaml.org,2002:str",{resolve:a=>a,identify:a=>"string"==typeof a}),i=["","~","null","Null","NULL"],j=e("tag:yaml.org,2002:null",{implicit:!0,implicitFirstChars:["","~","n","N"],resolve:a=>-1!==i.indexOf(a)?null:d,identify:a=>null===a,represent:()=>"null"}),k=e("tag:yaml.org,2002:null",{implicit:!0,implicitFirstChars:["n"],resolve:(a,b)=>"null"===a||b&&""===a?null:d,identify:a=>null===a,represent:()=>"null"}),l=["","~","null","Null","NULL"],m=e("tag:yaml.org,2002:null",{implicit:!0,implicitFirstChars:["","~","n","N"],resolve:a=>-1!==l.indexOf(a)?null:d,identify:a=>null===a,represent:()=>"null"}),n=["true","True","TRUE"],o=["false","False","FALSE"],p=e("tag:yaml.org,2002:bool",{implicit:!0,implicitFirstChars:["t","T","f","F"],resolve:a=>-1!==n.indexOf(a)||-1===o.indexOf(a)&&d,identify:a=>"[object Boolean]"===Object.prototype.toString.call(a),represent:a=>a?"true":"false"}),q=["true"],r=["false"],s=e("tag:yaml.org,2002:bool",{implicit:!0,implicitFirstChars:["t","f"],resolve:a=>-1!==q.indexOf(a)||-1===r.indexOf(a)&&d,identify:a=>"[object Boolean]"===Object.prototype.toString.call(a),represent:a=>a?"true":"false"}),t=["true","True","TRUE","y","Y","yes","Yes","YES","on","On","ON"],u=["false","False","FALSE","n","N","no","No","NO","off","Off","OFF"],v=e("tag:yaml.org,2002:bool",{implicit:!0,implicitFirstChars:["y","Y","n","N","t","T","f","F","o","O"],resolve:a=>-1!==t.indexOf(a)||-1===u.indexOf(a)&&d,identify:a=>"[object Boolean]"===Object.prototype.toString.call(a),represent:a=>a?"true":"false"}),w=RegExp("^(?:0o[0-7]+|0x[0-9a-fA-F]+|[-+]?[0-9]+)$"),x=RegExp("^(?:[-+]?0b[0-1]+|[-+]?0o[0-7]+|[-+]?0x[0-9a-fA-F]+|[-+]?[0-9]+)$"),y=e("tag:yaml.org,2002:int",{implicit:!0,implicitFirstChars:["-","+",..."0123456789"],resolve:function(a,b){let c,e;if(b){if(!x.test(a))return d}else if(!w.test(a))return d;let f=(e=1,(("-"===(c=a)[0]||"+"===c[0])&&("-"===c[0]&&(e=-1),c=c.slice(1)),c.startsWith("0b"))?e*parseInt(c.slice(2),2):c.startsWith("0o")?e*parseInt(c.slice(2),8):c.startsWith("0x")?e*parseInt(c.slice(2),16):e*parseInt(c,10));return Number.isFinite(f)?f:d},identify:a=>Number.isInteger(a)&&!Object.is(a,-0)&&0>a.toString(10).indexOf("e"),represent:a=>a.toString(10)}),z=RegExp("^-?(?:0|[1-9][0-9]*)$"),A=RegExp("^(?:[-+]?0b[0-1]+|[-+]?0o[0-7]+|[-+]?0x[0-9a-fA-F]+|[-+]?[0-9]+)$"),B=e("tag:yaml.org,2002:int",{implicit:!0,implicitFirstChars:["-",..."0123456789"],resolve:function(a,b){let c,e;if(b){if(!A.test(a))return d}else if(!z.test(a))return d;let f=(e=1,(("-"===(c=a)[0]||"+"===c[0])&&("-"===c[0]&&(e=-1),c=c.slice(1)),c.startsWith("0b"))?e*parseInt(c.slice(2),2):c.startsWith("0o")?e*parseInt(c.slice(2),8):c.startsWith("0x")?e*parseInt(c.slice(2),16):e*parseInt(c,10));return Number.isFinite(f)?f:d},identify:a=>Number.isInteger(a)&&!Object.is(a,-0)&&0>a.toString(10).indexOf("e"),represent:a=>a.toString(10)}),C=RegExp("^(?:[-+]?0b[0-1_]+|[-+]?0[0-7_]+|[-+]?0x[0-9a-fA-F_]+|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+|[-+]?(?:0|[1-9][0-9_]*))$"),D=e("tag:yaml.org,2002:int",{implicit:!0,implicitFirstChars:["-","+",..."0123456789"],resolve:function(a){if(!C.test(a))return d;let b=function(a){let b=a.replace(/_/g,""),c=1;if(("-"===b[0]||"+"===b[0])&&("-"===b[0]&&(c=-1),b=b.slice(1)),b.startsWith("0b"))return c*parseInt(b.slice(2),2);if(b.startsWith("0x"))return c*parseInt(b.slice(2),16);if(b.includes(":")){let a=0;for(let c of b.split(":"))a=60*a+Number(c);return c*a}return"0"!==b&&"0"===b[0]?c*parseInt(b,8):c*parseInt(b,10)}(a);return Number.isFinite(b)?b:d},identify:a=>Number.isInteger(a)&&!Object.is(a,-0)&&0>a.toString(10).indexOf("e"),represent:a=>a.toString(10)}),E=RegExp("^(?:[-+]?[0-9]+(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?|[-+]?\\.[0-9]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),F=RegExp("^(?:[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),G=e("tag:yaml.org,2002:float",{implicit:!0,implicitFirstChars:["-","+",".",..."0123456789"],resolve:function(a){if(!E.test(a))return d;let b=a.toLowerCase(),c="-"===b[0]?-1:1;if("+-".includes(b[0])&&(b=b.slice(1)),".inf"===b)return 1===c?1/0:-1/0;if(".nan"===b)return NaN;let e=c*parseFloat(b);return Number.isFinite(e)||F.test(a)?e:d},identify:a=>"number"==typeof a&&(!Number.isInteger(a)||Object.is(a,-0)||a.toString(10).indexOf("e")>=0),represent:function(a){if(isNaN(a))return".nan";if(a===1/0)return".inf";if(a===-1/0)return"-.inf";if(Object.is(a,-0))return"-0.0";let b=a.toString(10);return/^[-+]?[0-9]+e/.test(b)?b.replace("e",".e"):b}}),H=RegExp("^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$"),I=RegExp("^(?:[-+]?[0-9]+(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?|[-+]?\\.[0-9]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),J=e("tag:yaml.org,2002:float",{implicit:!0,implicitFirstChars:["-",..."0123456789"],resolve:function(a,b){if(b){if(!I.test(a))return d;let b=a.toLowerCase(),c="-"===b[0]?-1:1;if("+-".includes(b[0])&&(b=b.slice(1)),".inf"===b)return 1===c?1/0:-1/0;if(".nan"===b)return NaN;let e=c*parseFloat(b);return Number.isFinite(e)?e:d}if(!H.test(a))return d;let c=Number(a);return Number.isFinite(c)?c:d},identify:a=>"number"==typeof a&&(!Number.isInteger(a)||Object.is(a,-0)||a.toString(10).indexOf("e")>=0),represent:function(a){if(isNaN(a))return".nan";if(a===1/0)return".inf";if(a===-1/0)return"-.inf";if(Object.is(a,-0))return"-0.0";let b=a.toString(10);return/^[-+]?[0-9]+e/.test(b)?b.replace("e",".e"):b}}),K=RegExp("^(?:[-+]?(?:(?:[0-9][0-9_]*)?\\.[0-9_]*)(?:[eE][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),L=RegExp("^(?:[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),M=e("tag:yaml.org,2002:float",{implicit:!0,implicitFirstChars:["-","+",".",..."0123456789"],resolve:function(a){if(!K.test(a))return d;let b=a.toLowerCase().replace(/_/g,""),c="-"===b[0]?-1:1;if("+-".includes(b[0])&&(b=b.slice(1)),".inf"===b)return 1===c?1/0:-1/0;if(".nan"===b)return NaN;let e=0;if(b.includes(":")){for(let a of b.split(":"))e=60*e+Number(a);e*=c}else e=c*parseFloat(b);return Number.isFinite(e)||L.test(a)?e:d},identify:a=>"number"==typeof a&&(!Number.isInteger(a)||Object.is(a,-0)||a.toString(10).indexOf("e")>=0),represent:function(a){if(isNaN(a))return".nan";if(a===1/0)return".inf";if(a===-1/0)return"-.inf";if(Object.is(a,-0))return"-0.0";let b=a.toString(10);return/^[-+]?[0-9]+e/.test(b)?b.replace("e",".e"):b}}),N=e("tag:yaml.org,2002:merge",{implicit:!0,implicitFirstChars:["<"],resolve:(a,b)=>"<<"===a||b&&""===a?"<<":d,identify:()=>!1}),O=/^[A-Za-z0-9+/]*={0,2}$/,P=e("tag:yaml.org,2002:binary",{resolve:function(a){let b=a.replace(/\s/g,"");if(b.length%4!=0||!O.test(b))return d;let c=atob(b),e=new Uint8Array(c.length);for(let a=0;a<c.length;a++)e[a]=c.charCodeAt(a);return e},identify:a=>"[object Uint8Array]"===Object.prototype.toString.call(a),represent:function(a){let b="";for(let c=0;c<a.length;c++)b+=String.fromCharCode(a[c]);return btoa(b)}}),Q=RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),R=RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function S(a,b,c,d=0,e=0,f=0,g=0){let h=new Date(Date.UTC(a,b,c,d,e,f,g));return h.setUTCFullYear(a,b,c),h}var T=e("tag:yaml.org,2002:timestamp",{implicit:!0,implicitFirstChars:[..."0123456789"],resolve:function(a){let b=Q.exec(a);if(null===b&&(b=R.exec(a)),null===b)return d;let c=+b[1],e=b[2]-1,f=+b[3];if(!b[4]){let a=S(c,e,f);return a.getUTCFullYear()!==c||a.getUTCMonth()!==e||a.getUTCDate()!==f?d:a}let g=+b[4],h=+b[5],i=+b[6],j=0;if(g>23||h>59||i>59)return d;if(b[7]){let a=b[7].slice(0,3);for(;a.length<3;)a+="0";j=+a}let k=S(c,e,f,g,h,i,j);if(k.getUTCFullYear()!==c||k.getUTCMonth()!==e||k.getUTCDate()!==f)return d;if(b[9]){let a=+b[10],c=+(b[11]||0);if(a>23||c>59)return d;let e=(60*a+c)*6e4;k.setTime(k.getTime()-("-"===b[9]?-e:e))}return k},identify:a=>a instanceof Date,represent:a=>a.toISOString()}),U=f("tag:yaml.org,2002:seq",{create:()=>[],addItem:(a,b)=>{a.push(b)},identify:Array.isArray});function V(a){if(null===a||"object"!=typeof a||Array.isArray(a))return!1;let b=Object.getPrototypeOf(a);return null===b||b===Object.prototype}function W(a,b){let c={};for(let d of b)void 0!==a[d]&&(c[d]=a[d]);return c}var X=f("tag:yaml.org,2002:omap",{create:()=>({list:[],seen:new Set}),addItem:(a,b)=>{let c;if(b instanceof Map){if(1!==b.size)return"cannot resolve an ordered map item";c=b.keys().next().value}else{if(!V(b))return"cannot resolve an ordered map item";let a=Object.keys(b);if(1!==a.length)return"cannot resolve an ordered map item";c=a[0]}return a.seen.has(c)?"duplicate key in ordered map":(a.seen.add(c),a.list.push(b),"")},finalize:a=>a.list,identify:()=>!1}),Y=f("tag:yaml.org,2002:pairs",{create:()=>[],addItem:(a,b)=>{if(b instanceof Map)return 1!==b.size?"cannot resolve a pairs item":(a.push(b.entries().next().value),"");if("[object Object]"!==Object.prototype.toString.call(b))return"cannot resolve a pairs item";let c=Object.keys(b);return 1!==c.length?"cannot resolve a pairs item":(a.push([c[0],b[c[0]]]),"")},identify:()=>!1}),Z=g("tag:yaml.org,2002:map",{create:()=>({}),identify:V,represent:a=>{let b=new Map;for(let c of Object.keys(a))b.set(c,a[c]);return b},addPair:(a,b,c)=>{if(null!==b&&"object"==typeof b)return"object-based map does not support complex keys";let d=String(b);return"__proto__"===d?Object.defineProperty(a,d,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[d]=c,""},has:(a,b)=>(null===b||"object"!=typeof b)&&Object.prototype.hasOwnProperty.call(a,String(b)),keys:a=>Object.keys(a),get:(a,b)=>{let c=String(b);return Object.prototype.hasOwnProperty.call(a,c)?a[c]:null}}),$=g("tag:yaml.org,2002:set",{create:()=>new Set,identify:a=>a instanceof Set,represent:a=>{let b=new Map;for(let c of a)b.set(c,null);return b},addPair:(a,b,c)=>null!==c?"cannot resolve a set item":(a.add(b),""),has:(a,b)=>a.has(b),keys:a=>a.keys(),get:()=>null}),_=class a{tags;implicitScalarTags;implicitScalarByFirstChar;implicitScalarAnyFirstChar;defaultScalarTag;defaultSequenceTag;defaultMappingTag;exact;prefix;constructor(a){const b=function(a){let b=[];for(let c of a){let a=b.length;for(let d=0;d<b.length;d++){let e=b[d];if(e.nodeKind===c.nodeKind&&e.tagName===c.tagName&&e.matchByTagPrefix===c.matchByTagPrefix){a=d;break}}b[a]=c}return b}(a),c=[],d={scalar:Object.create(null),sequence:Object.create(null),mapping:Object.create(null)},e={scalar:[],sequence:[],mapping:[]};for(const a of b){if("scalar"===a.nodeKind&&a.implicit){if(a.matchByTagPrefix)throw Error("Implicit scalar tags cannot match by tag prefix");c.push(a)}switch(a.nodeKind){case"scalar":a.matchByTagPrefix?e.scalar.push(a):d.scalar[a.tagName]=a;break;case"sequence":a.matchByTagPrefix?e.sequence.push(a):d.sequence[a.tagName]=a;break;case"mapping":a.matchByTagPrefix?e.mapping.push(a):d.mapping[a.tagName]=a}}const f=c.filter(a=>null===a.implicitFirstChars),g=new Set;for(const a of c)if(null!==a.implicitFirstChars)for(const b of a.implicitFirstChars)g.add(b);const h=new Map;for(const a of g)h.set(a,c.filter(b=>null===b.implicitFirstChars||-1!==b.implicitFirstChars.indexOf(a)));const i=d.scalar["tag:yaml.org,2002:str"];if(!i)throw Error("schema does not define the default scalar tag (tag:yaml.org,2002:str)");this.tags=b,this.implicitScalarTags=c,this.implicitScalarByFirstChar=h,this.implicitScalarAnyFirstChar=f,this.defaultScalarTag=i,this.defaultSequenceTag=d.sequence["tag:yaml.org,2002:seq"],this.defaultMappingTag=d.mapping["tag:yaml.org,2002:map"],this.exact=d,this.prefix=e}lookupScalarTag(a){let b=this.exact.scalar[a];if(b)return b;for(let b of this.prefix.scalar)if(a.startsWith(b.tagName))return b}lookupSequenceTag(a){let b=this.exact.sequence[a];if(b)return b;for(let b of this.prefix.sequence)if(a.startsWith(b.tagName))return b}lookupMappingTag(a){let b=this.exact.mapping[a];if(b)return b;for(let b of this.prefix.mapping)if(a.startsWith(b.tagName))return b}resolveImplicitScalarTag(a){for(let b of this.implicitScalarByFirstChar.get(a.charAt(0))??this.implicitScalarAnyFirstChar){let c=b.resolve(a,!1,b.tagName);if(c!==d)return{value:c,tag:b}}let b=this.defaultScalarTag;return{value:b.resolve(a,!1,b.tagName),tag:b}}withTags(...b){let c=[];for(let a of b)c=c.concat(a);return new a([...this.tags,...c])}},aa=new _([h,U,Z]);new _([...aa.tags,k,s,B,J]);var ab=new _([...aa.tags,j,p,y,G]);function ac(a){if(Array.isArray(a)){let b=Array.prototype.slice.call(a);for(let a=0;a<b.length;a++){if(Array.isArray(b[a]))return null;"object"==typeof b[a]&&"[object Object]"===Object.prototype.toString.call(b[a])&&(b[a]="[object Object]")}return String(b)}return"object"==typeof a&&"[object Object]"===Object.prototype.toString.call(a)?"[object Object]":String(a)}new _([...aa.tags,m,v,D,M,T,N,P,X,Y,$]).withTags({...D,resolve:(a,b,c)=>{let e=D.resolve(a,b,c);return e===d?y.resolve(a,b,c):e}},{...M,resolve:(a,b,c)=>{let e=M.resolve(a,b,c);return e===d?G.resolve(a,b,c):e}}),g("tag:yaml.org,2002:map",{create:()=>new Map,addPair:(a,b,c)=>(a.set(b,c),""),has:(a,b)=>a.has(b),keys:a=>a.keys(),get:(a,b)=>a.get(b),identify:a=>a instanceof Map||V(a),represent:a=>{if(a instanceof Map)return a;let b=new Map;for(let c of Object.keys(a))b.set(c,a[c]);return b}}),g("tag:yaml.org,2002:map",{create:()=>({}),identify:V,represent:a=>{let b=new Map;for(let c of Object.keys(a))b.set(c,a[c]);return b},addPair:(a,b,c)=>{let d=ac(b);return null===d?"nested arrays are not supported inside keys":("__proto__"===d?Object.defineProperty(a,d,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[d]=c,"")},has:(a,b)=>{let c=ac(b);return null!==c&&Object.prototype.hasOwnProperty.call(a,c)},keys:a=>Object.keys(a),get:(a,b)=>{let c=String(b);return Object.prototype.hasOwnProperty.call(a,c)?a[c]:null}});var ad={maxLength:79,indent:1,linesBefore:3,linesAfter:2};function ae(a,b,c,d,e){let f="",g="",h=Math.floor(e/2)-1;return d-b>h&&(b=d-h+(f=" ... ").length),c-d>h&&(c=d+h-(g=" ...").length),{str:f+a.slice(b,c).replace(/\t/g,"→")+g,pos:d-b+f.length}}function af(a,b){return" ".repeat(Math.max(b-a.length,0))+a}function ag(a,b){let c="";return a.mark?(a.mark.name&&(c+=`in "${a.mark.name}" `),c+=`(${a.mark.line+1}:${a.mark.column+1})`,!b&&a.mark.snippet&&(c+=`
|
|
38
38
|
|
|
39
39
|
${a.mark.snippet}`),`${a.reason} ${c}`):a.reason}var ah=class a extends Error{reason;mark;constructor(a,b){super(),this.name="YAMLException",this.reason=a,this.mark=b,this.message=ag(this,!1),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}toString(a){return`${this.name}: ${ag(this,a)}`}static throwAt(b,c,d,e=""){let f=0,g=0;for(let a=0;a<c;a++){let c=b.charCodeAt(a);10===c?(f++,g=a+1):13===c&&(f++,10===b.charCodeAt(a+1)&&a++,g=a+1)}let h={name:e,buffer:b,position:c,line:f,column:c-g};throw h.snippet=function(a){let b;if(!a.buffer)return null;let c={...ad,...void 0},d=/\r?\n|\r|\0/g,e=[0],f=[],g=-1;for(;b=d.exec(a.buffer);)f.push(b.index),e.push(b.index+b[0].length),a.position<=b.index&&g<0&&(g=e.length-2);g<0&&(g=e.length-1);let h="",i=Math.min(a.line+c.linesAfter,f.length).toString().length,j=c.maxLength-(c.indent+i+3);for(let b=1;b<=c.linesBefore&&!(g-b<0);b++){let d=ae(a.buffer,e[g-b],f[g-b],a.position-(e[g]-e[g-b]),j);h=`${" ".repeat(c.indent)}${af((a.line-b+1).toString(),i)} | ${d.str}
|
|
40
40
|
${h}`}let k=ae(a.buffer,e[g],f[g],a.position,j);h+=`${" ".repeat(c.indent)}${af((a.line+1).toString(),i)} | ${k.str}
|
|
@@ -42,7 +42,7 @@ ${"-".repeat(c.indent+i+3+k.pos)}^
|
|
|
42
42
|
`;for(let b=1;b<=c.linesAfter&&!(g+b>=f.length);b++){let d=ae(a.buffer,e[g+b],f[g+b],a.position-(e[g]-e[g+b]),j);h+=`${" ".repeat(c.indent)}${af((a.line+b+1).toString(),i)} | ${d.str}
|
|
43
43
|
`}return h.replace(/\n$/,"")}(h),new a(d,h)}};function ai(a){switch(a){case 48:return"\0";case 97:return"\x07";case 98:return"\b";case 116:case 9:return" ";case 110:return"\n";case 118:return"\v";case 102:return"\f";case 114:return"\r";case 101:return"\x1b";case 32:return" ";case 34:return'"';case 47:return"/";case 92:return"\\";case 78:return"\x85";case 95:return"\xa0";case 76:return"\u2028";case 80:return"\u2029";default:return""}}var aj=Array(256),ak=Array(256);for(let a=0;a<256;a++)aj[a]=+!!ai(a),ak[a]=ai(a);function al(a,b,c){let d=0;for(;b<c;){let c=a.charCodeAt(b);if(10===c)d++,b++;else if(13===c)d++,b++,10===a.charCodeAt(b)&&b++;else if(32===c||9===c)b++;else break}return{position:b,breaks:d}}function am(a){return 1===a?" ":"\n".repeat(a-1)}function an(a,b,c,d,e,f){let g=d<0?0:d,h=a.slice(b,c).replace(/\r\n?/g,"\n"),i=""===h?[]:(h.endsWith("\n")?h.slice(0,-1):h).split("\n"),j="",k=!1,l=0,m=!1;for(let a of i){let b=0;for(;b<g&&32===a.charCodeAt(b);)b++;if(d<0||b>=a.length){l++;continue}let c=a.slice(g),e=c.charCodeAt(0);f?32===e||9===e?(m=!0,j+="\n".repeat(k?1+l:l)):m?(m=!1,j+="\n".repeat(l+1)):0===l?k&&(j+=" "):j+="\n".repeat(l):j+="\n".repeat(k?1+l:l),j+=c,k=!0,l=0}return 3===e?j+="\n".repeat(k?1+l:l):2!==e&&k&&(j+="\n"),j}var ao=Object.assign(Object.create(null),{"!":"!","!!":"tag:yaml.org,2002:"});function ap(a,b){if(a.startsWith("!<")&&a.endsWith(">"))return decodeURIComponent(a.slice(2,-1));let c=a.indexOf("!",1),d=-1===c?"!":a.slice(0,c+1);return decodeURIComponent(b?.[d]??ao[d]??d)+decodeURIComponent(a.slice(d.length))}var aq={filename:"",schema:ab,json:!1,maxTotalMergeKeys:1e4,maxAliases:-1};function ar(a,b){ah.throwAt(a.source,a.position,b,a.filename)}function as(a,b,c,d){try{return c.finalize(d)}catch(c){if(c instanceof ah)throw c;ah.throwAt(a.source,b,c instanceof Error?c.message:String(c),a.filename)}}function at(a,b,c){let d=-1===b.tagStart?"":a.source.slice(b.tagStart,b.tagEnd);return""===d||"!"===d?c:ap(d,a.tagHandlers)}function au(a){return"mapping"===a.nodeKind}function av(a,b,c,d){for(let e of d.keys(c)){if(-1!==a.maxTotalMergeKeys&&++a.totalMergeKeys>a.maxTotalMergeKeys&&ar(a,`merge keys exceeded maxTotalMergeKeys (${a.maxTotalMergeKeys})`),b.tag.has(b.value,e))continue;let f=b.tag.addPair(b.value,e,d.get(c,e));f&&ar(a,f),(b.overridable??=new Set).add(e)}}function aw(a,b,c){let d=a.frames[a.frames.length-1];if("document"===d.kind)d.value=b,d.hasValue=!0;else if("sequence"===d.kind){au(c)&&a.nodeTags.set(b,c);let e=d.tag.addItem(d.value,b,d.index++);e&&ar(a,e)}else if(d.hasKey){let e=d.key;d.key=void 0,d.hasKey=!1,function(a,b,c,d,e){if(a.position=b.keyPosition,b.keyIsMerge){var f=a,g=b,h=d,i=e;if(f.position=g.keyPosition,au(i))av(f,g,h,i);else if("sequence"===i.nodeKind&&Array.isArray(h))for(let a of h){let b=f.nodeTags.get(a);b||ar(f,"cannot merge mappings; the provided source object is unacceptable"),av(f,g,a,b)}else ar(f,"cannot merge mappings; the provided source object is unacceptable");return}!a.json&&b.tag.has(b.value,c)&&!b.overridable?.has(c)&&ar(a,"duplicated mapping key");let j=b.tag.addPair(b.value,c,d);j&&ar(a,j),b.overridable?.delete(c)}(a,d,e,b,c)}else d.key=b,d.keyPosition=a.position,d.hasKey=!0,d.keyIsMerge="tag:yaml.org,2002:merge"===c.tagName}function ax(a,b,c,d,e){if(-1!==b.anchorStart){let f={value:c,tag:d,isValueFinal:e};return a.anchors.set(a.source.slice(b.anchorStart,b.anchorEnd),f),f}return null}var ay=Object.prototype.hasOwnProperty,az=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,aA=/[,\[\]{}]/,aB=/^(?:!|!!|![0-9A-Za-z-]+!)$/,aC=String.raw`(?:%[0-9A-Fa-f]{2}|[0-9A-Za-z\-#;/?:@&=+$,_.!~*'()\[\]])`,aD=String.raw`(?:%[0-9A-Fa-f]{2}|[0-9A-Za-z\-#;/?:@&=+$.~*'()_])`,aE=RegExp(`^(?:${aC})*$`),aF=RegExp(`^(?:${aD})+$`),aG=RegExp(`^(?:!(?:${aC})*|${aD}(?:${aC})*)$`),aH={filename:"",maxDepth:100};function aI(a,b,c,d,e,f,g){a.events.push({type:2,start:b,anchorStart:c,anchorEnd:d,tagStart:e,tagEnd:f,style:g})}function aJ(a,b,c,d,e,f,g){a.events.push({type:3,start:b,anchorStart:c,anchorEnd:d,tagStart:e,tagEnd:f,style:g})}function aK(a,b){a.events.splice(b.eventsLength,0,{type:3,start:b.position,anchorStart:-1,anchorEnd:-1,tagStart:-1,tagEnd:-1,style:2})}function aL(a,b,c,d,e,f,g,h,i=1,j=-1,k=!1){a.events.push({type:4,valueStart:b,valueEnd:c,anchorStart:d,anchorEnd:e,tagStart:f,tagEnd:g,style:h,chomping:i,indent:j,fast:k})}function aM(a){a.events.push({type:6})}function aN(a){aL(a,-1,-1,-1,-1,-1,-1,1)}function aO(){return{anchorStart:-1,anchorEnd:-1,tagStart:-1,tagEnd:-1}}function aP(a){return{position:a.position,line:a.line,lineStart:a.lineStart,lineIndent:a.lineIndent,firstTabInLine:a.firstTabInLine,eventsLength:a.events.length}}function aQ(a,b){a.position=b.position,a.line=b.line,a.lineStart=b.lineStart,a.lineIndent=b.lineIndent,a.firstTabInLine=b.firstTabInLine,a.events.length=b.eventsLength}function aR(a,b){ah.throwAt(a.input.slice(0,a.length),a.position,b,a.filename)}function aS(a){return 10===a||13===a}function aT(a){return 9===a||32===a}function aU(a){return aT(a)||aS(a)}function aV(a){return 0===a||aU(a)}function aW(a){return 44===a||91===a||93===a||123===a||125===a}function aX(a){10===a.input.charCodeAt(a.position)?a.position++:(a.position++,10===a.input.charCodeAt(a.position)&&a.position++),a.line++,a.lineStart=a.position,a.lineIndent=0,a.firstTabInLine=-1}function aY(a,b){let c=0,d=a.input.charCodeAt(a.position),e=a.position===a.lineStart||aU(a.input.charCodeAt(a.position-1));for(;0!==d;){for(;aT(d);)e=!0,9===d&&-1===a.firstTabInLine&&(a.firstTabInLine=a.position),d=a.input.charCodeAt(++a.position);if(b&&e&&35===d)do d=a.input.charCodeAt(++a.position);while(!aS(d)&&0!==d);if(!aS(d))break;for(aX(a),c++,e=!0,d=a.input.charCodeAt(a.position);32===d;)a.lineIndent++,d=a.input.charCodeAt(++a.position)}return c}function aZ(a,b=a.position){let c=a.input.charCodeAt(b);if((45===c||46===c)&&c===a.input.charCodeAt(b+1)&&c===a.input.charCodeAt(b+2)){let c=a.input.charCodeAt(b+3);return 0===c||aU(c)}return!1}function a$(a){let b=a.input.charCodeAt(a.position);for(;0!==b&&!aS(b);)b=a.input.charCodeAt(++a.position)}function a_(a,b,c){az.test(a.input.slice(b,c))&&aR(a,"the stream contains non-printable characters")}function a0(a,b){aY(a,!1),a.lineIndent<b&&aR(a,"deficient indentation")}function a1(a,b){let c=a.line;aY(a,!0),(a.line>c&&a.lineIndent<b||-1!==a.firstTabInLine&&a.lineIndent<b)&&aR(a,"deficient indentation")}function a2(a,b,c){if(-1!==a.firstTabInLine||45!==a.input.charCodeAt(a.position)||!aV(a.input.charCodeAt(a.position+1)))return!1;for(aI(a,a.position,c.anchorStart,c.anchorEnd,c.tagStart,c.tagEnd,1);45===a.input.charCodeAt(a.position)&&aV(a.input.charCodeAt(a.position+1));){-1!==a.firstTabInLine&&(a.position=a.firstTabInLine,aR(a,"tab characters must not be used in indentation"));let c=a.line;a.position++;let d=aY(a,!0)>0;if(-1!==a.firstTabInLine&&45===a.input.charCodeAt(a.position)&&aV(a.input.charCodeAt(a.position+1))&&aR(a,"bad indentation of a sequence entry"),d&&a.lineIndent<=b?aN(a):a4(a,b,3,!1,!0),aY(a,!0),a.lineIndent<b||a.position>=a.length)break;a.lineIndent>b&&aR(a,"bad indentation of a sequence entry"),a.line===c&&45===a.input.charCodeAt(a.position)&&aV(a.input.charCodeAt(a.position+1))&&aR(a,"bad indentation of a sequence entry")}return aM(a),!0}function a3(a,b,c,d){let e=!1,f=!1,g=!1,h=!1;if(-1!==a.firstTabInLine)return!1;let i=a.input.charCodeAt(a.position);for(;0!==i;){e||-1===a.firstTabInLine||(a.position=a.firstTabInLine,aR(a,"tab characters must not be used in indentation"));let j=a.input.charCodeAt(a.position+1),k=a.line;if((63===i||58===i)&&aV(j))g||(aJ(a,a.position,d.anchorStart,d.anchorEnd,d.tagStart,d.tagEnd,1),g=!0),63===i?(e&&aN(a),f=!0,e=!0):(e||(aN(a),f=!0),e=!1),a.position+=1,h=!0;else{e&&(aN(a),e=!1);let b=aP(a);if(!a4(a,c,2,!1,!0))break;if(a.line===k){for(i=a.input.charCodeAt(a.position);aT(i);)i=a.input.charCodeAt(++a.position);if(58===i){if(aV(i=a.input.charCodeAt(++a.position))||aR(a,"a whitespace character is expected after the key-value separator within a block mapping"),!g){for(aQ(a,b),aJ(a,b.position,d.anchorStart,d.anchorEnd,d.tagStart,d.tagEnd,1),g=!0,a4(a,c,2,!1,!0),i=a.input.charCodeAt(a.position);aT(i);)i=a.input.charCodeAt(++a.position);a.position++}f=!0,e=!1,h=!1}else if(f)aR(a,"expected ':' after a mapping key");else{if(-1!==d.anchorStart||-1!==d.tagStart)return aQ(a,b),!1;return!0}}else if(f)aR(a,"can not read a block mapping entry; a multiline key may not be an implicit key");else{if(-1!==d.anchorStart||-1!==d.tagStart)return aQ(a,b),!1;return!0}}if(a4(a,b,4,!0,h)&&(h=!1),!e&&h&&(aN(a),h=!1),aY(a,!0),i=a.input.charCodeAt(a.position),(a.line===k||a.lineIndent>b)&&0!==i)aR(a,"bad indentation of a mapping entry");else if(a.lineIndent<b)break}return!!f&&(e&&aN(a),g&&aM(a),!0)}function a4(a,b,c,d,e,f=!0){a.depth>=a.maxDepth&&aR(a,`nesting exceeded maxDepth (${a.maxDepth})`),a.depth++;let g=1,h=!1,i=!1,j=null,k=aO(),l=4===c||3===c,m=l,n=l;if(d&&aY(a,!0)&&(h=!0,g=a.lineIndent>b?1:a.lineIndent===b?0:-1),1===g)for(;;){let d=a.input.charCodeAt(a.position),e=aP(a);if(h&&1!==g&&(33===d||38===d))break;if(h&&n&&(-1!==k.tagStart||-1!==k.anchorStart)&&(33===d||38===d)){let c=aP(a),d=b+1;if(a3(a,a.position-a.lineStart,d,k)&&a.events[c.eventsLength]?.type===3)return a.depth--,!0;aQ(a,c)}if(h&&(33===d&&-1!==k.tagStart||38===d&&-1!==k.anchorStart)||!function(a,b,c){let d;if(33!==a.input.charCodeAt(a.position))return!1;-1!==b.tagStart&&aR(a,"duplication of a tag property");let e=a.position,f=!1,g=!1,h="!",i=a.input.charCodeAt(++a.position);60===i?(f=!0,i=a.input.charCodeAt(++a.position)):33===i&&(g=!0,h="!!",i=a.input.charCodeAt(++a.position));let j=a.position;if(f){for(;0!==i&&62!==i;)i=a.input.charCodeAt(++a.position);62!==i&&aR(a,"unexpected end of the stream within a verbatim tag"),d=a.input.slice(j,a.position),a.position++}else{for(;0!==i&&!aU(i)&&!(c&&aW(i));)33===i&&(g?aR(a,"tag suffix cannot contain exclamation marks"):(h=a.input.slice(j-1,a.position+1),aB.test(h)||aR(a,"named tag handle cannot contain such characters"),g=!0,j=a.position+1)),i=a.input.charCodeAt(++a.position);d=a.input.slice(j,a.position),aA.test(d)&&aR(a,"tag suffix cannot contain flow indicator characters")}return!d||(f?aE.test(d):aF.test(d))||aR(a,`tag name cannot contain such characters: ${d}`),f||"!"===h||"!!"===h||ay.call(a.tagHandlers,h)||aR(a,`undeclared tag handle "${h}"`),b.tagStart=e,b.tagEnd=a.position,!0}(a,k,1===c)&&!function(a,b){if(38!==a.input.charCodeAt(a.position))return!1;-1!==b.anchorStart&&aR(a,"duplication of an anchor property"),a.position++;let c=a.position;for(;0!==a.input.charCodeAt(a.position)&&!aU(a.input.charCodeAt(a.position))&&!aW(a.input.charCodeAt(a.position));)a.position++;return a.position===c&&aR(a,"name of an anchor node must contain at least one character"),b.anchorStart=c,b.anchorEnd=a.position,!0}(a,k))break;null===j&&(j=e),aY(a,!0)?(h=!0,m=n,g=a.lineIndent>b?1:a.lineIndent===b?0:-1):m=!1}if(m&&(m=h||e),1===g||4===c){let d=1===c||2===c?b:b+1,e=a.position-a.lineStart;if(1===g)if(m&&(a2(a,e,k)||a3(a,e,d,k))||function(a,b,c){let d=a.input.charCodeAt(a.position),e=123===d,f=a.position,g=!0;if(91!==d&&123!==d)return!1;let h=e?125:93;for(e?aJ(a,f,c.anchorStart,c.anchorEnd,c.tagStart,c.tagEnd,2):aI(a,f,c.anchorStart,c.anchorEnd,c.tagStart,c.tagEnd,2),a.position++;0!==a.input.charCodeAt(a.position);){a1(a,b);let c=a.input.charCodeAt(a.position);if(c===h)return a.position++,aM(a),!0;g?44===c&&aR(a,"expected the node content, but found ','"):aR(a,"missed comma between flow collection entries");let d=!1,f=!1;63===c&&aU(a.input.charCodeAt(a.position+1))&&(d=f=!0,a.position+=1,a1(a,b));let i=a.line,j=aP(a),k=a4(a,b,1,!1,!0);a1(a,b),c=a.input.charCodeAt(a.position),(e||f||a.line===i)&&58===c?(d=!0,a.position++,a1(a,b),e||aK(a,j),k||aN(a),a4(a,b,1,!1,!0)||aN(a),a1(a,b),e||aM(a)):e&&d?(k||aN(a),aN(a)):e?aN(a):d&&(aK(a,j),k||aN(a),aN(a),aM(a)),44===(c=a.input.charCodeAt(a.position))?(g=!0,a.position++):g=!1}aR(a,"unexpected end of the stream within a flow collection")}(a,d,k))i=!0;else{let b=a.input.charCodeAt(a.position);if(null!==j&&f&&n&&!m&&124!==b&&62!==b){let b=aP(a),c=j.position-j.lineStart;aQ(a,j),a3(a,c,d,aO())&&a.events[b.eventsLength]?.type===3?i=!0:aQ(a,b)}!i&&(l&&function(a,b,c){let d=a.input.charCodeAt(a.position),e=1,f=-1,g=!1;if(124!==d&&62!==d)return!1;for(a.position++;0!==a.input.charCodeAt(a.position);){let c=a.input.charCodeAt(a.position),d=c>=48&&c<=57?c-48:-1;if(43===c||45===c)1!==e&&aR(a,"repeat of a chomping mode identifier"),e=43===c?3:2,a.position++;else if(d>=0)0===d&&aR(a,"bad explicit indentation width of a block scalar; it cannot be less than one"),g&&aR(a,"repeat of an indentation width identifier"),f=b+d-1,g=!0,a.position++;else break}let h=!1;for(;aT(a.input.charCodeAt(a.position));)h=!0,a.position++;h&&35===a.input.charCodeAt(a.position)&&a$(a),aS(a.input.charCodeAt(a.position))?aX(a):0!==a.input.charCodeAt(a.position)&&aR(a,"a line break is expected");let i=g?f:-1,j=0,k=a.position,l=a.position;for(;0!==a.input.charCodeAt(a.position);){let c=a.position,d=0;for(;32===a.input.charCodeAt(c+d);)d++;let e=a.input.charCodeAt(c+d);if(0===e){i>=0?d>i&&(l=c+d):d>0&&(l=c+d);break}if(c===a.lineStart&&aZ(a,c))break;if(!g&&-1===i&&aS(e)&&(j=Math.max(j,d)),g||-1!==i||aS(e)||(9===e&&d<b&&(a.position=c+d,aR(a,"tab characters must not be used in indentation")),d<j&&(a.position=c+d,aR(a,"bad indentation of a mapping entry"))),-1===i&&0!==e&&!aS(e)&&d<b){a.lineIndent=d,a.position=c+d;break}g||0===e||aS(e)||-1!==i||(i=d);let f=-1===i?b+1:i;if(0!==e&&!aS(e)&&d<f){a.lineIndent=d,a.position=c+d;break}a$(a),l=a.position,aS(a.input.charCodeAt(a.position))&&(aX(a),l=a.position)}return a_(a,k,l),aL(a,k,l,c.anchorStart,c.anchorEnd,c.tagStart,c.tagEnd,124===d?4:5,e,i),!0}(a,d,k)||function(a,b,c){if(39!==a.input.charCodeAt(a.position))return!1;a.position++;let d=a.position,e=!0;for(;0!==a.input.charCodeAt(a.position);){let f=a.input.charCodeAt(a.position);if(39===f){if(39===a.input.charCodeAt(a.position+1)){e=!1,a.position+=2;continue}let b=a.position;return a.position++,aL(a,d,b,c.anchorStart,c.anchorEnd,c.tagStart,c.tagEnd,2,1,-1,e),!0}aS(f)?(e=!1,a0(a,b)):a.position===a.lineStart&&aZ(a)?aR(a,"unexpected end of the document within a single quoted scalar"):9!==f&&f<32?aR(a,"expected valid JSON character"):a.position++}aR(a,"unexpected end of the stream within a single quoted scalar")}(a,d,k)||function(a,b,c){if(34!==a.input.charCodeAt(a.position))return!1;a.position++;let d=a.position,e=!0;for(;0!==a.input.charCodeAt(a.position);){let f=a.input.charCodeAt(a.position);if(34===f){let b=a.position;return a.position++,aL(a,d,b,c.anchorStart,c.anchorEnd,c.tagStart,c.tagEnd,3,1,-1,e),!0}if(92===f){e=!1;let c=a.input.charCodeAt(++a.position);if(aS(c))a0(a,b);else if(48===c||97===c||98===c||116===c||9===c||110===c||118===c||102===c||114===c||101===c||32===c||34===c||47===c||92===c||78===c||95===c||76===c||80===c)a.position++;else{let b=120===c?2:117===c?4:8*(85===c);for(0===b&&aR(a,"unknown escape sequence");b-- >0;)a.position++,0>function(a){if(a>=48&&a<=57)return a-48;let b=32|a;return b>=97&&b<=102?b-97+10:-1}(a.input.charCodeAt(a.position))&&aR(a,"expected hexadecimal character");a.position++}}else aS(f)?(e=!1,a0(a,b)):a.position===a.lineStart&&aZ(a)?aR(a,"unexpected end of the document within a double quoted scalar"):9!==f&&f<32?aR(a,"expected valid JSON character"):a.position++}aR(a,"unexpected end of the stream within a double quoted scalar")}(a,d,k)||function(a,b){var c;if(42!==a.input.charCodeAt(a.position))return!1;(-1!==b.anchorStart||-1!==b.tagStart)&&aR(a,"alias node should not have any properties"),a.position++;let d=a.position;for(;0!==a.input.charCodeAt(a.position)&&!aU(a.input.charCodeAt(a.position))&&!aW(a.input.charCodeAt(a.position));)a.position++;return a.position===d&&aR(a,"name of an alias node must contain at least one character"),c=a.position,a.events.push({type:5,anchorStart:d,anchorEnd:c}),!0}(a,k)||function(a,b,c,d){if(!function(a,b){let c=a.input.charCodeAt(a.position),d=1===b;if(0===c||aU(c)||35===c||38===c||42===c||33===c||124===c||62===c||39===c||34===c||37===c||64===c||96===c||d&&aW(c))return!1;if(63===c||45===c){let b=a.input.charCodeAt(a.position+1);if(aV(b)||d&&aW(b))return!1}return!0}(a,c))return!1;let e=a.position,f=a.position,g=a.input.charCodeAt(a.position),h=1===c,i=!1;for(;0!==g&&!(a.position===a.lineStart&&aZ(a));){if(58===g){let b=a.input.charCodeAt(a.position+1);if(aV(b)||h&&aW(b))break}else if(35===g){if(aU(a.input.charCodeAt(a.position-1)))break}else if(h&&aW(g))break;else if(aS(g)){let c=a.position,d=a.line,e=a.lineStart,f=a.lineIndent;if(aY(a,!1),a.lineIndent>=b){i=!0,g=a.input.charCodeAt(a.position);continue}a.position=c,a.line=d,a.lineStart=e,a.lineIndent=f;break}aT(g)||(f=a.position+1),g=a.input.charCodeAt(++a.position)}return f!==e&&(a_(a,e,f),aL(a,e,f,d.anchorStart,d.anchorEnd,d.tagStart,d.tagEnd,1,1,-1,!i),!0)}(a,d,c,k))&&(i=!0)}else 0===g&&(i=m&&a2(a,e,k))}return l=l&&!i,!i&&(-1!==k.anchorStart||-1!==k.tagStart||l)&&(aL(a,-1,-1,k.anchorStart,k.anchorEnd,k.tagStart,k.tagEnd,1),i=!0),a.depth--,i||-1!==k.anchorStart||-1!==k.tagStart}var a5={...aH,...aq};function a6(a,b){let c=function(a,b={}){let c={...a5,...b},e=String(a),f=Object.keys(aH),g=Object.keys(aq);return function(a,b){let c={...aq,...b,events:a,documents:[],eventIndex:0,position:0,frames:[],anchors:new Map,nodeTags:new Map,tagHandlers:Object.create(null),totalMergeKeys:0,aliasCount:0};for(;c.eventIndex<c.events.length;){let a=c.events[c.eventIndex++];switch(c.position="tagStart"in a&&-1!==a.tagStart?a.tagStart:"anchorStart"in a&&-1!==a.anchorStart?a.anchorStart:"valueStart"in a&&-1!==a.valueStart?a.valueStart:"start"in a?a.start:0,a.type){case 1:for(let b of(c.anchors=new Map,c.nodeTags=new Map,c.aliasCount=0,c.tagHandlers=Object.create(null),a.directives))"tag"===b.kind&&(c.tagHandlers[b.handle]=b.prefix);c.frames.push({kind:"document",position:c.position,value:void 0,hasValue:!1});break;case 4:{let{value:b,tag:e}=function(a,b){let c=function(a,b){if(-1===b.valueStart)return"";let{valueStart:c,valueEnd:d}=b;if(b.fast)return a.slice(c,d);switch(b.style){case 2:return function(a,b,c){let d="",e=b,f=b,g=b;for(;e<c;){let b=a.charCodeAt(e);if(39===b)d+=a.slice(f,e)+"'",e+=2,f=g=e;else if(10===b||13===b){d+=a.slice(f,g);let b=al(a,e,c);d+=am(b.breaks),e=f=g=b.position}else e++,32!==b&&9!==b&&(g=e)}return d+a.slice(f,c)}(a,c,d);case 3:return function(a,b,c){let d="",e=b,f=b,g=b;for(;e<c;){let b=a.charCodeAt(e);if(92===b){d+=a.slice(f,e),e++;let b=a.charCodeAt(e);if(10===b||13===b)e=al(a,e,c).position;else if(b<256&&aj[b])d+=ak[b],e++;else{var h,i;let c=120===b?2:117===b?4:8,f=0;for(;c>0;c--)e++,f=(f<<4)+((h=a.charCodeAt(e))>=48&&h<=57?h-48:(32|h)-97+10);d+=(i=f)<=65535?String.fromCharCode(i):String.fromCharCode((i-65536>>10)+55296,(i-65536&1023)+56320),e++}f=g=e}else if(10===b||13===b){d+=a.slice(f,g);let b=al(a,e,c);d+=am(b.breaks),e=f=g=b.position}else e++,32!==b&&9!==b&&(g=e)}return d+a.slice(f,c)}(a,c,d);case 4:return an(a,c,d,b.indent,b.chomping,!1);case 5:return an(a,c,d,b.indent,b.chomping,!0);default:return function(a,b,c){let d="",e=b,f=b,g=b;for(;e<c;){let b=a.charCodeAt(e);if(10===b||13===b){d+=a.slice(f,g);let b=al(a,e,c);d+=am(b.breaks),e=f=g=b.position}else e++,32!==b&&9!==b&&(g=e)}return d+a.slice(f,g)}(a,c,d)}}(a.source,b),e=-1===b.tagStart?"":a.source.slice(b.tagStart,b.tagEnd),f=a.schema.defaultScalarTag;if(""!==e){if("!"===e)return{value:c,tag:f};let b=ap(e,a.tagHandlers),g=a.schema.lookupScalarTag(b);if(g){let e=g.resolve(c,!0,b);return e===d&&ar(a,`cannot resolve a node with !<${b}> explicit tag`),{value:e,tag:g}}let h=a.schema.lookupMappingTag(b)??a.schema.lookupSequenceTag(b);if(h){""!==c&&ar(a,`cannot resolve a node with !<${b}> explicit tag`);let d=h.create(b);return{value:h.carrierIsResult?d:as(a,a.position,h,d),tag:h}}ar(a,`unknown scalar tag !<${b}>`)}return 1===b.style?a.schema.resolveImplicitScalarTag(c):{value:f.resolve(c,!1,f.tagName),tag:f}}(c,a);ax(c,a,b,e,!0),aw(c,b,e);break}case 2:{let b=at(c,a,"tag:yaml.org,2002:seq"),d=c.schema.lookupSequenceTag(b);d||ar(c,`unknown sequence tag !<${b}>`);let e=d.create(b),f=ax(c,a,e,d,d.carrierIsResult);c.frames.push({kind:"sequence",position:c.position,value:e,tag:d,anchor:f,index:0});break}case 3:{let b=at(c,a,"tag:yaml.org,2002:map"),d=c.schema.lookupMappingTag(b);d||ar(c,`unknown mapping tag !<${b}>`);let e=d.create(b),f=ax(c,a,e,d,d.carrierIsResult);c.frames.push({kind:"mapping",position:c.position,value:e,tag:d,anchor:f,key:void 0,keyPosition:c.position,hasKey:!1,keyIsMerge:!1,overridable:null});break}case 5:{-1!==c.maxAliases&&++c.aliasCount>c.maxAliases&&ar(c,`aliases exceeded maxAliases (${c.maxAliases})`);let b=c.source.slice(a.anchorStart,a.anchorEnd),d=c.anchors.get(b);d||ar(c,`unidentified alias "${b}"`),d.isValueFinal||ar(c,`recursive alias "${b}" is not supported for tag ${d.tag.tagName} because it uses finalize()`),aw(c,d.value,d.tag);break}case 6:{let a=c.frames.pop();if("mapping"===a.kind&&a.hasKey&&(c.position=a.keyPosition,ar(c,"incomplete mapping pair in event stream")),"document"===a.kind)c.documents.push(a.value);else{let b=a.tag.carrierIsResult?a.value:as(c,a.position,a.tag,a.value);a.anchor&&(a.anchor.value=b,a.anchor.isValueFinal=!0),aw(c,b,a.tag)}}}}return c.documents}(function(a,b){let c=a.length,d={...aH,...b,input:`${a}\0`,length:c,position:0,line:0,lineStart:0,lineIndent:0,firstTabInLine:-1,depth:0,directives:[],tagHandlers:Object.create(null),events:[]},e=a.indexOf("\0");for(-1!==e&&ah.throwAt(a,e,"null byte is not allowed in input",d.filename),65279===d.input.charCodeAt(d.position)&&d.position++;d.position<d.length&&(aY(d,!0),!(d.position>=d.length));){let a=d.position;!function(a){var b;a.directives=[],a.tagHandlers=Object.create(null);let c=!1;for(aY(a,!0);function(a){if(a.lineIndent>0||37!==a.input.charCodeAt(a.position))return!1;a.position++;let b=a.position;for(;0!==a.input.charCodeAt(a.position)&&!aU(a.input.charCodeAt(a.position));)a.position++;let c=a.input.slice(b,a.position),d=[];for(0===c.length&&aR(a,"directive name must not be less than one character in length");0!==a.input.charCodeAt(a.position)&&!aS(a.input.charCodeAt(a.position));){for(;aT(a.input.charCodeAt(a.position));)a.position++;if(35===a.input.charCodeAt(a.position)||aS(a.input.charCodeAt(a.position))||0===a.input.charCodeAt(a.position))break;let b=a.position;for(;0!==a.input.charCodeAt(a.position)&&!aU(a.input.charCodeAt(a.position));)a.position++;d.push(a.input.slice(b,a.position))}if(aS(a.input.charCodeAt(a.position))&&aX(a),"YAML"===c){a.directives.some(a=>"yaml"===a.kind)&&aR(a,"duplication of %YAML directive"),1!==d.length&&aR(a,"YAML directive accepts exactly one argument");let b=/^([0-9]+)\.([0-9]+)$/.exec(d[0]);null===b&&aR(a,"ill-formed argument of the YAML directive"),1!==parseInt(b[1],10)&&aR(a,"unacceptable YAML version of the document"),a.directives.push({kind:"yaml",version:d[0]})}else if("TAG"===c){2!==d.length&&aR(a,"TAG directive accepts exactly two arguments");let[b,c]=d;aB.test(b)||aR(a,"ill-formed tag handle (first argument) of the TAG directive"),ay.call(a.tagHandlers,b)&&aR(a,`there is a previously declared suffix for "${b}" tag handle`),aG.test(c)||aR(a,"ill-formed tag prefix (second argument) of the TAG directive"),a.tagHandlers[b]=c,a.directives.push({kind:"tag",handle:b,prefix:c})}return!0}(a);)c=!0,aY(a,!0);let d=!1,e=!1,f=!0;if(0===a.lineIndent&&45===a.input.charCodeAt(a.position)&&45===a.input.charCodeAt(a.position+1)&&45===a.input.charCodeAt(a.position+2)&&aV(a.input.charCodeAt(a.position+3))){d=!0;let b=a.line;a.position+=3,aY(a,!0),f=a.line>b}else c&&aR(a,"directives end mark is expected");let g=a.events.length;if(!d&&a.position===a.lineStart&&46===a.input.charCodeAt(a.position)&&aZ(a)){a.position+=3,aY(a,!0);return}if(b=d,a.events.push({type:1,explicitStart:b,explicitEnd:!1,directives:a.directives}),a4(a,a.lineIndent-1,4,!1,f,f)||aN(a),aY(a,!0),a.position===a.lineStart&&aZ(a)&&(e=46===a.input.charCodeAt(a.position))){let b=a.line;a.position+=3,aY(a,!0),a.line===b&&a.position<a.length&&aR(a,"end of the stream or a document separator is expected")}let h=a.events[g];h?.type===1&&(h.explicitEnd=e),aM(a),e||!(a.position<a.length)||a.position===a.lineStart&&aZ(a)||aR(a,"end of the stream or a document separator is expected")}(d),d.position===a&&aR(d,"can not read a document")}return d.events}(e,W(c,f)),{...W(c,g),source:e})}(a,b);if(0===c.length)throw new ah("expected a document, but the input is empty");if(1===c.length)return c[0];throw new ah("expected a single document in the stream, but found more")}Symbol("INVALID"),Symbol("visit:break"),Symbol("visit:skip");var a7={};a7[0]="\\0",a7[7]="\\a",a7[8]="\\b",a7[9]="\\t",a7[10]="\\n",a7[11]="\\v",a7[12]="\\f",a7[13]="\\r",a7[27]="\\e",a7[34]='\\"',a7[92]="\\\\",a7[133]="\\N",a7[160]="\\_",a7[8232]="\\L",a7[8233]="\\P"},83739:(a,b,c)=>{"use strict";c.d(b,{o:()=>h,x:()=>i});var d=c(29021),e=c(33873),f=c.n(e),g=c(15011);function h(a,b){for(let c of b){let b=(0,g.uK)(a)||(0,g.uK)(c),d=b?f().win32:f(),e=b?"\\":f().sep,h=d.resolve(a),i=d.resolve(c),j=b?h.toLowerCase():h,k=b?i.toLowerCase():i,l=k.endsWith(e)?k:k+e;if(j===k||j.startsWith(l))return!0}return!1}function i(a,b){let c;try{c=(0,d.realpathSync)(a)}catch{return!1}let e=new Set;for(let a of b)try{e.add((0,d.realpathSync)(a))}catch{}return h(c,e)}},84851:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{s:()=>x});var e=c(75430),f=c(8084),g=c(41035),h=c(35015),i=c(2692),j=c(16983),k=c(15253),l=c(5564),m=c(70274),n=c(55950),o=c(88002),p=c(77598),q=a([e,f,g,k,l,m]);[e,f,g,k,l,m]=q.then?(await q)():q;let y=new Set(["off","minimal","low","medium","high","xhigh","max"]);function r(){return globalThis.__piSubagentRuns||(globalThis.__piSubagentRuns=new Map),globalThis.__piSubagentRuns}function s(){return globalThis.__piSubagentConsumedResults||(globalThis.__piSubagentConsumedResults=new Set),globalThis.__piSubagentConsumedResults}function t(a){s().add(a)}function u(a){return s().delete(a)}async function v(a,b){if(b)try{await (0,o.IL)(a,b.path);return}catch(a){return`Worktree retained at ${b.path}: ${a instanceof Error?a.message:String(a)}`}}function w(a){let b,c=!1,d=()=>{c||b?.()};a?.addEventListener("abort",d,{once:!0});let e={get aborted(){return!c&&a?.aborted===!0},throwIfAborted(){if(e.aborted)throw new DOMException("Subagent was stopped during setup","AbortError")},setHandler(a){b=a,e.aborted&&a()},dispose(){a?.removeEventListener("abort",d),b=void 0},ignore(){c=!0,e.dispose()}};return e}function x(a){async function b(b){let c=a.getSession(b.sessionId);c?.inner===b&&c.shutdown?await c.shutdown():b.dispose()}function c(b){let c,d,{initialRun:e,inner:f,request:h,cancellation:i}=b,j=new Promise(a=>{c=a}),k={run:e,completion:j,abortRequested:i.aborted},l=!1,o=()=>({...e,status:"aborted",completedAt:new Date().toISOString()}),p=a=>{try{h.onUpdate?.(a)}catch(a){console.error("[subagents] update listener failed:",a)}},q=h=>d||(k.run=h,k.cancelQueued=void 0,i.dispose(),b.unsubscribe?.(),d=Promise.resolve().then(async()=>{let d=h;try{let a=await b.cleanup?.(h);a&&(d={...h,worktreeCleanupError:a});let c={version:1,status:d.status,completedAt:d.completedAt,...d.result?{result:d.result}:{},...d.error?{error:d.error}:{},...d.worktreeCleanupError?{worktreeCleanupError:d.worktreeCleanupError}:{}};f.sessionManager.appendCustomEntry(g.pv,c)}catch(a){d={...d,error:a instanceof Error?a.message:String(a)},"aborted"!==d.status&&(d.status="failed")}finally{try{await b.close?.(d)}catch(a){console.error("[subagents] session shutdown failed:",a)}k.run=d,r().get(e.sessionId)===k&&r().delete(e.sessionId),p(d),a.invalidateSessionList(),a.notifyRunningChange?.(),c(d)}return d})),s=async()=>{let a;if(k.abortRequested||i.aborted)return q(o());try{l=!0,await b.prompt(()=>{if(k.abortRequested||i.aborted)throw new DOMException("Subagent was stopped before prompt preflight completed","AbortError")});let c=f.getLastAssistantText()?.trim(),d=k.abortRequested||i.aborted?void 0:function(a){let b=a.getEntries?.();if(Array.isArray(b))for(let a=b.length-1;a>=0;a-=1){let c=b[a];if(c?.type==="message"&&c.message?.role==="assistant"){if("error"!==c.message.stopReason)return;return"string"==typeof c.message.errorMessage&&c.message.errorMessage?c.message.errorMessage:"Provider returned an error"}}}(f.sessionManager);a={...e,status:k.abortRequested||i.aborted?"aborted":d?"failed":"completed",completedAt:new Date().toISOString(),...c?{result:c}:{},...d?{error:d}:{}}}catch(h){let c=k.abortRequested||i.aborted,d=f.getLastAssistantText()?.trim(),g=b.maxTurnsReached?.()===!0;a={...e,status:c?"aborted":g?"completed":"failed",completedAt:new Date().toISOString(),...d?{result:d}:{},...!c&&!g?{error:h instanceof Error?h.message:String(h)}:{}}}finally{l=!1}return q(a)};if(r().set(e.sessionId,k),i.setHandler(()=>{k.abortRequested=!0,"queued"===k.run.status?k.cancelQueued?.():l&&f.abort().catch(()=>void 0)}),p(e),a.invalidateSessionList(),k.abortRequested||i.aborted)q(o());else try{let b=(!globalThis.__piSubagentQueue&&(globalThis.__piSubagentQueue=new n.V),globalThis.__piSubagentQueue).enqueue(e.parentSessionId,(0,m.hd)().maxConcurrent,s,b=>{d||(k.run={...k.run,status:b},f.sessionManager.appendCustomEntry(g.o2,{version:1,status:b}),p(k.run),a.invalidateSessionList())},async()=>{await q(o())});k.cancelQueued=b.cancel,(k.abortRequested||i.aborted)&&"queued"===k.run.status&&b.cancel(),b.promise.catch(a=>q(k.abortRequested||i.aborted?o():{...e,status:"failed",completedAt:new Date().toISOString(),error:a instanceof Error?a.message:String(a)}))}catch(a){q(k.abortRequested||i.aborted?o():{...e,status:"failed",completedAt:new Date().toISOString(),error:a instanceof Error?a.message:String(a)})}return{run:k.run,completion:j}}async function d(d){let e;if(!(a.isBuiltInSubagentsEnabled??m.N)())throw Error("Pi Web built-in sub-agents are disabled");let f=d.parentContext.sessionManager.getSessionId(),g=w(!0===d.runInBackground?void 0:d.signal);try{!1===d.runInBackground&&g.throwIfAborted();let h=await q(d.sessionId);if(!h)throw Error(`Subagent not found: ${d.sessionId}`);if(h.parentSessionId!==f)throw Error("Subagent does not belong to this parent session");let i=d.runInBackground??h.runInBackground;if(i&&g.ignore(),g.throwIfAborted(),"running"===h.status||"queued"===h.status)throw Error("Subagent is already running");let j=a.getSession(f);if(!j?.isAlive())throw Error("Parent session is no longer available");let k=h.sessionPath||await a.resolveSessionPath(d.sessionId);if(g.throwIfAborted(),!k)throw Error(`Subagent session file not found: ${d.sessionId}`);let l=a.getSession(d.sessionId);if(l?.isAlive()||(e=l=await a.reopenSession(d.sessionId,k),g.throwIfAborted()),!l.isAlive())throw Error("Subagent session is no longer available");if(l.isRunning()||r().has(d.sessionId))throw Error("Subagent is already running");let m={...h,parentToolCallId:d.parentToolCallId,task:d.task,description:d.description.trim()||h.description,runInBackground:i,status:"queued",completedAt:void 0,result:void 0,error:void 0},n=l.inner;return c({initialRun:m,inner:n,request:d,cancellation:g,prompt:a=>n.prompt(d.task,{source:"rpc",preflightResult:b=>{b&&a()}}),close:async a=>{"aborted"===a.status&&await b(n)}})}catch(a){throw g.dispose(),!e||e.isRunning()||r().has(d.sessionId)||await b(e.inner),g.throwIfAborted(),a}}async function q(b){let c=r().get(b);if(c)return c.run;let d=a.getSession(b);if(d?.isAlive()){let a=(0,g.$u)(d.inner.sessionManager.getEntries(),b,d.sessionFile);if(a&&d.isRunning())return{...a,status:"running"};if(a)return a}let f=await a.resolveSessionPath(b);if(!f)return null;let h=e.SessionManager.open(f);return(0,g.$u)(h.getEntries(),b,f)}async function s(b,c){let d=a.getSession(b);if(!d?.isAlive()||!d.isRunning())throw Error("Subagent is not running");if(!c.trim())throw Error("Steering message is required");await d.inner.steer(c.trim())}async function x(b){if(u(b.sessionId))return;let c=a.getSession(b.parentSessionId);if(!c?.isAlive()){let d=await a.resolveSessionPath(b.parentSessionId);if(!d)throw Error(`Parent session not found: ${b.parentSessionId}`);c=await a.reopenSession(b.parentSessionId,d)}for(await c.waitUntilReady();c.isAlive()&&c.isRunning();){if(u(b.sessionId))return;await new Promise(a=>{setTimeout(a,200)})}if(!u(b.sessionId)){if(!c.isAlive())throw Error(`Parent session is no longer available: ${b.parentSessionId}`);await c.inner.sendCustomMessage({customType:"pi-web:subagent-notification",content:(0,f.wI)(b),display:!0,details:(0,f.o2)(b)},{deliverAs:"followUp",triggerTurn:!0})}}async function z(b){let c=a.getSession(b),d=r().get(b);if(d?.run.status==="queued"){if(d.abortRequested=!0,!d.cancelQueued?.())throw Error("Subagent is no longer queued");return}if(!c?.isAlive()||!c.isRunning())throw Error("Subagent is not running");d&&(d.abortRequested=!0),await c.inner.abort()}return{extensionRuntime:{start:async function(d){let f,n,q;if(!(a.isBuiltInSubagentsEnabled??m.N)())throw Error("Pi Web built-in sub-agents are disabled");let r=d.parentContext.sessionManager.getSessionId(),s=a.getSession(r);if(!s?.isAlive())throw Error("Parent session is no longer available");if(!s.sessionFile)throw Error("Parent session must be persisted before starting a subagent");let t=(0,g.rh)(s.cwd,d.profile);if(!t)throw Error(`Unknown or disabled subagent profile: ${d.profile}`);let u=d.runInBackground??t.runInBackground,x=w(u?void 0:d.signal);try{let m,w;x.throwIfAborted();let z="off"===t.isolation?void 0:d.isolation??t.isolation;"worktree"===z&&(f=await (0,o.l)(s.cwd,`pi-web-agent-${(0,p.randomUUID)()}`),x.throwIfAborted());let A=f?.path??s.cwd,B=d.inheritContext??t.inheritContext,C=d.maxTurns??t.maxTurns;if(void 0!==C&&(!Number.isFinite(C)||C<0))throw Error("max_turns must be a non-negative number");let D=C&&C>0?Math.floor(C):void 0,E=d.thinking??t.thinking??s.inner.agent.state?.thinkingLevel;if(E&&!y.has(E))throw Error(`Invalid subagent thinking level: ${E}`);let F=(0,e.getAgentDir)(),G=s.inner.modelRuntime,H=e.SettingsManager.create(A,F),I=B?`The following is the active conversation context from the parent session. Use it only as background for the delegated task:
|
|
44
44
|
${m=s.inner.sessionManager.buildSessionContext().messages,(w=JSON.stringify(m)).length<=5e4?w:`${w.slice(0,5e4)}
|
|
45
|
-
[Parent context truncated]`}`:void 0,J=(0,j.vH)(s.cwd,d.inputFiles??[]),K=(0,h.r)({profileSystemPrompt:t.systemPrompt,tools:t.tools,loadSkills:t.loadSkills,loadExtensions:t.loadExtensions,promptMode:t.promptMode,task:(0,j.jN)(d.task,J),inheritedParentContext:I}),{chatOnly:L,appendSystemPrompt:M,delegatedTask:N}=K;L||(0,e.initTheme)();let O=await (0,e.createAgentSessionServices)({cwd:A,agentDir:F,modelRuntime:G,settingsManager:H,resourceLoaderOptions:{noExtensions:!t.loadExtensions,noSkills:!t.loadSkills,noPromptTemplates:!0,noThemes:!0,noContextFiles:!0,...L||void 0!==K.exactSystemPrompt?{systemPrompt:" ",systemPromptOverride:()=>void 0}:{},appendSystemPrompt:M,...void 0!==K.exactSystemPrompt?{extensionFactories:[(0,i.Q)(()=>K.exactSystemPrompt)]}:{}},...t.loadExtensions||t.loadSkills?{resourceLoaderReloadOptions:(0,k.Fk)(A,F)}:{}});x.throwIfAborted();let P=t.loadExtensions?t.extensionTools?.length?(0,g.gY)(O.resourceLoader.getExtensions().extensions,t.extensionTools):O.resourceLoader.getExtensions().extensions.flatMap(a=>[...a.tools.keys()]):[],Q=(0,l.wQ)((0,g.I6)(t.tools,P),H.getDefaultTools()),R=f?e.SessionManager.create(A,void 0,{parentSession:s.sessionFile}):e.SessionManager.create(s.cwd,void 0,{parentSession:s.sessionFile});q=R;let S=new Date().toISOString(),T={version:1,parentSessionId:r,parentSessionPath:s.sessionFile,parentToolCallId:d.parentToolCallId,profile:t.name,description:d.description.trim()||t.displayName,task:d.task,runInBackground:u,createdAt:S,resourceSnapshot:{version:1,appendSystemPrompt:[...M],tools:[...Q],loadSkills:t.loadSkills,loadExtensions:t.loadExtensions,...void 0!==K.exactSystemPrompt?{exactSystemPrompt:K.exactSystemPrompt}:{}},...f?{worktreePath:f.path,worktreeBranch:f.branch}:{}};R.appendCustomEntry(g.tP,T),R.appendSessionInfo(T.description);let U=function(a,b){if(!b?.trim())return;let c=b.trim(),d=c.indexOf("/");if(d>0){let b=c.slice(0,d),e=c.slice(d+1),f=a.getModel(b,e);if(!f)throw Error(`Subagent model not found: ${c}`);return f}let e=a.getModels().filter(a=>a.id===c);if(1===e.length)return e[0];if(0===e.length)throw Error(`Subagent model not found: ${c}`);throw Error(`Subagent model is ambiguous; use provider/modelId: ${c}`)}(G,d.model??t.model),V=s.inner.model,{session:W}=await (0,e.createAgentSessionFromServices)({services:O,sessionManager:R,model:U??V,...E?{thinkingLevel:E}:{},tools:Q,excludeTools:[...g.st]});n=W,x.throwIfAborted(),a.registerSession(W,{...void 0!==K.exactSystemPrompt?{exactSystemPrompt:K.exactSystemPrompt}:{},chatOnly:L});let X={sessionId:W.sessionId,sessionPath:W.sessionFile??R.getSessionFile()??"",parentSessionId:r,parentToolCallId:d.parentToolCallId,profile:t.name,description:T.description,task:d.task,runInBackground:u,status:"queued",createdAt:S,...f?{worktreePath:f.path,worktreeBranch:f.branch}:{}},Y=0,Z=!1,$=!1,_=D?W.subscribe(a=>{"turn_end"===a.type&&(Y+=1,!$&&Y>=D?($=!0,W.steer("You have reached your turn limit. Wrap up immediately and provide your final answer now.")):$&&Y>=D+1&&(Z=!0,W.abort()))}):()=>{};return c({initialRun:X,inner:n,request:d,cancellation:x,unsubscribe:_,maxTurnsReached:()=>Z,prompt:a=>W.prompt(N,{source:"rpc",preflightResult:b=>{b&&a()}}),cleanup:()=>v(s.cwd,f),close:async a=>{(f||"aborted"===a.status)&&await b(n)}})}catch(d){x.dispose();let a=await v(s.cwd,f),c=x.aborted;try{q?.appendCustomEntry(g.pv,{version:1,status:c?"aborted":"failed",completedAt:new Date().toISOString(),...a?{worktreeCleanupError:a}:{}})}finally{n&&await b(n)}if(c)throw new DOMException(`Subagent was stopped during setup${a?`; ${a}`:""}`,"AbortError");if(a)throw Error(`${d instanceof Error?d.message:String(d)}; ${a}`,{cause:d});throw d}},resume:d,get:q,steer:s,notifyParent:x,markResultConsumed:t},get:q,steer:s,abort:z}}d()}catch(a){d(a)}})},85895:(a,b,c)=>{"use strict";c.d(b,{JJ:()=>g});var d=c(76760),e=c(73024);function f(a){let b={};if(!a||"object"!=typeof a||Array.isArray(a))return b;for(let[c,d]of Object.entries(a)){if(!c||!d||"object"!=typeof d||Array.isArray(d))continue;let a=d.archivedAt;b[c]={archivedAt:"string"==typeof a?a:""}}return b}function g(a){var b=(0,d.join)(a,"session-archive.json");if(!(0,e.existsSync)(b))return f(void 0);try{return f(JSON.parse((0,e.readFileSync)(b,"utf8")))}catch{return f(void 0)}}c(61446),c(12969)},88002:(a,b,c)=>{"use strict";c.d(b,{l:()=>t,P9:()=>s,IL:()=>u,KI:()=>p});var d=c(79646),e=c(29021),f=c(33873),g=c(28354),h=c(15011);function i(){return globalThis.__piAdditionalAllowedRoots||(globalThis.__piAdditionalAllowedRoots=new Set),globalThis.__piAdditionalAllowedRoots}let j=(0,g.promisify)(d.execFile);function k(){return globalThis.__piProjectCache||(globalThis.__piProjectCache=new Map),globalThis.__piProjectCache}let l=0;function m(){globalThis.__piProjectCache?.clear(),globalThis.__piProjectCacheGeneration=(globalThis.__piProjectCacheGeneration??0)+1,globalThis.__piProjectRefresh?.clear()}async function n(a,b,c=1e4){let{stdout:d}=await j("git",["-C",a,...b],{timeout:c,maxBuffer:1048576,env:{...process.env,LC_ALL:"C"}});return d.trim()}function o(a){try{return(0,e.realpathSync)(a)}catch{return a}}async function p(a){!function(){let a=Date.now();if(a-l<6e4)return;l=a;let b=k();for(let[c,d]of b)d.expiresAt<=a&&b.delete(c)}();let b=k(),c=b.get(a),d=Date.now();if(c&&c.expiresAt>d)return c.info;if(c)return function(a){let b=globalThis.__piProjectRefresh??=new Map;if(b.has(a))return;let c=globalThis.__piProjectCacheGeneration??0,d=q(a).then(b=>{(globalThis.__piProjectCacheGeneration??0)===c&&k().set(a,{info:b,expiresAt:Date.now()+6e4})}).catch(()=>{}).finally(()=>{b.get(a)===d&&b.delete(a)});b.set(a,d)}(a),c.info;let e=await q(a);return b.set(a,{info:e,expiresAt:Date.now()+6e4}),e}async function q(a){let b;try{if(!(0,e.existsSync)(a))return 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:o(c),branch:(0,f.basename)(a),isWorktree:!0,isTopLevel:!0}:null}(a)??{projectRoot:a,branch:null,isWorktree:!1,isTopLevel:!1};let[c,d,g,i]=(await n(a,["rev-parse","--path-format=absolute","--git-common-dir","--git-dir","--show-toplevel","--abbrev-ref","HEAD"])).split("\n").map(a=>a.trim()),[j,k,l]=[c,d,g].map(h.gB),m=o(a),p=(0,h.Eb)(l,m),q=!(0,h.Eb)(k,j)&&p,r=q?(0,f.dirname)(j):l;b={projectRoot:p?o(r):a,branch:i&&"HEAD"!==i?i:null,isWorktree:q,isTopLevel:p}}catch{b={projectRoot:a,branch:null,isWorktree:!1,isTopLevel:!1}}return b}async function r(a){let b=await n(a,["rev-parse","--path-format=absolute","--git-common-dir"]);return o((0,f.dirname)((0,h.gB)(b)))}async function s(a){let b=await n(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:(0,h.gB)(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 t(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 r(a),j=`${(0,f.resolve)(g)}-worktrees`,k=(0,f.join)(j,d);if((0,e.existsSync)(k))throw Error(`Directory already exists: ${k}`);(0,e.mkdirSync)(j,{recursive:!0});let l=!1;try{await n(g,["rev-parse","--verify","--quiet",`refs/heads/${c}`]),l=!0}catch{l=!1}try{if(l)await n(g,["worktree","add","--",k,c],3e5);else{let a;try{await n(g,["rev-parse","--verify","--quiet",`refs/remotes/origin/${c}`]),a=`refs/remotes/origin/${c}`}catch{a=void 0}let b=["worktree","add","-b",c,"--",k];a&&b.push(a),await n(g,b,3e5)}}catch(a){throw Error(v(a))}return!function(a){if(!a)return;let b=(0,h.W3)(a);i().add(b),globalThis.__piAllowedRootsCache?.roots.add(b)}(k),m(),{path:k,branch:c}}async function u(a,b,c=!1){var d;let e=(d=await s(a),d.find(a=>(0,h.Eb)(a.path,b)));if(!e)throw Error(`Not a worktree of this repository: ${b}`);if(e.isMain)throw Error("Cannot remove the main worktree");try{await n(a,["worktree","remove",...c?["--force"]:[],e.path])}catch(a){throw Error(v(a))}!function(a){if(!a)return;let b=(0,h.W3)(a);i().delete(b),globalThis.__piAllowedRootsCache=void 0}(b),m()}function v(a){let b=a.stderr;return"string"==typeof b&&b.trim()?b.trim():a instanceof Error?a.message:String(a)}},88449:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{q8:()=>s});var e=c(73024),f=c(51455),g=c(76760),h=c(80481),i=c(75430),j=c(12969),k=a([i]);function l(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)}function m(a){if(!a.trim())return null;try{let b=JSON.parse(a);return b&&"object"==typeof b?b:null}catch{return null}}async function n(a){try{let b,c,d=await (0,f.stat)(a),g=null,i=0,j="";for await(let d of(0,h.createInterface)({input:(0,e.createReadStream)(a,{encoding:"utf8"}),crlfDelay:1/0})){let a=m(d);if(!a)continue;if(!g){if("session"!==a.type)return null;g=a;continue}if("session_info"===a.type&&(b="string"==typeof a.name&&a.name.trim()?a.name.trim():void 0),"message"!==a.type)continue;i++;let e=function(a){let b=a.message;if(!b||"string"!=typeof b.role||!("content"in b)||"user"!==b.role&&"assistant"!==b.role)return;if("number"==typeof b.timestamp)return b.timestamp;let c=new Date(a.timestamp).getTime();return Number.isNaN(c)?void 0:c}(a);"number"==typeof e&&(c=Math.max(c??0,e));let f=a.message;if(!f||"string"!=typeof f.role||!("content"in f)||"user"!==f.role&&"assistant"!==f.role)continue;let h=function(a){let b=a.content;return"string"==typeof b?b:Array.isArray(b)?b.filter(a=>!!a&&"object"==typeof a&&"text"===a.type&&"string"==typeof a.text).map(a=>a.text).join(" "):""}(f);h&&(j||"user"!==f.role||(j=h))}if(!g)return null;let k="string"==typeof g.cwd?g.cwd:"",l="string"==typeof g.parentSession?g.parentSession:void 0,n="string"==typeof g.timestamp?new Date(g.timestamp).getTime():NaN,o="number"==typeof c&&c>0?new Date(c):Number.isNaN(n)?d.mtime:new Date(n);return{path:a,id:g.id,cwd:k,name:b,parentSessionPath:l,created:new Date(g.timestamp),modified:o,messageCount:i,firstMessage:j||"(no messages)"}}catch{return null}}async function o(a){let b;try{b=(await (0,f.readdir)(a,{withFileTypes:!0})).filter(a=>a.isDirectory()||a.isSymbolicLink())}catch{return[]}let c=[];for(let d of b){let b=(0,g.join)(a,d.name);try{for(let a of(await (0,f.readdir)(b)))a.endsWith(".jsonl")&&c.push((0,g.join)(b,a))}catch{}}return c}async function p(a,b){let c=0,d=new Set;for(;c<a.length||d.size>0;){for(;c<a.length&&d.size<10;){let e=a[c++],f=b(e).finally(()=>d.delete(f));d.add(f)}d.size>0&&await Promise.race(d)}}function q(){return globalThis.__piWebScanIndex||(globalThis.__piWebScanIndex=new Map),globalThis.__piWebScanIndex}function r(){return(0,g.join)((0,i.getAgentDir)(),"pi-web-session-index.json")}async function s(a={}){!function(){if(globalThis.__piWebScanIndexLoaded)return;globalThis.__piWebScanIndexLoaded=!0;let a=r();if((0,e.existsSync)(a))try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));if(!l(b)||1!==b.version||!l(b.entries))return;let c=q();for(let[a,d]of Object.entries(b.entries)){if(!l(d)||!l(d.fp)||!l(d.info))continue;let{fp:b,info:e}=d;if("number"!=typeof b.size||!Number.isSafeInteger(b.size)||b.size<0||"number"!=typeof b.mtimeMs||!Number.isFinite(b.mtimeMs)||e.path!==a||"string"!=typeof e.id||"string"!=typeof e.cwd||"string"!=typeof e.firstMessage||void 0!==e.name&&"string"!=typeof e.name||void 0!==e.parentSessionPath&&"string"!=typeof e.parentSessionPath||"number"!=typeof e.messageCount||!Number.isSafeInteger(e.messageCount)||e.messageCount<0||"string"!=typeof e.created||"string"!=typeof e.modified)continue;let f=new Date(e.created),g=new Date(e.modified);Number.isFinite(f.getTime())&&Number.isFinite(g.getTime())&&c.set(a,{fp:{size:b.size,mtimeMs:b.mtimeMs},info:{path:a,id:e.id,cwd:e.cwd,name:e.name,parentSessionPath:e.parentSessionPath,firstMessage:e.firstMessage,messageCount:e.messageCount,created:f,modified:g}})}}catch{}}();let b=a.deferDetails??!1,c=(0,g.join)((0,i.getAgentDir)(),"sessions"),d=await o(c),h=q(),k=new Set(d),t=[];for(let a of h.keys())k.has(a)||t.push(a);for(let a of t)h.delete(a);let u=await Promise.all(d.map(async a=>{try{let b=await (0,f.stat)(a);return{filePath:a,fp:{size:b.size,mtimeMs:b.mtimeMs}}}catch{return{filePath:a,fp:null}}})),v=[],w=Array(d.length).fill(null),x=Array(d.length).fill(-1/0);for(let[a,{filePath:c,fp:d}]of u.entries()){if(!d){h.delete(c);continue}x[a]=d.mtimeMs;let f=h.get(c);if(f&&f.fp.size===d.size&&f.fp.mtimeMs===d.mtimeMs){w[a]=f.info;continue}if(b){let b=function(a,b){let c=function(a){let b=(0,e.openSync)(a,"r");try{let a=Buffer.allocUnsafe(65536),c=(0,e.readSync)(b,a,0,a.length,0);if(c<=0)return null;for(let b of a.subarray(0,c).toString("utf8").split("\n")){let a=m(b.replace(/\r$/,""));if(a)return"session"===a.type?a:null}return null}catch{return null}finally{(0,e.closeSync)(b)}}(a);if(!c||"string"!=typeof c.id||"string"!=typeof c.cwd||"string"!=typeof c.timestamp)return null;let d=new Date(c.timestamp);return Number.isFinite(d.getTime())?{path:a,id:c.id,cwd:c.cwd,created:d,modified:new Date(b.mtimeMs),messageCount:0,firstMessage:"",..."string"==typeof c.parentSession?{parentSessionPath:c.parentSession}:{},detailsPending:!0}:null}(c,d);b?w[a]=b:h.delete(c);continue}v.push({filePath:c,fp:d,resultIndex:a})}return await p(v,async({filePath:a,fp:b,resultIndex:c})=>{let d=await n(a);d?(h.set(a,{fp:b,info:d}),w[c]=d):h.delete(a)}),(v.length>0||t.length>0)&&(globalThis.__piWebScanIndexSaveQueued||(globalThis.__piWebScanIndexSaveQueued=!0,queueMicrotask(()=>{globalThis.__piWebScanIndexSaveQueued=void 0;try{let a={};for(let[b,c]of q())a[b]=c;(0,j.$)(r(),JSON.stringify({version:1,entries:a}))}catch{}}))),w.flatMap((a,b)=>a?[{info:a,mtimeMs:x[b]}]:[]).sort((a,b)=>b.info.modified.getTime()-a.info.modified.getTime()||b.mtimeMs-a.mtimeMs||(0,g.basename)(b.info.path).localeCompare((0,g.basename)(a.info.path))).map(({info:a})=>a)}i=(k.then?(await k)():k)[0],d()}catch(a){d(a)}})},91099:(a,b,c)=>{"use strict";c.d(b,{aA:()=>k,bo:()=>h,bx:()=>f,eG:()=>j});var d=c(29021);let e=`Continue pursuing the active goal. Do the next useful work, then report your disposition:
|
|
45
|
+
[Parent context truncated]`}`:void 0,J=(0,j.vH)(s.cwd,d.inputFiles??[]),K=(0,h.r)({profileSystemPrompt:t.systemPrompt,tools:t.tools,loadSkills:t.loadSkills,loadExtensions:t.loadExtensions,promptMode:t.promptMode,task:(0,j.jN)(d.task,J),inheritedParentContext:I}),{chatOnly:L,appendSystemPrompt:M,delegatedTask:N}=K;L||(0,e.initTheme)();let O=await (0,e.createAgentSessionServices)({cwd:A,agentDir:F,modelRuntime:G,settingsManager:H,resourceLoaderOptions:{noExtensions:!t.loadExtensions,noSkills:!t.loadSkills,noPromptTemplates:!0,noThemes:!0,noContextFiles:!0,...L||void 0!==K.exactSystemPrompt?{systemPrompt:" ",systemPromptOverride:()=>void 0}:{},appendSystemPrompt:M,...void 0!==K.exactSystemPrompt?{extensionFactories:[(0,i.Q)(()=>K.exactSystemPrompt)]}:{}},...t.loadExtensions||t.loadSkills?{resourceLoaderReloadOptions:(0,k.Fk)(A,F)}:{}});x.throwIfAborted();let P=t.loadExtensions?t.extensionTools?.length?(0,g.gY)(O.resourceLoader.getExtensions().extensions,t.extensionTools):O.resourceLoader.getExtensions().extensions.flatMap(a=>[...a.tools.keys()]):[],Q=(0,l.wQ)((0,g.I6)(t.tools,P),H.getDefaultTools()),R=f?e.SessionManager.create(A,void 0,{parentSession:s.sessionFile}):e.SessionManager.create(s.cwd,void 0,{parentSession:s.sessionFile});q=R;let S=new Date().toISOString(),T={version:1,parentSessionId:r,parentSessionPath:s.sessionFile,parentToolCallId:d.parentToolCallId,profile:t.name,description:d.description.trim()||t.displayName,task:d.task,runInBackground:u,createdAt:S,resourceSnapshot:{version:1,appendSystemPrompt:[...M],tools:[...Q],loadSkills:t.loadSkills,loadExtensions:t.loadExtensions,...void 0!==K.exactSystemPrompt?{exactSystemPrompt:K.exactSystemPrompt}:{}},...f?{worktreePath:f.path,worktreeBranch:f.branch}:{}};R.appendCustomEntry(g.tP,T),R.appendSessionInfo(T.description);let U=function(a,b){if(!b?.trim())return;let c=b.trim(),d=c.indexOf("/");if(d>0){let b=c.slice(0,d),e=c.slice(d+1),f=a.getModel(b,e);if(!f)throw Error(`Subagent model not found: ${c}`);return f}let e=a.getModels().filter(a=>a.id===c);if(1===e.length)return e[0];if(0===e.length)throw Error(`Subagent model not found: ${c}`);throw Error(`Subagent model is ambiguous; use provider/modelId: ${c}`)}(G,d.model??t.model),V=s.inner.model,{session:W}=await (0,e.createAgentSessionFromServices)({services:O,sessionManager:R,model:U??V,...E?{thinkingLevel:E}:{},tools:Q,excludeTools:[...g.st]});n=W,x.throwIfAborted(),a.registerSession(W,{...void 0!==K.exactSystemPrompt?{exactSystemPrompt:K.exactSystemPrompt}:{},chatOnly:L});let X={sessionId:W.sessionId,sessionPath:W.sessionFile??R.getSessionFile()??"",parentSessionId:r,parentToolCallId:d.parentToolCallId,profile:t.name,description:T.description,task:d.task,runInBackground:u,status:"queued",createdAt:S,...f?{worktreePath:f.path,worktreeBranch:f.branch}:{}},Y=0,Z=!1,$=!1,_=D?W.subscribe(a=>{"turn_end"===a.type&&(Y+=1,!$&&Y>=D?($=!0,W.steer("You have reached your turn limit. Wrap up immediately and provide your final answer now.")):$&&Y>=D+1&&(Z=!0,W.abort()))}):()=>{};return c({initialRun:X,inner:n,request:d,cancellation:x,unsubscribe:_,maxTurnsReached:()=>Z,prompt:a=>W.prompt(N,{source:"rpc",preflightResult:b=>{b&&a()}}),cleanup:()=>v(s.cwd,f),close:async a=>{(f||"aborted"===a.status)&&await b(n)}})}catch(d){x.dispose();let a=await v(s.cwd,f),c=x.aborted;try{q?.appendCustomEntry(g.pv,{version:1,status:c?"aborted":"failed",completedAt:new Date().toISOString(),...a?{worktreeCleanupError:a}:{}})}finally{n&&await b(n)}if(c)throw new DOMException(`Subagent was stopped during setup${a?`; ${a}`:""}`,"AbortError");if(a)throw Error(`${d instanceof Error?d.message:String(d)}; ${a}`,{cause:d});throw d}},resume:d,get:q,steer:s,notifyParent:x,markResultConsumed:t},get:q,steer:s,abort:z}}d()}catch(a){d(a)}})},85895:(a,b,c)=>{"use strict";c.d(b,{JJ:()=>g});var d=c(76760),e=c(73024);function f(a){let b={};if(!a||"object"!=typeof a||Array.isArray(a))return b;for(let[c,d]of Object.entries(a)){if(!c||!d||"object"!=typeof d||Array.isArray(d))continue;let a=d.archivedAt;b[c]={archivedAt:"string"==typeof a?a:""}}return b}function g(a){var b=(0,d.join)(a,"session-archive.json");if(!(0,e.existsSync)(b))return f(void 0);try{return f(JSON.parse((0,e.readFileSync)(b,"utf8")))}catch{return f(void 0)}}c(61446),c(12969)},88002:(a,b,c)=>{"use strict";c.d(b,{l:()=>t,P9:()=>s,IL:()=>u,KI:()=>p});var d=c(79646),e=c(29021),f=c(33873),g=c(28354),h=c(15011);function i(){return globalThis.__piAdditionalAllowedRoots||(globalThis.__piAdditionalAllowedRoots=new Set),globalThis.__piAdditionalAllowedRoots}let j=(0,g.promisify)(d.execFile);function k(){return globalThis.__piProjectCache||(globalThis.__piProjectCache=new Map),globalThis.__piProjectCache}let l=0;function m(){globalThis.__piProjectCache?.clear(),globalThis.__piProjectCacheGeneration=(globalThis.__piProjectCacheGeneration??0)+1,globalThis.__piProjectRefresh?.clear()}async function n(a,b,c=1e4){let{stdout:d}=await j("git",["-C",a,...b],{timeout:c,maxBuffer:1048576,env:{...process.env,LC_ALL:"C"}});return d.trim()}function o(a){try{return(0,e.realpathSync)(a)}catch{return a}}async function p(a){!function(){let a=Date.now();if(a-l<6e4)return;l=a;let b=k();for(let[c,d]of b)d.expiresAt<=a&&b.delete(c)}();let b=k(),c=b.get(a),d=Date.now();if(c&&c.expiresAt>d)return c.info;if(c)return function(a){let b=globalThis.__piProjectRefresh??=new Map;if(b.has(a))return;let c=globalThis.__piProjectCacheGeneration??0,d=q(a).then(b=>{(globalThis.__piProjectCacheGeneration??0)===c&&k().set(a,{info:b,expiresAt:Date.now()+6e4})}).catch(()=>{}).finally(()=>{b.get(a)===d&&b.delete(a)});b.set(a,d)}(a),c.info;let e=await q(a);return b.set(a,{info:e,expiresAt:Date.now()+6e4}),e}async function q(a){let b;try{if(!(0,e.existsSync)(a))return 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:o(c),branch:(0,f.basename)(a),isWorktree:!0,isTopLevel:!0}:null}(a)??{projectRoot:a,branch:null,isWorktree:!1,isTopLevel:!1};let[c,d,g,i]=(await n(a,["rev-parse","--path-format=absolute","--git-common-dir","--git-dir","--show-toplevel","--abbrev-ref","HEAD"])).split("\n").map(a=>a.trim()),[j,k,l]=[c,d,g].map(h.gB),m=o(a),p=(0,h.Eb)(l,m),q=!(0,h.Eb)(k,j)&&p,r=q?(0,f.dirname)(j):l;b={projectRoot:p?o(r):a,branch:i&&"HEAD"!==i?i:null,isWorktree:q,isTopLevel:p}}catch{b={projectRoot:a,branch:null,isWorktree:!1,isTopLevel:!1}}return b}async function r(a){let b=await n(a,["rev-parse","--path-format=absolute","--git-common-dir"]);return o((0,f.dirname)((0,h.gB)(b)))}async function s(a){let b=await n(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:(0,h.gB)(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 t(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 r(a),j=`${(0,f.resolve)(g)}-worktrees`,k=(0,f.join)(j,d);if((0,e.existsSync)(k))throw Error(`Directory already exists: ${k}`);(0,e.mkdirSync)(j,{recursive:!0});let l=!1;try{await n(g,["rev-parse","--verify","--quiet",`refs/heads/${c}`]),l=!0}catch{l=!1}try{if(l)await n(g,["worktree","add","--",k,c],3e5);else{let a;try{await n(g,["rev-parse","--verify","--quiet",`refs/remotes/origin/${c}`]),a=`refs/remotes/origin/${c}`}catch{a=void 0}let b=["worktree","add","-b",c,"--",k];a&&b.push(a),await n(g,b,3e5)}}catch(a){throw Error(v(a))}return!function(a){if(!a)return;let b=(0,h.W3)(a);i().add(b),globalThis.__piAllowedRootsCache?.roots.add(b)}(k),m(),{path:k,branch:c}}async function u(a,b,c=!1){var d;let e=(d=await s(a),d.find(a=>(0,h.Eb)(a.path,b)));if(!e)throw Error(`Not a worktree of this repository: ${b}`);if(e.isMain)throw Error("Cannot remove the main worktree");try{await n(a,["worktree","remove",...c?["--force"]:[],e.path])}catch(a){throw Error(v(a))}!function(a){if(!a)return;let b=(0,h.W3)(a);i().delete(b),globalThis.__piAllowedRootsCache=void 0}(b),m()}function v(a){let b=a.stderr;return"string"==typeof b&&b.trim()?b.trim():a instanceof Error?a.message:String(a)}},88449:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{q8:()=>s});var e=c(73024),f=c(51455),g=c(76760),h=c(80481),i=c(75430),j=c(12969),k=a([i]);function l(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)}function m(a){if(!a.trim())return null;try{let b=JSON.parse(a);return b&&"object"==typeof b?b:null}catch{return null}}async function n(a){try{let b,c,d=await (0,f.stat)(a),g=null,i=0,j="";for await(let d of(0,h.createInterface)({input:(0,e.createReadStream)(a,{encoding:"utf8"}),crlfDelay:1/0})){let a=m(d);if(!a)continue;if(!g){if("session"!==a.type)return null;g=a;continue}if("session_info"===a.type&&(b="string"==typeof a.name&&a.name.trim()?a.name.trim():void 0),"message"!==a.type)continue;i++;let e=function(a){let b=a.message;if(!b||"string"!=typeof b.role||!("content"in b)||"user"!==b.role&&"assistant"!==b.role)return;if("number"==typeof b.timestamp)return b.timestamp;let c=new Date(a.timestamp).getTime();return Number.isNaN(c)?void 0:c}(a);"number"==typeof e&&(c=Math.max(c??0,e));let f=a.message;if(!f||"string"!=typeof f.role||!("content"in f)||"user"!==f.role&&"assistant"!==f.role)continue;let h=function(a){let b=a.content;return"string"==typeof b?b:Array.isArray(b)?b.filter(a=>!!a&&"object"==typeof a&&"text"===a.type&&"string"==typeof a.text).map(a=>a.text).join(" "):""}(f);h&&(j||"user"!==f.role||(j=h))}if(!g)return null;let k="string"==typeof g.cwd?g.cwd:"",l="string"==typeof g.parentSession?g.parentSession:void 0,n="string"==typeof g.timestamp?new Date(g.timestamp).getTime():NaN,o="number"==typeof c&&c>0?new Date(c):Number.isNaN(n)?d.mtime:new Date(n);return{path:a,id:g.id,cwd:k,name:b,parentSessionPath:l,created:new Date(g.timestamp),modified:o,messageCount:i,firstMessage:j||"(no messages)"}}catch{return null}}async function o(a){let b;try{b=(await (0,f.readdir)(a,{withFileTypes:!0})).filter(a=>a.isDirectory()||a.isSymbolicLink())}catch{return[]}let c=[];for(let d of b){let b=(0,g.join)(a,d.name);try{for(let a of(await (0,f.readdir)(b)))a.endsWith(".jsonl")&&c.push((0,g.join)(b,a))}catch{}}return c}async function p(a,b){let c=0,d=new Set;for(;c<a.length||d.size>0;){for(;c<a.length&&d.size<10;){let e=a[c++],f=b(e).finally(()=>d.delete(f));d.add(f)}d.size>0&&await Promise.race(d)}}function q(){return globalThis.__piWebScanIndex||(globalThis.__piWebScanIndex=new Map),globalThis.__piWebScanIndex}function r(){return(0,g.join)((0,i.getAgentDir)(),"pi-web-session-index.json")}async function s(a={}){!function(){if(globalThis.__piWebScanIndexLoaded)return;globalThis.__piWebScanIndexLoaded=!0;let a=r();if((0,e.existsSync)(a))try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));if(!l(b)||1!==b.version||!l(b.entries))return;let c=q();for(let[a,d]of Object.entries(b.entries)){if(!l(d)||!l(d.fp)||!l(d.info))continue;let{fp:b,info:e}=d;if("number"!=typeof b.size||!Number.isSafeInteger(b.size)||b.size<0||"number"!=typeof b.mtimeMs||!Number.isFinite(b.mtimeMs)||e.path!==a||"string"!=typeof e.id||"string"!=typeof e.cwd||"string"!=typeof e.firstMessage||void 0!==e.name&&"string"!=typeof e.name||void 0!==e.parentSessionPath&&"string"!=typeof e.parentSessionPath||"number"!=typeof e.messageCount||!Number.isSafeInteger(e.messageCount)||e.messageCount<0||"string"!=typeof e.created||"string"!=typeof e.modified)continue;let f=new Date(e.created),g=new Date(e.modified);Number.isFinite(f.getTime())&&Number.isFinite(g.getTime())&&c.set(a,{fp:{size:b.size,mtimeMs:b.mtimeMs},info:{path:a,id:e.id,cwd:e.cwd,name:e.name,parentSessionPath:e.parentSessionPath,firstMessage:e.firstMessage,messageCount:e.messageCount,created:f,modified:g}})}}catch{}}();let b=a.deferDetails??!1,c=(0,g.join)((0,i.getAgentDir)(),"sessions"),d=await o(c),h=q(),k=new Set(d),t=[];for(let a of h.keys())k.has(a)||t.push(a);for(let a of t)h.delete(a);let u=await Promise.all(d.map(async a=>{try{let b=await (0,f.stat)(a);return{filePath:a,fp:{size:b.size,mtimeMs:b.mtimeMs}}}catch{return{filePath:a,fp:null}}})),v=[],w=Array(d.length).fill(null),x=Array(d.length).fill(-1/0);for(let[a,{filePath:c,fp:d}]of u.entries()){if(!d){h.delete(c);continue}x[a]=d.mtimeMs;let f=h.get(c);if(f&&f.fp.size===d.size&&f.fp.mtimeMs===d.mtimeMs){w[a]=f.info;continue}if(b){let b=function(a,b){let c=function(a){let b=(0,e.openSync)(a,"r");try{let a=Buffer.allocUnsafe(65536),c=(0,e.readSync)(b,a,0,a.length,0);if(c<=0)return null;for(let b of a.subarray(0,c).toString("utf8").split("\n")){let a=m(b.replace(/\r$/,""));if(a)return"session"===a.type?a:null}return null}catch{return null}finally{(0,e.closeSync)(b)}}(a);if(!c||"string"!=typeof c.id||"string"!=typeof c.cwd||"string"!=typeof c.timestamp)return null;let d=new Date(c.timestamp);return Number.isFinite(d.getTime())?{path:a,id:c.id,cwd:c.cwd,created:d,modified:new Date(b.mtimeMs),messageCount:0,firstMessage:"",..."string"==typeof c.parentSession?{parentSessionPath:c.parentSession}:{},detailsPending:!0}:null}(c,d);b?w[a]=b:h.delete(c);continue}v.push({filePath:c,fp:d,resultIndex:a})}return await p(v,async({filePath:a,fp:b,resultIndex:c})=>{let d=await n(a);d?(h.set(a,{fp:b,info:d}),w[c]=d):h.delete(a)}),(v.length>0||t.length>0)&&(globalThis.__piWebScanIndexSaveQueued||(globalThis.__piWebScanIndexSaveQueued=!0,queueMicrotask(()=>{globalThis.__piWebScanIndexSaveQueued=void 0;try{let a={};for(let[b,c]of q())a[b]=c;(0,j.$)(r(),JSON.stringify({version:1,entries:a}))}catch{}}))),w.flatMap((a,b)=>a?[{info:a,mtimeMs:x[b]}]:[]).sort((a,b)=>b.info.modified.getTime()-a.info.modified.getTime()||b.mtimeMs-a.mtimeMs||(0,g.basename)(b.info.path).localeCompare((0,g.basename)(a.info.path))).map(({info:a})=>a)}i=(k.then?(await k)():k)[0],d()}catch(a){d(a)}})},88573:(a,b,c)=>{"use strict";function d(a){let b=a.subagentTools??a.persistedTools??a.requestedTools;return void 0===b?void 0:[...b]}function e(a){return void 0!==a.toolSelection&&0===a.toolSelection.length&&!a.subagentLoadsResources}c.d(b,{J7:()=>e,Qf:()=>d})},91099:(a,b,c)=>{"use strict";c.d(b,{aA:()=>k,bo:()=>h,bx:()=>f,eG:()=>j});var d=c(29021);let e=`Continue pursuing the active goal. Do the next useful work, then report your disposition:
|
|
46
46
|
- "continue" with the next concrete step;
|
|
47
47
|
- "complete" only when fully done and verified;
|
|
48
48
|
- "blocked" when only the user can unblock you.`;function f(a){return`${e}
|