@rexvane/piweb 0.3.25 → 0.3.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +6 -5
- package/.next/build-manifest.json +4 -4
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +4 -4
- package/.next/react-loadable-manifest.json +14 -26
- package/.next/required-server-files.js +26 -26
- package/.next/required-server-files.json +26 -26
- package/.next/routes-manifest.json +6 -0
- package/.next/server/app/_global-error/page.js +2 -2
- package/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +1 -1
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/agent/[id]/events/route.js +2 -2
- package/.next/server/app/api/agent/[id]/events/route.js.nft.json +1 -1
- 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.js.nft.json +1 -1
- package/.next/server/app/api/agent/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agent/[id]/tree/route.js +1 -1
- package/.next/server/app/api/agent/[id]/tree/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/[id]/tree/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.js.nft.json +1 -1
- package/.next/server/app/api/agent/new/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agent/resources/route.js +1 -0
- package/.next/server/app/api/agent/resources/route.js.nft.json +1 -0
- package/.next/server/app/api/agent/resources/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/config/route.js +1 -1
- package/.next/server/app/api/config/route.js.nft.json +1 -1
- package/.next/server/app/api/config/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/files/route.js +1 -1
- package/.next/server/app/api/files/route.js.nft.json +1 -1
- package/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/route.js +1 -1
- package/.next/server/app/api/fs/route.js.nft.json +1 -1
- package/.next/server/app/api/fs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/git/route.js +4 -4
- package/.next/server/app/api/git/route.js.nft.json +1 -1
- package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/github/route.js +4 -4
- package/.next/server/app/api/github/route.js.nft.json +1 -1
- package/.next/server/app/api/github/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/growth/route.js +1 -1
- package/.next/server/app/api/growth/route.js.nft.json +1 -1
- package/.next/server/app/api/growth/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/health/route.js +1 -1
- package/.next/server/app/api/health/route.js.nft.json +1 -1
- package/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/models/defaults/route.js +1 -1
- package/.next/server/app/api/models/defaults/route.js.nft.json +1 -1
- package/.next/server/app/api/models/defaults/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/models/route.js +1 -1
- package/.next/server/app/api/models/route.js.nft.json +1 -1
- package/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/pi-settings/route.js +1 -1
- package/.next/server/app/api/pi-settings/route.js.nft.json +1 -1
- package/.next/server/app/api/pi-settings/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/plugins/route.js +1 -1
- package/.next/server/app/api/plugins/route.js.nft.json +1 -1
- package/.next/server/app/api/plugins/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/prompts/route.js +1 -1
- package/.next/server/app/api/prompts/route.js.nft.json +1 -1
- package/.next/server/app/api/prompts/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/remote/route.js +2 -2
- package/.next/server/app/api/remote/route.js.nft.json +1 -1
- package/.next/server/app/api/remote/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/security/route.js +1 -1
- package/.next/server/app/api/security/route.js.nft.json +1 -1
- package/.next/server/app/api/security/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.js.nft.json +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.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/import/route.js +2 -2
- package/.next/server/app/api/sessions/import/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/import/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/route.js +1 -1
- package/.next/server/app/api/sessions/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/route.js +2 -2
- package/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/update/route.js +2 -2
- package/.next/server/app/api/update/route.js.nft.json +1 -1
- package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/version/route.js +1 -1
- package/.next/server/app/api/version/route.js.nft.json +1 -1
- package/.next/server/app/api/version/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/web-auth/route.js +2 -2
- package/.next/server/app/api/web-auth/route.js.nft.json +1 -1
- package/.next/server/app/api/web-auth/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/workspaces/route.js +1 -1
- package/.next/server/app/api/workspaces/route.js.nft.json +1 -1
- package/.next/server/app/api/workspaces/route_client-reference-manifest.js +1 -1
- package/.next/server/app/icon.svg/route.js +1 -1
- package/.next/server/app/icon.svg/route.js.nft.json +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +5 -5
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +5 -5
- package/.next/server/app/index.segments/_full.segment.rsc +5 -5
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login/page.js +1 -1
- package/.next/server/app/login/page.js.nft.json +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +1 -1
- package/.next/server/app/login.rsc +4 -4
- package/.next/server/app/login.segments/_full.segment.rsc +4 -4
- package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/page.js +1 -1
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +6 -5
- package/.next/server/chunks/{813.js → 1813.js} +1 -1
- package/.next/server/chunks/{430.js → 2430.js} +5 -5
- package/.next/server/chunks/{970.js → 2970.js} +1 -1
- package/.next/server/chunks/3924.js +6 -0
- package/.next/server/chunks/4807.js +1 -0
- package/.next/server/chunks/5393.js +1 -0
- package/.next/server/chunks/5802.js +2 -0
- package/.next/server/chunks/620.js +1 -1
- package/.next/server/chunks/6229.js +1 -0
- package/.next/server/chunks/7496.js +1 -0
- package/.next/server/chunks/7662.js +2 -0
- package/.next/server/chunks/8686.js +1 -0
- package/.next/server/chunks/{593.js → 974.js} +1 -1
- package/.next/server/chunks/{920.js → 9920.js} +1 -1
- package/.next/server/instrumentation.js +1 -1
- package/.next/server/instrumentation.js.nft.json +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/middleware.js +5 -5
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/preview-props.json +3 -3
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/server/webpack-runtime.js +1 -1
- package/.next/static/QJCtqgDKzGS2BdKABd9ch/_buildManifest.js +1 -0
- package/.next/static/chunks/2577.86c8538fbf05a8b2.js +1 -0
- package/.next/static/chunks/2716.fa561519675a3ff1.js +1 -0
- package/.next/static/chunks/2906.8a0e09bb47605cf1.js +1 -0
- package/.next/static/chunks/4673.ea36e55005c0f82f.js +1 -0
- package/.next/static/chunks/4686-4dc565817a160351.js +1 -0
- package/.next/static/chunks/4778.0d2c5d75b791d352.js +1 -0
- package/.next/static/chunks/app/_global-error/page-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/_not-found/page-2d40d1d7d916666a.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/events/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/tree/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/agent/new/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/agent/resources/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/config/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/files/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/fs/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/git/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/github/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/growth/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/health/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/models/defaults/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/models/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/pi-settings/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/plugins/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/prompts/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/remote/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/security/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/export/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/sessions/import/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/sessions/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/skills/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/update/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/version/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/web-auth/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/api/workspaces/route-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/app/{layout-7f64fa67ea6ce980.js → layout-50d06e2078d6ce76.js} +1 -1
- package/.next/static/chunks/app/login/{page-00dbd2f395b364d5.js → page-5e276a1eeb8867df.js} +1 -1
- package/.next/static/chunks/app/page-71f2d3b3ed864b3d.js +1 -0
- package/.next/static/chunks/main-5403f0764579e5fe.js +5 -0
- package/.next/static/chunks/{main-app-56863ace24eb152f.js → main-app-e9b53f0e1c6591b2.js} +1 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/global-error-a7e260f8cc2582d7.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-f2d93969c0bcf406.js +1 -0
- package/.next/static/chunks/webpack-ffc09b5fcc8aaa6d.js +1 -0
- package/.next/static/css/7e3caf797e4cb19a.css +1 -0
- 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/[id]/tree/route.ts +1 -1
- package/.next/types/app/api/agent/new/route.ts +1 -1
- package/.next/types/app/api/agent/resources/route.ts +355 -0
- package/.next/types/app/api/config/route.ts +1 -1
- package/.next/types/app/api/files/route.ts +1 -1
- package/.next/types/app/api/fs/route.ts +1 -1
- package/.next/types/app/api/git/route.ts +1 -1
- package/.next/types/app/api/github/route.ts +1 -1
- package/.next/types/app/api/growth/route.ts +1 -1
- package/.next/types/app/api/health/route.ts +1 -1
- package/.next/types/app/api/models/defaults/route.ts +1 -1
- package/.next/types/app/api/models/route.ts +1 -1
- package/.next/types/app/api/pi-settings/route.ts +1 -1
- package/.next/types/app/api/plugins/route.ts +1 -1
- package/.next/types/app/api/prompts/route.ts +1 -1
- package/.next/types/app/api/remote/route.ts +1 -1
- package/.next/types/app/api/security/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/import/route.ts +1 -1
- package/.next/types/app/api/sessions/route.ts +1 -1
- package/.next/types/app/api/skills/route.ts +1 -1
- package/.next/types/app/api/update/route.ts +1 -1
- package/.next/types/app/api/version/route.ts +1 -1
- package/.next/types/app/api/web-auth/route.ts +1 -1
- package/.next/types/app/api/workspaces/route.ts +1 -1
- package/.next/types/app/layout.ts +1 -1
- package/.next/types/app/login/page.ts +1 -1
- package/.next/types/app/page.ts +1 -1
- package/.next/types/routes.d.ts +2 -1
- package/.next/types/validator.ts +10 -0
- package/LICENSE +1 -1
- package/README.md +1 -1
- package/bin/pi.js +0 -0
- package/bin/piweb.js +0 -0
- package/package.json +1 -1
- package/scripts/build-output.mjs +0 -0
- package/scripts/dev.mjs +0 -0
- package/scripts/entrypoint.mjs +0 -0
- package/scripts/install-build.mjs +0 -0
- package/scripts/launcher.mjs +0 -0
- package/scripts/pick-folder.ps1 +0 -0
- package/scripts/postinstall.mjs +0 -0
- package/scripts/process-runner.mjs +0 -0
- package/scripts/release.mjs +0 -0
- package/scripts/sync-file-icons.mjs +0 -0
- package/scripts/sync-provider-icons.mjs +0 -0
- package/src/app/api/agent/resources/route.ts +18 -0
- package/src/app/api/remote/route.ts +5 -7
- package/src/app/api/sessions/[id]/export/route.ts +3 -1
- package/src/app/globals.css +16 -0
- package/src/components/AppShell.tsx +68 -21
- package/src/components/ChatInput.tsx +98 -27
- package/src/components/ChatWindow.tsx +68 -11
- package/src/components/ContextMeter.tsx +24 -4
- package/src/components/ExtensionUI.tsx +9 -3
- package/src/components/FileViewer.tsx +24 -21
- package/src/components/GitPanel.tsx +449 -449
- package/src/components/GrowthTree.tsx +3 -1
- package/src/components/ImageViewer.tsx +72 -0
- package/src/components/MarkdownBlock.tsx +6 -3
- package/src/components/PreviewImage.tsx +33 -0
- package/src/components/ProjectPanel.tsx +5 -3
- package/src/components/PromptPanel.tsx +322 -313
- package/src/components/RemoteSection.tsx +2 -1
- package/src/components/SessionSidebar.tsx +22 -4
- package/src/components/SettingsPanel.tsx +2654 -2639
- package/src/components/composer/ComposerImages.tsx +1 -79
- package/src/hooks/usePiWeb.ts +47 -2
- package/src/i18n.tsx +24 -0
- package/src/lib/agent-manager.ts +275 -18
- package/src/lib/chat/skill-expansion.ts +10 -0
- package/src/lib/extension-ui.ts +25 -1
- package/src/lib/git-service.ts +291 -289
- package/src/lib/github-identity.ts +245 -245
- package/src/lib/growth-turns.ts +3 -1
- package/src/lib/session-reader.ts +25 -13
- package/src/lib/session-retention.ts +11 -8
- package/src/lib/slash-command-token.ts +14 -0
- package/src/lib/trajectory.ts +17 -6
- package/src/lib/types.ts +24 -2
- package/src/lib/workspace-store.ts +36 -1
- package/.next/diagnostics/build-diagnostics.json +0 -6
- package/.next/diagnostics/framework.json +0 -1
- package/.next/server/chunks/229.js +0 -1
- package/.next/server/chunks/393.js +0 -1
- package/.next/server/chunks/612.js +0 -1
- package/.next/server/chunks/662.js +0 -2
- package/.next/server/chunks/686.js +0 -1
- package/.next/server/chunks/802.js +0 -2
- package/.next/server/chunks/807.js +0 -1
- package/.next/server/chunks/924.js +0 -6
- package/.next/static/4snUelZTEIiQYCkB5nTW7/_buildManifest.js +0 -1
- package/.next/static/chunks/1966.1560d0f43ac9a41a.js +0 -1
- package/.next/static/chunks/2577.eebf2cf291a811ad.js +0 -1
- package/.next/static/chunks/2716.a5228b0eeedbe4c8.js +0 -1
- package/.next/static/chunks/2906.546a64377e12dfbc.js +0 -1
- package/.next/static/chunks/3899.55a0943bf5e7fec7.js +0 -1
- package/.next/static/chunks/4673.8eff281cb63e2799.js +0 -1
- package/.next/static/chunks/4686-f03275819a719fd8.js +0 -1
- package/.next/static/chunks/4778.2dae0c6a9e396326.js +0 -1
- package/.next/static/chunks/app/_global-error/page-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/_not-found/page-851dc3883a1937aa.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/events/route-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/route-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/tree/route-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/api/agent/new/route-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/api/config/route-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/api/files/route-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/api/fs/route-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/api/git/route-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/api/github/route-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/api/growth/route-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/api/health/route-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/api/models/defaults/route-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/api/models/route-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/api/pi-settings/route-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/api/plugins/route-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/api/prompts/route-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/api/remote/route-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/api/security/route-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/export/route-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/route-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/api/sessions/import/route-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/api/sessions/route-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/api/skills/route-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/api/update/route-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/api/version/route-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/api/web-auth/route-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/api/workspaces/route-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/app/page-0159987118376f42.js +0 -1
- package/.next/static/chunks/main-22ccebc2da4d291e.js +0 -5
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/global-error-c37b7707077f50ce.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-f977af7f858990a2.js +0 -1
- package/.next/static/chunks/webpack-c1b43c269867b64f.js +0 -1
- package/.next/static/css/93ed3daa6f3fbc35.css +0 -1
- package/.next/trace +0 -58
- package/.next/trace-build +0 -1
- /package/.next/static/{4snUelZTEIiQYCkB5nTW7 → QJCtqgDKzGS2BdKABd9ch}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/459a9ed40847a72f.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/6ba662805d17ffc2.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/
|
|
1
|
+
<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/459a9ed40847a72f.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/6ba662805d17ffc2.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/7e3caf797e4cb19a.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-ffc09b5fcc8aaa6d.js"/><script src="/_next/static/chunks/4bd1b696-e199e788e58acf79.js" async=""></script><script src="/_next/static/chunks/3794-0978865cda773008.js" async=""></script><script src="/_next/static/chunks/main-app-e9b53f0e1c6591b2.js" async=""></script><meta name="robots" content="noindex"/><meta name="theme-color" content="#fcfbf9" media="(prefers-color-scheme: light)"/><meta name="theme-color" content="#2e3440" media="(prefers-color-scheme: dark)"/><title>pi</title><meta name="description" content="Web UI for the pi coding agent"/><link rel="icon" href="/icon.svg?779ce17318f43f72" type="image/svg+xml" sizes="any"/><title>404: This page could not be found.</title><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-ffc09b5fcc8aaa6d.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[7121,[],\"\"]\n3:I[4581,[],\"\"]\n7:I[484,[],\"OutletBoundary\"]\n8:\"$Sreact.suspense\"\na:\"ViewportBoundary\"\nb:I[484,[],\"$a\"]\nd:\"MetadataBoundary\"\ne:I[484,[],\"$d\"]\n10:I[7123,[],\"default\",1]\n:HL[\"/_next/static/css/459a9ed40847a72f.css\",\"style\"]\n:HL[\"/_next/static/css/6ba662805d17ffc2.css\",\"style\"]\n:HL[\"/_next/static/css/7e3caf797e4cb19a.css\",\"style\"]\n5:X\n6:[[\"children\",{\"s\":\"__PAGE__\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@9\"}]}]]}],\"p\":false,\"v\":null}}]]\n4:[[\"children\",{\"s\":\"_not-found\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],\"p\":false,\"v\":\"$5\"},\"c\":\"$Q6\"}]]\n0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"t\":{\"t\":{\"s\":\"\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/459a9ed40847a72f.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/6ba662805d17ffc2.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/7e3caf797e4cb19a.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"zh-CN\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}],\"p\":false,\"v\":null},\"c\":\"$Q4\"},\"h\":{\"r\":[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],[\"$\",\"$Le\",null,{\"children\":[[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lf\"}]}],null]}],null]}],\"p\":false,\"v\":null}},\"m\":\"$undefined\",\"G\":[\"$10\",[]],\"S\":true,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"QJCtqgDKzGS2BdKABd9ch\"}\n5:C\nc:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#fcfbf9\",\"media\":\"(prefers-color-scheme: light)\"}],[\"$\",\"meta\",\"3\",{\"name\":\"theme-color\",\"content\":\"#2e3440\",\"media\":\"(prefers-color-scheme: dark)\"}]]\n11:I[6869,[],\"IconMark\"]\n9:null\nf:[[\"$\",\"title\",\"0\",{\"children\":\"pi\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Web UI for the pi coding agent\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/icon.svg?779ce17318f43f72\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"$L11\",\"3\",{}]]\n"])</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-
|
|
1
|
+
<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-ffc09b5fcc8aaa6d.js"/><script src="/_next/static/chunks/4bd1b696-e199e788e58acf79.js" async=""></script><script src="/_next/static/chunks/3794-0978865cda773008.js" async=""></script><script src="/_next/static/chunks/main-app-e9b53f0e1c6591b2.js" async=""></script><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-ffc09b5fcc8aaa6d.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[7121,[],\"\"]\n3:I[4581,[],\"\"]\n7:I[484,[],\"OutletBoundary\"]\n8:\"$Sreact.suspense\"\na:\"ViewportBoundary\"\nb:I[484,[],\"$a\"]\nd:\"MetadataBoundary\"\ne:I[484,[],\"$d\"]\n10:I[7123,[],\"default\",1]\n4:X\n6:[[\"children\",{\"s\":\"__PAGE__\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@9\"}]}]]}],\"p\":false,\"v\":null}}]]\n5:[[\"children\",{\"s\":\"_global-error\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],\"p\":false,\"v\":\"$4\"},\"c\":\"$Q6\"}]]\n0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"t\":{\"t\":{\"s\":\"\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],\"p\":false,\"v\":\"$4\"},\"c\":\"$Q5\"},\"h\":{\"r\":[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],[\"$\",\"$Le\",null,{\"children\":[[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lf\"}]}],null]}],null]}],\"p\":false,\"v\":null}},\"m\":\"$undefined\",\"G\":[\"$10\",[]],\"S\":true,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"QJCtqgDKzGS2BdKABd9ch\"}\n4:C\nc:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n9:null\nf:[]\n"])</script></body></html>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"previewModeId": "
|
|
3
|
-
"previewModeSigningKey": "
|
|
4
|
-
"previewModeEncryptionKey": "
|
|
2
|
+
"previewModeId": "508e0b7535677a7669950075fd09e74b",
|
|
3
|
+
"previewModeSigningKey": "010f4e10e110c27ccd898b07d38e8adc6d6de7ae4929543f6acf91eaa1619283",
|
|
4
|
+
"previewModeEncryptionKey": "21fe00edd801104ce3895aba18a2cf166335b0e8ac6e30cd237e71ef21406724"
|
|
5
5
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"node":{},"edge":{},"encryptionKey":"
|
|
1
|
+
{"node":{},"edge":{},"encryptionKey":"tcXdyPu7WHE911F5jXDSgDDbgf70HmeMt47RIgZ/nPw="}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{"use strict";var a,b,c,d,e,f,g,h,i={},j={};function k(a){var b=j[a];if(void 0!==b)return b.exports;var c=j[a]={exports:{}},d=!0;try{i[a].call(c.exports,c,c.exports,k),d=!1}finally{d&&delete j[a]}return c.exports}k.m=i,k.amdO={},a="function"==typeof Symbol?Symbol("webpack queues"):"__webpack_queues__",b="function"==typeof Symbol?Symbol("webpack exports"):"__webpack_exports__",c="function"==typeof Symbol?Symbol("webpack error"):"__webpack_error__",d=a=>{a&&a.d<1&&(a.d=1,a.forEach(a=>a.r--),a.forEach(a=>a.r--?a.r++:a()))},k.a=(e,f,g)=>{g&&((h=[]).d=-1);var h,i,j,k,l=new Set,m=e.exports,n=new Promise((a,b)=>{k=b,j=a});n[b]=m,n[a]=a=>(h&&a(h),l.forEach(a),n.catch(a=>{})),e.exports=n,f(e=>{i=e.map(e=>{if(null!==e&&"object"==typeof e){if(e[a])return e;if(e.then){var f=[];f.d=0,e.then(a=>{g[b]=a,d(f)},a=>{g[c]=a,d(f)});var g={};return g[a]=a=>a(f),g}}var h={};return h[a]=a=>{},h[b]=e,h});var f,g=()=>i.map(a=>{if(a[c])throw a[c];return a[b]}),j=new Promise(b=>{(f=()=>b(g)).r=0;var c=a=>a!==h&&!l.has(a)&&(l.add(a),a&&!a.d&&(f.r++,a.push(f)));i.map(b=>b[a](c))});return f.r?j:g()},a=>(a?k(n[c]=a):j(m),d(h))),h&&h.d<0&&(h.d=0)},k.n=a=>{var b=a&&a.__esModule?()=>a.default:()=>a;return k.d(b,{a:b}),b},f=Object.getPrototypeOf?a=>Object.getPrototypeOf(a):a=>a.__proto__,k.t=function(a,b){if(1&b&&(a=this(a)),8&b||"object"==typeof a&&a&&(4&b&&a.__esModule||16&b&&"function"==typeof a.then))return a;var c=Object.create(null);k.r(c);var d={};e=e||[null,f({}),f([]),f(f)];for(var g=2&b&&a;"object"==typeof g&&!~e.indexOf(g);g=f(g))Object.getOwnPropertyNames(g).forEach(b=>d[b]=()=>a[b]);return d.default=()=>a,k.d(c,d),c},k.d=(a,b)=>{for(var c in b)k.o(b,c)&&!k.o(a,c)&&Object.defineProperty(a,c,{enumerable:!0,get:b[c]})},k.f={},k.e=a=>Promise.all(Object.keys(k.f).reduce((b,c)=>(k.f[c](a,b),b),[])),k.u=a=>""+a+".js",k.o=(a,b)=>Object.prototype.hasOwnProperty.call(a,b),k.r=a=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})},k.X=(a,b,c)=>{var d=b;c||(b=a,c=()=>k(k.s=d)),b.map(k.e,k);var e=c();return void 0===e?a:e},g={
|
|
1
|
+
(()=>{"use strict";var a,b,c,d,e,f,g,h,i={},j={};function k(a){var b=j[a];if(void 0!==b)return b.exports;var c=j[a]={exports:{}},d=!0;try{i[a].call(c.exports,c,c.exports,k),d=!1}finally{d&&delete j[a]}return c.exports}k.m=i,k.amdO={},a="function"==typeof Symbol?Symbol("webpack queues"):"__webpack_queues__",b="function"==typeof Symbol?Symbol("webpack exports"):"__webpack_exports__",c="function"==typeof Symbol?Symbol("webpack error"):"__webpack_error__",d=a=>{a&&a.d<1&&(a.d=1,a.forEach(a=>a.r--),a.forEach(a=>a.r--?a.r++:a()))},k.a=(e,f,g)=>{g&&((h=[]).d=-1);var h,i,j,k,l=new Set,m=e.exports,n=new Promise((a,b)=>{k=b,j=a});n[b]=m,n[a]=a=>(h&&a(h),l.forEach(a),n.catch(a=>{})),e.exports=n,f(e=>{i=e.map(e=>{if(null!==e&&"object"==typeof e){if(e[a])return e;if(e.then){var f=[];f.d=0,e.then(a=>{g[b]=a,d(f)},a=>{g[c]=a,d(f)});var g={};return g[a]=a=>a(f),g}}var h={};return h[a]=a=>{},h[b]=e,h});var f,g=()=>i.map(a=>{if(a[c])throw a[c];return a[b]}),j=new Promise(b=>{(f=()=>b(g)).r=0;var c=a=>a!==h&&!l.has(a)&&(l.add(a),a&&!a.d&&(f.r++,a.push(f)));i.map(b=>b[a](c))});return f.r?j:g()},a=>(a?k(n[c]=a):j(m),d(h))),h&&h.d<0&&(h.d=0)},k.n=a=>{var b=a&&a.__esModule?()=>a.default:()=>a;return k.d(b,{a:b}),b},f=Object.getPrototypeOf?a=>Object.getPrototypeOf(a):a=>a.__proto__,k.t=function(a,b){if(1&b&&(a=this(a)),8&b||"object"==typeof a&&a&&(4&b&&a.__esModule||16&b&&"function"==typeof a.then))return a;var c=Object.create(null);k.r(c);var d={};e=e||[null,f({}),f([]),f(f)];for(var g=2&b&&a;"object"==typeof g&&!~e.indexOf(g);g=f(g))Object.getOwnPropertyNames(g).forEach(b=>d[b]=()=>a[b]);return d.default=()=>a,k.d(c,d),c},k.d=(a,b)=>{for(var c in b)k.o(b,c)&&!k.o(a,c)&&Object.defineProperty(a,c,{enumerable:!0,get:b[c]})},k.f={},k.e=a=>Promise.all(Object.keys(k.f).reduce((b,c)=>(k.f[c](a,b),b),[])),k.u=a=>""+a+".js",k.o=(a,b)=>Object.prototype.hasOwnProperty.call(a,b),k.r=a=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})},k.X=(a,b,c)=>{var d=b;c||(b=a,c=()=>k(k.s=d)),b.map(k.e,k);var e=c();return void 0===e?a:e},g={7311:1},h=a=>{var b=a.modules,c=a.ids,d=a.runtime;for(var e in b)k.o(b,e)&&(k.m[e]=b[e]);d&&d(k);for(var f=0;f<c.length;f++)g[c[f]]=1},k.f.require=(a,b)=>{g[a]||(7311!=a?h(require("./chunks/"+k.u(a))):g[a]=1)},module.exports=k,k.C=h})();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:28,errorRate:1e-4,numBits:537,numHashes:14,bitArray:[0,1,0,1,1,1,0,1,1,0,0,1,1,1,1,1,0,1,0,1,0,0,0,1,0,0,0,0,1,1,1,0,0,1,1,0,0,0,1,1,0,0,1,0,0,1,1,1,0,0,1,0,0,1,1,1,0,1,1,1,1,1,1,1,0,1,0,0,1,1,1,1,1,0,1,1,1,0,1,1,0,0,0,1,0,1,0,1,0,1,0,0,0,1,0,1,1,1,1,0,0,1,0,0,0,1,1,0,0,0,1,0,0,1,1,1,1,0,1,1,1,1,1,1,0,0,1,0,0,1,0,0,0,0,1,1,0,1,0,1,0,1,1,1,1,1,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1,1,0,0,1,0,1,0,1,0,1,1,1,0,1,0,0,0,0,0,1,0,1,1,1,1,0,0,1,1,1,1,0,1,0,1,1,1,1,1,1,0,0,1,1,0,1,0,0,1,0,1,1,1,1,0,0,1,0,1,0,1,1,1,0,1,0,0,1,1,1,0,0,1,1,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,0,1,0,0,1,1,1,1,1,0,0,1,0,1,0,1,1,0,1,0,1,0,0,1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,1,0,1,1,1,0,1,1,0,0,1,1,1,1,0,1,1,1,0,1,1,1,1,0,1,1,0,0,1,0,1,0,0,1,1,1,1,1,0,1,1,0,0,1,0,1,1,1,1,1,1,0,0,1,0,1,0,0,0,0,0,1,0,1,0,0,1,0,1,1,1,1,1,0,1,1,0,0,1,0,0,1,0,0,0,0,1,1,1,0,1,0,0,0,1,1,0,0,1,0,1,1,1,0,0,0,1,1,0,0,1,1,1,1,0,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,1,0,1,0,1,1,0,1,0,0,0,0,1,1,1,0,1,1,0,1,1,1,1,0,0,0,0,0,0,0,1,1,1,0,1,0,0,0,1,1,0,1,0,1,1,1,1,0,0,1,1,1,0,1,0,1,0,1,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,1,0,1,0,0,0,1,0,1,1,1,0,0,0,1,1,0,1,1,1,1,0,0,1]},__routerFilterDynamic:{numItems:2,errorRate:1e-4,numBits:39,numHashes:14,bitArray:[1,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1,0,0,1,0,0,1,0,0,0,1,0,1,1,0,1,1,0,1,0,1,1,0,0]},sortedPages:["/_app"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2577],{901:e=>{e.exports={mask:"ProviderSetupModal_mask__wwU3u",dialog:"ProviderSetupModal_dialog__BxSeI",builtinDialog:"ProviderSetupModal_builtinDialog__vA7_B",header:"ProviderSetupModal_header__Nvgmb",title:"ProviderSetupModal_title__ZIIXp",body:"ProviderSetupModal_body__QAlNu",builtinBody:"ProviderSetupModal_builtinBody___4EFo",field:"ProviderSetupModal_field__ZMO8M",label:"ProviderSetupModal_label__4_BYS",hint:"ProviderSetupModal_hint__yCwPV",input:"ProviderSetupModal_input__YZYV5",select:"ProviderSetupModal_select___PTpP",providerTrigger:"ProviderSetupModal_providerTrigger__TXtau",picker:"ProviderSetupModal_picker__VQdQc",providerText:"ProviderSetupModal_providerText__l9bwJ",providerName:"ProviderSetupModal_providerName__Hwwfg",providerMeta:"ProviderSetupModal_providerMeta____3za",menu:"ProviderSetupModal_menu__zO5CU",searchWrap:"ProviderSetupModal_searchWrap__5yw1r",searchIcon:"ProviderSetupModal_searchIcon__BZeD1",search:"ProviderSetupModal_search__j_n_8",providerList:"ProviderSetupModal_providerList__bMnFj",providerRow:"ProviderSetupModal_providerRow__Zf7fg",selectedMark:"ProviderSetupModal_selectedMark___8UDb",empty:"ProviderSetupModal_empty__4V1WK",advanced:"ProviderSetupModal_advanced__kWaTH",advancedButton:"ProviderSetupModal_advancedButton__efHwl",catalog:"ProviderSetupModal_catalog__mXakU",catalogHeader:"ProviderSetupModal_catalogHeader__0MDA4",catalogStatus:"ProviderSetupModal_catalogStatus__JRz0P",discoverButton:"ProviderSetupModal_discoverButton__GGuZX",discoverControls:"ProviderSetupModal_discoverControls___0_l8",modelEmpty:"ProviderSetupModal_modelEmpty__h1N_8",modelList:"ProviderSetupModal_modelList__jkYVz",headerRow:"ProviderSetupModal_headerRow__2JBNp",modelRow:"ProviderSetupModal_modelRow__mHfRv",removeModel:"ProviderSetupModal_removeModel___LjE1",addModel:"ProviderSetupModal_addModel__Q3KOU",error:"ProviderSetupModal_error__EAOK6",footer:"ProviderSetupModal_footer__zVp_c",footerButton:"ProviderSetupModal_footerButton__FL58k",primary:"ProviderSetupModal_primary__ArzeF",modelEntry:"ProviderSetupModal_modelEntry__G067u",rowToggle:"ProviderSetupModal_rowToggle__kc_Za",capacityRow:"ProviderSetupModal_capacityRow__0miDX",capacityField:"ProviderSetupModal_capacityField___TX70",capacityHint:"ProviderSetupModal_capacityHint__z_5re",rowError:"ProviderSetupModal_rowError__2vHrG",catalogError:"ProviderSetupModal_catalogError__ZL5D7",catalogHint:"ProviderSetupModal_catalogHint__ws49_",candidateMask:"ProviderSetupModal_candidateMask__YUZn7",candidateDialog:"ProviderSetupModal_candidateDialog__upECk",candidateHeader:"ProviderSetupModal_candidateHeader__bUvHV",candidateList:"ProviderSetupModal_candidateList__JRufC",candidateRow:"ProviderSetupModal_candidateRow__Omm_o",candidateTag:"ProviderSetupModal_candidateTag__lE99_",candidateId:"ProviderSetupModal_candidateId__7Hy7u",candidateName:"ProviderSetupModal_candidateName__D4rXE",candidateActions:"ProviderSetupModal_candidateActions__iptOe",candidateAll:"ProviderSetupModal_candidateAll__yhD_R",candidatePicked:"ProviderSetupModal_candidatePicked__cJ78H"}},1669:e=>{e.exports={wrap:"CustomSelect_wrap__oiRn_",trigger:"CustomSelect_trigger__HTxwt",sizeSm:"CustomSelect_sizeSm__u7Yk8",sizeMd:"CustomSelect_sizeMd__Uw1i1",label:"CustomSelect_label__7_kg8",chevron:"CustomSelect_chevron__Nqa1g",chevronOpen:"CustomSelect_chevronOpen__3Do3Z",menu:"CustomSelect_menu___tEPS","popover-in":"CustomSelect_popover-in__SJuUo",menuFlip:"CustomSelect_menuFlip__jJRsr",option:"CustomSelect_option__5wBtO",optionSelected:"CustomSelect_optionSelected__i3yKA",check:"CustomSelect_check__hSGwB"}},2577:(e,a,t)=>{"use strict";t.r(a),t.d(a,{PluginsSection:()=>Z,SelectOption:()=>O,SettingsPanel:()=>R});var l=t(5155),s=t(2115),i=t(7650),r=t(560),n=t(9992);let o=[[/^amazon-bedrock$/,"bedrock-color"],[/^ant-ling$/,"antgroup-color"],[/^anthropic$/,"anthropic"],[/^azure-/,"azure-color"],[/^baseten$/,"baseten"],[/^cerebras$/,"cerebras-color"],[/^cloudflare-/,"cloudflare-color"],[/^deepseek$/,"deepseek-color"],[/^fireworks$/,"fireworks-color"],[/^github-copilot$/,"githubcopilot"],[/^google-vertex(?:-|$)/,"googlecloud-color"],[/^google$/,"google-color"],[/^groq$/,"groq"],[/^huggingface$/,"huggingface-color"],[/^kimi(?:-|$)/,"kimi-color"],[/^minimax/,"minimax-color"],[/^mistral$/,"mistral-color"],[/^moonshot(?:ai)?(?:-|$)/,"moonshot"],[/^nvidia$/,"nvidia-color"],[/^openai/,"openai"],[/^opencode(?:-|$)/,"opencode"],[/^openrouter$/,"openrouter-color"],[/^qwen(?:-|$)/,"qwen-color"],[/^together$/,"together-color"],[/^vercel(?:-|$)/,"vercel"],[/^xai$/,"xai"],[/^xiaomi(?:-|$)/,"xiaomimimo"],[/^zai(?:-|$)/,"zai"]];[...new Set(o.map(([,e])=>e))];let d=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/,c=["openai-completions","openai-responses","anthropic-messages","google-generative-ai"];function u(e){let a=new Set(c);return[...c,...[...new Set(e.filter(e=>e&&!a.has(e)))].sort()]}function p({id:e,name:a,size:t=36}){let s,i=o.find(([a])=>a.test(e))?.[1]??null;return(0,l.jsx)("span",{"aria-hidden":"true",className:"inline-flex flex-none items-center justify-center overflow-hidden",style:{width:t,height:t,borderRadius:Math.max(10,Math.round(.3*t)),background:"#f7f7f5",border:"0.5px solid rgba(0,0,0,.09)",color:"#18191b",fontSize:Math.max(10,Math.round(.32*t)),fontWeight:750,letterSpacing:"-0.03em"},children:i?(0,l.jsx)("img",{src:`/provider-icons/${i}.svg`,alt:"",width:Math.round(.66*t),height:Math.round(.66*t)}):(s=a.trim().split(/[\s_-]+/).filter(Boolean)).length>=2?(s[0][0]+s[1][0]).toUpperCase():(s[0]??e).slice(0,2).toUpperCase()})}var m=t(1669),h=t.n(m);function x({value:e,onChange:a,options:t,placeholder:i,disabled:r=!1,size:o="md",className:d="",style:c,"aria-label":u,"data-testid":p}){let[m,v]=(0,s.useState)(!1),[g,f]=(0,s.useState)(!1),b=(0,s.useRef)(null),y=(0,s.useRef)(null),j=t.find(a=>a.value===e);return(0,s.useEffect)(()=>{if(!m)return;if(y.current){let e=y.current.getBoundingClientRect();f(window.innerHeight-e.bottom<220&&e.top>220)}let e=e=>{b.current?.contains(e.target)||v(!1)},a=e=>{"Escape"===e.key&&(v(!1),y.current?.focus())};return document.addEventListener("mousedown",e),document.addEventListener("keydown",a),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",a)}},[m]),(0,l.jsxs)("div",{ref:b,className:`${h().wrap} ${d}`,style:c,children:[(0,l.jsx)("select",{tabIndex:-1,value:e,disabled:r,"aria-label":u,onChange:e=>a(e.target.value),style:{position:"absolute",width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:0,opacity:0,pointerEvents:"none"},children:t.map(e=>(0,l.jsx)("option",{value:e.value,disabled:e.disabled,children:e.label},e.value))}),(0,l.jsxs)("button",{ref:y,type:"button",disabled:r,"data-open":m?"true":void 0,"data-testid":p,"aria-label":u,"aria-haspopup":"listbox","aria-expanded":m,className:`${h().trigger} ${"sm"===o?h().sizeSm:h().sizeMd}`,onClick:()=>v(e=>!e),onKeyDown:e=>{r||("ArrowDown"===e.key||"ArrowUp"===e.key||"Enter"===e.key||" "===e.key)&&(e.preventDefault(),v(e=>!e))},children:[(0,l.jsx)("span",{className:h().label,children:j?.label??i??e}),(0,l.jsx)(n.Cd,{size:"sm"===o?13:15,className:`${h().chevron} ${m?h().chevronOpen:""}`})]}),m&&(0,l.jsx)("div",{className:`${h().menu} ${g?h().menuFlip:""}`,role:"listbox","aria-label":u,children:t.map(t=>{let s=t.value===e;return(0,l.jsxs)("button",{type:"button",role:"option","aria-selected":s,disabled:t.disabled,className:`${h().option} ${s?h().optionSelected:""}`,onClick:()=>{a(t.value),v(!1),y.current?.focus()},children:[(0,l.jsx)("span",{className:"truncate",children:t.label}),s?(0,l.jsx)(n.df,{size:14,className:h().check}):null]},t.value)})})]})}var v=t(1859),g=t(2578),f=t(901),b=t.n(f);function y({mode:e,providers:a,catalogModelIds:t,existingIds:i,onClose:r,onSaveBuiltin:o,onSaveCustom:c,onOAuthLogin:m}){let{t:h}=(0,v.s)(),[f,w]=(0,s.useState)(a[0]?.id??""),[S,N]=(0,s.useState)(!1),[k,_]=(0,s.useState)(""),[C,z]=(0,s.useState)("api_key"),[P,M]=(0,s.useState)(""),[E,T]=(0,s.useState)(!1),[$,R]=(0,s.useState)(""),[F,L]=(0,s.useState)(""),[D,O]=(0,s.useState)(""),A=u(a.flatMap(e=>e.apis)),[W,I]=(0,s.useState)(A.includes("openai-completions")?"openai-completions":A[0]??"openai-completions"),[U,H]=(0,s.useState)([]),[B,K]=(0,s.useState)(null),J=0===U.length&&!!$.trim()&&!!(P.trim()||function(e){try{let a=new URL(e.trim()).hostname.replace(/^\[|\]$/g,"").toLowerCase();if(!a)return!1;if("localhost"===a||a.endsWith(".localhost")||a.endsWith(".local"))return!0;if(a.includes(":"))return"::1"===a||/^(fc|fd|fe80)/.test(a);let t=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(a);if(!t)return!1;let l=Number(t[1]),s=Number(t[2]);return 0===l||10===l||127===l||192===l&&168===s||172===l&&s>=16&&s<=31||169===l&&254===s}catch{return!1}}($)),[V,q]=(0,s.useState)(0),G=()=>{J&&q(e=>e+1)},[Q,X]=(0,s.useState)(!1),[Z,Y]=(0,s.useState)(""),ee=(0,s.useRef)(null),ea=a.find(e=>e.id===f),et=(0,s.useMemo)(()=>new Set(t?.[f]??[]),[t,f]),el=a.filter(e=>{let a=k.trim().toLocaleLowerCase();return!a||e.name.toLocaleLowerCase().includes(a)||e.id.toLocaleLowerCase().includes(a)});(0,s.useEffect)(()=>{let e=e=>{"Escape"===e.key&&(e.preventDefault(),e.stopPropagation(),S?N(!1):r())};return document.addEventListener("keydown",e,!0),()=>document.removeEventListener("keydown",e,!0)},[r,S]),(0,s.useEffect)(()=>{if(!S)return;let e=e=>{ee.current?.contains(e.target)||N(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[S]);let es=(e,a)=>{H(t=>t.map((t,l)=>l===e?{...t,...a}:t))},ei=(0,g.aK)(U),er=F.trim(),en=d.test(er),eo=en&&!i.includes(er)&&!!$.trim()&&U.length>0&&!ei,ed=!!ea&&("oauth"===C||!ei),ec=(0,s.useRef)(!1),eu=async()=>{if(!ec.current&&("builtin"===e?ed:eo)){ec.current=!0,X(!0),Y("");try{let a;if("builtin"===e&&ea)if("oauth"===C&&m)a=await m(ea.id);else{let e=(0,g.Vt)({},{baseUrl:$,models:U},ea.apis[0]??"openai-completions",et);a=await o({providerId:ea.id,apiKey:P.trim(),config:e})}else{let e=(B??[]).map(({name:e,value:a})=>[e.trim(),a.trim()]).filter(([e,a])=>e&&a);a=await c({providerId:er,config:{name:D.trim()||er,baseUrl:$.trim(),api:W,...P.trim()?{apiKey:P.trim()}:{},...e.length?{headers:Object.fromEntries(e)}:{},models:U.map(e=>(0,g.vV)(e))}})}a.success?r():Y(a.error||h.toastError)}catch(e){Y(e instanceof Error?e.message:h.toastError)}finally{ec.current=!1,X(!1)}}},ep=async a=>{if(!$.trim())throw Error(h.apiAddress);let t=(B??[]).map(({name:e,value:a})=>[e.trim(),a.trim()]).filter(([e,a])=>e&&a),l=(0,g.iT)(t);if(l)throw Error(l);let s=await fetch("/api/models",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"discoverModels",baseUrl:$.trim(),api:"builtin"===e?ea?.apis[0]:W,apiKey:P.trim(),providerId:"builtin"===e?ea?.id:void 0,allowPrivate:a,...t.length&&"builtin"!==e?{headers:Object.fromEntries(t)}:{}})}),i=await s.json();if(!s.ok||!i.success)throw Error(i.error||h.toastError);return(i.data.models??[]).map(g.SC)};return(0,l.jsx)("div",{className:b().mask,"data-provider-modal":"true",onMouseDown:e=>{e.target===e.currentTarget&&r()},children:(0,l.jsxs)("section",{className:`${b().dialog} ${"builtin"===e?b().builtinDialog:""}`,role:"dialog","aria-modal":"true","aria-labelledby":"provider-setup-title",children:[(0,l.jsxs)("header",{className:b().header,children:[(0,l.jsx)("h2",{id:"provider-setup-title",className:b().title,children:"builtin"===e?h.addProvider:h.customProviderTitle}),(0,l.jsx)("button",{className:"icon-btn",title:h.close,"aria-label":h.close,onClick:r,children:(0,l.jsx)(n.Bh,{size:17})})]}),(0,l.jsxs)("div",{className:`${b().body} ${"builtin"===e?b().builtinBody:""}`,children:["builtin"===e?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:b().field,children:[(0,l.jsx)("label",{className:b().label,children:h.providerLabel}),(0,l.jsxs)("div",{className:b().picker,ref:ee,children:[(0,l.jsxs)("button",{className:b().providerTrigger,"data-open":S,onClick:()=>N(e=>!e),children:[ea?(0,l.jsx)(p,{id:ea.id,name:ea.name,size:34}):null,(0,l.jsxs)("span",{className:b().providerText,children:[(0,l.jsx)("span",{className:b().providerName,children:ea?.name??h.selectProvider}),ea?(0,l.jsx)("span",{className:b().providerMeta,children:ea.id}):null]}),(0,l.jsx)(n.Cd,{size:15})]}),S?(0,l.jsxs)("div",{className:b().menu,children:[(0,l.jsxs)("div",{className:b().searchWrap,children:[(0,l.jsx)("span",{className:b().searchIcon,children:(0,l.jsx)(n.FG,{size:15})}),(0,l.jsx)("input",{autoFocus:!0,className:b().search,value:k,onChange:e=>_(e.target.value),placeholder:h.searchProviders})]}),(0,l.jsxs)("div",{className:b().providerList,children:[el.map(e=>(0,l.jsxs)("button",{className:b().providerRow,"data-selected":e.id===f,onClick:()=>{w(e.id),z("api_key"),M(""),I(e.apis[0]??"openai-completions"),R(""),H([]),N(!1)},children:[(0,l.jsx)(p,{id:e.id,name:e.name,size:38}),(0,l.jsxs)("span",{className:b().providerText,children:[(0,l.jsx)("span",{className:b().providerName,children:e.name}),(0,l.jsxs)("span",{className:b().providerMeta,children:[e.id," \xb7 ",h.modelCount.replace("{count}",String(e.modelCount))]})]}),e.id===f?(0,l.jsx)("span",{className:b().selectedMark,children:(0,l.jsx)(n.df,{size:16})}):null]},e.id)),0===el.length?(0,l.jsx)("div",{className:b().empty,children:h.noProviderMatches}):null]})]}):null]})]}),ea?.authTypes.includes("oauth")&&m?(0,l.jsxs)("div",{className:b().field,children:[(0,l.jsx)("label",{className:b().label,children:h.authMethod}),(0,l.jsx)(x,{value:C,onChange:e=>z(e),options:[{value:"api_key",label:h.authMethodApiKey},{value:"oauth",label:h.oauthLogin}],"aria-label":h.authMethod})]}):null,"api_key"===C?(0,l.jsxs)("div",{className:b().field,children:[(0,l.jsx)("label",{className:b().label,children:ea?.apiKeyLabel??h.apiKey}),(0,l.jsx)("input",{className:b().input,type:"password",value:P,onChange:e=>M(e.target.value),placeholder:h.apiKeyOptional})]}):null,(0,l.jsxs)("div",{className:b().advanced,children:[(0,l.jsxs)("button",{className:b().advancedButton,"data-open":E,onClick:()=>T(e=>!e),children:[(0,l.jsx)(n.Cd,{size:15}),h.customSettings]}),E?(0,l.jsxs)("div",{children:[(0,l.jsxs)("div",{className:b().field,children:[(0,l.jsx)("label",{className:b().label,children:h.apiAddress}),(0,l.jsx)("input",{className:b().input,value:$,onChange:e=>R(e.target.value),placeholder:ea?.baseUrl||h.providerDefault})]}),(0,l.jsx)(j,{models:U,setModels:H,updateModel:es,inheritedCount:ea?.modelCount??0,catalogIds:et,discover:ep,discoverDisabled:!$.trim()})]}):null]})]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:b().field,children:[(0,l.jsx)("label",{className:b().label,children:h.providerId}),(0,l.jsx)("input",{className:b().input,autoFocus:!0,value:F,onChange:e=>L(e.target.value.toLocaleLowerCase()),placeholder:"acme-gateway"}),(0,l.jsx)("div",{className:b().hint,children:h.providerIdHint}),er&&!en?(0,l.jsx)("div",{className:b().hint,style:{color:"var(--dsw-danger)"},children:h.providerIdInvalid}):null,er&&i.includes(er)?(0,l.jsx)("div",{className:b().hint,style:{color:"var(--dsw-danger)"},children:h.providerIdTaken}):null]}),(0,l.jsxs)("div",{className:b().field,children:[(0,l.jsx)("label",{className:b().label,children:h.displayName}),(0,l.jsx)("input",{className:b().input,value:D,onChange:e=>O(e.target.value),placeholder:h.displayName})]}),(0,l.jsxs)("div",{className:b().field,children:[(0,l.jsx)("label",{className:b().label,children:h.apiAddress}),(0,l.jsx)("input",{className:b().input,value:$,onChange:e=>R(e.target.value),onBlur:G,placeholder:"https://gateway.example/v1"})]}),(0,l.jsxs)("div",{className:b().field,children:[(0,l.jsx)("label",{className:b().label,children:h.apiProtocol}),(0,l.jsx)(x,{value:W,onChange:e=>{I(e),G()},options:A.map(e=>({value:e,label:e})),"aria-label":h.apiProtocol})]}),(0,l.jsxs)("div",{className:b().field,children:[(0,l.jsx)("label",{className:b().label,children:h.apiKey}),(0,l.jsx)("input",{className:b().input,type:"password",value:P,onChange:e=>M(e.target.value),onBlur:G,placeholder:h.apiKeyOptional}),(0,l.jsx)("div",{className:b().hint,children:h.customApiKeyHint})]}),(0,l.jsxs)("div",{className:b().field,children:[(0,l.jsx)("label",{className:b().label,children:h.customHeaders}),(B??[]).map((e,a)=>(0,l.jsxs)("div",{className:b().headerRow,children:[(0,l.jsx)("input",{className:b().input,value:e.name,placeholder:h.customHeaderName,onChange:e=>K(t=>(t??[]).map((t,l)=>l===a?{...t,name:e.target.value}:t))}),(0,l.jsx)("input",{className:b().input,value:e.value,placeholder:h.customHeaderValue,onChange:e=>K(t=>(t??[]).map((t,l)=>l===a?{...t,value:e.target.value}:t))}),(0,l.jsx)("button",{type:"button",className:b().removeModel,title:h.delete,"aria-label":`${h.delete} ${e.name||a+1}`,onClick:()=>K(e=>(e??[]).filter((e,t)=>t!==a)),children:(0,l.jsx)(n.Vd,{size:15})})]},a)),(0,l.jsxs)("button",{type:"button",className:b().addModel,onClick:()=>K(e=>[...e??[],{name:"",value:""}]),children:[(0,l.jsx)(n.Xh,{size:14})," ",h.customHeaderAdd]}),(0,l.jsx)("div",{className:b().hint,children:h.customHeadersHint})]}),(0,l.jsx)(j,{models:U,setModels:H,updateModel:es,discover:ep,discoverDisabled:!$.trim(),autoDiscover:J?{signature:`${$.trim()}|${W}|${P.trim()}`,trigger:V}:void 0})]}),Z?(0,l.jsx)("div",{className:b().error,children:Z}):null]}),(0,l.jsxs)("footer",{className:b().footer,children:[(0,l.jsx)("button",{className:b().footerButton,onClick:r,children:h.cancel}),(0,l.jsx)("button",{className:`${b().footerButton} ${b().primary}`,disabled:Q||("builtin"===e?!ed:!eo),onClick:eu,children:Q?h.saving:"builtin"===e?h.save:h.createProvider})]})]})})}function j({models:e,setModels:a,updateModel:t,inheritedCount:i,catalogIds:r,discover:o,discoverDisabled:d,autoDiscover:c}){let{t:u}=(0,v.s)(),[p,m]=(0,s.useState)(new Set),[h,f]=(0,s.useState)(!1),[y,w]=(0,s.useState)(""),[S,N]=(0,s.useState)(null),[k,_]=(0,s.useState)(new Set),[C,z]=(0,s.useState)({}),P=(e,a,t)=>C[`${a}:${t}`]??(0,g.sm)(e[t]),M=(e,a,l)=>{z(t=>({...t,[`${e}:${a}`]:l})),t(e,{[a]:(0,g.KM)(l)})},E=e=>r?.has(e.trim())??!1,T=(0,s.useRef)(""),$=(0,s.useRef)(0),R=(0,s.useRef)(!1),F=(0,s.useRef)(0),[L,D]=(0,s.useState)(""),[O,A]=(0,s.useState)(0);(0,s.useEffect)(()=>{R.current&&(R.current=!1,$.current+=1,T.current="",D(""))},[c?.signature]),(0,s.useEffect)(()=>{if(!c||c.trigger===F.current||(F.current=c.trigger,!o||T.current===c.signature))return;T.current=c.signature,R.current=!0;let e=++$.current;D("loading");let t=a=>e===$.current&&(R.current=!1,D(a),!0);o(!0).then(e=>{t(e.length?"done":"empty")&&(A(e.length),a(a=>a.length?a:e))},()=>void t("failed"))},[c?.trigger]);let W=async()=>{if(o&&!h){R.current&&(R.current=!1,$.current+=1,T.current="",D("")),f(!0),w("");try{let a=await o(!0);if(!a.length)return void w(u.discoverEmpty);let t=new Set(e.map(e=>e.id.trim()).filter(Boolean)),l=[...a.filter(e=>!E(e.id)),...a.filter(e=>E(e.id))];N(l),_(new Set(l.filter(e=>!t.has(e.id.trim())&&!E(e.id)).map(e=>e.id)))}catch(e){w(e instanceof Error?e.message:u.toastError)}finally{f(!1)}}},I=()=>{N(null),_(new Set)},U=S??[],H=U.filter(e=>!E(e.id)),B=H.length>0&&H.every(e=>k.has(e.id)),K=(0,g.aK)(e),J=e.some(e=>E(e.id));return(0,l.jsxs)("div",{className:b().catalog,children:[(0,l.jsxs)("div",{className:b().catalogHeader,children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("div",{className:b().label,children:u.modelCatalog}),(0,l.jsxs)("div",{className:b().catalogStatus,children:[i?u.usingDefaultModels.replace("{count}",String(i)):u.customModelsRequired,"loading"===L?` \xb7 ${u.autoDiscovering}`:null,"done"===L?` \xb7 ${u.autoDiscovered.replace("{n}",String(O))}`:null,"empty"===L?` \xb7 ${u.discoverEmpty}`:null,"failed"===L?` \xb7 ${u.autoDiscoverFailed}`:null]})]}),o?(0,l.jsx)("div",{className:b().discoverControls,children:(0,l.jsx)("button",{className:b().discoverButton,disabled:d||h,onClick:()=>void W(),children:h?u.discoveringModels:u.discoverModels})}):null]}),y?(0,l.jsx)("div",{className:b().catalogError,children:y}):null,e.length?(0,l.jsx)("div",{className:b().modelList,children:e.map((e,s)=>{let i=p.has(s),r=Number.isNaN(e.contextWindow)||Number.isNaN(e.maxTokens);return(0,l.jsxs)("div",{className:b().modelEntry,children:[(0,l.jsxs)("div",{className:b().modelRow,children:[(0,l.jsx)("button",{type:"button",className:b().rowToggle,title:u.capacityFields,onClick:()=>m(e=>{let a=new Set(e);return a.delete(s)||a.add(s),a}),children:(0,l.jsx)(n.Cd,{size:13,style:{transform:i?"rotate(0deg)":"rotate(-90deg)",transition:"transform 120ms ease"}})}),(0,l.jsx)("input",{className:b().input,style:{borderColor:e.id.trim()||K?.index!==s?void 0:"var(--dsw-danger)"},value:e.id,onChange:e=>t(s,{id:e.target.value}),placeholder:u.modelId}),(0,l.jsx)("input",{className:b().input,value:e.name,onChange:e=>t(s,{name:e.target.value}),placeholder:u.displayNameOptional}),(0,l.jsx)("button",{className:b().removeModel,title:u.delete,onClick:()=>{a(e=>e.filter((e,a)=>a!==s)),m(e=>{let a=new Set;for(let t of e)t!==s&&a.add(t>s?t-1:t);return a}),z(e=>{let a={};for(let[t,l]of Object.entries(e)){let e=Number(t.slice(0,t.indexOf(":")));e!==s&&(a[e>s?`${e-1}${t.slice(t.indexOf(":"))}`:t]=l)}return a})},children:(0,l.jsx)(n.Vd,{size:15})})]}),i?(0,l.jsxs)("div",{className:b().capacityRow,children:[(0,l.jsxs)("label",{className:b().capacityField,children:[(0,l.jsx)("span",{children:u.contextWindowLabel}),(0,l.jsx)("input",{className:b().input,style:{borderColor:Number.isNaN(e.contextWindow)?"var(--dsw-danger)":void 0},value:P(e,s,"contextWindow"),onChange:e=>M(s,"contextWindow",e.target.value),placeholder:"128K"})]}),(0,l.jsxs)("label",{className:b().capacityField,children:[(0,l.jsx)("span",{children:u.maxTokensLabel}),(0,l.jsx)("input",{className:b().input,style:{borderColor:Number.isNaN(e.maxTokens)?"var(--dsw-danger)":void 0},value:P(e,s,"maxTokens"),onChange:e=>M(s,"maxTokens",e.target.value),placeholder:"16K"})]}),(0,l.jsxs)("div",{className:b().capacityField,title:u.visionHint,children:[(0,l.jsx)("span",{children:u.visionLabel}),(0,l.jsx)(x,{size:"sm",style:{width:104},value:void 0===e.vision?"unset":e.vision?"image":"text",onChange:e=>{t(s,{vision:"unset"===e?void 0:"image"===e})},options:[{value:"unset",label:u.visionUnset},{value:"image",label:u.visionOn},{value:"text",label:u.visionOff}],"aria-label":u.visionLabel})]}),(0,l.jsxs)("div",{className:b().capacityField,title:u.reasoningHint,children:[(0,l.jsx)("span",{children:u.reasoningLabel}),(0,l.jsx)(x,{size:"sm",style:{width:104},value:void 0===e.reasoning?"unset":e.reasoning?"on":"off",onChange:e=>{t(s,{reasoning:"unset"===e?void 0:"on"===e})},options:[{value:"unset",label:u.reasoningUnset},{value:"on",label:u.reasoningOn},{value:"off",label:u.reasoningOff}],"aria-label":u.reasoningLabel})]}),(0,l.jsx)("span",{className:b().capacityHint,children:u.capacityHint})]}):null,r?(0,l.jsx)("div",{className:b().rowError,children:u.capacityInvalid.replace("{n}",String(s+1))}):null]},s)})}):(0,l.jsx)("div",{className:b().modelEmpty,children:i?u.modelCatalogEmptyBuiltin:u.modelCatalogEmptyCustom}),J?(0,l.jsx)("div",{className:b().catalogHint,children:u.catalogOverrideHint}):null,(0,l.jsxs)("button",{className:b().addModel,onClick:()=>a(e=>[...e,{id:"",name:""}]),children:[(0,l.jsx)(n.Xh,{size:14}),u.addModel]}),S?(0,l.jsx)("div",{className:b().candidateMask,children:(0,l.jsxs)("div",{className:b().candidateDialog,role:"dialog","aria-modal":"true","aria-label":u.discoverModels,children:[(0,l.jsx)("div",{className:b().candidateHeader,children:(0,l.jsx)("span",{children:u.candidateTitle.replace("{count}",String(S.length))})}),(0,l.jsxs)("div",{className:b().candidateList,children:[U.map(e=>{let a=E(e.id);return(0,l.jsxs)("label",{className:b().candidateRow,"data-disabled":a||void 0,children:[(0,l.jsx)("input",{type:"checkbox",checked:!a&&k.has(e.id),disabled:a,onChange:()=>{let a;return a=e.id,_(e=>{let t=new Set(e);return t.delete(a)||t.add(a),t})}}),(0,l.jsx)("span",{className:b().candidateId,children:e.id}),e.name?(0,l.jsx)("span",{className:b().candidateName,children:e.name}):null,a?(0,l.jsx)("span",{className:b().candidateTag,children:u.candidateInCatalog}):null]},e.id)}),0===U.length?(0,l.jsx)("div",{className:b().modelEmpty,children:"—"}):null]}),(0,l.jsxs)("div",{className:b().candidateActions,children:[(0,l.jsxs)("label",{className:b().candidateAll,children:[(0,l.jsx)("input",{type:"checkbox",checked:B,disabled:0===H.length,onChange:()=>_(e=>{let a=new Set(e);return H.every(e=>a.has(e.id))?H.forEach(e=>a.delete(e.id)):H.forEach(e=>a.add(e.id)),a})}),u.candidateAll]}),(0,l.jsx)("span",{className:b().candidatePicked,children:u.candidatePicked.replace("{n}",String(k.size))}),(0,l.jsx)("button",{className:b().footerButton,onClick:I,children:u.cancel}),(0,l.jsx)("button",{className:`${b().footerButton} ${b().primary}`,disabled:0===k.size,onClick:()=>{S&&(a(e=>{let a=new Map(e.map(e=>[e.id.trim(),e]));for(let e of S){let t=e.id.trim();!t||!k.has(t)||a.has(t)||E(t)||a.set(t,e)}return[...a.values()]}),I())},children:u.candidateAdopt.replace("{n}",String(k.size))})]})]})}):null]})}var w=t(8155);function S({tone:e}){return(0,l.jsx)("span",{className:"inline-block h-[7px] w-[7px] flex-none rounded-full",style:{background:"on"===e?"var(--dsw-success)":"pending"===e?"var(--dsw-accent)":"var(--dsw-label-caption)"}})}function N({title:e,hint:a,children:t}){return(0,l.jsxs)("div",{className:"hairline-b flex flex-wrap items-start justify-between gap-4 pb-5",children:[(0,l.jsxs)("div",{className:"min-w-0 flex-1",style:{minWidth:"45%"},children:[(0,l.jsx)("div",{style:{fontSize:14},children:e}),a?(0,l.jsx)("div",{style:{fontSize:12,color:"var(--dsw-label-caption)",lineHeight:1.55,marginTop:2},children:a}):null]}),(0,l.jsx)("div",{className:"flex-none",children:t})]})}function k({url:e,token:a}){let{t}=(0,v.s)(),[i,r]=(0,s.useState)("");(0,s.useEffect)(()=>{if(!i)return;let e=setTimeout(()=>r(""),2e3);return()=>clearTimeout(e)},[i]);let n=a?`${e.replace(/\/+$/,"")}/?token=${encodeURIComponent(a)}`:e;return(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("a",{href:n,target:"_blank",rel:"noreferrer",className:"font-mono hover:underline",style:{fontSize:12},children:e}),(0,l.jsx)("button",{type:"button",className:"btn-outline",style:{height:24,fontSize:12,paddingInline:8},onClick:()=>void(0,w.D)(n).then(e=>r(e?"ok":"fail")),children:"ok"===i?t.remoteLinkCopied:"fail"===i?t.copyFailed:t.copy})]})}function _(){let{t:e}=(0,v.s)(),[a,t]=(0,s.useState)(null),[i,r]=(0,s.useState)(!1),[n,o]=(0,s.useState)(""),d=(0,s.useRef)(!0),c=(0,s.useCallback)(async()=>{try{let a=await fetch("/api/remote",{cache:"no-store"}),l=await a.json();if(!d.current)return;l?.success?(t(l.data),o("")):o(l?.error??e.remoteFailed)}catch{d.current&&o(e.remoteFailed)}},[e]);(0,s.useEffect)(()=>(d.current=!0,c(),()=>{d.current=!1}),[c]);let u=!!(a?.public.running&&!a.public.ready);(0,s.useEffect)(()=>{if(!u)return;let e=setInterval(()=>void c(),2500);return()=>clearInterval(e)},[u,c]);let p=async a=>{if(!i){r(!0),o("");try{let l=await fetch("/api/remote",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:a})}),s=await l.json();s?.success?t(s.data):o(s?.error??e.remoteFailed)}catch{o(e.remoteFailed)}finally{d.current&&r(!1)}}},[m,h]=(0,s.useState)(!1);(0,s.useEffect)(()=>{if(!m)return;let e=setTimeout(()=>h(!1),4e3);return()=>clearTimeout(e)},[m]);let x=async()=>{if(!m)return void h(!0);h(!1),o("");try{let a=await fetch("/api/web-auth?scope=all",{method:"DELETE"}),t=await a.json().catch(()=>null);if(!a.ok||!t?.success)throw Error(t?.error??e.remoteFailed);window.location.href="/login"}catch(a){d.current&&o(a instanceof Error?a.message:e.remoteFailed)}},g=a?.lan,f=a?.public,b=a?.blocked??null,y=a?.pluginEnabled??!0,j=g?.running?"on":"off",w=f?.running?f.ready?"on":"pending":"off",_=async()=>{if(!i){r(!0),o("");try{let a=await fetch("/api/remote",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"set-plugin",enabled:!y})}),l=await a.json();l?.success?t(l.data):o(l?.error??e.remoteFailed)}catch{o(e.remoteFailed)}finally{d.current&&r(!1)}}};return(0,l.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,l.jsx)("div",{style:{fontSize:15,fontWeight:500},children:e.setRemote}),(0,l.jsx)("span",{className:"rounded-md px-2 py-[2px]",style:{fontSize:11,background:"var(--dsw-hover)",color:"var(--dsw-label-secondary)"},children:e.remoteBuiltin}),(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsx)("span",{style:{fontSize:12,color:"var(--dsw-label-caption)"},children:y?e.remotePluginOn:e.remotePluginOff}),(0,l.jsx)("button",{type:"button",className:"relative h-5 w-9 flex-none rounded-full transition-colors",style:{background:y?"var(--dsw-accent)":"var(--dsw-border-l3)"},role:"switch","aria-checked":y,"aria-label":e.remotePluginToggle,title:e.remotePluginHint,disabled:i||!a||null!==b,onClick:()=>void _(),children:(0,l.jsx)("span",{className:"absolute top-0.5 h-4 w-4 rounded-full bg-white transition-all",style:{left:y?18:2}})})]}),(0,l.jsx)("div",{style:{fontSize:12,color:"var(--dsw-label-secondary)",lineHeight:1.6,marginTop:-12},children:e.remotePluginHint}),(0,l.jsx)(N,{title:e.remoteLanTitle,hint:e.remoteLanHint,children:(0,l.jsxs)("div",{className:"flex flex-col items-end gap-1.5",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",style:{fontSize:13},children:[(0,l.jsx)(S,{tone:j}),(0,l.jsx)("span",{style:{color:g?.running?"var(--dsw-label-primary)":"var(--dsw-label-caption)"},children:g?.running?e.remoteRunning:e.remoteStopped}),g?.running&&!1===g.styled?(0,l.jsxs)("span",{style:{fontSize:11.5,color:"var(--dsw-label-caption)"},children:["\xb7 ",e.remoteLanPlain]}):null]}),(g?.urls??[]).map(e=>(0,l.jsx)(k,{url:e,token:a?.loginToken},e)),g?.error?(0,l.jsx)("div",{style:{fontSize:12,color:"var(--dsw-danger)"},children:g.error}):null]})}),(0,l.jsx)(N,{title:e.remotePublicTitle,hint:e.remotePublicHint,children:(0,l.jsxs)("div",{className:"flex flex-col items-end gap-2",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",style:{fontSize:13},children:[(0,l.jsx)(S,{tone:w}),(0,l.jsx)("span",{style:{color:f?.running?"var(--dsw-label-primary)":"var(--dsw-label-caption)"},children:f?.running?f.ready?e.remoteRunning:e.remotePending:e.remoteStopped})]}),f?.url?(0,l.jsx)(k,{url:f.url,token:a?.loginToken}):null,(0,l.jsx)("div",{className:"flex items-center gap-2",children:f?.running?(0,l.jsx)("button",{className:"btn-outline",style:{height:30,fontSize:13},disabled:i,onClick:()=>void p("stop"),children:e.remoteStop}):(0,l.jsx)("button",{className:"btn-primary-white",style:{height:30,fontSize:13},disabled:i||null!==b||!y,onClick:()=>void p("start"),children:i?e.remoteWorking:e.remoteStart})}),y?null:(0,l.jsx)("div",{style:{fontSize:11.5,color:"var(--dsw-label-caption)",textAlign:"right"},children:e.remotePublicNeedsPlugin})]})}),a&&"auth"!==b?(0,l.jsx)(N,{title:e.remoteSessionsTitle,hint:e.remoteSessionsHint,children:(0,l.jsx)("button",{className:"btn-outline",style:{height:30,fontSize:13,color:m?"var(--dsw-danger)":void 0},onClick:()=>void x(),children:m?e.remoteSignOutAllConfirm:e.remoteSignOutAll})}):null,b?(0,l.jsx)("div",{style:{fontSize:12,color:"var(--dsw-label-secondary)",lineHeight:1.6},children:"auth"===b?e.remoteBlockedAuth:e.remoteBlockedDev}):null,f&&!f.engineAvailable?(0,l.jsx)("div",{style:{fontSize:12,color:"var(--dsw-danger)",lineHeight:1.6},children:e.remoteEngineMissing}):null,f?.error?(0,l.jsx)("div",{style:{fontSize:12,color:"var(--dsw-danger)",lineHeight:1.6},children:f.error}):null,n?(0,l.jsx)("div",{role:"alert",style:{fontSize:12,color:"var(--dsw-danger)"},children:n}):null]})}var C=t(826),z=t(9591),P=t(3364),M=t(6540),E=t(922);let T=["xai","openai-codex","anthropic","deepseek","openrouter","moonshotai","moonshotai-cn","kimi-coding","github-copilot","vercel-ai-gateway","opencode-go"];function $(e){return T.includes(e)}function R({open:e,onClose:a,cwd:t,toolPreset:i,onToolPresetChange:r,tools:o,onSetTools:d,onOpenFileContent:c}){let{t:u,lang:p,setLang:m}=(0,v.s)(),[h,x]=(0,s.useState)("general");if((0,s.useEffect)(()=>{if(!e)return;let t=e=>{"Escape"!==e.key||document.querySelector('[data-provider-modal="true"]')||a()};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[e,a]),!e)return null;let g=[{id:"general",label:u.setGeneral,icon:(0,l.jsx)(n.Ec,{size:15})},{id:"models",label:u.setModels,icon:(0,l.jsx)(n.se,{size:15})},{id:"tools",label:u.toolsSection,icon:(0,l.jsx)(n.DI,{size:15})},{id:"plugins",label:u.setPlugins,icon:(0,l.jsx)(n.q2,{size:15})},{id:"skills",label:u.setSkills,icon:(0,l.jsx)(n.i7,{size:15})},{id:"remote",label:u.setRemote,icon:(0,l.jsx)(n.an,{size:15})}];return(0,l.jsx)("div",{className:"modal-mask fixed inset-0 z-[100] flex items-center justify-center",onMouseDown:e=>{e.target===e.currentTarget&&a()},children:(0,l.jsxs)("div",{className:"settings-dialog glass-modal flex overflow-hidden",style:{width:800,maxWidth:"calc(100vw - 48px)",height:"min(800px, calc(100vh - 48px))",borderRadius:32,boxShadow:"var(--dsw-elevation-prominent)"},children:[(0,l.jsxs)("div",{className:"settings-nav flex w-52 flex-none flex-col gap-1 py-4 pl-4 pr-3",children:[(0,l.jsx)("div",{className:"settings-title px-2 pb-3",style:{fontSize:16,fontWeight:500},children:u.settings}),g.map(e=>(0,l.jsxs)("button",{"data-active":h===e.id?"true":void 0,className:"isx-menu-item flex h-[42px] items-center gap-2.5 rounded-xl px-3 text-left",style:{paddingLeft:10,paddingRight:14,fontSize:14,color:h===e.id?"var(--dsw-bg-base)":"var(--dsw-label-secondary)"},onClick:()=>x(e.id),children:[(0,l.jsx)("span",{className:"isx-menu-icon",style:{display:"inline-flex"},children:e.icon}),(0,l.jsx)("span",{className:"isx-menu-shift",children:e.label})]},e.id))]}),(0,l.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2 px-6 py-3.5",children:[(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsxs)("button",{className:"btn-outline",style:{height:32,fontSize:13},onClick:()=>window.open("/api/config","_blank"),children:[(0,l.jsx)(n.FQ,{size:14})," ",u.openConfigFile]}),(0,l.jsx)("button",{className:"icon-btn",onClick:a,children:(0,l.jsx)(n.Bh,{size:15})})]}),(0,l.jsxs)("div",{className:"min-h-0 flex-1 overflow-y-auto px-6 py-5",children:["general"===h&&(0,l.jsx)(F,{lang:p,setLang:m}),"models"===h&&(0,l.jsx)(K,{}),"skills"===h&&(0,l.jsx)(X,{cwd:t,onOpenFileContent:c}),"tools"===h&&(0,l.jsx)(Q,{toolPreset:i,onToolPresetChange:r,tools:o,onSetTools:d}),"plugins"===h&&(0,l.jsx)(Z,{cwd:t}),"remote"===h&&(0,l.jsx)(_,{})]})]})]})})}function F({lang:e,setLang:a}){let{t}=(0,v.s)(),[i,n]=(0,s.useState)("dsh"),[o,d]=(0,s.useState)("system"),[c,u]=(0,s.useState)(14),[p,m]=(0,s.useState)(14),[h,x]=(0,s.useState)("steer"),[g,f]=(0,s.useState)(null),[b,y]=(0,s.useState)(null),[j,w]=(0,s.useState)(null),[S,N]=(0,s.useState)(!0),[k,_]=(0,s.useState)(!1),[C,z]=(0,s.useState)(null),[P,E]=(0,s.useState)({reserveTokens:"",maxRetries:""}),T=async()=>{N(!0),z(null);let e=async e=>{let a=await fetch(e),t=await a.json();if(!a.ok||!t.success)throw Error(t.error||`request failed (${a.status})`);return t.data},[a,t,l,s]=await Promise.allSettled([e("/api/security"),e("/api/pi-settings"),e("/api/version"),e("/api/web-auth")]);"fulfilled"===t.status?(f(t.value),E({reserveTokens:String(t.value.compaction.reserveTokens),maxRetries:String(t.value.retry.maxRetries)})):f(null),"fulfilled"===l.status&&l.value?.piWeb?y({piWeb:l.value.piWeb,piEngine:l.value.piEngine}):y(null),"fulfilled"===s.status&&"boolean"==typeof s.value?.enabled?w({enabled:s.value.enabled,authenticated:!0===s.value.authenticated}):w(null),[a,t,l].some(e=>"rejected"===e.status)&&z("load"),N(!1)};(0,s.useEffect)(()=>{n((0,M.m6)()),d((0,M.Xf)());let e=parseInt(localStorage.getItem("piweb.fontSize")??"14",10);Number.isNaN(e)||u(e);let a=parseInt(localStorage.getItem("piweb.chatFontSize")??"14",10);Number.isNaN(a)||m(a),x((0,r.$h)()),T()},[]);let $=async e=>{if(!g||k)return!1;_(!0),z(null);try{let a=await fetch("/api/pi-settings",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),t=await a.json();if(!a.ok||!t.success)throw Error(t.error||"save failed");return f(t.data),!0}catch{return z("save"),!1}finally{_(!1)}},R=async(e,a)=>{if(!g)return;let t=P[a].trim(),l=Number(t);!t||!Number.isSafeInteger(l)||l<0||l>1e9?z("save"):l!==g[e][a]&&await $({[e]:{[a]:l}})},H=(e,a,t)=>(0,l.jsx)("input",{type:"number",min:0,value:P[a],disabled:!g||S||k,onChange:e=>E(t=>({...t,[a]:e.target.value})),onBlur:()=>void R(e,a),onKeyDown:e=>{"Enter"===e.key&&e.currentTarget.blur()},className:"rounded-lg px-2 py-1",title:t,style:{width:90,textAlign:"right",background:"var(--dsw-hover)"}}),B=[{id:"dsh",label:t.themeDsh,light:"#FFFFFF",dark:"#040405",accent:"#02DEFC"},{id:"silver-steel",label:t.themeSilverSteel,light:"#F3F4F6",dark:"#1A1C24",accent:"#94A3B8"},{id:"limestone-coal",label:t.themeLimestoneCoal,light:"#F0EFEB",dark:"#171717",accent:"#CEB27E"},{id:"linen-moss",label:t.themeLinenMoss,light:"#F2F2EC",dark:"#1E211E",accent:"#A3B3A3"},{id:"nord-paper",label:t.themeNordPaper,light:"#FCFBF9",dark:"#2E3440",accent:"#88C0D0"},{id:"pebrel",label:t.themePebrel,light:"#F3F4F6",dark:"#0F111A",accent:"#52A8FF"}];return(0,l.jsxs)("div",{className:"flex flex-col gap-6",children:[(S||C)&&(0,l.jsxs)("div",{role:C?"alert":"status",className:"flex items-center gap-3 rounded-lg px-3 py-2",style:{background:"var(--dsw-hover)",color:C?"var(--dsw-danger)":"var(--dsw-label-secondary)"},children:[(0,l.jsx)("span",{className:"flex-1",children:"load"===C?t.settingsLoadFailed:"save"===C?t.settingsSaveFailed:t.settingsLoading}),"load"===C&&(0,l.jsx)("button",{type:"button",className:"pw-chip",onClick:()=>void T(),children:t.settingsRetry})]}),(0,l.jsx)(A,{title:t.language,children:(0,l.jsx)(O,{value:e,options:[{value:"zh",label:"中文"},{value:"en",label:"English"}],onChange:e=>a(e)})}),(0,l.jsx)(W,{title:t.appearance,children:(0,l.jsx)("div",{className:"flex w-full flex-wrap gap-2",children:B.map(e=>(0,l.jsxs)("button",{className:"isx-card flex flex-col items-center justify-center gap-1",style:{flex:"1 1 150px",padding:"20px 32px",borderRadius:20,background:i===e.id?"var(--dsw-module-platform)":"var(--dsw-bg-elevated)",color:"var(--dsw-label-primary)",fontSize:14,lineHeight:"22px"},"aria-pressed":i===e.id,onClick:()=>{var a;n(a=e.id),(0,M.kK)(a,o)},children:[(0,l.jsxs)("span",{className:"flex items-center overflow-hidden rounded-md",style:{border:"1px solid var(--dsw-border-l3)",width:42,height:20},children:[(0,l.jsx)("span",{style:{background:e.light,flex:1,height:"100%"}}),(0,l.jsx)("span",{style:{background:e.dark,flex:1,height:"100%"}})]}),(0,l.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,l.jsx)("span",{className:"inline-block rounded-full",style:{width:8,height:8,background:e.accent}}),e.label]})]},e.id))})}),(0,l.jsx)(W,{title:t.appearanceMode,children:(0,l.jsx)("div",{className:"flex w-full flex-wrap gap-2",children:[{id:"light",label:t.themeLight},{id:"dark",label:t.themeDark},{id:"system",label:t.themeSystem}].map(e=>(0,l.jsx)("button",{className:"isx-card flex flex-col items-center justify-center gap-1",style:{flex:"1 1 120px",padding:"16px 24px",borderRadius:20,background:o===e.id?"var(--dsw-module-platform)":"var(--dsw-bg-elevated)",color:"var(--dsw-label-primary)",fontSize:14,lineHeight:"22px"},"aria-pressed":o===e.id,onClick:()=>{var a;d(a=e.id),(0,M.kK)(i,a)},children:e.label},e.id))})}),(0,l.jsx)(A,{title:t.fontUiSize,desc:t.fontUiSizeDesc,children:(0,l.jsx)(I,{value:c,onChange:e=>{let a=Math.max(12,Math.min(18,e));u(a),localStorage.setItem("piweb.fontSize",String(a)),document.documentElement.style.setProperty("--dsh-content-font-size",`${a}px`),document.documentElement.style.setProperty("--dsh-content-font-delta",`${a-14}px`)},max:18})}),(0,l.jsx)(A,{title:t.fontChatSize,desc:t.fontChatSizeDesc,children:(0,l.jsx)(I,{value:p,onChange:e=>{let a=Math.max(12,Math.min(20,e));m(a),localStorage.setItem("piweb.chatFontSize",String(a)),document.documentElement.style.setProperty("--piweb-chat-font-size",`${a}px`)},max:20})}),(0,l.jsx)(A,{title:t.fontUiFamily,desc:t.fontUiFamilyDesc,children:(0,l.jsx)(U,{})}),(0,l.jsx)(A,{title:t.enterBehavior,desc:t.enterBehaviorDesc,children:(0,l.jsx)(O,{value:h,options:[{value:"steer",label:t.enterSteer},{value:"queue",label:t.enterQueue}],onChange:e=>{x(e),(0,r.vf)(e)}})}),(0,l.jsx)(A,{title:t.autoCompact,desc:t.autoCompactDesc,children:(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("button",{disabled:!g||k,className:"relative h-5 w-9 flex-none rounded-full transition-colors",style:{background:g?.compaction.enabled?"var(--dsw-accent)":"var(--dsw-border-l3)"},role:"switch","aria-checked":g?.compaction.enabled??!1,onClick:()=>void $({compaction:{enabled:!g?.compaction.enabled}}),children:(0,l.jsx)("span",{className:"absolute top-0.5 h-4 w-4 rounded-full bg-white transition-all",style:{left:g?.compaction.enabled?18:2}})}),H("compaction","reserveTokens",t.reserveTokens)]})}),(0,l.jsx)(A,{title:t.autoRetry,desc:t.autoRetryDesc,children:(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("button",{disabled:!g||k,className:"relative h-5 w-9 flex-none rounded-full transition-colors",style:{background:g?.retry.enabled?"var(--dsw-accent)":"var(--dsw-border-l3)"},role:"switch","aria-checked":g?.retry.enabled??!1,onClick:()=>void $({retry:{enabled:!g?.retry.enabled}}),children:(0,l.jsx)("span",{className:"absolute top-0.5 h-4 w-4 rounded-full bg-white transition-all",style:{left:g?.retry.enabled?18:2}})}),H("retry","maxRetries",t.maxRetries)]})}),(0,l.jsx)(A,{title:t.versionPiweb,desc:t.versionPiwebDesc,children:(0,l.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,l.jsx)(L,{href:"https://github.com/RexVane/PiWeb",value:b?.piWeb}),(0,l.jsx)(D,{target:"piweb"})]})}),(0,l.jsx)(A,{title:t.versionPi,desc:t.versionPiDesc,children:(0,l.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,l.jsx)(L,{href:"https://github.com/earendil-works/pi",value:b?.piEngine}),(0,l.jsx)(D,{target:"pi"})]})}),j?.enabled?(0,l.jsx)(A,{title:t.webAuth,desc:t.webAuthTokenOn,children:(0,l.jsx)("button",{className:"btn-outline",style:{height:30,padding:"0 14px",fontSize:12.5},onClick:async()=>{await fetch("/api/web-auth",{method:"DELETE"}).catch(()=>{}),window.location.href="/login"},children:t.logout})}):null]})}function L({href:e,value:a}){return(0,l.jsx)("a",{href:e,target:"_blank",rel:"noreferrer",style:{fontFamily:"var(--font-mono)",fontSize:13,color:"var(--dsw-label-secondary)",textDecoration:"none"},onMouseEnter:e=>e.currentTarget.style.color="var(--dsw-accent)",onMouseLeave:e=>e.currentTarget.style.color="var(--dsw-label-secondary)",children:a??"—"})}function D({target:e}){let{t:a}=(0,v.s)(),{phase:t,latest:i,command:r,error:n,busy:o}=(0,z.M)().targets[e];if((0,s.useEffect)(()=>{(0,z.fT)()},[]),"idle"===t||"latest"===t||"error"===t){let s="latest"===t?a.upToDate:"error"===t?o?a.updateBusy:a.updateFailed:a.checkUpdate;return(0,l.jsx)("button",{type:"button",className:"btn-outline",style:{height:26,padding:"0 10px",fontSize:12,color:"latest"===t?"var(--dsw-label-tertiary)":"error"===t?"var(--dsw-danger)":"var(--dsw-label-primary)"},title:n||void 0,disabled:"checking"===t||"updating"===t,onClick:()=>void(0,z.Ug)(e),children:s})}return"available"===t?r?(0,l.jsxs)("span",{className:"flex flex-col items-end gap-0.5",style:{maxWidth:300},children:[(0,l.jsx)(C.H,{command:r}),(0,l.jsx)("span",{style:{fontSize:11,color:"var(--dsw-label-tertiary)",textAlign:"right"},children:a.updateManualHint})]}):(0,l.jsx)("button",{type:"button",className:"btn-primary-white",style:{height:26,padding:"0 12px",fontSize:12},onClick:()=>void(0,z.PG)(e),children:a.updateTo.replace("{v}",i)}):"updated"===t?(0,l.jsxs)("span",{className:"flex flex-col items-end gap-0.5",style:{maxWidth:280,textAlign:"right"},children:[(0,l.jsx)("span",{style:{fontSize:12,color:"var(--dsw-success)"},children:a.updatedTo.replace("{v}",i)}),(0,l.jsx)("span",{style:{fontSize:11,color:"var(--dsw-label-tertiary)"},children:a.updateRestartHint})]}):(0,l.jsxs)("span",{className:"flex items-center gap-1.5",style:{fontSize:12,color:"var(--dsw-label-tertiary)"},children:[(0,l.jsx)("span",{className:"h-3 w-3 flex-none animate-spin rounded-full border-2 border-current border-t-transparent"}),"updating"===t?a.updatingNow:a.checkingUpdate]})}function O({value:e,options:a,onChange:t,width:r,disabled:o}){let[d,c]=(0,s.useState)(!1),[u,p]=(0,s.useState)(null),m=(0,s.useRef)(null),h=(0,s.useRef)(null);(0,s.useEffect)(()=>{if(!d)return;let e=m.current?.getBoundingClientRect();e&&p({left:e.left,top:e.bottom+6,bottom:e.top-6});let a=e=>{m.current?.contains(e.target)||h.current?.contains(e.target)||c(!1)};return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[d]),(0,s.useEffect)(()=>{o&&c(!1)},[o]);let x=a.find(a=>a.value===e),v=(()=>{if(!u)return null;let e=Math.min(280,37*a.length+12),t=window.innerHeight-u.top-8,l=u.bottom-8;return t<e&&l>t?{bottom:window.innerHeight-u.bottom,maxHeight:Math.min(280,l)}:{top:u.top,maxHeight:Math.min(280,Math.max(t,80))}})();return(0,l.jsxs)("div",{className:"relative",children:[(0,l.jsxs)("button",{ref:m,className:"select-chip","data-open":d,disabled:o,onClick:()=>c(e=>!e),children:[x?.label??e,(0,l.jsx)("span",{className:"chevron",children:(0,l.jsx)(n.Cd,{size:14})})]}),d&&!o&&u&&v&&(0,i.createPortal)((0,l.jsx)("div",{ref:h,className:"popover fixed z-[130] p-1.5 shadow-xl","data-placement":"bottom"in v?"top":"bottom",style:{left:u.left,...v,minWidth:r??140,width:"max-content",overflowY:"auto"},children:a.map(a=>{let s=a.value===e;return(0,l.jsxs)("button",{className:"flex w-full items-center justify-between gap-3 rounded-xl px-3.5 py-2 text-left transition-colors",style:{background:s?"var(--dsw-accent-soft)":"transparent"},onMouseEnter:e=>{s||(e.currentTarget.style.background="var(--dsw-hover)")},onMouseLeave:e=>{s||(e.currentTarget.style.background="transparent")},onClick:()=>{t(a.value),c(!1)},children:[(0,l.jsx)("span",{style:{fontSize:13.5,color:s?"var(--dsw-accent)":"var(--dsw-label-primary)",whiteSpace:"nowrap"},children:a.label}),s&&(0,l.jsx)("span",{style:{display:"inline-flex",color:"var(--dsw-accent)",flex:"none"},children:(0,l.jsx)(n.df,{size:14})})]},a.value)})}),document.body)]})}function A({title:e,desc:a,children:t}){return(0,l.jsxs)("div",{className:"hairline-b flex items-center justify-between gap-6 pb-5",children:[(0,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsx)("div",{style:{fontSize:14,fontWeight:400},children:e}),a&&(0,l.jsx)("div",{className:"mt-0.5",style:{fontSize:12,color:"var(--dsw-label-caption)"},children:a})]}),(0,l.jsx)("div",{className:"flex-none",children:t})]})}function W({title:e,desc:a,children:t}){return(0,l.jsxs)("div",{className:"hairline-b flex flex-col gap-3 pb-5",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("div",{style:{fontSize:14,fontWeight:400},children:e}),a&&(0,l.jsx)("div",{className:"mt-0.5",style:{fontSize:12,color:"var(--dsw-label-caption)"},children:a})]}),t]})}function I({value:e,onChange:a,max:t}){return(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("button",{className:"icon-btn",style:{width:26,height:26,border:"0.5px solid var(--dsw-border-l3)",borderRadius:8},disabled:e<=12,onClick:()=>a(e-1),"aria-label":"decrease font size",children:"−"}),(0,l.jsxs)("button",{style:{minWidth:48,textAlign:"center",fontSize:13,color:14===e?"var(--dsw-label-tertiary)":"var(--dsw-label-primary)"},title:"reset",onClick:()=>a(14),children:[e," px"]}),(0,l.jsx)("button",{className:"icon-btn",style:{width:26,height:26,border:"0.5px solid var(--dsw-border-l3)",borderRadius:8},disabled:e>=t,onClick:()=>a(e+1),"aria-label":"increase font size",children:"+"})]})}function U(){let{t:e,lang:a}=(0,v.s)(),[t,i]=(0,s.useState)(null),[r,n]=(0,s.useState)(""),[o,d]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let e=(0,E.ll)(),a=e?.startsWith(E.D8)?e.slice(E.D8.length):null;i(e),d(null!==a),n(a??"")},[]);let c=e=>{n(e);let a=e.trim()?E.D8+e.trim():null;i(a),(0,E.di)(a)},u=o?E.D8:t??E.Z$[0].id;return(0,l.jsxs)("div",{className:"flex flex-col items-end gap-2",children:[(0,l.jsx)(O,{value:u,width:220,options:[...E.Z$.map(e=>({value:e.id,label:"zh"===a?e.label.zh:e.label.en})),{value:E.D8,label:e.fontCustom}],onChange:e=>{if(e===E.D8){d(!0),c(r);return}d(!1),i(e),(0,E.di)(e)}}),o&&(0,l.jsx)("input",{value:r,onChange:e=>c(e.target.value),placeholder:e.fontCustomPlaceholder,style:{height:30,width:260,padding:"0 10px",fontSize:13,background:"var(--dsw-input-major)",border:"0.5px solid var(--dsw-border-l3)",borderRadius:8,color:"var(--dsw-label-primary)"}})]})}let H={contextWindow:"",maxTokens:"",vision:""};function B({gaps:e,providerLabel:a,busy:t,onSave:i}){let{t:r}=(0,v.s)(),[o,d]=(0,s.useState)({}),c=e=>`${e.provider}\0${e.index}`,u=e=>o[c(e)]??H,p=(e,a)=>d(t=>({...t,[c(e)]:{...t[c(e)]??H,...a}})),m=e.filter(e=>e.missing.includes("input")),h=e=>d(a=>{let t={...a};for(let a of m)t[c(a)]={...t[c(a)]??H,vision:e};return t}),x=!1,f=[];for(let a of e){let e=o[c(a)];if(!e)continue;let t=a.missing.includes("contextWindow")?(0,g.KM)(e.contextWindow):void 0,l=a.missing.includes("maxTokens")?(0,g.KM)(e.maxTokens):void 0;if(Number.isNaN(t)||Number.isNaN(l)){x=!0;continue}let s=a.missing.includes("input")&&e.vision?"image"===e.vision:void 0;(void 0!==t||void 0!==l||void 0!==s)&&f.push({provider:a.provider,index:a.index,id:a.id,contextWindow:t,maxTokens:l,vision:s})}let b=async()=>{await i(f)&&d({})},y=(e,a,s)=>{if(!e.missing.includes(a))return(0,l.jsxs)("span",{className:"truncate",style:{fontFamily:"var(--font-mono)",color:"var(--dsw-label-secondary)"},children:[(0,l.jsxs)("span",{className:"sm:hidden",style:{color:"var(--dsw-label-caption)"},children:[s," "]}),(0,g.sm)(e[a])||"—"]});let i=u(e)[a];return(0,l.jsx)("input",{className:"pw-audit-field",style:{fontFamily:"var(--font-mono)"},value:i,onChange:t=>p(e,{[a]:t.target.value}),placeholder:s,"aria-label":`${e.id} ${s}`,"aria-invalid":Number.isNaN((0,g.KM)(i))||void 0,disabled:t})};return(0,l.jsxs)("section",{className:"flex flex-col gap-3 rounded-2xl p-4",style:{border:"0.5px solid var(--dsw-border-l3)",background:"var(--dsw-hover)"},"data-testid":"model-audit",children:[(0,l.jsxs)("div",{className:"flex items-start gap-2.5",children:[(0,l.jsx)(n.PP,{size:16,style:{flex:"none",marginTop:1,color:"var(--dsw-warn)"}}),(0,l.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,l.jsx)("div",{style:{fontSize:13.5,fontWeight:600},children:r.modelAuditTitle.replace("{n}",String(e.length))}),(0,l.jsx)("div",{className:"mt-1",style:{fontSize:12,color:"var(--dsw-label-caption)",lineHeight:1.65},children:r.modelAuditDesc.replace("{ctx}",(0,g.sm)(g.C.contextWindow)).replace("{out}",(0,g.sm)(g.C.maxTokens))})]})]}),(0,l.jsxs)("div",{style:{fontSize:12.5},role:"table","aria-label":r.modelAuditTitle.replace("{n}",String(e.length)),children:[(0,l.jsxs)("div",{role:"row",className:"hidden gap-x-2 px-1 pb-1.5 sm:grid sm:grid-cols-[minmax(0,1fr)_92px_92px_108px]",style:{fontSize:11.5,color:"var(--dsw-label-caption)"},children:[(0,l.jsx)("span",{role:"columnheader",children:r.modelAuditColModel}),(0,l.jsx)("span",{role:"columnheader",children:r.modelAuditColContext}),(0,l.jsx)("span",{role:"columnheader",children:r.modelAuditColOutput}),(0,l.jsx)("span",{role:"columnheader",children:r.modelAuditColVision})]}),(0,l.jsx)("div",{className:"max-h-[320px] overflow-y-auto",style:{borderTop:"0.5px solid var(--dsw-border-l2)"},children:e.map(e=>(0,l.jsxs)("div",{role:"row",className:"grid grid-cols-3 items-center gap-x-2 gap-y-1.5 px-1 py-2 sm:grid-cols-[minmax(0,1fr)_92px_92px_108px]",style:{borderBottom:"0.5px solid var(--dsw-border-l1)"},children:[(0,l.jsxs)("div",{role:"cell",className:"col-span-3 min-w-0 sm:col-span-1",title:`${e.provider} / ${e.id}`,children:[(0,l.jsx)("div",{className:"truncate",style:{fontWeight:500},children:e.name??e.id}),(0,l.jsxs)("div",{className:"truncate",style:{fontSize:11.5,fontFamily:"var(--font-mono)",color:"var(--dsw-label-caption)"},children:[a(e.provider)," / ",e.id]})]}),(0,l.jsx)("div",{role:"cell",className:"min-w-0",children:y(e,"contextWindow",r.modelAuditColContext)}),(0,l.jsx)("div",{role:"cell",className:"min-w-0",children:y(e,"maxTokens",r.modelAuditColOutput)}),(0,l.jsx)("div",{role:"cell",className:"min-w-0",children:(e.missing.includes("input"),(0,l.jsxs)("div",{className:"flex items-center gap-3",role:"group","aria-label":`${e.id} ${r.modelAuditColVision}`,children:[(0,l.jsxs)("label",{className:"flex cursor-default items-center gap-1",style:{color:"var(--dsw-label-tertiary)"},title:r.visionInputTextHint,children:[(0,l.jsx)("input",{type:"checkbox",checked:!0,disabled:!0,readOnly:!0}),r.visionInputText]}),(0,l.jsxs)("label",{className:"flex items-center gap-1",style:{color:"var(--dsw-label-secondary)"},title:r.visionInputImageHint,children:[(0,l.jsx)("input",{type:"checkbox",checked:e.missing.includes("input")?"image"===u(e).vision:!0===e.vision,disabled:t||!e.missing.includes("input"),onChange:a=>p(e,{vision:a.target.checked?"image":"text"}),"aria-label":`${e.id} ${r.visionInputImage}`}),r.visionInputImage]})]}))})]},c(e)))})]}),(0,l.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[m.length>0?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("span",{style:{fontSize:12,color:"var(--dsw-label-caption)"},children:r.modelAuditVisionQuick}),(0,l.jsx)("button",{className:"btn-outline",style:{height:28,padding:"0 11px",fontSize:12.5},disabled:t,onClick:()=>h("image"),children:r.modelAuditVisionOn}),(0,l.jsx)("button",{className:"btn-outline",style:{height:28,padding:"0 11px",fontSize:12.5},disabled:t,onClick:()=>h("text"),children:r.modelAuditVisionOff})]}):null,(0,l.jsx)("span",{className:"flex-1"}),(0,l.jsx)("button",{className:"btn-primary-white",style:{height:32},disabled:t||x||0===f.length,onClick:()=>void b(),children:t?r.saving:f.length?r.modelAuditSave.replace("{n}",String(f.length)):r.modelAuditSaveIdle})]})]})}function K(){let{t:e}=(0,v.s)(),[a,t]=(0,s.useState)([]),[i,r]=(0,s.useState)({providers:{}}),[o,d]=(0,s.useState)(null),[c,m]=(0,s.useState)(new Set),[h,x]=(0,s.useState)({}),[f,b]=(0,s.useState)(null),[w,S]=(0,s.useState)(""),[N,k]=(0,s.useState)(null),[_,C]=(0,s.useState)(""),[z,M]=(0,s.useState)(""),[E,T]=(0,s.useState)("openai-completions"),[R,F]=(0,s.useState)(""),[L,D]=(0,s.useState)([]),[A,W]=(0,s.useState)(""),[I,U]=(0,s.useState)(""),[H,K]=(0,s.useState)([]),[G,Q]=(0,s.useState)(!1),[X,Z]=(0,s.useState)(!1),[Y,ee]=(0,s.useState)(null),[ea,et]=(0,s.useState)(null),[el,es]=(0,s.useState)(null),[ei,er]=(0,s.useState)([]),[en,eo]=(0,s.useState)(""),[ed,ec]=(0,s.useState)(null),[eu,ep]=(0,s.useState)(!1),em=(0,s.useMemo)(()=>{for(let e=ei.length-1;e>=0;e--){let a=ei[e];if(a.startsWith("{"))try{let e=JSON.parse(a);if("device_code"===e.type&&"string"==typeof e.verificationUri)return{userCode:"string"==typeof e.userCode?e.userCode:"",verificationUri:e.verificationUri,instructions:""};if("auth_url"===e.type&&"string"==typeof e.url)return{userCode:"",verificationUri:e.url,instructions:"string"==typeof e.instructions?e.instructions:""}}catch{}}return null},[ei]),eh=(0,s.useRef)(null);(0,s.useEffect)(()=>{em?.verificationUri&&eh.current!==em.verificationUri&&(eh.current=em.verificationUri,window.open(em.verificationUri,"_blank","noopener"))},[em]);let ex=(0,s.useCallback)(async()=>{try{let e=await fetch("/api/models?custom=1"),a=await e.json();if(!e.ok||!a.success)throw Error(a.error||"failed to load model configuration");let l=JSON.parse(a.data.customProviders?.content??"{}");if(!l||"object"!=typeof l||Array.isArray(l)||void 0!==l.providers&&(!l.providers||"object"!=typeof l.providers||Array.isArray(l.providers)))throw Error("invalid model configuration");t(a.data.providers),x(a.data.catalogModelIds??{}),m(new Set(a.data.customProviders?.secretProviderIds??[])),r({...l,providers:l.providers??{}}),d("string"==typeof a.data.customProviders?.revision?a.data.customProviders.revision:null)}catch(e){d(null),ee({ok:!1,msg:e instanceof Error?e.message:"failed to load model configuration"})}},[]);(0,s.useEffect)(()=>{ex()},[ex]),(0,s.useEffect)(()=>{let e;if(!ea)return;let a=!0,t=!1,l=async()=>{try{let e=await fetch("/api/models",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"loginState",providerId:ea})}),l=await e.json();if(!a||!l.success)return;es(l.data.prompt),er(l.data.notifyLog??[]),l.data.done&&(t=!0,ec({ok:!l.data.error,msg:l.data.error??ea+" ✓"}),l.data.error||ex())}catch{}finally{a&&!t&&(e=setTimeout(l,1500))}};return l(),()=>{a=!1,e&&clearTimeout(e)}},[ea,ex]);let[ev,eg]=(0,s.useState)(null),[ef,eb]=(0,s.useState)(!1),[ey,ej]=(0,s.useState)(!1),ew=(0,s.useCallback)(async e=>{eb(!0),ej(!1);try{let a=await fetch("/api/models",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"providerUsage",providerId:"xai",force:e})}),t=await a.json();if(!a.ok||!t.success)throw Error(t.error||"usage probe failed");eg(t.data.usage??null)}catch{ej(!0)}finally{eb(!1)}},[]),[eS,eN]=(0,s.useState)({}),[ek,e_]=(0,s.useState)(null),[eC,ez]=(0,s.useState)({}),eP=(0,s.useCallback)(async(e,a)=>{e_(e),ez(a=>({...a,[e]:!1}));try{let t=await fetch("/api/models",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"providerUsage",providerId:e,force:a})}),l=await t.json();if(!t.ok||!l.success)throw Error(l.error||"usage probe failed");eN(a=>({...a,[e]:l.data.usage??null}))}catch{ez(a=>({...a,[e]:!0}))}finally{e_(a=>a===e?null:a)}},[]),eM=(0,s.useRef)(new Set);(0,s.useEffect)(()=>{for(let e of a)!e.authReady||!$(e.id)||"xai"===e.id||eM.current.has(e.id)||(eM.current.add(e.id),eP(e.id,!1))},[a,eP]);let eE=e=>`${"USD"===e.currency?"$":"CNY"===e.currency?"\xa5":""}${e.amount}${e.currency&&"USD"!==e.currency&&"CNY"!==e.currency?` ${e.currency}`:""}`,eT=(a,t)=>{ee({ok:a,msg:t??(a?e.toastSaved:e.toastError)}),setTimeout(()=>ee(null),2400)},e$=async a=>{try{let e=await fetch("/api/models",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}),t=await e.json();return e.ok?t:{...t,success:!1,error:t.error||`request failed (${e.status})`}}catch(a){return{success:!1,error:a instanceof Error?a.message:e.toastError}}},eR=(0,s.useMemo)(()=>(0,g.Ik)(i.providers??{}),[i]),[eF,eL]=(0,s.useState)(!1),eD=async a=>{let t=await e$(a);return eT(t.success,t.success&&t.data?.requiresSessionReopen?e.modelConfigReopen:t.error),t.success&&await ex(),t},eO=async a=>{if(ea)try{let t=await e$({action:"loginAnswer",providerId:ea,text:a});if(!t.success||t.data?.delivered!==!0)throw Error(t.error||e.toastError);eo("")}catch(a){eT(!1,a instanceof Error?a.message:e.toastError)}},eA=async()=>{if(ea)try{let a=await e$({action:"loginCancel",providerId:ea});if(!a.success)throw Error(a.error||e.toastError);et(null)}catch(a){eT(!1,a instanceof Error?a.message:e.toastError)}},eW=new Set(Object.keys(i.providers??{})),eI=a.filter(e=>e.authReady||e.authConfigured||e.keyManaged||eW.has(e.id)),eU=a.filter(e=>e.builtIn&&!eI.some(a=>a.id===e.id)),eH=async e=>{if(null===o){let e={success:!1,error:"Reload model configuration before saving."};return eT(!1,e.error),e}return eD({action:"saveCustomProviders",revision:o,content:JSON.stringify({...i,providers:e},null,2)})},eB=async e=>{let{providers:a,filled:t}=(0,g.Ki)(i.providers??{},e);if(!t)return!0;eL(!0);try{let e=await eH(a);return e.success||await ex(),!!e.success}finally{eL(!1)}},eK=e=>a.find(a=>a.id===e)?.name??e,eJ=e=>new Set(h[e]??[]),eV=(e,a)=>{let t={...i.providers};if((0,g.Gy)(a)&&!c.has(e)){if(!Object.prototype.hasOwnProperty.call(t,e))return null;delete t[e]}else t[e]=a;return t},eq=async()=>{if(!G&&!(0,g.aK)(L)&&z.trim()){Q(!0);try{let e={...i.providers},a=f??_.trim(),t=e[a]??{};a!==_.trim()&&delete e[a],e[_.trim()]=(0,g.Vt)(t,{name:A,baseUrl:z,api:E,apiKey:R,models:L}),(await eH(e)).success&&b(null)}finally{Q(!1)}}},eG=async e=>{if(!G&&!(0,g.aK)(H)){Q(!0);try{let a=(0,g.Vt)(i.providers[e.id]??{},{baseUrl:I,models:H},e.apis[0]??"openai-completions",eJ(e.id)),t=eV(e.id,a),l=t?await eH(t):{success:!0};l.success&&w.trim()&&(eD({action:"setKey",providerId:e.id,apiKey:w.trim()}),ec(null),et(e.id)),l.success&&b(null)}finally{Q(!1)}}},eQ=async t=>{if(!window.confirm(e.confirmRemoveProvider.replace("{name}",eK(t))))return;let l={...i.providers};delete l[t];let s=a.find(e=>e.id===t);if(s?.builtIn)try{await eD({action:"removeKey",providerId:t})}catch{}(await eH(l)).success&&b(null)},eX=async({providerId:e,apiKey:a,config:t})=>{let l=eV(e,{...i.providers[e],...t}),s=l?await eH(l):{success:!0};return s.success&&a&&(e$({action:"setKey",providerId:e,apiKey:a}),ec(null),et(e)),s},eZ=async({providerId:e,config:a})=>eH({...i.providers,[e]:a}),eY=async e=>{let a=await e$({action:"loginStart",providerId:e});return a.success?(ec(null),et(e),{success:!0}):{success:!1,error:a.error}};return(0,l.jsxs)("div",{className:"flex flex-col gap-5",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("div",{style:{fontSize:14,fontWeight:400},children:e.modelsTitle}),(0,l.jsx)("div",{className:"mt-0.5",style:{fontSize:12.5,color:"var(--dsw-label-caption)"},children:e.modelsDesc}),(0,l.jsx)("div",{className:"mt-1",style:{fontSize:12,color:"var(--dsw-label-caption)"},children:e.customModelIdentityNotice})]}),Y&&(0,l.jsx)("div",{className:"rounded-xl px-3 py-2",style:{fontSize:12.5,background:Y.ok?"rgba(34,197,94,.1)":"rgba(236,19,19,.1)",color:Y.ok?"var(--dsw-success)":"var(--dsw-danger)"},children:Y.msg}),(0,l.jsx)("div",{className:"flex flex-col gap-2.5",children:eI.map(t=>{var s,r,d;let m,h,x,v,y=eW.has(t.id)&&!t.builtIn,N=f===t.id;return(0,l.jsxs)("div",{children:[(0,l.jsxs)("div",{className:"flex min-w-0 flex-col overflow-hidden rounded-2xl px-4 py-3",style:{border:"0.5px solid var(--dsw-border-l2)"},children:[(0,l.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-x-3 gap-y-2",children:[(0,l.jsx)(p,{id:t.id,name:eK(t.id),size:34}),(0,l.jsxs)("div",{className:"min-w-[132px] flex-1",children:[(0,l.jsx)("div",{className:"truncate",style:{fontSize:14,fontWeight:500},children:eK(t.id)}),(0,l.jsxs)("div",{className:"truncate",style:{fontSize:11.5,color:"var(--dsw-label-caption)"},children:[t.id,t.baseUrl?` \xb7 ${t.baseUrl}`:""]})]}),y&&(0,l.jsx)("span",{className:"flex-none rounded-md px-1.5 py-0.5",style:{fontSize:10.5,border:"0.5px solid var(--dsw-border-l3)",color:"var(--dsw-label-tertiary)"},children:e.customBadge}),(0,l.jsx)("span",{className:"inline-block h-2 w-2 flex-none rounded-full",style:{background:t.authReady?"var(--dsw-success)":"var(--dsw-danger)"},title:t.authError||(t.authReady?e.providerReady:e.authUnavailable)}),(0,l.jsx)("span",{className:"flex-none rounded-md px-1.5 py-0.5",style:{fontSize:10.5,border:"0.5px solid var(--dsw-border-l3)",color:"var(--dsw-label-tertiary)"},children:e.credentialSource.replace("{source}","stored"===(m=t.authSource)?"auth.json":"runtime"===m?e.authSourceRuntime:"environment"===m?e.authSourceEnvironment:"models_json_key"===m?"models.json":"models_json_command"===m?e.authSourceCommand:"fallback"===m?e.authSourceProvider:t.resolvedAuthSource||e.authUnavailable)}),(0,l.jsx)("button",{className:"btn-outline flex-none whitespace-nowrap",style:{height:28,padding:"0 12px",fontSize:12},onClick:()=>{var e;let l;return b(f===(e=t.id)?null:e),S(""),Q(!1),Z(!1),l=i.providers[e],void(eW.has(e)&&!a.find(a=>a.id===e)?.builtIn?(C(e),M(l?.baseUrl??""),T(l?.api??"openai-completions"),F(""),W("string"==typeof l?.name?l.name:""),D((l?.models??[]).map(g.Lg))):(U("string"==typeof l?.baseUrl?l.baseUrl:""),K((0,g.xe)(l))))},children:e.edit}),"oauth"===t.storedAuthType&&(0,l.jsx)("button",{className:"flex-none whitespace-nowrap",style:{height:28,padding:"0 12px",fontSize:12,color:"var(--dsw-danger)"},onClick:async()=>{window.confirm(e.confirmRemoveOAuth.replace("{name}",eK(t.id)))&&await eD({action:"removeKey",providerId:t.id})},children:e.removeOAuth}),t.authTypes?.includes("oauth")&&(0,l.jsx)("button",{className:"btn-outline flex-none whitespace-nowrap",style:{height:28,padding:"0 12px",fontSize:12},onClick:()=>{ec(null),eD({action:"loginStart",providerId:t.id}),et(t.id)},children:e.oauthLogin}),eW.has(t.id)&&(0,l.jsx)("button",{className:"flex-none whitespace-nowrap",style:{fontSize:12.5,color:"var(--dsw-danger)"},onClick:()=>eQ(t.id),children:e.delete})]}),"xai"===t.id&&t.authReady&&(0,l.jsxs)("div",{className:"mt-3 flex items-center gap-2 pt-3",style:{borderTop:"0.5px solid var(--dsw-border-l2)",fontSize:11.5,color:"var(--dsw-label-tertiary)"},children:[ev?(0,l.jsxs)("span",{children:[e.usageQuotaLabel," \xb7 ",ev.model," \xb7 ",e.usageRequests," ",ev.requestRemaining.toLocaleString(),"/",ev.requestLimit.toLocaleString()," \xb7 Tokens ",(r=ev.tokenRemaining,(0,P.yj)(r)),"/",(d=ev.tokenLimit,(0,P.yj)(d))]}):(0,l.jsx)("span",{children:ey?e.usageProbeFailed:e.usageProbeDisclosure}),(0,l.jsx)("button",{type:"button",className:"pw-chip",disabled:ef,title:e.usageProbeDisclosure,onClick:()=>void ew(!0),children:ef?e.usageProbing:ev?e.usageRefresh:e.usageProbe})]}),$(t.id)&&"xai"!==t.id&&t.authReady&&(0,l.jsx)("div",{className:"mt-3 flex flex-col gap-1.5 pt-3",style:{borderTop:"0.5px solid var(--dsw-border-l2)",fontSize:11.5,color:"var(--dsw-label-tertiary)"},children:(h=eS[s=t.id],x=ek===s,v=eC[s],(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[!h&&(0,l.jsx)("span",{children:v?e.usageProbeFailed:x?e.queryingQuota:e.usageReadOnlyDisclosure}),h?.kind==="quota"&&h.planType&&(0,l.jsxs)("span",{children:[e.usagePlan," ",V(h.planType)]}),h?.kind==="balance"&&h.primary&&(0,l.jsxs)("span",{children:["used"===h.primaryKey?e.usageBalanceUsed:e.usageQuotaRemaining," ",(0,l.jsx)("span",{style:{color:"var(--dsw-label-secondary)"},children:eE(h.primary)})]}),(0,l.jsx)("button",{type:"button",className:"pw-chip",disabled:x,title:e.usageReadOnlyDisclosure,onClick:()=>void eP(s,!0),children:x?e.usageProbing:h?e.usageRefresh:e.usageProbe})]}),h?.kind==="balance"&&h.details.length>0&&(0,l.jsx)("span",{children:h.details.map(a=>{var t;return`${"granted"===(t=a.key)?e.usageBalanceGranted:"toppedUp"===t?e.usageBalanceToppedUp:"voucher"===t?e.usageBalanceVoucher:"cash"===t?e.usageBalanceCash:"used"===t?e.usageBalanceUsed:e.usageBalanceLimit} ${eE(a)}`}).join(" \xb7 ")}),h?.kind==="quota"&&0===h.windows.length&&(0,l.jsxs)("span",{children:[e.usageQuotaRemaining," —"]}),h?.kind==="quota"&&h.windows.map((a,t)=>{var s;return(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{style:{width:84,flex:"none"},children:(a=>{var t,l,s,i;if(void 0!==a.limitWindowSeconds){let i;return`${"weekly"==(i=604800===(l=t=a.limitWindowSeconds)?"weekly":2592e3===l?"monthly":l<86400?"hours":"days")?e.usageWindowWeekly:"monthly"===i?e.usageWindowMonthly:("hours"===i?e.usageWindowHours:e.usageWindowDays).replace("{n}",String(Math.round(t/("hours"===i?3600:86400))))}${a.variant?` (${"opus"===(s=a.variant)?e.usageVariantOpus:"code"===s?e.usageVariantCode:V(s)})`:""}`}return a.name?"premium"===(i=a.name)?e.usageWindowPremium:"chat"===i?e.usageWindowChat:"completions"===i?e.usageWindowCompletions:"rolling"===i?e.usageWindowRolling:V(i):""})(a)}),(0,l.jsxs)("span",{style:{width:92,flex:"none"},children:[e.usageQuotaRemaining," ",a.remainingPercent,"%"]}),(0,l.jsxs)("span",{children:[e.usageReset," ",function(e){if(!e)return"—";let a=new Date(e);return Number.isNaN(a.getTime())?"—":a.toLocaleString()}(a.resetAt)]}),(0,l.jsx)("div",{className:"h-1 overflow-hidden rounded-full",style:{width:120,flex:"none",background:"var(--dsw-border-l2)"},children:(0,l.jsx)("div",{className:"h-full rounded-full",style:{width:`${a.remainingPercent}%`,background:(s=a.remainingPercent)<30?"var(--dsw-danger)":s<=60?"var(--dsw-warning)":"var(--dsw-success)"}})})]},`${a.limitWindowSeconds??a.name??"window"}-${a.variant??""}-${t}`)})]}))})]}),N&&(0,l.jsx)("div",{className:"mt-2 rounded-2xl p-4",style:{border:"0.5px solid var(--dsw-border-l2)"},children:y?(0,l.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,l.jsx)(q,{label:e.apiKey,children:(0,l.jsx)("input",{type:"password",value:R,onChange:e=>F(e.target.value),className:J,placeholder:c.has(t.id)?e.apiKeyStored:e.apiKeyOptional})}),(0,l.jsx)(q,{label:e.displayName,children:(0,l.jsx)("input",{value:A,onChange:e=>W(e.target.value),className:J,placeholder:t.id})}),(0,l.jsx)(q,{label:e.baseUrl,children:(0,l.jsx)("input",{value:z,onChange:e=>M(e.target.value),className:J,placeholder:"https://api.example.com/v1"})}),(0,l.jsx)(q,{label:e.apiType,children:(0,l.jsx)(O,{value:E,options:u([E,...t.apis]).map(e=>({value:e,label:e})),onChange:T})}),(0,l.jsx)(j,{models:L,setModels:D,updateModel:(e,a)=>D(t=>t.map((t,l)=>l===e?{...t,...a}:t)),discover:async a=>{let l=await fetch("/api/models",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"discoverModels",providerId:t.id,baseUrl:z.trim(),api:E,apiKey:R.trim(),allowPrivate:a})}),s=await l.json();if(!s.success)throw Error(s.error||e.toastError);return(s.data.models??[]).map(g.SC)},discoverDisabled:!z.trim()}),(0,l.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,l.jsx)("button",{className:"btn-outline",style:{height:32},disabled:G,onClick:()=>b(null),children:e.cancel}),(0,l.jsx)("button",{className:"btn-primary-white",disabled:G||!z.trim()||!!(0,g.aK)(L)||!L.some(e=>e.id.trim()),onClick:()=>void eq(),children:G?e.saving:e.save})]})]}):(0,l.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,l.jsx)(q,{label:e.apiKey,children:(0,l.jsx)("input",{type:"password",value:w,onChange:e=>S(e.target.value),className:J,placeholder:t.keyManaged?e.apiKeyStored:t.apiKeyLabel??e.apiKey})}),(0,l.jsxs)("div",{children:[(0,l.jsxs)("button",{className:"flex w-full items-center gap-2 rounded-xl px-2 py-2 text-left transition-colors",style:{fontSize:13,color:"var(--dsw-label-secondary)",background:X?"var(--dsw-hover)":"transparent"},onClick:()=>Z(e=>!e),children:[(0,l.jsx)("span",{style:{display:"inline-flex",transform:X?"none":"rotate(-90deg)",transition:"transform 120ms ease"},children:(0,l.jsx)(n.Cd,{size:13})}),e.customSettings]}),X?(0,l.jsxs)("div",{className:"flex flex-col gap-3 pl-1 pt-2",children:[(0,l.jsx)(q,{label:e.baseUrl,children:(0,l.jsx)("input",{value:I,onChange:e=>U(e.target.value),className:J,placeholder:t.baseUrl??e.providerDefault})}),(0,l.jsx)(j,{models:H,setModels:K,updateModel:(e,a)=>K(t=>t.map((t,l)=>l===e?{...t,...a}:t)),inheritedCount:t.modelCount,catalogIds:eJ(t.id),discover:async a=>{let l=await fetch("/api/models",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"discoverModels",providerId:t.id,baseUrl:I.trim()||t.baseUrl||"",api:t.apis[0],apiKey:w.trim(),allowPrivate:a})}),s=await l.json();if(!s.success)throw Error(s.error||e.toastError);return(s.data.models??[]).map(g.SC)},discoverDisabled:!(I.trim()||t.baseUrl)})]}):null]}),(0,l.jsxs)("div",{className:"flex items-center justify-end gap-2",children:[t.keyManaged&&(0,l.jsx)("button",{style:{fontSize:12.5,color:"var(--dsw-danger)"},disabled:G,onClick:async()=>{if("oauth"===t.storedAuthType){if(!window.confirm(e.confirmRemoveOAuth.replace("{name}",t.name)))return}else if(!window.confirm(e.confirmRemoveKey.replace("{name}",t.name)))return;(await eD({action:"removeKey",providerId:t.id})).success&&b(null)},children:"oauth"===t.storedAuthType?e.removeOAuth:e.removeKey}),(0,l.jsx)("button",{className:"btn-outline",style:{height:32},disabled:G,onClick:()=>b(null),children:e.cancel}),(0,l.jsx)("button",{className:"btn-primary-white",disabled:G||null===o||!!(0,g.aK)(H),onClick:()=>void eG({id:t.id,apis:t.apis}),children:G?e.saving:e.save})]})]})})]},t.id)})}),eR.length>0?(0,l.jsx)(B,{gaps:eR,providerLabel:eK,busy:eF||null===o,onSave:eB}):null,(0,l.jsxs)("div",{className:"flex gap-3",children:[(0,l.jsxs)("button",{className:"flex flex-1 items-center justify-center gap-2 rounded-2xl px-4 py-3.5 transition-colors",style:{border:"0.5px solid var(--dsw-border-l3)",fontSize:14},onMouseEnter:e=>e.currentTarget.style.background="var(--dsw-hover)",onMouseLeave:e=>e.currentTarget.style.background="transparent",onClick:()=>k("builtin"),children:[(0,l.jsx)(n.Xh,{size:15}),e.addProvider]}),(0,l.jsxs)("button",{className:"flex flex-1 items-center justify-center gap-2 rounded-2xl px-4 py-3.5 transition-colors",style:{border:"0.5px solid var(--dsw-border-l3)",fontSize:14},onMouseEnter:e=>e.currentTarget.style.background="var(--dsw-hover)",onMouseLeave:e=>e.currentTarget.style.background="transparent",onClick:()=>k("custom"),children:[(0,l.jsx)(n.Xh,{size:15}),e.addCustomProvider]})]}),N?(0,l.jsx)(y,{mode:N,providers:eU,catalogModelIds:h,existingIds:a.map(e=>e.id),onClose:()=>k(null),onSaveBuiltin:eX,onSaveCustom:eZ,onOAuthLogin:eY}):null,ea&&(0,l.jsx)("div",{className:"modal-mask fixed inset-0 z-[120] flex items-center justify-center",onMouseDown:e=>{e.target===e.currentTarget&&eA()},children:(0,l.jsxs)("div",{className:"glass-modal flex flex-col gap-4 p-6",style:{width:460,maxWidth:"92vw",borderRadius:24,boxShadow:"var(--dsw-elevation-prominent)"},children:[(0,l.jsxs)("div",{style:{fontSize:15,fontWeight:600},children:[e.oauthLogin," \xb7 ",ea]}),em&&!ed?(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,l.jsx)("div",{style:{fontSize:13,color:"var(--dsw-label-primary)"},children:e.oauthDevicePrompt}),em.instructions?(0,l.jsx)("div",{style:{fontSize:12,color:"var(--dsw-label-tertiary)"},children:em.instructions}):null,(0,l.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,l.jsx)("a",{href:em.verificationUri,target:"_blank",rel:"noreferrer",className:"btn-primary-white",style:{fontSize:12.5,textDecoration:"none"},children:e.oauthOpenAuth}),em.userCode?(0,l.jsx)("button",{className:"btn-outline",style:{height:32},onClick:()=>{if(!em?.userCode)return;let e=em.userCode,a=()=>{ep(!0),setTimeout(()=>ep(!1),2e3)};navigator.clipboard.writeText(e).then(a).catch(()=>{let t=document.createElement("textarea");t.value=e,document.body.appendChild(t),t.select(),document.execCommand("copy"),t.remove(),a()})},children:eu?e.oauthCodeCopied:`${e.oauthDeviceCode}: ${em.userCode}`}):null]})]}):ei.length>0?(0,l.jsx)("div",{className:"flex flex-col gap-0.5",style:{fontSize:12,color:"var(--dsw-label-tertiary)"},children:ei.slice(-3).map((e,a)=>(0,l.jsx)("div",{className:"truncate",children:e},a))}):null,ed?(0,l.jsx)("div",{style:{fontSize:13,color:ed.ok?"var(--dsw-success)":"var(--dsw-danger)"},children:ed.ok?ea+" ✓":ed.msg}):el?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("div",{style:{fontSize:13.5,color:"var(--dsw-label-primary)"},children:el.message}),el.message.match(/https?:\/\/[^\s)]+/)&&(0,l.jsx)("a",{href:el.message.match(/https?:\/\/[^\s)]+/)[0],target:"_blank",rel:"noreferrer",className:"break-all",style:{fontSize:12.5,color:"var(--dsw-accent)"},children:el.message.match(/https?:\/\/[^\s)]+/)[0]}),el.options?.length?(0,l.jsx)("div",{className:"flex flex-col gap-1.5",children:el.options.map(e=>(0,l.jsx)("button",{className:"btn-outline",style:{height:34,justifyContent:"flex-start",textAlign:"left"},onClick:()=>{eO(e.value)},children:e.label},e.value))}):(0,l.jsx)("input",{autoFocus:!0,type:"secret"===el.type?"password":"text",value:en,onChange:e=>eo(e.target.value),placeholder:el.placeholder??"",className:"w-full rounded-xl px-3 py-2",style:{fontSize:13,background:"var(--dsw-hover)"},onKeyDown:e=>{"Enter"===e.key&&!e.nativeEvent.isComposing&&en.trim()&&eO(en.trim())}}),(0,l.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,l.jsx)("span",{style:{fontSize:12,color:"var(--dsw-label-caption)"},children:e.oauthWait}),(0,l.jsxs)("div",{className:"flex gap-2",children:[(0,l.jsx)("button",{className:"btn-outline",style:{height:32},onClick:()=>{eA()},children:e.oauthCancel}),!el.options?.length&&(0,l.jsx)("button",{className:"btn-primary-white",disabled:!en.trim(),style:{opacity:en.trim()?1:.5},onClick:()=>{eO(en.trim())},children:e.confirm})]})]})]}):(0,l.jsx)("div",{style:{fontSize:13,color:"var(--dsw-label-tertiary)"},children:e.oauthWait}),ed&&(0,l.jsx)("div",{className:"flex justify-end",children:(0,l.jsx)("button",{className:"btn-primary-white",onClick:()=>et(null),children:e.close})})]})})]})}let J="w-full rounded-xl px-3 py-2";function V(e){return 0===e.length?e:e[0].toUpperCase()+e.slice(1)}function q({label:e,children:a}){return(0,l.jsxs)("div",{children:[(0,l.jsx)("div",{className:"mb-1",style:{fontSize:12,color:"var(--dsw-label-caption)"},children:e}),a]})}let G={read:{zh:"读取文件",en:"Read files"},bash:{zh:"执行 Shell 命令",en:"Run shell commands"},powershell:{zh:"执行 PowerShell",en:"Run PowerShell"},edit:{zh:"编辑文件",en:"Edit files"},write:{zh:"写入文件",en:"Write files"},grep:{zh:"搜索文件内容",en:"Search file contents"},find:{zh:"按名称查找文件",en:"Find files by name"},ls:{zh:"列出目录内容",en:"List directories"}};function Q({toolPreset:e,onToolPresetChange:a,tools:t,onSetTools:s}){let{t:i,lang:r}=(0,v.s)(),n=new Set(t?.active??[]),o=t?.all??[];return(0,l.jsxs)("div",{className:"flex flex-col gap-5",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("div",{style:{fontSize:14,fontWeight:400},children:i.toolsSection}),(0,l.jsx)("div",{className:"mt-0.5",style:{fontSize:12.5,color:"var(--dsw-label-caption)"},children:i.toolsSectionDesc})]}),(0,l.jsx)(A,{title:i.securityToolPreset,desc:i.securityToolPresetDesc,children:(0,l.jsx)(O,{value:e,options:[{value:"readonly",label:i.toolReadonly},{value:"standard",label:i.toolStandard},{value:"full",label:i.toolFull}],onChange:e=>a(e)})}),0===o.length?(0,l.jsx)("div",{className:"rounded-2xl p-4",style:{border:"0.5px dashed var(--dsw-border-l3)",fontSize:12.5,color:"var(--dsw-label-caption)"},children:i.toolsNoSession}):(0,l.jsxs)("div",{className:"flex flex-col gap-2.5",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",style:{fontSize:12,color:"var(--dsw-label-caption)"},children:[(0,l.jsx)("span",{style:{fontWeight:600},children:i.toolsCurrentSession}),(0,l.jsx)("span",{children:i.toolsActiveCount.replace("{n}",String(n.size)).replace("{total}",String(o.length))})]}),o.map(e=>{let a,t=n.has(e.name),i=e.description||((a=G[e.name])?"zh"===r?a.zh:a.en:"");return(0,l.jsxs)("div",{className:"flex items-center gap-3 rounded-2xl px-4 py-2.5",style:{border:"0.5px solid var(--dsw-border-l2)"},children:[(0,l.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,l.jsx)("div",{style:{fontSize:13.5,fontWeight:500,fontFamily:"var(--font-mono)"},children:e.name}),i&&(0,l.jsx)("div",{className:"truncate",style:{fontSize:11.5,color:"var(--dsw-label-caption)"},children:i})]}),(0,l.jsx)("button",{className:"relative h-5 w-9 flex-none rounded-full transition-colors",style:{background:t?"var(--dsw-accent)":"var(--dsw-border-l3)"},role:"switch","aria-checked":t,"aria-label":e.name,disabled:!s||t&&n.size<=1,onClick:()=>{var a;return a=e.name,void(!s||s(n.has(a)?[...n].filter(e=>e!==a):[...n,a]))},children:(0,l.jsx)("span",{className:"absolute top-0.5 h-4 w-4 rounded-full bg-white transition-all",style:{left:t?18:2}})})]},e.name)})]})]})}function X({cwd:e,onOpenFileContent:a}){let{t}=(0,v.s)(),[i,r]=(0,s.useState)([]),n=(0,s.useCallback)(async()=>{let a=await fetch(`/api/skills${e?`?cwd=${encodeURIComponent(e)}`:""}`),t=await a.json();t.success&&r(t.data.skills)},[e]);(0,s.useEffect)(()=>{n()},[n]);let o=async a=>{let t=await fetch("/api/skills",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"toggle",filePath:a.filePath,disabled:!a.disabled,cwd:e})});(await t.json()).success&&n()},d=async t=>{let l=await fetch("/api/skills",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"read",filePath:t.filePath,cwd:e})}),s=await l.json();s.success&&a?.(t.filePath,s.data.content)},[c,u]=(0,s.useState)(null),p=async a=>{if(!window.confirm(t.confirmDeleteSkill.replace("{name}",a.name)))return;u(null);let l=await fetch("/api/skills",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"delete",filePath:a.filePath,cwd:e})}),s=await l.json();s.success?n():u(s.error||t.toastError)};return(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsx)("div",{style:{fontSize:12,color:"var(--dsw-label-caption)"},children:t.skillsDesc}),c&&(0,l.jsx)("div",{role:"alert",className:"rounded-lg px-3 py-2",style:{fontSize:12.5,background:"var(--dsw-hover)",color:"var(--dsw-danger)"},children:c}),0===i.length&&(0,l.jsx)("div",{style:{fontSize:13,color:"var(--dsw-label-caption)"},children:"—"}),(0,l.jsx)("div",{className:"flex flex-col gap-2",children:i.map(e=>{let a;return(0,l.jsx)("div",{className:"rounded-2xl px-4 py-3",style:{border:"0.5px solid var(--dsw-border-l2)"},children:(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{style:{fontSize:13.5,fontWeight:500},children:e.name}),(0,l.jsx)("span",{className:"rounded-full px-2 py-0.5",style:{fontSize:10,background:"var(--dsw-hover)",color:"var(--dsw-label-tertiary)"},children:"global"===(a=e.scope)?t.scopeGlobal:"project"===a?t.scopeProject:t.scopePackage})]}),(0,l.jsx)("div",{className:"mt-0.5 truncate",style:{fontSize:12,color:"var(--dsw-label-caption)"},title:e.description,children:e.description})]}),(0,l.jsx)("button",{className:"rounded-lg px-2.5 py-1",style:{fontSize:11.5,color:"var(--dsw-label-tertiary)"},onClick:()=>d(e),children:t.viewSkillFile}),"package"!==e.scope&&(0,l.jsx)("button",{className:"rounded-lg px-2.5 py-1",style:{fontSize:11.5,color:"var(--dsw-danger)"},title:t.deleteSkillHint,onClick:()=>void p(e),children:t.delete}),"package"===e.scope&&(0,l.jsx)("span",{style:{fontSize:10.5,color:"var(--dsw-label-caption)"},title:t.skillDeletePackageHint,children:t.skillDeletePackageHint}),(0,l.jsx)("button",{className:"relative h-5 w-9 flex-none rounded-full transition-colors",style:{background:e.disabled?"var(--dsw-border-l3)":"var(--dsw-accent)"},role:"switch","aria-checked":!e.disabled,onClick:()=>o(e),children:(0,l.jsx)("span",{className:"absolute top-0.5 h-4 w-4 rounded-full bg-white transition-all",style:{left:e.disabled?2:18}})})]})},e.filePath)})})]})}function Z({cwd:e}){let{t:a,lang:t}=(0,v.s)(),i=e=>window.confirm(a.confirmUninstallPackage.replace("{source}",e)),[r,o]=(0,s.useState)("config"),[d,c]=(0,s.useState)([]),[u,p]=(0,s.useState)([]),[m,h]=(0,s.useState)(""),[x,g]=(0,s.useState)(new Set),[f,b]=(0,s.useState)(""),[y,j]=(0,s.useState)(!1),[w,S]=(0,s.useState)(!1),[N,k]=(0,s.useState)(null),[_,C]=(0,s.useState)(null),[z,P]=(0,s.useState)(null),M=(0,s.useRef)(null);(0,s.useEffect)(()=>{let e=e=>{e.target instanceof Node&&M.current?.contains(e.target)||P(null)};return window.addEventListener("pointerdown",e),()=>window.removeEventListener("pointerdown",e)},[]);let E=(0,s.useCallback)(async()=>{let a=await fetch(`/api/plugins${e?`?cwd=${encodeURIComponent(e)}`:""}`),t=await a.json();t.success&&(c(t.data.packages),p(t.data.extensions))},[e]);(0,s.useEffect)(()=>{E()},[E]);let T=(e,t)=>{C({ok:e,msg:t??(e?a.toastSaved:a.toastError),loading:!1}),setTimeout(()=>C(null),2600)},$=async(t,l={},s,i,r)=>{S(!0),s&&k(s),i&&C({ok:!0,msg:i,loading:!0});try{let s=await fetch("/api/plugins",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:t,cwd:e,...l})}),i=await s.json();if(i.success)return T(!0,r??("toggle"===t?l.disabled?a.disabled:a.enabled:a.toastSaved)),await E(),!0;return T(!1,i.error??a.toastError),!1}catch(e){return T(!1,e?.message??a.toastError),!1}finally{S(!1),k(null)}},R=e=>g(a=>{let t=new Set(a);return t.has(e)?t.delete(e):t.add(e),t}),F=e=>{if(e.startsWith("builtin:"))return"builtin";let a=e.replace(/\\/g,"/");return a.includes("/.pi/agent/npm/")||a.includes("/.pi/agent/git/")?"package":a.includes("/.pi/agent/")?"global":(a.includes("/.pi/"),"project")},L=u.filter(e=>"package"!==F(e.path)),D=m.trim().toLowerCase(),O=[...d.map(e=>({key:`pkg:${e.scope}:${e.source}`,kind:"package",name:e.source.replace(/^npm:/,"").replace(/^git[^:]*:/,""),p:e})),...L.map(e=>({key:`ext:${e.path}`,kind:"extension",name:e.name,e}))].filter(e=>!D||e.name.toLowerCase().includes(D));return(0,l.jsxs)("div",{className:"flex flex-col gap-5",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("div",{style:{fontSize:20,fontWeight:600,color:"var(--dsw-label-primary)"},children:a.setPlugins}),(0,l.jsx)("div",{className:"mt-1",style:{fontSize:13,color:"var(--dsw-label-tertiary)"},children:a.pluginPageDesc})]}),_&&(0,l.jsxs)("div",{className:"fixed top-6 left-1/2 -translate-x-1/2 z-[9999] flex items-center gap-2.5 px-4 py-2 rounded-xl shadow-2xl transition-all pointer-events-none",style:{fontSize:13,fontWeight:500,background:"var(--dsw-surface-l1, #1e2025)",border:_.loading?"1px solid var(--dsw-border-l3)":_.ok?"1px solid rgba(34,197,94,.4)":"1px solid rgba(236,19,19,.4)",color:_.loading?"var(--dsw-label-primary)":_.ok?"var(--dsw-success)":"var(--dsw-danger)",backdropFilter:"blur(12px)",boxShadow:"0 10px 30px rgba(0,0,0,0.5)"},children:[_.loading&&(0,l.jsx)("span",{className:"h-3.5 w-3.5 flex-none animate-spin rounded-full border-2 border-current border-t-transparent"}),(0,l.jsx)("span",{children:_.msg})]}),(0,l.jsxs)("div",{className:"hairline-b flex items-center gap-6",children:[(0,l.jsx)("button",{className:"settings-tab-underline","data-active":"config"===r,onClick:()=>o("config"),children:a.pluginConfig}),(0,l.jsx)("button",{className:"settings-tab-underline","data-active":"list"===r,onClick:()=>o("list"),children:a.pluginList})]}),"config"===r&&(0,l.jsxs)("div",{className:"flex flex-col gap-2.5",children:[(0,l.jsxs)("div",{className:"flex flex-col gap-2 rounded-2xl px-4 py-3",style:{border:"0.5px solid var(--dsw-border-l2)"},children:[(0,l.jsx)("div",{style:{fontSize:13.5,fontWeight:500},children:a.addPackage}),(0,l.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,l.jsx)("input",{value:f,onChange:e=>b(e.target.value),placeholder:a.addPackagePlaceholder,className:"min-w-0 flex-1 rounded-xl px-3 py-2",style:{fontSize:13,background:"var(--dsw-hover)",border:"0.5px solid var(--dsw-border-l2)",fontFamily:"var(--font-mono)"},onKeyDown:e=>{"Enter"===e.key&&f.trim()&&!w&&$("install",{source:f.trim(),local:y},void 0,a.installing,a.installSuccess).then(e=>{e&&b("")})}}),(0,l.jsxs)("label",{className:"flex items-center gap-1.5",style:{fontSize:12.5,color:"var(--dsw-label-secondary)"},children:[(0,l.jsx)("input",{type:"checkbox",checked:y,onChange:e=>j(e.target.checked),disabled:!e}),a.installLocal]}),(0,l.jsx)("button",{className:"btn-primary-white",style:{height:32,padding:"0 14px"},disabled:!f.trim()||w,onClick:()=>void $("install",{source:f.trim(),local:y},void 0,a.installing,a.installSuccess).then(e=>{e&&b("")}),children:a.install})]})]}),(0,l.jsx)("div",{className:"flex justify-end",children:(0,l.jsxs)("button",{className:"btn-outline",style:{height:30,fontSize:12.5},disabled:w,onClick:async()=>{S(!0);try{let t=await fetch("/api/plugins",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"reload",cwd:e})}),l=await t.json();T(l.success,l.success?a.reloadedSessions.replace("{loaders}",String(l.data?.loaders??0)).replace("{sessions}",String(l.data?.sessions??0)):l.error),l.success&&await E()}finally{S(!1)}},children:[(0,l.jsx)(n.Ct,{size:13})," ",a.reloadExtensions]})}),0===L.length&&(0,l.jsx)("div",{style:{fontSize:12.5,color:"var(--dsw-label-caption)"},children:a.extensionsEmpty}),L.map(e=>{let t,s=`ext:${e.path}`,i=x.has(s),r=F(e.path);return(0,l.jsxs)("div",{className:"rounded-2xl",style:{border:"0.5px solid var(--dsw-border-l2)"},children:[(0,l.jsxs)("button",{className:"flex w-full items-center gap-3 px-4 py-3.5 text-left",onClick:()=>R(s),children:[(0,l.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",style:{fontSize:14,fontWeight:500},children:[(0,l.jsx)("span",{children:e.name}),e.error&&(0,l.jsx)("span",{className:"rounded px-1.5 py-0.5",style:{fontSize:10.5,color:"var(--dsw-danger)",background:"var(--pw-danger-soft, rgba(236,19,19,.12))"},children:a.extensionLoadError}),!e.error&&(t=!0===e.disabled,(0,l.jsxs)("span",{className:"flex flex-none items-center gap-1.5 rounded-md px-1.5 py-0.5",style:{fontSize:10.5,...t?{background:"var(--dsw-selector)",color:"var(--dsw-label-tertiary)"}:{background:"rgba(34,197,94,.12)",color:"var(--dsw-success)"}},children:[(0,l.jsx)("span",{className:"h-1.5 w-1.5 rounded-full",style:{background:t?"var(--dsw-label-tertiary)":"var(--dsw-success)"}}),t?a.disabled:a.enabled]}))]}),(0,l.jsx)("div",{className:"truncate",style:{fontSize:12,color:e.error?"var(--dsw-danger)":"var(--dsw-label-caption)"},title:e.error??e.path,children:e.error??e.path})]}),(0,l.jsx)("span",{className:"chevron",style:{color:"var(--dsw-label-tertiary)",display:"inline-flex",transform:i?"rotate(180deg)":"none",transition:"transform 120ms var(--ds-ease-in-out)"},children:(0,l.jsx)(n.Cd,{size:14})})]}),i&&(0,l.jsxs)("div",{className:"hairline-t flex flex-col gap-1.5 px-4 py-3",style:{fontSize:12,color:"var(--dsw-label-secondary)"},children:[(0,l.jsx)("div",{className:"flex items-center gap-2",children:(0,l.jsx)("span",{className:"rounded-md px-1.5 py-0.5",style:{fontSize:10.5,border:"0.5px solid var(--dsw-border-l3)",color:"var(--dsw-label-tertiary)"},children:"global"===r?a.scopeGlobal:"project"===r?a.scopeProject:"builtin"===r?a.promptToolBuiltin:a.scopePackage})}),(0,l.jsx)("div",{className:"break-all",style:{fontFamily:"var(--font-mono)",fontSize:11.5,color:"var(--dsw-label-caption)"},children:e.path})]})]},s)})]}),"list"===r&&(0,l.jsxs)("div",{className:"flex flex-col gap-3.5",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2.5 rounded-xl px-3.5 py-2.5 transition-colors",style:{background:"var(--dsw-hover)",border:"0.5px solid var(--dsw-border-l2)"},children:[(0,l.jsx)(n.FG,{size:15,style:{color:"var(--dsw-label-caption)"}}),(0,l.jsx)("input",{value:m,onChange:e=>h(e.target.value),placeholder:a.searchPlugins,className:"w-full bg-transparent outline-none",style:{fontSize:13,color:"var(--dsw-label-primary)"}})]}),(0,l.jsxs)("div",{className:"flex items-baseline gap-2",children:[(0,l.jsx)("span",{style:{fontSize:13.5,fontWeight:600,color:"var(--dsw-label-primary)"},children:a.pluginList}),(0,l.jsx)("span",{style:{fontSize:12,color:"var(--dsw-label-caption)"},children:O.length})]}),0===O.length?(0,l.jsx)("div",{style:{fontSize:12.5,color:"var(--dsw-label-caption)"},children:a.packagesEmpty}):(0,l.jsx)("div",{className:"grid grid-cols-1 items-start sm:grid-cols-2 gap-2.5",children:O.map(e=>{let s=x.has(e.key),r="package"===e.kind?!0===e.p.disabled:!0===e.e.disabled,o=z===e.key,d=N===e.key;return(0,l.jsxs)("div",{className:"flex flex-col rounded-xl transition-colors",style:{background:"var(--dsw-hover)",border:"0.5px solid var(--dsw-border-l2)"},children:[(0,l.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-2 px-3.5",style:{height:44},children:[(0,l.jsx)("span",{className:"min-w-0 flex-1 truncate font-medium text-[var(--dsw-label-primary)] cursor-pointer select-none",style:{fontSize:13.5},onClick:()=>R(e.key),title:e.name,children:e.name}),(0,l.jsxs)("div",{ref:o?M:void 0,className:"relative flex-none",children:[(0,l.jsxs)("button",{type:"button",className:"flex min-w-[86px] items-center justify-center rounded-lg px-3 transition-colors cursor-pointer select-none disabled:cursor-wait",style:{gap:7,height:30,background:"rgba(255, 255, 255, 0.04)",border:"1px solid rgba(255, 255, 255, 0.08)"},"aria-haspopup":"menu","aria-expanded":o,disabled:d,onClick:a=>{a.stopPropagation(),P(a=>a===e.key?null:e.key)},children:[d?(0,l.jsx)("span",{className:"h-3 w-3 flex-none animate-spin rounded-full border border-[var(--dsw-label-tertiary)] border-t-transparent"}):r?null:(0,l.jsx)("span",{className:"h-2 w-2 flex-none rounded-full",style:{background:"#22c55e",boxShadow:"0 0 5px rgba(34, 197, 94, 0.4)"}}),(0,l.jsx)("span",{style:{fontSize:12,fontWeight:500,color:r?"var(--dsw-label-tertiary)":"var(--dsw-success)",lineHeight:1},children:r?a.disabled:a.enabled}),(0,l.jsx)(n.Cd,{size:13,style:{color:"var(--dsw-label-tertiary)",transform:o?"rotate(180deg)":"none",transition:"transform 140ms ease"}})]}),o&&(0,l.jsxs)("div",{className:"popover absolute right-0 top-full mt-1.5 z-50 w-36 py-1 rounded-xl shadow-xl",role:"menu",style:{background:"var(--dsw-surface-l1, #1e2025)",border:"0.5px solid var(--dsw-border-l3)",boxShadow:"0 10px 25px -5px rgba(0, 0, 0, 0.5), 0 8px 10px -6px rgba(0, 0, 0, 0.5)"},children:[(0,l.jsx)("button",{type:"button",role:"menuitem",className:"flex w-full items-center gap-2 px-3 py-1.5 text-left text-xs transition-colors hover:bg-[var(--dsw-hover)] cursor-pointer",style:{color:r?"var(--dsw-success)":"var(--dsw-label-primary)"},disabled:w,onClick:()=>{P(null),$("toggle","package"===e.kind?{kind:"package",source:e.p.source,scope:e.p.scope,disabled:!r}:{kind:"extension",path:e.e.path,disabled:!r},e.key,r?"zh"===t?"正在启用...":"Enabling...":"zh"===t?"正在停用...":"Disabling...",r?a.enabled:a.disabled)},children:r?a.enablePlugin:a.disablePlugin}),"package"===e.kind&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("button",{type:"button",role:"menuitem",className:"flex w-full items-center gap-2 px-3 py-1.5 text-left text-xs transition-colors hover:bg-[var(--dsw-hover)] cursor-pointer disabled:opacity-50",style:{color:"var(--dsw-label-secondary)"},disabled:w||r,title:r?a.updateNeedsEnable:void 0,onClick:()=>{P(null),$("update",{source:e.p.source},e.key,a.updating,a.updateSuccess)},children:a.update}),(0,l.jsx)("button",{type:"button",role:"menuitem",className:"flex w-full items-center gap-2 px-3 py-1.5 text-left text-xs transition-colors hover:bg-[var(--dsw-hover)] cursor-pointer disabled:opacity-50",style:{color:"var(--dsw-danger)"},disabled:w,onClick:()=>{P(null),i(e.p.source)&&$("remove",{source:e.p.source,local:"project"===e.p.scope},e.key,a.uninstalling,a.uninstallSuccess)},children:a.uninstall})]}),(0,l.jsx)("div",{className:"my-1 border-t border-[var(--dsw-border-l1)]"}),(0,l.jsx)("button",{type:"button",role:"menuitem",className:"flex w-full items-center gap-2 px-3 py-1.5 text-left text-xs transition-colors hover:bg-[var(--dsw-hover)] cursor-pointer",style:{color:"var(--dsw-label-tertiary)"},onClick:()=>{R(e.key),P(null)},children:s?"zh"===t?"收起详情":"Hide details":"zh"===t?"查看详情":"View details"})]})]})]}),s&&(0,l.jsx)("div",{className:"hairline-t flex flex-col gap-2 px-3.5 py-3",style:{fontSize:12},children:"package"===e.kind?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("div",{className:"break-all",style:{color:"var(--dsw-label-tertiary)",fontSize:11.5},children:e.p.source}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"rounded-md px-1.5 py-0.5",style:{fontSize:10.5,border:"0.5px solid var(--dsw-border-l3)",color:"var(--dsw-label-tertiary)"},children:"user"===e.p.scope?a.scopeGlobal:a.scopeProject}),(0,l.jsxs)("span",{style:{color:"var(--dsw-label-caption)",fontSize:11.5},children:[a.resources,": ",e.p.resources.extensions," ext \xb7 ",e.p.resources.skills," skills \xb7 ",e.p.resources.prompts," prompts"]})]}),(0,l.jsxs)("div",{className:"flex items-center justify-end gap-3 pt-1",children:[(0,l.jsx)("button",{disabled:w,style:{fontSize:12,color:"var(--dsw-label-secondary)"},className:"hover:underline cursor-pointer disabled:opacity-50",onClick:()=>void $("update",{source:e.p.source},e.key,a.updating,a.updateSuccess),children:a.update}),(0,l.jsx)("button",{disabled:w,style:{fontSize:12,color:"var(--dsw-danger)"},className:"hover:underline cursor-pointer disabled:opacity-50",onClick:()=>{i(e.p.source)&&$("remove",{source:e.p.source,local:"project"===e.p.scope},e.key,a.uninstalling,a.uninstallSuccess)},children:a.uninstall})]})]}):(0,l.jsx)("div",{className:"break-all",style:{fontFamily:"var(--font-mono)",fontSize:11.5,color:"var(--dsw-label-caption)"},children:e.e.path})})]},e.key)})})]})]})}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2716],{2155:(e,t,n)=>{n.d(t,{Q:()=>d});var l=n(5155),a=n(2115),i=n(9992),r=n(1859),s=n(2253),o=n(1135);let d=(0,a.memo)(function({tree:e,expanded:t,fresh:n,filter:i="",onlyChanges:s=!1,selectedPath:d,onToggleDir:p,onExpandLazy:h,onOpenFile:u,onReference:f,onOpenEditor:m,revealPath:w,revealKey:x,emptyText:v}){let{t:g}=(0,r.s)(),y=(0,a.useMemo)(()=>(0,o.dG)(e,t,{onlyChanges:s,filter:i}),[e,t,s,i]),b=(0,a.useRef)(null),[j,k]=(0,a.useState)({top:0,height:600}),[N,C]=(0,a.useState)(null);(0,a.useEffect)(()=>{let e=b.current;if(!e)return;let t=()=>k({top:e.scrollTop,height:e.clientHeight});t(),e.addEventListener("scroll",t,{passive:!0});let n=new ResizeObserver(t);return n.observe(e),()=>{e.removeEventListener("scroll",t),n.disconnect()}},[]),(0,a.useEffect)(()=>{if(!w)return;let e=y.findIndex(e=>e.node.path===w);if(e<0)return;C((0,o.SG)(y[e].node));let t=b.current;if(!t)return;let n=22*e;(n<t.scrollTop||n+22>t.scrollTop+t.clientHeight)&&t.scrollTo({top:Math.max(0,n-t.clientHeight/2)})},[w,x,y]);let $=(0,a.useCallback)(e=>{let t=e.node;"dir"===t.kind?(t.lazy&&!e.expanded&&h&&h(t.path),p(t.path)):u(t)},[h,p,u]),S=Math.max(0,Math.floor(j.top/22)-12),z=Math.min(y.length,Math.ceil((j.top+j.height)/22)+12),M=y.slice(S,z);return(0,l.jsx)("div",{ref:b,className:"pw-tree min-h-0 flex-1 overflow-x-hidden overflow-y-auto outline-none",tabIndex:0,role:"tree",onKeyDown:e=>{if(!y.length)return;let t=Math.max(0,y.findIndex(e=>(0,o.SG)(e.node)===N)),n=y[t],l=e=>{let t=y[Math.max(0,Math.min(y.length-1,e))];C((0,o.SG)(t.node));let n=b.current;if(!n)return;let l=22*Math.max(0,Math.min(y.length-1,e));l<n.scrollTop?n.scrollTop=l:l+22>n.scrollTop+n.clientHeight&&(n.scrollTop=l+22-n.clientHeight)};if("ArrowDown"===e.key)e.preventDefault(),l(null===N?0:t+1);else if("ArrowUp"===e.key)e.preventDefault(),l(t-1);else if("ArrowRight"===e.key&&n)e.preventDefault(),"dir"!==n.node.kind||n.expanded?l(t+1):$(n);else if("ArrowLeft"===e.key&&n)if(e.preventDefault(),"dir"===n.node.kind&&n.expanded)p(n.node.path);else{let e=n.node.path.includes("/")?n.node.path.slice(0,n.node.path.lastIndexOf("/")):"",t=y.findIndex(t=>"dir"===t.node.kind&&t.node.path===e);t>=0&&l(t)}else("Enter"===e.key||" "===e.key)&&n?(e.preventDefault(),$(n)):"Home"===e.key?(e.preventDefault(),l(0)):"End"===e.key&&(e.preventDefault(),l(y.length-1))},onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||C(null)},children:0===y.length?(0,l.jsx)("div",{style:{fontSize:12.5,color:"var(--dsw-label-caption)",padding:"10px 12px"},children:v??g.filesEmpty}):(0,l.jsx)("div",{style:{height:22*y.length,position:"relative"},children:M.map((e,t)=>(0,l.jsx)(c,{row:e,top:(S+t)*22,fresh:"file"===e.node.kind&&!!n?.has(e.node.path),selected:"file"===e.node.kind&&d===e.node.path,focused:N===(0,o.SG)(e.node),onActivate:$,onOpenFolder:u,onFocusRow:C,onReference:f,onOpenEditor:m,pendingLabel:g.growthPending,lazyLabel:g.growthLazyDir,deletedLabel:g.growthStatD,referenceLabel:g.fileReference,editorLabel:g.fileOpenEditor,openFolderLabel:g.viewerOpenFolder},(0,o.SG)(e.node)))})})}),c=(0,a.memo)(function({row:e,top:t,fresh:n,selected:a,focused:r,onActivate:d,onOpenFolder:c,onFocusRow:p,onReference:h,onOpenEditor:u,pendingLabel:f,lazyLabel:m,deletedLabel:w,referenceLabel:x,editorLabel:v,openFolderLabel:g}){var y;let{node:b,depth:j,expanded:k}=e,N="dir"===b.kind,C="A"===(y=b.status)?"var(--dsw-success)":"M"===y?"var(--dsw-warn)":"D"===y?"var(--dsw-danger)":"R"===y?"var(--dsw-accent)":void 0,$=N?function(e){let t=e.counts;if(!t)return null;let n=t.added+t.modified+t.deleted+t.renamed;if(t.pending&&!n)return{text:"…",color:"var(--dsw-label-caption)"};if(!n)return null;let l=t.deleted>=t.added&&t.deleted>=t.modified?"var(--dsw-danger)":t.added>=t.modified?"var(--dsw-success)":"var(--dsw-warn)";return{text:String(n),color:l}}(b):null,S=!!(b.lazy&&!b.counts),z=[N?`${b.path}/`:b.path,"D"===b.status?w:"","R"===b.status&&b.from?`← ${b.from}`:"",b.pending?f:"",S?m:""].filter(Boolean).join("\n");return(0,l.jsxs)("div",{className:"pw-tree-row group/row",role:"treeitem","aria-expanded":N?k:void 0,"aria-selected":a,"data-selected":a||void 0,"data-focused":r||void 0,"data-fresh":n?b.status??"M":void 0,"data-status":b.status,"data-pending":b.pending||void 0,"data-lazy":S?"1":void 0,style:{top:t,paddingLeft:12*j+6},title:z,onClick:()=>{p((0,o.SG)(b)),d(e)},onDoubleClick:()=>{N&&c(b)},children:[(0,l.jsx)("span",{className:"pw-tree-chevron","aria-hidden":!0,children:N&&(0,l.jsx)(i.Yq,{size:10,style:{transform:k?"rotate(90deg)":void 0,transition:"transform var(--ds-duration-fast)"}})}),(0,l.jsx)("img",{className:"pw-tree-icon","data-kind":b.kind,src:N?(0,s.Q)(b.name,k):(0,s.s)(b.name),alt:"",draggable:!1}),(0,l.jsxs)("span",{className:"pw-tree-name",style:{color:C,textDecoration:"D"===b.status?"line-through":void 0},children:[b.name,N?"/":"","D"===b.status&&(0,l.jsxs)("span",{className:"pw-tree-from",children:["(",w,")"]}),"R"===b.status&&b.from&&(0,l.jsxs)("span",{className:"pw-tree-from",children:["← ",b.from.split("/").pop()]})]}),b.pending&&(0,l.jsx)("span",{className:"pw-tree-pulse","aria-label":f}),!S&&(h||!N&&u||N)&&(0,l.jsxs)("span",{className:"pw-tree-actions",children:[N&&(0,l.jsx)("button",{type:"button",className:"icon-btn",style:{width:18,height:18,borderRadius:5},title:g,"aria-label":`${g}: ${b.path}`,onClick:e=>{e.stopPropagation(),c(b)},children:(0,l.jsx)(i.pH,{size:11})}),h&&(0,l.jsx)("button",{type:"button",className:"icon-btn",style:{width:18,height:18,borderRadius:5},title:x,onClick:e=>{e.stopPropagation(),h(N?`${b.path.replace(/[\\/]+$/,"")}/`:b.path)},children:(0,l.jsx)(i.o_,{size:11})}),!N&&u&&(0,l.jsx)("button",{type:"button",className:"icon-btn",style:{width:18,height:18,borderRadius:5},title:v,onClick:e=>{e.stopPropagation(),u(b.path)},children:(0,l.jsx)(i.lx,{size:11})})]}),!N&&b.status&&(b.add||b.del)?(0,l.jsxs)("span",{className:"pw-tree-stat",children:[b.add?(0,l.jsxs)("span",{style:{color:"var(--dsw-success)"},children:["+",b.add]}):null,b.del?(0,l.jsxs)("span",{style:{color:"var(--dsw-danger)"},children:["−",b.del]}):null]}):null,!N&&b.status&&(0,l.jsx)("span",{className:"pw-tree-badge",style:{color:C,borderColor:C},children:b.status}),$&&(0,l.jsx)("span",{className:"pw-tree-badge",style:{color:$.color,borderColor:$.color},children:$.text})]})})},2716:(e,t,n)=>{n.r(t),n.d(t,{FileViewer:()=>b});var l=n(5155),a=n(2115),i=n(8426),r=n(3437),s=n(7890),o=n(8476),d=n(1859),c=n(9665);let p=(0,a.memo)(function({lines:e,language:t,folded:n,handle:i,initialChange:r}){let{t:s}=(0,d.s)(),[o,p]=(0,a.useState)(()=>new Set),h=(0,a.useRef)(null),[u,f]=(0,a.useState)({top:0,height:800}),[m,w]=(0,a.useState)(-1),x=(0,a.useRef)(new Map);(0,a.useEffect)(()=>p(new Set),[e]);let{rows:v,blocks:g}=(0,a.useMemo)(()=>(function(e,t,n){let l=[],a=[],i=e=>"add"===e.kind||"del"===e.kind,r=-1,s=-1;for(let t=0;t<e.length;t+=1)i(e[t])&&(r<0&&(r=t),s=t);let o=0,d=!1;for(;o<e.length;){let c=e[o];if("hunk"===c.kind||"file"===c.kind){o+=1;continue}if(i(c)){d||a.push(l.length),l.push({kind:"line",line:c,index:o}),d=!0,o+=1;continue}d=!1;let p=o;for(;p<e.length&&"ctx"===e[p].kind;)p+=1;let h=p-o,u=r<0||r>=o?0:3,f=s<p?0:3;if(!t||n.has(o)||h<=u+f+2)for(let t=o;t<p;t+=1)l.push({kind:"line",line:e[t],index:t});else{for(let t=o;t<o+u;t+=1)l.push({kind:"line",line:e[t],index:t});l.push({kind:"fold",from:o,count:h-u-f});for(let t=p-f;t<p;t+=1)l.push({kind:"line",line:e[t],index:t})}o=p}return{rows:l,blocks:a}})(e,n,o),[e,n,o]),y=(0,a.useMemo)(()=>String(function(e){let t=1;for(let n of e){let e=n.new??n.old??0;e>t&&(t=e)}return t}(e)).length,[e]),b=!!t&&v.length<=6e3;(0,a.useEffect)(()=>{let e=h.current;if(!e)return;let t=()=>f({top:e.scrollTop,height:e.clientHeight});t(),e.addEventListener("scroll",t,{passive:!0});let n=new ResizeObserver(t);return n.observe(e),()=>{e.removeEventListener("scroll",t),n.disconnect()}},[]);let j=(0,a.useCallback)(e=>{let t=h.current,n=g[e];t&&void 0!==n&&(w(e),t.scrollTo({top:Math.max(0,20*n-t.clientHeight/3),behavior:"smooth"}))},[g]);(0,a.useImperativeHandle)(i,()=>({nextChange:()=>j(Math.min(g.length-1,m+1)),prevChange:()=>j(Math.max(0,m-1))}),[g.length,m,j]);let k=(0,a.useRef)(!1);(0,a.useEffect)(()=>{k.current=!1},[e]),(0,a.useEffect)(()=>{if(k.current||!r||!g.length)return;k.current=!0;let e=h.current;e&&(e.scrollTop=Math.max(0,20*g[0]-e.clientHeight/3),w(0))},[g,r,v]);let N=Math.max(0,Math.floor(u.top/20)-20),C=Math.min(v.length,Math.ceil((u.top+u.height)/20)+20);return(0,l.jsxs)("div",{className:"pw-fdiff relative min-h-0 flex-1",children:[(0,l.jsx)("div",{ref:h,className:"pw-fdiff-scroll h-full overflow-auto",children:(0,l.jsx)("div",{style:{height:20*v.length,position:"relative",minWidth:"100%"},children:v.slice(N,C).map((e,n)=>{let a=(N+n)*20;if("fold"===e.kind)return(0,l.jsx)("button",{type:"button",className:"pw-fdiff-fold",style:{top:a},onClick:()=>p(t=>new Set(t).add(e.from)),children:s.viewerFoldedLines.replace("{n}",String(e.count))},`f${e.from}`);let i=e.line,r=(e=>{if(!b||!e.trim())return null;let n=x.current.get(e);if(void 0!==n)return n;let l=(0,c.NK)(e,t);return x.current.size>5e3&&x.current.clear(),x.current.set(e,l),l})(i.text);return(0,l.jsxs)("div",{className:"pw-fdiff-row","data-kind":i.kind,style:{top:a},children:[(0,l.jsxs)("span",{className:"pw-fdiff-gutter",style:{width:`${2*y+3}ch`},children:[(0,l.jsx)("span",{children:"add"===i.kind?"":String(i.old??"").padStart(y)}),(0,l.jsx)("span",{children:"del"===i.kind?"":String(i.new??"").padStart(y)})]}),(0,l.jsx)("span",{className:"pw-fdiff-sign",children:"add"===i.kind?"+":"del"===i.kind?"−":" "}),(0,l.jsx)("span",{className:"pw-fdiff-text hljs",children:r?(0,l.jsx)("span",{dangerouslySetInnerHTML:{__html:r}}):i.text})]},e.index)})})}),v.length>0&&g.length>0&&(0,l.jsx)("div",{className:"pw-fdiff-ticks","aria-hidden":!0,children:g.map((e,t)=>{let n=v[e],a=n?.kind==="line"?n.line.kind:"add";return(0,l.jsx)("span",{className:"pw-fdiff-tick","data-kind":a,"data-current":t===m||void 0,style:{top:`${e/v.length*100}%`},onClick:()=>j(t)},t)})})]})});var h=n(2155),u=n(9992),f=n(2253),m=n(3364),w=n(1135);let x=new Map;async function v(e){let t=await fetch(e),n=await t.json();if(!t.ok||!n.success){let e=Error(n.error||`request failed (${t.status})`);throw e.status=t.status,e}return n.data}function g(e){let t=x.get(e);return!t&&((t=v(e)).catch(()=>x.delete(e)),x.set(e,t),x.size>200&&x.delete(x.keys().next().value)),t}function y({content:e,name:t}){let n=(0,a.useMemo)(()=>(0,c.wY)(e,(0,c.f3)(t)),[e,t]),i=e.split("\n").length,r=`${String(i).length+1}ch`;return(0,l.jsxs)("div",{className:"flex min-h-0 flex-1 overflow-auto",style:{fontFamily:"var(--font-mono)",fontSize:12,lineHeight:"20px"},children:[(0,l.jsx)("pre",{"aria-hidden":!0,className:"flex-none select-none py-2 pl-3 pr-2 text-right",style:{width:r,minWidth:r,color:"var(--dsw-label-caption)",margin:0,position:"sticky",left:0,background:"var(--dsw-glass-modal)"},children:Array.from({length:i},(e,t)=>t+1).join("\n")}),null!==n?(0,l.jsx)("pre",{className:"hljs min-w-0 flex-1 py-2 pl-3 pr-4",style:{margin:0,background:"transparent",color:"var(--dsw-label-secondary)"},children:(0,l.jsx)("code",{dangerouslySetInnerHTML:{__html:n}})}):(0,l.jsx)("pre",{className:"min-w-0 flex-1 py-2 pl-3 pr-4",style:{margin:0,color:"var(--dsw-label-secondary)"},children:e})]})}function b({state:e,growth:t,cwd:n,onClose:x,onSelectTab:j,onCloseTab:k,onOpen:N,onReference:C,onOpenEditor:$}){let{t:S}=(0,d.s)(),[z,M]=(0,a.useState)(!1),[E,D]=(0,a.useState)("diff"),[R,L]=(0,a.useState)(!1),[T,F]=(0,a.useState)(!0),[I,A]=(0,a.useState)(!1),[H,O]=(0,a.useState)(""),[P,U]=(0,a.useState)(0),[_,G]=(0,a.useState)(""),[K,W]=(0,a.useState)(null),[q,B]=(0,a.useState)(null),[Q,V]=(0,a.useState)(null),X=(0,a.useRef)(null),Y=(0,a.useRef)(null),J=(0,a.useRef)(null),Z=e.tabs.find(t=>t.path===e.active)??null,ee=(0,a.useMemo)(()=>Z?t.changes.find(e=>e.path===Z.path)??null:null,[Z,t.changes]),et=!!(Z&&/\.(md|mdx|markdown)$/i.test(Z.path)),en=t.range;(0,a.useEffect)(()=>{L(!1),ea(null)},[e.active]),(0,a.useEffect)(()=>{!R&&Z&&D(ee&&!Z.lazy?"diff":et?"render":"content")},[Z,ee,et,R]);let[el,ea]=(0,a.useState)(null),ei=Z?.kind==="dir"?Z.path:el,er=!!ei,es=ei?ei.replace(/\/+$/,""):null,eo=null!==es&&n?`dir|${n}|${es}`:null,ed=Q&&Q.key===eo?Q:null;(0,a.useEffect)(()=>{if(null===es||!n||!eo)return void V(null);let e=!0;return(async()=>{try{let t=await v(`/api/files?cwd=${encodeURIComponent(n)}&path=${encodeURIComponent(es)}&offset=0`);e&&V({key:eo,...t})}catch(t){e&&V({key:eo,dir:es,entries:[],nextOffset:null,truncated:!1,error:t instanceof Error?t.message:S.viewerLoadFailed})}})(),()=>{e=!1}},[es,eo,n,S.viewerLoadFailed]);let ec=(0,a.useCallback)(async()=>{if(ed?.nextOffset&&null!==es&&n)try{let e=await v(`/api/files?cwd=${encodeURIComponent(n)}&path=${encodeURIComponent(es)}&offset=${ed.nextOffset}`);V(t=>t===ed?{...ed,...e,key:ed.key,entries:[...ed.entries,...e.entries]}:t)}catch{}},[ed,es,n]);(0,a.useEffect)(()=>{if(!Z||"dir"===Z.kind)return void B(null);let e=`${Z.path}|${E}|${en?.from??""}|${en?.to??""}|${ee?.status??""}`,l=!0,a=t=>{l&&B({key:e,diff:null,content:null,binary:!1,truncated:!1,notice:null,error:null,...t})};if(void 0!==Z.staticContent)return a({content:Z.staticContent}),()=>{l=!1};if(!n)return void B(null);let i=`cwd=${encodeURIComponent(n)}`,r=async e=>{try{let t=await v(`/api/files?read=1&${i}&path=${encodeURIComponent(Z.path)}`);a({content:t.content,binary:t.binary,truncated:t.truncated,notice:e})}catch(e){if(400!==e.status)throw e;try{await v(`/api/files?${i}&path=${encodeURIComponent(Z.path)}&offset=0`),a({notice:null}),ea(Z.path);return}catch{}a({notice:"missing"})}},s=async(e,n)=>{try{let t=await g(`/api/growth?${i}&tree=${e}&path=${encodeURIComponent(Z.path)}&content=1`);a({content:t.content,binary:t.binary,truncated:t.truncated,notice:n})}catch(n){if(404===n.status){let n=t.selected?t.rounds.findIndex(e=>e.commit===t.selected.commit):t.rounds.length-1,l=t.rounds.slice(0,n+1).reverse().find(e=>e.changes.some(e=>e.path===Z.path||e.from===Z.path)),s=l?.changes.some(e=>"D"===e.status&&e.path===Z.path||"R"===e.status&&e.from===Z.path)?l.parentTree:l?.tree;if(s&&s!==e)try{let e=await g(`/api/growth?${i}&tree=${s}&path=${encodeURIComponent(Z.path)}&content=1`);a({content:e.content,binary:e.binary,truncated:e.truncated,notice:"historical"});return}catch(e){if(404!==e.status)throw e}await r("disk");return}throw n}};return(async()=>{try{if(Z.lazy||!en)return void await r(Z.lazy&&t.rounds.length>0?"disk":null);if("diff"===E){if(!ee)return void await s(en.to,"nochange");let e=await g(`/api/growth?${i}&from=${en.from}&to=${en.to}&path=${encodeURIComponent(Z.path)}${Z.from??ee.from?`&renamedFrom=${encodeURIComponent(Z.from??ee.from??"")}`:""}`);if(e.binary)return void a({binary:!0});let t=(0,o.rj)(e.patch);if(!t)return void await s(en.to,"nochange");a({diff:t,truncated:e.truncated,notice:"D"===ee.status?"deleted":null});return}await s(en.to,null)}catch(e){a({error:e instanceof Error?e.message:S.viewerLoadFailed})}})(),()=>{l=!1}},[Z,n,E,en,ee,t.rounds,t.selected,S.viewerLoadFailed]),(0,a.useEffect)(()=>{if(!e.open)return;let t=t=>{let n=t.target,l=n&&("INPUT"===n.tagName||"TEXTAREA"===n.tagName||n.isContentEditable);if("Escape"===t.key){t.preventDefault(),I?A(!1):x();return}let a=t.ctrlKey||t.metaKey;if(a&&"w"===t.key.toLowerCase()){t.preventDefault(),e.active?k(e.active):x();return}if(a&&"p"===t.key.toLowerCase()){t.preventDefault(),A(!0);return}l||a||"diff"!==E||("]"===t.key?X.current?.nextChange():"["===t.key&&X.current?.prevChange())};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[e.open,e.active,I,E,x,k]),(0,a.useEffect)(()=>{I&&(O(""),U(0),setTimeout(()=>J.current?.focus(),0))},[I]),(0,a.useEffect)(()=>{e.open&&setTimeout(()=>Y.current?.focus(),0)},[e.open]);let ep=(0,a.useMemo)(()=>{if(!I)return[];let e=H.trim();return t.filePaths.map(t=>({p:t,s:(0,w.dt)(e,t)})).filter(e=>e.s>=0).sort((e,t)=>t.s-e.s||e.p.length-t.p.length).slice(0,50).map(e=>e.p)},[I,H,t.filePaths]);if(!e.open)return null;let eh=Z?Z.path.split("/"):[],eu=t.selected?t.selected.n?S.growthRoundLabel.replace("{n}",String(t.selected.n)):S.growthKindUser:"",ef=eu?`${eu}${ee?` \xb7 +${ee.add??0} −${ee.del??0}`:""}`:"",em="diff"===E&&!!q?.diff,ew=q?.notice==="deleted"?S.viewerDeleted:q?.notice==="historical"?S.viewerHistorical:q?.notice==="missing"?S.viewerMissing:q?.notice==="disk"?S.viewerNotInSnapshot:q?.notice==="nochange"?S.viewerNoChanges:"";return(0,l.jsx)("div",{className:"pw-viewer-mask modal-mask fixed inset-0 z-[105] flex items-center justify-center",onMouseDown:e=>e.target===e.currentTarget&&x(),children:(0,l.jsxs)("div",{ref:Y,className:"pw-viewer glass-modal flex flex-col overflow-hidden outline-none","data-fullscreen":z||void 0,role:"dialog","aria-modal":"true",tabIndex:-1,"data-testid":"file-viewer",children:[(0,l.jsxs)("div",{className:"pw-viewer-tabs hairline-b",onDoubleClick:e=>e.target===e.currentTarget&&M(e=>!e),children:[(0,l.jsxs)("button",{type:"button",className:"pw-viewer-tab","data-active":null===e.active,onClick:()=>j(null),children:[(0,l.jsx)("img",{className:"pw-tree-icon",src:"/file-icons/folder-open.svg",alt:""}),(0,l.jsx)("span",{children:S.projectPanel})]}),(0,l.jsx)("div",{className:"pw-viewer-tabstrip",children:e.tabs.map(t=>(0,l.jsxs)("div",{className:"pw-viewer-tab","data-active":e.active===t.path,onAuxClick:e=>{1===e.button&&k(t.path)},children:[(0,l.jsxs)("button",{type:"button",className:"pw-viewer-tab-main",title:t.path,onClick:()=>j(t.path),children:[(0,l.jsx)("img",{className:"pw-tree-icon",src:(0,f.s)(t.path.split("/").pop()??t.path),alt:""}),(0,l.jsx)("span",{className:"truncate",children:t.path.split("/").pop()})]}),(0,l.jsx)("button",{type:"button",className:"pw-viewer-tab-close",title:S.viewerCloseTab,"aria-label":`${S.viewerCloseTab}: ${t.path}`,onClick:()=>k(t.path),children:(0,l.jsx)(u.Bh,{size:10})})]},t.path))}),(0,l.jsx)("button",{type:"button",className:"icon-btn",style:{width:26,height:26},title:`${S.viewerQuickOpen} (Ctrl/⌘+P)`,onClick:()=>A(!0),children:(0,l.jsx)(u.Xh,{size:13})}),(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsx)("button",{type:"button",className:"icon-btn",style:{width:26,height:26},title:z?S.viewerExitFullscreen:S.viewerFullscreen,onClick:()=>M(e=>!e),"data-testid":"viewer-fullscreen",children:(0,l.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none","aria-hidden":!0,children:z?(0,l.jsx)("path",{d:"M6 1v5H1M10 1v5h5M6 15v-5H1M10 15v-5h5",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round"}):(0,l.jsx)("path",{d:"M1 6V1h5M15 6V1h-5M1 10v5h5M15 10v5h-5",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round"})})}),(0,l.jsx)("button",{type:"button",className:"icon-btn",style:{width:26,height:26},title:`${S.close} (Esc)`,onClick:x,"data-testid":"viewer-close",children:(0,l.jsx)(u.Bh,{size:13})})]}),Z?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"pw-viewer-toolbar hairline-b",children:[(0,l.jsx)("div",{className:"pw-crumb min-w-0 flex-1",children:eh.map((e,n)=>(0,l.jsxs)("span",{className:"flex items-center",children:[n>0&&(0,l.jsx)("span",{className:"pw-crumb-sep",children:"/"}),n<eh.length-1?(0,l.jsx)("button",{type:"button",onClick:()=>{let e;return e=eh.slice(0,n+1).join("/"),void(t.revealPath(e),W({path:e,key:Date.now()}),j(null))},children:e}):(0,l.jsx)("span",{style:{color:"var(--dsw-label-primary)",fontWeight:500},children:e})]},n))}),ef&&!Z.lazy&&(0,l.jsx)("span",{className:"flex-none truncate",style:{fontSize:11.5,color:"var(--dsw-label-caption)",maxWidth:220},children:ef}),!Z.lazy&&!er&&(0,l.jsx)("span",{className:"pw-seg",role:"radiogroup",children:["diff","content",...et?["render"]:[]].map(e=>(0,l.jsx)("button",{type:"button",role:"radio","aria-checked":E===e,"data-active":E===e,onClick:()=>{L(!0),D(e)},children:"diff"===e?S.viewerModeDiff:"content"===e?S.viewerModeContent:S.viewerModeRender},e))}),!er&&Z.lazy&&et&&(0,l.jsx)("span",{className:"pw-seg",role:"radiogroup",children:["content","render"].map(e=>(0,l.jsx)("button",{type:"button",role:"radio","aria-checked":E===e,"data-active":E===e,onClick:()=>{L(!0),D(e)},children:"content"===e?S.viewerModeContent:S.viewerModeRender},e))}),em&&!er&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("button",{type:"button",className:"pw-chip","data-active":T,onClick:()=>F(e=>!e),children:T?S.viewerFold:S.viewerUnfold}),(0,l.jsx)("button",{type:"button",className:"icon-btn",style:{width:24,height:24},title:`${S.viewerPrevChange} ([)`,onClick:()=>X.current?.prevChange(),children:(0,l.jsx)(u.tr,{size:12})}),(0,l.jsx)("button",{type:"button",className:"icon-btn",style:{width:24,height:24},title:`${S.viewerNextChange} (])`,onClick:()=>X.current?.nextChange(),children:(0,l.jsx)(u.Cd,{size:12})})]}),C&&(0,l.jsx)("button",{type:"button",className:"icon-btn",style:{width:24,height:24},title:S.fileReference,onClick:()=>C(Z.path),children:(0,l.jsx)(u.o_,{size:13})}),$&&(0,l.jsx)("button",{type:"button",className:"icon-btn",style:{width:24,height:24},title:S.fileOpenEditor,onClick:()=>$(Z.path),children:(0,l.jsx)(u.lx,{size:13})})]}),ew&&(0,l.jsx)("div",{className:"pw-viewer-notice","data-kind":q?.notice,children:ew}),q?.truncated&&(0,l.jsx)("div",{className:"pw-viewer-notice","data-kind":"warn",children:"diff"===E?S.viewerPatchTruncated:S.filePreviewTruncated}),er?(0,l.jsxs)("div",{className:"min-h-0 flex-1 overflow-auto","data-testid":"viewer-dir",children:[(0,l.jsx)("div",{className:"px-3 py-2",style:{fontSize:11.5,color:ed?.error?"var(--dsw-danger)":"var(--dsw-label-caption)"},children:ed?ed.error?ed.error:S.viewerDirHint.replace("{n}",String(ed.entries.length)):S.panelLoading}),ed?.entries.map(e=>(0,l.jsxs)("button",{type:"button",className:"flex w-full items-center gap-2 px-3 py-1.5 text-left hover:bg-[var(--dsw-hover)]",onClick:()=>"dir"===e.kind?N(`${ei.replace(/\/+$/,"")}/${e.name}`,{kind:"dir",lazy:!0}):N(`${ei.replace(/\/+$/,"")}/${e.name}`,{lazy:!0}),children:[(0,l.jsx)("img",{className:"pw-tree-icon",src:"dir"===e.kind?"/file-icons/folder-close.svg":(0,f.s)(e.name),alt:""}),(0,l.jsx)("span",{className:"min-w-0 flex-1 truncate",style:{fontSize:12.5,fontFamily:"dir"===e.kind?"inherit":"var(--font-mono)"},children:e.name}),"file"===e.kind&&void 0!==e.size&&(0,l.jsx)("span",{style:{fontSize:11,color:"var(--dsw-label-caption)",fontVariantNumeric:"tabular-nums"},children:(0,m.zi)(e.size)})]},e.name)),ed?.nextOffset?(0,l.jsx)("button",{type:"button",className:"pw-chip mx-3 my-2",onClick:()=>void ec(),children:S.viewerDirMore}):null]}):q&&q.key===`${Z.path}|${E}|${en?.from??""}|${en?.to??""}|${ee?.status??""}`?q.error?(0,l.jsx)("div",{className:"flex min-h-0 flex-1 items-center justify-center",style:{fontSize:12.5,color:"var(--dsw-danger)"},children:q.error}):"missing"===q.notice?(0,l.jsx)("div",{className:"flex min-h-0 flex-1 items-center justify-center",style:{fontSize:12.5,color:"var(--dsw-label-caption)"},children:S.viewerMissing}):q.binary?(0,l.jsx)("div",{className:"flex min-h-0 flex-1 items-center justify-center",style:{fontSize:12.5,color:"var(--dsw-label-caption)"},children:S.fileBinary}):q.diff?(0,l.jsx)(p,{lines:q.diff,language:(0,c.f3)(Z.path),folded:T,handle:X,initialChange:!0}):"render"===E&&null!==q.content?(0,l.jsx)("div",{className:"md min-h-0 flex-1 overflow-auto px-6 py-4",style:{fontSize:14},children:(0,l.jsx)(i.oz,{remarkPlugins:[s.A],rehypePlugins:[[r.A,{detect:!1,ignoreMissing:!0}]],children:q.content})}):null!==q.content?(0,l.jsx)(y,{content:q.content,name:Z.path}):null:(0,l.jsx)("div",{className:"flex min-h-0 flex-1 items-center justify-center",style:{fontSize:12.5,color:"var(--dsw-label-caption)"},children:S.panelLoading})]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"pw-viewer-toolbar hairline-b",children:[(0,l.jsxs)("div",{className:"flex min-w-0 flex-1 items-center gap-1.5 rounded-lg px-2",style:{background:"var(--dsw-hover)",height:26,maxWidth:360},children:[(0,l.jsx)(u.FG,{size:12,style:{flex:"none",color:"var(--dsw-label-caption)"}}),(0,l.jsx)("input",{value:_,onChange:e=>G(e.target.value),placeholder:S.growthFilter,className:"min-w-0 flex-1 bg-transparent",style:{fontSize:12}})]}),(0,l.jsx)("span",{style:{fontSize:11.5,color:"var(--dsw-label-caption)"},children:eu}),(0,l.jsx)("button",{type:"button",className:"pw-chip",onClick:t.expandAll,children:S.growthExpandAll}),(0,l.jsx)("button",{type:"button",className:"pw-chip",onClick:t.collapseAll,children:S.growthCollapseAll})]}),(0,l.jsx)(h.Q,{tree:t.tree,expanded:t.expanded,fresh:t.fresh,filter:_,selectedPath:null,onToggleDir:t.toggleDir,onExpandLazy:t.expandLazy,onOpenFile:e=>N(e.path,{from:e.from,lazy:e.lazy,kind:e.kind}),onReference:C,onOpenEditor:$,revealPath:K?.path??null,revealKey:K?.key,emptyText:S.viewerEmpty})]}),I&&(0,l.jsx)("div",{className:"pw-quick",onMouseDown:e=>e.target===e.currentTarget&&A(!1),children:(0,l.jsxs)("div",{className:"pw-quick-box popover",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2 px-2",style:{height:34},children:[(0,l.jsx)(u.FG,{size:14,style:{flex:"none",color:"var(--dsw-label-caption)"}}),(0,l.jsx)("input",{ref:J,value:H,onChange:e=>{O(e.target.value),U(0)},placeholder:S.viewerQuickOpen,className:"min-w-0 flex-1 bg-transparent",style:{fontSize:13},onKeyDown:e=>{if("ArrowDown"===e.key)e.preventDefault(),U(e=>Math.min(ep.length-1,e+1));else if("ArrowUp"===e.key)e.preventDefault(),U(e=>Math.max(0,e-1));else if("Enter"===e.key){e.preventDefault();let t=ep[P];t&&(N(t),A(!1))}}})]}),(0,l.jsx)("div",{className:"pw-quick-list",children:0===ep.length?(0,l.jsx)("div",{style:{fontSize:12.5,color:"var(--dsw-label-caption)",padding:"8px 10px"},children:S.viewerQuickOpenEmpty}):ep.map((e,t)=>(0,l.jsxs)("button",{type:"button",className:"pw-quick-item","data-active":t===P,onMouseEnter:()=>U(t),onClick:()=>{N(e),A(!1)},children:[(0,l.jsx)("img",{className:"pw-tree-icon",src:(0,f.s)(e.split("/").pop()??e),alt:""}),(0,l.jsx)("span",{className:"truncate",children:e.split("/").pop()}),(0,l.jsx)("span",{className:"min-w-0 truncate",style:{color:"var(--dsw-label-caption)",fontSize:11.5},children:e})]},e))})]})})]})})}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2906],{2906:(e,t,n)=>{n.r(t),n.d(t,{MarkdownBlock:()=>F,StreamingMarkdownBlock:()=>_,createStreamingSplitter:()=>A,default:()=>L,splitOpenFence:()=>C,splitStreamingMarkdown:()=>O});var s=n(5155),l=n(2115),i=n(8426),r=n(3437),c=n(7890),a=n(4965),o=n(7765),d=n(2350);let u=/^(?:\.{1,2}\/)?(?:[\w.@[\]-]+\/)+[\w.@[\]-]+\.[A-Za-z][\w]{0,9}$/,h=/^[\w.@-]+\.[A-Za-z][\w]{0,9}$/,m=new Set(["ts","tsx","js","jsx","mjs","cjs","mts","cts","json","jsonc","json5","yml","yaml","toml","ini","env","css","scss","sass","less","html","htm","vue","svelte","md","mdx","txt","rst","adoc","py","rb","go","rs","java","kt","kts","swift","c","h","cc","cpp","hpp","cs","php","lua","sh","bash","zsh","ps1","psm1","bat","cmd","sql","graphql","gql","proto","lock","patch","diff","csv","tsv","xml","svg"]),f=/^(?:[a-z][a-z0-9+.-]*:\/\/|\/\/|mailto:|www\.)/i,p=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,x=/^v?\d+(?:\.\d+)*(?:[-+][\w.]+)?$/;var g=n(9992),j=n(8155),w=n(1859);function y({text:e}){let[t,n]=(0,l.useState)(!1),[i,r]=(0,l.useState)(!1),{t:c}=(0,w.s)();return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("button",{type:"button",className:"icon-btn",title:i?c.copyFailed:c.copy,"aria-label":c.copy,onClick:()=>{(0,j.D)(e).then(e=>{n(e),r(!e),setTimeout(()=>{n(!1),r(!1)},1200)})},children:t?(0,s.jsx)(g.df,{size:14}):(0,s.jsx)(g.sS,{size:14})}),i&&(0,s.jsx)("span",{role:"alert",style:{fontSize:11,color:"var(--dsw-danger)"},children:c.copyFailed})]})}function k({src:e,alt:t,title:n}){let[i,r]=(0,l.useState)(!1),{t:c}=(0,w.s)(),a="string"==typeof e?e:"";if(!a)return null;if(i||function(e){try{return new URL(e,window.location.href).origin===window.location.origin}catch{return!1}}(a))return(0,s.jsx)(o._,{image:a,alt:t??"",title:n});let d=a;try{d=new URL(a).host||a}catch{}return(0,s.jsxs)("button",{type:"button",className:"btn-outline",style:{height:26,padding:"0 10px",fontSize:12},title:a,onClick:()=>r(!0),children:[c.externalImage,t?`:${t}`:"","(",d,")"]})}function b({href:e,children:t,...n}){let l=!1;if("string"==typeof e&&e&&/^https?:\/\//i.test(e)){l=!0;try{l=new URL(e).origin!==window.location.origin}catch{}}return l?(0,s.jsxs)("a",{href:e,target:"_blank",rel:"noopener noreferrer",className:"md-external",...n,children:[t,(0,s.jsx)("span",{className:"md-external-mark","aria-hidden":"true",children:"↗"})]}):(0,s.jsx)("a",{href:e,...n,children:t})}let v=(0,l.memo)(function({text:e}){let t=(0,d.U)();return(0,s.jsx)(i.oz,{remarkPlugins:[c.A],rehypePlugins:[[r.A,{detect:!1,ignoreMissing:!0}]],components:{a:({node:e,...t})=>(0,s.jsx)(b,{...t}),img:({src:e,alt:t,title:n})=>(0,s.jsx)(k,{src:e,alt:t,title:n}),pre:({node:e,children:t,...n})=>(0,s.jsxs)("div",{className:"md-code-block",children:[(0,s.jsx)("div",{className:"md-code-copy",children:(0,s.jsx)(y,{text:function e(t){return t?"string"==typeof t.value?t.value:t.children?.map(e).join("")??"":""}(e)})}),(0,s.jsx)("pre",{...n,children:t})]}),code:({node:e,className:n,children:l})=>{let i="string"==typeof l?l:Array.isArray(l)?l.join(""):"",r=i.trim(),c=!!n||i.endsWith("\n");return t.openFile&&!c&&function(e){let t=e.trim();if(!t||t.length>260||f.test(t)||p.test(t)||x.test(t)||t.startsWith("/")||t.startsWith("~")||/^[A-Za-z]:[\\/]/.test(t)||/[*?<>{}|\\]/.test(t))return!1;if(u.test(t))return!0;if(!h.test(t))return!1;let n=t.slice(t.lastIndexOf(".")+1).toLowerCase();return m.has(n)}(r)?(0,s.jsx)("button",{type:"button",className:"md-file-path",title:r,onClick:()=>t.openFile(r),children:l}):(0,s.jsx)("code",{className:n,children:l})}},children:e})}),F=(0,l.memo)(function({text:e}){return(0,s.jsx)("div",{className:"md",children:(0,s.jsx)(v,{text:e})})}),N=/^ {0,3}(?:[-*+]|\d+[.)])\s/,S=/^ {0,3}(`{3,}|~{3,})(.*)$/,z=/^[ \t]+\S/;function $(e,t){let n=S.exec(t);if(!n)return null;let[,s,l]=n;return e.inFence?s[0]===e.char&&s.length>=e.length&&""===l.trim()?(e.inFence=!1,"close"):null:"`"===s[0]&&l.includes("`")?null:(e.inFence=!0,e.char=s[0],e.length=s.length,"open")}function A(){let e="",t=0,n={inFence:!1,char:"",length:0},s=0,l=!1,i=!0,r=[];return{update(c){for(c.startsWith(e)||(e="",t=0,n={inFence:!1,char:"",length:0},s=0,l=!1,i=!0,r=[]),e=c;t<c.length;){let e=c.indexOf("\n",t);if(-1===e)break;let a=c.slice(t,e),o=n.inFence,d=$(n,a),u=""===a.trim();if(!n.inFence&&u){let t=e+1,n=c.indexOf("\n",t),i=c.slice(t,-1===n?c.length:n),a=z.test(i);if(!(-1!==n||t<c.length&&""!==i.trim()&&(a||!l)))break;if(!(a||l&&N.test(i))&&""!==i.trim()){let e=c.slice(s,t);e.trim()&&r.push(e),s=t}}!o&&!u&&(N.test(a)?l=!0:("open"===d?z.test(a):!i||z.test(a))||(l=!1)),o&&n.inFence||(i=u),t=e+1}return{blocks:r.slice(),tail:c.slice(s),tailInFence:n.inFence}}}}function C(e){let t={inFence:!1,char:"",length:0},n=-1,s=0,l="",i=0;for(;i<e.length;){let r=e.indexOf("\n",i);if(-1===r)break;let c=e.slice(i,r);"open"===$(t,c)&&(n=i,s=r+1,l=(S.exec(c)?.[2]??"").trim().split(/\s+/)[0]??""),i=r+1}if(-1===n||!t.inFence)return{before:e,lang:"",code:""};let r=e.slice(s),c=r.slice(r.lastIndexOf("\n")+1),a=c.trimStart();return a&&c.length-a.length<=3&&a[0]===t.char&&/^(`+|~+)\s*$/.test(a)&&(r=r.slice(0,r.length-c.length)),{before:e.slice(0,n),lang:l,code:r}}function O(e){return A().update(e)}let _=(0,l.memo)(function({text:e,live:t=!0}){let n,i=(0,l.useContext)(a.d),r=(0,l.useRef)(null);r.current||(r.current=A());let[c,o]=(0,l.useState)(()=>({shown:e,...r.current.update(e)}));(0,l.useEffect)(()=>{o({shown:e,...r.current.update(e)})},[e]);let d=!t&&c.shown===e;if((0,l.useLayoutEffect)(()=>{i?.shouldPin()&&i.pin()},[c,d,i]),d)return(0,s.jsx)(F,{text:e});let{blocks:u,tail:h,tailInFence:m}=c;if(m){let{before:e,lang:t,code:l}=C(h);n=(0,s.jsxs)(s.Fragment,{children:[e.trim()?(0,s.jsx)(v,{text:e}):null,(0,s.jsxs)("div",{className:"md-code-block",children:[(0,s.jsx)("div",{className:"md-code-copy",children:(0,s.jsx)(y,{text:l})}),(0,s.jsx)("pre",{children:(0,s.jsx)("code",{className:t?`hljs language-${t}`:void 0,children:l})})]})]})}else n=(0,s.jsx)(v,{text:h});return(0,s.jsxs)("div",{className:"md pw-stream",children:[u.map((e,t)=>(0,s.jsx)(v,{text:e},t)),h?(0,s.jsx)("div",{className:"pw-stream-tail",children:n},"tail"):null]})}),L=F}}]);
|