@baique/pi-web-sky 0.1.24 → 0.1.25
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 +8 -8
- 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 +8 -8
- 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 → aBYQwC6QiGm_OhFO67_iB}/_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-7846ca56f9311266.js} +1 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-c30a6d7676fbc094.js +1 -0
- package/.next/static/chunks/app/page-d03a4ea86f4ab6f6.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 +7 -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 → aBYQwC6QiGm_OhFO67_iB}/_ssgManifest.js +0 -0
package/.next/static/chunks/next/dist/client/components/builtin/app-error-343b3c01fcb26582.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[90,552,976,1004,1097,1337,1541,1960,2053,2138,2504,2614,2835,2837,3432,3507,3851,3943,3955,4016,4037,4524,4896,5221,5843,5907,6252,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8429,8658,8743,8933,9043,9156,9183,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
package/.next/static/chunks/next/dist/client/components/builtin/forbidden-343b3c01fcb26582.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[90,552,976,1004,1097,1337,1541,1960,2053,2138,2504,2614,2835,2837,3432,3507,3851,3943,3955,4016,4037,4524,4896,5221,5843,5907,6252,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8429,8658,8743,8933,9043,9156,9183,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
package/.next/static/chunks/next/dist/client/components/builtin/global-error-be943dcb89867ab9.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9337],{2035:(e,s,_)=>{Promise.resolve().then(_.t.bind(_,27123,23))}},e=>{e.O(0,[8441,3794,7358],()=>e(e.s=2035)),_N_E=e.O()}]);
|
package/.next/static/chunks/next/dist/client/components/builtin/not-found-343b3c01fcb26582.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[90,552,976,1004,1097,1337,1541,1960,2053,2138,2504,2614,2835,2837,3432,3507,3851,3943,3955,4016,4037,4524,4896,5221,5843,5907,6252,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8429,8658,8743,8933,9043,9156,9183,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-343b3c01fcb26582.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[90,552,976,1004,1097,1337,1541,1960,2053,2138,2504,2614,2835,2837,3432,3507,3851,3943,3955,4016,4037,4524,4896,5221,5843,5907,6252,6450,6709,6819,6849,6919,6988,7067,7483,7769,7812,7851,8167,8197,8429,8658,8743,8933,9043,9156,9183,9742,9747,9787,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-ease:initial}}}@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-400:oklch(70.4% .191 22.216);--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--ease-in:cubic-bezier(.4,0,1,1);--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-text-muted:var(--text-muted)}}@layer base{*,::backdrop,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.\@container{container-type:inline-size}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.z-50{z-index:50}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.my-2{margin-block:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-\[4px\]{margin-bottom:4px}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-\[720px\]{height:720px}.h-full{height:100%}.w-\[720px\]{width:720px}.w-full{width:100%}.max-w-\[820px\]{max-width:820px}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\[drop-ripple_2\.4s_ease-out_infinite_backwards\]{animation:drop-ripple 2.4s ease-out infinite backwards}.animate-\[drop-zone-in_0\.15s_ease_both\]{animation:drop-zone-in .15s both}.animate-spin{animation:var(--animate-spin)}.resize{resize:both}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded-full{border-radius:3.40282e+38px}.border{border-style:var(--tw-border-style);border-width:1px}.border-\[1\.5px\]{border-style:var(--tw-border-style);border-width:1.5px}.border-solid{--tw-border-style:solid;border-style:solid}.border-\[rgba\(37\,99\,235\,0\.5\)\]{border-color:#2563eb80}.bg-\[rgba\(37\,99\,235\,0\.06\)\]{background-color:#2563eb0f}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pb-\[4px\]{padding-bottom:4px}.text-center{text-align:center}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.break-all{word-break:break-all}.text-red-400{color:var(--color-red-400)}.text-text-muted{color:var(--color-text-muted)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px)}.blur,.drop-shadow-\[0_6px_18px_rgba\(37\,99\,235\,0\.18\)\]{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[0_6px_18px_rgba\(37\,99\,235\,0\.18\)\]{--tw-drop-shadow-size:drop-shadow(0 6px 18px var(--tw-drop-shadow-color,#2563eb2e));--tw-drop-shadow:var(--tw-drop-shadow-size)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-\[1px\]{--tw-backdrop-blur:blur(1px)}.backdrop-blur-\[1px\],.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.\[scrollbar-width\:none\]{scrollbar-width:none}}:root{--bg:#fff;--bg-panel:#f5f5f5;--bg-hover:#eee;--bg-selected:#e8e8e8;--border:var(--text)}@supports (color:color-mix(in lab,red,red)){:root{--border:color-mix(in srgb,var(--text) 20%,transparent)}}:root{--text:#0f172a;--text-muted:#3f4c5f;--text-dim:#8b95a3;--text-meta:#1e293beb;--msg-tool-text:#000}@supports (color:color-mix(in lab,red,red)){:root{--msg-tool-text:color-mix(in srgb,#000 85%,var(--text-muted))}}:root{--accent:#3184f8;--accent-hover:#1d4ed8;--user-bg:#eff6ff;--assistant-bg:#fff;--tool-bg:#f9fafb;--bg-subtle:#0000000a;--side-hover:var(--text)}@supports (color:color-mix(in lab,red,red)){:root{--side-hover:color-mix(in srgb,var(--text) 6%,transparent)}}:root{--side-active:var(--text)}@supports (color:color-mix(in lab,red,red)){:root{--side-active:color-mix(in srgb,var(--text) 10%,transparent)}}:root{--side-selected:var(--accent)}@supports (color:color-mix(in lab,red,red)){:root{--side-selected:color-mix(in srgb,var(--accent) 12%,transparent)}}:root{--side-input:var(--glass-bg-strong)}@supports (color:color-mix(in lab,red,red)){:root{--side-input:color-mix(in srgb,var(--glass-bg-strong) 60%,transparent)}}:root{--frame-glass:#ffffffc2;--side-panel:var(--frame-glass);--app-bg-scrim:#0000000d;--glass-bg:#fafafba6;--glass-bg-strong:#ffffffc7;--glass-bg-input:#fafafb85;--panel-glass:#fafafbbf;--panel-glass-todo:#fafafbbf;--panel-glass-minimap:#fafafbbf;--glass-blur:8px;--glass-blur-heavy:12px;--glass-blur-panel:10px;--glass-blur-popover:10px;--steer-active:#f97316;--follow-active:#8b5cf6;--user-bg-rgb:219,234,254;--assistant-bg-rgb:252,252,253;--tool-bg-rgb:248,248,250;--bubble-alpha:.44;--user-bg-glass:rgba(var(--user-bg-rgb),var(--bubble-alpha));--user-border-glass:#3b82f638;--assistant-card-glass:rgba(var(--assistant-bg-rgb),var(--bubble-alpha));--tool-bg-glass:rgba(var(--tool-bg-rgb),var(--bubble-alpha));--glass-blur-bubble:18px;--bubble-pad-x:14px;--bubble-pad-y:7px;--bubble-pad-end:8px;--bubble-gap:8px;--bubble-radius:12px;--bubble-inner-radius:7px;--bubble-meta-fs:11px;--bubble-title-fs:12px;--bubble-border:var(--border)}@supports (color:color-mix(in lab,red,red)){:root{--bubble-border:color-mix(in srgb,var(--border) 60%,transparent)}}:root{--bubble-hairline:var(--border)}@supports (color:color-mix(in lab,red,red)){:root{--bubble-hairline:color-mix(in srgb,var(--border) 55%,transparent)}}:root{--bubble-tool-bg:var(--tool-bg-glass)}@supports (color:color-mix(in lab,red,red)){:root{--bubble-tool-bg:color-mix(in srgb,var(--tool-bg-glass) 58%,transparent)}}:root{--bubble-tool-bg-hover:var(--tool-bg-glass)}@supports (color:color-mix(in lab,red,red)){:root{--bubble-tool-bg-hover:color-mix(in srgb,var(--tool-bg-glass) 80%,transparent)}}:root{--bubble-tool-bg-fold:var(--tool-bg-glass)}@supports (color:color-mix(in lab,red,red)){:root{--bubble-tool-bg-fold:color-mix(in srgb,var(--tool-bg-glass) 28%,transparent)}}:root{--bubble-code-bg:var(--tool-bg-glass)}@supports (color:color-mix(in lab,red,red)){:root{--bubble-code-bg:color-mix(in srgb,var(--tool-bg-glass) 58%,transparent)}}:root{--bubble-th-bg:var(--tool-bg-glass)}@supports (color:color-mix(in lab,red,red)){:root{--bubble-th-bg:color-mix(in srgb,var(--tool-bg-glass) 45%,transparent)}}:root{--bubble-file-bg:var(--bg)}@supports (color:color-mix(in lab,red,red)){:root{--bubble-file-bg:color-mix(in srgb,var(--bg) 98%,var(--bg-panel))}}:root{--bubble-file-chrome:var(--bg)}@supports (color:color-mix(in lab,red,red)){:root{--bubble-file-chrome:color-mix(in srgb,var(--bg) 93%,var(--bg-panel))}}:root{--glass-saturate:80%}html.dark{--bg:#1a1a1a;--bg-panel:#242424;--bg-hover:#2e2e2e;--bg-selected:#383838;--border:var(--text)}@supports (color:color-mix(in lab,red,red)){html.dark{--border:color-mix(in srgb,var(--text) 25%,transparent)}}html.dark{--text:#f5f7fa;--text-muted:#c7d0da;--text-dim:#8a93a0;--text-meta:#e8eef7eb;--msg-tool-text:var(--text)}@supports (color:color-mix(in lab,red,red)){html.dark{--msg-tool-text:color-mix(in srgb,var(--text) 32%,var(--text-muted))}}html.dark{--accent:#60a5fa;--accent-hover:#93c5fd;--side-hover:var(--text)}@supports (color:color-mix(in lab,red,red)){html.dark{--side-hover:color-mix(in srgb,var(--text) 6%,transparent)}}html.dark{--side-active:var(--text)}@supports (color:color-mix(in lab,red,red)){html.dark{--side-active:color-mix(in srgb,var(--text) 10%,transparent)}}html.dark{--side-selected:var(--accent)}@supports (color:color-mix(in lab,red,red)){html.dark{--side-selected:color-mix(in srgb,var(--accent) 14%,transparent)}}html.dark{--side-input:var(--glass-bg-strong)}@supports (color:color-mix(in lab,red,red)){html.dark{--side-input:color-mix(in srgb,var(--glass-bg-strong) 60%,transparent)}}html.dark{--frame-glass:#1c1c1fad;--side-panel:var(--frame-glass);--user-bg:#1e293b;--assistant-bg:#1a1a1a;--tool-bg:#1f2937;--bg-subtle:#ffffff0d;--app-bg-scrim:#0000000f;--glass-bg:#1e1e21a6;--glass-bg-strong:#222225c7;--glass-saturate:140%;--glass-bg-input:#22222585;--panel-glass:#222225bf;--panel-glass-todo:#222225bf;--panel-glass-minimap:#222225bf;--glass-blur:8px;--glass-blur-heavy:12px;--steer-active:#d97706;--follow-active:#818cf8;--user-bg-rgb:30,58,95;--assistant-bg-rgb:36,36,39;--tool-bg-rgb:36,36,39;--bubble-alpha:.55;--user-bg-glass:rgba(var(--user-bg-rgb),var(--bubble-alpha));--user-border-glass:#60a5fa47;--assistant-card-glass:rgba(var(--assistant-bg-rgb),var(--bubble-alpha));--tool-bg-glass:rgba(var(--tool-bg-rgb),var(--bubble-alpha));--glass-blur-bubble:12px}.catppuccin-file-icon{background:50%/contain no-repeat var(--catppuccin-icon-light);flex-shrink:0;display:block}html.dark .catppuccin-file-icon{background-image:var(--catppuccin-icon-dark)}@supports ((-webkit-mask-image:url("mask.svg")) or (mask-image:url("mask.svg"))){.catppuccin-file-icon{background:var(--text-dim);mask:center/contain no-repeat var(--catppuccin-icon-light);-webkit-mask:center/contain no-repeat var(--catppuccin-icon-light)}html.dark .catppuccin-file-icon{background:var(--text-dim);mask-image:var(--catppuccin-icon-dark);-webkit-mask-image:var(--catppuccin-icon-dark)}}::view-transition-old(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){mix-blend-mode:normal;animation:none}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:2}*{box-sizing:border-box}body,html{width:100%;height:100dvh;height:var(--app-viewport-height,100dvh);background:var(--bg);color:var(--text);overscroll-behavior:none;margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;overflow:hidden}body{background-color:var(--bg);background-image:linear-gradient(var(--app-bg-scrim),var(--app-bg-scrim)),var(--app-bg-image,none),var(--app-bg-fill,none);background-size:100% 100%,var(--app-bg-size,cover),100% 100%;background-position:50%,var(--app-bg-pos-x,center) center,50%;background-repeat:no-repeat,var(--app-bg-repeat,no-repeat),no-repeat;flex-direction:column;display:flex}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.glass-panel{background:var(--panel-glass);-webkit-backdrop-filter:blur(var(--glass-blur-panel)) saturate(var(--glass-saturate));transform:translateZ(0)}.glass-popover{background:var(--glass-bg-strong)}@supports (color:color-mix(in lab,red,red)){.glass-popover{background:color-mix(in srgb,var(--glass-bg-strong) 60%,transparent)}}.glass-popover{-webkit-backdrop-filter:blur(var(--glass-blur-popover)) saturate(var(--glass-saturate));transform:translateZ(0)}.glass-top-panel{background:var(--frame-glass);-webkit-backdrop-filter:blur(var(--glass-blur-heavy)) saturate(var(--glass-saturate));border:1px solid var(--border);transform:translateZ(0)}@supports (color:color-mix(in lab,red,red)){.glass-top-panel{border:1px solid color-mix(in srgb,var(--border) 60%,transparent)}}.glass-top-panel{border-top:none;border-radius:0 0 12px 12px;box-shadow:0 1px 2px #0f172a0a,0 4px 16px -8px #0f172a1a}.extension-status-shelf{border-top:1px solid var(--border);flex-wrap:nowrap;flex-shrink:0;align-items:stretch;min-width:0;display:flex;position:relative}@supports (color:color-mix(in lab,red,red)){.extension-status-shelf{border-top:1px solid color-mix(in srgb,var(--border) 60%,transparent)}}.extension-status-shelf{background:var(--frame-glass);-webkit-backdrop-filter:blur(var(--glass-blur-heavy)) saturate(var(--glass-saturate))}.extension-status-left{flex-wrap:wrap;flex:auto;align-items:stretch;min-width:0;display:flex}.extension-status-right{flex:0 auto;justify-content:center;align-items:stretch;min-width:0;display:flex}.extension-widget-panels{z-index:60;overscroll-behavior:contain;scrollbar-gutter:stable;border:1px solid var(--border);flex-direction:column;max-height:min(144px,18dvh);display:flex;position:absolute;bottom:100%;left:0;right:0;overflow:hidden auto}@supports (color:color-mix(in lab,red,red)){.extension-widget-panels{border:1px solid color-mix(in srgb,var(--border) 78%,transparent)}}.extension-widget-panels{background:var(--frame-glass);-webkit-backdrop-filter:blur(var(--glass-blur-heavy)) saturate(var(--glass-saturate));border-radius:8px 8px 0 0;box-shadow:0 -4px 16px #0000001a}.extension-widget-panel{background:0 0;flex-shrink:0;min-width:0;overflow:hidden}.extension-widget-panel-heading{height:26px;color:var(--text);font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;padding:5px 12px 0;font-size:11px;font-weight:600;overflow:hidden}.extension-widget-triggers{overscroll-behavior-x:contain;scrollbar-width:none;flex:0 auto;align-items:stretch;min-width:0;height:35px;display:flex;overflow:auto hidden}.extension-widget-triggers::-webkit-scrollbar{display:none}.extension-status-shelf.has-widgets.has-status .extension-widget-triggers{border-right:1px solid var(--border)}@supports (color:color-mix(in lab,red,red)){.extension-status-shelf.has-widgets.has-status .extension-widget-triggers{border-right:1px solid color-mix(in srgb,var(--border) 78%,transparent)}}.extension-widget-trigger{border:0;border-right:1px solid var(--border);flex:0 0 108px;align-items:center;gap:5px;width:108px;height:35px;padding:0 7px;display:flex;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.extension-widget-trigger{border-right:1px solid color-mix(in srgb,var(--border) 78%,transparent)}}.extension-widget-trigger{color:var(--text-muted);font-family:var(--font-mono);text-align:left;background:0 0;font-size:11px}.extension-widget-update-pulse{z-index:0;opacity:0;pointer-events:none;transition:opacity .18s ease-out;position:absolute;inset:0}.extension-widget-update-pulse:before{background:var(--accent);content:"";opacity:.12;position:absolute;inset:0}.extension-widget-trigger.is-updating .extension-widget-update-pulse{opacity:1}.extension-widget-trigger.is-updating .extension-widget-update-pulse:before{animation:extension-widget-update-pulse .9s ease-in-out infinite alternate}@keyframes extension-widget-update-pulse{0%{opacity:.18}to{opacity:.06}}button.extension-widget-trigger{cursor:pointer;transition:background .12s,color .12s}.extension-widget-trigger.is-expanded,button.extension-widget-trigger:hover{background:var(--bg-hover);color:var(--text)}button.extension-widget-trigger:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.extension-widget-placement{z-index:1;width:10px;color:var(--text-dim);flex:0 0 10px;justify-content:center;align-items:center;display:flex;position:relative}.extension-widget-placement-icon{fill:currentColor;flex:0 0 8px;width:8px;height:6px;display:block}.extension-widget-key{z-index:1;min-width:0;color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex:1;font-weight:600;position:relative;overflow:hidden}@media (prefers-reduced-motion:reduce){.extension-widget-update-pulse{transition:none}.extension-widget-trigger.is-updating .extension-widget-update-pulse:before{opacity:.12;animation:none}}.extension-widget-content{color:var(--text-muted);font-family:var(--font-mono);overflow-wrap:anywhere;white-space:pre-wrap;margin:0;padding:3px 12px 8px;font-size:14px;line-height:1.45}.extension-status-line{flex:0 auto;align-items:center;min-width:0;height:35px;padding:0 12px;display:flex}.extension-status-text{min-width:0;color:var(--text-muted);font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}@media (max-width:640px){.extension-status-right:not(.has-tools){display:none}}::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}:root{--font-mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,"PingFang SC","Microsoft YaHei",monospace}.markdown-body,code,pre{font-family:var(--font-mono)}.markdown-body{min-width:0;max-width:100%;color:var(--text);word-break:break-word;font-size:14px;line-height:1.7;overflow-x:hidden}.markdown-body p{margin:0 0 8px}.markdown-body p:last-child{margin-bottom:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{color:var(--text);letter-spacing:0;margin:10px 0 5px;font-weight:600;line-height:1.35}.markdown-body h1{font-size:1.16em}.markdown-body h2{font-size:1.08em}.markdown-body h3{color:var(--text);font-size:.98em}@supports (color:color-mix(in lab,red,red)){.markdown-body h3{color:color-mix(in srgb,var(--text) 88%,var(--text-muted))}}.markdown-body ul{padding-left:22px}.markdown-body ol,.markdown-body ul{margin:5px 0 8px;list-style-position:outside}.markdown-body ol{padding-left:30px}.markdown-body li{margin:3px 0;padding-left:2px}.markdown-body ul>li{list-style-type:disc}.markdown-body ol>li{list-style-type:decimal}.markdown-body li>p{margin:0}.markdown-body li::marker{color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.markdown-body li::marker{color:color-mix(in srgb,var(--accent) 72%,var(--text-muted))}}.markdown-body li::marker{font-weight:600}.markdown-body strong{color:var(--text)}@supports (color:color-mix(in lab,red,red)){.markdown-body strong{color:color-mix(in srgb,var(--text) 88%,var(--accent))}}.markdown-body strong{font-weight:700}.markdown-body em{color:var(--text-muted)}.markdown-body a{color:var(--accent);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.markdown-body a{-webkit-text-decoration-color:color-mix(in srgb,var(--accent) 45%,transparent);text-decoration-color:color-mix(in srgb,var(--accent) 45%,transparent)}}.markdown-body a:hover{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}.markdown-body img{border-radius:6px;max-width:100%;height:auto;margin:8px 0;display:block}.markdown-body .markdown-inline-code{background:var(--bg-subtle);color:var(--text);font-family:var(--font-mono);box-shadow:inset 0 0 0 1px var(--border);border-radius:5px;padding:1px 5px;font-size:.92em}@supports (color:color-mix(in lab,red,red)){.markdown-body .markdown-inline-code{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--border) 70%,transparent)}}.markdown-body .contains-task-list{padding-left:0;list-style:none}.markdown-body .task-list-item{padding-left:25px;display:block;position:relative}.markdown-body .task-list-item::marker{content:""}.markdown-body .task-list-item>input[type=checkbox],.markdown-body .task-list-item>p:first-child>input[type=checkbox]:first-child{appearance:none;border:1px solid var(--border);background:var(--bg);border-radius:4px;place-content:center;width:14px;height:14px;margin:0;display:inline-grid;position:absolute;top:.35em;left:0}.markdown-body .task-list-item>input[type=checkbox]:checked,.markdown-body .task-list-item>p:first-child>input[type=checkbox]:first-child:checked{border-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.markdown-body .task-list-item>input[type=checkbox]:checked,.markdown-body .task-list-item>p:first-child>input[type=checkbox]:first-child:checked{border-color:color-mix(in srgb,var(--accent) 55%,var(--border))}}.markdown-body .task-list-item>input[type=checkbox]:checked,.markdown-body .task-list-item>p:first-child>input[type=checkbox]:first-child:checked{background:var(--accent)}@supports (color:color-mix(in lab,red,red)){.markdown-body .task-list-item>input[type=checkbox]:checked,.markdown-body .task-list-item>p:first-child>input[type=checkbox]:first-child:checked{background:color-mix(in srgb,var(--accent) 10%,var(--bg))}}.markdown-body .task-list-item>input[type=checkbox]:checked:before,.markdown-body .task-list-item>p:first-child>input[type=checkbox]:first-child:checked:before{content:"";border:solid var(--accent);border-width:0 1.5px 1.5px 0;width:4px;height:8px;transform:rotate(45deg)translateY(-1px)}.markdown-body blockquote{border-left:3px solid var(--border)}@supports (color:color-mix(in lab,red,red)){.markdown-body blockquote{border-left:3px solid color-mix(in srgb,var(--border) 75%,var(--text-muted))}}.markdown-body blockquote{background:var(--bg-subtle);color:var(--text-muted);border-radius:0 6px 6px 0;margin:6px 0;padding:6px 11px}.markdown-table-wrap{border:1px solid var(--border);border-radius:var(--bubble-inner-radius);width:100%;margin:8px 0;overflow:auto hidden}.markdown-body table{border-collapse:separate;border-spacing:0;min-width:100%;font-size:13px}.markdown-body td,.markdown-body th{border:0;border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:6px 10px}.markdown-body tr:last-child td{border-bottom:0}.markdown-body th{background:var(--bubble-th-bg);color:var(--text)}@supports (color:color-mix(in lab,red,red)){.markdown-body th{color:color-mix(in srgb,var(--text) 88%,var(--text-muted))}}.markdown-body th{font-weight:650}.markdown-body tbody tr:nth-child(2n) td{background:var(--bg-subtle)}.markdown-body hr{background:linear-gradient(90deg,transparent,var(--border),transparent);border:none;height:1px;margin:12px 0}.markdown-body .katex-display{margin:.6em 0;padding:2px 0;overflow:auto hidden}.markdown-body .katex{font-size:1.05em}.markdown-user-message p{white-space:pre-wrap}.markdown-custom-message{line-height:1.32}.markdown-custom-message p{margin:0}.markdown-custom-message h1,.markdown-custom-message h2,.markdown-custom-message h3,.markdown-custom-message h4,.markdown-custom-message h5,.markdown-custom-message h6{margin:4px 0 2px;line-height:1.18}.markdown-custom-message ol,.markdown-custom-message ul{margin:2px 0 3px}.markdown-custom-message li{margin:0}.markdown-custom-message blockquote{margin:3px 0;padding:4px 8px}.markdown-custom-message .markdown-code-block,.markdown-custom-message .markdown-table-wrap{margin:4px 0}.markdown-compaction-message{line-height:1.5}.markdown-compaction-message p{margin:0 0 7px}.markdown-compaction-message h1,.markdown-compaction-message h2,.markdown-compaction-message h3,.markdown-compaction-message h4,.markdown-compaction-message h5,.markdown-compaction-message h6{margin:8px 0 3px;line-height:1.25}.markdown-compaction-message ol,.markdown-compaction-message ul{margin:4px 0 8px}.markdown-compaction-message li{margin:2px 0}.markdown-compaction-message .markdown-code-block,.markdown-compaction-message .markdown-table-wrap{margin:6px 0}.compaction-file-details{border-top:1px solid var(--border);color:var(--text-muted);margin-top:10px;padding-top:8px;font-size:12px}.compaction-file-details summary{cursor:pointer;font-weight:600;line-height:1.4}.compaction-file-section{margin-top:8px}.compaction-file-title{color:var(--text);margin-bottom:4px;font-size:11px;font-weight:650}.compaction-file-list{border:1px solid var(--border);background:var(--bg-panel);max-height:180px;font-family:var(--font-mono);border-radius:6px;margin:0;padding:7px 8px;font-size:11px;line-height:1.45;list-style:none;overflow:auto}.compaction-file-list li{overflow-wrap:anywhere}.compaction-file-list li+li{margin-top:3px}.markdown-code-block{border:1px solid var(--border);border-radius:var(--bubble-inner-radius);background:var(--bubble-code-bg);width:100%;min-width:0;max-width:100%;box-shadow:0 1px 0 var(--border);margin:6px 0;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.markdown-code-block{box-shadow:0 1px 0 color-mix(in srgb,var(--border) 42%,transparent)}}.markdown-code-header{background:var(--bubble-th-bg);border-bottom:1px solid var(--border);color:var(--text-dim);justify-content:space-between;align-items:center;gap:8px;padding:5px 10px;font-size:11px;display:flex}.markdown-code-lang{color:var(--text-muted);font-family:var(--font-mono);font-weight:650}.markdown-code-actions{align-items:center;gap:6px;display:flex}.markdown-code-action{border:1px solid var(--border);background:var(--bg);color:var(--text-muted);cursor:pointer;font:inherit;border-radius:5px;padding:2px 7px;font-size:11px;line-height:1.25}.markdown-code-action:hover:not(:disabled){color:var(--text);border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.markdown-code-action:hover:not(:disabled){border-color:color-mix(in srgb,var(--border) 70%,var(--text-muted))}}.markdown-code-action:disabled{color:var(--text-dim);cursor:not-allowed;opacity:.75}.markdown-code-action.is-active{background:var(--bg-selected);color:var(--text)}.mermaid-block{background:var(--bubble-code-bg);padding:12px;overflow-x:auto}.mermaid-block svg{max-width:none;display:block}.mermaid-block-loading{min-height:120px}.mermaid-block-error{color:var(--text-muted);font-family:var(--font-mono);font-size:12px}.mermaid-preview-button{width:100%;color:inherit;cursor:zoom-in;text-align:left;border:0}.mermaid-preview-button:hover{opacity:.85}.mermaid-preview-button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.image-preview-dialog{width:100vw;max-width:none;height:100dvh;max-height:none;padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));color:var(--text);background:0 0;border:0;margin:0;position:fixed;inset:0;overflow:hidden}.image-preview-dialog[open]{justify-content:center;align-items:center;display:flex}.image-preview-dialog::backdrop{background:#000000b8}.image-preview-image{object-fit:contain;border-radius:8px;max-width:100%;max-height:100%;display:block;box-shadow:0 20px 60px #0006}.image-preview-close{top:max(12px,env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right));z-index:1;border:1px solid var(--border);background:var(--bg-panel);width:36px;height:36px;color:var(--text-muted);cursor:pointer;touch-action:manipulation;border-radius:6px;justify-content:center;align-items:center;padding:0;transition:background-color .12s,color .12s;display:inline-flex;position:absolute;box-shadow:0 2px 10px #00000047}.image-preview-close:hover{background:var(--bg-hover);color:var(--text)}.image-preview-close:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (pointer:coarse){.image-preview-close{width:44px;height:44px}}.mermaid-zoom-dialog{background:var(--bg);width:100vw;max-width:none;height:100dvh;max-height:none;color:var(--text);border:0;margin:0;padding:0}.mermaid-zoom-dialog::backdrop{background:#00000059}.mermaid-zoom-layout{grid-template-rows:auto minmax(0,1fr);height:100%;display:grid}.mermaid-zoom-toolbar{background:var(--bg-panel);border-bottom:1px solid var(--border);align-items:center;gap:10px;min-height:40px;padding:7px 10px;display:flex}.mermaid-zoom-title{min-width:0;color:var(--text-muted);font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:600;overflow:hidden}.mermaid-zoom-actions{align-items:center;gap:6px;margin-left:auto;display:flex}.mermaid-zoom-stepper{border:1px solid var(--border);background:var(--bg);border-radius:5px;align-items:center;height:24px;display:flex;overflow:hidden}.mermaid-zoom-icon-button,.mermaid-zoom-stepper button{width:24px;height:24px;color:var(--text-muted);cursor:pointer;touch-action:manipulation;background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.mermaid-zoom-stepper button{height:22px}.mermaid-zoom-stepper button+.mermaid-zoom-value,.mermaid-zoom-value+button{border-left:1px solid var(--border)}.mermaid-zoom-icon-button{border:1px solid var(--border);border-radius:5px;flex:0 0 24px}.mermaid-zoom-icon-button:hover,.mermaid-zoom-stepper button:hover:not(:disabled){background:var(--bg-hover);color:var(--text)}.mermaid-zoom-stepper button:disabled{opacity:.35;cursor:default}.mermaid-zoom-icon-button:focus-visible,.mermaid-zoom-stepper button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.mermaid-zoom-value{min-width:48px;height:22px;color:var(--text-muted);font-family:var(--font-mono);text-align:center;-webkit-user-select:none;user-select:none;font-size:12px;line-height:22px}.mermaid-zoom-viewport{background:var(--bg);-webkit-overflow-scrolling:touch;min-width:0;min-height:0;padding:24px;overflow:auto}.mermaid-zoom-canvas{border:1px solid var(--border);background:var(--bg-panel);border-radius:7px;margin:0 auto;padding:12px;transition:width .15s}.mermaid-zoom-canvas svg{height:auto;display:block;width:100%!important;max-width:none!important}@media (max-width:480px){.mermaid-zoom-toolbar{padding-inline:8px}.mermaid-zoom-title{font-size:10px}.mermaid-zoom-viewport{padding:12px}}.file-viewer-toolbar{min-width:0;min-height:35px}.file-viewer-path{flex:auto;min-width:48px}.file-viewer-meta,.file-viewer-path{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.file-viewer-meta{flex:0 auto;min-width:0}.file-viewer-live-indicator{border-radius:50%;flex:0 0 7px;width:7px;height:7px}.file-viewer-controls{gap:6px}.file-viewer-actions,.file-viewer-controls{flex-shrink:0;align-items:center;display:flex}.file-viewer-actions{order:-1;gap:4px;height:24px}.file-viewer-mode-switch{border:1px solid var(--border);border-radius:5px;height:24px;display:flex;overflow:hidden}.file-viewer-mode-button{border:0;border-left:1px solid var(--border);height:22px;font:inherit;letter-spacing:0;cursor:pointer;white-space:nowrap;padding:0 8px;font-size:11px;font-weight:500}.file-viewer-mode-button:first-child{border-left:0}.file-viewer-mode-button:hover{filter:brightness(1.08)}.file-viewer-icon-button{box-sizing:border-box;border:1px solid var(--border);width:24px;height:24px;color:var(--text-muted);cursor:pointer;background:0 0;border-radius:5px;flex:0 0 24px;justify-content:center;align-items:center;padding:0;text-decoration:none;display:inline-flex}.file-viewer-icon-button:hover{color:var(--text);background:var(--bg-hover)!important}.file-viewer-icon-button:disabled{color:var(--text-dim);cursor:not-allowed;opacity:.55}.file-viewer-icon-button:disabled:hover{color:var(--text-dim);background:0 0!important}.file-viewer-icon-button:focus-visible,.file-viewer-mode-button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.directory-picker-path:focus-visible{box-shadow:0 0 0 3px var(--accent);border-color:var(--accent)!important}@supports (color:color-mix(in lab,red,red)){.directory-picker-path:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}}@media (max-width:640px){.file-viewer-meta{display:none}}@media (max-width:380px){.file-viewer-toolbar{gap:6px!important;padding-inline:8px!important}.file-viewer-mode-button{padding-inline:6px}}.markdown-file-preview h1{font-size:1.8em}.markdown-file-preview h2{font-size:1.4em}.markdown-file-preview h3{font-size:1.15em}.markdown-file-preview p{margin:0 0 12px}.markdown-file-preview pre{border:1px solid var(--border);border-radius:6px;margin:12px 0;padding:12px 16px;font-size:13px;overflow-x:auto}.markdown-file-preview code,.markdown-file-preview pre{background:var(--bg-panel);font-family:var(--font-mono)}.markdown-file-preview code{border-radius:3px;padding:1px 5px;font-size:.9em}.markdown-file-preview pre code{background:0 0;padding:0}.markdown-frontmatter{border:1px solid var(--border);background:var(--bg-panel);border-radius:8px;margin-bottom:20px;padding:14px 16px 12px}.markdown-frontmatter-title{color:var(--text);font-size:1.3em;font-weight:600;line-height:1.35}.markdown-frontmatter-tags{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.markdown-frontmatter-tag{color:var(--text-muted);background:var(--bg-subtle);border:1px solid var(--border);border-radius:999px;padding:0 10px;font-size:12px;line-height:1.6}.markdown-frontmatter-rows{grid-template-columns:auto 1fr;gap:5px 14px;margin:10px 0 0;font-size:13px;line-height:1.55;display:grid}.markdown-frontmatter-row{display:contents}.markdown-frontmatter-row dt{color:var(--text-muted);font-family:var(--font-mono);white-space:nowrap;font-size:.92em}.markdown-frontmatter-row dd{color:var(--text);word-break:break-word;min-width:0;margin:0}.markdown-frontmatter-row dd a{color:var(--accent);text-underline-offset:2px;text-decoration:underline}.markdown-body span.linenumber,span.linenumber{color:var(--text-dim)!important;font-style:normal!important}span.token.table{display:inline}@keyframes drop-zone-in{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}@keyframes drop-icon-float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes drop-ring-pulse{0%,to{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.06)}}@keyframes drop-ripple{0%{opacity:.6;transform:scale(0)}to{opacity:0;transform:scale(1)}}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}@keyframes spin{to{transform:rotate(1turn)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes compaction-breathe{0%,to{box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 0%,transparent)}50%{box-shadow:0 0 16px 1px color-mix(in srgb,var(--accent) 22%,transparent)}}@keyframes compaction-dot-breathe{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.85)}}@keyframes notice-shelf-in{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes notice-shelf-out{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(8px)scale(.98)}}@media (prefers-reduced-motion:reduce){.notice-shelf-item{animation-duration:.001ms!important}.compaction-status,.compaction-status-dot{animation:none!important}}@keyframes saved-pop{0%{transform:scale(1);box-shadow:0 0 #4ade808c}40%{transform:scale(1.08);box-shadow:0 0 0 6px #4ade8040}to{transform:scale(1);box-shadow:0 0 #4ade8000}}@keyframes saved-check-draw{0%{stroke-dashoffset:18px;opacity:0}to{stroke-dashoffset:0;opacity:1}}.panel-resize-handle{z-index:220;cursor:col-resize;touch-action:none;outline:none;flex:0 0 12px;width:12px;margin:0 -6px;position:relative}.panel-resize-handle:after{content:"";pointer-events:none;background:0 0;width:2px;transition:background .12s;position:absolute;top:0;bottom:0;left:5px}.panel-resize-handle.is-resizing:after,.panel-resize-handle:focus-visible:after,.panel-resize-handle:hover:after{background:var(--text-muted)}@supports (color:color-mix(in lab,red,red)){.panel-resize-handle.is-resizing:after,.panel-resize-handle:focus-visible:after,.panel-resize-handle:hover:after{background:color-mix(in srgb,var(--text-muted) 70%,var(--border))}}.right-panel-overlay-backdrop{display:none}@media (min-width:641px){.sidebar-overlay-backdrop{display:none!important}.sidebar-container{transition:width .2s,min-width .2s;position:relative;overflow:hidden}.sidebar-container.sidebar-open{width:var(--sidebar-width,260px);min-width:var(--sidebar-width,260px)}.sidebar-container.sidebar-closed{width:0;min-width:0;border-right:none!important}.sidebar-container>*{width:var(--sidebar-width,260px);min-width:var(--sidebar-width,260px)}.sidebar-container.sidebar-resizing,.sidebar-container.sidebar-resizing>*{transition:none!important}}@media (min-width:960px){.right-panel-container{flex-shrink:0;transition:width .2s,min-width .2s;overflow:hidden}.right-panel-container.right-panel-open{width:var(--right-panel-width,clamp(360px,42vw,640px));min-width:300px}.right-panel-container.right-panel-closed{width:0;min-width:0;border-left:none!important}.right-panel-container>*{width:var(--right-panel-width,clamp(360px,42vw,640px));min-width:300px}.right-panel-container.right-panel-resizing,.right-panel-container.right-panel-resizing>*{transition:none!important}}@media (min-width:641px) and (max-width:959px){.right-panel-resize-handle{display:none}.right-panel-overlay-backdrop{z-index:240;opacity:0;pointer-events:none;background:#0000003d;transition:opacity .2s;display:block;position:fixed;inset:0}.right-panel-overlay-backdrop.is-open{opacity:1;pointer-events:auto}.right-panel-container{top:0;right:env(safe-area-inset-right);z-index:250;width:min(560px,100vw - 48px);min-width:300px;transition:transform .2s;position:fixed;bottom:0;overflow:hidden;box-shadow:-12px 0 32px #0000002e}.right-panel-container.right-panel-open{transform:translate(0)}.right-panel-container.right-panel-closed{pointer-events:none;transform:translate(100%)}.right-panel-container>*{width:100%;min-width:0}}@media (max-width:640px){.chat-stats-center{display:none!important}.sidebar-container{top:0;left:env(safe-area-inset-left);width:280px;max-width:85vw;height:var(--app-viewport-height,100dvh);transition:transform .25s,box-shadow .25s;bottom:0;position:fixed!important}.sidebar-container.sidebar-open{transform:translate(0);box-shadow:4px 0 20px #00000026}.sidebar-container.sidebar-closed{transform:translateX(calc(-100% - env(safe-area-inset-left)));box-shadow:none}.right-panel-container{inset:0 env(safe-area-inset-right) 0 env(safe-area-inset-left);height:var(--app-viewport-height,100dvh);z-index:250;transition:transform .2s;position:fixed;overflow:hidden}.right-panel-container.right-panel-open{width:auto;min-width:0}.right-panel-container.right-panel-closed{border-left:none!important;width:0!important;min-width:0!important;display:none!important}.right-panel-container>*{width:100%;min-width:0}.panel-resize-handle,.right-panel-overlay-backdrop{display:none}.directory-picker-action,.directory-picker-back,.directory-picker-entry{min-height:44px!important}.directory-picker-back{min-width:44px!important}.directory-picker-footer{flex-wrap:wrap;padding-bottom:max(10px,env(safe-area-inset-bottom))!important}input,select,textarea{font-size:16px!important}}@media (prefers-reduced-transparency:reduce){:root,html.dark{--app-bg-scrim:#fff;--glass-bg:var(--bg);--glass-bg-strong:var(--bg);--frame-glass:var(--bg);--side-panel:var(--frame-glass);--panel-glass:var(--bg);--panel-glass-todo:var(--bg);--panel-glass-minimap:var(--bg);--glass-blur:0px;--glass-blur-heavy:0px;--glass-blur-panel:0px;--glass-blur-popover:0px;--glass-blur-bubble:0px}html.dark{--app-bg-scrim:#000}}@media (prefers-contrast:more){:root,html.dark{--glass-bg:var(--bg);--glass-bg-strong:var(--bg);--frame-glass:var(--bg);--side-panel:var(--frame-glass);--panel-glass:var(--bg);--panel-glass-todo:var(--bg);--panel-glass-minimap:var(--bg);--glass-blur:0px;--glass-blur-heavy:0px;--glass-blur-panel:0px;--glass-blur-popover:0px;--glass-blur-bubble:0px}}@keyframes back-to-latest-in{0%{opacity:0;transform:translateY(4px)scale(.92)}to{opacity:1;transform:translateY(0)scale(1)}}.terminal-panel{border:1px solid var(--border);border-radius:10px;flex-direction:column;display:flex;overflow:hidden}@keyframes terminal-panel-in-top{0%{opacity:0;transform:translateY(-6px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes terminal-panel-in-bottombar{0%{opacity:0;transform:translateY(6px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.terminal-panel-top{transform-origin:100% 0;animation:terminal-panel-in-top .15s ease-out both;border-top:none!important;border-radius:0 0 10px 10px!important}.terminal-panel-bottombar{transform-origin:100% 100%;animation:terminal-panel-in-bottombar .15s ease-out both;border-bottom:none!important;border-radius:10px 10px 0 0!important}.terminal-panel-hidden{display:none}.terminal-panel-mobile{animation:terminal-panel-in-bottombar .15s ease-out both;inset:10px;width:auto!important;height:auto!important}@media (prefers-reduced-motion:reduce){.terminal-panel-bottombar,.terminal-panel-mobile,.terminal-panel-top{animation:none}}.terminal-tabs{border-bottom:1px solid var(--text);flex-shrink:0;align-items:stretch;gap:2px;height:34px;padding-left:6px;display:flex}@supports (color:color-mix(in lab,red,red)){.terminal-tabs{border-bottom:1px solid color-mix(in srgb,var(--text) 8%,transparent)}}html.dark .terminal-tabs{border-bottom-color:var(--text)}@supports (color:color-mix(in lab,red,red)){html.dark .terminal-tabs{border-bottom-color:color-mix(in srgb,var(--text) 6%,transparent)}}.terminal-tab-scroll{scrollbar-width:none;flex:1;align-items:stretch;gap:10px;min-width:0;display:flex;overflow-x:auto}.terminal-tab-scroll::-webkit-scrollbar{display:none}.terminal-group{flex-shrink:0;align-items:stretch;gap:2px;display:flex}.terminal-group-label{letter-spacing:.07em;text-transform:uppercase;color:var(--text);align-items:center;font-size:10px;font-weight:600;display:flex}@supports (color:color-mix(in lab,red,red)){.terminal-group-label{color:color-mix(in srgb,var(--text) 45%,transparent)}}.terminal-group-label{white-space:nowrap}.terminal-chip{cursor:pointer;color:var(--text);border-radius:5px;align-items:center;gap:5px;margin:4px 0;padding:0 4px 0 8px;display:flex}@supports (color:color-mix(in lab,red,red)){.terminal-chip{color:color-mix(in srgb,var(--text) 75%,transparent)}}.terminal-chip{white-space:nowrap;-webkit-user-select:none;user-select:none;font-size:11px;transition:background .1s}.terminal-chip:hover{background:var(--text)}@supports (color:color-mix(in lab,red,red)){.terminal-chip:hover{background:color-mix(in srgb,var(--text) 8%,transparent)}}.terminal-chip.is-active{background:var(--accent)}@supports (color:color-mix(in lab,red,red)){.terminal-chip.is-active{background:color-mix(in srgb,var(--accent) 26%,transparent)}}.terminal-chip.is-active{color:var(--text)}.terminal-chip.is-dead{opacity:.55}.terminal-dot{background:#34d399;border-radius:50%;flex-shrink:0;width:6px;height:6px}.terminal-dot.is-dead{background:#6b7280}.terminal-dot.is-disconnected{background:#f59e0b;box-shadow:0 0 0 1px #f59e0b66}.terminal-chip-cwd{text-overflow:ellipsis;max-width:130px;overflow:hidden}.terminal-chip-close,.terminal-close,.terminal-new{color:var(--text);background:0 0;border:none;justify-content:center;align-items:center;display:flex}@supports (color:color-mix(in lab,red,red)){.terminal-chip-close,.terminal-close,.terminal-new{color:color-mix(in srgb,var(--text) 50%,transparent)}}.terminal-chip-close,.terminal-close,.terminal-new{cursor:pointer;border-radius:4px;flex-shrink:0;transition:color .1s,background .1s}.terminal-chip-close{width:16px;height:16px;margin-left:2px}.terminal-chip-close:hover,.terminal-close:hover{color:var(--text);background:var(--text)}@supports (color:color-mix(in lab,red,red)){.terminal-chip-close:hover,.terminal-close:hover{background:color-mix(in srgb,var(--text) 12%,transparent)}}.terminal-close,.terminal-new{align-self:center;width:30px;height:24px;margin-right:2px}.terminal-new:hover{color:var(--text);background:var(--text)}@supports (color:color-mix(in lab,red,red)){.terminal-new:hover{background:color-mix(in srgb,var(--text) 12%,transparent)}}.terminal-chip.is-disconnected{opacity:.72}.terminal-cleanup{color:#f59e0bd9;cursor:pointer;background:0 0;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-self:center;align-items:center;width:30px;height:24px;margin-right:2px;transition:color .1s,background .1s;display:flex}.terminal-cleanup:hover{color:#f59e0b;background:#f59e0b24}.terminal-all-select{appearance:none;max-width:150px;height:24px;color:var(--text);color-scheme:light;background-color:var(--text);align-self:center;margin-right:2px;padding:0 22px 0 8px;font-family:inherit;font-size:11px}@supports (color:color-mix(in lab,red,red)){.terminal-all-select{background-color:color-mix(in srgb,var(--text) 7%,transparent)}}.terminal-all-select{border:1px solid var(--text);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-position:right 6px center;background-repeat:no-repeat;background-size:10px 10px}@supports (color:color-mix(in lab,red,red)){.terminal-all-select{border:1px solid color-mix(in srgb,var(--text) 12%,transparent)}}.terminal-all-select{cursor:pointer;border-radius:5px;outline:none;flex-shrink:0;transition:background-color .1s,border-color .1s}html.dark .terminal-all-select{color-scheme:dark;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%23a1a1aa' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E")}.terminal-all-select:hover{background-color:var(--text)}@supports (color:color-mix(in lab,red,red)){.terminal-all-select:hover{background-color:color-mix(in srgb,var(--text) 11%,transparent)}}.terminal-all-select:hover{border-color:var(--text)}@supports (color:color-mix(in lab,red,red)){.terminal-all-select:hover{border-color:color-mix(in srgb,var(--text) 20%,transparent)}}.terminal-all-select:focus-visible{border-color:var(--accent)}.terminal-all-select optgroup,.terminal-all-select option{color:var(--text);background:var(--bg-panel)}.terminal-error{color:#f87171;border-bottom:1px solid var(--text);flex-shrink:0;padding:6px 12px;font-size:11px}@supports (color:color-mix(in lab,red,red)){.terminal-error{border-bottom:1px solid color-mix(in srgb,var(--text) 8%,transparent)}}.terminal-body{flex:1;min-height:0;padding:6px 8px 8px;position:relative}.terminal-body .xterm,.terminal-body .xterm-screen,.terminal-body .xterm-viewport{background:0 0!important}.terminal-body .xterm{height:100%}.terminal-body .xterm.terminal-attaching{opacity:0}.terminal-body .xterm-viewport{background-color:#0000!important}.terminal-placeholder{justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.terminal-placeholder button{border:1px dashed var(--text);border-radius:7px;padding:7px 16px}@supports (color:color-mix(in lab,red,red)){.terminal-placeholder button{border:1px dashed color-mix(in srgb,var(--text) 25%,transparent)}}.terminal-placeholder button{background:var(--text)}@supports (color:color-mix(in lab,red,red)){.terminal-placeholder button{background:color-mix(in srgb,var(--text) 5%,transparent)}}.terminal-placeholder button{color:var(--text)}@supports (color:color-mix(in lab,red,red)){.terminal-placeholder button{color:color-mix(in srgb,var(--text) 85%,transparent)}}.terminal-placeholder button{cursor:pointer;font-size:12px}.terminal-placeholder button:hover{background:var(--text)}@supports (color:color-mix(in lab,red,red)){.terminal-placeholder button:hover{background:color-mix(in srgb,var(--text) 10%,transparent)}}.terminal-bar-toggle{border:none;border-left:1px solid var(--border);justify-content:center;align-items:center;gap:5px;width:110px;padding:0 10px;display:flex}@supports (color:color-mix(in lab,red,red)){.terminal-bar-toggle{border-left:1px solid color-mix(in srgb,var(--border) 60%,transparent)}}.terminal-bar-toggle{color:var(--text-muted);white-space:nowrap;cursor:pointer;background:0 0;flex-shrink:0;font-size:11px;transition:color .1s,background .1s}.terminal-bar-toggle:hover{color:var(--text);background:var(--bg-hover)}.terminal-bar-toggle.is-open{color:var(--accent);background:var(--bg-selected)}@media (prefers-reduced-transparency:reduce){.terminal-bar-toggle{background:var(--bg-panel)}}@keyframes chat-status-in{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}.chat-status-pill{background:var(--bubble-code-bg);border:1px solid var(--bubble-border);max-width:100%;color:var(--text);border-radius:999px;align-items:center;gap:8px;padding:5px 12px;font-size:12px;line-height:1.4;animation:chat-status-in .22s cubic-bezier(.23,1,.32,1);display:inline-flex;box-shadow:0 1px 2px #0f172a0a,0 4px 16px -8px #0f172a1a}.chat-status-pill>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (prefers-reduced-motion:reduce){.chat-status-pill{animation:none}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.DraftStash_panel__oKqVT{flex-shrink:0;min-width:0;width:100%;border-bottom:1px solid color-mix(in srgb,var(--border) 38%,transparent);animation:DraftStash_draft-stash-in__ri0Cg .18s ease-out both}@keyframes DraftStash_draft-stash-in__ri0Cg{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.DraftStash_panel__oKqVT{animation:none}}.DraftStash_toggle__Bnscj{display:flex;align-items:center;gap:8px;width:100%;padding:6px 10px;border:none;border-radius:12px;background:none;color:var(--text-muted);font-size:12.5px;font-weight:500;cursor:pointer;transition:color .12s}.DraftStash_toggle__Bnscj:hover{color:var(--text)}.DraftStash_toggleLabel__uY4AC{flex:1;min-width:0;text-align:left;font-weight:500}.DraftStash_toggleArrow__Ggwg9{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:16px;height:16px;color:var(--text-dim);font-size:9px;user-select:none}.DraftStash_expandArea__FsTfq{margin-top:2px;padding-top:2px;border-top:1px solid color-mix(in srgb,var(--border) 38%,transparent)}.DraftStash_activeBar__b6iYc{display:flex;align-items:center;gap:6px;padding:4px 8px}.DraftStash_activeDot__lnx2D{flex-shrink:0;width:5px;height:5px;border-radius:50%;background:var(--accent)}.DraftStash_activeLabel__QKNcj{flex:1;min-width:0;font-size:11px;color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;user-select:none}.DraftStash_cancelBtn__WGbk5{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:18px;height:18px;padding:0;border:none;border-radius:4px;background:none;color:var(--text-dim);font-size:11px;cursor:pointer;transition:color .12s,background .12s}.DraftStash_cancelBtn__WGbk5:hover{color:var(--text);background:var(--bg-hover)}.DraftStash_list__J4Tfv{max-height:min(30vh,320px);overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:1px;padding:3px;margin:2px;background:color-mix(in srgb,var(--bg-panel) 80%,transparent);border-radius:10px}.DraftStash_row__AxlvA{display:flex;align-items:center;gap:6px;padding:4px 6px;border-radius:10px;min-width:0;transition:background .12s}.DraftStash_row__AxlvA:hover{background:var(--bg-hover)}.DraftStash_row__AxlvA:hover .DraftStash_btn__iCSwh{color:var(--text)}.DraftStash_content__OS0mw{flex:1;min-width:0;font-size:12.5px;line-height:1.5;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;user-select:text;cursor:default}.DraftStash_time__TpC8e{flex-shrink:0;font-size:10.5px;color:var(--text-dim);user-select:none;font-variant-numeric:tabular-nums}.DraftStash_btn__iCSwh{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;border:none;border-radius:6px;background:none;color:var(--text-dim);cursor:pointer;transition:color .12s,background .12s}.DraftStash_btn__iCSwh:hover{background:var(--bg-selected)}.DraftStash_btnDanger__RuifZ:hover{color:#ef4444;background:color-mix(in srgb,#ef4444 12%,transparent)}.ChatMinimap_preview__laAya{position:absolute;top:0;bottom:0;right:100%;z-index:100;width:320px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--border) transparent;background:var(--glass-bg-strong);backdrop-filter:blur(var(--glass-blur-panel)) saturate(var(--glass-saturate));-webkit-backdrop-filter:blur(var(--glass-blur-panel)) saturate(var(--glass-saturate));transform:translateZ(0);border-left:1px solid color-mix(in srgb,var(--border) 82%,transparent);box-shadow:-10px 0 26px rgba(0,0,0,.07);pointer-events:auto;cursor:default;user-select:text}.ChatMinimap_turn__fZuce{position:relative;display:grid;grid-template-columns:34px minmax(0,1fr);padding:0;border-bottom:1px solid color-mix(in srgb,var(--border) 68%,transparent);background:transparent;transition:background .12s ease,box-shadow .12s ease}.ChatMinimap_turn__fZuce[data-located=true]{background:color-mix(in srgb,var(--text) 4%,var(--bg));box-shadow:inset 2px 0 0 color-mix(in srgb,var(--text-muted) 70%,transparent)}.ChatMinimap_number__3C_cY{position:relative;z-index:1;grid-column:1;display:flex;align-items:center;justify-content:center;width:34px;height:32px;padding:0;color:var(--text-dim);font-family:var(--font-mono);font-size:10px;font-variant-numeric:tabular-nums;line-height:18px;text-align:center}.ChatMinimap_turn__fZuce[data-located=true] .ChatMinimap_number__3C_cY{color:var(--text-muted)}.ChatMinimap_content__C7_ju{grid-column:2;min-width:0}.ChatMinimap_user__WHJHv{display:block;width:calc(100% + 34px);min-height:32px;max-height:86px;margin:0 0 0 -34px;padding:7px 10px 7px 40px;border:0;border-radius:0;background:transparent;color:var(--text);font-family:inherit;font-size:14px;font-weight:500;letter-spacing:0;line-height:18px;text-align:left;cursor:pointer;overflow:hidden;transition:background .1s ease}.ChatMinimap_userText__Nj9jo{display:-webkit-box;overflow:hidden;overflow-wrap:anywhere;white-space:pre-wrap;-webkit-box-orient:vertical;-webkit-line-clamp:4;line-clamp:4}.ChatMinimap_user__WHJHv:hover{background:color-mix(in srgb,var(--text) 6%,transparent)}.ChatMinimap_assistant__s6JLb{position:relative;display:block;padding:0;border-top:1px solid color-mix(in srgb,var(--border) 52%,transparent)}.ChatMinimap_assistant__s6JLb+.ChatMinimap_assistant__s6JLb{margin-top:0}.ChatMinimap_assistantJump__3CM2M{position:absolute;top:0;left:-29px;z-index:2;width:24px;height:26px;padding:0;border:0;background:transparent;color:var(--text-dim);font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:0;line-height:26px;text-align:center;cursor:pointer;transition:color .1s ease,background .1s ease}.ChatMinimap_assistantJump__3CM2M:hover{color:var(--text);background:var(--bg-subtle)}.ChatMinimap_outline__aleIF{display:grid;min-width:0;gap:0}.ChatMinimap_outline__aleIF .katex{font-size:1em}.ChatMinimap_outline__aleIF .katex-display{display:inline;margin:0}.ChatMinimap_heading__djZbv,.ChatMinimap_paragraph__EqWlO{display:block;width:calc(100% + 34px);min-height:26px;min-width:0;margin-left:-34px;padding:4px 10px 4px 40px;border:0;border-radius:0;background:transparent;font-family:inherit;letter-spacing:0;line-height:18px;overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;transition:background .1s ease,color .1s ease}.ChatMinimap_heading__djZbv:hover,.ChatMinimap_paragraph__EqWlO:hover{background:color-mix(in srgb,var(--text) 6%,transparent);color:var(--text)}.ChatMinimap_heading__djZbv[data-level="1"]{min-height:32px;padding-top:7px;padding-bottom:7px;color:var(--text);font-size:14px;font-weight:600}.ChatMinimap_heading__djZbv[data-level="2"]{min-height:28px;padding-top:5px;padding-bottom:5px;padding-left:50px;color:color-mix(in srgb,var(--text) 88%,var(--text-muted));font-size:12px;font-weight:500}.ChatMinimap_heading__djZbv[data-level="3"]{padding-left:60px;color:var(--text-muted);font-size:11px;font-weight:400}.ChatMinimap_paragraph__EqWlO{color:var(--text-muted);font-size:14px;font-weight:400}.ChatMinimap_assistant__s6JLb:has(.ChatMinimap_heading__djZbv[data-level="1"]:first-child) .ChatMinimap_assistantJump__3CM2M{height:32px;line-height:32px}.ChatMinimap_assistant__s6JLb:has(.ChatMinimap_heading__djZbv[data-level="2"]:first-child) .ChatMinimap_assistantJump__3CM2M{height:28px;line-height:28px}.ChatMinimap_heading__djZbv:focus-visible,.ChatMinimap_paragraph__EqWlO:focus-visible,.ChatMinimap_user__WHJHv:focus-visible{outline:0;background:color-mix(in srgb,var(--text) 6%,transparent);box-shadow:inset 2px 0 0 color-mix(in srgb,var(--text-muted) 65%,transparent)}.ChatMinimap_assistantJump__3CM2M:focus-visible{outline:1px solid color-mix(in srgb,var(--text-muted) 65%,transparent);outline-offset:1px}
|
package/README.ja.md
DELETED
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
# Pi Web — Sky Edition (@baique/pi-web-sky)
|
|
2
|
-
|
|
3
|
-
> **Sky スキン版**:baique が保守する独立配布版です。[pi-web](https://github.com/earendil-works/pi) と [@agegr/pi-web](https://github.com/agegr/pi-web) を基盤としており、原作者と上流プロジェクトに感謝します。
|
|
4
|
-
|
|
5
|
-
[English](./README.md) | [简体中文](./README.zh-CN.md) | [Русский](./README.ru.md)
|
|
6
|
-
|
|
7
|
-
[pi コーディングエージェント](https://github.com/earendil-works/pi) のローカルブラウザー UI です。Pi Web は pi と同じローカル設定とセッションファイルを使用し、ブラウザーから会話の検索と再開、エージェントの実行、モデルやリソースの設定、プロジェクトファイルの確認を行えます。
|
|
8
|
-
|
|
9
|
-

|
|
10
|
-
|
|
11
|
-
## 機能
|
|
12
|
-
|
|
13
|
-
- **セッションワークスペース**:プロジェクトごとに会話を閲覧、再開、名前変更、エクスポート、削除し、実行状態、コンテキスト使用量、コスト、コンパクション情報を確認できます。
|
|
14
|
-
- **2 種類の分岐**:**New session** は以前のメッセージから独立したセッションファイルを作成し、**Edit from here** は現在のセッション内にブランチを作成します。
|
|
15
|
-
- **プロジェクトファイルツール**:ファイルの閲覧とアップロード、Git Diff の確認、ソース、Markdown、画像、音声、PDF、DOCX のプレビューに対応し、変更時は自動更新されます。
|
|
16
|
-
- **Git worktree**:同じリポジトリのセッションをまとめたまま、サイドバーからチェックアウトを切り替えられます。
|
|
17
|
-
- **Web での設定**:Pi Web を離れずに、Provider のログインと API Key、モデル、モデルテスト、プラグインパッケージ、スキルを管理できます。
|
|
18
|
-
- **英語と簡体字中国語の UI**:初回はブラウザーの言語に従い、トップバーから言語を切り替えられます。
|
|
19
|
-
|
|
20
|
-
## クイックスタート
|
|
21
|
-
|
|
22
|
-
Pi Web には Node.js 22.19.0 以降が必要です。`node --version` でバージョンを確認してから、次を実行します:
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
npx @baique/pi-web-sky@latest
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
サーバーの準備が整うと、CLI はブラウザーを自動的に開こうとします。開かない場合は [http://127.0.0.1:30143](http://127.0.0.1:30143) にアクセスしてください。Pi Web はデフォルトで `127.0.0.1` のみをリッスンします。
|
|
29
|
-
|
|
30
|
-
モデル Provider が未設定の場合は、**Models** パネルを開いてログインするか API Key を追加してください。
|
|
31
|
-
|
|
32
|
-
`pi-web-sky` コマンドをグローバルにインストールする場合:
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
npm install -g @baique/pi-web-sky@latest
|
|
36
|
-
pi-web-sky
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
更新時は、実行中のプロセスを `Ctrl+C` で停止してから同じインストールコマンドを再実行します。アンインストールするには `npm uninstall -g @baique/pi-web-sky` を実行します。
|
|
40
|
-
|
|
41
|
-
## 設定
|
|
42
|
-
|
|
43
|
-
ポートとホスト名では、コマンドラインオプションが対応する環境変数より優先されます。`--no-open` と `PI_WEB_NO_OPEN=1` は、どちらを指定してもブラウザーの自動起動が無効になります。
|
|
44
|
-
|
|
45
|
-
| オプションまたは環境変数 | 用途 | デフォルト |
|
|
46
|
-
| --- | --- | --- |
|
|
47
|
-
| `--port <port>`、`-p <port>`、または `PORT` | サーバーポート | `30143` |
|
|
48
|
-
| `--hostname <host>`、`-H <host>`、または `PI_WEB_HOSTNAME` | バインドするホスト名 | `127.0.0.1` |
|
|
49
|
-
| `--no-open` または `PI_WEB_NO_OPEN=1` | ブラウザーを自動的に開かない | 自動的に開く |
|
|
50
|
-
| `PI_WEB_ALLOWED_HOSTS` | 追加で許可するプロキシまたはカスタムホスト名。複数指定はカンマ区切りで完全一致 | 未設定 |
|
|
51
|
-
| `PI_WEB_PASSWORD` | HTTP Basic Auth を有効化。ユーザー名は常に `pi` | 認証なし |
|
|
52
|
-
|
|
53
|
-
例:
|
|
54
|
-
|
|
55
|
-
```bash
|
|
56
|
-
pi-web-sky -p 8080 -H 0.0.0.0 --no-open
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
### リモートアクセス
|
|
60
|
-
|
|
61
|
-
ループバック以外のアドレスにバインドすると、高い権限の操作を実行できるエージェントがネットワークに公開されます。信頼できる LAN で使用する場合も、十分に長いランダムなパスワードを設定してください:
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
PI_WEB_PASSWORD='十分に長いランダムなパスワード' pi-web --hostname 0.0.0.0
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
Basic Auth は転送中のパスワードを暗号化しません。平文 HTTP で Pi Web をインターネットに公開せず、信頼できるリバースプロキシによる HTTPS または信頼できる VPN を使用してください。リバースプロキシが外部ホスト名を転送する場合は、その名前を完全一致で `PI_WEB_ALLOWED_HOSTS` に追加します。この許可リストは Pi Web のバインド先を変更しません。
|
|
68
|
-
|
|
69
|
-
### HTTP プロキシ
|
|
70
|
-
|
|
71
|
-
サーバー側のモデルリクエストと API リクエストは、標準の `HTTP_PROXY`、`HTTPS_PROXY`、`NO_PROXY` 環境変数を使用します。
|
|
72
|
-
|
|
73
|
-
macOS または Linux:
|
|
74
|
-
|
|
75
|
-
```bash
|
|
76
|
-
HTTP_PROXY=http://127.0.0.1:7890 \
|
|
77
|
-
HTTPS_PROXY=http://127.0.0.1:7890 \
|
|
78
|
-
NO_PROXY=localhost,127.0.0.1 \
|
|
79
|
-
npx @baique/pi-web-sky@latest
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
Windows PowerShell:
|
|
83
|
-
|
|
84
|
-
```powershell
|
|
85
|
-
$env:HTTP_PROXY = "http://127.0.0.1:7890"
|
|
86
|
-
$env:HTTPS_PROXY = "http://127.0.0.1:7890"
|
|
87
|
-
$env:NO_PROXY = "localhost,127.0.0.1"
|
|
88
|
-
npx @baique/pi-web-sky@latest
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
## 注意事項
|
|
92
|
-
|
|
93
|
-
- **エージェントデータ**:Pi Web はデフォルトで `~/.pi/agent` の pi データを読み込みます。セッションファイルは `sessions/<encoded-cwd>/<timestamp>_<uuid>.jsonl` にあります。別の pi エージェントディレクトリを使用するには `PI_CODING_AGENT_DIR` を設定してください。
|
|
94
|
-
- **ファイルシステムへのアクセス**:Pi Web はエージェントデータディレクトリと、セッションに記録された作業ディレクトリを読み取れる必要があります。既存の pi セッションを共有する場合は、pi と同じファイルシステム環境で Pi Web を実行してください。
|
|
95
|
-
- **共有設定**:Models パネルは pi のモデル、設定、認証情報ストレージを使用するため、変更は両方のインターフェースに反映されます。
|
|
96
|
-
- **ファイルアクセスの範囲**:ファイルブラウザーは、Pi Web で選択した作業ディレクトリと、既知のプロジェクトまたはセッションルートに限定されます。汎用のファイルシステムブラウザーではありません。
|
|
97
|
-
- **Git worktree**:スイッチャーの表示条件、worktree の作成、削除時の動作については [Worktrees in Pi Web](./docs/worktrees.md) を参照してください。
|
|
98
|
-
|
|
99
|
-
## 開発
|
|
100
|
-
|
|
101
|
-
```bash
|
|
102
|
-
npm install
|
|
103
|
-
npm run dev
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
開発サーバーは [http://127.0.0.1:30143](http://127.0.0.1:30143) で動作します。一般的なチェックは次のコマンドで実行します:
|
|
107
|
-
|
|
108
|
-
```bash
|
|
109
|
-
npm test
|
|
110
|
-
node_modules/.bin/tsc --noEmit
|
|
111
|
-
npm run lint
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
通常の開発中は `next build` または `npm run build` を実行しないでください。`.next/` に書き込まれ、開発サーバーに影響する可能性があります。ビルドはリリース作業時にのみ実行してください。
|
|
115
|
-
|
|
116
|
-
コントリビューター向けガイド:[Internationalization](./docs/i18n.md) と [Release process](./docs/release.md)。
|
|
117
|
-
|
|
118
|
-
## リポジトリ構成
|
|
119
|
-
|
|
120
|
-
```text
|
|
121
|
-
app/ Next.js UI と API ルート
|
|
122
|
-
components/ React UI コンポーネント
|
|
123
|
-
hooks/ クライアントの状態と操作に関する hooks
|
|
124
|
-
lib/ セッション、エージェント、モデル、ファイル、Git、セキュリティのロジック
|
|
125
|
-
public/ 静的アセットと PWA ファイル
|
|
126
|
-
bin/ npm CLI エントリポイントと起動オプションの解析
|
|
127
|
-
docs/ ユーザーおよびコントリビューター向けの個別ガイド
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
アーキテクチャの説明と詳細なファイルマップについては [AGENTS.md](./AGENTS.md) を参照してください。
|
|
131
|
-
|
|
132
|
-
## ライセンス
|
|
133
|
-
|
|
134
|
-
[MIT](./LICENSE)
|
package/README.ru.md
DELETED
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
# Pi Web — Sky Edition (@baique/pi-web-sky)
|
|
2
|
-
|
|
3
|
-
> **Версия со скином Sky**: независимый дистрибутив, сопровождаемый baique. Основан на [pi-web](https://github.com/earendil-works/pi) и [@agegr/pi-web](https://github.com/agegr/pi-web); благодарим авторов и проекты верхнего уровня.
|
|
4
|
-
|
|
5
|
-
[English](./README.md) | [中文文档](./README.zh-CN.md) | [日本語](./README.ja.md)
|
|
6
|
-
|
|
7
|
-
Локальный браузерный интерфейс для [pi coding agent](https://github.com/earendil-works/pi). Pi Web использует те же локальные настройки и файлы сессий, что и pi, поэтому в браузере можно находить и продолжать диалоги, запускать агента, настраивать модели и ресурсы, а также просматривать файлы проекта.
|
|
8
|
-
|
|
9
|
-

|
|
10
|
-
|
|
11
|
-
## Возможности
|
|
12
|
-
|
|
13
|
-
- **Рабочее пространство сессий**: просмотр, продолжение, переименование, экспорт и удаление диалогов, сгруппированных по проектам, с отображением состояния выполнения, использования контекста, стоимости и сведений о сжатии.
|
|
14
|
-
- **Два способа создать ветку**: **New session** создаёт независимый файл сессии из более раннего сообщения, а **Edit from here** создаёт ветку внутри текущей сессии.
|
|
15
|
-
- **Инструменты для файлов проекта**: просмотр и загрузка файлов, проверка Git Diff, предпросмотр исходного кода, Markdown, изображений, аудио, PDF и DOCX с автоматическим обновлением.
|
|
16
|
-
- **Git worktree**: переключение рабочих деревьев в боковой панели с сохранением общей группы сессий одного репозитория.
|
|
17
|
-
- **Настройка через Web**: управление входом в Provider и API Key, моделями, тестами моделей, пакетами плагинов и навыками без выхода из Pi Web.
|
|
18
|
-
- **Интерфейс на английском и упрощённом китайском**: при первом запуске Pi Web учитывает язык браузера, а затем язык можно переключить в верхней панели.
|
|
19
|
-
|
|
20
|
-
## Быстрый старт
|
|
21
|
-
|
|
22
|
-
Для работы Pi Web требуется Node.js 22.19.0 или новее. Проверьте версию командой `node --version`, затем выполните:
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
npx @baique/pi-web-sky@latest
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
Когда сервер будет готов, CLI попытается открыть браузер автоматически. Если этого не произошло, откройте [http://127.0.0.1:30143](http://127.0.0.1:30143). По умолчанию Pi Web прослушивает только `127.0.0.1`.
|
|
29
|
-
|
|
30
|
-
Если Provider модели ещё не настроен, откройте панель **Models**, войдите в учётную запись или добавьте API Key.
|
|
31
|
-
|
|
32
|
-
Чтобы установить команду `pi-web-sky` глобально:
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
npm install -g @baique/pi-web-sky@latest
|
|
36
|
-
pi-web-sky
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
Для обновления остановите запущенный процесс с помощью `Ctrl+C` и повторите ту же команду установки. Для удаления выполните `npm uninstall -g @baique/pi-web-sky`.
|
|
40
|
-
|
|
41
|
-
## Настройка
|
|
42
|
-
|
|
43
|
-
Для порта и имени хоста параметры командной строки имеют приоритет над соответствующими переменными окружения. И `--no-open`, и `PI_WEB_NO_OPEN=1` отключают автоматическое открытие браузера независимо друг от друга.
|
|
44
|
-
|
|
45
|
-
| Параметр или переменная окружения | Назначение | Значение по умолчанию |
|
|
46
|
-
| --- | --- | --- |
|
|
47
|
-
| `--port <port>`, `-p <port>` или `PORT` | Порт сервера | `30143` |
|
|
48
|
-
| `--hostname <host>`, `-H <host>` или `PI_WEB_HOSTNAME` | Имя хоста для привязки | `127.0.0.1` |
|
|
49
|
-
| `--no-open` или `PI_WEB_NO_OPEN=1` | Не открывать браузер автоматически | Браузер открывается |
|
|
50
|
-
| `PI_WEB_ALLOWED_HOSTS` | Дополнительные точные имена прокси или пользовательских хостов через запятую | Не задано |
|
|
51
|
-
| `PI_WEB_PASSWORD` | Включить HTTP Basic Auth; имя пользователя всегда `pi` | Аутентификация отключена |
|
|
52
|
-
|
|
53
|
-
Пример:
|
|
54
|
-
|
|
55
|
-
```bash
|
|
56
|
-
pi-web-sky -p 8080 -H 0.0.0.0 --no-open
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
### Удалённый доступ
|
|
60
|
-
|
|
61
|
-
Привязка к адресу, отличному от loopback, открывает сетевой доступ к агенту, способному выполнять операции с широкими полномочиями. Даже в доверенной локальной сети используйте длинный случайный пароль:
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
PI_WEB_PASSWORD='длинный-случайный-пароль' pi-web --hostname 0.0.0.0
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
Basic Auth не шифрует пароль при передаче. Не публикуйте Pi Web в интернете по обычному HTTP; используйте HTTPS через доверенный обратный прокси или надёжное VPN-подключение. Если обратный прокси передаёт внешнее имя хоста, добавьте это точное имя в `PI_WEB_ALLOWED_HOSTS`. Этот список разрешённых имён не меняет адрес, к которому привязывается Pi Web.
|
|
68
|
-
|
|
69
|
-
### HTTP-прокси
|
|
70
|
-
|
|
71
|
-
Для серверных запросов к моделям и API используются стандартные переменные окружения `HTTP_PROXY`, `HTTPS_PROXY` и `NO_PROXY`.
|
|
72
|
-
|
|
73
|
-
В macOS и Linux:
|
|
74
|
-
|
|
75
|
-
```bash
|
|
76
|
-
HTTP_PROXY=http://127.0.0.1:7890 \
|
|
77
|
-
HTTPS_PROXY=http://127.0.0.1:7890 \
|
|
78
|
-
NO_PROXY=localhost,127.0.0.1 \
|
|
79
|
-
npx @baique/pi-web-sky@latest
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
В Windows PowerShell:
|
|
83
|
-
|
|
84
|
-
```powershell
|
|
85
|
-
$env:HTTP_PROXY = "http://127.0.0.1:7890"
|
|
86
|
-
$env:HTTPS_PROXY = "http://127.0.0.1:7890"
|
|
87
|
-
$env:NO_PROXY = "localhost,127.0.0.1"
|
|
88
|
-
npx @baique/pi-web-sky@latest
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
## Примечания
|
|
92
|
-
|
|
93
|
-
- **Данные агента**: по умолчанию Pi Web читает данные pi из `~/.pi/agent`, включая файлы сессий в `sessions/<encoded-cwd>/<timestamp>_<uuid>.jsonl`. Чтобы использовать другой каталог агента pi, задайте `PI_CODING_AGENT_DIR`.
|
|
94
|
-
- **Доступ к файловой системе**: Pi Web должен иметь доступ для чтения к каталогу данных агента и рабочим каталогам, записанным в сессиях. При совместном использовании существующих сессий запускайте Pi Web в той же файловой среде, что и pi.
|
|
95
|
-
- **Общие настройки**: панель Models использует хранилища моделей, настроек и учётных данных pi, поэтому изменения видны в обоих интерфейсах.
|
|
96
|
-
- **Граница доступа к файлам**: файловый браузер ограничен рабочими каталогами, выбранными в Pi Web, и уже известными корнями проектов или сессий; это не универсальный файловый менеджер.
|
|
97
|
-
- **Git worktree**: условия отображения переключателя, создание рабочих деревьев и их удаление описаны в документе [Worktrees in Pi Web](./docs/worktrees.md).
|
|
98
|
-
|
|
99
|
-
## Разработка
|
|
100
|
-
|
|
101
|
-
```bash
|
|
102
|
-
npm install
|
|
103
|
-
npm run dev
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
Сервер разработки доступен по адресу [http://127.0.0.1:30143](http://127.0.0.1:30143). Основные проверки запускаются командами:
|
|
107
|
-
|
|
108
|
-
```bash
|
|
109
|
-
npm test
|
|
110
|
-
node_modules/.bin/tsc --noEmit
|
|
111
|
-
npm run lint
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
Не запускайте `next build` или `npm run build` во время обычной разработки. Эти команды записывают данные в `.next/` и могут помешать работе сервера разработки; выполняйте сборку только при подготовке релиза.
|
|
115
|
-
|
|
116
|
-
Руководства для участников: [Internationalization](./docs/i18n.md) и [Release process](./docs/release.md).
|
|
117
|
-
|
|
118
|
-
## Структура репозитория
|
|
119
|
-
|
|
120
|
-
```text
|
|
121
|
-
app/ UI Next.js и маршруты API
|
|
122
|
-
components/ Компоненты интерфейса React
|
|
123
|
-
hooks/ Состояние клиента и обработчики взаимодействий
|
|
124
|
-
lib/ Логика сессий, агента, моделей, файлов, Git и безопасности
|
|
125
|
-
public/ Статические ресурсы и файлы PWA
|
|
126
|
-
bin/ Точка входа npm CLI и разбор параметров запуска
|
|
127
|
-
docs/ Тематические руководства для пользователей и участников
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
Описание архитектуры и подробная карта файлов приведены в [AGENTS.md](./AGENTS.md).
|
|
131
|
-
|
|
132
|
-
## Лицензия
|
|
133
|
-
|
|
134
|
-
[MIT](./LICENSE)
|
package/README.zh-CN.md
DELETED
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
# Pi Web — Sky 皮肤版(@baique/pi-web-sky)
|
|
2
|
-
|
|
3
|
-
> 本项目由 baique 维护,基于 [pi-web](https://github.com/earendil-works/pi) 和 [@agegr/pi-web](https://github.com/agegr/pi-web) 二次开发;感谢原作者与上游项目的贡献。
|
|
4
|
-
|
|
5
|
-
> **Sky 皮肤版**:基于 [pi-web](https://github.com/earendil-works/pi)(经 [@agegr/pi-web](https://github.com/agegr/pi-web) 二开)的独立发行版,MIT 协议。
|
|
6
|
-
> 在原生 pi-web 之上新增 Sky 皮肤:毛玻璃气泡与面板、JetBrains Mono 消息字体、加深/提亮文字对比度、右上角 todo 面板、右下角堆叠弱通知。
|
|
7
|
-
|
|
8
|
-
[English](./README.md) | [日本語](./README.ja.md) | [Русский](./README.ru.md)
|
|
9
|
-
|
|
10
|
-
[pi 编程智能体](https://github.com/earendil-works/pi)的本地浏览器界面。Pi Web 与 pi 共用本机配置和会话文件,可在浏览器中查找和继续对话、运行智能体、配置模型与资源,并查看项目文件。
|
|
11
|
-
|
|
12
|
-
中文微信群:请查看 [GitHub Discussions 帖子](https://github.com/agegr/pi-web/discussions/271)。
|
|
13
|
-
|
|
14
|
-

|
|
15
|
-
|
|
16
|
-
## 功能
|
|
17
|
-
|
|
18
|
-
- **会话工作区**:按项目查找、继续、重命名、导出和删除对话,并查看运行状态、上下文占用、花费和压缩信息。
|
|
19
|
-
- **两种分支方式**:**新会话**会从较早的消息创建独立会话文件;**从此处编辑**会在当前会话内创建分支。
|
|
20
|
-
- **项目文件工具**:浏览和上传文件、查看 Git Diff,并预览源码、Markdown、图片、音频、PDF 和 DOCX;文件变化后会自动刷新。
|
|
21
|
-
- **Git worktree**:从侧边栏切换 checkout,同时把同一仓库不同 worktree 的会话归在一起。
|
|
22
|
-
- **网页配置**:无需离开 Pi Web,即可管理 Provider 登录和 API Key、模型、模型测试、插件包及技能。
|
|
23
|
-
- **内置多会话终端**:两栏面板——左侧只放当前项目的终端,右侧下拉选分组列出所有项目的终端;打开面板或切换项目时若当前项目还没有终端会自动补开一个,每个终端以 `<项目名>-<4位随机>` 命名。xterm.js + 服务端 pty、SSE 流式输出,多会话并行、刷新后会话保留;后台重启后失联终端会标记并支持一键清理。
|
|
24
|
-
- **消息钉**:把任意消息气泡钉成置顶浮窗,可全局拖拽移动、自由缩放,钉住的消息快照始终可见。
|
|
25
|
-
- **可定制壁纸**:支持图片/视频壁纸,可横向拖动调整位置,平铺重复、边缘色彩填充缝隙,并支持一键重置位置。
|
|
26
|
-
- **气泡玻璃可调**:背景设置中提供滑块,可分别调节消息气泡的透明度与磨砂强度,刷新后保留。
|
|
27
|
-
- **英文和简体中文界面**:Pi Web 首次打开时跟随浏览器语言,也可从顶部栏切换语言。
|
|
28
|
-
|
|
29
|
-
## 快速开始
|
|
30
|
-
|
|
31
|
-
Pi Web 要求 Node.js 22.19.0 或更高版本。先用 `node --version` 检查版本,然后运行:
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
npx @baique/pi-web-sky@latest
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
服务就绪后,命令行会尝试自动打开浏览器。如果没有打开,请访问 [http://127.0.0.1:30143](http://127.0.0.1:30143)。Pi Web 默认仅监听 `127.0.0.1`。
|
|
38
|
-
|
|
39
|
-
如果尚未配置模型 Provider,请打开**模型(Models)**面板登录或添加 API Key。
|
|
40
|
-
|
|
41
|
-
如需全局安装 `pi-web-sky` 命令:
|
|
42
|
-
|
|
43
|
-
```bash
|
|
44
|
-
npm install -g @baique/pi-web-sky@latest
|
|
45
|
-
pi-web-sky
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
更新前先用 `Ctrl+C` 停止正在运行的进程,再次执行同一条安装命令。卸载时运行 `npm uninstall -g @baique/pi-web-sky`。
|
|
49
|
-
|
|
50
|
-
## 配置
|
|
51
|
-
|
|
52
|
-
端口和主机名以命令行参数为准,优先于对应的环境变量。`--no-open` 与 `PI_WEB_NO_OPEN=1` 中任意一个都会关闭自动打开浏览器。
|
|
53
|
-
|
|
54
|
-
| 参数或环境变量 | 用途 | 默认值 |
|
|
55
|
-
| --- | --- | --- |
|
|
56
|
-
| `--port <端口>`、`-p <端口>` 或 `PORT` | 服务端口 | `30143` |
|
|
57
|
-
| `--hostname <主机>`、`-H <主机>` 或 `PI_WEB_HOSTNAME` | 监听主机名 | `127.0.0.1` |
|
|
58
|
-
| `--no-open` 或 `PI_WEB_NO_OPEN=1` | 不自动打开浏览器 | 自动打开 |
|
|
59
|
-
| `PI_WEB_ALLOWED_HOSTS` | 额外允许的代理或自定义主机名,多个值用逗号分隔,必须精确匹配 | 未设置 |
|
|
60
|
-
| `PI_WEB_PASSWORD` | 启用 HTTP Basic Auth,用户名固定为 `pi` | 不启用认证 |
|
|
61
|
-
|
|
62
|
-
例如:
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
pi-web-sky -p 8080 -H 0.0.0.0 --no-open
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
### 远程访问
|
|
69
|
-
|
|
70
|
-
监听非回环地址会暴露一个可执行高权限操作的智能体。在可信局域网中使用时,请设置足够长的随机密码:
|
|
71
|
-
|
|
72
|
-
```bash
|
|
73
|
-
PI_WEB_PASSWORD='足够长的随机密码' pi-web --hostname 0.0.0.0
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
Basic Auth 不会加密传输中的密码。不要通过明文 HTTP 将 Pi Web 暴露到互联网;远程访问应使用可信反向代理提供 HTTPS,或通过可信 VPN。如果反向代理传递外部主机名,请把该名称精确加入 `PI_WEB_ALLOWED_HOSTS`。这个白名单不会改变 Pi Web 的监听地址。
|
|
77
|
-
|
|
78
|
-
### HTTP 代理
|
|
79
|
-
|
|
80
|
-
服务端的模型和 API 请求会读取标准的 `HTTP_PROXY`、`HTTPS_PROXY` 和 `NO_PROXY` 环境变量。
|
|
81
|
-
|
|
82
|
-
macOS 或 Linux:
|
|
83
|
-
|
|
84
|
-
```bash
|
|
85
|
-
HTTP_PROXY=http://127.0.0.1:7890 \
|
|
86
|
-
HTTPS_PROXY=http://127.0.0.1:7890 \
|
|
87
|
-
NO_PROXY=localhost,127.0.0.1 \
|
|
88
|
-
npx @baique/pi-web-sky@latest
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
Windows PowerShell:
|
|
92
|
-
|
|
93
|
-
```powershell
|
|
94
|
-
$env:HTTP_PROXY = "http://127.0.0.1:7890"
|
|
95
|
-
$env:HTTPS_PROXY = "http://127.0.0.1:7890"
|
|
96
|
-
$env:NO_PROXY = "localhost,127.0.0.1"
|
|
97
|
-
npx @baique/pi-web-sky@latest
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
## 注意事项
|
|
101
|
-
|
|
102
|
-
- **智能体数据**:Pi Web 默认读取 `~/.pi/agent` 下的 pi 数据,包括 `sessions/<编码后的工作目录>/<时间戳>_<uuid>.jsonl` 中的会话文件。可通过 `PI_CODING_AGENT_DIR` 指定其他 pi agent 目录。
|
|
103
|
-
- **文件系统访问**:Pi Web 必须能读取智能体数据目录及会话记录中的工作目录。与现有 pi 会话共用数据时,请让 Pi Web 运行在与 pi 相同的文件系统环境中。
|
|
104
|
-
- **共享配置**:模型面板使用 pi 的模型、设置和凭据存储,因此两种界面都能看到相关更改。
|
|
105
|
-
- **文件访问边界**:文件浏览器仅能访问在 Pi Web 中选择过的工作目录,以及它已识别的项目或会话根目录;它不是通用的文件系统浏览器。
|
|
106
|
-
- **Git worktree**:切换器何时显示、如何创建 worktree,以及删除会产生什么影响,见 [Pi Web 里的 Worktree](./docs/worktrees.zh-CN.md)。
|
|
107
|
-
|
|
108
|
-
## 开发
|
|
109
|
-
|
|
110
|
-
```bash
|
|
111
|
-
npm install
|
|
112
|
-
npm run dev
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
开发服务器运行在 [http://127.0.0.1:30143](http://127.0.0.1:30143)。常用检查命令:
|
|
116
|
-
|
|
117
|
-
```bash
|
|
118
|
-
npm test
|
|
119
|
-
node_modules/.bin/tsc --noEmit
|
|
120
|
-
npm run lint
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
日常开发时不要运行 `next build` 或 `npm run build`。它们会写入 `.next/`,可能干扰开发服务器;仅在发布流程中执行构建。
|
|
124
|
-
|
|
125
|
-
贡献者文档:[国际化](./docs/i18n.md)和[发布流程](./docs/release.md)。
|
|
126
|
-
|
|
127
|
-
## 仓库结构
|
|
128
|
-
|
|
129
|
-
```text
|
|
130
|
-
app/ Next.js 界面和 API 路由
|
|
131
|
-
components/ React 界面组件
|
|
132
|
-
hooks/ 客户端状态和交互 hooks
|
|
133
|
-
lib/ 会话、智能体、模型、文件、Git 和安全逻辑
|
|
134
|
-
public/ 静态资源和 PWA 文件
|
|
135
|
-
bin/ npm CLI 入口及启动参数解析
|
|
136
|
-
docs/ 面向用户和贡献者的专题文档
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
架构说明和详细文件地图见 [AGENTS.md](./AGENTS.md)。
|
|
140
|
-
|
|
141
|
-
## 许可证
|
|
142
|
-
|
|
143
|
-
[MIT](./LICENSE)
|
|
File without changes
|