pi-yun 0.2.2 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +17 -16
- package/.next/build-manifest.json +3 -3
- package/.next/prerender-manifest.json +4 -4
- 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 +5 -5
- package/.next/server/app/_not-found.segments/_full.segment.rsc +5 -5
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -5
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +4 -4
- package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
- package/.next/server/app/api/agent/[id]/events/route.js +1 -3
- package/.next/server/app/api/agent/[id]/events/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/[id]/lease/route.js +1 -1
- package/.next/server/app/api/agent/[id]/lease/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/[id]/route.js +1 -1
- package/.next/server/app/api/agent/debug/route.js +1 -0
- package/.next/server/app/api/agent/debug/route.js.nft.json +1 -0
- package/.next/server/app/api/agent/debug/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/agent/new/route.js +1 -1
- package/.next/server/app/api/agent/running/route.js +1 -1
- package/.next/server/app/api/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/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/cache-miss-notices/route.js +1 -1
- package/.next/server/app/api/cwd/browse/route.js +1 -1
- package/.next/server/app/api/cwd/browse/route.js.nft.json +2 -2
- package/.next/server/app/api/cwd/validate/route.js +1 -1
- package/.next/server/app/api/cwd/validate/route.js.nft.json +2 -2
- package/.next/server/app/api/default-cwd/route.js +1 -1
- package/.next/server/app/api/file-index/route.js +1 -1
- package/.next/server/app/api/files/[...path]/route.js +3 -3
- package/.next/server/app/api/git/diff/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/mcp/route.js +2 -2
- package/.next/server/app/api/mcp/sign-in/[flowId]/route.js +1 -1
- package/.next/server/app/api/mcp/sign-in/route.js +1 -1
- package/.next/server/app/api/mcp/test/route.js +1 -1
- package/.next/server/app/api/models/default/route.js +1 -1
- package/.next/server/app/api/models/default/route.js.nft.json +2 -2
- package/.next/server/app/api/models/enabled/route.js +1 -1
- package/.next/server/app/api/models/enabled/route.js.nft.json +2 -2
- package/.next/server/app/api/models/refresh/route.js +1 -1
- package/.next/server/app/api/models/route.js +1 -1
- package/.next/server/app/api/models-config/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/open-in-explorer/route.js +1 -1
- package/.next/server/app/api/plugins/check/route.js +1 -1
- package/.next/server/app/api/plugins/route.js +1 -1
- package/.next/server/app/api/project-trust/route.js +1 -1
- package/.next/server/app/api/provider-usage/query/route.js +1 -1
- package/.next/server/app/api/push/config/route.js +1 -1
- package/.next/server/app/api/push/subscribe/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/auto-name/route.js +2 -2
- package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/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]/fork/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/delete/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/sessions/stats/route.js +1 -1
- package/.next/server/app/api/sessions/ui-state/route.js +1 -1
- package/.next/server/app/api/skills/check/route.js +1 -1
- package/.next/server/app/api/skills/content/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/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/terminal/[id]/events/route.js +3 -3
- 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/tools/settings/route.js +1 -1
- package/.next/server/app/api/web-auth/route.js +1 -1
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/favicon.ico/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +7 -7
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +7 -7
- package/.next/server/app/index.segments/_full.segment.rsc +7 -7
- package/.next/server/app/index.segments/_tree.segment.rsc +4 -4
- package/.next/server/app/login/page.js +3 -3
- package/.next/server/app/login/page.js.nft.json +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +1 -1
- package/.next/server/app/login.rsc +6 -6
- package/.next/server/app/login.segments/_full.segment.rsc +6 -6
- package/.next/server/app/login.segments/_tree.segment.rsc +4 -4
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +6 -6
- package/.next/server/app/manifest.webmanifest/route.js +2 -2
- package/.next/server/app/page.js +852 -59
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/pet-preview/page.js +1 -1
- package/.next/server/app/pet-preview/page.js.nft.json +1 -1
- package/.next/server/app/pet-preview/page_client-reference-manifest.js +1 -1
- package/.next/server/app/pet-preview.html +1 -1
- package/.next/server/app/pet-preview.rsc +6 -6
- package/.next/server/app/pet-preview.segments/_full.segment.rsc +6 -6
- package/.next/server/app/pet-preview.segments/_tree.segment.rsc +4 -4
- package/.next/server/app/pet-preview.segments/pet-preview/__PAGE__.segment.rsc +6 -6
- package/.next/server/app-paths-manifest.json +17 -16
- package/.next/server/chunks/1207.js +1 -1
- package/.next/server/chunks/1906.js +1 -1
- package/.next/server/chunks/2243.js +1 -1
- package/.next/server/chunks/27.js +1 -1
- package/.next/server/chunks/3371.js +1 -0
- package/.next/server/chunks/3374.js +2 -2
- package/.next/server/chunks/3757.js +1 -1
- package/.next/server/chunks/3824.js +1 -1
- package/.next/server/chunks/4698.js +1 -1
- package/.next/server/chunks/5582.js +3 -3
- package/.next/server/chunks/6429.js +9 -9
- package/.next/server/chunks/7365.js +1 -1
- package/.next/server/chunks/8177.js +1 -0
- package/.next/server/chunks/8781.js +3 -0
- package/.next/server/functions-config-manifest.json +1 -0
- package/.next/server/instrumentation.js +1 -1
- package/.next/server/instrumentation.js.nft.json +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware.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/1278-924fb78593d04d55.js +1 -0
- package/.next/static/chunks/{9932-60e21347ba9f8664.js → 4908-bc77348603c9c216.js} +2 -2
- package/.next/static/chunks/app/_global-error/{page-cbe4231fb889bdce.js → page-aea014bebc656830.js} +1 -1
- package/.next/static/chunks/app/api/agent/[id]/bash-output/{route-cbe4231fb889bdce.js → route-aea014bebc656830.js} +1 -1
- package/.next/static/chunks/app/api/agent/[id]/events/{route-cbe4231fb889bdce.js → route-aea014bebc656830.js} +1 -1
- package/.next/static/chunks/app/api/agent/[id]/lease/{route-cbe4231fb889bdce.js → route-aea014bebc656830.js} +1 -1
- package/.next/static/chunks/app/api/agent/[id]/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/agent/debug/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/agent/new/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/agent/running/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/app-update/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/auth/login/[provider]/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/auth/providers/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/cache-miss-notices/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/cwd/browse/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/cwd/validate/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/default-cwd/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/file-index/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/files/[...path]/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/git/diff/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/git/status/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/home/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/mcp/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/mcp/sign-in/[flowId]/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/mcp/sign-in/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/mcp/test/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/models/default/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/models/enabled/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/models/refresh/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/models/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/models-config/catalog/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/models-config/discover/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/models-config/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/models-config/test/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/open-in-explorer/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/plugins/check/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/plugins/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/project-trust/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/provider-usage/query/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/push/config/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/push/subscribe/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/context/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/export/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/fork/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/state/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/sessions/delete/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/sessions/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/sessions/search/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/sessions/stats/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/sessions/ui-state/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/skills/check/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/skills/content/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/skills/install/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/skills/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/skills/search/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/skills/update/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/subagents/[id]/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/subagents/profiles/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/subagents/settings/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/terminal/[id]/events/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/terminal/[id]/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/terminal/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/tools/settings/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/web-auth/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/layout-fd458f024053777b.js +1 -0
- package/.next/static/chunks/app/manifest.webmanifest/route-aea014bebc656830.js +1 -0
- package/.next/static/chunks/app/page-d2c786f63d634b03.js +1022 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-aea014bebc656830.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-aea014bebc656830.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-aea014bebc656830.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-aea014bebc656830.js +1 -0
- package/.next/static/chunks/{webpack-03add08f717df51e.js → webpack-98cb88af9c517ce2.js} +1 -1
- package/.next/static/css/0e52953f40c91a8b.css +1 -0
- package/.next/static/css/11d43ff6e42cbb72.css +1 -0
- package/.next/static/css/bb657b16840154d3.css +1 -0
- package/.next/static/vJWDpddtTSWk_gKxyuTL7/_buildManifest.js +1 -0
- package/.next/trace +8 -8
- package/.next/trace-build +1 -1
- package/.next/types/app/api/agent/debug/route.ts +353 -0
- package/.next/types/routes.d.ts +2 -1
- package/.next/types/validator.ts +9 -0
- package/README.md +2 -1
- package/bin/browser-opener.js +44 -1
- package/bin/network-addresses.js +62 -0
- package/bin/pi-web.js +10 -2
- package/package.json +1 -1
- package/.next/server/chunks/5787.js +0 -1
- package/.next/server/chunks/7492.js +0 -1
- package/.next/static/chunks/1278-d1fbbce2d49aaaee.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/agent/new/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/agent/running/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/app-update/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/auth/login/[provider]/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/auth/providers/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/cache-miss-notices/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/cwd/browse/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/cwd/validate/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/default-cwd/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/file-index/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/files/[...path]/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/git/diff/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/git/status/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/home/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/mcp/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/mcp/sign-in/[flowId]/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/mcp/sign-in/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/mcp/test/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/models/default/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/models/enabled/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/models/refresh/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/models/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/models-config/catalog/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/models-config/discover/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/models-config/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/models-config/test/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/open-in-explorer/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/plugins/check/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/plugins/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/project-trust/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/provider-usage/query/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/push/config/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/push/subscribe/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/context/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/export/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/fork/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/state/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/sessions/delete/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/sessions/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/sessions/search/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/sessions/stats/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/sessions/ui-state/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/skills/check/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/skills/content/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/skills/install/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/skills/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/skills/search/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/skills/update/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/subagents/[id]/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/subagents/profiles/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/subagents/settings/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/terminal/[id]/events/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/terminal/[id]/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/terminal/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/tools/settings/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/web-auth/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/layout-da4ac400e5da80b9.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/app/page-a778cbf1fb8bc4e8.js +0 -229
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-cbe4231fb889bdce.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-cbe4231fb889bdce.js +0 -1
- package/.next/static/css/0ba51581376fe049.css +0 -1
- package/.next/static/css/3d221be0a6116b3b.css +0 -1
- package/.next/static/css/d986dbac15b9ebaa.css +0 -1
- package/.next/static/iyZXp7lQacfoeCqiVEtJ1/_buildManifest.js +0 -1
- /package/.next/static/{iyZXp7lQacfoeCqiVEtJ1 → vJWDpddtTSWk_gKxyuTL7}/_ssgManifest.js +0 -0
package/.next/trace-build
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"run-webpack","duration":
|
|
1
|
+
[{"name":"run-webpack","duration":190069564,"timestamp":2154868451,"id":14,"parentId":1,"tags":{},"startTime":1793411665144,"traceId":"3c396bcea130e180"},{"name":"run-typescript","duration":30994652,"timestamp":2344952167,"id":838,"parentId":1,"tags":{},"startTime":1793411855230,"traceId":"3c396bcea130e180"},{"name":"static-check","duration":9924915,"timestamp":2376080174,"id":841,"parentId":1,"tags":{},"startTime":1793411886357,"traceId":"3c396bcea130e180"},{"name":"static-generation","duration":7034345,"timestamp":2386182852,"id":997,"parentId":1,"tags":{},"startTime":1793411896460,"traceId":"3c396bcea130e180"},{"name":"collect-build-traces","duration":35808098,"timestamp":2386009543,"id":994,"parentId":1,"tags":{},"startTime":1793411896287,"traceId":"3c396bcea130e180"},{"name":"telemetry-flush","duration":51,"timestamp":2421825147,"id":1006,"parentId":1,"tags":{},"startTime":1793411932103,"traceId":"3c396bcea130e180"},{"name":"next-build","duration":267904555,"timestamp":2153920648,"id":1,"tags":{"buildMode":"default","version":"16.3.8","bundler":"webpack","has-custom-webpack-config":"true","use-build-worker":"false"},"startTime":1793411664196,"traceId":"3c396bcea130e180"}]
|
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
// File: D:\yun\pi-web-yun\app\api\agent\debug\route.ts
|
|
2
|
+
import * as entry from '../../../../../../app/api/agent/debug/route.js'
|
|
3
|
+
import type { NextRequest } from 'next/server.js'
|
|
4
|
+
|
|
5
|
+
import type { InstantConfigForTypeCheckInternal, Prefetch } from 'next/dist/build/segment-config/app/app-segment-config.js'
|
|
6
|
+
|
|
7
|
+
type TEntry = typeof import('../../../../../../app/api/agent/debug/route.js')
|
|
8
|
+
|
|
9
|
+
type SegmentParams<T extends Object = any> = T extends Record<string, any>
|
|
10
|
+
? { [K in keyof T]: T[K] extends string ? string | string[] | undefined : never }
|
|
11
|
+
: T
|
|
12
|
+
|
|
13
|
+
// Check that the entry is a valid entry
|
|
14
|
+
checkFields<Diff<{
|
|
15
|
+
GET?: Function
|
|
16
|
+
HEAD?: Function
|
|
17
|
+
OPTIONS?: Function
|
|
18
|
+
POST?: Function
|
|
19
|
+
PUT?: Function
|
|
20
|
+
DELETE?: Function
|
|
21
|
+
PATCH?: Function
|
|
22
|
+
config?: {}
|
|
23
|
+
generateStaticParams?: Function
|
|
24
|
+
instant?: InstantConfigForTypeCheckInternal
|
|
25
|
+
prefetch?: Prefetch
|
|
26
|
+
unstable_dynamicStaleTime?: number
|
|
27
|
+
revalidate?: RevalidateRange<TEntry> | false
|
|
28
|
+
dynamic?: 'auto' | 'force-dynamic' | 'error' | 'force-static'
|
|
29
|
+
dynamicParams?: boolean
|
|
30
|
+
fetchCache?: 'auto' | 'force-no-store' | 'only-no-store' | 'default-no-store' | 'default-cache' | 'only-cache' | 'force-cache'
|
|
31
|
+
/** @deprecated The `preferredRegion` config is deprecated. Remove this export. */
|
|
32
|
+
preferredRegion?: 'auto' | 'global' | 'home' | string | string[]
|
|
33
|
+
runtime?: 'nodejs' | 'experimental-edge' | 'edge'
|
|
34
|
+
maxDuration?: number
|
|
35
|
+
|
|
36
|
+
}, TEntry, ''>>()
|
|
37
|
+
|
|
38
|
+
type RouteContext = { params: Promise<SegmentParams> }
|
|
39
|
+
// Check the prop type of the entry function
|
|
40
|
+
if ('GET' in entry) {
|
|
41
|
+
checkFields<
|
|
42
|
+
Diff<
|
|
43
|
+
ParamCheck<Request | NextRequest>,
|
|
44
|
+
{
|
|
45
|
+
__tag__: 'GET'
|
|
46
|
+
__param_position__: 'first'
|
|
47
|
+
__param_type__: FirstArg<MaybeField<TEntry, 'GET'>>
|
|
48
|
+
},
|
|
49
|
+
'GET'
|
|
50
|
+
>
|
|
51
|
+
>()
|
|
52
|
+
checkFields<
|
|
53
|
+
Diff<
|
|
54
|
+
ParamCheck<RouteContext>,
|
|
55
|
+
{
|
|
56
|
+
__tag__: 'GET'
|
|
57
|
+
__param_position__: 'second'
|
|
58
|
+
__param_type__: SecondArg<MaybeField<TEntry, 'GET'>>
|
|
59
|
+
},
|
|
60
|
+
'GET'
|
|
61
|
+
>
|
|
62
|
+
>()
|
|
63
|
+
|
|
64
|
+
checkFields<
|
|
65
|
+
Diff<
|
|
66
|
+
{
|
|
67
|
+
__tag__: 'GET',
|
|
68
|
+
__return_type__: Response | void | never | Promise<Response | void | never>
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
__tag__: 'GET',
|
|
72
|
+
__return_type__: ReturnType<MaybeField<TEntry, 'GET'>>
|
|
73
|
+
},
|
|
74
|
+
'GET'
|
|
75
|
+
>
|
|
76
|
+
>()
|
|
77
|
+
}
|
|
78
|
+
// Check the prop type of the entry function
|
|
79
|
+
if ('HEAD' in entry) {
|
|
80
|
+
checkFields<
|
|
81
|
+
Diff<
|
|
82
|
+
ParamCheck<Request | NextRequest>,
|
|
83
|
+
{
|
|
84
|
+
__tag__: 'HEAD'
|
|
85
|
+
__param_position__: 'first'
|
|
86
|
+
__param_type__: FirstArg<MaybeField<TEntry, 'HEAD'>>
|
|
87
|
+
},
|
|
88
|
+
'HEAD'
|
|
89
|
+
>
|
|
90
|
+
>()
|
|
91
|
+
checkFields<
|
|
92
|
+
Diff<
|
|
93
|
+
ParamCheck<RouteContext>,
|
|
94
|
+
{
|
|
95
|
+
__tag__: 'HEAD'
|
|
96
|
+
__param_position__: 'second'
|
|
97
|
+
__param_type__: SecondArg<MaybeField<TEntry, 'HEAD'>>
|
|
98
|
+
},
|
|
99
|
+
'HEAD'
|
|
100
|
+
>
|
|
101
|
+
>()
|
|
102
|
+
|
|
103
|
+
checkFields<
|
|
104
|
+
Diff<
|
|
105
|
+
{
|
|
106
|
+
__tag__: 'HEAD',
|
|
107
|
+
__return_type__: Response | void | never | Promise<Response | void | never>
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
__tag__: 'HEAD',
|
|
111
|
+
__return_type__: ReturnType<MaybeField<TEntry, 'HEAD'>>
|
|
112
|
+
},
|
|
113
|
+
'HEAD'
|
|
114
|
+
>
|
|
115
|
+
>()
|
|
116
|
+
}
|
|
117
|
+
// Check the prop type of the entry function
|
|
118
|
+
if ('OPTIONS' in entry) {
|
|
119
|
+
checkFields<
|
|
120
|
+
Diff<
|
|
121
|
+
ParamCheck<Request | NextRequest>,
|
|
122
|
+
{
|
|
123
|
+
__tag__: 'OPTIONS'
|
|
124
|
+
__param_position__: 'first'
|
|
125
|
+
__param_type__: FirstArg<MaybeField<TEntry, 'OPTIONS'>>
|
|
126
|
+
},
|
|
127
|
+
'OPTIONS'
|
|
128
|
+
>
|
|
129
|
+
>()
|
|
130
|
+
checkFields<
|
|
131
|
+
Diff<
|
|
132
|
+
ParamCheck<RouteContext>,
|
|
133
|
+
{
|
|
134
|
+
__tag__: 'OPTIONS'
|
|
135
|
+
__param_position__: 'second'
|
|
136
|
+
__param_type__: SecondArg<MaybeField<TEntry, 'OPTIONS'>>
|
|
137
|
+
},
|
|
138
|
+
'OPTIONS'
|
|
139
|
+
>
|
|
140
|
+
>()
|
|
141
|
+
|
|
142
|
+
checkFields<
|
|
143
|
+
Diff<
|
|
144
|
+
{
|
|
145
|
+
__tag__: 'OPTIONS',
|
|
146
|
+
__return_type__: Response | void | never | Promise<Response | void | never>
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
__tag__: 'OPTIONS',
|
|
150
|
+
__return_type__: ReturnType<MaybeField<TEntry, 'OPTIONS'>>
|
|
151
|
+
},
|
|
152
|
+
'OPTIONS'
|
|
153
|
+
>
|
|
154
|
+
>()
|
|
155
|
+
}
|
|
156
|
+
// Check the prop type of the entry function
|
|
157
|
+
if ('POST' in entry) {
|
|
158
|
+
checkFields<
|
|
159
|
+
Diff<
|
|
160
|
+
ParamCheck<Request | NextRequest>,
|
|
161
|
+
{
|
|
162
|
+
__tag__: 'POST'
|
|
163
|
+
__param_position__: 'first'
|
|
164
|
+
__param_type__: FirstArg<MaybeField<TEntry, 'POST'>>
|
|
165
|
+
},
|
|
166
|
+
'POST'
|
|
167
|
+
>
|
|
168
|
+
>()
|
|
169
|
+
checkFields<
|
|
170
|
+
Diff<
|
|
171
|
+
ParamCheck<RouteContext>,
|
|
172
|
+
{
|
|
173
|
+
__tag__: 'POST'
|
|
174
|
+
__param_position__: 'second'
|
|
175
|
+
__param_type__: SecondArg<MaybeField<TEntry, 'POST'>>
|
|
176
|
+
},
|
|
177
|
+
'POST'
|
|
178
|
+
>
|
|
179
|
+
>()
|
|
180
|
+
|
|
181
|
+
checkFields<
|
|
182
|
+
Diff<
|
|
183
|
+
{
|
|
184
|
+
__tag__: 'POST',
|
|
185
|
+
__return_type__: Response | void | never | Promise<Response | void | never>
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
__tag__: 'POST',
|
|
189
|
+
__return_type__: ReturnType<MaybeField<TEntry, 'POST'>>
|
|
190
|
+
},
|
|
191
|
+
'POST'
|
|
192
|
+
>
|
|
193
|
+
>()
|
|
194
|
+
}
|
|
195
|
+
// Check the prop type of the entry function
|
|
196
|
+
if ('PUT' in entry) {
|
|
197
|
+
checkFields<
|
|
198
|
+
Diff<
|
|
199
|
+
ParamCheck<Request | NextRequest>,
|
|
200
|
+
{
|
|
201
|
+
__tag__: 'PUT'
|
|
202
|
+
__param_position__: 'first'
|
|
203
|
+
__param_type__: FirstArg<MaybeField<TEntry, 'PUT'>>
|
|
204
|
+
},
|
|
205
|
+
'PUT'
|
|
206
|
+
>
|
|
207
|
+
>()
|
|
208
|
+
checkFields<
|
|
209
|
+
Diff<
|
|
210
|
+
ParamCheck<RouteContext>,
|
|
211
|
+
{
|
|
212
|
+
__tag__: 'PUT'
|
|
213
|
+
__param_position__: 'second'
|
|
214
|
+
__param_type__: SecondArg<MaybeField<TEntry, 'PUT'>>
|
|
215
|
+
},
|
|
216
|
+
'PUT'
|
|
217
|
+
>
|
|
218
|
+
>()
|
|
219
|
+
|
|
220
|
+
checkFields<
|
|
221
|
+
Diff<
|
|
222
|
+
{
|
|
223
|
+
__tag__: 'PUT',
|
|
224
|
+
__return_type__: Response | void | never | Promise<Response | void | never>
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
__tag__: 'PUT',
|
|
228
|
+
__return_type__: ReturnType<MaybeField<TEntry, 'PUT'>>
|
|
229
|
+
},
|
|
230
|
+
'PUT'
|
|
231
|
+
>
|
|
232
|
+
>()
|
|
233
|
+
}
|
|
234
|
+
// Check the prop type of the entry function
|
|
235
|
+
if ('DELETE' in entry) {
|
|
236
|
+
checkFields<
|
|
237
|
+
Diff<
|
|
238
|
+
ParamCheck<Request | NextRequest>,
|
|
239
|
+
{
|
|
240
|
+
__tag__: 'DELETE'
|
|
241
|
+
__param_position__: 'first'
|
|
242
|
+
__param_type__: FirstArg<MaybeField<TEntry, 'DELETE'>>
|
|
243
|
+
},
|
|
244
|
+
'DELETE'
|
|
245
|
+
>
|
|
246
|
+
>()
|
|
247
|
+
checkFields<
|
|
248
|
+
Diff<
|
|
249
|
+
ParamCheck<RouteContext>,
|
|
250
|
+
{
|
|
251
|
+
__tag__: 'DELETE'
|
|
252
|
+
__param_position__: 'second'
|
|
253
|
+
__param_type__: SecondArg<MaybeField<TEntry, 'DELETE'>>
|
|
254
|
+
},
|
|
255
|
+
'DELETE'
|
|
256
|
+
>
|
|
257
|
+
>()
|
|
258
|
+
|
|
259
|
+
checkFields<
|
|
260
|
+
Diff<
|
|
261
|
+
{
|
|
262
|
+
__tag__: 'DELETE',
|
|
263
|
+
__return_type__: Response | void | never | Promise<Response | void | never>
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
__tag__: 'DELETE',
|
|
267
|
+
__return_type__: ReturnType<MaybeField<TEntry, 'DELETE'>>
|
|
268
|
+
},
|
|
269
|
+
'DELETE'
|
|
270
|
+
>
|
|
271
|
+
>()
|
|
272
|
+
}
|
|
273
|
+
// Check the prop type of the entry function
|
|
274
|
+
if ('PATCH' in entry) {
|
|
275
|
+
checkFields<
|
|
276
|
+
Diff<
|
|
277
|
+
ParamCheck<Request | NextRequest>,
|
|
278
|
+
{
|
|
279
|
+
__tag__: 'PATCH'
|
|
280
|
+
__param_position__: 'first'
|
|
281
|
+
__param_type__: FirstArg<MaybeField<TEntry, 'PATCH'>>
|
|
282
|
+
},
|
|
283
|
+
'PATCH'
|
|
284
|
+
>
|
|
285
|
+
>()
|
|
286
|
+
checkFields<
|
|
287
|
+
Diff<
|
|
288
|
+
ParamCheck<RouteContext>,
|
|
289
|
+
{
|
|
290
|
+
__tag__: 'PATCH'
|
|
291
|
+
__param_position__: 'second'
|
|
292
|
+
__param_type__: SecondArg<MaybeField<TEntry, 'PATCH'>>
|
|
293
|
+
},
|
|
294
|
+
'PATCH'
|
|
295
|
+
>
|
|
296
|
+
>()
|
|
297
|
+
|
|
298
|
+
checkFields<
|
|
299
|
+
Diff<
|
|
300
|
+
{
|
|
301
|
+
__tag__: 'PATCH',
|
|
302
|
+
__return_type__: Response | void | never | Promise<Response | void | never>
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
__tag__: 'PATCH',
|
|
306
|
+
__return_type__: ReturnType<MaybeField<TEntry, 'PATCH'>>
|
|
307
|
+
},
|
|
308
|
+
'PATCH'
|
|
309
|
+
>
|
|
310
|
+
>()
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
// Check the arguments and return type of the generateStaticParams function
|
|
314
|
+
if ('generateStaticParams' in entry) {
|
|
315
|
+
checkFields<Diff<{ params: SegmentParams }, FirstArg<MaybeField<TEntry, 'generateStaticParams'>>, 'generateStaticParams'>>()
|
|
316
|
+
checkFields<Diff<{ __tag__: 'generateStaticParams', __return_type__: any[] | Promise<any[]> }, { __tag__: 'generateStaticParams', __return_type__: ReturnType<MaybeField<TEntry, 'generateStaticParams'>> }>>()
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
export interface PageProps {
|
|
320
|
+
params?: Promise<SegmentParams>
|
|
321
|
+
searchParams?: Promise<any>
|
|
322
|
+
}
|
|
323
|
+
export interface LayoutProps {
|
|
324
|
+
children?: React.ReactNode
|
|
325
|
+
|
|
326
|
+
params?: Promise<SegmentParams>
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
// =============
|
|
330
|
+
// Utility types
|
|
331
|
+
type RevalidateRange<T> = T extends { revalidate: any } ? NonNegative<T['revalidate']> : never
|
|
332
|
+
|
|
333
|
+
// If T is unknown or any, it will be an empty {} type. Otherwise, it will be the same as Omit<T, keyof Base>.
|
|
334
|
+
type OmitWithTag<T, K extends keyof any, _M> = Omit<T, K>
|
|
335
|
+
type Diff<Base, T extends Base, Message extends string = ''> = 0 extends (1 & T) ? {} : OmitWithTag<T, keyof Base, Message>
|
|
336
|
+
|
|
337
|
+
type FirstArg<T extends Function> = T extends (...args: [infer T, any]) => any ? unknown extends T ? any : T : never
|
|
338
|
+
type SecondArg<T extends Function> = T extends (...args: [any, infer T]) => any ? unknown extends T ? any : T : never
|
|
339
|
+
type MaybeField<T, K extends string> = T extends { [k in K]: infer G } ? G extends Function ? G : never : never
|
|
340
|
+
|
|
341
|
+
type ParamCheck<T> = {
|
|
342
|
+
__tag__: string
|
|
343
|
+
__param_position__: string
|
|
344
|
+
__param_type__: T
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
function checkFields<_ extends { [k in keyof any]: never }>() {}
|
|
348
|
+
|
|
349
|
+
// https://github.com/sindresorhus/type-fest
|
|
350
|
+
type Numeric = number | bigint
|
|
351
|
+
type Zero = 0 | 0n
|
|
352
|
+
type Negative<T extends Numeric> = T extends Zero ? never : `${T}` extends `-${string}` ? T : never
|
|
353
|
+
type NonNegative<T extends Numeric> = T extends Zero ? T : Negative<T> extends never ? T : '__invalid_negative_number__'
|
package/.next/types/routes.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Do not edit this file manually
|
|
3
3
|
|
|
4
4
|
type AppRoutes = "/" | "/login" | "/pet-preview"
|
|
5
|
-
type AppRouteHandlerRoutes = "/api/agent/[id]" | "/api/agent/[id]/bash-output" | "/api/agent/[id]/events" | "/api/agent/[id]/lease" | "/api/agent/new" | "/api/agent/running" | "/api/app-update" | "/api/auth/api-key/[provider]" | "/api/auth/login/[provider]" | "/api/auth/logout/[provider]" | "/api/auth/providers" | "/api/cache-miss-notices" | "/api/cwd/browse" | "/api/cwd/validate" | "/api/default-cwd" | "/api/file-index" | "/api/files/[...path]" | "/api/git/diff" | "/api/git/status" | "/api/home" | "/api/mcp" | "/api/mcp/sign-in" | "/api/mcp/sign-in/[flowId]" | "/api/mcp/test" | "/api/models" | "/api/models-config" | "/api/models-config/catalog" | "/api/models-config/discover" | "/api/models-config/test" | "/api/models/default" | "/api/models/enabled" | "/api/models/refresh" | "/api/open-in-explorer" | "/api/plugins" | "/api/plugins/check" | "/api/project-trust" | "/api/provider-usage/query" | "/api/push/config" | "/api/push/subscribe" | "/api/sessions" | "/api/sessions/[id]" | "/api/sessions/[id]/auto-name" | "/api/sessions/[id]/context" | "/api/sessions/[id]/entries/[entryId]/thinking" | "/api/sessions/[id]/entries/[entryId]/tool-result-image" | "/api/sessions/[id]/export" | "/api/sessions/[id]/fork" | "/api/sessions/[id]/state" | "/api/sessions/delete" | "/api/sessions/search" | "/api/sessions/stats" | "/api/sessions/ui-state" | "/api/skills" | "/api/skills/check" | "/api/skills/content" | "/api/skills/install" | "/api/skills/search" | "/api/skills/update" | "/api/subagents/[id]" | "/api/subagents/profiles" | "/api/subagents/settings" | "/api/terminal" | "/api/terminal/[id]" | "/api/terminal/[id]/events" | "/api/tools/settings" | "/api/web-auth" | "/api/worktrees"
|
|
5
|
+
type AppRouteHandlerRoutes = "/api/agent/[id]" | "/api/agent/[id]/bash-output" | "/api/agent/[id]/events" | "/api/agent/[id]/lease" | "/api/agent/debug" | "/api/agent/new" | "/api/agent/running" | "/api/app-update" | "/api/auth/api-key/[provider]" | "/api/auth/login/[provider]" | "/api/auth/logout/[provider]" | "/api/auth/providers" | "/api/cache-miss-notices" | "/api/cwd/browse" | "/api/cwd/validate" | "/api/default-cwd" | "/api/file-index" | "/api/files/[...path]" | "/api/git/diff" | "/api/git/status" | "/api/home" | "/api/mcp" | "/api/mcp/sign-in" | "/api/mcp/sign-in/[flowId]" | "/api/mcp/test" | "/api/models" | "/api/models-config" | "/api/models-config/catalog" | "/api/models-config/discover" | "/api/models-config/test" | "/api/models/default" | "/api/models/enabled" | "/api/models/refresh" | "/api/open-in-explorer" | "/api/plugins" | "/api/plugins/check" | "/api/project-trust" | "/api/provider-usage/query" | "/api/push/config" | "/api/push/subscribe" | "/api/sessions" | "/api/sessions/[id]" | "/api/sessions/[id]/auto-name" | "/api/sessions/[id]/context" | "/api/sessions/[id]/entries/[entryId]/thinking" | "/api/sessions/[id]/entries/[entryId]/tool-result-image" | "/api/sessions/[id]/export" | "/api/sessions/[id]/fork" | "/api/sessions/[id]/state" | "/api/sessions/delete" | "/api/sessions/search" | "/api/sessions/stats" | "/api/sessions/ui-state" | "/api/skills" | "/api/skills/check" | "/api/skills/content" | "/api/skills/install" | "/api/skills/search" | "/api/skills/update" | "/api/subagents/[id]" | "/api/subagents/profiles" | "/api/subagents/settings" | "/api/terminal" | "/api/terminal/[id]" | "/api/terminal/[id]/events" | "/api/tools/settings" | "/api/web-auth" | "/api/worktrees"
|
|
6
6
|
type PageRoutes = never
|
|
7
7
|
type LayoutRoutes = "/"
|
|
8
8
|
type RedirectRoutes = never
|
|
@@ -16,6 +16,7 @@ interface ParamMap {
|
|
|
16
16
|
"/api/agent/[id]/bash-output": { "id": string; }
|
|
17
17
|
"/api/agent/[id]/events": { "id": string; }
|
|
18
18
|
"/api/agent/[id]/lease": { "id": string; }
|
|
19
|
+
"/api/agent/debug": {}
|
|
19
20
|
"/api/agent/new": {}
|
|
20
21
|
"/api/agent/running": {}
|
|
21
22
|
"/api/app-update": {}
|
package/.next/types/validator.ts
CHANGED
|
@@ -110,6 +110,15 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
|
|
|
110
110
|
type __Unused = __Check
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
+
// Validate ../../app/api/agent/debug/route.ts
|
|
114
|
+
{
|
|
115
|
+
type __IsExpected<Specific extends RouteHandlerConfig<"/api/agent/debug">> = Specific
|
|
116
|
+
const handler = {} as typeof import("../../app/api/agent/debug/route.js")
|
|
117
|
+
type __Check = __IsExpected<typeof handler>
|
|
118
|
+
// @ts-ignore
|
|
119
|
+
type __Unused = __Check
|
|
120
|
+
}
|
|
121
|
+
|
|
113
122
|
// Validate ../../app/api/agent/new/route.ts
|
|
114
123
|
{
|
|
115
124
|
type __IsExpected<Specific extends RouteHandlerConfig<"/api/agent/new">> = Specific
|
package/README.md
CHANGED
|
@@ -65,6 +65,7 @@ For port and hostname, command-line options override the corresponding environme
|
|
|
65
65
|
| `PI_WEB_PASSWORD` | Enable browser password login; API clients may use Basic Auth with username `pi` | Authentication disabled |
|
|
66
66
|
| `PI_WEB_IDLE_TIMEOUT_MS` | Session idle timeout in milliseconds, up to `2147483647`; `0` disables idle shutdown; invalid or out-of-range values use the default | `600000` (10 min) |
|
|
67
67
|
| `PI_WEB_SHUTDOWN_DEADLINE_MS` | How long extensions get to handle `session_shutdown` before a closing session is disposed anyway, in milliseconds up to `2147483647`; `0`, invalid or out-of-range values use the default | `5000` (5 s) |
|
|
68
|
+
| `PI_CODEMODE_MAX_WORKERS` | pi's limit on codemode scripts running at once, shared by every session and subagent in the server; pi's own default is `2`, and pi-web sets `8` when the variable is unset or empty. Each script may use up to 256 MB | `8` |
|
|
68
69
|
|
|
69
70
|
Set `PI_WEB_APP_NAME` before starting the server (for example, `PI_WEB_APP_NAME='Work Pi' pi-web`). After changing it, restart the server to serve the new manifest; no rebuild is required. Updates to the name of an already installed PWA are managed by the browser and are not guaranteed to appear immediately. This does not change the page title or icons.
|
|
70
71
|
|
|
@@ -111,7 +112,7 @@ npx pi-web-yun@latest
|
|
|
111
112
|
|
|
112
113
|
- **Agent data**: Pi Web reads pi data from `~/.pi/agent` by default, including session files under `sessions/<encoded-cwd>/<timestamp>_<uuid>.jsonl`. Set `PI_CODING_AGENT_DIR` to use another pi agent directory.
|
|
113
114
|
- **Filesystem access**: Pi Web must be able to read the agent data directory and the working directories recorded by its sessions. Run Pi Web in the same filesystem environment as pi when sharing existing sessions.
|
|
114
|
-
- **Shared configuration**: the Models panel uses pi's model, settings, and credential storage, so changes are visible to both interfaces.
|
|
115
|
+
- **Shared configuration**: the Models panel uses pi's model, settings, and credential storage, so changes are visible to both interfaces. An open session applies a saved edit of its model when you select the model again.
|
|
115
116
|
- **File access boundary**: the file browser is limited to working directories selected in Pi Web and project or session roots it already knows about; it is not a general filesystem browser.
|
|
116
117
|
- **Git worktrees**: see [Worktrees in Pi Web](./docs/worktrees.md) for switcher visibility, worktree creation, and removal behavior.
|
|
117
118
|
|
package/bin/browser-opener.js
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
4
4
|
const { spawn } = require("child_process");
|
|
5
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
6
|
+
const { getOpenUrl } = require("./run-records");
|
|
7
|
+
|
|
8
|
+
// Next.js prints "Ready" before it has loaded its request handlers, and the
|
|
9
|
+
// first request then also waits out the pi SDK import that instrumentation
|
|
10
|
+
// starts (#964): half a second on macOS, seconds on a slow disk, and a first
|
|
11
|
+
// navigation that outlasts the service worker's 8 s timeout shows
|
|
12
|
+
// offline.html (#1358). Past this limit the browser opens anyway.
|
|
13
|
+
const FIRST_PAGE_TIMEOUT_MS = 30_000;
|
|
14
|
+
const FIRST_PAGE_RETRY_MS = 250;
|
|
5
15
|
|
|
6
16
|
function openInBrowser(url, platform = process.platform) {
|
|
7
17
|
// Avoid `shell: true` to suppress Node.js DEP0190 deprecation
|
|
@@ -31,4 +41,37 @@ function openInBrowser(url, platform = process.platform) {
|
|
|
31
41
|
opener.unref();
|
|
32
42
|
}
|
|
33
43
|
|
|
34
|
-
|
|
44
|
+
// Resolves true once url has answered a GET with any HTTP status and the whole
|
|
45
|
+
// body has arrived, or false when nothing answered within timeoutMs. Never
|
|
46
|
+
// rejects. Redirects are followed: with PI_WEB_PASSWORD, / redirects to /login,
|
|
47
|
+
// the page the browser lands on, and the proxy sends that redirect while the
|
|
48
|
+
// pi SDK import is still running.
|
|
49
|
+
async function waitForFirstPage(url, {
|
|
50
|
+
fetchImpl = fetch,
|
|
51
|
+
timeoutMs = FIRST_PAGE_TIMEOUT_MS,
|
|
52
|
+
retryMs = FIRST_PAGE_RETRY_MS,
|
|
53
|
+
} = {}) {
|
|
54
|
+
const deadline = AbortSignal.timeout(timeoutMs);
|
|
55
|
+
while (!deadline.aborted) {
|
|
56
|
+
try {
|
|
57
|
+
const response = await fetchImpl(url, { signal: deadline });
|
|
58
|
+
// The page has rendered once its body has arrived, not its headers.
|
|
59
|
+
await response.arrayBuffer();
|
|
60
|
+
return true;
|
|
61
|
+
} catch {
|
|
62
|
+
if (!deadline.aborted) await new Promise((resolve) => setTimeout(resolve, retryMs));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// Opens the browser once the server has served its first page, so the
|
|
69
|
+
// browser's own first navigation finds the page route loaded. A wildcard bind
|
|
70
|
+
// is asked on loopback. Port 0 leaves the real port unknown, so that browser
|
|
71
|
+
// opens at once. The launcher exits with Next.js, which ends the wait too.
|
|
72
|
+
function openWhenServing({ hostname, port, url, open = openInBrowser, wait = waitForFirstPage }) {
|
|
73
|
+
const served = port === "0" ? Promise.resolve() : wait(`${getOpenUrl(hostname, port)}/`);
|
|
74
|
+
return served.then(() => open(url));
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
module.exports = { openInBrowser, openWhenServing, waitForFirstPage };
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
4
|
+
const os = require("os");
|
|
5
|
+
|
|
6
|
+
const WILDCARD_HOSTNAMES = new Set(["0.0.0.0", "::", "[::]"]);
|
|
7
|
+
|
|
8
|
+
function isWildcardHostname(hostname) {
|
|
9
|
+
return WILDCARD_HOSTNAMES.has(hostname);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
// An IPv6 wildcard listens dual-stack (Node's default, and Next passes no
|
|
13
|
+
// ipv6Only), so it answers on every IPv4 address too.
|
|
14
|
+
function addressFamilies(hostname) {
|
|
15
|
+
return hostname.includes(":") ? ["IPv4", "IPv6"] : ["IPv4"];
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Addresses another machine can open when the server binds a wildcard address:
|
|
19
|
+
// the wildcard itself routes nowhere, so list this host's interfaces instead.
|
|
20
|
+
function getReachableAddresses(hostname, { interfaces = os.networkInterfaces() } = {}) {
|
|
21
|
+
if (!isWildcardHostname(hostname)) return [];
|
|
22
|
+
const addresses = [];
|
|
23
|
+
for (const family of addressFamilies(hostname)) {
|
|
24
|
+
for (const [name, entries] of Object.entries(interfaces)) {
|
|
25
|
+
for (const entry of entries ?? []) {
|
|
26
|
+
// `internal` covers loopback; a scoped IPv6 address (fe80::/10) needs a
|
|
27
|
+
// zone id, so it cannot be pasted into another machine's browser.
|
|
28
|
+
if (entry.family !== family || entry.internal || entry.scopeid) continue;
|
|
29
|
+
addresses.push({ name, address: entry.address });
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return addresses;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function formatUrl(address, port) {
|
|
37
|
+
const host = address.includes(":") ? `[${address}]` : address;
|
|
38
|
+
return `http://${host}:${port}`;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// The startup block that names each interface and the URL it serves. Empty when
|
|
42
|
+
// there is nothing to add: a concrete bind address, port 0 (the OS picks one we
|
|
43
|
+
// never learn), or no address of the bound family.
|
|
44
|
+
function formatReachableAddresses(hostname, port, options) {
|
|
45
|
+
if (String(port) === "0") return "";
|
|
46
|
+
const addresses = getReachableAddresses(hostname, options);
|
|
47
|
+
if (addresses.length === 0) return "";
|
|
48
|
+
const width = Math.max(...addresses.map(({ name }) => name.length));
|
|
49
|
+
return [
|
|
50
|
+
"Reachable at:",
|
|
51
|
+
...addresses.map(
|
|
52
|
+
({ name, address }) => ` ${name.padEnd(width)} ${formatUrl(address, port)}`,
|
|
53
|
+
),
|
|
54
|
+
].join("\n");
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
module.exports = {
|
|
58
|
+
formatReachableAddresses,
|
|
59
|
+
formatUrl,
|
|
60
|
+
getReachableAddresses,
|
|
61
|
+
isWildcardHostname,
|
|
62
|
+
};
|
package/bin/pi-web.js
CHANGED
|
@@ -24,11 +24,13 @@ const { wireChildProcessLifecycle } = require("./process-lifecycle");
|
|
|
24
24
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
25
25
|
const { rotatePreviewSecrets, getRotationWarning } = require("./rotate-preview-secrets");
|
|
26
26
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
27
|
-
const {
|
|
27
|
+
const { openWhenServing } = require("./browser-opener");
|
|
28
28
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
29
29
|
const { createRunRecordTracker, getOpenUrl, getRunDir } = require("./run-records");
|
|
30
30
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
31
31
|
const { getPackageVersion, runCommand } = require("./pi-web-commands");
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
33
|
+
const { formatReachableAddresses } = require("./network-addresses");
|
|
32
34
|
|
|
33
35
|
let launchOptions;
|
|
34
36
|
try {
|
|
@@ -144,14 +146,20 @@ function startServer({ port, hostname, openBrowser }) {
|
|
|
144
146
|
|
|
145
147
|
let serverReady = false;
|
|
146
148
|
const url = `http://${hostname}:${port}`;
|
|
149
|
+
// Next.js repeats the `-H` value in its own "Network:" line, which a wildcard
|
|
150
|
+
// bind makes unusable; name the interfaces and their addresses instead.
|
|
151
|
+
const reachable = formatReachableAddresses(hostname, port);
|
|
147
152
|
|
|
148
153
|
child.stdout.on("data", (chunk) => {
|
|
149
154
|
const text = chunk.toString();
|
|
150
155
|
process.stdout.write(text);
|
|
151
156
|
if (!serverReady && text.includes("Ready")) {
|
|
152
157
|
serverReady = true;
|
|
158
|
+
if (reachable) process.stdout.write(`${reachable}\n`);
|
|
159
|
+
// The record needs no wait: status, stop and open list a record only
|
|
160
|
+
// once its URL answers. The browser waits for the first page.
|
|
153
161
|
if (port !== "0") runRecord.markReady();
|
|
154
|
-
if (openBrowser)
|
|
162
|
+
if (openBrowser) openWhenServing({ hostname, port, url });
|
|
155
163
|
}
|
|
156
164
|
});
|
|
157
165
|
}
|