@baique/pi-web-sky 0.1.24 → 0.1.26
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 +7 -7
- package/.next/build-manifest.json +3 -3
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.js +6 -6
- package/.next/required-server-files.json +6 -6
- package/.next/routes-manifest.json +6 -6
- 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 +3 -3
- package/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
- 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]/bash-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agent/[id]/events/route.js +2 -2
- package/.next/server/app/api/agent/[id]/events/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agent/[id]/route.js +1 -1
- package/.next/server/app/api/agent/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agent/new/route.js +1 -1
- package/.next/server/app/api/agent/new/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agent/running/route.js +1 -1
- package/.next/server/app/api/agent/running/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app-update/route.js +1 -1
- package/.next/server/app/api/app-update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/all-providers/route.js +1 -1
- package/.next/server/app/api/auth/all-providers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/api-key/[provider]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/login/[provider]/route.js +2 -2
- package/.next/server/app/api/auth/login/[provider]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/logout/[provider]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/providers/route.js +1 -1
- package/.next/server/app/api/auth/providers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/cwd/browse/route.js +1 -1
- package/.next/server/app/api/cwd/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/cwd/validate/route.js +1 -1
- package/.next/server/app/api/cwd/validate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/default-cwd/route.js +1 -1
- package/.next/server/app/api/default-cwd/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/file-index/route.js +1 -1
- package/.next/server/app/api/file-index/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/files/[...path]/route.js +2 -2
- package/.next/server/app/api/files/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/git/diff/route.js +2 -2
- package/.next/server/app/api/git/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/git/status/route.js +1 -1
- package/.next/server/app/api/git/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/home/route.js +1 -1
- package/.next/server/app/api/home/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/route.js +1 -1
- package/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/models/route.js +1 -1
- package/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/models-config/catalog/route.js +1 -1
- package/.next/server/app/api/models-config/catalog/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/models-config/discover/route.js +1 -1
- package/.next/server/app/api/models-config/discover/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/models-config/route.js +1 -1
- package/.next/server/app/api/models-config/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/models-config/test/route.js +1 -1
- package/.next/server/app/api/models-config/test/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/plugins/route.js +1 -1
- package/.next/server/app/api/plugins/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/project-trust/route.js +1 -1
- package/.next/server/app/api/project-trust/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/quota/route.js +1 -0
- package/.next/server/app/api/quota/route.js.nft.json +1 -0
- package/.next/server/app/api/quota/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/[id]/auto-name/route.js +2 -2
- package/.next/server/app/api/sessions/[id]/auto-name/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/context/route_client-reference-manifest.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]/thinking/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/export/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/[id]/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/state/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/[id]/todos/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/route.js +1 -1
- package/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/check/route.js +1 -1
- package/.next/server/app/api/skills/check/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/install/route.js +1 -1
- package/.next/server/app/api/skills/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/route.js +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/search/route.js +1 -1
- package/.next/server/app/api/skills/search/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/update/route.js +1 -1
- package/.next/server/app/api/skills/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/terminal/[id]/events/route.js +2 -2
- package/.next/server/app/api/terminal/[id]/events/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/terminal/[id]/route.js +2 -2
- package/.next/server/app/api/terminal/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/terminal/route.js +2 -2
- package/.next/server/app/api/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/api/worktrees/route_client-reference-manifest.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 +6 -6
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +6 -6
- package/.next/server/app/index.segments/_full.segment.rsc +6 -6
- package/.next/server/app/index.segments/_tree.segment.rsc +3 -3
- package/.next/server/app/manifest.webmanifest/route.js +2 -2
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +8 -8
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +7 -7
- package/.next/server/chunks/2430.js +4 -4
- package/.next/server/chunks/3379.js +1 -1
- package/.next/server/chunks/5582.js +2 -2
- package/.next/server/chunks/6429.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware.js +3 -3
- package/.next/server/next-font-manifest.js +1 -1
- package/.next/server/next-font-manifest.json +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/{tYQYRSabsPhbLX2UX8VmJ → JXWlXHvZ61ltfBNcwrKbc}/_buildManifest.js +1 -1
- package/.next/static/chunks/5362-7d57fb3b2e15c9a1.js +7 -0
- package/.next/static/chunks/app/_global-error/{page-343b3c01fcb26582.js → page-c30a6d7676fbc094.js} +1 -1
- package/.next/static/chunks/app/_not-found/{page-8cea8d8de35f4da4.js → page-af4fe23994cb3d66.js} +1 -1
- package/.next/static/chunks/app/api/agent/[id]/bash-output/{route-343b3c01fcb26582.js → route-c30a6d7676fbc094.js} +1 -1
- package/.next/static/chunks/app/api/agent/[id]/events/{route-343b3c01fcb26582.js → route-c30a6d7676fbc094.js} +1 -1
- package/.next/static/chunks/app/api/agent/[id]/{route-343b3c01fcb26582.js → route-c30a6d7676fbc094.js} +1 -1
- package/.next/static/chunks/app/api/agent/new/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/agent/running/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/app-update/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/auth/all-providers/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/auth/login/[provider]/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/auth/providers/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/cwd/browse/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/cwd/validate/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/default-cwd/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/file-index/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/files/[...path]/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/git/diff/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/git/status/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/home/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/mcp/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/models/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/models-config/catalog/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/models-config/discover/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/models-config/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/models-config/test/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/plugins/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/project-trust/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/quota/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/context/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/export/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/state/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/todos/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/sessions/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/skills/check/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/skills/install/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/skills/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/skills/search/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/skills/update/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/terminal/[id]/events/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/terminal/[id]/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/terminal/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/{layout-ffa4b9ac64cd36aa.js → layout-2eed686149f3aa3f.js} +1 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/page-eebc4d29bf3b422f.js +89 -0
- package/.next/static/chunks/{main-app-dd2385a1a5a588df.js → main-app-b3e8a8d15d83e1f0.js} +1 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/global-error-00a4badaccb388e6.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-c30a6d7676fbc094.js +1 -0
- package/.next/static/css/ad030894558ed286.css +1 -0
- package/.next/static/css/f95c353d561cddaa.css +1 -0
- package/.next/trace +6 -6
- package/.next/trace-build +1 -1
- package/.next/types/app/api/agent/[id]/bash-output/route.ts +1 -1
- package/.next/types/app/api/agent/[id]/events/route.ts +1 -1
- package/.next/types/app/api/agent/[id]/route.ts +1 -1
- package/.next/types/app/api/agent/new/route.ts +1 -1
- package/.next/types/app/api/agent/running/route.ts +1 -1
- package/.next/types/app/api/app-update/route.ts +1 -1
- package/.next/types/app/api/auth/all-providers/route.ts +1 -1
- package/.next/types/app/api/auth/api-key/[provider]/route.ts +1 -1
- package/.next/types/app/api/auth/login/[provider]/route.ts +1 -1
- package/.next/types/app/api/auth/logout/[provider]/route.ts +1 -1
- package/.next/types/app/api/auth/providers/route.ts +1 -1
- package/.next/types/app/api/cwd/browse/route.ts +1 -1
- package/.next/types/app/api/cwd/validate/route.ts +1 -1
- package/.next/types/app/api/default-cwd/route.ts +1 -1
- package/.next/types/app/api/file-index/route.ts +1 -1
- package/.next/types/app/api/files/[...path]/route.ts +1 -1
- package/.next/types/app/api/git/diff/route.ts +1 -1
- package/.next/types/app/api/git/status/route.ts +1 -1
- package/.next/types/app/api/home/route.ts +1 -1
- package/.next/types/app/api/mcp/route.ts +1 -1
- package/.next/types/app/api/models/route.ts +1 -1
- package/.next/types/app/api/models-config/catalog/route.ts +1 -1
- package/.next/types/app/api/models-config/discover/route.ts +1 -1
- package/.next/types/app/api/models-config/route.ts +1 -1
- package/.next/types/app/api/models-config/test/route.ts +1 -1
- package/.next/types/app/api/plugins/route.ts +1 -1
- package/.next/types/app/api/project-trust/route.ts +1 -1
- package/.next/types/app/api/{agent/running/events → quota}/route.ts +3 -3
- package/.next/types/app/api/sessions/[id]/auto-name/route.ts +1 -1
- package/.next/types/app/api/sessions/[id]/context/route.ts +1 -1
- package/.next/types/app/api/sessions/[id]/entries/[entryId]/thinking/route.ts +1 -1
- package/.next/types/app/api/sessions/[id]/export/route.ts +1 -1
- package/.next/types/app/api/sessions/[id]/route.ts +1 -1
- package/.next/types/app/api/sessions/[id]/state/route.ts +1 -1
- package/.next/types/app/api/sessions/[id]/todos/route.ts +1 -1
- package/.next/types/app/api/sessions/route.ts +1 -1
- package/.next/types/app/api/skills/check/route.ts +1 -1
- package/.next/types/app/api/skills/install/route.ts +1 -1
- package/.next/types/app/api/skills/route.ts +1 -1
- package/.next/types/app/api/skills/search/route.ts +1 -1
- package/.next/types/app/api/skills/update/route.ts +1 -1
- package/.next/types/app/api/terminal/[id]/events/route.ts +1 -1
- package/.next/types/app/api/terminal/[id]/route.ts +1 -1
- package/.next/types/app/api/terminal/route.ts +1 -1
- package/.next/types/app/api/worktrees/route.ts +1 -1
- package/.next/types/app/layout.ts +1 -1
- package/.next/types/app/page.ts +1 -1
- package/.next/types/routes.d.ts +2 -2
- package/.next/types/validator.ts +9 -9
- package/README.md +72 -123
- package/package.json +1 -2
- package/public/icons/apple-touch-icon.png +0 -0
- package/public/icons/icon-192.png +0 -0
- package/public/icons/icon-512.png +0 -0
- package/.next/server/app/api/agent/running/events/route.js +0 -3
- package/.next/server/app/api/agent/running/events/route.js.nft.json +0 -1
- package/.next/server/app/api/agent/running/events/route_client-reference-manifest.js +0 -1
- package/.next/static/chunks/4406-5d47a3d34a956b3f.js +0 -7
- package/.next/static/chunks/app/api/agent/new/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/agent/running/events/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/agent/running/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/app-update/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/auth/all-providers/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/auth/login/[provider]/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/auth/providers/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/cwd/browse/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/cwd/validate/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/default-cwd/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/file-index/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/files/[...path]/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/git/diff/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/git/status/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/home/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/mcp/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/models/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/models-config/catalog/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/models-config/discover/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/models-config/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/models-config/test/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/plugins/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/project-trust/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/context/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/export/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/state/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/todos/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/sessions/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/skills/check/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/skills/install/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/skills/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/skills/search/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/skills/update/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/terminal/[id]/events/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/terminal/[id]/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/terminal/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/app/page-82c927d1cc0e7e7c.js +0 -89
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/global-error-be943dcb89867ab9.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-343b3c01fcb26582.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-343b3c01fcb26582.js +0 -1
- package/.next/static/css/6e90300026a8f1d5.css +0 -1
- package/.next/static/css/8c3105d66a2c198b.css +0 -1
- package/README.ja.md +0 -134
- package/README.ru.md +0 -134
- package/README.zh-CN.md +0 -143
- /package/.next/static/{tYQYRSabsPhbLX2UX8VmJ → JXWlXHvZ61ltfBNcwrKbc}/_ssgManifest.js +0 -0
package/README.md
CHANGED
|
@@ -1,179 +1,128 @@
|
|
|
1
|
-
# Pi Web — Sky
|
|
1
|
+
# Pi Web — Sky 皮肤版(@baique/pi-web-sky)
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@baique/pi-web-sky)
|
|
4
4
|
|
|
5
|
-
>
|
|
6
|
-
>
|
|
5
|
+
> 本项目是 [pi-web](https://github.com/earendil-works/pi)(经 [@agegr/pi-web](https://github.com/agegr/pi-web) 二次开发)的独立发行版,MIT 协议。
|
|
6
|
+
> 与 pi 原生发行版共用本机配置与会话文件——浏览器里的界面,pi 内核与全部 `~/.pi/agent` 数据照旧。
|
|
7
7
|
|
|
8
|
-
[
|
|
8
|
+
[pi 编程智能体](https://github.com/earendil-works/pi) 的本地浏览器界面:查找与继续会话、运行智能体、配置模型与资源、浏览项目文件。基于上游分叉,在原生 pi-web 之上重做了视觉与交互,并持续将上游高价值 PR 手工移植回来(见 [文档](docs/upstream-ports.md))。
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
**当前跟踪上游版本:0.8.11**
|
|
11
11
|
|
|
12
|
-
##
|
|
12
|
+
## 预览
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
- **JetBrains Mono 消息字体**(Consolas 回退,中文兜底)
|
|
16
|
-
- **文字对比度**:浅色偏青蓝深色、深色偏白
|
|
17
|
-
- **右上角 todo 面板**:窄面板展示会话 pi-todo 状态,运行中 6s 轮询 + 展开前即时刷新
|
|
18
|
-
- **右下角堆叠弱通知**:扩展/错误等瞬时提示以小卡片堆叠在右下角,自动消失
|
|
19
|
-
- **内置多会话终端**:两栏面板——左侧只放当前项目的终端,右侧下拉选分组列出所有项目的终端;打开面板或切换项目时若当前项目还没有终端会自动补开一个,每个终端以 `<项目名>-<4位随机>` 命名。xterm.js + 服务端 pty、SSE 流式输出,刷新后会话保留;后台重启后失联终端会标记并支持一键清理
|
|
20
|
-
- **消息钉**:把任意消息气泡钉成置顶浮窗,可全局拖拽移动、自由缩放,钉住的消息快照在工作时始终可见
|
|
21
|
-
- **可定制壁纸**:图片/视频壁纸,支持横向位置拖动调整、平铺重复、边缘色彩填充与一键重置
|
|
22
|
-
- **气泡玻璃可调**:背景设置中提供滑块,可分别调节消息气泡的透明度与磨砂强度,刷新后保留
|
|
14
|
+
**首页**
|
|
23
15
|
|
|
24
|
-

|
|
25
17
|
|
|
26
|
-
|
|
18
|
+
**深色首页**
|
|
27
19
|
|
|
28
|
-
|
|
29
|
-
- **Two ways to branch**: **New session** creates an independent session file from an earlier message; **Edit from here** creates a branch inside the current session.
|
|
30
|
-
- **Project file tools**: browse and upload files, inspect Git diffs, and preview source, Markdown, images, audio, PDFs, and DOCX files with automatic refresh.
|
|
31
|
-
- **Git worktrees**: switch checkouts from the sidebar while keeping sessions from the same repository grouped together.
|
|
32
|
-
- **Web-based configuration**: manage provider login and API keys, models, model tests, plugin packages, and skills without leaving Pi Web.
|
|
33
|
-
- **MCP server management**: add, remove, enable, disable, update and test MCP servers from a dedicated top-bar panel (global and project `mcp.json`), including a live connectivity test that lists the tools each server exposes.
|
|
34
|
-
- **Built-in multi-session terminal**: a two-column panel — the left column lists only the current project's terminals, and the right column is a grouped dropdown of every terminal across projects. Opening the panel (or switching projects) auto-starts a terminal for the current project when none exists, and each session is named `<project>-<4-char nanoid>`. xterm.js streams over SSE and sessions survive page refreshes; if the backend restarts, disconnected terminals are flagged and can be batch-cleaned with one click.
|
|
35
|
-
- **Message pinning**: pin any message bubble into an always-on-top floating window over the chat — drag it anywhere and resize it freely, so a pinned snapshot of the message stays visible while you keep working.
|
|
36
|
-
- **Customisable wallpaper**: use an image or video as the background, drag it horizontally to reposition, tile it, fill side gaps with edge-sampled colours, and reset on demand.
|
|
37
|
-
- **Adjustable bubble glass**: sliders in the wallpaper menu control message-bubble opacity and frost blur independently, persisted across refreshes.
|
|
38
|
-
- **English and Simplified Chinese UI**: Pi Web follows the browser language initially and provides a language switcher in the top bar.
|
|
39
|
-
- **Security hardening**: streamed file responses carry `X-Content-Type-Options: nosniff`; inline SVG previews are served with a strict CSP and `Referrer-Policy: no-referrer` so a malicious SVG's `<script>` cannot execute inside the Pi Web origin; API Origin checks compare hostnames (tolerating Chromium dropping the port) while the host allow-list still blocks DNS rebinding and cross-loopback attacks.
|
|
20
|
+

|
|
40
21
|
|
|
41
|
-
|
|
22
|
+
**终端功能**
|
|
42
23
|
|
|
43
|
-
|
|
24
|
+

|
|
44
25
|
|
|
45
|
-
|
|
46
|
-
npx @baique/pi-web-sky@latest
|
|
47
|
-
```
|
|
26
|
+
**消息钉**
|
|
48
27
|
|
|
49
|
-
|
|
28
|
+

|
|
50
29
|
|
|
51
|
-
|
|
30
|
+
**浅色首页**
|
|
52
31
|
|
|
53
|
-
|
|
32
|
+

|
|
54
33
|
|
|
55
|
-
|
|
56
|
-
npm install -g @baique/pi-web-sky@latest
|
|
57
|
-
pi-web-sky
|
|
58
|
-
```
|
|
34
|
+
**AI TODO**
|
|
59
35
|
|
|
60
|
-
|
|
36
|
+

|
|
61
37
|
|
|
62
|
-
|
|
38
|
+
**用户TODO**
|
|
63
39
|
|
|
64
|
-
|
|
40
|
+

|
|
65
41
|
|
|
66
|
-
|
|
67
|
-
| --- | --- | --- |
|
|
68
|
-
| `--port <port>`, `-p <port>`, or `PORT` | Server port | `30143` |
|
|
69
|
-
| `--hostname <host>`, `-H <host>`, or `PI_WEB_HOSTNAME` | Bind hostname | `127.0.0.1` |
|
|
70
|
-
| `--no-open` or `PI_WEB_NO_OPEN=1` | Do not open a browser automatically | Browser opens |
|
|
71
|
-
| `PI_WEB_ALLOWED_HOSTS` | Additional exact proxy or custom hostnames, comma-separated | Unset |
|
|
72
|
-
| `PI_WEB_PASSWORD` | Enable HTTP Basic Auth; the username is always `pi` | Authentication disabled |
|
|
42
|
+
## 快速开始
|
|
73
43
|
|
|
74
|
-
|
|
44
|
+
需要 Node.js 22.19+,一行起服(默认打开浏览器,地址 `127.0.0.1:30143`):
|
|
75
45
|
|
|
76
46
|
```bash
|
|
77
|
-
pi-web-sky
|
|
47
|
+
npx @baique/pi-web-sky@latest
|
|
78
48
|
```
|
|
79
49
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
Binding to a non-loopback address exposes an agent that can execute high-privilege actions. On a trusted LAN, require a long random password:
|
|
50
|
+
全局安装:
|
|
83
51
|
|
|
84
52
|
```bash
|
|
85
|
-
|
|
53
|
+
npm install -g @baique/pi-web-sky@latest
|
|
54
|
+
pi-web-sky
|
|
55
|
+
# 更新:重启进程后重跑同样命令即可;卸载:npm uninstall -g @baique/pi-web-sky
|
|
86
56
|
```
|
|
87
57
|
|
|
88
|
-
|
|
58
|
+
首次使用先在 **Models** 面板登录或配置 API Key。默认仅监听 `127.0.0.1`;对外暴露意味着授权该进程执行高权限操作,请务必通过 `PI_WEB_PASSWORD` 开启 Basic Auth 并在 HTTPS/VPN 内网使用。
|
|
89
59
|
|
|
90
|
-
|
|
60
|
+
## 我们做了什么
|
|
91
61
|
|
|
92
|
-
|
|
62
|
+
以下是我们相对原生 pi-web 的主要工作(截图为实机效果,图随文走)。
|
|
93
63
|
|
|
94
|
-
|
|
64
|
+
### 玻璃感 UI
|
|
95
65
|
|
|
96
|
-
|
|
97
|
-
HTTP_PROXY=http://127.0.0.1:7890 \
|
|
98
|
-
HTTPS_PROXY=http://127.0.0.1:7890 \
|
|
99
|
-
NO_PROXY=localhost,127.0.0.1 \
|
|
100
|
-
npx @baique/pi-web-sky@latest
|
|
101
|
-
```
|
|
66
|
+
整站视觉重做为统一的毛玻璃体系——消息气泡、Composer 输入区、工具栏、侧边栏、todo 面板、悬浮面板与时间轴全部同款 frosted-glass,壁纸可透出。气泡与面板的模糊/饱和度按浅深主题分离调校(如浅色 `blur 12px + saturate 80%`、深色 `140%`),边框改为半透明文字色混合,消除壁纸上刺眼的纯白/纯黑描边。
|
|
102
67
|
|
|
103
|
-
|
|
68
|
+
底层收敛为分层玻璃 token(`--bubble-*` 层级体系)与标准玻璃 class(`glass-top-panel/panel/popover`),组件不再散落硬编码 px/rgba;修复了 `backdrop-filter` 被根容器 z-index 截断导致毛玻璃失效、模型下拉被 containing block 劫持错位等坑。
|
|
104
69
|
|
|
105
|
-
|
|
106
|
-
$env:HTTP_PROXY = "http://127.0.0.1:7890"
|
|
107
|
-
$env:HTTPS_PROXY = "http://127.0.0.1:7890"
|
|
108
|
-
$env:NO_PROXY = "localhost,127.0.0.1"
|
|
109
|
-
npx @baique/pi-web-sky@latest
|
|
110
|
-
```
|
|
70
|
+
### 内置多会话终端
|
|
111
71
|
|
|
112
|
-
|
|
72
|
+
面板内置 xterm.js 终端,两栏布局——左侧只放当前项目的终端,右侧按下拉分组列出所有项目的终端;打开面板或切换项目时当前项目没有终端会自动补开一个,命名 `<项目名>-<4位随机>`。服务端 pty + SSE 流式输出,多会话并行,刷新页面后会话保留;后台重启后失联终端会标记并支持一键清理。配色随浅深主题切换,玻璃质感与消息气泡同源。
|
|
113
73
|
|
|
114
|
-
|
|
115
|
-
- **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.
|
|
116
|
-
- **Shared configuration**: the Models panel uses pi's model, settings, and credential storage, so changes are visible to both interfaces.
|
|
117
|
-
- **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.
|
|
118
|
-
- **Git worktrees**: see [Worktrees in Pi Web](./docs/worktrees.md) for switcher visibility, worktree creation, and removal behavior.
|
|
74
|
+
### 背景图设置
|
|
119
75
|
|
|
120
|
-
|
|
76
|
+
图片/视频壁纸,支持横向拖动调整位置、平铺重复、边缘色彩填充缝隙、一键重置位置。背景设置里另有两支滑块,可分别调节消息气泡的**透明度与磨砂强度**,刷新后保留——喜欢厚磨砂还是近透明的玻璃,随手可调。
|
|
121
77
|
|
|
122
|
-
|
|
123
|
-
context menu without patching `SessionSidebar`. Listen for the cancelable
|
|
124
|
-
`pi-web:session-row-contextmenu` browser event and call `preventDefault()`
|
|
125
|
-
synchronously when the integration will handle it:
|
|
78
|
+
### 消息体验细节
|
|
126
79
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
80
|
+
- **从此处编辑对齐 pi 语义**:回滚目标改为取会话树上的真实 parent,任意用户消息(会话首条、压缩后的消息、连续用户消息)都可编辑回滚——首条回滚到会话起点,与 pi 的 `navigateTree` 行为一致;顺带修复了"首条消息无法新建会话"以及该路径下会话文件不落盘的缺陷。
|
|
81
|
+
- **消息钉**:把任意消息气泡钉成置顶浮窗,可全局拖拽、自由缩放,关键上下文边干活边看。
|
|
82
|
+
- **AI 消息元信息工具栏**:模型名/字数/统计/复制/钉/时间下沉为气泡外底部工具栏,长文阅读不被头部遮挡。
|
|
83
|
+
- **todo 面板**:composer 顶栏 TODO 徽标与右上角窄面板实时展示会话 pi-todo 状态。
|
|
84
|
+
- **瞬时通知**:扩展/错误的临时提示由底部 widget shelf 就地显示、自动消退(移动端顶部居中堆叠);agent 运行状态经 composer 顶栏播报槽播报。
|
|
131
85
|
|
|
132
|
-
|
|
133
|
-
if (changed) refresh();
|
|
134
|
-
});
|
|
135
|
-
});
|
|
136
|
-
```
|
|
86
|
+
### 输入框草稿暂存区
|
|
137
87
|
|
|
138
|
-
|
|
139
|
-
coordinates, and a `refresh()` callback for actions that change the session
|
|
140
|
-
list. If no listener cancels the extension event, Pi Web preserves the
|
|
141
|
-
browser's native context menu. This hook is browser-side and independent of
|
|
142
|
-
Pi agent extensions.
|
|
88
|
+
输入内容随时 `Ctrl+S` 暂存、`Ctrl+Delete` 删除,跨会话持久,意外清空输入框也不慌;回填与正在输入的内容做冲突保护。Composer 重构为整体玻璃面板,草稿、输入框、工具条合一。
|
|
143
89
|
|
|
144
|
-
|
|
90
|
+
### thinking-orbs 思考球
|
|
145
91
|
|
|
146
|
-
|
|
147
|
-
npm install
|
|
148
|
-
npm run dev
|
|
149
|
-
```
|
|
92
|
+
集成 [thinking-orbs](https://www.npmjs.com/package/thinking-orbs)(MIT):等待模型、执行工具的状态行与思考块加载态统一换成呼吸/工作动画球,浅色主题下单独做对比度修正。思考块展示改为**纯文本注记**——零背景零边框、仅左侧一条细线标识思考区,长文阅读更舒服;消息气泡材质统一收敛为冒泡层级 token 体系。
|
|
150
93
|
|
|
151
|
-
|
|
94
|
+
### 移植上游修复(含自研补丁)
|
|
152
95
|
|
|
153
|
-
|
|
154
|
-
npm test
|
|
155
|
-
node_modules/.bin/tsc --noEmit
|
|
156
|
-
npm run lint
|
|
157
|
-
```
|
|
96
|
+
上游 PR 无法直接 merge(本仓库皮肤改造面大),以手工移植为主,全部经浏览器 e2e 验证:
|
|
158
97
|
|
|
159
|
-
|
|
98
|
+
- **#519** 关闭技能开关把 SKILL.md 写坏(`false` 被当不存在致重复 key)
|
|
99
|
+
- **#590** 大图上传压缩 + 渲染 toolResult 图片
|
|
100
|
+
- **#517** 内置斜杠命令一次回车直接执行
|
|
101
|
+
- **#536** 文件管理器复制/粘贴路径
|
|
102
|
+
- **#587** 会话历史分页加载 + BranchNavigator 递归爆栈修复(额外补了服务端 `hasMore` 标记,修掉上游"折叠块导致上翻入口消失"的偏差)
|
|
103
|
+
- **#516** 打开单个会话不再全量扫目录(7ms vs 322ms)
|
|
104
|
+
- **#544** Origin 校验容忍 Chromium 剥端口(修复 403 白屏)
|
|
105
|
+
- **#520** 内联 SVG 预览加 script 拦截 CSP
|
|
106
|
+
- **#470** MCP 服务器管理面板(全局与项目 `mcp.json`,含连通性测试)
|
|
160
107
|
|
|
161
|
-
|
|
108
|
+
### 安全与性能
|
|
162
109
|
|
|
163
|
-
|
|
110
|
+
- 流式文件响应统一 `X-Content-Type-Options: nosniff`;SVG 预览附加严格 CSP(`default-src 'none'` 等)与 `Referrer-Policy`,恶意 SVG 的脚本无法在本站点执行
|
|
111
|
+
- API Origin 校验只比较 hostname(容忍端口变化),host 白名单继续拦截 DNS rebinding 与跨 loopback 攻击
|
|
112
|
+
- **会话加载提速**:打开会话/定位会话文件只读取每个 JSONL 的首行 header(校验 id、取标题),不再整文件解析;会话列表扫描去重(并发请求合流)、缓存 TTL 30s → 5min,再消除 StrictMode 双发扫描——首开明显变快
|
|
164
113
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
114
|
+
## 开发
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
npm install
|
|
118
|
+
npm run dev # http://127.0.0.1:30143
|
|
119
|
+
node_modules/.bin/tsc --noEmit
|
|
120
|
+
npm run lint
|
|
121
|
+
npm test # 单元测试
|
|
173
122
|
```
|
|
174
123
|
|
|
175
|
-
|
|
124
|
+
开发期不要跑 `next build`/`npm run build`(会污染 `.next/` 影响 dev)。发版、多语言 i18n、worktree 等细节见 [docs](docs/)。
|
|
176
125
|
|
|
177
|
-
##
|
|
126
|
+
## 许可证
|
|
178
127
|
|
|
179
128
|
[MIT](./LICENSE)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@baique/pi-web-sky",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.26",
|
|
4
4
|
"description": "Web UI for the pi coding agent — Sky skin edition (fork of @agegr/pi-web / earendil-labs pi-web, MIT)",
|
|
5
5
|
"homepage": "https://github.com/baique/pi-web-sky#readme",
|
|
6
6
|
"repository": {
|
|
@@ -55,7 +55,6 @@
|
|
|
55
55
|
"undici": "8.10.0"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
-
"@lobehub/icons": "^5.6.0",
|
|
59
58
|
"@tailwindcss/postcss": "^4.2.2",
|
|
60
59
|
"@types/js-yaml": "^4.0.9",
|
|
61
60
|
"@types/node": "^25",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use strict";(()=>{var a={};a.id=9043,a.ids=[9043],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},8128:a=>{a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},19225:(a,b,c)=>{a.exports=c(44870)},21878:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{GET:()=>g,dynamic:()=>h});var e=c(56429),f=a([e]);e=(f.then?(await f)():f)[0];let h="force-dynamic";async function g(a){let b=new ReadableStream({start(b){let c=new TextEncoder,d=a=>{let d=`data: ${JSON.stringify(a)}
|
|
2
|
-
|
|
3
|
-
`;b.enqueue(c.encode(d))},f=(0,e.Fn)(a=>{try{d({type:"running",runningSessionIds:a})}catch{}});d({type:"running",runningSessionIds:(0,e.HG)()});let g=setInterval(()=>{try{b.enqueue(c.encode(":\n\n"))}catch{}},3e4);a.signal?.addEventListener("abort",()=>{clearInterval(g),f();try{b.close()}catch{}})}});return new Response(b,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}d()}catch(a){d(a)}})},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},29862:a=>{a.exports=import("@earendil-works/pi-tui")},33873:a=>{a.exports=require("path")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},75430:a=>{a.exports=import("@earendil-works/pi-coding-agent")},76760:a=>{a.exports=require("node:path")},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},80018:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>z,patchFetch:()=>y,routeModule:()=>u,serverHooks:()=>x,workAsyncStorage:()=>v,workUnitAsyncStorage:()=>w});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(37527);let u=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/agent/running/events/route",pathname:"/api/agent/running/events",filename:"route",bundlePath:"app/api/agent/running/events/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/baique/work/develop/project/pi-web-sky/app/api/agent/running/events/route.ts",nextConfigOutput:"",userland:()=>c(21878),...{}}),{workAsyncStorage:v,workUnitAsyncStorage:w,serverHooks:x}=u;function y(){return(0,f.patchFetch)({workAsyncStorage:v,workUnitAsyncStorage:w})}async function z(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),u.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/agent/running/events/route";"/index"===d&&(d="/");let f=await u.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!f)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:v,deploymentId:w,params:x,nextConfig:y,parsedUrl:z,isDraftMode:A,prerenderManifest:B,routerServerContext:C,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,resolvedPathname:F,clientReferenceManifest:G,serverActionsManifest:H}=f,I=(0,j.normalizeAppPath)(d),J=!!(B.dynamicRoutes[I]||B.routes[F]),K=async()=>((null==C?void 0:C.render404)?await C.render404(a,b,z,!1):b.end("This page could not be found"),null);if(J&&!A){let a=!!B.routes[F],b=B.dynamicRoutes[I];if(b&&!1===b.fallback&&!a){if(y.adapterPath)return await K();throw new s.NoFallbackError}}let L=null;!J||u.isDev||A||(L="/index"===(L=F)?"/":L);let M=!0===u.isDev||!J,N=J&&!M;H&&G&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:G,serverActionsManifest:H});let O=a.method||"GET",P=(0,h.getTracer)(),Q=P.getActiveScopeSpan(),R=!!(null==C?void 0:C.isWrappedByNextServer),S=!!(0,g.getRequestMeta)(a,"minimalMode"),T=(0,g.getRequestMeta)(a,"incrementalCache")||await u.getIncrementalCache(a,y,B,S);null==T||T.resetRequestCache(),globalThis.__incrementalCache=T;let U={params:x,previewProps:B.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts,useCacheTimeout:y.experimental.useCacheTimeout},cacheComponents:!!y.cacheComponents,validationLevel:y.experimental.instantInsights.validationLevel,supportsDynamicResponse:M,incrementalCache:T,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:y.cacheLife,staticPageGenerationTimeout:y.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>u.onRequestError(a,b,d,e,C)},sharedContext:{buildId:v,deploymentId:w}},V=new k.NodeNextRequest(a),W=new k.NodeNextResponse(b),X=l.NextRequestAdapter.fromNodeNextRequest(V,(0,l.signalFromNodeResponse)(b)),Y=async({previousCacheEntry:e})=>{try{if(!S&&D&&E&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await u.handle(X,U);a.fetchMetrics=U.renderOpts.fetchMetrics;let f=U.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=U.renderOpts.collectedTags;if(!J)return await (0,o.I)(V,W,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==U.renderOpts.collectedRevalidate&&!(U.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&U.renderOpts.collectedRevalidate,e=void 0===U.renderOpts.collectedExpire||U.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?y.expireTime:void 0:U.renderOpts.collectedExpire;return{value:{kind:t.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await u.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),b}},Z=async(d,f)=>{try{var g,i;let d=await u.handleResponse({req:a,nextConfig:y,cacheKey:L,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:B,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,responseGenerator:Y,waitUntil:c.waitUntil,isMinimalMode:S});if(!J)return;if((null==d||null==(g=d.value)?void 0:g.kind)!==t.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(i=d.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});S||b.setHeader("x-nextjs-cache",D?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),A&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let f=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);S&&J||f.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||f.get("Cache-Control")||f.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(V,W,new Response(d.value.body,{headers:f,status:d.value.status||200}));return}catch(b){if(b instanceof s.NoFallbackError||await u.onRequestError(a,b,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),J)throw b;await (0,o.I)(V,W,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=P.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||I,g=`${O} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":g}),d.updateName(g),f&&f!==d&&(f.setAttribute("http.route",e),f.updateName(g))})()}};if(R&&Q)await Z(Q,void 0);else{let b=P.getActiveScopeSpan();await P.withPropagatedContext(a.headers,()=>P.trace(m.BaseServerSpan.handleRequest,{spanName:`${O} ${d}`,kind:h.SpanKind.SERVER,attributes:{"http.method":O,"http.target":a.url}},a=>Z(a,b)),void 0,!R)}}},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},92280:(a,b,c)=>{Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(28208),e=c(47617),f=c(62018);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}}};var b=require("../../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,5582,6429],()=>b(b.s=80018));module.exports=c})();
|