@qt4798/pi-web 0.17.7 → 0.17.9
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 +24 -23
- package/.next/build-manifest.json +2 -2
- 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 +6 -0
- package/.next/server/app/_global-error/page.js +2 -2
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_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 +3 -3
- 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 +2 -2
- 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 +2 -2
- package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/providers/route.js +1 -1
- package/.next/server/app/api/backup/export/route.js +1 -1
- package/.next/server/app/api/backup/import/route.js +1 -1
- package/.next/server/app/api/cwd/browse/route.js +1 -1
- package/.next/server/app/api/cwd/validate/route.js +1 -1
- package/.next/server/app/api/deepseek/balance/route.js +1 -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/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/pair/route.js +1 -0
- package/.next/server/app/api/pair/route.js.nft.json +1 -0
- package/.next/server/app/api/pair/route_client-reference-manifest.js +1 -0
- 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-state/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/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 +1 -1
- 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 +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/page.js +13 -13
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +24 -23
- package/.next/server/chunks/4154.js +1 -0
- package/.next/server/chunks/4253.js +1 -1
- package/.next/server/chunks/5582.js +1 -1
- package/.next/server/chunks/7915.js +1 -1
- package/.next/server/instrumentation.js +1 -1
- package/.next/server/instrumentation.js.nft.json +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/{9786-a857d8cac4c6f124.js → 9660-8945dc0e772329fb.js} +1 -1
- package/.next/static/chunks/app/_global-error/page-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/bash-output/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/events/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/agent/new/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/agent/running/events/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/agent/running/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/app-update/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/auth/combined/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/auth/login/[provider]/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/auth/providers/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/backup/export/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/backup/import/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/cwd/browse/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/cwd/validate/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/deepseek/balance/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/default-cwd/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/events/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/features/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/file-index/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/files/[...path]/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/git/diff/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/git/push/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/git/stash/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/git/status/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/home/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/import/discover/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/import/execute/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/import/status/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/logs/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/mcp/restart/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/mcp/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/models/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/models-config/builtin/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/models-config/catalog/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/models-config/discover/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/models-config/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/models-config/test/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/modes/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/pair/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/plugins/check/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/plugins/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/project-aliases/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/project-state/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/project-trust/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/projects/visibility/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/proxy/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/proxy/test/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/context/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/details/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/export/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/queue-recovery/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/state/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/sessions/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/sessions/search/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/settings/title-model/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/skills/check/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/skills/install/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/skills/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/skills/search/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/skills/update/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/snippets/[id]/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/snippets/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/subagents/[id]/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/subagents/profiles/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/subagents/settings/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/[action]/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/changed-files/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/diff/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/events/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/tasks/batch/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/tasks/events/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/tasks/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/tasks/settings/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/tasks/templates/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/terminal/[id]/events/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/terminal/[id]/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/terminal/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/themes/[name]/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/themes/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/tools/extension-tools/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/tools/settings/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/usage/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/vision-config/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/app/page-4dc15b51da9c8fc9.js +206 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-1f18a3ac6ad460ce.js +1 -0
- package/.next/static/css/cc02ff1fe55740e5.css +1 -0
- package/.next/static/vOqofO6dUkQhxJHaAA5d2/_buildManifest.js +1 -0
- package/.next/trace +7 -83
- package/.next/trace-build +1 -1
- package/.next/types/app/api/pair/route.ts +353 -0
- package/.next/types/routes.d.ts +2 -1
- package/.next/types/validator.ts +9 -0
- package/package.json +3 -1
- package/.next/static/chunks/app/_global-error/page-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/bash-output/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/events/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/agent/new/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/agent/running/events/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/agent/running/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/app-update/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/auth/combined/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/auth/login/[provider]/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/auth/providers/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/backup/export/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/backup/import/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/cwd/browse/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/cwd/validate/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/deepseek/balance/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/default-cwd/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/events/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/features/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/file-index/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/files/[...path]/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/git/diff/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/git/push/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/git/stash/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/git/status/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/home/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/import/discover/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/import/execute/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/import/status/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/logs/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/mcp/restart/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/mcp/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/models/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/models-config/builtin/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/models-config/catalog/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/models-config/discover/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/models-config/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/models-config/test/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/modes/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/plugins/check/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/plugins/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/project-aliases/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/project-state/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/project-trust/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/projects/visibility/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/proxy/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/proxy/test/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/context/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/details/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/export/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/queue-recovery/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/state/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/sessions/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/sessions/search/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/settings/title-model/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/skills/check/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/skills/install/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/skills/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/skills/search/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/skills/update/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/snippets/[id]/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/snippets/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/subagents/[id]/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/subagents/profiles/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/subagents/settings/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/tasks/[id]/[action]/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/tasks/[id]/changed-files/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/tasks/[id]/diff/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/tasks/[id]/events/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/tasks/[id]/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/tasks/batch/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/tasks/events/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/tasks/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/tasks/settings/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/tasks/templates/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/terminal/[id]/events/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/terminal/[id]/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/terminal/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/themes/[name]/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/themes/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/tools/extension-tools/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/tools/settings/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/usage/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/vision-config/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/app/page-f572e8cb1d35be40.js +0 -206
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-cfe3af3c88e8502f.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-cfe3af3c88e8502f.js +0 -1
- package/.next/static/css/69b56227f1fefbb0.css +0 -1
- package/.next/static/lh89q_egAarSwgB6HxUCx/_buildManifest.js +0 -1
- /package/.next/static/{lh89q_egAarSwgB6HxUCx → vOqofO6dUkQhxJHaAA5d2}/_ssgManifest.js +0 -0
|
@@ -3,6 +3,6 @@ ${u}
|
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
${m}
|
|
6
|
-
`),{...c,name:d,displayName:k,description:l,systemPrompt:m,tools:e,loadSkills:o,loadExtensions:p,...n?{model:n}:{model:void 0},...i?{maxTurns:i}:{maxTurns:void 0},scope:b,filePath:s}}function z(a,b,c){let d=w(c),e=(0,h.join)(x(a,b),`${d}.md`);(0,g.existsSync)(e)&&(0,g.unlinkSync)(e)}function A(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function B(a){let b=a.find(a=>"custom"===a.type&&a.customType===F);if(!b||"custom"!==b.type||!A(b.data))return null;let c=b.data;return 1!==c.version||"string"!=typeof c.parentSessionId||"string"!=typeof c.parentSessionPath?null:c}function C(a){let b=B(a);if(!b)return null;let c=b.resourceSnapshot,d=A(c)&&!0===c.loadSkills,e=A(c)&&!0===c.loadExtensions;return A(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&&!K.has(a)&&(J.has(a)||e))?{appendSystemPrompt:[...c.appendSystemPrompt],tools:[...new Set(c.tools)],loadSkills:d,loadExtensions:e}:null}function D(a,b){return[...new Set([...a,...[...b].filter(a=>!K.has(a))])]}function E(a,b,c){let d=B(a);if(!d)return null;let e=[...a].reverse().find(a=>"custom"===a.type&&a.customType===G),f=e?.type==="custom"&&A(e.data)?e.data:void 0,g=f&&("completed"===f.status||"failed"===f.status||"aborted"===f.status)?f.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:g,createdAt:"string"==typeof d.createdAt?d.createdAt:"",...f&&"string"==typeof f.completedAt?{completedAt:f.completedAt}:{},...f&&"string"==typeof f.result?{result:f.result}:{},...f&&"string"==typeof f.error?{error:f.error}:{}}}d()}catch(a){d(a)}})},8102:(a,b,c)=>{"use strict";c.d(b,{$:()=>g});var d=c(55511),e=c(29021),f=c(33873);function g(a,b){let c=(0,f.dirname)(a),g=(0,f.join)(c,`.${(0,f.basename)(a)}-${(0,d.randomUUID)()}.tmp`),h=!1;try{(0,e.writeFileSync)(g,b,{encoding:"utf8",flag:"wx",mode:384,flush:!0}),(0,e.renameSync)(g,a)}catch(a){throw h=!0,a}finally{try{(0,e.unlinkSync)(g)}catch(a){if("ENOENT"!==a.code&&!h)throw a}}}},12039:(a,b,c)=>{"use strict";function d(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function e(a){return function(a,b={}){if("assistant"!==a.role)return a;let c=a.content;if(!Array.isArray(c))return a;let e=c.map(a=>(function(a,b={}){if(!d(a)||"toolCall"!==a.type)return null;let c={type:"toolCall",toolCallId:"string"==typeof a.toolCallId?a.toolCallId:"string"==typeof a.id?a.id:"",toolName:"string"==typeof a.toolName?a.toolName:"string"==typeof a.name?a.name:"",input:"object"!=typeof a.input||null===a.input||Array.isArray(a.input)?"object"!=typeof a.arguments||null===a.arguments||Array.isArray(a.arguments)?{}:a.arguments:a.input},e=b.includeStreamingRawInput?function(a){if("string"==typeof a.rawInput)return a.rawInput;if("string"==typeof a.partialJson)return a.partialJson;if("string"==typeof a.partialArgs)return a.partialArgs;let b=d(a.customInput)?a.customInput:null,c=b&&"string"==typeof b.property?b.property:null,e=d(a.arguments)?a.arguments:null;return c&&e&&"string"==typeof e[c]?e[c]:void 0}(a):void 0;return void 0===e?c:{...c,rawInput:e}})(a,b)??a);return{...a,content:e}}(a)}c.d(b,{B:()=>e})},20495:(a,b,c)=>{"use strict";c.d(b,{_:()=>j,j:()=>i});var d=c(73024),e=c(80974),f=c.n(e),g=c(8102);let h={realpath:!1,retries:{retries:10,factor:2,minTimeout:50,maxTimeout:2e3,randomize:!0},stale:3e4};function i(a,b){if(!(0,d.existsSync)(a))return b(void 0);try{return b(JSON.parse((0,d.readFileSync)(a,"utf8")))}catch{return b(void 0)}}async function j(a,b,c){let d=null,e=await f().lock(a,{...h,onCompromised:a=>{d=a}});try{if(d)throw d;let e=i(a,b),f=await c(e);if(d)throw d;if(!f||"object"!=typeof f||!("value"in f))throw Error(`${a} mutation must return { value }`);if(!1===f.changed)return{value:f.value,changed:!1};if((0,g.$)(a,JSON.stringify(f.value,null,2)),d)throw d;return{value:f.value,changed:!0}}finally{e().catch(()=>{})}}},21898:(a,b,c)=>{"use strict";c.d(b,{yv:()=>f});var d=c(90426);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}}},24923:(a,b,c)=>{"use strict";c.d(b,{IL:()=>v,KI:()=>p,P9:()=>r,l:()=>u,xw:()=>t});var d=c(79646),e=c(29021),f=c(33873),g=c(28354),h=c(25252),i=c(58864);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()}async function n(a,b){let{stdout:c}=await j("git",["-C",a,...b],{timeout:1e4,maxBuffer:1048576,env:{...process.env,LC_ALL:"C"}});return c.trim()}function o(a){try{return(0,e.realpathSync)(a)}catch{return a}}async function p(a){let b;!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 c=k(),d=c.get(a);if(d&&d.expiresAt>Date.now())return d.info;try{if(!(0,e.existsSync)(a))return b=function(a){let b=(0,f.dirname)(a);if(!b.endsWith("-worktrees"))return null;let c=b.slice(0,-10);return c&&(0,e.existsSync)((0,f.join)(c,".git"))?{projectRoot:o(c),branch:(0,f.basename)(a),isWorktree:!0,isTopLevel:!0}:null}(a)??{projectRoot:a,branch:null,isWorktree:!1,isTopLevel:!1},c.set(a,{info:b,expiresAt:Date.now()+6e4}),b;let[d,g,h,j]=(await n(a,["rev-parse","--path-format=absolute","--git-common-dir","--git-dir","--show-toplevel","--abbrev-ref","HEAD"])).split("\n").map(a=>a.trim()),[k,l,m]=[d,g,h].map(i.gB),p=o(a),q=(0,i.Eb)(m,p),r=!(0,i.Eb)(l,k)&&q,s=r?(0,f.dirname)(k):m;b={projectRoot:q?o(s):a,branch:j&&"HEAD"!==j?j:null,isWorktree:r,isTopLevel:q}}catch{b={projectRoot:a,branch:null,isWorktree:!1,isTopLevel:!1}}return c.set(a,{info:b,expiresAt:Date.now()+6e4}),b}async function q(a){let b=await n(a,["rev-parse","--path-format=absolute","--git-common-dir"]);return o((0,f.dirname)((0,i.gB)(b)))}async function r(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,i.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}function s(a,b){return a.find(a=>(0,i.Eb)(a.path,b))}function t(a,b){return s(a,o(b))?.path??null}async function u(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 q(a),i=`${(0,f.resolve)(g)}-worktrees`,j=(0,f.join)(i,d);if((0,e.existsSync)(j))throw Error(`Directory already exists: ${j}`);(0,e.mkdirSync)(i,{recursive:!0});let k=!1;try{await n(g,["rev-parse","--verify","--quiet",`refs/heads/${c}`]),k=!0}catch{k=!1}try{k?await n(g,["worktree","add","--",j,c]):await n(g,["worktree","add","-b",c,"--",j])}catch(a){throw Error(w(a))}return(0,h.wz)(j),m(),{path:j,branch:c}}async function v(a,b,c=!1){let d=s(await r(a),b);if(!d)throw Error(`Not a worktree of this repository: ${b}`);if(d.isMain)throw Error("Cannot remove the main worktree");try{await n(a,["worktree","remove",...c?["--force"]:[],d.path])}catch(a){throw Error(w(a))}(0,h.sM)(b),m()}function w(a){let b=a.stderr;return"string"==typeof b&&b.trim()?b.trim():a instanceof Error?a.message:String(a)}},25252:(a,b,c)=>{"use strict";c.d(b,{HM:()=>f,Nw:()=>e,sM:()=>h,wz:()=>g});var d=c(58864);function e(a){return(0,d.W3)(a)}function f(){return globalThis.__piAdditionalAllowedRoots||(globalThis.__piAdditionalAllowedRoots=new Set),globalThis.__piAdditionalAllowedRoots}function g(a){if(!a)return;let b=e(a);f().add(b),globalThis.__piAllowedRootsCache?.roots.add(b)}function h(a){if(!a)return;let b=e(a);f().delete(b),globalThis.__piAllowedRootsCache=void 0}},40239:(a,b,c)=>{"use strict";c.d(b,{JJ:()=>h,Lc:()=>i,w_:()=>j});var d=c(76760),e=c(20495);function f(a){return(0,d.join)(a,"session-archive.json")}function g(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 h(a){return(0,e.j)(f(a),g)}async function i(a,b,c){let{value:d}=await (0,e._)(f(a),g,a=>{if(c)return a[b]?{value:a,changed:!1}:{value:{...a,[b]:{archivedAt:new Date().toISOString()}}};if(!(b in a))return{value:a,changed:!1};let d={...a};return delete d[b],{value:d}});return d}async function j(a,b){await i(a,b,!1)}},40402:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$M:()=>e.getAgentDir,BR:()=>K,D5:()=>N,DK:()=>M,O5:()=>x,O8:()=>J,Sn:()=>O,Uv:()=>P,bA:()=>B,dQ:()=>z,eP:()=>L,mD:()=>A,os:()=>E,u1:()=>F,zH:()=>w});var e=c(75430),f=c(29021),g=c(79748),h=c(33873);c(4984);var i=c(12039),j=c(67264),k=c(50880),l=c(74244),m=c(45902),n=c(79535),o=c(24923),p=c(6999),q=c(40239),r=c(7048),s=c(766),t=a([e,p,r,s]);[e,p,r,s]=t.then?(await t)():t;let S=s.q8,T=null;function u(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 v(a){return a.flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}})}async function w(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,o.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,l.z)(d),...b?.branch?{branch:b.branch}:{},...b?.isWorktree?{isWorktree:!0}:{}}})}function x(a,b){let c=new Map(b.map(a=>[a.id,a]));for(let b of a)c.set(b.id,b);return[...c.values()].sort((a,b)=>b.modified.localeCompare(a.modified))}async function y(){let a=globalThis.__piListSessionsOverride??S,b=await a(),c=new Map;for(let a of b)c.set((0,m.$)(a.path),a.id);let d=(0,p.Tu)(),g=Array.isArray(d.sessionPins)?d.sessionPins:[],h=new Set(g.filter(a=>"string"==typeof a)),i=(0,q.JJ)((0,e.getAgentDir)()),k=b.map(a=>{J(a.id,a.path);let b=a.parentSessionPath?c.get((0,m.$)(a.parentSessionPath)):void 0,d=null;if(a.parentSessionPath)try{var e;let b;d=(0,r.$u)((e=a.path,(b=v(u(e,262144,400).slice(1))).some(a=>"custom"===a.type&&a.customType===r.tP)?[...b,...v(function(a){let b=(0,f.openSync)(a,"r");try{let a=(0,f.fstatSync)(b).size,c=Math.max(0,a-65536),d=Buffer.allocUnsafe(a-c),e=(0,f.readSync)(b,d,0,d.length,c);if(0===e)return[];let g=d.subarray(0,e).toString("utf8").split("\n");if(c>0){let a=Buffer.allocUnsafe(1);(0,f.readSync)(b,a,0,1,c-1),10!==a[0]&&g.shift()}return""===g.at(-1)&&g.pop(),g.map(a=>a.endsWith("\r")?a.slice(0,-1):a)}finally{(0,f.closeSync)(b)}}(e))]:b),a.id,a.path)}catch{}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:(0,j.CS)(a.firstMessage||"(no messages)").slice(0,300),parentSessionId:b,...d?{relation:{kind:"subagent",parentSessionId:d.parentSessionId,profile:d.profile,description:d.description,status:d.status}}:a.parentSessionPath?{relation:{kind:"fork",...b?{originSessionId:b}:{}}}:{},transient:!1,pinned:h.has(a.id),archived:!!i[a.id],...i[a.id]?{archivedAt:i[a.id].archivedAt}:{},importedFrom:a.importedFrom}});return w(k)}async function z(a={}){a.force&&A();let b=globalThis.__piSessionListGeneration??0;if(globalThis.__piSessionListCache&&Date.now()-globalThis.__piSessionListCache.ts<1e4)return globalThis.__piSessionListCache.data;if(globalThis.__piSessionListPromise&&globalThis.__piSessionListPromiseGeneration===b)return globalThis.__piSessionListPromise;let c=y().then(a=>(globalThis.__piSessionListGeneration??0)!==b?z():(globalThis.__piSessionListCache={data:a,ts:Date.now()},a)).finally(()=>{globalThis.__piSessionListPromise===c&&(globalThis.__piSessionListPromise=void 0,globalThis.__piSessionListPromiseGeneration=void 0)});return globalThis.__piSessionListPromise=c,globalThis.__piSessionListPromiseGeneration=b,c}function A(){T||(T=setTimeout(()=>{T=null,globalThis.__piSessionListGeneration=(globalThis.__piSessionListGeneration??0)+1,globalThis.__piSessionListCache=void 0},300))}function B(){return globalThis.__piSessionListGeneration??0}function C(){return globalThis.__piSessionPathCache||(globalThis.__piSessionPathCache=new Map),globalThis.__piSessionPathCache}function D(){return globalThis.__piPathToSessionIdCache||(globalThis.__piPathToSessionIdCache=new Map),globalThis.__piPathToSessionIdCache}async function E(a){let b=C().get(a);if(b)return b;let c=await I(a);return c?J(a,c):await z(),C().get(a)??null}async function F(a){let b=(0,h.normalize)(a),c=D().get(b);if(c)return c;let d=function(a){if(!a.endsWith(".jsonl"))return;let b=H(a);if(b)try{let a=L(b)?.id;if(!a)return;return J(a,b),a}catch{return}}(a);return d||(await z(),D().get(b))}let U=/^[A-Za-z0-9](?:[A-Za-z0-9._-]*[A-Za-z0-9])?$/;function G(){return(0,h.join)((0,e.getAgentDir)(),"sessions")}function H(a,b=(0,h.resolve)(G())){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 I(a){let b,c;if(!U.test(a))return null;let d=(0,h.resolve)(G());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=H((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=H((0,h.join)(i,f),d);if(b){try{if(L(b)?.id!==a)continue}catch{continue}if(c&&c!==b)return null;c=b}}}}return c??null}function J(a,b){let c=(0,h.normalize)(b),d=C(),e=D(),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=C();for(;i.size>4096;){let a=i.keys().next().value;if(void 0===a)break;K(a)}}function K(a){let b=C(),c=D(),d=b.get(a);b.delete(a),d&&c.get(d)===a&&c.delete(d)}function L(a){let b=u(a,65536,1)[0]?.trimEnd();if(!b)return null;try{let a=JSON.parse(b);return"session"===a.type?a:null}catch{return null}}function M(a){return N(a).getEntries()}function N(a){let b=globalThis.__piSessionManagerCache??=new Map,c=0,d=0;try{let b=(0,f.statSync)(a);c=b.mtimeMs,d=b.size}catch{return b.delete(a),e.SessionManager.open(a)}let g=b.get(a);if(g&&g.mtimeMs===c&&g.size===d)return b.delete(a),b.set(a,g),g.sm;let h=e.SessionManager.open(a);for(b.set(a,{mtimeMs:c,size:d,sm:h});b.size>6;){let a=b.keys().next().value;if(void 0===a)break;b.delete(a)}return h}function O(a){let b=globalThis.__piSessionManagerCache;b&&(a?b.delete(a):b.clear())}function P(a,b,c={}){let{tail:d,excludeLeaf:e}=c,f=null===b?[]:function(a,b,c,d=!1){if(c<=0)return a;let e=b??a[a.length-1]?.id;if(!e)return[];let f=d,g=[];for(let b=a.length-1;b>=0&&e&&g.length<c;b--){let c=a[b];if(c.id===e){if(e=c.parentId??"",f){f=!1;continue}g.push(c)}}return g.reverse(),g}(a,b??null,d&&d>0?d:a.length,e),g=!!(d&&d>0&&f[0]?.parentId),h=[],j=[];for(let a of f){let b=function(a,b){switch(a.type){case"message":{let c=b.deferToolResultImages?function(a,b,c){if("toolResult"!==a.role)return a;let d=0,e=0,f=new Set,g=a.content.flatMap((a,g)=>{let h=function(a){let b,c;if(!R(a)||"image"!==a.type||("string"==typeof a.data?(b=a.data,c="string"==typeof a.mimeType?a.mimeType:void 0):R(a.source)&&"base64"===a.source.type&&"string"==typeof a.source.data&&(b=a.source.data,c="string"==typeof a.source.media_type?a.source.media_type:void 0),!b))return null;let d=b.endsWith("==")?2:+!!b.endsWith("=");return{bytes:Math.max(0,Math.floor(3*b.length/4)-d),mime:c}}(a);if(!h)return[a];if(b&&h.mime&&n.Ng.has(h.mime)&&h.bytes>0&&h.bytes<=n.cY){let a={type:"url",media_type:h.mime,url:`/api/sessions/${encodeURIComponent(b)}/entries/${encodeURIComponent(c)}/tool-result-image?blockIndex=${g}`};return[{type:"image",source:a}]}return d+=1,e+=h.bytes,h.mime&&f.add(h.mime),[]});if(0===d)return{...a,content:g};let h=f.size>0?`: ${[...f].join(", ")}`:"";return g.push({type:"text",text:`[${d} tool result image${1===d?"":"s"} omitted from initial history payload${h}, ~${e} bytes]`}),{...a,content:g}}((0,i.B)(a.message),b.sessionId,a.id):(0,i.B)(a.message),d="assistant"===c.role?c.content:void 0;if("string"==typeof d&&(c={...c,content:[{type:"text",text:d}]}),!b.deferThinking||"assistant"!==c.role)return c;let e=c.content;return{...c,content:e.map(a=>"thinking"===a.type&&""!==a.thinking.trim()?{...a,thinking:(0,k.de)(a.thinking),deferred:!0}:a)}}case"compaction":return{role:"custom",customType:"compaction",content:a.summary,display:!0,details:{tokensBefore:a.tokensBefore,firstKeptEntryId:a.firstKeptEntryId},timestamp:Q(a.timestamp)};case"branch_summary":if(!a.summary)return null;return{role:"user",content:`*The conversation briefly explored another branch and returned with this summary:*
|
|
6
|
+
`),{...c,name:d,displayName:k,description:l,systemPrompt:m,tools:e,loadSkills:o,loadExtensions:p,...n?{model:n}:{model:void 0},...i?{maxTurns:i}:{maxTurns:void 0},scope:b,filePath:s}}function z(a,b,c){let d=w(c),e=(0,h.join)(x(a,b),`${d}.md`);(0,g.existsSync)(e)&&(0,g.unlinkSync)(e)}function A(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function B(a){let b=a.find(a=>"custom"===a.type&&a.customType===F);if(!b||"custom"!==b.type||!A(b.data))return null;let c=b.data;return 1!==c.version||"string"!=typeof c.parentSessionId||"string"!=typeof c.parentSessionPath?null:c}function C(a){let b=B(a);if(!b)return null;let c=b.resourceSnapshot,d=A(c)&&!0===c.loadSkills,e=A(c)&&!0===c.loadExtensions;return A(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&&!K.has(a)&&(J.has(a)||e))?{appendSystemPrompt:[...c.appendSystemPrompt],tools:[...new Set(c.tools)],loadSkills:d,loadExtensions:e}:null}function D(a,b){return[...new Set([...a,...[...b].filter(a=>!K.has(a))])]}function E(a,b,c){let d=B(a);if(!d)return null;let e=[...a].reverse().find(a=>"custom"===a.type&&a.customType===G),f=e?.type==="custom"&&A(e.data)?e.data:void 0,g=f&&("completed"===f.status||"failed"===f.status||"aborted"===f.status)?f.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:g,createdAt:"string"==typeof d.createdAt?d.createdAt:"",...f&&"string"==typeof f.completedAt?{completedAt:f.completedAt}:{},...f&&"string"==typeof f.result?{result:f.result}:{},...f&&"string"==typeof f.error?{error:f.error}:{}}}d()}catch(a){d(a)}})},8102:(a,b,c)=>{"use strict";c.d(b,{$:()=>g});var d=c(55511),e=c(29021),f=c(33873);function g(a,b){let c=(0,f.dirname)(a),g=(0,f.join)(c,`.${(0,f.basename)(a)}-${(0,d.randomUUID)()}.tmp`),h=!1;try{(0,e.writeFileSync)(g,b,{encoding:"utf8",flag:"wx",mode:384,flush:!0}),(0,e.renameSync)(g,a)}catch(a){throw h=!0,a}finally{try{(0,e.unlinkSync)(g)}catch(a){if("ENOENT"!==a.code&&!h)throw a}}}},12039:(a,b,c)=>{"use strict";function d(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function e(a){return function(a,b={}){if("assistant"!==a.role)return a;let c=a.content;if(!Array.isArray(c))return a;let e=c.map(a=>(function(a,b={}){if(!d(a)||"toolCall"!==a.type)return null;let c={type:"toolCall",toolCallId:"string"==typeof a.toolCallId?a.toolCallId:"string"==typeof a.id?a.id:"",toolName:"string"==typeof a.toolName?a.toolName:"string"==typeof a.name?a.name:"",input:"object"!=typeof a.input||null===a.input||Array.isArray(a.input)?"object"!=typeof a.arguments||null===a.arguments||Array.isArray(a.arguments)?{}:a.arguments:a.input},e=b.includeStreamingRawInput?function(a){if("string"==typeof a.rawInput)return a.rawInput;if("string"==typeof a.partialJson)return a.partialJson;if("string"==typeof a.partialArgs)return a.partialArgs;let b=d(a.customInput)?a.customInput:null,c=b&&"string"==typeof b.property?b.property:null,e=d(a.arguments)?a.arguments:null;return c&&e&&"string"==typeof e[c]?e[c]:void 0}(a):void 0;return void 0===e?c:{...c,rawInput:e}})(a,b)??a);return{...a,content:e}}(a)}c.d(b,{B:()=>e})},20495:(a,b,c)=>{"use strict";c.d(b,{_:()=>j,j:()=>i});var d=c(73024),e=c(80974),f=c.n(e),g=c(8102);let h={realpath:!1,retries:{retries:10,factor:2,minTimeout:50,maxTimeout:2e3,randomize:!0},stale:3e4};function i(a,b){if(!(0,d.existsSync)(a))return b(void 0);try{return b(JSON.parse((0,d.readFileSync)(a,"utf8")))}catch{return b(void 0)}}async function j(a,b,c){let d=null,e=await f().lock(a,{...h,onCompromised:a=>{d=a}});try{if(d)throw d;let e=i(a,b),f=await c(e);if(d)throw d;if(!f||"object"!=typeof f||!("value"in f))throw Error(`${a} mutation must return { value }`);if(!1===f.changed)return{value:f.value,changed:!1};if((0,g.$)(a,JSON.stringify(f.value,null,2)),d)throw d;return{value:f.value,changed:!0}}finally{e().catch(()=>{})}}},21898:(a,b,c)=>{"use strict";c.d(b,{yv:()=>f});var d=c(90426);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}}},24923:(a,b,c)=>{"use strict";c.d(b,{IL:()=>v,KI:()=>p,P9:()=>r,l:()=>u,xw:()=>t});var d=c(79646),e=c(29021),f=c(33873),g=c(28354),h=c(25252),i=c(58864);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()}async function n(a,b){let{stdout:c}=await j("git",["-C",a,...b],{timeout:1e4,maxBuffer:1048576,env:{...process.env,LC_ALL:"C"}});return c.trim()}function o(a){try{return(0,e.realpathSync)(a)}catch{return a}}async function p(a){let b;!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 c=k(),d=c.get(a);if(d&&d.expiresAt>Date.now())return d.info;try{if(!(0,e.existsSync)(a))return b=function(a){let b=(0,f.dirname)(a);if(!b.endsWith("-worktrees"))return null;let c=b.slice(0,-10);return c&&(0,e.existsSync)((0,f.join)(c,".git"))?{projectRoot:o(c),branch:(0,f.basename)(a),isWorktree:!0,isTopLevel:!0}:null}(a)??{projectRoot:a,branch:null,isWorktree:!1,isTopLevel:!1},c.set(a,{info:b,expiresAt:Date.now()+6e4}),b;let[d,g,h,j]=(await n(a,["rev-parse","--path-format=absolute","--git-common-dir","--git-dir","--show-toplevel","--abbrev-ref","HEAD"])).split("\n").map(a=>a.trim()),[k,l,m]=[d,g,h].map(i.gB),p=o(a),q=(0,i.Eb)(m,p),r=!(0,i.Eb)(l,k)&&q,s=r?(0,f.dirname)(k):m;b={projectRoot:q?o(s):a,branch:j&&"HEAD"!==j?j:null,isWorktree:r,isTopLevel:q}}catch{b={projectRoot:a,branch:null,isWorktree:!1,isTopLevel:!1}}return c.set(a,{info:b,expiresAt:Date.now()+6e4}),b}async function q(a){let b=await n(a,["rev-parse","--path-format=absolute","--git-common-dir"]);return o((0,f.dirname)((0,i.gB)(b)))}async function r(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,i.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}function s(a,b){return a.find(a=>(0,i.Eb)(a.path,b))}function t(a,b){return s(a,o(b))?.path??null}async function u(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 q(a),i=`${(0,f.resolve)(g)}-worktrees`,j=(0,f.join)(i,d);if((0,e.existsSync)(j))throw Error(`Directory already exists: ${j}`);(0,e.mkdirSync)(i,{recursive:!0});let k=!1;try{await n(g,["rev-parse","--verify","--quiet",`refs/heads/${c}`]),k=!0}catch{k=!1}try{k?await n(g,["worktree","add","--",j,c]):await n(g,["worktree","add","-b",c,"--",j])}catch(a){throw Error(w(a))}return(0,h.wz)(j),m(),{path:j,branch:c}}async function v(a,b,c=!1){let d=s(await r(a),b);if(!d)throw Error(`Not a worktree of this repository: ${b}`);if(d.isMain)throw Error("Cannot remove the main worktree");try{await n(a,["worktree","remove",...c?["--force"]:[],d.path])}catch(a){throw Error(w(a))}(0,h.sM)(b),m()}function w(a){let b=a.stderr;return"string"==typeof b&&b.trim()?b.trim():a instanceof Error?a.message:String(a)}},25252:(a,b,c)=>{"use strict";c.d(b,{HM:()=>f,Nw:()=>e,sM:()=>h,wz:()=>g});var d=c(58864);function e(a){return(0,d.W3)(a)}function f(){return globalThis.__piAdditionalAllowedRoots||(globalThis.__piAdditionalAllowedRoots=new Set),globalThis.__piAdditionalAllowedRoots}function g(a){if(!a)return;let b=e(a);f().add(b),globalThis.__piAllowedRootsCache?.roots.add(b)}function h(a){if(!a)return;let b=e(a);f().delete(b),globalThis.__piAllowedRootsCache=void 0}},40239:(a,b,c)=>{"use strict";c.d(b,{JJ:()=>h,Lc:()=>i,w_:()=>j});var d=c(76760),e=c(20495);function f(a){return(0,d.join)(a,"session-archive.json")}function g(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 h(a){return(0,e.j)(f(a),g)}async function i(a,b,c){let{value:d}=await (0,e._)(f(a),g,a=>{if(c)return a[b]?{value:a,changed:!1}:{value:{...a,[b]:{archivedAt:new Date().toISOString()}}};if(!(b in a))return{value:a,changed:!1};let d={...a};return delete d[b],{value:d}});return d}async function j(a,b){await i(a,b,!1)}},40402:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$M:()=>e.getAgentDir,BR:()=>K,D5:()=>N,DK:()=>M,O5:()=>x,O8:()=>J,Sn:()=>O,Uv:()=>P,bA:()=>B,dQ:()=>z,eP:()=>L,mD:()=>A,os:()=>E,u1:()=>F,zH:()=>w});var e=c(75430),f=c(29021),g=c(79748),h=c(33873);c(4984);var i=c(12039),j=c(67264),k=c(50880),l=c(74244),m=c(45902),n=c(79535),o=c(24923),p=c(6999),q=c(40239),r=c(7048),s=c(766),t=a([e,p,r,s]);[e,p,r,s]=t.then?(await t)():t;let S=s.q8,T=null;function u(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 v(a){return a.flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}})}async function w(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,o.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,l.z)(d),...b?.branch?{branch:b.branch}:{},...b?.isWorktree?{isWorktree:!0}:{}}})}function x(a,b){let c=new Map(b.map(a=>[a.id,a]));for(let b of a)c.set(b.id,b);return[...c.values()].sort((a,b)=>b.modified.localeCompare(a.modified))}async function y(){let a=globalThis.__piListSessionsOverride??S,b=await a(),c=new Map;for(let a of b)c.set((0,m.$)(a.path),a.id);let d=(0,p.Tu)(),g=Array.isArray(d.sessionPins)?d.sessionPins:[],h=new Set(g.filter(a=>"string"==typeof a)),i=(0,q.JJ)((0,e.getAgentDir)()),k=b.map(a=>{J(a.id,a.path);let b=a.parentSessionPath?c.get((0,m.$)(a.parentSessionPath)):void 0,d=null;if(a.parentSessionPath)try{var e;let b;d=(0,r.$u)((e=a.path,(b=v(u(e,262144,400).slice(1))).some(a=>"custom"===a.type&&a.customType===r.tP)?[...b,...v(function(a){let b=(0,f.openSync)(a,"r");try{let a=(0,f.fstatSync)(b).size,c=Math.max(0,a-65536),d=Buffer.allocUnsafe(a-c),e=(0,f.readSync)(b,d,0,d.length,c);if(0===e)return[];let g=d.subarray(0,e).toString("utf8").split("\n");if(c>0){let a=Buffer.allocUnsafe(1);(0,f.readSync)(b,a,0,1,c-1),10!==a[0]&&g.shift()}return""===g.at(-1)&&g.pop(),g.map(a=>a.endsWith("\r")?a.slice(0,-1):a)}finally{(0,f.closeSync)(b)}}(e))]:b),a.id,a.path)}catch{}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:(0,j.CS)(a.firstMessage||"(no messages)").slice(0,300),parentSessionId:b,...d?{relation:{kind:"subagent",parentSessionId:d.parentSessionId,profile:d.profile,description:d.description,status:d.status,...d.createdAt?{createdAt:d.createdAt}:{},...d.completedAt?{completedAt:d.completedAt}:{}}}:a.parentSessionPath?{relation:{kind:"fork",...b?{originSessionId:b}:{}}}:{},transient:!1,pinned:h.has(a.id),archived:!!i[a.id],...i[a.id]?{archivedAt:i[a.id].archivedAt}:{},importedFrom:a.importedFrom}});return w(k)}async function z(a={}){a.force&&A();let b=globalThis.__piSessionListGeneration??0;if(globalThis.__piSessionListCache&&Date.now()-globalThis.__piSessionListCache.ts<1e4)return globalThis.__piSessionListCache.data;if(globalThis.__piSessionListPromise&&globalThis.__piSessionListPromiseGeneration===b)return globalThis.__piSessionListPromise;let c=y().then(a=>(globalThis.__piSessionListGeneration??0)!==b?z():(globalThis.__piSessionListCache={data:a,ts:Date.now()},a)).finally(()=>{globalThis.__piSessionListPromise===c&&(globalThis.__piSessionListPromise=void 0,globalThis.__piSessionListPromiseGeneration=void 0)});return globalThis.__piSessionListPromise=c,globalThis.__piSessionListPromiseGeneration=b,c}function A(){T||(T=setTimeout(()=>{T=null,globalThis.__piSessionListGeneration=(globalThis.__piSessionListGeneration??0)+1,globalThis.__piSessionListCache=void 0},300))}function B(){return globalThis.__piSessionListGeneration??0}function C(){return globalThis.__piSessionPathCache||(globalThis.__piSessionPathCache=new Map),globalThis.__piSessionPathCache}function D(){return globalThis.__piPathToSessionIdCache||(globalThis.__piPathToSessionIdCache=new Map),globalThis.__piPathToSessionIdCache}async function E(a){let b=C().get(a);if(b)return b;let c=await I(a);return c?J(a,c):await z(),C().get(a)??null}async function F(a){let b=(0,h.normalize)(a),c=D().get(b);if(c)return c;let d=function(a){if(!a.endsWith(".jsonl"))return;let b=H(a);if(b)try{let a=L(b)?.id;if(!a)return;return J(a,b),a}catch{return}}(a);return d||(await z(),D().get(b))}let U=/^[A-Za-z0-9](?:[A-Za-z0-9._-]*[A-Za-z0-9])?$/;function G(){return(0,h.join)((0,e.getAgentDir)(),"sessions")}function H(a,b=(0,h.resolve)(G())){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 I(a){let b,c;if(!U.test(a))return null;let d=(0,h.resolve)(G());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=H((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=H((0,h.join)(i,f),d);if(b){try{if(L(b)?.id!==a)continue}catch{continue}if(c&&c!==b)return null;c=b}}}}return c??null}function J(a,b){let c=(0,h.normalize)(b),d=C(),e=D(),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=C();for(;i.size>4096;){let a=i.keys().next().value;if(void 0===a)break;K(a)}}function K(a){let b=C(),c=D(),d=b.get(a);b.delete(a),d&&c.get(d)===a&&c.delete(d)}function L(a){let b=u(a,65536,1)[0]?.trimEnd();if(!b)return null;try{let a=JSON.parse(b);return"session"===a.type?a:null}catch{return null}}function M(a){return N(a).getEntries()}function N(a){let b=globalThis.__piSessionManagerCache??=new Map,c=0,d=0;try{let b=(0,f.statSync)(a);c=b.mtimeMs,d=b.size}catch{return b.delete(a),e.SessionManager.open(a)}let g=b.get(a);if(g&&g.mtimeMs===c&&g.size===d)return b.delete(a),b.set(a,g),g.sm;let h=e.SessionManager.open(a);for(b.set(a,{mtimeMs:c,size:d,sm:h});b.size>6;){let a=b.keys().next().value;if(void 0===a)break;b.delete(a)}return h}function O(a){let b=globalThis.__piSessionManagerCache;b&&(a?b.delete(a):b.clear())}function P(a,b,c={}){let{tail:d,excludeLeaf:e}=c,f=null===b?[]:function(a,b,c,d=!1){if(c<=0)return a;let e=b??a[a.length-1]?.id;if(!e)return[];let f=d,g=[];for(let b=a.length-1;b>=0&&e&&g.length<c;b--){let c=a[b];if(c.id===e){if(e=c.parentId??"",f){f=!1;continue}g.push(c)}}return g.reverse(),g}(a,b??null,d&&d>0?d:a.length,e),g=!!(d&&d>0&&f[0]?.parentId),h=[],j=[];for(let a of f){let b=function(a,b){switch(a.type){case"message":{let c=b.deferToolResultImages?function(a,b,c){if("toolResult"!==a.role)return a;let d=0,e=0,f=new Set,g=a.content.flatMap((a,g)=>{let h=function(a){let b,c;if(!R(a)||"image"!==a.type||("string"==typeof a.data?(b=a.data,c="string"==typeof a.mimeType?a.mimeType:void 0):R(a.source)&&"base64"===a.source.type&&"string"==typeof a.source.data&&(b=a.source.data,c="string"==typeof a.source.media_type?a.source.media_type:void 0),!b))return null;let d=b.endsWith("==")?2:+!!b.endsWith("=");return{bytes:Math.max(0,Math.floor(3*b.length/4)-d),mime:c}}(a);if(!h)return[a];if(b&&h.mime&&n.Ng.has(h.mime)&&h.bytes>0&&h.bytes<=n.cY){let a={type:"url",media_type:h.mime,url:`/api/sessions/${encodeURIComponent(b)}/entries/${encodeURIComponent(c)}/tool-result-image?blockIndex=${g}`};return[{type:"image",source:a}]}return d+=1,e+=h.bytes,h.mime&&f.add(h.mime),[]});if(0===d)return{...a,content:g};let h=f.size>0?`: ${[...f].join(", ")}`:"";return g.push({type:"text",text:`[${d} tool result image${1===d?"":"s"} omitted from initial history payload${h}, ~${e} bytes]`}),{...a,content:g}}((0,i.B)(a.message),b.sessionId,a.id):(0,i.B)(a.message),d="assistant"===c.role?c.content:void 0;if("string"==typeof d&&(c={...c,content:[{type:"text",text:d}]}),!b.deferThinking||"assistant"!==c.role)return c;let e=c.content;return{...c,content:e.map(a=>"thinking"===a.type&&""!==a.thinking.trim()?{...a,thinking:(0,k.de)(a.thinking),deferred:!0}:a)}}case"compaction":return{role:"custom",customType:"compaction",content:a.summary,display:!0,details:{tokensBefore:a.tokensBefore,firstKeptEntryId:a.firstKeptEntryId},timestamp:Q(a.timestamp)};case"branch_summary":if(!a.summary)return null;return{role:"user",content:`*The conversation briefly explored another branch and returned with this summary:*
|
|
7
7
|
|
|
8
8
|
${a.summary}`,timestamp:Q(a.timestamp)};case"custom_message":return{role:"custom",customType:a.customType,content:a.content,display:a.display,details:a.details,timestamp:Q(a.timestamp)};default:return null}}(a,c);b&&(h.push(b),j.push(a.id))}return{messages:h,entryIds:j,oldestEntryId:f[0]?.id??null,hasMore:g,...function(a,b){let c,d;if(null===b)return{thinkingLevel:"off",model:null};let e=new Map(a.map(a=>[a.id,a])),f=b?e.get(b):void 0;for(f??=a[a.length-1];f&&(void 0===c||void 0===d);){if(void 0===c&&"thinking_level_change"===f.type&&(c=f.thinkingLevel),void 0===d&&"model_change"===f.type)d={provider:f.provider,modelId:f.modelId};else if(void 0===d&&"message"===f.type&&"assistant"===f.message.role){let a=f.message;"string"==typeof a.provider&&"string"==typeof a.model&&(d={provider:a.provider,modelId:a.model})}f=f.parentId?e.get(f.parentId):void 0}return{thinkingLevel:c??"off",model:d??null}}(a,b)}}function Q(a){let b=Date.parse(a);return Number.isNaN(b)?void 0:b}function R(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}d()}catch(a){d(a)}})},41761:(a,b,c)=>{"use strict";c.d(b,{C1:()=>e,kU:()=>d});let d=["read","grep","find","ls"],e=["bash","read","edit","write","grep","find","ls"];[...e]},45902:(a,b,c)=>{"use strict";c.d(b,{$:()=>f});var d=c(76760),e=c.n(d);function f(a,b=process.platform){let c="win32"===b?e().win32.normalize(a):e().posix.normalize(a);return"win32"===b?c.toLowerCase():c}},50880:(a,b,c)=>{"use strict";function d(a){return a.trimStart().match(/^[^\r\n]{0,240}/u)?.[0].trimEnd()??""}c.d(b,{de:()=>d})},58864:(a,b,c)=>{"use strict";c.d(b,{A_:()=>h,Eb:()=>k,W3:()=>j,gB:()=>i,pJ:()=>g,uK:()=>f});var d=c(33873);let e=/^[a-zA-Z]:[\\/]/;function f(a){return e.test(a)||a.startsWith("\\\\")||a.startsWith("//")}function g(a){let b=a.trim().match(/^([a-zA-Z]):(?:[\\/](.*))?$/);if(b){let a=b[1].toLowerCase(),c=(b[2]??"").replace(/\\/g,"/");return c?`/mnt/${a}/${c}`:`/mnt/${a}`}return a}function h(a){let b=a.join("/"),c=j(b);return/^[a-zA-Z]:$/.test(c)?`${c}/`:f(c)?c:"/"+b.replace(/^\/+/,"")}function i(a){return a&&"win32"===process.platform?(0,d.normalize)(a):a}function j(a){return a.replace(/\\/g,"/")}function k(a,b){return a===b||!!a&&!!b&&"win32"===process.platform&&i(a).toLowerCase()===i(b).toLowerCase()}},67264:(a,b,c)=>{"use strict";c.d(b,{CS:()=>l,MJ:()=>k,Md:()=>g,UY:()=>h,g0:()=>j,wI:()=>i});let d="normal",e="full",f="auto";function g(){return{collaborationMode:d,tokenMode:e,toolApprovalMode:f,permissionRules:{allow:[],ask:[],deny:[]}}}function h(a){return"normal"===a||"plan"===a||"goal"===a?a:d}function i(a){return"economy"===a||"delivery"===a||"full"===a?a:e}function j(a){return"ask"===a||"auto"===a||"yolo"===a?a:f}let k=new Set(["read","grep","find","ls","bash_output","get_tools","get_commands","get_session_stats"]);function l(a){if(!a)return"";let b=a.replace(/^\uFEFF/,""),c=b;if((b=b.replace(/<(?:economy|delivery|goal)-profile>\n?[\s\S]*?<\/(?:economy|delivery|goal)-profile>\n*(?:Goal:\s*[^\n]*\n?)?/g,""))===c){let a=/^\s*<(?:economy|delivery|goal)-profile>\s*/.exec(b);if(a){let c=b.slice(a[0].length).match(/^[^.]*?\.\s+([\s\S]*)$/);b=c?c[1]:""}}return(b=b.replace(/^You are in PLAN MODE\.[\s\S]*?\n(?=\n|$)/,"")).replace(/^\s*\n/,"").trimStart()}},74244:(a,b,c)=>{"use strict";c.d(b,{z:()=>f});var d=c(76760),e=c.n(d);function f(a,b=process.platform){if(!a)return a;let c="win32"===b?e().win32:e().posix,d=c.normalize(a),g=c.parse(d).root.length,h=d.length;for(;h>g&&d[h-1]===c.sep;)h--;let i=d.slice(0,h);return"win32"===b?i.toLowerCase():i}},78335:()=>{},79535:(a,b,c)=>{"use strict";c.d(b,{Ng:()=>e,cY:()=>d});let d=0xa00000,e=new Set(["image/png","image/jpeg","image/webp","image/gif","image/bmp","image/avif"])},82536:(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(58864);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)}},96487:()=>{}};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
exports.id=7915,exports.ids=[7915],exports.modules={8102:(a,b,c)=>{"use strict";c.d(b,{$:()=>g});var d=c(55511),e=c(29021),f=c(33873);function g(a,b){let c=(0,f.dirname)(a),g=(0,f.join)(c,`.${(0,f.basename)(a)}-${(0,d.randomUUID)()}.tmp`),h=!1;try{(0,e.writeFileSync)(g,b,{encoding:"utf8",flag:"wx",mode:384,flush:!0}),(0,e.renameSync)(g,a)}catch(a){throw h=!0,a}finally{try{(0,e.unlinkSync)(g)}catch(a){if("ENOENT"!==a.code&&!h)throw a}}}},39006:a=>{"use strict";a.exports=JSON.parse('{"name":"@qt4798/pi-web","version":"0.17.7","description":"Web workspace for the pi coding agent","homepage":"https://github.com/t479842598/pi-web-QT#readme","repository":{"type":"git","url":"git+https://github.com/t479842598/pi-web-QT.git"},"bugs":{"url":"https://github.com/t479842598/pi-web-QT/issues"},"license":"MIT","engines":{"node":">=22.19.0"},"bin":{"pi-web":"bin/pi-web.js"},"files":["bin",".next","!.next/cache","!.next/dev","!.next/standalone","!.next/**/*.js.map","lib/theme","public","next.config.ts","package.json"],"scripts":{"dev":"node bin/fix-pi-agent-undici.js && node bin/with-memory-limit.js node_modules/.bin/next dev -H 127.0.0.1 -p 0 --turbopack","dev:lan":"node bin/fix-pi-agent-undici.js && node bin/with-memory-limit.js node_modules/.bin/next dev -H 0.0.0.0 -p 0 --turbopack","postinstall":"node bin/prepare-terminal.js","theme:css":"node scripts/generate-theme-css.mjs","prebuild":"node scripts/generate-theme-css.mjs","build":"env -u TURBOPACK -u __NEXT_PRIVATE_STANDALONE_CONFIG next build --webpack","bundle:backend":"node scripts/bundle-backend.mjs","start":"node bin/fix-pi-agent-undici.js && node bin/with-memory-limit.js node_modules/.bin/next start -H 127.0.0.1 -p 0","start:lan":"node bin/fix-pi-agent-undici.js && node bin/with-memory-limit.js node_modules/.bin/next start -H 0.0.0.0 -p 0","lint":"eslint .","release":"npm version patch --no-git-tag-version && npm run build && npm publish --access public","test":"node --experimental-strip-types --test $(find app components hooks lib -name \'*.test.mjs\' -print)","test:e2e":"node e2e/run.mjs","test:terminal":"node e2e/terminal.mjs"},"dependencies":{"@earendil-works/pi-agent-core":"0.85.1","@earendil-works/pi-ai":"0.85.1","@earendil-works/pi-coding-agent":"0.85.1","@earendil-works/pi-tui":"0.85.1","@fontsource/ia-writer-quattro":"^5.3.0","@fontsource/lilex":"^5.3.0","@phosphor-icons/react":"^2.1.10","@tanstack/react-virtual":"^3.14.9","@tauri-apps/api":"^2.11.1","@types/react-syntax-highlighter":"^15.5.13","@xterm/addon-fit":"0.11.0","@xterm/xterm":"6.0.0","adm-zip":"^0.6.0","ansi_up":"^6.0.6","js-yaml":"^5.2.3","katex":"^0.16.47","lucide-react":"^1.37.0","mammoth":"^1.12.0","mermaid":"^11.14.0","next":"16.3.1","node-pty":"1.1.0","proper-lockfile":"4.1.2","react":"^19.2.4","react-dom":"^19.2.4","react-markdown":"^10.1.0","react-syntax-highlighter":"^16.1.1","rehype-katex":"^7.0.1","rehype-raw":"^7.0.0","rehype-sanitize":"^6.0.0","remark-frontmatter":"^5.0.0","remark-gfm":"^4.0.1","remark-math":"^6.0.0","semver":"7.8.0","undici":"^8.10.0"},"overrides":{"undici":"^8.10.0","@earendil-works/pi-coding-agent":{"undici":"^8.10.0"},"intersection-observer":"npm:noop2@2.0.0","node-domexception":"npm:@profoundlogic/node-domexception@1.0.2"},"allowScripts":{"@google/genai@1.52.0":true,"protobufjs@7.6.5":true,"sharp@0.34.5":true,"unrs-resolver@1.12.2":true},"devDependencies":{"@resvg/resvg-js":"^2.6.2","@tailwindcss/postcss":"^4.2.2","@types/js-yaml":"^4.0.9","@types/node":"^25","@types/proper-lockfile":"4.1.4","@types/react":"^19","@types/react-dom":"^19","@types/semver":"7.8.0","eslint":"^9.39.5","eslint-config-next":"16.3.1","jiti":"^2.7.0","lightningcss":"^1.33.0","playwright":"^1.63.0","postcss":"^8","tailwindcss":"^4.2.2","to-ico":"^1.1.5","typescript":"^5.9.3"}}')},50593:(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})},66544:(a,b,c)=>{"use strict";c.d(b,{E2:()=>l,EN:()=>k});var d=c(77030);function e(a){return(a.startsWith("[")&&a.endsWith("]")?a.slice(1,-1):a).toLowerCase().replace(/\.$/,"")}function f(a){if(!a||/[\s/@\\]/.test(a))return null;try{let b=new URL(`http://${a}`);if(b.username||b.password||"/"!==b.pathname||b.search||b.hash)return null;return e(b.hostname)}catch{return null}}function g(a){if(!a||/[\s/@\\]/.test(a))return null;try{let b=new URL(`http://${a}`);if(b.username||b.password||"/"!==b.pathname||b.search||b.hash)return null;let c=e(b.hostname);return b.port?`${c}:${b.port}`:c}catch{return null}}function h(){return[process.env.PI_WEB_HOSTNAME,...process.env.PI_WEB_ALLOWED_HOSTS?.split(",")??[]].filter(a=>!!a?.trim())}function i(a){try{return new URL(a).origin}catch{return null}}let j=new Set(["POST","PUT","PATCH","DELETE"]);function k(a,b=h()){if(!function(a,b=h()){let c=a.headers.get("host"),g=c?f(c):null;return!!g&&(!!("localhost"===g||g.endsWith(".localhost")||(0,d.isIP)(g))||b.some(a=>{let b;return((b=a?.trim())?(0,d.isIP)(b)?e(b):f(b):null)===g}))}(a,b))return!1;if(function(a){if("GET"!==a.method||"navigate"!==a.headers.get("sec-fetch-mode")||"document"!==a.headers.get("sec-fetch-dest")||"?1"!==a.headers.get("sec-fetch-user"))return!1;try{return/^\/api\/sessions\/[^/]+\/export$/.test(new URL(a.url).pathname)}catch{return!1}}(a))return!0;if(!(a.headers.has("origin")||a.headers.has("sec-fetch-site"))){if(j.has((a.method??"GET").toUpperCase())){let b=a.headers.get("host"),c=b?f(b):null;return null!==c&&!!("localhost"===c||c.endsWith(".localhost")||/^127\./.test(c)||"::1"===c||"[::1]"===c)}return!0}return function(a){let b,c,d;if("cross-site"===a.headers.get("sec-fetch-site"))return!1;let e=a.headers.get("origin");if(!e)return!0;let f=(b=new URL(a.url),(c=a.headers.get("host"))?i(`${b.protocol}//${c}`):null);if(null!==f&&(i(e)===f||function(a,b){let c,d;try{c=new URL(a),d=new URL(b)}catch{return!1}if(c.protocol!==d.protocol||c.hostname.toLowerCase()!==d.hostname.toLowerCase())return!1;if(!c.port)return!0;let e=d.port||("https:"===d.protocol?"443":"80");return c.port===e}(e,f)))return!0;if("same-origin"!==a.headers.get("sec-fetch-site")||!a.headers.get("x-forwarded-proto"))return!1;let h=a.headers.get("host");if(!h)return!1;try{d=new URL(e).host}catch{return!1}let j=g(d);return null!==j&&j===g(h)}(a)}function l(a){let b=a.headers.get("content-type")?.split(";",1)[0]?.trim().toLowerCase();return"application/json"===b||!!(b?.startsWith("application/")&&b.endsWith("+json"))}},78335:()=>{},89628:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{DT:()=>y,dH:()=>A,g3:()=>z,jE:()=>v,lz:()=>B,uj:()=>t});var e=c(26106),f=c.n(e),g=c(29021),h=c(21820),i=c(33873),j=c(75430),k=c(50593),l=c(8102),m=a([j]);j=(m.then?(await m)():m)[0];let D="pi-backup",E="${agentDir}",F="${home}";function n(a){if(!(0,g.existsSync)(a))return null;try{let b=JSON.parse((0,g.readFileSync)(a,"utf8"));return null!==b&&"object"==typeof b?b:null}catch{return null}}function o(a){let b=[],c=[""];for(;c.length>0;){let d,e=c.pop(),f=(0,i.join)(a,e);try{d=(0,g.readdirSync)(f)}catch{continue}for(let a of d){let d;if("node_modules"===a||".git"===a)continue;let h=e?`${e}/${a}`:a,j=(0,i.join)(f,a);try{d=(0,g.statSync)(j)}catch{continue}d.isDirectory()?c.push(h):d.isFile()&&b.push(h)}}return b}function p(a){let b=(0,k.A0)((0,j.getAgentDir)()),c=(0,k.A0)((0,h.homedir)());return r(a,a=>{let d=(0,k.A0)(a);return d===b?E:d===c?F:d.startsWith(b+"/")?E+d.slice(b.length):d.startsWith(c+"/")?F+d.slice(c.length):a})}function q(a){let b=(0,j.getAgentDir)(),c=(0,h.homedir)();return r(a,a=>a===E?b:a===F?c:a.startsWith(E+"/")?(0,i.join)(b,...a.slice(E.length+1).split("/")):a.startsWith(F+"/")?(0,i.join)(c,...a.slice(F.length+1).split("/")):a)}function r(a,b){if("string"==typeof a)return b(a);if(Array.isArray(a))return a.map(a=>r(a,b));if(null!==a&&"object"==typeof a){let c={};for(let[d,e]of Object.entries(a))c[d]=r(e,b);return c}return a}function s(a,b,c){a.addFile(`${D}/${b}`,Buffer.isBuffer(c)?c:Buffer.from(c,"utf8"))}function t(a){let b=(0,j.getAgentDir)(),d=new(f()),e={formatVersion:1,createdAt:new Date().toISOString(),...function(){try{return{piWebVersion:c(39006).version??"unknown",piSdkVersion:"unknown"}}catch{return{piWebVersion:"unknown",piSdkVersion:"unknown"}}}(),sourcePlatform:process.platform,includeSecrets:a.includeSecrets,includeSessions:a.includeSessions,files:[],mcpBinScripts:[],localPackages:[],absolutePaths:[],warnings:[]};for(let c of["models.json","auth.json","settings.json","mcp.json","models-store.json","AGENTS.md","APPEND_SYSTEM.md"]){let f=(0,i.join)(b,c);if(!(0,g.existsSync)(f)||"auth.json"===c&&!a.includeSecrets)continue;let h=(0,g.readFileSync)(f,"utf8");if("models.json"!==c||a.includeSecrets){if("settings.json"===c||"mcp.json"===c||"models.json"===c){let a=n(f);a&&(h=JSON.stringify(p(a),null,2))}}else{let a=n(f);a&&(h=JSON.stringify(function(a){let b=a.providers??{},c={};for(let[a,d]of Object.entries(b))c[a]={...d},"string"==typeof c[a].apiKey&&(c[a].apiKey="");return{...a,providers:c}}(a),null,2))}s(d,c,String(h)),e.files.push(`${D}/${c}`)}let h=(0,i.join)(b,"skills");if((0,g.existsSync)(h))for(let a of o(h))d.addFile(`${D}/skills/${a}`,(0,g.readFileSync)((0,i.join)(h,a))),e.files.push(`${D}/skills/${a}`);let l=n((0,i.join)(b,"settings.json"));for(let a of l?.packages??[]){let b="string"==typeof a?a:a?.source;if(!b||b.startsWith("npm:"))continue;let c=(0,k.A0)(b);if((0,i.isAbsolute)(c)&&(0,g.existsSync)(c)){let a=(0,i.basename)(c);for(let b of o(c))d.addFile(`${D}/local-packages/${a}/${b}`,(0,g.readFileSync)((0,i.join)(c,b))),e.files.push(`${D}/local-packages/${a}/${b}`);e.localPackages.push(a)}else e.warnings.push(`Local package skipped (not found or not absolute): ${b}`)}let m=n((0,i.join)(b,"mcp.json")),q=new Set;if(m?.mcpServers)for(let a of Object.values(m.mcpServers))!function a(b,c){if("string"==typeof b){let a=`${E}/bin/`;if(b.startsWith(a)){let d=b.slice(a.length).split("/")[0];d&&c.add(d)}return}if(Array.isArray(b)){for(let d of b)a(d,c);return}if(null!==b&&"object"==typeof b)for(let d of Object.values(b))a(d,c)}(p(a),q);for(let a of q){let c=(0,i.join)(b,"bin",a);(0,g.existsSync)(c)&&(0,g.statSync)(c).isFile()?(d.addFile(`${D}/bin/${a}`,(0,g.readFileSync)(c)),e.files.push(`${D}/bin/${a}`),e.mcpBinScripts.push(a)):e.warnings.push(`MCP bin script referenced but missing: ${a}`)}if(a.includeSessions){let a=(0,i.join)(b,"sessions");if((0,g.existsSync)(a))for(let b of o(a))d.addFile(`${D}/sessions/${b}`,(0,g.readFileSync)((0,i.join)(a,b))),e.files.push(`${D}/sessions/${b}`)}return s(d,"manifest.json",JSON.stringify(e,null,2)),d.toBuffer()}let G=new Set(["npx","uvx","node","uv","npm","git","python3","python","bun","deno"]);function u(a){let b=a.toString("utf8",0,256).split(/\r?\n/,1)[0]??"";return b.startsWith("#!")?b:null}function v(a,b,c){let d=(0,j.getAgentDir)(),e=c??process.platform,f="win32"===e,g=[],h=[];for(let[c,j]of Object.entries(a)){let a,l=q(j),m="string"==typeof l.command?l.command:"",n=Array.isArray(l.args)?l.args.map(String):[],o={command:m,args:n};if(!m){h.push({name:c,original:o,adapted:null,action:"keep",platform:e});continue}let p=function(a,b){if(!a)return"manual";if((0,k.A0)(a).startsWith((0,k.A0)(b)+"/bin/"))return"restore-script";if(a.includes("/")||a.includes("\\")||a.includes(":"))return"keep-with-warning";let c=a.split(/[\s]/)[0];return G.has(c),"keep"}(m,d),r=null;if("restore-script"===p){let j=(0,i.basename)((0,k.A0)(m)),l=b.get(j);if(!l){r=null,a=`bin script ${j} missing from backup`,h.push({name:c,original:o,adapted:r,action:"manual",platform:e,reason:a,installPrompt:C({name:c,original:o,adapted:r,action:"manual",platform:e,reason:a})});continue}if(!w(j)){a=`bin script name rejected (unsafe): ${j}`;let b={name:c,original:o,adapted:null,action:"manual",platform:e,reason:a};h.push({...b,installPrompt:C(b)}),g.push(`${c}: ${a}`);continue}if(!x(l)){a="bin script content rejected (unrecognized shebang)";let b={name:c,original:o,adapted:null,action:"manual",platform:e,reason:a};h.push({...b,installPrompt:C(b)}),g.push(`${c}: ${a}`);continue}if(f){let b=u(l);if(b&&b.includes("node"))r={command:(0,i.join)(d,"bin",`${j}.cmd`),args:n},h.push({name:c,original:o,adapted:r,action:"generate-cmd",platform:e,reason:(0,i.join)(d,"bin",j)});else{a="bash/other shebang wrapper cannot run on Windows; reinstall or adjust manually";let b={name:c,original:o,adapted:null,action:"manual",platform:e,reason:a};h.push({...b,installPrompt:C(b)}),g.push(`${c}: ${a}`)}}else r={command:(0,i.join)(d,"bin",j),args:n},h.push({name:c,original:o,adapted:r,action:"restore-script",platform:e});continue}if("keep-with-warning"===p){r={command:m,args:n},a="absolute path outside agentDir/bin — verify it exists on this machine",h.push({name:c,original:o,adapted:r,action:"keep-with-warning",platform:e,reason:a}),g.push(`${c}: ${a}`);continue}r={command:m,args:n},h.push({name:c,original:o,adapted:r,action:"keep",platform:e})}return{servers:h,warnings:g}}function w(a){return/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(a)&&!a.includes("..")}function x(a){let b=u(a);if(!b)return!1;let c=b.slice(2).trim().split(/\s+/);if(0===c.length)return!1;let d=c[0],e=d.split("/").pop()??d;return!!["node","bash","sh","python3","python","zsh"].includes(e)||"env"===e&&c.length>1&&["node","bash","sh","python3","python"].includes(c[1].split("/").pop()??"")}function y(a){let b;try{b=new(f())(a)}catch(a){throw Error(`Not a valid zip archive: ${a instanceof Error?a.message:String(a)}`)}let c=b.getEntries(),d=(0,g.mkdtempSync)((0,i.join)((0,h.tmpdir)(),"pi-backup-")),e=(0,i.join)(d,D);(0,g.mkdirSync)(e,{recursive:!0});let j=0,k=0;for(let a of c){if(a.isDirectory)continue;let c=a.entryName.replace(/\\/g,"/");if(!c.startsWith(`${D}/`))throw(0,g.rmSync)(d,{recursive:!0,force:!0}),Error(`Unexpected entry outside ${D}/: ${c}`);let f=(0,i.resolve)(e,c.slice(D.length+1));if(!f.startsWith((0,i.resolve)(e)+i.sep))throw(0,g.rmSync)(d,{recursive:!0,force:!0}),Error(`Path traversal blocked: ${c}`);let h="number"==typeof a.header.size?a.header.size:0;if(j+=h,h>0x20000000||j>0x40000000)throw(0,g.rmSync)(d,{recursive:!0,force:!0}),Error(`Backup archive too large when extracted (entry: ${c})`);(0,g.mkdirSync)((0,i.dirname)(f),{recursive:!0}),b.extractEntryTo(a,(0,i.dirname)(f),!1,!0);let l=(0,g.statSync)(f).size;if(k+=l,l>0x20000000||k>0x40000000)throw(0,g.rmSync)(d,{recursive:!0,force:!0}),Error(`Backup archive too large when extracted (entry: ${c})`)}let l=(0,i.join)(e,"manifest.json");if(!(0,g.existsSync)(l))throw(0,g.rmSync)(d,{recursive:!0,force:!0}),Error("Backup manifest.json missing — not a pi-web backup");let m=n(l);if(!m||1!==m.formatVersion)throw(0,g.rmSync)(d,{recursive:!0,force:!0}),Error(`Unsupported backup format version: ${m?.formatVersion??"unknown"} (expected 1)`);let o=n((0,i.join)(e,"mcp.json"))?.mcpServers??{},p=new Map;for(let a of m.mcpBinScripts??[]){let b=(0,i.join)(e,"bin",a);(0,g.existsSync)(b)&&p.set(a,(0,g.readFileSync)(b))}let q=["core","skills","packages","mcp"];return m.includeSessions&&q.push("sessions"),{manifest:m,tempDir:d,servers:o,binScripts:p,categories:q}}function z(a){(0,g.rmSync)(a.tempDir,{recursive:!0,force:!0})}function A(a,b){let c=(0,j.getAgentDir)(),{manifest:d}=a,e={restored:[],needsRestart:[],manual:[],warnings:[]},f=new Set(b.categories),h=new Set(b.skippedMcpServers),m=b=>{let d=(0,i.join)(c,b),f=(0,i.join)(a.tempDir,D,b);(0,g.existsSync)(f)&&((0,g.mkdirSync)((0,i.dirname)(d),{recursive:!0}),(0,l.$)(d,(0,g.readFileSync)(f,"utf8")),e.restored.push(b))};if(f.has("core"))for(let a of["models.json","auth.json","settings.json","mcp.json","models-store.json","AGENTS.md","APPEND_SYSTEM.md"])("auth.json"!==a||d.includeSecrets)&&(m(a),e.needsRestart.push(a));if(f.has("skills")){let b=(0,i.join)(a.tempDir,D,"skills");if((0,g.existsSync)(b)){for(let a of o(b)){let d=(0,i.join)(c,"skills",a);(0,g.mkdirSync)((0,i.dirname)(d),{recursive:!0}),(0,l.$)(d,(0,g.readFileSync)((0,i.join)(b,a),"utf8"))}e.restored.push("skills/")}}if(f.has("packages")){let b=(0,i.join)(c,"settings.json"),f=n(b)??{},h=f.packages??[],j=d.localPackages??[],m=(0,i.join)(a.tempDir,D,"local-packages");for(let a of j){if(!w(a)){e.warnings.push(`Local package ${a} not restored (unsafe name)`);continue}let b=(0,i.join)(m,a);if(!(0,g.existsSync)(b)){e.warnings.push(`Local package ${a} missing from backup`);continue}let d=(0,i.join)(c,"local-packages",a);for(let a of o(b)){let c=(0,i.join)(d,a);(0,g.mkdirSync)((0,i.dirname)(c),{recursive:!0}),(0,l.$)(c,(0,g.readFileSync)((0,i.join)(b,a),"utf8"))}e.restored.push(`local-packages/${a}`)}let p=!1,q=h.map(a=>{let b="string"==typeof a?a:a?.source;if("string"!=typeof b||b.startsWith("npm:"))return a;let d=(0,i.basename)((0,k.A0)(b));if(j.includes(d)){p=!0;let b=(0,i.join)(c,"local-packages",d);return"string"==typeof a?b:{...a,source:b}}return a});if(p){let a={...f,packages:q};(0,l.$)(b,JSON.stringify(a,null,2)),e.restored.push("settings.json (packages paths)"),e.needsRestart.push("settings.json (packages paths)")}for(let a of h.map(a=>"string"==typeof a?a:a?.source).filter(a=>"string"==typeof a&&a.startsWith("npm:")))e.restored.push(`npm package ${a} (queued for reinstall)`)}if(f.has("mcp")){let b=v(a.servers,a.binScripts);e.warnings.push(...b.warnings);let d=n((0,i.join)(c,"mcp.json"))??{},f={};for(let d of b.servers){if(h.has(d.name))continue;if("manual"===d.action){e.manual.push({server:d.name,message:d.reason??"cannot be adapted automatically"});continue}let b=a.servers[d.name]??{},j=q(b);if(f[d.name]={...j,command:d.adapted?.command??j.command,...d.adapted?{args:d.adapted.args}:{}},"restore-script"===d.action){let b=(0,i.basename)((0,k.A0)(String(d.adapted?.command??""))),f=a.binScripts.get(b);if(f&&w(b)&&x(f)){let a=(0,i.join)(c,"bin",b);(0,g.mkdirSync)((0,i.dirname)(a),{recursive:!0}),(0,l.$)(a,f.toString("utf8"));try{(0,g.chmodSync)(a,493)}catch{}e.restored.push(`bin/${b}`)}else e.warnings.push(`bin script ${b} not restored (unsafe name or content)`)}if("generate-cmd"===d.action){let b=(0,i.basename)((0,k.A0)(String(d.adapted?.command??""))).replace(/\.cmd$/,""),f=a.binScripts.get(b);if(f&&w(b)&&x(f)){let a=(0,i.join)(c,"bin",b);(0,g.mkdirSync)((0,i.dirname)(a),{recursive:!0}),(0,l.$)(a,f.toString("utf8"));let d=(0,i.join)(c,"bin",`${b}.cmd`),h=`%~dp0${b}`;(0,l.$)(d,`@node "${h}" %*\r
|
|
1
|
+
exports.id=7915,exports.ids=[7915],exports.modules={8102:(a,b,c)=>{"use strict";c.d(b,{$:()=>g});var d=c(55511),e=c(29021),f=c(33873);function g(a,b){let c=(0,f.dirname)(a),g=(0,f.join)(c,`.${(0,f.basename)(a)}-${(0,d.randomUUID)()}.tmp`),h=!1;try{(0,e.writeFileSync)(g,b,{encoding:"utf8",flag:"wx",mode:384,flush:!0}),(0,e.renameSync)(g,a)}catch(a){throw h=!0,a}finally{try{(0,e.unlinkSync)(g)}catch(a){if("ENOENT"!==a.code&&!h)throw a}}}},39006:a=>{"use strict";a.exports=JSON.parse('{"name":"@qt4798/pi-web","version":"0.17.9","description":"Web workspace for the pi coding agent","homepage":"https://github.com/t479842598/pi-web-QT#readme","repository":{"type":"git","url":"git+https://github.com/t479842598/pi-web-QT.git"},"bugs":{"url":"https://github.com/t479842598/pi-web-QT/issues"},"license":"MIT","engines":{"node":">=22.19.0"},"bin":{"pi-web":"bin/pi-web.js"},"files":["bin",".next","!.next/cache","!.next/dev","!.next/standalone","!.next/**/*.js.map","lib/theme","public","next.config.ts","package.json"],"scripts":{"dev":"node bin/fix-pi-agent-undici.js && node bin/with-memory-limit.js node_modules/.bin/next dev -H 127.0.0.1 -p 0 --turbopack","dev:lan":"node bin/fix-pi-agent-undici.js && node bin/with-memory-limit.js node_modules/.bin/next dev -H 0.0.0.0 -p 0 --turbopack","postinstall":"node bin/prepare-terminal.js","theme:css":"node scripts/generate-theme-css.mjs","prebuild":"node scripts/generate-theme-css.mjs","build":"env -u TURBOPACK -u __NEXT_PRIVATE_STANDALONE_CONFIG next build --webpack","bundle:backend":"node scripts/bundle-backend.mjs","start":"node bin/fix-pi-agent-undici.js && node bin/with-memory-limit.js node_modules/.bin/next start -H 127.0.0.1 -p 0","start:lan":"node bin/fix-pi-agent-undici.js && node bin/with-memory-limit.js node_modules/.bin/next start -H 0.0.0.0 -p 0","lint":"eslint .","release":"npm version patch --no-git-tag-version && npm run build && npm publish --access public","test":"node --experimental-strip-types --test $(find app components hooks lib -name \'*.test.mjs\' -print)","test:e2e":"node e2e/run.mjs","test:terminal":"node e2e/terminal.mjs"},"dependencies":{"@earendil-works/pi-agent-core":"0.85.1","@earendil-works/pi-ai":"0.85.1","@earendil-works/pi-coding-agent":"0.85.1","@earendil-works/pi-tui":"0.85.1","@fontsource/ia-writer-quattro":"^5.3.0","@fontsource/lilex":"^5.3.0","@phosphor-icons/react":"^2.1.10","@tanstack/react-virtual":"^3.14.9","@tauri-apps/api":"^2.11.1","@types/react-syntax-highlighter":"^15.5.13","@xterm/addon-fit":"0.11.0","@xterm/xterm":"6.0.0","adm-zip":"^0.6.0","ansi_up":"^6.0.6","js-yaml":"^5.2.3","katex":"^0.16.47","lucide-react":"^1.37.0","mammoth":"^1.12.0","mermaid":"^11.14.0","next":"16.3.1","node-pty":"1.1.0","proper-lockfile":"4.1.2","qrcode":"^1.5.4","react":"^19.2.4","react-dom":"^19.2.4","react-markdown":"^10.1.0","react-syntax-highlighter":"^16.1.1","rehype-katex":"^7.0.1","rehype-raw":"^7.0.0","rehype-sanitize":"^6.0.0","remark-frontmatter":"^5.0.0","remark-gfm":"^4.0.1","remark-math":"^6.0.0","semver":"7.8.0","undici":"^8.10.0"},"overrides":{"undici":"^8.10.0","@earendil-works/pi-coding-agent":{"undici":"^8.10.0"},"intersection-observer":"npm:noop2@2.0.0","node-domexception":"npm:@profoundlogic/node-domexception@1.0.2"},"allowScripts":{"@google/genai@1.52.0":true,"protobufjs@7.6.5":true,"sharp@0.34.5":true,"unrs-resolver@1.12.2":true},"devDependencies":{"@resvg/resvg-js":"^2.6.2","@tailwindcss/postcss":"^4.2.2","@types/js-yaml":"^4.0.9","@types/node":"^25","@types/proper-lockfile":"4.1.4","@types/qrcode":"^1.5.6","@types/react":"^19","@types/react-dom":"^19","@types/semver":"7.8.0","eslint":"^9.39.5","eslint-config-next":"16.3.1","jiti":"^2.7.0","lightningcss":"^1.33.0","playwright":"^1.63.0","postcss":"^8","tailwindcss":"^4.2.2","to-ico":"^1.1.5","typescript":"^5.9.3"}}')},50593:(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})},66544:(a,b,c)=>{"use strict";c.d(b,{E2:()=>l,EN:()=>k});var d=c(77030);function e(a){return(a.startsWith("[")&&a.endsWith("]")?a.slice(1,-1):a).toLowerCase().replace(/\.$/,"")}function f(a){if(!a||/[\s/@\\]/.test(a))return null;try{let b=new URL(`http://${a}`);if(b.username||b.password||"/"!==b.pathname||b.search||b.hash)return null;return e(b.hostname)}catch{return null}}function g(a){if(!a||/[\s/@\\]/.test(a))return null;try{let b=new URL(`http://${a}`);if(b.username||b.password||"/"!==b.pathname||b.search||b.hash)return null;let c=e(b.hostname);return b.port?`${c}:${b.port}`:c}catch{return null}}function h(){return[process.env.PI_WEB_HOSTNAME,...process.env.PI_WEB_ALLOWED_HOSTS?.split(",")??[]].filter(a=>!!a?.trim())}function i(a){try{return new URL(a).origin}catch{return null}}let j=new Set(["POST","PUT","PATCH","DELETE"]);function k(a,b=h()){if(!function(a,b=h()){let c=a.headers.get("host"),g=c?f(c):null;return!!g&&(!!("localhost"===g||g.endsWith(".localhost")||(0,d.isIP)(g))||b.some(a=>{let b;return((b=a?.trim())?(0,d.isIP)(b)?e(b):f(b):null)===g}))}(a,b))return!1;if(function(a){if("GET"!==a.method||"navigate"!==a.headers.get("sec-fetch-mode")||"document"!==a.headers.get("sec-fetch-dest")||"?1"!==a.headers.get("sec-fetch-user"))return!1;try{return/^\/api\/sessions\/[^/]+\/export$/.test(new URL(a.url).pathname)}catch{return!1}}(a))return!0;if(!(a.headers.has("origin")||a.headers.has("sec-fetch-site"))){if(j.has((a.method??"GET").toUpperCase())){let b=a.headers.get("host"),c=b?f(b):null;return null!==c&&!!("localhost"===c||c.endsWith(".localhost")||/^127\./.test(c)||"::1"===c||"[::1]"===c)}return!0}return function(a){let b,c,d;if("cross-site"===a.headers.get("sec-fetch-site"))return!1;let e=a.headers.get("origin");if(!e)return!0;let f=(b=new URL(a.url),(c=a.headers.get("host"))?i(`${b.protocol}//${c}`):null);if(null!==f&&(i(e)===f||function(a,b){let c,d;try{c=new URL(a),d=new URL(b)}catch{return!1}if(c.protocol!==d.protocol||c.hostname.toLowerCase()!==d.hostname.toLowerCase())return!1;if(!c.port)return!0;let e=d.port||("https:"===d.protocol?"443":"80");return c.port===e}(e,f)))return!0;if("same-origin"!==a.headers.get("sec-fetch-site")||!a.headers.get("x-forwarded-proto"))return!1;let h=a.headers.get("host");if(!h)return!1;try{d=new URL(e).host}catch{return!1}let j=g(d);return null!==j&&j===g(h)}(a)}function l(a){let b=a.headers.get("content-type")?.split(";",1)[0]?.trim().toLowerCase();return"application/json"===b||!!(b?.startsWith("application/")&&b.endsWith("+json"))}},78335:()=>{},89628:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{DT:()=>y,dH:()=>A,g3:()=>z,jE:()=>v,lz:()=>B,uj:()=>t});var e=c(26106),f=c.n(e),g=c(29021),h=c(21820),i=c(33873),j=c(75430),k=c(50593),l=c(8102),m=a([j]);j=(m.then?(await m)():m)[0];let D="pi-backup",E="${agentDir}",F="${home}";function n(a){if(!(0,g.existsSync)(a))return null;try{let b=JSON.parse((0,g.readFileSync)(a,"utf8"));return null!==b&&"object"==typeof b?b:null}catch{return null}}function o(a){let b=[],c=[""];for(;c.length>0;){let d,e=c.pop(),f=(0,i.join)(a,e);try{d=(0,g.readdirSync)(f)}catch{continue}for(let a of d){let d;if("node_modules"===a||".git"===a)continue;let h=e?`${e}/${a}`:a,j=(0,i.join)(f,a);try{d=(0,g.statSync)(j)}catch{continue}d.isDirectory()?c.push(h):d.isFile()&&b.push(h)}}return b}function p(a){let b=(0,k.A0)((0,j.getAgentDir)()),c=(0,k.A0)((0,h.homedir)());return r(a,a=>{let d=(0,k.A0)(a);return d===b?E:d===c?F:d.startsWith(b+"/")?E+d.slice(b.length):d.startsWith(c+"/")?F+d.slice(c.length):a})}function q(a){let b=(0,j.getAgentDir)(),c=(0,h.homedir)();return r(a,a=>a===E?b:a===F?c:a.startsWith(E+"/")?(0,i.join)(b,...a.slice(E.length+1).split("/")):a.startsWith(F+"/")?(0,i.join)(c,...a.slice(F.length+1).split("/")):a)}function r(a,b){if("string"==typeof a)return b(a);if(Array.isArray(a))return a.map(a=>r(a,b));if(null!==a&&"object"==typeof a){let c={};for(let[d,e]of Object.entries(a))c[d]=r(e,b);return c}return a}function s(a,b,c){a.addFile(`${D}/${b}`,Buffer.isBuffer(c)?c:Buffer.from(c,"utf8"))}function t(a){let b=(0,j.getAgentDir)(),d=new(f()),e={formatVersion:1,createdAt:new Date().toISOString(),...function(){try{return{piWebVersion:c(39006).version??"unknown",piSdkVersion:"unknown"}}catch{return{piWebVersion:"unknown",piSdkVersion:"unknown"}}}(),sourcePlatform:process.platform,includeSecrets:a.includeSecrets,includeSessions:a.includeSessions,files:[],mcpBinScripts:[],localPackages:[],absolutePaths:[],warnings:[]};for(let c of["models.json","auth.json","settings.json","mcp.json","models-store.json","AGENTS.md","APPEND_SYSTEM.md"]){let f=(0,i.join)(b,c);if(!(0,g.existsSync)(f)||"auth.json"===c&&!a.includeSecrets)continue;let h=(0,g.readFileSync)(f,"utf8");if("models.json"!==c||a.includeSecrets){if("settings.json"===c||"mcp.json"===c||"models.json"===c){let a=n(f);a&&(h=JSON.stringify(p(a),null,2))}}else{let a=n(f);a&&(h=JSON.stringify(function(a){let b=a.providers??{},c={};for(let[a,d]of Object.entries(b))c[a]={...d},"string"==typeof c[a].apiKey&&(c[a].apiKey="");return{...a,providers:c}}(a),null,2))}s(d,c,String(h)),e.files.push(`${D}/${c}`)}let h=(0,i.join)(b,"skills");if((0,g.existsSync)(h))for(let a of o(h))d.addFile(`${D}/skills/${a}`,(0,g.readFileSync)((0,i.join)(h,a))),e.files.push(`${D}/skills/${a}`);let l=n((0,i.join)(b,"settings.json"));for(let a of l?.packages??[]){let b="string"==typeof a?a:a?.source;if(!b||b.startsWith("npm:"))continue;let c=(0,k.A0)(b);if((0,i.isAbsolute)(c)&&(0,g.existsSync)(c)){let a=(0,i.basename)(c);for(let b of o(c))d.addFile(`${D}/local-packages/${a}/${b}`,(0,g.readFileSync)((0,i.join)(c,b))),e.files.push(`${D}/local-packages/${a}/${b}`);e.localPackages.push(a)}else e.warnings.push(`Local package skipped (not found or not absolute): ${b}`)}let m=n((0,i.join)(b,"mcp.json")),q=new Set;if(m?.mcpServers)for(let a of Object.values(m.mcpServers))!function a(b,c){if("string"==typeof b){let a=`${E}/bin/`;if(b.startsWith(a)){let d=b.slice(a.length).split("/")[0];d&&c.add(d)}return}if(Array.isArray(b)){for(let d of b)a(d,c);return}if(null!==b&&"object"==typeof b)for(let d of Object.values(b))a(d,c)}(p(a),q);for(let a of q){let c=(0,i.join)(b,"bin",a);(0,g.existsSync)(c)&&(0,g.statSync)(c).isFile()?(d.addFile(`${D}/bin/${a}`,(0,g.readFileSync)(c)),e.files.push(`${D}/bin/${a}`),e.mcpBinScripts.push(a)):e.warnings.push(`MCP bin script referenced but missing: ${a}`)}if(a.includeSessions){let a=(0,i.join)(b,"sessions");if((0,g.existsSync)(a))for(let b of o(a))d.addFile(`${D}/sessions/${b}`,(0,g.readFileSync)((0,i.join)(a,b))),e.files.push(`${D}/sessions/${b}`)}return s(d,"manifest.json",JSON.stringify(e,null,2)),d.toBuffer()}let G=new Set(["npx","uvx","node","uv","npm","git","python3","python","bun","deno"]);function u(a){let b=a.toString("utf8",0,256).split(/\r?\n/,1)[0]??"";return b.startsWith("#!")?b:null}function v(a,b,c){let d=(0,j.getAgentDir)(),e=c??process.platform,f="win32"===e,g=[],h=[];for(let[c,j]of Object.entries(a)){let a,l=q(j),m="string"==typeof l.command?l.command:"",n=Array.isArray(l.args)?l.args.map(String):[],o={command:m,args:n};if(!m){h.push({name:c,original:o,adapted:null,action:"keep",platform:e});continue}let p=function(a,b){if(!a)return"manual";if((0,k.A0)(a).startsWith((0,k.A0)(b)+"/bin/"))return"restore-script";if(a.includes("/")||a.includes("\\")||a.includes(":"))return"keep-with-warning";let c=a.split(/[\s]/)[0];return G.has(c),"keep"}(m,d),r=null;if("restore-script"===p){let j=(0,i.basename)((0,k.A0)(m)),l=b.get(j);if(!l){r=null,a=`bin script ${j} missing from backup`,h.push({name:c,original:o,adapted:r,action:"manual",platform:e,reason:a,installPrompt:C({name:c,original:o,adapted:r,action:"manual",platform:e,reason:a})});continue}if(!w(j)){a=`bin script name rejected (unsafe): ${j}`;let b={name:c,original:o,adapted:null,action:"manual",platform:e,reason:a};h.push({...b,installPrompt:C(b)}),g.push(`${c}: ${a}`);continue}if(!x(l)){a="bin script content rejected (unrecognized shebang)";let b={name:c,original:o,adapted:null,action:"manual",platform:e,reason:a};h.push({...b,installPrompt:C(b)}),g.push(`${c}: ${a}`);continue}if(f){let b=u(l);if(b&&b.includes("node"))r={command:(0,i.join)(d,"bin",`${j}.cmd`),args:n},h.push({name:c,original:o,adapted:r,action:"generate-cmd",platform:e,reason:(0,i.join)(d,"bin",j)});else{a="bash/other shebang wrapper cannot run on Windows; reinstall or adjust manually";let b={name:c,original:o,adapted:null,action:"manual",platform:e,reason:a};h.push({...b,installPrompt:C(b)}),g.push(`${c}: ${a}`)}}else r={command:(0,i.join)(d,"bin",j),args:n},h.push({name:c,original:o,adapted:r,action:"restore-script",platform:e});continue}if("keep-with-warning"===p){r={command:m,args:n},a="absolute path outside agentDir/bin — verify it exists on this machine",h.push({name:c,original:o,adapted:r,action:"keep-with-warning",platform:e,reason:a}),g.push(`${c}: ${a}`);continue}r={command:m,args:n},h.push({name:c,original:o,adapted:r,action:"keep",platform:e})}return{servers:h,warnings:g}}function w(a){return/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(a)&&!a.includes("..")}function x(a){let b=u(a);if(!b)return!1;let c=b.slice(2).trim().split(/\s+/);if(0===c.length)return!1;let d=c[0],e=d.split("/").pop()??d;return!!["node","bash","sh","python3","python","zsh"].includes(e)||"env"===e&&c.length>1&&["node","bash","sh","python3","python"].includes(c[1].split("/").pop()??"")}function y(a){let b;try{b=new(f())(a)}catch(a){throw Error(`Not a valid zip archive: ${a instanceof Error?a.message:String(a)}`)}let c=b.getEntries(),d=(0,g.mkdtempSync)((0,i.join)((0,h.tmpdir)(),"pi-backup-")),e=(0,i.join)(d,D);(0,g.mkdirSync)(e,{recursive:!0});let j=0,k=0;for(let a of c){if(a.isDirectory)continue;let c=a.entryName.replace(/\\/g,"/");if(!c.startsWith(`${D}/`))throw(0,g.rmSync)(d,{recursive:!0,force:!0}),Error(`Unexpected entry outside ${D}/: ${c}`);let f=(0,i.resolve)(e,c.slice(D.length+1));if(!f.startsWith((0,i.resolve)(e)+i.sep))throw(0,g.rmSync)(d,{recursive:!0,force:!0}),Error(`Path traversal blocked: ${c}`);let h="number"==typeof a.header.size?a.header.size:0;if(j+=h,h>0x20000000||j>0x40000000)throw(0,g.rmSync)(d,{recursive:!0,force:!0}),Error(`Backup archive too large when extracted (entry: ${c})`);(0,g.mkdirSync)((0,i.dirname)(f),{recursive:!0}),b.extractEntryTo(a,(0,i.dirname)(f),!1,!0);let l=(0,g.statSync)(f).size;if(k+=l,l>0x20000000||k>0x40000000)throw(0,g.rmSync)(d,{recursive:!0,force:!0}),Error(`Backup archive too large when extracted (entry: ${c})`)}let l=(0,i.join)(e,"manifest.json");if(!(0,g.existsSync)(l))throw(0,g.rmSync)(d,{recursive:!0,force:!0}),Error("Backup manifest.json missing — not a pi-web backup");let m=n(l);if(!m||1!==m.formatVersion)throw(0,g.rmSync)(d,{recursive:!0,force:!0}),Error(`Unsupported backup format version: ${m?.formatVersion??"unknown"} (expected 1)`);let o=n((0,i.join)(e,"mcp.json"))?.mcpServers??{},p=new Map;for(let a of m.mcpBinScripts??[]){let b=(0,i.join)(e,"bin",a);(0,g.existsSync)(b)&&p.set(a,(0,g.readFileSync)(b))}let q=["core","skills","packages","mcp"];return m.includeSessions&&q.push("sessions"),{manifest:m,tempDir:d,servers:o,binScripts:p,categories:q}}function z(a){(0,g.rmSync)(a.tempDir,{recursive:!0,force:!0})}function A(a,b){let c=(0,j.getAgentDir)(),{manifest:d}=a,e={restored:[],needsRestart:[],manual:[],warnings:[]},f=new Set(b.categories),h=new Set(b.skippedMcpServers),m=b=>{let d=(0,i.join)(c,b),f=(0,i.join)(a.tempDir,D,b);(0,g.existsSync)(f)&&((0,g.mkdirSync)((0,i.dirname)(d),{recursive:!0}),(0,l.$)(d,(0,g.readFileSync)(f,"utf8")),e.restored.push(b))};if(f.has("core"))for(let a of["models.json","auth.json","settings.json","mcp.json","models-store.json","AGENTS.md","APPEND_SYSTEM.md"])("auth.json"!==a||d.includeSecrets)&&(m(a),e.needsRestart.push(a));if(f.has("skills")){let b=(0,i.join)(a.tempDir,D,"skills");if((0,g.existsSync)(b)){for(let a of o(b)){let d=(0,i.join)(c,"skills",a);(0,g.mkdirSync)((0,i.dirname)(d),{recursive:!0}),(0,l.$)(d,(0,g.readFileSync)((0,i.join)(b,a),"utf8"))}e.restored.push("skills/")}}if(f.has("packages")){let b=(0,i.join)(c,"settings.json"),f=n(b)??{},h=f.packages??[],j=d.localPackages??[],m=(0,i.join)(a.tempDir,D,"local-packages");for(let a of j){if(!w(a)){e.warnings.push(`Local package ${a} not restored (unsafe name)`);continue}let b=(0,i.join)(m,a);if(!(0,g.existsSync)(b)){e.warnings.push(`Local package ${a} missing from backup`);continue}let d=(0,i.join)(c,"local-packages",a);for(let a of o(b)){let c=(0,i.join)(d,a);(0,g.mkdirSync)((0,i.dirname)(c),{recursive:!0}),(0,l.$)(c,(0,g.readFileSync)((0,i.join)(b,a),"utf8"))}e.restored.push(`local-packages/${a}`)}let p=!1,q=h.map(a=>{let b="string"==typeof a?a:a?.source;if("string"!=typeof b||b.startsWith("npm:"))return a;let d=(0,i.basename)((0,k.A0)(b));if(j.includes(d)){p=!0;let b=(0,i.join)(c,"local-packages",d);return"string"==typeof a?b:{...a,source:b}}return a});if(p){let a={...f,packages:q};(0,l.$)(b,JSON.stringify(a,null,2)),e.restored.push("settings.json (packages paths)"),e.needsRestart.push("settings.json (packages paths)")}for(let a of h.map(a=>"string"==typeof a?a:a?.source).filter(a=>"string"==typeof a&&a.startsWith("npm:")))e.restored.push(`npm package ${a} (queued for reinstall)`)}if(f.has("mcp")){let b=v(a.servers,a.binScripts);e.warnings.push(...b.warnings);let d=n((0,i.join)(c,"mcp.json"))??{},f={};for(let d of b.servers){if(h.has(d.name))continue;if("manual"===d.action){e.manual.push({server:d.name,message:d.reason??"cannot be adapted automatically"});continue}let b=a.servers[d.name]??{},j=q(b);if(f[d.name]={...j,command:d.adapted?.command??j.command,...d.adapted?{args:d.adapted.args}:{}},"restore-script"===d.action){let b=(0,i.basename)((0,k.A0)(String(d.adapted?.command??""))),f=a.binScripts.get(b);if(f&&w(b)&&x(f)){let a=(0,i.join)(c,"bin",b);(0,g.mkdirSync)((0,i.dirname)(a),{recursive:!0}),(0,l.$)(a,f.toString("utf8"));try{(0,g.chmodSync)(a,493)}catch{}e.restored.push(`bin/${b}`)}else e.warnings.push(`bin script ${b} not restored (unsafe name or content)`)}if("generate-cmd"===d.action){let b=(0,i.basename)((0,k.A0)(String(d.adapted?.command??""))).replace(/\.cmd$/,""),f=a.binScripts.get(b);if(f&&w(b)&&x(f)){let a=(0,i.join)(c,"bin",b);(0,g.mkdirSync)((0,i.dirname)(a),{recursive:!0}),(0,l.$)(a,f.toString("utf8"));let d=(0,i.join)(c,"bin",`${b}.cmd`),h=`%~dp0${b}`;(0,l.$)(d,`@node "${h}" %*\r
|
|
2
2
|
`),e.restored.push(`bin/${b}`,`bin/${b}.cmd`)}else e.warnings.push(`bin script ${b} not restored (unsafe name or content)`)}}(0,l.$)((0,i.join)(c,"mcp.json"),JSON.stringify({...d,mcpServers:f},null,2)),e.restored.push("mcp.json"),e.needsRestart.push("mcp.json")}return{report:e,npmPackages:B(a)}}function B(a){let b=n((0,i.join)(a.tempDir,D,"settings.json"));return(b?.packages??[]).map(a=>"string"==typeof a?a:a?.source).filter(a=>"string"==typeof a&&a.startsWith("npm:"))}function C(a){let b=(0,j.getAgentDir)(),c="win32"===process.platform?"Windows":"darwin"===process.platform?"macOS":"Linux",d=JSON.stringify(a.original,null,2);return[`请在当前环境(${c})安装 MCP server「${a.name}」。`,"\n## 原始配置(来自备份)\n```json",d,"```\n\n## 统一安装约定",`- 脚本类工具统一安装到 \`${(0,i.join)(b,"bin")}\`(Windows 上同时生成同名 \`.cmd\` 包装)。`,`- npm 类工具统一通过 \`npx <pkg>\` 运行,或安装到 \`${(0,i.join)(b,"npm")}\` 后引用。`,"- 依赖(node/npx/uv 等)统一从 PATH 解析,不要硬编码本机绝对路径。\n- 安装完成后,输出可直接写入 `~/.pi/agent/mcp.json` 的完整 server 配置片段(含 command/args/transport/lifecycle)。\n- 不要修改 mcp.json 中其它 server 的配置。\n\n安装过程中如遇障碍,请说明原因并给出替代方案。"].join("\n")}d()}catch(a){d(a)}})},96487:()=>{}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var a={};a.id=6183,a.ids=[6183],a.modules={643:a=>{a.exports=require("node:perf_hooks")},4573:a=>{a.exports=require("node:buffer")},4984:a=>{a.exports=require("readline")},12412:a=>{a.exports=require("assert")},16698:a=>{a.exports=require("node:async_hooks")},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},28802:a=>{a.exports=import("@earendil-works/pi-ai")},29021:a=>{a.exports=require("fs")},29862:a=>{a.exports=import("@earendil-works/pi-tui")},31421:a=>{a.exports=require("node:child_process")},32467:a=>{a.exports=require("node:http2")},33873:a=>{a.exports=require("path")},34589:a=>{a.exports=require("node:assert")},37067:a=>{a.exports=require("node:http")},37540:a=>{a.exports=require("node:console")},37830:a=>{a.exports=require("node:stream/web")},38522:a=>{a.exports=require("node:zlib")},40610:a=>{a.exports=require("node:dns")},41692:a=>{a.exports=require("node:tls")},41792:a=>{a.exports=require("node:querystring")},51455:a=>{a.exports=require("node:fs/promises")},53053:a=>{a.exports=require("node:diagnostics_channel")},53861:(a,b,c)=>{async function d(){let{readProxyConfig:a,applyProxyEnv:b}=await c.e(2834).then(c.bind(c,12834));b(a());let{configureHttpDispatcher:d}=await c.e(2349).then(c.bind(c,42349));d();try{let{ensureTaskEngine:a}=await c.e(4253).then(c.bind(c,14253));a()}catch{}}c.r(b),c.d(b,{register:()=>d})},55511:a=>{a.exports=require("crypto")},57075:a=>{a.exports=require("node:stream")},57975:a=>{a.exports=require("node:util")},73024:a=>{a.exports=require("node:fs")},73136:a=>{a.exports=require("node:url")},73429:a=>{a.exports=require("node:util/types")},75430:a=>{a.exports=import("@earendil-works/pi-coding-agent")},75919:a=>{a.exports=require("node:worker_threads")},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},78474:a=>{a.exports=require("node:events")},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},80099:a=>{a.exports=require("node:sqlite")},80481:a=>{a.exports=require("node:readline")},81115:a=>{a.exports=require("constants")},87997:a=>{a.exports=require("node:timers")},94735:a=>{a.exports=require("events")}};var b=require("./webpack-runtime.js");b.C(a);var c=b(b.s=53861);module.exports=c})();
|
|
1
|
+
"use strict";(()=>{var a={};a.id=6183,a.ids=[6183],a.modules={643:a=>{a.exports=require("node:perf_hooks")},4573:a=>{a.exports=require("node:buffer")},4984:a=>{a.exports=require("readline")},12412:a=>{a.exports=require("assert")},16698:a=>{a.exports=require("node:async_hooks")},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},28802:a=>{a.exports=import("@earendil-works/pi-ai")},29021:a=>{a.exports=require("fs")},29862:a=>{a.exports=import("@earendil-works/pi-tui")},31421:a=>{a.exports=require("node:child_process")},32467:a=>{a.exports=require("node:http2")},33873:a=>{a.exports=require("path")},34589:a=>{a.exports=require("node:assert")},37067:a=>{a.exports=require("node:http")},37540:a=>{a.exports=require("node:console")},37830:a=>{a.exports=require("node:stream/web")},38522:a=>{a.exports=require("node:zlib")},40610:a=>{a.exports=require("node:dns")},41692:a=>{a.exports=require("node:tls")},41792:a=>{a.exports=require("node:querystring")},51455:a=>{a.exports=require("node:fs/promises")},53053:a=>{a.exports=require("node:diagnostics_channel")},53861:(a,b,c)=>{async function d(){let{readProxyConfig:a,applyProxyEnv:b}=await c.e(2834).then(c.bind(c,12834));b(a());let{configureHttpDispatcher:d}=await c.e(2349).then(c.bind(c,42349));d();try{let{ensureTaskEngine:a}=await c.e(4253).then(c.bind(c,14253));a()}catch{}try{let{ensureRelayClient:a}=await c.e(4154).then(c.bind(c,94154));a()}catch{}}c.r(b),c.d(b,{register:()=>d})},55511:a=>{a.exports=require("crypto")},57075:a=>{a.exports=require("node:stream")},57975:a=>{a.exports=require("node:util")},73024:a=>{a.exports=require("node:fs")},73136:a=>{a.exports=require("node:url")},73429:a=>{a.exports=require("node:util/types")},75430:a=>{a.exports=import("@earendil-works/pi-coding-agent")},75919:a=>{a.exports=require("node:worker_threads")},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},78474:a=>{a.exports=require("node:events")},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},80099:a=>{a.exports=require("node:sqlite")},80481:a=>{a.exports=require("node:readline")},81115:a=>{a.exports=require("constants")},87997:a=>{a.exports=require("node:timers")},94735:a=>{a.exports=require("events")}};var b=require("./webpack-runtime.js");b.C(a);var c=b(b.s=53861);module.exports=c})();
|