@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
|
-
globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/api/models/defaults/route"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{},"edgeSSRModuleMapping":{},"clientModules":{},"entryCSSFiles":{"
|
|
1
|
+
globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/api/models/defaults/route"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{},"edgeSSRModuleMapping":{},"clientModules":{},"entryCSSFiles":{"/home/runner/work/PiWeb/PiWeb/src/app/api/models/defaults/route":[]},"rscModuleMapping":{},"edgeRscModuleMapping":{}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var a={};a.id=552,a.ids=[552],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},8128:a=>{a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},12412:a=>{a.exports=require("assert")},12616:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{x:()=>g});var e=c(75430),f=a([e]);async function g(a,b,c){if(0===b.length)return a;let{scopedModels:d}=await (0,e.resolveModelScopeWithDiagnostics)(b,c),f=new Set(d.map(({model:a})=>`${a.provider}/${a.id}`));return a.filter(a=>f.has(`${a.provider}/${a.id}`))}e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},28802:a=>{a.exports=import("@earendil-works/pi-ai")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31421:a=>{a.exports=require("node:child_process")},33873:a=>{a.exports=require("path")},37067:a=>{a.exports=require("node:http")},38522:a=>{a.exports=require("node:zlib")},38708:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{GET:()=>i,POST:()=>j,dynamic:()=>k});var e=c(38522),f=c(23211),g=c(65501),h=a([g]);g=(h.then?(await h)():h)[0];let k="force-dynamic",l=new Map;async function i(a){let b=new URL(a.url).searchParams,c="1"===b.get("custom"),d=c||"1"===b.get("full");try{let b=c?await (0,g.Qn)():null,f=await (d?(0,g.D)():(0,g.Fo)()),h=d?f.models:f.models.map(a=>({provider:a.provider,id:a.id,name:a.name,reasoning:a.reasoning,thinkingLevels:a.thinkingLevels,contextWindow:a.contextWindow})),i=d?f.providers:f.providers.map(a=>({id:a.id,name:a.name,authReady:a.authReady,builtIn:a.builtIn,modelCount:a.modelCount})),j=b?await (0,g.ws)(b.content,f.models):void 0;return function(a,b,c){let d=JSON.stringify(b),f=a.headers.get("accept-encoding")??"",g={"Content-Type":"application/json; charset=utf-8",Vary:"Accept-Encoding","Cache-Control":"no-store"};if(!/\bgzip\b/.test(f)||d.length<2048)return new Response(d,{headers:g});let h=`${c}:${d.length}`,i=l.get(h);if(i&&Date.now()-i.at<5e3)return new Response(i.body.slice(),{headers:{...g,"Content-Encoding":"gzip"}});let j=new Uint8Array((0,e.gzipSync)(Buffer.from(d,"utf8")));return l.size>8&&l.clear(),l.set(h,{at:Date.now(),body:j}),new Response(j.slice(),{headers:{...g,"Content-Encoding":"gzip"}})}(a,{success:!0,data:{providers:i,models:h,customProviders:b,...j?{catalogModelIds:j}:{}}},`${(0,g.Jk)()}:${c?"custom":d?"full":"piweb"}`)}catch(a){return f.NextResponse.json({success:!1,error:String(a?.message??a)},{status:500})}}async function j(a){try{let b=await a.json();if("setKey"===b.action){if(!b.providerId||!b.apiKey)return f.NextResponse.json({success:!1,error:"missing fields"},{status:400});return await (0,g.d8)(b.providerId,b.apiKey),f.NextResponse.json({success:!0})}if("removeKey"===b.action){if(!b.providerId)return f.NextResponse.json({success:!1,error:"missing providerId"},{status:400});return await (0,g.kK)(b.providerId),f.NextResponse.json({success:!0})}if("saveCustomProviders"===b.action){if("string"!=typeof b.content)return f.NextResponse.json({success:!1,error:"missing content"},{status:400});if(void 0!==b.revision&&("string"!=typeof b.revision||!/^(?:missing|[a-f0-9]{64})$/.test(b.revision)))return f.NextResponse.json({success:!1,error:"invalid revision"},{status:400});return await (0,g.P2)(b.content,b.revision),f.NextResponse.json({success:!0,data:{requiresSessionReopen:!0}})}if("discoverModels"===b.action){let a;if(!b.baseUrl)return f.NextResponse.json({success:!1,error:"missing baseUrl"},{status:400});if(void 0!==b.headers){if(!b.headers||"object"!=typeof b.headers||Array.isArray(b.headers))return f.NextResponse.json({success:!1,error:"invalid headers"},{status:400});let c=Object.entries(b.headers);if(c.length>32)return f.NextResponse.json({success:!1,error:"too many headers"},{status:400});for(let[b,d]of(a={},c)){if(!/^[A-Za-z0-9!#$%&'*+.^_`|~-]{1,64}$/.test(b))return f.NextResponse.json({success:!1,error:`invalid header name: ${b}`},{status:400});if("string"!=typeof d||d.length>4096||/[\r\n]/.test(d))return f.NextResponse.json({success:!1,error:`invalid header value: ${b}`},{status:400});d&&(a[b]=d)}}let c=await (0,g.wt)({baseUrl:b.baseUrl,api:b.api,apiKey:b.apiKey,providerId:b.providerId,allowPrivate:!0===b.allowPrivate,headers:a});return f.NextResponse.json({success:!0,data:{models:c}})}if("providerUsage"===b.action){if(!b.providerId)return f.NextResponse.json({success:!1,error:"missing providerId"},{status:400});let a=await (0,g.VV)(b.providerId,!0===b.force);return f.NextResponse.json({success:!0,data:{usage:a}})}if("contextWindowInfo"===b.action||"setContextWindow"===b.action){if("string"!=typeof b.providerId||!b.providerId||"string"!=typeof b.modelId||!b.modelId)return f.NextResponse.json({success:!1,error:"missing providerId or modelId"},{status:400});if("contextWindowInfo"===b.action)return f.NextResponse.json({success:!0,data:await (0,g.yc)(b.providerId,b.modelId)});if("number"!=typeof b.contextWindow)return f.NextResponse.json({success:!1,error:"missing contextWindow"},{status:400});return f.NextResponse.json({success:!0,data:await (0,g.lr)(b.providerId,b.modelId,b.contextWindow)})}if("loginStart"===b.action){if(!b.providerId)return f.NextResponse.json({success:!1,error:"missing providerId"},{status:400});return await (0,g.c$)(b.providerId),f.NextResponse.json({success:!0,data:(0,g.$i)(b.providerId)})}if("loginState"===b.action){if(!b.providerId)return f.NextResponse.json({success:!1,error:"missing providerId"},{status:400});return f.NextResponse.json({success:!0,data:(0,g.$i)(b.providerId)})}if("loginAnswer"===b.action){if(!b.providerId||"string"!=typeof b.text)return f.NextResponse.json({success:!1,error:"missing fields"},{status:400});return f.NextResponse.json({success:!0,data:{delivered:(0,g.ig)(b.providerId,b.text)}})}if("loginCancel"===b.action){if(!b.providerId)return f.NextResponse.json({success:!1,error:"missing providerId"},{status:400});return(0,g.IX)(b.providerId),f.NextResponse.json({success:!0})}return f.NextResponse.json({success:!1,error:"unknown action"},{status:400})}catch(b){let a=b instanceof g.w9?409:b instanceof g.Ts||b instanceof SyntaxError?400:500;return f.NextResponse.json({success:!1,error:String(b?.message??b)},{status:a})}}d()}catch(a){d(a)}})},41846:(a,b,c)=>{function d(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)}function e(a,b,c,e){let f=JSON.parse(JSON.stringify(a)),g=Object.prototype.hasOwnProperty.call(f,b)?f[b]:void 0,h=d(g)?g:{};f[b]=h;let i=d(h.modelOverrides)?h.modelOverrides:void 0,j=i&&Object.prototype.hasOwnProperty.call(i,c)?i[c]:void 0;if(d(j)&&void 0!==j.contextWindow)return j.contextWindow=e,f;let k=Array.isArray(h.models)?h.models.filter(a=>d(a)&&"string"==typeof a.id&&a.id.trim()===c):[];if(k.length){for(let a of k)a.contextWindow=e;return f}let l=i??{};return h.modelOverrides=l,l[c]={...d(j)?j:{},contextWindow:e},f}c.d(b,{Ax:()=>e})},44708:a=>{a.exports=require("node:https")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46193:a=>{a.exports=require("node:string_decoder")},48161:a=>{a.exports=require("node:os")},51455:a=>{a.exports=require("node:fs/promises")},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},65501:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{$i:()=>ar,D:()=>F,Fo:()=>G,IX:()=>at,Jk:()=>C,P2:()=>aB,Qn:()=>ay,Ts:()=>aP,VV:()=>S,c$:()=>aq,d8:()=>J,ig:()=>as,kK:()=>K,lr:()=>aE,w9:()=>aQ,ws:()=>E,wt:()=>R,yc:()=>aD});var e=c(51455),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c(71553),k=c.n(j),l=c(37067),m=c(44708),n=c(77030),o=c(75430),p=c(71808),q=c(12616),r=c(86159),s=c(87982),t=c(75554),u=c(28686),v=c(41846),w=c(28802),x=c(49904),y=c(97138),z=a([o,q,s,t,u,w]);function A(a){return"number"==typeof a&&Number.isSafeInteger(a)&&a>0?a:void 0}[o,q,s,t,u,w]=z.then?(await z)():z;let aF=null,aG=null,aH=-1,aI=new Map;function B(){aG=null,aI.clear(),(0,r.Yq)("auth.json")}function C(){return aG?String(aG.at):"none"}function D(){return aF||(aF=o.ModelRuntime.create({modelsPath:null,refreshOnCreate:!1,allowModelNetwork:!1,credentials:new w.InMemoryCredentialStore,modelsStore:new w.InMemoryModelsStore}).then(a=>new Map(a.getProviders().map(b=>[b.id,new Map(a.getModels(b.id).map(a=>[a.id,Number(a.contextWindow)||0]))]))).catch(a=>{throw aF=null,a})),aF}async function E(a,b){let c=await D(),d=new Map;for(let[b,c]of Object.entries(av(a).providers)){let a=Array.isArray(c.models)?c.models:[];d.set(b,new Set(a.flatMap(a=>aw(a)&&"string"==typeof a.id?[a.id]:[])))}let e=new Map([...c].map(([a,b])=>[a,new Set(b.keys())]));for(let a of b)d.get(a.provider)?.has(a.id)||e.get(a.provider)?.add(a.id);return Object.fromEntries([...e].map(([a,b])=>[a,[...b].sort()]))}async function F(){if(await (0,s.NU)(),aH!==(0,s.U6)()&&(aH=(0,s.U6)(),B()),aG&&Date.now()-aG.at<5e3)return aG.value;let a=I().catch(a=>{throw aG=null,a});return aG={at:Date.now(),value:a},a}async function G(){let a=await F(),b=await (0,t.MO)();if(!b?.length)return a;let c=await (0,q.x)(a.models,b,await (0,s.uU)()),d=new Map;for(let a of c)d.set(a.provider,(d.get(a.provider)??0)+1);return{models:c,providers:a.providers.map(a=>({...a,modelCount:d.get(a.id)??0}))}}async function H(){let a=new Map;try{let b=await (0,r.lg)(h().join((0,s.$M)(),"auth.json"));for(let[c,d]of[...Object.entries(b??{}),...Object.entries(b?.providers??{})])!a.has(c)&&(d?.type==="oauth"?a.set(c,"oauth"):d&&"object"==typeof d&&[d.apiKey,d.api_key,d.key].some(a=>"string"==typeof a&&a.trim())&&a.set(c,"api_key"))}catch{}return a}async function I(){let a=await (0,s.uU)(),b=await D(),c=a.getProviders(),d=await H(),e=[],f=[];for(let g of(await Promise.all(c.map(async b=>{let c,d,e=String(b.id??b.name??"");if(!e)return null;let f=null;try{f=a.getProviderAuthStatus(e)}catch{f=null}let g=a.hasConfiguredAuth(e),h=!1;if(f?.configured===!0||g){let b=aI.get(e);if(b&&Date.now()-b.at<6e4)h=b.ready,c=b.source,d=b.error;else{try{let b=await a.checkAuth(e,{signal:AbortSignal.timeout(5e3)});h=void 0!==b,c=b?.source}catch(a){d=a instanceof Error?a.message:String(a)}aI.set(e,{at:Date.now(),ready:h,source:c,error:d})}}return{pid:e,p:b,auth:f,authFastPath:g,authReady:h,resolvedAuthSource:c,authError:d}})))){if(!g)continue;let{pid:c,p:h,auth:i,authFastPath:j,authReady:k,resolvedAuthSource:l,authError:m}=g,n=a.getModels(c),o=[];for(let a of(h.auth?.apiKey&&o.push("api_key"),h.auth?.oauth&&o.push("oauth"),e.push({id:c,name:String(h.name??c),baseUrl:"string"==typeof h.baseUrl?h.baseUrl:void 0,apiKeyLabel:"string"==typeof h.auth?.apiKey?.name?h.auth.apiKey.name:void 0,authTypes:o,apis:function(a){let b=new Map;for(let c of a){let a=String(c.api??"");a&&b.set(a,(b.get(a)??0)+1)}return[...b].sort(([a,b],[c,d])=>d-b||(a<c?-1:+(a>c))).map(([a])=>a)}(n),builtIn:b.has(c),authConfigured:i?.configured===!0,authSource:i?.source,authReady:k,authFastPath:j,resolvedAuthSource:l,authError:m,keyManaged:i?.source==="stored",storedAuthType:i?.source==="stored"?d.get(c):void 0,modelCount:n.length}),n))f.push({provider:c,id:String(a.id),name:String(a.name??a.id),api:String(a.api??""),baseUrl:"string"==typeof a.baseUrl?a.baseUrl:void 0,reasoning:!0===a.reasoning,thinkingLevels:(0,w.getSupportedThinkingLevels)(a),contextWindow:Number(a.contextWindow??0),input:Array.isArray(a.input)?a.input.map(String):["text"],cost:a.cost?{input:a.cost.input,output:a.cost.output}:null})}return f.sort((a,b)=>a.provider.localeCompare(b.provider)||a.id.localeCompare(b.id)),{providers:e,models:f}}async function J(a,b){let c=an(a),d=await ao(c);await ap(c,d,"api_key",b)}async function K(a){at(a);let b=await (0,s.uU)();await b.logout(a),B()}async function L(a){try{let b=await (0,s.uU)(),c=await b.getAuth(a,{signal:AbortSignal.timeout(2e4)}),d=(c?.auth.apiKey??function(a){for(let[b,c]of Object.entries(a??{}))if("authorization"===b.toLowerCase()&&c)return/^Bearer\s+(\S+)/i.exec(c.trim())?.[1]}(c?.auth.headers))?.trim();if(!c||!d)return;let e=(await b.checkAuth(a).catch(()=>void 0))?.type==="oauth",f=e&&"openai-codex"===a?W(d)?.chatgpt_account_id:void 0;return{key:d,oauth:e,..."string"==typeof f&&f.trim()?{accountId:f.trim()}:{},...c.auth.baseUrl?{baseUrl:c.auth.baseUrl}:{}}}catch{return}}function M(a){let b=new URL(a),c=b.pathname.replace(/\/+$/,"");return b.pathname=c.endsWith("/models")?c:`${c}/models`,b.hash="",b}function N(a,b){let c=M(a).href;return b.some(a=>{if(!a)return!1;try{let b=new URL(a);return!b.username&&!b.password&&M(b).href===c}catch{return!1}})}let aJ=new n.BlockList;for(let[a,b]of[["0.0.0.0",8],["10.0.0.0",8],["100.64.0.0",10],["127.0.0.0",8],["169.254.0.0",16],["172.16.0.0",12],["192.0.0.0",24],["192.0.2.0",24],["192.88.99.0",24],["192.168.0.0",16],["198.18.0.0",15],["198.51.100.0",24],["203.0.113.0",24],["224.0.0.0",4],["240.0.0.0",4]])aJ.addSubnet(a,b,"ipv4");let aK=new n.BlockList;aK.addSubnet("2000::",3,"ipv6");let aL=new n.BlockList;for(let[a,b]of[["2001::",23],["2001:db8::",32],["2002::",16]])aL.addSubnet(a,b,"ipv6");function O(a){let b=(0,n.isIP)(a);return 4===b?!aJ.check(a,"ipv4"):6===b&&aK.check(a,"ipv6")&&!aL.check(a,"ipv6")}async function P(a,b,c,d=!1){let e=d||"1"===process.env.PI_WEB_ALLOW_PRIVATE_MODEL_DISCOVERY,f=(0,n.isIP)(a.hostname.replace(/^\[|\]$/g,""));if(!e&&f&&!O(a.hostname.replace(/^\[|\]$/g,"")))throw Error("模型目录地址指向本机或私有网络;勾选「允许访问本机/私有网络地址」后重试,或设置 PI_WEB_ALLOW_PRIVATE_MODEL_DISCOVERY=1");return new Promise((d,f)=>{let g=("https:"===a.protocol?m.request:l.request)(a,{headers:b,signal:c,agent:!1,lookup:e?void 0:(a,b,c)=>{k().lookup(a,{all:!0}).then(a=>{let d=a.find(({address:a})=>O(a));d?b.all?c(null,[d]):c(null,d.address,d.family):c(Error("模型目录地址指向本机或私有网络;勾选「允许访问本机/私有网络地址」后重试,或设置 PI_WEB_ALLOW_PRIVATE_MODEL_DISCOVERY=1"),"",0)},a=>c(a,"",0))}},a=>{let b=a.statusCode??0;if(b>=300&&b<400){a.destroy(),f(Error("模型目录不允许重定向"));return}let c=[],e=0;if(Number(a.headers["content-length"])>4194304){a.destroy(),f(Error("模型目录响应过大(上限 4 MiB)"));return}a.on("data",b=>{if((e+=b.length)>4194304){a.destroy(),f(Error("模型目录响应过大(上限 4 MiB)"));return}c.push(b)}),a.on("error",f),a.on("close",()=>{a.complete||f(Error("模型目录连接提前关闭"))}),a.on("end",()=>d(new Response(204===b||205===b||304===b?null:Buffer.concat(c,e),{status:b})))});g.on("error",f),g.end()})}async function Q(a){if(Number(a.headers.get("content-length"))>4194304)throw Error("模型目录响应过大(上限 4 MiB)");if(!a.body)throw Error("模型目录响应为空");let b=a.body.getReader(),c=[],d=0;try{for(;;){let{done:a,value:e}=await b.read();if(a)break;if((d+=e.byteLength)>4194304)throw Error("模型目录响应过大(上限 4 MiB)");c.push(Buffer.from(e))}}finally{await b.cancel().catch(()=>void 0),b.releaseLock()}return JSON.parse(Buffer.concat(c,d).toString("utf8"))}async function R(a){let b=a.baseUrl.trim();if(!b)throw Error("缺少 API 地址");let c=new URL(b);if("http:"!==c.protocol&&"https:"!==c.protocol)throw Error("API 地址必须使用 http 或 https");if(c.username||c.password)throw Error("API 地址不能包含用户名或密码");let d=M(c),e={Accept:"application/json"},f=a.apiKey?.trim()?{key:a.apiKey.trim(),oauth:!1}:a.providerId?await L(a.providerId):void 0;if(f&&!a.apiKey?.trim()){let b=await (0,s.uU)(),c=b.getProviders().find(b=>b.id===a.providerId);if(!N(d,[c?.baseUrl,f.baseUrl,...c?b.getModels(c.id).map(a=>a.baseUrl):[]]))throw Error("已配置的凭证只能用于该 Provider 已配置的 API 地址;新地址请显式填写密钥")}if(a.headers&&Object.keys(a.headers).length){if(!a.apiKey?.trim()){let b=await (0,s.uU)(),c=b.getProviders().find(b=>b.id===a.providerId);if(!N(d,[c?.baseUrl,f?.baseUrl,...c?b.getModels(c.id).map(a=>a.baseUrl):[]]))throw Error("自定义请求头只能用于该 Provider 已配置的 API 地址;新地址请显式填写密钥")}for(let[b,c]of Object.entries(a.headers))"string"==typeof c&&c&&(e[b]=c)}let g=f?.key;if(!a.apiKey?.trim()&&f?.oauth&&"openai-codex"===a.providerId)throw Error("OpenAI Codex 的模型目录由 SDK 内置,无需获取;如需自定义请手动添加模型 ID");g&&("anthropic-messages"===a.api?(e["x-api-key"]=g,f?.oauth&&(e["anthropic-beta"]="oauth-2025-04-20")):e.Authorization=`Bearer ${g}`),"anthropic-messages"===a.api&&(e["anthropic-version"]="2023-06-01");let h=new AbortController,i=setTimeout(()=>h.abort(),15e3);try{let b=await P(d,e,h.signal,!0===a.allowPrivate);if(401===b.status)throw Error(g?"模型目录请求失败(HTTP 401):密钥或令牌无效":"模型目录请求失败(HTTP 401):请先填写 API 密钥");if(403===b.status)throw Error(f?.oauth?"模型目录请求失败(HTTP 403):该 OAuth 令牌无权访问模型目录(部分提供商不支持),请手动填写模型 ID":"模型目录请求失败(HTTP 403):密钥无权访问模型目录");if(!b.ok)throw Error(`模型目录请求失败(HTTP ${b.status})`);let c=await Q(b),i=(Array.isArray(c)?c:c&&"object"==typeof c?Array.isArray(c.data)?c.data:Array.isArray(c.models)?c.models:[]:[]).map(a=>{let b,c,d,e,f,g,h,i;if("string"==typeof a)return{id:a};if(!a||"object"!=typeof a)return null;let j="string"==typeof a.id?a.id.trim():"";if(!j)return null;let k="string"==typeof a.name&&a.name.trim()?a.name.trim():void 0;return{id:j,...k?{name:k}:{},...(b=aw(a.architecture)?a.architecture:void 0,d=Array.isArray(c=a.modalities??b?.input_modalities??a.input_modalities)?c:aw(c)&&Array.isArray(c.input)?c.input:void 0,e=aw(a.top_provider)?a.top_provider:void 0,f=A(a.context_window)??A(a.context_length)??A(a.max_input_tokens)??A(b?.context_length),g=A(a.max_output_tokens)??A(a.max_completion_tokens)??A(e?.max_completion_tokens),h=d?d.some(a=>"string"==typeof a&&"image"===a.toLowerCase()):void 0,i=function(a){let b=a.reasoning??a.supports_reasoning;if("boolean"==typeof b)return b;let c=aw(a.capabilities)?a.capabilities:void 0,d=c?.reasoning;if("boolean"==typeof d)return d;let e=aw(c?.thinking)?c.thinking:void 0;return"boolean"==typeof e?.supported?e.supported:!!(Array.isArray(a.supported_parameters)&&a.supported_parameters.some(a=>"string"==typeof a&&/^(include_)?reasoning/i.test(a.trim())))||void 0}(a),{...void 0===f?{}:{contextWindow:f},...void 0===g?{}:{maxTokens:g},...void 0===h?{}:{vision:h},...void 0===i?{}:{reasoning:i}})}}).filter(a=>!!a).filter((a,b,c)=>c.findIndex(b=>b.id===a.id)===b).slice(0,500);if(!i.length)throw Error("响应中没有可识别的模型 ID");return i}catch(a){if(a instanceof Error&&"AbortError"===a.name)throw Error("模型目录请求超时");if(a&&"object"==typeof a&&"code"in a&&["ECONNREFUSED","ECONNRESET","ENOTFOUND","EHOSTUNREACH","ENETUNREACH","ETIMEDOUT"].includes(String(a.code))||a instanceof TypeError&&a.message.toLowerCase().includes("fetch"))throw Error("无法连接模型目录,请检查 API 地址和网络");throw a}finally{clearTimeout(i)}}let aM=new Map;async function S(a,b=!1){let c=function(a){switch(a){case"xai":return ah;case"openai-codex":return X;case"anthropic":return Y;case"deepseek":return $;case"openrouter":return _;case"moonshotai":return()=>aa("moonshotai");case"moonshotai-cn":return()=>aa("moonshotai-cn");case"kimi-coding":return ad;case"github-copilot":return ae;case"vercel-ai-gateway":return af;case"opencode-go":return ag;default:return null}}(a);if(!c)return null;let d=aM.get(a);if(!b&&d&&Date.now()-d.at<3e5)return d.value;let e=await c();return aM.set(a,{at:Date.now(),value:e}),e}async function T(a,b,c=1e4){let d=new AbortController,e=setTimeout(()=>d.abort(),c);try{let c=await fetch(a,{...b,signal:d.signal});if(!c.ok)return void c.body?.cancel().catch(()=>{});return await c.json()}catch{return}finally{clearTimeout(e)}}function U(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:void 0}function V(a){if("string"!=typeof a)return;let b=new Date(a);return Number.isFinite(b.getTime())?b.toISOString():void 0}function W(a){try{let b=JSON.parse(Buffer.from(a.split(".")[1]??"","base64").toString("utf8"));return U(U(b)?.["https://api.openai.com/auth"])}catch{return}}async function X(){var a;let b,c=await L("openai-codex");if(!c)return null;let d=(a=c.key,"string"==typeof(b=W(a)?.chatgpt_plan_type)&&b.trim()?b.trim():void 0),e=await T("https://chatgpt.com/backend-api/wham/usage",{headers:{Authorization:`Bearer ${c.key}`,...c.accountId?{"chatgpt-account-id":c.accountId}:{}}});if(void 0===e)return void 0===d?null:{kind:"quota",planType:d,windows:[],probedAt:Date.now()};let f=function(a){let b=U(a);if(!b)return{windows:[]};let c=U(b.rate_limit),d=[c?.primary_window,c?.secondary_window].map(U).flatMap(a=>{let b;if(!a||"number"!=typeof a.limit_window_seconds||a.limit_window_seconds<=0||"number"!=typeof a.used_percent||!Number.isFinite(a.used_percent))return[];if(Number.isSafeInteger(a.reset_at)&&a.reset_at>0){let c=new Date(1e3*a.reset_at);Number.isFinite(c.getTime())&&(b=c.toISOString())}return[{limitWindowSeconds:a.limit_window_seconds,remainingPercent:Math.min(100,Math.max(0,Math.round(100-a.used_percent))),...void 0===b?{}:{resetAt:b}}]}).sort(ac),e=b.plan_type;return{..."string"==typeof e&&e.trim()?{planType:e.trim()}:{},windows:d}}(e),g=f.planType??d;return{kind:"quota",...f,...void 0===g?{}:{planType:g},probedAt:Date.now()}}async function Y(){let a=await L("anthropic");if(!a?.oauth)return null;let b=await T("https://api.anthropic.com/api/oauth/usage",{headers:{Authorization:`Bearer ${a.key}`,"anthropic-beta":"oauth-2025-04-20"}});if(void 0===b)return null;let c=function(a){let b=U(a);if(!b)return{windows:[]};let c=(a,c,d)=>{let e=U(b[a]);if(!e||"number"!=typeof e.utilization||!Number.isFinite(e.utilization))return[];let f=V(e.resets_at);return[{limitWindowSeconds:c,remainingPercent:Math.min(100,Math.max(0,Math.round(100-e.utilization))),...void 0===f?{}:{resetAt:f},...void 0===d?{}:{variant:d}}]};return{windows:[...c("five_hour",18e3),...c("seven_day",y.fv),...c("seven_day_opus",y.fv,"opus")].sort(ac)}}(b);return 0===c.windows.length?null:{kind:"quota",...c,probedAt:Date.now()}}function Z(a,b){return"number"==typeof a&&Number.isFinite(a)?{amount:a.toFixed(2),...void 0===b?{}:{currency:b}}:"string"==typeof a&&a.trim()&&Number.isFinite(Number(a))?{amount:Number(a).toFixed(2),...void 0===b?{}:{currency:b}}:void 0}let aN={moonshotai:{base:"https://api.moonshot.ai",currency:"USD"},"moonshotai-cn":{base:"https://api.moonshot.cn",currency:"CNY"}};async function $(){let a=await L("deepseek");if(!a)return null;let b=await T("https://api.deepseek.com/user/balance",{headers:{Authorization:`Bearer ${a.key}`}});return void 0===b?null:{kind:"balance",...function(a){let b=U(a),c=(Array.isArray(b?.balance_infos)?b.balance_infos.map(U).filter(Boolean):[])[0];if(!c)return{details:[]};let d="string"==typeof c.currency&&c.currency.trim()?c.currency.trim():void 0,e=[],f=Z(c.granted_balance,d);f&&e.push({key:"granted",...f});let g=Z(c.topped_up_balance,d);g&&e.push({key:"toppedUp",...g});let h=Z(c.total_balance,d);return{...void 0===h?{}:{primary:h},details:e}}(b),probedAt:Date.now()}}async function _(){let a=await L("openrouter");if(!a)return null;let b=await T("https://openrouter.ai/api/v1/key",{headers:{Authorization:`Bearer ${a.key}`}});return void 0===b?null:{kind:"balance",...function(a){let b=U(U(a)?.data);if(!b)return{details:[]};let c=[],d=Z(b.limit,"USD");d&&c.push({key:"limit",...d});let e=Z(b.usage,"USD");e&&c.push({key:"used",...e});let f=Z(b.limit_remaining,"USD");return f?{primary:f,details:c}:e?{primaryKey:"used",primary:e,details:c}:{details:c}}(b),probedAt:Date.now()}}async function aa(a){let b=await L(a);if(!b)return null;let c=aN[a],d=await T(`${c.base}/v1/users/me/balance`,{headers:{Authorization:`Bearer ${b.key}`}});return void 0===d?null:{kind:"balance",...function(a,b){let c=U(a),d=U(c?.data);if(!d||c?.status===!1)return{details:[]};let e=[],f=Z(d.voucher_balance,b);f&&e.push({key:"voucher",...f});let g=Z(d.cash_balance,b);g&&e.push({key:"cash",...g});let h=Z(d.available_balance,b);return{...void 0===h?{}:{primary:h},details:e}}(d,c.currency),probedAt:Date.now()}}function ab(a){return Math.min(100,Math.max(0,Math.round(100-a)))}function ac(a,b){return(a.limitWindowSeconds??1/0)-(b.limitWindowSeconds??1/0)}async function ad(){let a=await L("kimi-coding");if(!a)return null;let b=await T("https://api.kimi.com/coding/v1/usages",{headers:{Authorization:`Bearer ${a.key}`,Accept:"application/json"}});if(void 0===b)return null;let c=function(a){let b=U(U(a)?.usages);if(!b)return{windows:[]};let c=(a,c,d)=>{let e=U(b[a]);if(!e||"number"!=typeof e.used_ratio||!Number.isFinite(e.used_ratio))return[];let f=V(e.reset_time);return[{limitWindowSeconds:c,remainingPercent:ab(100*e.used_ratio),...void 0===f?{}:{resetAt:f},...void 0===d?{}:{variant:d}}]};return{windows:[...c("limit_5h",18e3),...c("limit_7d",y.fv),...c("limit_month_total",y.lG),...c("limit_month_code",y.lG,"code")].sort(ac)}}(b);return 0===c.windows.length?null:{kind:"quota",...c,probedAt:Date.now()}}async function ae(){let a=await L("github-copilot");if(!a?.oauth)return null;let b=await T("https://api.github.com/copilot_internal/user",{headers:{Authorization:`Bearer ${a.key}`,Accept:"application/json"}});if(void 0===b)return null;let c=function(a){let b=U(a);if(!b)return{windows:[]};let c=U(b.quota_snapshots),d=b.copilot_plan,e=V(b.quota_reset_date),f=[["premium_interactions","premium"],["chat","chat"],["completions","completions"]].flatMap(([a,b])=>{let d=U(c?.[a]);return d&&!1!==d.has_quota&&!0!==d.unlimited&&"number"==typeof d.percent_remaining&&Number.isFinite(d.percent_remaining)?[{remainingPercent:Math.min(100,Math.max(0,Math.round(d.percent_remaining))),...void 0===e?{}:{resetAt:e},name:b}]:[]});return{..."string"==typeof d&&d.trim()?{planType:d.trim()}:{},windows:f}}(b);return 0===c.windows.length&&void 0===c.planType?null:{kind:"quota",...c,probedAt:Date.now()}}async function af(){let a=await L("vercel-ai-gateway");if(!a)return null;let b=await T("https://ai-gateway.vercel.sh/v1/credits",{headers:{Authorization:`Bearer ${a.key}`}});return void 0===b?null:{kind:"balance",...function(a){let b=U(a);if(!b)return{details:[]};let c=[],d=Z(b.total_used,"USD");d&&c.push({key:"used",...d});let e=Z(b.balance,"USD");return{...void 0===e?{}:{primary:e},details:c}}(b),probedAt:Date.now()}}async function ag(){let a=await L("opencode-go");if(!a)return null;let b=await T("https://opencode.ai/zen/go/v1/usage",{headers:{Authorization:`Bearer ${a.key}`,Accept:"application/json"}});if(void 0===b)return null;let c=function(a){let b=U(U(a)?.usage);if(!b)return{windows:[]};let c=(a,c)=>{let d=U(b[a]);if(!d||"number"!=typeof d.percent||!Number.isFinite(d.percent))return[];let e=V(d.resetsAt);return[{...void 0===c?{name:a}:{limitWindowSeconds:c},remainingPercent:ab(d.percent),...void 0===e?{}:{resetAt:e}}]};return{windows:[...c("rolling"),...c("weekly",y.fv),...c("monthly",y.lG)].sort(ac)}}(b);return 0===c.windows.length?null:{kind:"quota",...c,probedAt:Date.now()}}async function ah(){let a=await L("xai");if(!a)return null;let b=a.key,c="";try{let a=(await (0,s.uU)()).getModels("xai").map(a=>String(a.id)).filter(a=>!a.includes("imagine")&&!a.includes("multi-agent"));c=["grok-4.6","grok-4.5","grok-4.3"].find(b=>a.some(a=>a===b||a.startsWith(`${b}-`)))??a[0]??""}catch{return null}if(!c)return null;let d=new AbortController,e=setTimeout(()=>d.abort(),2e4);try{let a=await fetch("https://api.x.ai/v1/chat/completions",{method:"POST",headers:{Authorization:`Bearer ${b}`,"Content-Type":"application/json"},body:JSON.stringify({model:c,messages:[{role:"user",content:"ping"}],max_tokens:1}),signal:d.signal});a.body?.cancel().catch(()=>{});let e=b=>Number(a.headers.get(b)??0/0),f=e("x-ratelimit-limit-requests"),g=e("x-ratelimit-remaining-requests"),h=e("x-ratelimit-limit-tokens"),i=e("x-ratelimit-remaining-tokens");if(![f,g,h,i].every(Number.isFinite))return null;return{kind:"xai",model:c,requestLimit:f,requestRemaining:g,tokenLimit:h,tokenRemaining:i,probedAt:Date.now()}}catch{return null}finally{clearTimeout(e)}}let aO=new Map;function ai(){let a=Date.now();for(let[b,c]of aO)c.done&&void 0!==c.finishedAt&&a-c.finishedAt>6e5&&aO.delete(b)}function aj(a){return aO.get(a.providerId)===a&&!a.done&&!a.controller.signal.aborted}function ak(a){if(a.controller.signal.throwIfAborted(),!aj(a))throw Error("canceled")}function al(a,b){return aO.get(a.providerId)===a&&!a.done&&(a.done=!0,void 0!==b&&(a.error=b instanceof Error?b.message:String(b)),a.finishedAt=Date.now(),a.timeout&&clearTimeout(a.timeout),a.timeout=null,a.rejecter?.(b instanceof Error?b:Error(a.error??"login finished")),a.prompt=null,a.resolver=null,a.rejecter=null,!0)}function am(a,b){al(a,b),a.controller.abort(b)}function an(a){ai();let b=aO.get(a);b&&!b.done&&am(b,Error("canceled"));let c={providerId:a,controller:new AbortController,timeout:null,prompt:null,resolver:null,rejecter:null,notifyLog:[],done:!1};return aO.set(a,c),c.timeout=setTimeout(()=>am(c,Error("login timed out")),6e5),c.timeout.unref?.(),c}async function ao(a){try{let b=await (0,s.uU)();return ak(a),b}catch(b){throw al(a,b),b}}async function ap(a,b,c,d){let e=!1,f={signal:a.controller.signal,prompt:async b=>{let c;return(ak(a),b.signal?.throwIfAborted(),void 0===d||e||"select"===b.type)?(ak(a),(c=b.signal?AbortSignal.any([a.controller.signal,b.signal]):a.controller.signal).throwIfAborted(),a.rejecter?.(Error("prompt replaced")),new Promise((d,e)=>{let f=!1,g=()=>{c.removeEventListener("abort",j),a.resolver===h&&(a.prompt=null,a.resolver=null,a.rejecter=null)},h=a=>{f||(f=!0,g(),d(a))},i=a=>{f||(f=!0,g(),e(a))},j=()=>i(c.reason instanceof Error?c.reason:Error("canceled"));a.prompt=b,a.resolver=h,a.rejecter=i,c.addEventListener("abort",j,{once:!0}),c.aborted&&j()})):(e=!0,d)},notify:b=>{aj(a)&&(a.notifyLog.push("string"==typeof b?b:JSON.stringify(b)),a.notifyLog.length>20&&a.notifyLog.shift())}};try{ak(a),await b.login(a.providerId,c,f),ak(a),al(a)&&B()}catch(b){throw al(a,b),b}}async function aq(a){let b=an(a),c=await ao(b);ap(b,c,"oauth").catch(()=>void 0)}function ar(a){ai();let b=aO.get(a);return b?{prompt:b.prompt?{type:b.prompt.type,message:b.prompt.message,placeholder:"placeholder"in b.prompt?b.prompt.placeholder:void 0,options:"select"===b.prompt.type?b.prompt.options.map(a=>({label:a.label,value:a.id})):void 0}:null,notifyLog:[...b.notifyLog],done:b.done,error:b.error}:{prompt:null,notifyLog:[],done:!0}}function as(a,b){let c=aO.get(a);return!!c&&!!aj(c)&&!!c.resolver&&(c.resolver(b),!0)}function at(a){ai();let b=aO.get(a);return!!b&&(b.done||am(b,Error("canceled")),!0)}function au(){return h().join((0,s.$M)(),"models.json")}class aP extends Error{}class aQ extends Error{constructor(){super("models.json 已被修改,请重新加载后再保存")}}function av(a){let b=[],c=(0,p.cZ)(a.replace(/^\uFEFF/,""),b,{allowTrailingComma:!0,allowEmptyContent:!1});if(b.length||!c){let a=b[0];throw new aP(`models.json JSONC 无效${a?` (${(0,p._n)(a.error)}, offset ${a.offset})`:""}`)}let d=(0,p.yQ)(c);if(!aw(d)||!aw(d.providers))throw new aP('models.json 顶层必须是 { "providers": { ... } }');for(let[a,b]of Object.entries(d.providers))if(!aw(b))throw new aP(`provider "${a}" 必须是对象`);return d}function aw(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)}async function ax(a){try{let b=await f().readFile(a,"utf8");return{content:b,revision:(0,i.createHash)("sha256").update(b).digest("hex")}}catch(a){if("ENOENT"!==a.code)throw a;return{content:void 0,revision:"missing"}}}async function ay(){let a=await ax(au());return{...function(a){let b=av(a),c=[];for(let[a,d]of Object.entries(b.providers))Object.prototype.hasOwnProperty.call(d,"apiKey")&&(delete d.apiKey,c.push(a));return{content:JSON.stringify(b,null,2),secretProviderIds:c}}(a.content??'{"providers":{}}'),exists:void 0!==a.content,revision:a.revision}}async function az(a){let b=(await o.ModelRuntime.create({modelsPath:a,credentials:new w.InMemoryCredentialStore,modelsStore:new w.InMemoryModelsStore,allowModelNetwork:!1,refreshOnCreate:!1})).getError();if(b)throw new aP(b)}async function aA(a,b,c,d){let e=av(b.content??'{"providers":{}}'),g=`${a}.${process.pid}.${(0,i.randomUUID)()}.tmp`;try{void 0!==b.content&&(await f().writeFile(g,JSON.stringify(e,null,2),{encoding:"utf8",flag:"wx",mode:384}),await az(g)),d?.(e);for(let[a,b]of Object.entries(c.providers)){if(!a.trim())throw new aP("provider ID 必须是非空字符串");for(let c of[...Array.isArray(b.models)?b.models:[],...aw(b.modelOverrides)?Object.values(b.modelOverrides):[]])if(aw(c)){for(let b of["contextWindow","maxTokens"])if(void 0!==c[b]&&("number"!=typeof c[b]||!Number.isSafeInteger(c[b])||c[b]<=0))throw new aP(`provider "${a}" 的 ${b} 必须是正整数`)}}if(await f().writeFile(g,JSON.stringify(c,null,2),{encoding:"utf8",flag:void 0===b.content?"wx":"w",mode:384}),await az(g),(await ax(a)).revision!==b.revision)throw new aQ;await f().rename(g,a)}finally{await f().rm(g,{force:!0}).catch(()=>void 0)}}async function aB(a,b){let c=au();await (0,x.Ax)(c,()=>(0,x._i)(c,async()=>{let d=await ax(c);if(void 0!==b&&b!==d.revision)throw new aQ;let e=av(a);await aA(c,d,e,a=>{for(let[b,c]of Object.entries(e.providers))if(null===c.apiKey)delete c.apiKey;else if(void 0===c.apiKey){let d=a.providers[b];d&&Object.prototype.hasOwnProperty.call(d,"apiKey")&&(c.apiKey=d.apiKey)}for(let a of Object.values(e.providers))void 0===a.apiKey&&"string"==typeof a.baseUrl&&/^https?:\/\/(localhost|127\.0\.0\.1|\[::1\]|192\.168\.|10\.|172\.(1[6-9]|2\d|3[01])\.)/i.test(a.baseUrl.trim())&&(a.apiKey="unused")})})),await (0,s.x9)(),B(),await (0,u.Sj)()}async function aC(a,b){let c=(await (0,s.uU)()).getModel(a,b);if(!c)throw new aP(`找不到模型:${a}/${b}`);let d=(await D()).get(a)?.get(b);return{contextWindow:Number(c.contextWindow)||0,builtin:d||null}}async function aD(a,b){return await (0,s.NU)(),aC(a,b)}async function aE(a,b,c){if(!Number.isSafeInteger(c)||c<=0)throw new aP("contextWindow 必须是正整数");await aC(a,b);let d=au();return await (0,x.Ax)(d,()=>(0,x._i)(d,async()=>{let e=await ax(d),f=av(e.content??'{"providers":{}}'),g=(0,v.Ax)(f.providers,a,b,c);await aA(d,e,{...f,providers:g})})),await (0,s.x9)(),B(),(0,u.oW)(a,b),aC(a,b)}d()}catch(a){d(a)}})},71553:a=>{a.exports=require("node:dns/promises")},71808:(a,b,c)=>{var d,e,f,g,h,i,j,k,l;function m(a){return 32===a||9===a}function n(a){return 10===a||13===a}function o(a){return a>=48&&a<=57}c.d(b,{yQ:()=>q,cZ:()=>p,_n:()=>r}),(i=d||(d={}))[i.lineFeed=10]="lineFeed",i[i.carriageReturn=13]="carriageReturn",i[i.space=32]="space",i[i._0=48]="_0",i[i._1=49]="_1",i[i._2=50]="_2",i[i._3=51]="_3",i[i._4=52]="_4",i[i._5=53]="_5",i[i._6=54]="_6",i[i._7=55]="_7",i[i._8=56]="_8",i[i._9=57]="_9",i[i.a=97]="a",i[i.b=98]="b",i[i.c=99]="c",i[i.d=100]="d",i[i.e=101]="e",i[i.f=102]="f",i[i.g=103]="g",i[i.h=104]="h",i[i.i=105]="i",i[i.j=106]="j",i[i.k=107]="k",i[i.l=108]="l",i[i.m=109]="m",i[i.n=110]="n",i[i.o=111]="o",i[i.p=112]="p",i[i.q=113]="q",i[i.r=114]="r",i[i.s=115]="s",i[i.t=116]="t",i[i.u=117]="u",i[i.v=118]="v",i[i.w=119]="w",i[i.x=120]="x",i[i.y=121]="y",i[i.z=122]="z",i[i.A=65]="A",i[i.B=66]="B",i[i.C=67]="C",i[i.D=68]="D",i[i.E=69]="E",i[i.F=70]="F",i[i.G=71]="G",i[i.H=72]="H",i[i.I=73]="I",i[i.J=74]="J",i[i.K=75]="K",i[i.L=76]="L",i[i.M=77]="M",i[i.N=78]="N",i[i.O=79]="O",i[i.P=80]="P",i[i.Q=81]="Q",i[i.R=82]="R",i[i.S=83]="S",i[i.T=84]="T",i[i.U=85]="U",i[i.V=86]="V",i[i.W=87]="W",i[i.X=88]="X",i[i.Y=89]="Y",i[i.Z=90]="Z",i[i.asterisk=42]="asterisk",i[i.backslash=92]="backslash",i[i.closeBrace=125]="closeBrace",i[i.closeBracket=93]="closeBracket",i[i.colon=58]="colon",i[i.comma=44]="comma",i[i.dot=46]="dot",i[i.doubleQuote=34]="doubleQuote",i[i.minus=45]="minus",i[i.openBrace=123]="openBrace",i[i.openBracket=91]="openBracket",i[i.plus=43]="plus",i[i.slash=47]="slash",i[i.formFeed=12]="formFeed",i[i.tab=9]="tab",Array(20).fill(0).map((a,b)=>" ".repeat(b)),Array(200).fill(0).map((a,b)=>"\n"+" ".repeat(b)),Array(200).fill(0).map((a,b)=>"\r"+" ".repeat(b)),Array(200).fill(0).map((a,b)=>"\r\n"+" ".repeat(b)),Array(200).fill(0).map((a,b)=>"\n"+" ".repeat(b)),Array(200).fill(0).map((a,b)=>"\r"+" ".repeat(b)),Array(200).fill(0).map((a,b)=>"\r\n"+" ".repeat(b)),(e||(e={})).DEFAULT={allowTrailingComma:!1},(j=f||(f={}))[j.None=0]="None",j[j.UnexpectedEndOfComment=1]="UnexpectedEndOfComment",j[j.UnexpectedEndOfString=2]="UnexpectedEndOfString",j[j.UnexpectedEndOfNumber=3]="UnexpectedEndOfNumber",j[j.InvalidUnicode=4]="InvalidUnicode",j[j.InvalidEscapeCharacter=5]="InvalidEscapeCharacter",j[j.InvalidCharacter=6]="InvalidCharacter",(k=g||(g={}))[k.OpenBraceToken=1]="OpenBraceToken",k[k.CloseBraceToken=2]="CloseBraceToken",k[k.OpenBracketToken=3]="OpenBracketToken",k[k.CloseBracketToken=4]="CloseBracketToken",k[k.CommaToken=5]="CommaToken",k[k.ColonToken=6]="ColonToken",k[k.NullKeyword=7]="NullKeyword",k[k.TrueKeyword=8]="TrueKeyword",k[k.FalseKeyword=9]="FalseKeyword",k[k.StringLiteral=10]="StringLiteral",k[k.NumericLiteral=11]="NumericLiteral",k[k.LineCommentTrivia=12]="LineCommentTrivia",k[k.BlockCommentTrivia=13]="BlockCommentTrivia",k[k.LineBreakTrivia=14]="LineBreakTrivia",k[k.Trivia=15]="Trivia",k[k.Unknown=16]="Unknown",k[k.EOF=17]="EOF";let p=function(a,b=[],c=e.DEFAULT){let d={type:"array",offset:-1,length:-1,children:[],parent:void 0};function f(a){"property"===d.type&&(d.length=a-d.offset,d=d.parent)}function g(a){return d.children.push(a),a}!function(a,b,c=e.DEFAULT){var d;let f=function(a,b=!1){let c=a.length,d=0,e="",f=0,g=16,h=0,i=0,j=0,k=0,l=0;function p(){if(e="",l=0,f=d,i=h,k=j,d>=c)return f=c,g=17;let b=a.charCodeAt(d);if(m(b)){do d++,e+=String.fromCharCode(b),b=a.charCodeAt(d);while(m(b));return g=15}if(n(b))return d++,e+=String.fromCharCode(b),13===b&&10===a.charCodeAt(d)&&(d++,e+="\n"),h++,j=d,g=14;switch(b){case 123:return d++,g=1;case 125:return d++,g=2;case 91:return d++,g=3;case 93:return d++,g=4;case 58:return d++,g=6;case 44:return d++,g=5;case 34:return d++,e=function(){let b="",e=d;for(;;){if(d>=c){b+=a.substring(e,d),l=2;break}let f=a.charCodeAt(d);if(34===f){b+=a.substring(e,d),d++;break}if(92===f){if(b+=a.substring(e,d),++d>=c){l=2;break}switch(a.charCodeAt(d++)){case 34:b+='"';break;case 92:b+="\\";break;case 47:b+="/";break;case 98:b+="\b";break;case 102:b+="\f";break;case 110:b+="\n";break;case 114:b+="\r";break;case 116:b+=" ";break;case 117:let f=function(b){let c=0,e=0;for(;c<4||!b;){let b=a.charCodeAt(d);if(b>=48&&b<=57)e=16*e+b-48;else if(b>=65&&b<=70)e=16*e+b-65+10;else if(b>=97&&b<=102)e=16*e+b-97+10;else break;d++,c++}return c<4&&(e=-1),e}(!0);f>=0?b+=String.fromCharCode(f):l=4;break;default:l=5}e=d;continue}if(f>=0&&f<=31)if(n(f)){b+=a.substring(e,d),l=2;break}else l=6;d++}return b}(),g=10;case 47:let p=d-1;if(47===a.charCodeAt(d+1)){for(d+=2;d<c&&!n(a.charCodeAt(d));)d++;return e=a.substring(p,d),g=12}if(42===a.charCodeAt(d+1)){d+=2;let b=c-1,f=!1;for(;d<b;){let b=a.charCodeAt(d);if(42===b&&47===a.charCodeAt(d+1)){d+=2,f=!0;break}d++,n(b)&&(13===b&&10===a.charCodeAt(d)&&d++,h++,j=d)}return f||(d++,l=1),e=a.substring(p,d),g=13}return e+=String.fromCharCode(b),d++,g=16;case 45:if(e+=String.fromCharCode(b),++d===c||!o(a.charCodeAt(d)))return g=16;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return e+=function(){let b=d;if(48===a.charCodeAt(d))d++;else for(d++;d<a.length&&o(a.charCodeAt(d));)d++;if(d<a.length&&46===a.charCodeAt(d)){if(!(++d<a.length&&o(a.charCodeAt(d))))return l=3,a.substring(b,d);for(d++;d<a.length&&o(a.charCodeAt(d));)d++}let c=d;if(d<a.length&&(69===a.charCodeAt(d)||101===a.charCodeAt(d)))if((++d<a.length&&43===a.charCodeAt(d)||45===a.charCodeAt(d))&&d++,d<a.length&&o(a.charCodeAt(d))){for(d++;d<a.length&&o(a.charCodeAt(d));)d++;c=d}else l=3;return a.substring(b,c)}(),g=11;default:for(;d<c&&function(a){if(m(a)||n(a))return!1;switch(a){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return!1}return!0}(b);)d++,b=a.charCodeAt(d);if(f!==d){switch(e=a.substring(f,d)){case"true":return g=8;case"false":return g=9;case"null":return g=7}return g=16}return e+=String.fromCharCode(b),d++,g=16}}return{setPosition:function(a){d=a,e="",f=0,g=16,l=0},getPosition:()=>d,scan:b?function(){let a;do a=p();while(a>=12&&a<=15);return a}:p,getToken:()=>g,getTokenValue:()=>e,getTokenOffset:()=>f,getTokenLength:()=>d-f,getTokenStartLine:()=>i,getTokenStartCharacter:()=>f-k,getTokenError:()=>l}}(a,!1),g=[],h=0;function i(a){return a?b=>0===h&&a(b,f.getTokenOffset(),f.getTokenLength(),f.getTokenStartLine(),f.getTokenStartCharacter()):()=>!0}function j(a){return a?b=>0===h&&a(b,f.getTokenOffset(),f.getTokenLength(),f.getTokenStartLine(),f.getTokenStartCharacter(),()=>g.slice()):()=>!0}function k(a){return a?()=>{h>0?h++:!1===a(f.getTokenOffset(),f.getTokenLength(),f.getTokenStartLine(),f.getTokenStartCharacter(),()=>g.slice())&&(h=1)}:()=>!0}function l(a){return a?()=>{h>0&&h--,0===h&&a(f.getTokenOffset(),f.getTokenLength(),f.getTokenStartLine(),f.getTokenStartCharacter())}:()=>!0}let p=k(b.onObjectBegin),q=j(b.onObjectProperty),r=l(b.onObjectEnd),s=k(b.onArrayBegin),t=l(b.onArrayEnd),u=j(b.onLiteralValue),v=i(b.onSeparator),w=(d=b.onComment)?()=>0===h&&d(f.getTokenOffset(),f.getTokenLength(),f.getTokenStartLine(),f.getTokenStartCharacter()):()=>!0,x=i(b.onError),y=c&&c.disallowComments,z=c&&c.allowTrailingComma;function A(){for(;;){let a=f.scan();switch(f.getTokenError()){case 4:B(14);break;case 5:B(15);break;case 3:B(13);break;case 1:y||B(11);break;case 2:B(12);break;case 6:B(16)}switch(a){case 12:case 13:y?B(10):w();break;case 16:B(1);break;case 15:case 14:break;default:return a}}}function B(a,b=[],c=[]){if(x(a),b.length+c.length>0){let a=f.getToken();for(;17!==a;){if(-1!==b.indexOf(a)){A();break}if(-1!==c.indexOf(a))break;a=A()}}}function C(a){let b=f.getTokenValue();return a?u(b):(q(b),g.push(b)),A(),!0}if(A(),17===f.getToken())return c.allowEmptyContent||B(4,[],[]);!function a(){switch(f.getToken()){case 3:s(),A();let b=!0,c=!1;for(;4!==f.getToken()&&17!==f.getToken();){if(5===f.getToken()){if(c||B(4,[],[]),v(","),A(),4===f.getToken()&&z)break}else c&&B(6,[],[]);b?(g.push(0),b=!1):g[g.length-1]++,a()||B(4,[],[4,5]),c=!0}return t(),b||g.pop(),4!==f.getToken()?B(8,[4],[]):A(),!0;case 1:p(),A();let d=!1;for(;2!==f.getToken()&&17!==f.getToken();){if(5===f.getToken()){if(d||B(4,[],[]),v(","),A(),2===f.getToken()&&z)break}else d&&B(6,[],[]);(10!==f.getToken()?(B(3,[],[2,5]),1):(C(!1),6===f.getToken()?(v(":"),A(),a()||B(4,[],[2,5])):B(5,[],[2,5]),g.pop(),0))&&B(4,[],[2,5]),d=!0}return r(),2!==f.getToken()?B(7,[2],[]):A(),!0;case 10:return C(!0);default:switch(f.getToken()){case 11:let e=Number(f.getTokenValue());isNaN(e)&&(B(2),e=0),u(e);break;case 7:u(null);break;case 8:u(!0);break;case 9:u(!1);break;default:return!1}return A(),!0}}()?B(4,[],[]):17!==f.getToken()&&B(9,[],[])}(a,{onObjectBegin:a=>{d=g({type:"object",offset:a,length:-1,parent:d,children:[]})},onObjectProperty:(a,b,c)=>{(d=g({type:"property",offset:b,length:-1,parent:d,children:[]})).children.push({type:"string",value:a,offset:b,length:c,parent:d})},onObjectEnd:(a,b)=>{f(a+b),d.length=a+b-d.offset,d=d.parent,f(a+b)},onArrayBegin:(a,b)=>{d=g({type:"array",offset:a,length:-1,parent:d,children:[]})},onArrayEnd:(a,b)=>{d.length=a+b-d.offset,d=d.parent,f(a+b)},onLiteralValue:(a,b,c)=>{g({type:function(a){switch(typeof a){case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"object":if(!a)return"null";if(Array.isArray(a))return"array";return"object";default:return"null"}}(a),offset:b,length:c,parent:d,value:a}),f(b+c)},onSeparator:(a,b,c)=>{"property"===d.type&&(":"===a?d.colonOffset=b:","===a&&f(b))},onError:(a,c,d)=>{b.push({error:a,offset:c,length:d})}},c);let h=d.children[0];return h&&delete h.parent,h},q=function a(b){switch(b.type){case"array":return b.children.map(a);case"object":let c=Object.create(null);for(let d of b.children){let b=d.children[1];b&&(c[d.children[0].value]=a(b))}return c;case"null":case"string":case"number":case"boolean":return b.value;default:return}};function r(a){switch(a){case 1:return"InvalidSymbol";case 2:return"InvalidNumberFormat";case 3:return"PropertyNameExpected";case 4:return"ValueExpected";case 5:return"ColonExpected";case 6:return"CommaExpected";case 7:return"CloseBraceExpected";case 8:return"CloseBracketExpected";case 9:return"EndOfFileExpected";case 10:return"InvalidCommentToken";case 11:return"UnexpectedEndOfComment";case 12:return"UnexpectedEndOfString";case 13:return"UnexpectedEndOfNumber";case 14:return"InvalidUnicode";case 15:return"InvalidEscapeCharacter";case 16:return"InvalidCharacter"}return"<unknown ParseErrorCode>"}(l=h||(h={}))[l.InvalidSymbol=1]="InvalidSymbol",l[l.InvalidNumberFormat=2]="InvalidNumberFormat",l[l.PropertyNameExpected=3]="PropertyNameExpected",l[l.ValueExpected=4]="ValueExpected",l[l.ColonExpected=5]="ColonExpected",l[l.CommaExpected=6]="CommaExpected",l[l.CloseBraceExpected=7]="CloseBraceExpected",l[l.CloseBracketExpected=8]="CloseBracketExpected",l[l.EndOfFileExpected=9]="EndOfFileExpected",l[l.InvalidCommentToken=10]="InvalidCommentToken",l[l.UnexpectedEndOfComment=11]="UnexpectedEndOfComment",l[l.UnexpectedEndOfString=12]="UnexpectedEndOfString",l[l.UnexpectedEndOfNumber=13]="UnexpectedEndOfNumber",l[l.InvalidUnicode=14]="InvalidUnicode",l[l.InvalidEscapeCharacter=15]="InvalidEscapeCharacter",l[l.InvalidCharacter=16]="InvalidCharacter"},73024:a=>{a.exports=require("node:fs")},75430:a=>{a.exports=import("@earendil-works/pi-coding-agent")},75554:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{DY:()=>s,Gh:()=>x,J0:()=>r,MO:()=>p});var e=c(51455),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c(86159),k=c(87982),l=c(49904),m=a([k]);k=(m.then?(await m)():m)[0];let t=16384,u=2e4,v=3,w=2e3;function n(){return h().join((0,k.$M)(),"settings.json")}async function o(){return(0,j.op)(n())}async function p(){let a=(await o()).enabledModels;return!Array.isArray(a)||a.some(a=>"string"!=typeof a)?null:a}function q(a,b){let c=a[b];return c&&"object"==typeof c&&!Array.isArray(c)?c:{}}async function r(){let a=await o(),b=a.compaction??{},c=a.retry??{},d=(a,b)=>"number"==typeof a&&Number.isSafeInteger(a)&&a>=0?a:b;return{compaction:{enabled:!1!==b.enabled,reserveTokens:d(b.reserveTokens,t),keepRecentTokens:d(b.keepRecentTokens,u)},retry:{enabled:!1!==c.enabled,maxRetries:d(c.maxRetries,v),baseDelayMs:d(c.baseDelayMs,w)}}}class x extends Error{}async function s(a){let b=function(a){if(!a||"object"!=typeof a||Array.isArray(a))throw new x("invalid settings patch");if(Object.keys(a).some(a=>"compaction"!==a&&"retry"!==a))throw new x("unknown settings field");let b={};for(let c of["compaction","retry"]){if(void 0===a[c])continue;let d=a[c];if(!d||"object"!=typeof d||Array.isArray(d))throw new x(`invalid ${c} settings`);let e="compaction"===c?["enabled","reserveTokens","keepRecentTokens"]:["enabled","maxRetries","baseDelayMs"];for(let[a,b]of Object.entries(d)){if(!e.includes(a))throw new x(`unknown ${c} field: ${a}`);if("enabled"===a){if("boolean"!=typeof b)throw new x(`${c}.${a} must be boolean`)}else if("number"!=typeof b||!Number.isSafeInteger(b)||b<0||b>1e9)throw new x(`${c}.${a} must be a non-negative integer`)}"compaction"===c?b.compaction=d:b.retry=d}return b}(a),c=n();await (0,l.Ax)(c,()=>(0,l._i)(c,async()=>{let a=await (0,j.mu)(c);b.compaction&&(a.compaction={...q(a,"compaction"),...b.compaction}),b.retry&&(a.retry={...q(a,"retry"),...b.retry}),await f().mkdir(h().dirname(c),{recursive:!0});let d=`${c}.${process.pid}.${(0,i.randomUUID)()}.tmp`;try{await f().writeFile(d,JSON.stringify(a,null," "),"utf8"),await f().rename(d,c)}finally{await f().rm(d,{force:!0}).catch(()=>void 0)}(0,j.Ix)(c)})),await (0,k.BW)()}d()}catch(a){d(a)}})},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},80481:a=>{a.exports=require("node:readline")},81115:a=>{a.exports=require("constants")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},89918:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>A,patchFetch:()=>z,routeModule:()=>v,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>x});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(10246),u=c(37527);let v=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/models/route",pathname:"/api/models",filename:"route",bundlePath:"app/api/models/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"D:\\AIApp\\PiWeb\\src\\app\\api\\models\\route.ts",nextConfigOutput:"",userland:()=>c(38708),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:x,serverHooks:y}=v;function z(){return(0,f.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:x})}async function A(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),v.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/models/route";"/index"===d&&(d="/");let f=await v.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!f)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:w,deploymentId:x,params:y,nextConfig:z,parsedUrl:A,isDraftMode:B,prerenderManifest:C,routerServerContext:D,isOnDemandRevalidate:E,revalidateOnlyGenerated:F,resolvedPathname:G,clientReferenceManifest:H,serverActionsManifest:I,previewProps:J}=f,K=(0,j.normalizeAppPath)(d),L=!!C.routes[G]&&(v.isDev||(0,t.isRouteCacheOwner)(G,v.cacheOwner,C.routes[G])),M=!!(C.dynamicRoutes[K]||L),N=async()=>((null==D?void 0:D.render404)?await D.render404(a,b,A,!1):b.end("This page could not be found"),null);if(M&&!B){let a=C.dynamicRoutes[K];if(a&&!1===a.fallback&&!L){if(z.adapterPath)return await N();throw new s.NoFallbackError}}let O=null;!M||v.isDev||B||(O="/index"===(O=G)?"/":O),I&&H&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:H,serverActionsManifest:I});let P=a.method||"GET",Q=(0,h.getTracer)(),R=Q.getActiveScopeSpan(),S=!!(null==D?void 0:D.isWrappedByNextServer),T=!!(0,g.getRequestMeta)(a,"minimalMode"),U=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,z,J,C,T);null==U||U.resetRequestCache(),globalThis.__incrementalCache=U;let V={params:y,previewProps:J,renderOpts:{experimental:{authInterrupts:!!z.experimental.authInterrupts,useCacheTimeout:z.experimental.useCacheTimeout,durableUseCacheEntries:!!z.experimental.durableUseCacheEntries},cacheComponents:!!z.cacheComponents,validationLevel:z.experimental.instantInsights.validationLevel,isDraftMode:B,incrementalCache:U,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:z.cacheLife,staticPageGenerationTimeout:z.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0},sharedContext:{buildId:w,deploymentId:x}},W=new k.NodeNextRequest(a),X=new k.NodeNextResponse(b),Y=l.NextRequestAdapter.fromNodeNextRequest(W,(0,l.signalFromNodeResponse)(b)),Z=async({previousCacheEntry:e})=>{try{if(!T&&E&&F&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=null===O?await v.handle(Y,V):await v.prerender(Y,V);a.fetchMetrics=V.renderOpts.fetchMetrics;let f=V.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=V.renderOpts.collectedTags;if(!M)return await (0,o.I)(W,X,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==V.renderOpts.collectedRevalidate&&!(V.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&V.renderOpts.collectedRevalidate,e=void 0===V.renderOpts.collectedExpire||V.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?z.expireTime:void 0:V.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await v.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==O,isOnDemandRevalidate:E})},!1,D),b}},$=async(d,f)=>{try{var g,i;let d=await v.handleResponse({req:a,nextConfig:z,cacheKey:O,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,previewProps:J,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:F,responseGenerator:Z,waitUntil:c.waitUntil,isMinimalMode:T});if(null!==d&&"error"in d)throw d.error;if(!M)return;if((null==d||null==(g=d.value)?void 0:g.kind)!==u.CachedRouteKind.APP_ROUTE)throw Error(`Invariant: app-route received invalid cache entry ${null==d||null==(i=d.value)?void 0:i.kind}`);T||b.setHeader("x-nextjs-cache",E?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),B&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let f=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);T&&M||f.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||f.get("Cache-Control")||f.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(W,X,new Response(d.value.body,{headers:f,status:d.value.status||200}));return}catch(c){if(c instanceof s.NoFallbackError||await v.onRequestError(a,c,{routerKind:"App Router",routePath:K,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==O,isOnDemandRevalidate:E})},!1,D),M)throw c;if(b.headersSent){if(d){let a=c instanceof Error?c:Error("Unknown app route error");d.recordException(a),d.setStatus({code:h.SpanStatusCode.ERROR,message:a.message}),d.setAttribute("error.type",a.name)}b.writableEnded||b.destroyed||b.end()}else await (0,o.I)(W,X,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=Q.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||K,g=`${P} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":g}),d.updateName(g),f&&f!==d&&(f.setAttribute("http.route",e),f.updateName(g))})()}};if(S&&R)await $(R,void 0);else{let b=Q.getActiveScopeSpan();await Q.withPropagatedContext(a.headers,()=>Q.trace(m.BaseServerSpan.handleRequest,{spanName:`${P} ${d}`,kind:h.SpanKind.SERVER,attributes:{"http.method":P,"http.target":a.url}},a=>$(a,b)),void 0,!S)}}},94735:a=>{a.exports=require("events")},97138:(a,b,c)=>{c.d(b,{fv:()=>d,lG:()=>e});let d=604800,e=2592e3}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[970,813,593,538,920,686],()=>b(b.s=89918));module.exports=c})();
|
|
1
|
+
"use strict";(()=>{var a={};a.id=552,a.ids=[552],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},8128:a=>{a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},12412:a=>{a.exports=require("assert")},12616:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{x:()=>g});var e=c(75430),f=a([e]);async function g(a,b,c){if(0===b.length)return a;let{scopedModels:d}=await (0,e.resolveModelScopeWithDiagnostics)(b,c),f=new Set(d.map(({model:a})=>`${a.provider}/${a.id}`));return a.filter(a=>f.has(`${a.provider}/${a.id}`))}e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},28802:a=>{a.exports=import("@earendil-works/pi-ai")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31421:a=>{a.exports=require("node:child_process")},33873:a=>{a.exports=require("path")},37067:a=>{a.exports=require("node:http")},38522:a=>{a.exports=require("node:zlib")},38708:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{GET:()=>i,POST:()=>j,dynamic:()=>k});var e=c(38522),f=c(23211),g=c(65501),h=a([g]);g=(h.then?(await h)():h)[0];let k="force-dynamic",l=new Map;async function i(a){let b=new URL(a.url).searchParams,c="1"===b.get("custom"),d=c||"1"===b.get("full");try{let b=c?await (0,g.Qn)():null,f=await (d?(0,g.D)():(0,g.Fo)()),h=d?f.models:f.models.map(a=>({provider:a.provider,id:a.id,name:a.name,reasoning:a.reasoning,thinkingLevels:a.thinkingLevels,contextWindow:a.contextWindow})),i=d?f.providers:f.providers.map(a=>({id:a.id,name:a.name,authReady:a.authReady,builtIn:a.builtIn,modelCount:a.modelCount})),j=b?await (0,g.ws)(b.content,f.models):void 0;return function(a,b,c){let d=JSON.stringify(b),f=a.headers.get("accept-encoding")??"",g={"Content-Type":"application/json; charset=utf-8",Vary:"Accept-Encoding","Cache-Control":"no-store"};if(!/\bgzip\b/.test(f)||d.length<2048)return new Response(d,{headers:g});let h=`${c}:${d.length}`,i=l.get(h);if(i&&Date.now()-i.at<5e3)return new Response(i.body.slice(),{headers:{...g,"Content-Encoding":"gzip"}});let j=new Uint8Array((0,e.gzipSync)(Buffer.from(d,"utf8")));return l.size>8&&l.clear(),l.set(h,{at:Date.now(),body:j}),new Response(j.slice(),{headers:{...g,"Content-Encoding":"gzip"}})}(a,{success:!0,data:{providers:i,models:h,customProviders:b,...j?{catalogModelIds:j}:{}}},`${(0,g.Jk)()}:${c?"custom":d?"full":"piweb"}`)}catch(a){return f.NextResponse.json({success:!1,error:String(a?.message??a)},{status:500})}}async function j(a){try{let b=await a.json();if("setKey"===b.action){if(!b.providerId||!b.apiKey)return f.NextResponse.json({success:!1,error:"missing fields"},{status:400});return await (0,g.d8)(b.providerId,b.apiKey),f.NextResponse.json({success:!0})}if("removeKey"===b.action){if(!b.providerId)return f.NextResponse.json({success:!1,error:"missing providerId"},{status:400});return await (0,g.kK)(b.providerId),f.NextResponse.json({success:!0})}if("saveCustomProviders"===b.action){if("string"!=typeof b.content)return f.NextResponse.json({success:!1,error:"missing content"},{status:400});if(void 0!==b.revision&&("string"!=typeof b.revision||!/^(?:missing|[a-f0-9]{64})$/.test(b.revision)))return f.NextResponse.json({success:!1,error:"invalid revision"},{status:400});return await (0,g.P2)(b.content,b.revision),f.NextResponse.json({success:!0,data:{requiresSessionReopen:!0}})}if("discoverModels"===b.action){let a;if(!b.baseUrl)return f.NextResponse.json({success:!1,error:"missing baseUrl"},{status:400});if(void 0!==b.headers){if(!b.headers||"object"!=typeof b.headers||Array.isArray(b.headers))return f.NextResponse.json({success:!1,error:"invalid headers"},{status:400});let c=Object.entries(b.headers);if(c.length>32)return f.NextResponse.json({success:!1,error:"too many headers"},{status:400});for(let[b,d]of(a={},c)){if(!/^[A-Za-z0-9!#$%&'*+.^_`|~-]{1,64}$/.test(b))return f.NextResponse.json({success:!1,error:`invalid header name: ${b}`},{status:400});if("string"!=typeof d||d.length>4096||/[\r\n]/.test(d))return f.NextResponse.json({success:!1,error:`invalid header value: ${b}`},{status:400});d&&(a[b]=d)}}let c=await (0,g.wt)({baseUrl:b.baseUrl,api:b.api,apiKey:b.apiKey,providerId:b.providerId,allowPrivate:!0===b.allowPrivate,headers:a});return f.NextResponse.json({success:!0,data:{models:c}})}if("providerUsage"===b.action){if(!b.providerId)return f.NextResponse.json({success:!1,error:"missing providerId"},{status:400});let a=await (0,g.VV)(b.providerId,!0===b.force);return f.NextResponse.json({success:!0,data:{usage:a}})}if("contextWindowInfo"===b.action||"setContextWindow"===b.action){if("string"!=typeof b.providerId||!b.providerId||"string"!=typeof b.modelId||!b.modelId)return f.NextResponse.json({success:!1,error:"missing providerId or modelId"},{status:400});if("contextWindowInfo"===b.action)return f.NextResponse.json({success:!0,data:await (0,g.yc)(b.providerId,b.modelId)});if("number"!=typeof b.contextWindow)return f.NextResponse.json({success:!1,error:"missing contextWindow"},{status:400});return f.NextResponse.json({success:!0,data:await (0,g.lr)(b.providerId,b.modelId,b.contextWindow)})}if("loginStart"===b.action){if(!b.providerId)return f.NextResponse.json({success:!1,error:"missing providerId"},{status:400});return await (0,g.c$)(b.providerId),f.NextResponse.json({success:!0,data:(0,g.$i)(b.providerId)})}if("loginState"===b.action){if(!b.providerId)return f.NextResponse.json({success:!1,error:"missing providerId"},{status:400});return f.NextResponse.json({success:!0,data:(0,g.$i)(b.providerId)})}if("loginAnswer"===b.action){if(!b.providerId||"string"!=typeof b.text)return f.NextResponse.json({success:!1,error:"missing fields"},{status:400});return f.NextResponse.json({success:!0,data:{delivered:(0,g.ig)(b.providerId,b.text)}})}if("loginCancel"===b.action){if(!b.providerId)return f.NextResponse.json({success:!1,error:"missing providerId"},{status:400});return(0,g.IX)(b.providerId),f.NextResponse.json({success:!0})}return f.NextResponse.json({success:!1,error:"unknown action"},{status:400})}catch(b){let a=b instanceof g.w9?409:b instanceof g.Ts||b instanceof SyntaxError?400:500;return f.NextResponse.json({success:!1,error:String(b?.message??b)},{status:a})}}d()}catch(a){d(a)}})},41846:(a,b,c)=>{function d(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)}function e(a,b,c,e){let f=JSON.parse(JSON.stringify(a)),g=Object.prototype.hasOwnProperty.call(f,b)?f[b]:void 0,h=d(g)?g:{};f[b]=h;let i=d(h.modelOverrides)?h.modelOverrides:void 0,j=i&&Object.prototype.hasOwnProperty.call(i,c)?i[c]:void 0;if(d(j)&&void 0!==j.contextWindow)return j.contextWindow=e,f;let k=Array.isArray(h.models)?h.models.filter(a=>d(a)&&"string"==typeof a.id&&a.id.trim()===c):[];if(k.length){for(let a of k)a.contextWindow=e;return f}let l=i??{};return h.modelOverrides=l,l[c]={...d(j)?j:{},contextWindow:e},f}c.d(b,{Ax:()=>e})},44708:a=>{a.exports=require("node:https")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46193:a=>{a.exports=require("node:string_decoder")},48161:a=>{a.exports=require("node:os")},51455:a=>{a.exports=require("node:fs/promises")},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},65501:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{$i:()=>ar,D:()=>F,Fo:()=>G,IX:()=>at,Jk:()=>C,P2:()=>aB,Qn:()=>ay,Ts:()=>aP,VV:()=>S,c$:()=>aq,d8:()=>J,ig:()=>as,kK:()=>K,lr:()=>aE,w9:()=>aQ,ws:()=>E,wt:()=>R,yc:()=>aD});var e=c(51455),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c(71553),k=c.n(j),l=c(37067),m=c(44708),n=c(77030),o=c(75430),p=c(71808),q=c(12616),r=c(86159),s=c(87982),t=c(75554),u=c(28686),v=c(41846),w=c(28802),x=c(49904),y=c(97138),z=a([o,q,s,t,u,w]);function A(a){return"number"==typeof a&&Number.isSafeInteger(a)&&a>0?a:void 0}[o,q,s,t,u,w]=z.then?(await z)():z;let aF=null,aG=null,aH=-1,aI=new Map;function B(){aG=null,aI.clear(),(0,r.Yq)("auth.json")}function C(){return aG?String(aG.at):"none"}function D(){return aF||(aF=o.ModelRuntime.create({modelsPath:null,refreshOnCreate:!1,allowModelNetwork:!1,credentials:new w.InMemoryCredentialStore,modelsStore:new w.InMemoryModelsStore}).then(a=>new Map(a.getProviders().map(b=>[b.id,new Map(a.getModels(b.id).map(a=>[a.id,Number(a.contextWindow)||0]))]))).catch(a=>{throw aF=null,a})),aF}async function E(a,b){let c=await D(),d=new Map;for(let[b,c]of Object.entries(av(a).providers)){let a=Array.isArray(c.models)?c.models:[];d.set(b,new Set(a.flatMap(a=>aw(a)&&"string"==typeof a.id?[a.id]:[])))}let e=new Map([...c].map(([a,b])=>[a,new Set(b.keys())]));for(let a of b)d.get(a.provider)?.has(a.id)||e.get(a.provider)?.add(a.id);return Object.fromEntries([...e].map(([a,b])=>[a,[...b].sort()]))}async function F(){if(await (0,s.NU)(),aH!==(0,s.U6)()&&(aH=(0,s.U6)(),B()),aG&&Date.now()-aG.at<5e3)return aG.value;let a=I().catch(a=>{throw aG=null,a});return aG={at:Date.now(),value:a},a}async function G(){let a=await F(),b=await (0,t.MO)();if(!b?.length)return a;let c=await (0,q.x)(a.models,b,await (0,s.uU)()),d=new Map;for(let a of c)d.set(a.provider,(d.get(a.provider)??0)+1);return{models:c,providers:a.providers.map(a=>({...a,modelCount:d.get(a.id)??0}))}}async function H(){let a=new Map;try{let b=await (0,r.lg)(h().join((0,s.$M)(),"auth.json"));for(let[c,d]of[...Object.entries(b??{}),...Object.entries(b?.providers??{})])!a.has(c)&&(d?.type==="oauth"?a.set(c,"oauth"):d&&"object"==typeof d&&[d.apiKey,d.api_key,d.key].some(a=>"string"==typeof a&&a.trim())&&a.set(c,"api_key"))}catch{}return a}async function I(){let a=await (0,s.uU)(),b=await D(),c=a.getProviders(),d=await H(),e=[],f=[];for(let g of(await Promise.all(c.map(async b=>{let c,d,e=String(b.id??b.name??"");if(!e)return null;let f=null;try{f=a.getProviderAuthStatus(e)}catch{f=null}let g=a.hasConfiguredAuth(e),h=!1;if(f?.configured===!0||g){let b=aI.get(e);if(b&&Date.now()-b.at<6e4)h=b.ready,c=b.source,d=b.error;else{try{let b=await a.checkAuth(e,{signal:AbortSignal.timeout(5e3)});h=void 0!==b,c=b?.source}catch(a){d=a instanceof Error?a.message:String(a)}aI.set(e,{at:Date.now(),ready:h,source:c,error:d})}}return{pid:e,p:b,auth:f,authFastPath:g,authReady:h,resolvedAuthSource:c,authError:d}})))){if(!g)continue;let{pid:c,p:h,auth:i,authFastPath:j,authReady:k,resolvedAuthSource:l,authError:m}=g,n=a.getModels(c),o=[];for(let a of(h.auth?.apiKey&&o.push("api_key"),h.auth?.oauth&&o.push("oauth"),e.push({id:c,name:String(h.name??c),baseUrl:"string"==typeof h.baseUrl?h.baseUrl:void 0,apiKeyLabel:"string"==typeof h.auth?.apiKey?.name?h.auth.apiKey.name:void 0,authTypes:o,apis:function(a){let b=new Map;for(let c of a){let a=String(c.api??"");a&&b.set(a,(b.get(a)??0)+1)}return[...b].sort(([a,b],[c,d])=>d-b||(a<c?-1:+(a>c))).map(([a])=>a)}(n),builtIn:b.has(c),authConfigured:i?.configured===!0,authSource:i?.source,authReady:k,authFastPath:j,resolvedAuthSource:l,authError:m,keyManaged:i?.source==="stored",storedAuthType:i?.source==="stored"?d.get(c):void 0,modelCount:n.length}),n))f.push({provider:c,id:String(a.id),name:String(a.name??a.id),api:String(a.api??""),baseUrl:"string"==typeof a.baseUrl?a.baseUrl:void 0,reasoning:!0===a.reasoning,thinkingLevels:(0,w.getSupportedThinkingLevels)(a),contextWindow:Number(a.contextWindow??0),input:Array.isArray(a.input)?a.input.map(String):["text"],cost:a.cost?{input:a.cost.input,output:a.cost.output}:null})}return f.sort((a,b)=>a.provider.localeCompare(b.provider)||a.id.localeCompare(b.id)),{providers:e,models:f}}async function J(a,b){let c=an(a),d=await ao(c);await ap(c,d,"api_key",b)}async function K(a){at(a);let b=await (0,s.uU)();await b.logout(a),B()}async function L(a){try{let b=await (0,s.uU)(),c=await b.getAuth(a,{signal:AbortSignal.timeout(2e4)}),d=(c?.auth.apiKey??function(a){for(let[b,c]of Object.entries(a??{}))if("authorization"===b.toLowerCase()&&c)return/^Bearer\s+(\S+)/i.exec(c.trim())?.[1]}(c?.auth.headers))?.trim();if(!c||!d)return;let e=(await b.checkAuth(a).catch(()=>void 0))?.type==="oauth",f=e&&"openai-codex"===a?W(d)?.chatgpt_account_id:void 0;return{key:d,oauth:e,..."string"==typeof f&&f.trim()?{accountId:f.trim()}:{},...c.auth.baseUrl?{baseUrl:c.auth.baseUrl}:{}}}catch{return}}function M(a){let b=new URL(a),c=b.pathname.replace(/\/+$/,"");return b.pathname=c.endsWith("/models")?c:`${c}/models`,b.hash="",b}function N(a,b){let c=M(a).href;return b.some(a=>{if(!a)return!1;try{let b=new URL(a);return!b.username&&!b.password&&M(b).href===c}catch{return!1}})}let aJ=new n.BlockList;for(let[a,b]of[["0.0.0.0",8],["10.0.0.0",8],["100.64.0.0",10],["127.0.0.0",8],["169.254.0.0",16],["172.16.0.0",12],["192.0.0.0",24],["192.0.2.0",24],["192.88.99.0",24],["192.168.0.0",16],["198.18.0.0",15],["198.51.100.0",24],["203.0.113.0",24],["224.0.0.0",4],["240.0.0.0",4]])aJ.addSubnet(a,b,"ipv4");let aK=new n.BlockList;aK.addSubnet("2000::",3,"ipv6");let aL=new n.BlockList;for(let[a,b]of[["2001::",23],["2001:db8::",32],["2002::",16]])aL.addSubnet(a,b,"ipv6");function O(a){let b=(0,n.isIP)(a);return 4===b?!aJ.check(a,"ipv4"):6===b&&aK.check(a,"ipv6")&&!aL.check(a,"ipv6")}async function P(a,b,c,d=!1){let e=d||"1"===process.env.PI_WEB_ALLOW_PRIVATE_MODEL_DISCOVERY,f=(0,n.isIP)(a.hostname.replace(/^\[|\]$/g,""));if(!e&&f&&!O(a.hostname.replace(/^\[|\]$/g,"")))throw Error("模型目录地址指向本机或私有网络;勾选「允许访问本机/私有网络地址」后重试,或设置 PI_WEB_ALLOW_PRIVATE_MODEL_DISCOVERY=1");return new Promise((d,f)=>{let g=("https:"===a.protocol?m.request:l.request)(a,{headers:b,signal:c,agent:!1,lookup:e?void 0:(a,b,c)=>{k().lookup(a,{all:!0}).then(a=>{let d=a.find(({address:a})=>O(a));d?b.all?c(null,[d]):c(null,d.address,d.family):c(Error("模型目录地址指向本机或私有网络;勾选「允许访问本机/私有网络地址」后重试,或设置 PI_WEB_ALLOW_PRIVATE_MODEL_DISCOVERY=1"),"",0)},a=>c(a,"",0))}},a=>{let b=a.statusCode??0;if(b>=300&&b<400){a.destroy(),f(Error("模型目录不允许重定向"));return}let c=[],e=0;if(Number(a.headers["content-length"])>4194304){a.destroy(),f(Error("模型目录响应过大(上限 4 MiB)"));return}a.on("data",b=>{if((e+=b.length)>4194304){a.destroy(),f(Error("模型目录响应过大(上限 4 MiB)"));return}c.push(b)}),a.on("error",f),a.on("close",()=>{a.complete||f(Error("模型目录连接提前关闭"))}),a.on("end",()=>d(new Response(204===b||205===b||304===b?null:Buffer.concat(c,e),{status:b})))});g.on("error",f),g.end()})}async function Q(a){if(Number(a.headers.get("content-length"))>4194304)throw Error("模型目录响应过大(上限 4 MiB)");if(!a.body)throw Error("模型目录响应为空");let b=a.body.getReader(),c=[],d=0;try{for(;;){let{done:a,value:e}=await b.read();if(a)break;if((d+=e.byteLength)>4194304)throw Error("模型目录响应过大(上限 4 MiB)");c.push(Buffer.from(e))}}finally{await b.cancel().catch(()=>void 0),b.releaseLock()}return JSON.parse(Buffer.concat(c,d).toString("utf8"))}async function R(a){let b=a.baseUrl.trim();if(!b)throw Error("缺少 API 地址");let c=new URL(b);if("http:"!==c.protocol&&"https:"!==c.protocol)throw Error("API 地址必须使用 http 或 https");if(c.username||c.password)throw Error("API 地址不能包含用户名或密码");let d=M(c),e={Accept:"application/json"},f=a.apiKey?.trim()?{key:a.apiKey.trim(),oauth:!1}:a.providerId?await L(a.providerId):void 0;if(f&&!a.apiKey?.trim()){let b=await (0,s.uU)(),c=b.getProviders().find(b=>b.id===a.providerId);if(!N(d,[c?.baseUrl,f.baseUrl,...c?b.getModels(c.id).map(a=>a.baseUrl):[]]))throw Error("已配置的凭证只能用于该 Provider 已配置的 API 地址;新地址请显式填写密钥")}if(a.headers&&Object.keys(a.headers).length){if(!a.apiKey?.trim()){let b=await (0,s.uU)(),c=b.getProviders().find(b=>b.id===a.providerId);if(!N(d,[c?.baseUrl,f?.baseUrl,...c?b.getModels(c.id).map(a=>a.baseUrl):[]]))throw Error("自定义请求头只能用于该 Provider 已配置的 API 地址;新地址请显式填写密钥")}for(let[b,c]of Object.entries(a.headers))"string"==typeof c&&c&&(e[b]=c)}let g=f?.key;if(!a.apiKey?.trim()&&f?.oauth&&"openai-codex"===a.providerId)throw Error("OpenAI Codex 的模型目录由 SDK 内置,无需获取;如需自定义请手动添加模型 ID");g&&("anthropic-messages"===a.api?(e["x-api-key"]=g,f?.oauth&&(e["anthropic-beta"]="oauth-2025-04-20")):e.Authorization=`Bearer ${g}`),"anthropic-messages"===a.api&&(e["anthropic-version"]="2023-06-01");let h=new AbortController,i=setTimeout(()=>h.abort(),15e3);try{let b=await P(d,e,h.signal,!0===a.allowPrivate);if(401===b.status)throw Error(g?"模型目录请求失败(HTTP 401):密钥或令牌无效":"模型目录请求失败(HTTP 401):请先填写 API 密钥");if(403===b.status)throw Error(f?.oauth?"模型目录请求失败(HTTP 403):该 OAuth 令牌无权访问模型目录(部分提供商不支持),请手动填写模型 ID":"模型目录请求失败(HTTP 403):密钥无权访问模型目录");if(!b.ok)throw Error(`模型目录请求失败(HTTP ${b.status})`);let c=await Q(b),i=(Array.isArray(c)?c:c&&"object"==typeof c?Array.isArray(c.data)?c.data:Array.isArray(c.models)?c.models:[]:[]).map(a=>{let b,c,d,e,f,g,h,i;if("string"==typeof a)return{id:a};if(!a||"object"!=typeof a)return null;let j="string"==typeof a.id?a.id.trim():"";if(!j)return null;let k="string"==typeof a.name&&a.name.trim()?a.name.trim():void 0;return{id:j,...k?{name:k}:{},...(b=aw(a.architecture)?a.architecture:void 0,d=Array.isArray(c=a.modalities??b?.input_modalities??a.input_modalities)?c:aw(c)&&Array.isArray(c.input)?c.input:void 0,e=aw(a.top_provider)?a.top_provider:void 0,f=A(a.context_window)??A(a.context_length)??A(a.max_input_tokens)??A(b?.context_length),g=A(a.max_output_tokens)??A(a.max_completion_tokens)??A(e?.max_completion_tokens),h=d?d.some(a=>"string"==typeof a&&"image"===a.toLowerCase()):void 0,i=function(a){let b=a.reasoning??a.supports_reasoning;if("boolean"==typeof b)return b;let c=aw(a.capabilities)?a.capabilities:void 0,d=c?.reasoning;if("boolean"==typeof d)return d;let e=aw(c?.thinking)?c.thinking:void 0;return"boolean"==typeof e?.supported?e.supported:!!(Array.isArray(a.supported_parameters)&&a.supported_parameters.some(a=>"string"==typeof a&&/^(include_)?reasoning/i.test(a.trim())))||void 0}(a),{...void 0===f?{}:{contextWindow:f},...void 0===g?{}:{maxTokens:g},...void 0===h?{}:{vision:h},...void 0===i?{}:{reasoning:i}})}}).filter(a=>!!a).filter((a,b,c)=>c.findIndex(b=>b.id===a.id)===b).slice(0,500);if(!i.length)throw Error("响应中没有可识别的模型 ID");return i}catch(a){if(a instanceof Error&&"AbortError"===a.name)throw Error("模型目录请求超时");if(a&&"object"==typeof a&&"code"in a&&["ECONNREFUSED","ECONNRESET","ENOTFOUND","EHOSTUNREACH","ENETUNREACH","ETIMEDOUT"].includes(String(a.code))||a instanceof TypeError&&a.message.toLowerCase().includes("fetch"))throw Error("无法连接模型目录,请检查 API 地址和网络");throw a}finally{clearTimeout(i)}}let aM=new Map;async function S(a,b=!1){let c=function(a){switch(a){case"xai":return ah;case"openai-codex":return X;case"anthropic":return Y;case"deepseek":return $;case"openrouter":return _;case"moonshotai":return()=>aa("moonshotai");case"moonshotai-cn":return()=>aa("moonshotai-cn");case"kimi-coding":return ad;case"github-copilot":return ae;case"vercel-ai-gateway":return af;case"opencode-go":return ag;default:return null}}(a);if(!c)return null;let d=aM.get(a);if(!b&&d&&Date.now()-d.at<3e5)return d.value;let e=await c();return aM.set(a,{at:Date.now(),value:e}),e}async function T(a,b,c=1e4){let d=new AbortController,e=setTimeout(()=>d.abort(),c);try{let c=await fetch(a,{...b,signal:d.signal});if(!c.ok)return void c.body?.cancel().catch(()=>{});return await c.json()}catch{return}finally{clearTimeout(e)}}function U(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:void 0}function V(a){if("string"!=typeof a)return;let b=new Date(a);return Number.isFinite(b.getTime())?b.toISOString():void 0}function W(a){try{let b=JSON.parse(Buffer.from(a.split(".")[1]??"","base64").toString("utf8"));return U(U(b)?.["https://api.openai.com/auth"])}catch{return}}async function X(){var a;let b,c=await L("openai-codex");if(!c)return null;let d=(a=c.key,"string"==typeof(b=W(a)?.chatgpt_plan_type)&&b.trim()?b.trim():void 0),e=await T("https://chatgpt.com/backend-api/wham/usage",{headers:{Authorization:`Bearer ${c.key}`,...c.accountId?{"chatgpt-account-id":c.accountId}:{}}});if(void 0===e)return void 0===d?null:{kind:"quota",planType:d,windows:[],probedAt:Date.now()};let f=function(a){let b=U(a);if(!b)return{windows:[]};let c=U(b.rate_limit),d=[c?.primary_window,c?.secondary_window].map(U).flatMap(a=>{let b;if(!a||"number"!=typeof a.limit_window_seconds||a.limit_window_seconds<=0||"number"!=typeof a.used_percent||!Number.isFinite(a.used_percent))return[];if(Number.isSafeInteger(a.reset_at)&&a.reset_at>0){let c=new Date(1e3*a.reset_at);Number.isFinite(c.getTime())&&(b=c.toISOString())}return[{limitWindowSeconds:a.limit_window_seconds,remainingPercent:Math.min(100,Math.max(0,Math.round(100-a.used_percent))),...void 0===b?{}:{resetAt:b}}]}).sort(ac),e=b.plan_type;return{..."string"==typeof e&&e.trim()?{planType:e.trim()}:{},windows:d}}(e),g=f.planType??d;return{kind:"quota",...f,...void 0===g?{}:{planType:g},probedAt:Date.now()}}async function Y(){let a=await L("anthropic");if(!a?.oauth)return null;let b=await T("https://api.anthropic.com/api/oauth/usage",{headers:{Authorization:`Bearer ${a.key}`,"anthropic-beta":"oauth-2025-04-20"}});if(void 0===b)return null;let c=function(a){let b=U(a);if(!b)return{windows:[]};let c=(a,c,d)=>{let e=U(b[a]);if(!e||"number"!=typeof e.utilization||!Number.isFinite(e.utilization))return[];let f=V(e.resets_at);return[{limitWindowSeconds:c,remainingPercent:Math.min(100,Math.max(0,Math.round(100-e.utilization))),...void 0===f?{}:{resetAt:f},...void 0===d?{}:{variant:d}}]};return{windows:[...c("five_hour",18e3),...c("seven_day",y.fv),...c("seven_day_opus",y.fv,"opus")].sort(ac)}}(b);return 0===c.windows.length?null:{kind:"quota",...c,probedAt:Date.now()}}function Z(a,b){return"number"==typeof a&&Number.isFinite(a)?{amount:a.toFixed(2),...void 0===b?{}:{currency:b}}:"string"==typeof a&&a.trim()&&Number.isFinite(Number(a))?{amount:Number(a).toFixed(2),...void 0===b?{}:{currency:b}}:void 0}let aN={moonshotai:{base:"https://api.moonshot.ai",currency:"USD"},"moonshotai-cn":{base:"https://api.moonshot.cn",currency:"CNY"}};async function $(){let a=await L("deepseek");if(!a)return null;let b=await T("https://api.deepseek.com/user/balance",{headers:{Authorization:`Bearer ${a.key}`}});return void 0===b?null:{kind:"balance",...function(a){let b=U(a),c=(Array.isArray(b?.balance_infos)?b.balance_infos.map(U).filter(Boolean):[])[0];if(!c)return{details:[]};let d="string"==typeof c.currency&&c.currency.trim()?c.currency.trim():void 0,e=[],f=Z(c.granted_balance,d);f&&e.push({key:"granted",...f});let g=Z(c.topped_up_balance,d);g&&e.push({key:"toppedUp",...g});let h=Z(c.total_balance,d);return{...void 0===h?{}:{primary:h},details:e}}(b),probedAt:Date.now()}}async function _(){let a=await L("openrouter");if(!a)return null;let b=await T("https://openrouter.ai/api/v1/key",{headers:{Authorization:`Bearer ${a.key}`}});return void 0===b?null:{kind:"balance",...function(a){let b=U(U(a)?.data);if(!b)return{details:[]};let c=[],d=Z(b.limit,"USD");d&&c.push({key:"limit",...d});let e=Z(b.usage,"USD");e&&c.push({key:"used",...e});let f=Z(b.limit_remaining,"USD");return f?{primary:f,details:c}:e?{primaryKey:"used",primary:e,details:c}:{details:c}}(b),probedAt:Date.now()}}async function aa(a){let b=await L(a);if(!b)return null;let c=aN[a],d=await T(`${c.base}/v1/users/me/balance`,{headers:{Authorization:`Bearer ${b.key}`}});return void 0===d?null:{kind:"balance",...function(a,b){let c=U(a),d=U(c?.data);if(!d||c?.status===!1)return{details:[]};let e=[],f=Z(d.voucher_balance,b);f&&e.push({key:"voucher",...f});let g=Z(d.cash_balance,b);g&&e.push({key:"cash",...g});let h=Z(d.available_balance,b);return{...void 0===h?{}:{primary:h},details:e}}(d,c.currency),probedAt:Date.now()}}function ab(a){return Math.min(100,Math.max(0,Math.round(100-a)))}function ac(a,b){return(a.limitWindowSeconds??1/0)-(b.limitWindowSeconds??1/0)}async function ad(){let a=await L("kimi-coding");if(!a)return null;let b=await T("https://api.kimi.com/coding/v1/usages",{headers:{Authorization:`Bearer ${a.key}`,Accept:"application/json"}});if(void 0===b)return null;let c=function(a){let b=U(U(a)?.usages);if(!b)return{windows:[]};let c=(a,c,d)=>{let e=U(b[a]);if(!e||"number"!=typeof e.used_ratio||!Number.isFinite(e.used_ratio))return[];let f=V(e.reset_time);return[{limitWindowSeconds:c,remainingPercent:ab(100*e.used_ratio),...void 0===f?{}:{resetAt:f},...void 0===d?{}:{variant:d}}]};return{windows:[...c("limit_5h",18e3),...c("limit_7d",y.fv),...c("limit_month_total",y.lG),...c("limit_month_code",y.lG,"code")].sort(ac)}}(b);return 0===c.windows.length?null:{kind:"quota",...c,probedAt:Date.now()}}async function ae(){let a=await L("github-copilot");if(!a?.oauth)return null;let b=await T("https://api.github.com/copilot_internal/user",{headers:{Authorization:`Bearer ${a.key}`,Accept:"application/json"}});if(void 0===b)return null;let c=function(a){let b=U(a);if(!b)return{windows:[]};let c=U(b.quota_snapshots),d=b.copilot_plan,e=V(b.quota_reset_date),f=[["premium_interactions","premium"],["chat","chat"],["completions","completions"]].flatMap(([a,b])=>{let d=U(c?.[a]);return d&&!1!==d.has_quota&&!0!==d.unlimited&&"number"==typeof d.percent_remaining&&Number.isFinite(d.percent_remaining)?[{remainingPercent:Math.min(100,Math.max(0,Math.round(d.percent_remaining))),...void 0===e?{}:{resetAt:e},name:b}]:[]});return{..."string"==typeof d&&d.trim()?{planType:d.trim()}:{},windows:f}}(b);return 0===c.windows.length&&void 0===c.planType?null:{kind:"quota",...c,probedAt:Date.now()}}async function af(){let a=await L("vercel-ai-gateway");if(!a)return null;let b=await T("https://ai-gateway.vercel.sh/v1/credits",{headers:{Authorization:`Bearer ${a.key}`}});return void 0===b?null:{kind:"balance",...function(a){let b=U(a);if(!b)return{details:[]};let c=[],d=Z(b.total_used,"USD");d&&c.push({key:"used",...d});let e=Z(b.balance,"USD");return{...void 0===e?{}:{primary:e},details:c}}(b),probedAt:Date.now()}}async function ag(){let a=await L("opencode-go");if(!a)return null;let b=await T("https://opencode.ai/zen/go/v1/usage",{headers:{Authorization:`Bearer ${a.key}`,Accept:"application/json"}});if(void 0===b)return null;let c=function(a){let b=U(U(a)?.usage);if(!b)return{windows:[]};let c=(a,c)=>{let d=U(b[a]);if(!d||"number"!=typeof d.percent||!Number.isFinite(d.percent))return[];let e=V(d.resetsAt);return[{...void 0===c?{name:a}:{limitWindowSeconds:c},remainingPercent:ab(d.percent),...void 0===e?{}:{resetAt:e}}]};return{windows:[...c("rolling"),...c("weekly",y.fv),...c("monthly",y.lG)].sort(ac)}}(b);return 0===c.windows.length?null:{kind:"quota",...c,probedAt:Date.now()}}async function ah(){let a=await L("xai");if(!a)return null;let b=a.key,c="";try{let a=(await (0,s.uU)()).getModels("xai").map(a=>String(a.id)).filter(a=>!a.includes("imagine")&&!a.includes("multi-agent"));c=["grok-4.6","grok-4.5","grok-4.3"].find(b=>a.some(a=>a===b||a.startsWith(`${b}-`)))??a[0]??""}catch{return null}if(!c)return null;let d=new AbortController,e=setTimeout(()=>d.abort(),2e4);try{let a=await fetch("https://api.x.ai/v1/chat/completions",{method:"POST",headers:{Authorization:`Bearer ${b}`,"Content-Type":"application/json"},body:JSON.stringify({model:c,messages:[{role:"user",content:"ping"}],max_tokens:1}),signal:d.signal});a.body?.cancel().catch(()=>{});let e=b=>Number(a.headers.get(b)??0/0),f=e("x-ratelimit-limit-requests"),g=e("x-ratelimit-remaining-requests"),h=e("x-ratelimit-limit-tokens"),i=e("x-ratelimit-remaining-tokens");if(![f,g,h,i].every(Number.isFinite))return null;return{kind:"xai",model:c,requestLimit:f,requestRemaining:g,tokenLimit:h,tokenRemaining:i,probedAt:Date.now()}}catch{return null}finally{clearTimeout(e)}}let aO=new Map;function ai(){let a=Date.now();for(let[b,c]of aO)c.done&&void 0!==c.finishedAt&&a-c.finishedAt>6e5&&aO.delete(b)}function aj(a){return aO.get(a.providerId)===a&&!a.done&&!a.controller.signal.aborted}function ak(a){if(a.controller.signal.throwIfAborted(),!aj(a))throw Error("canceled")}function al(a,b){return aO.get(a.providerId)===a&&!a.done&&(a.done=!0,void 0!==b&&(a.error=b instanceof Error?b.message:String(b)),a.finishedAt=Date.now(),a.timeout&&clearTimeout(a.timeout),a.timeout=null,a.rejecter?.(b instanceof Error?b:Error(a.error??"login finished")),a.prompt=null,a.resolver=null,a.rejecter=null,!0)}function am(a,b){al(a,b),a.controller.abort(b)}function an(a){ai();let b=aO.get(a);b&&!b.done&&am(b,Error("canceled"));let c={providerId:a,controller:new AbortController,timeout:null,prompt:null,resolver:null,rejecter:null,notifyLog:[],done:!1};return aO.set(a,c),c.timeout=setTimeout(()=>am(c,Error("login timed out")),6e5),c.timeout.unref?.(),c}async function ao(a){try{let b=await (0,s.uU)();return ak(a),b}catch(b){throw al(a,b),b}}async function ap(a,b,c,d){let e=!1,f={signal:a.controller.signal,prompt:async b=>{let c;return(ak(a),b.signal?.throwIfAborted(),void 0===d||e||"select"===b.type)?(ak(a),(c=b.signal?AbortSignal.any([a.controller.signal,b.signal]):a.controller.signal).throwIfAborted(),a.rejecter?.(Error("prompt replaced")),new Promise((d,e)=>{let f=!1,g=()=>{c.removeEventListener("abort",j),a.resolver===h&&(a.prompt=null,a.resolver=null,a.rejecter=null)},h=a=>{f||(f=!0,g(),d(a))},i=a=>{f||(f=!0,g(),e(a))},j=()=>i(c.reason instanceof Error?c.reason:Error("canceled"));a.prompt=b,a.resolver=h,a.rejecter=i,c.addEventListener("abort",j,{once:!0}),c.aborted&&j()})):(e=!0,d)},notify:b=>{aj(a)&&(a.notifyLog.push("string"==typeof b?b:JSON.stringify(b)),a.notifyLog.length>20&&a.notifyLog.shift())}};try{ak(a),await b.login(a.providerId,c,f),ak(a),al(a)&&B()}catch(b){throw al(a,b),b}}async function aq(a){let b=an(a),c=await ao(b);ap(b,c,"oauth").catch(()=>void 0)}function ar(a){ai();let b=aO.get(a);return b?{prompt:b.prompt?{type:b.prompt.type,message:b.prompt.message,placeholder:"placeholder"in b.prompt?b.prompt.placeholder:void 0,options:"select"===b.prompt.type?b.prompt.options.map(a=>({label:a.label,value:a.id})):void 0}:null,notifyLog:[...b.notifyLog],done:b.done,error:b.error}:{prompt:null,notifyLog:[],done:!0}}function as(a,b){let c=aO.get(a);return!!c&&!!aj(c)&&!!c.resolver&&(c.resolver(b),!0)}function at(a){ai();let b=aO.get(a);return!!b&&(b.done||am(b,Error("canceled")),!0)}function au(){return h().join((0,s.$M)(),"models.json")}class aP extends Error{}class aQ extends Error{constructor(){super("models.json 已被修改,请重新加载后再保存")}}function av(a){let b=[],c=(0,p.cZ)(a.replace(/^\uFEFF/,""),b,{allowTrailingComma:!0,allowEmptyContent:!1});if(b.length||!c){let a=b[0];throw new aP(`models.json JSONC 无效${a?` (${(0,p._n)(a.error)}, offset ${a.offset})`:""}`)}let d=(0,p.yQ)(c);if(!aw(d)||!aw(d.providers))throw new aP('models.json 顶层必须是 { "providers": { ... } }');for(let[a,b]of Object.entries(d.providers))if(!aw(b))throw new aP(`provider "${a}" 必须是对象`);return d}function aw(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)}async function ax(a){try{let b=await f().readFile(a,"utf8");return{content:b,revision:(0,i.createHash)("sha256").update(b).digest("hex")}}catch(a){if("ENOENT"!==a.code)throw a;return{content:void 0,revision:"missing"}}}async function ay(){let a=await ax(au());return{...function(a){let b=av(a),c=[];for(let[a,d]of Object.entries(b.providers))Object.prototype.hasOwnProperty.call(d,"apiKey")&&(delete d.apiKey,c.push(a));return{content:JSON.stringify(b,null,2),secretProviderIds:c}}(a.content??'{"providers":{}}'),exists:void 0!==a.content,revision:a.revision}}async function az(a){let b=(await o.ModelRuntime.create({modelsPath:a,credentials:new w.InMemoryCredentialStore,modelsStore:new w.InMemoryModelsStore,allowModelNetwork:!1,refreshOnCreate:!1})).getError();if(b)throw new aP(b)}async function aA(a,b,c,d){let e=av(b.content??'{"providers":{}}'),g=`${a}.${process.pid}.${(0,i.randomUUID)()}.tmp`;try{void 0!==b.content&&(await f().writeFile(g,JSON.stringify(e,null,2),{encoding:"utf8",flag:"wx",mode:384}),await az(g)),d?.(e);for(let[a,b]of Object.entries(c.providers)){if(!a.trim())throw new aP("provider ID 必须是非空字符串");for(let c of[...Array.isArray(b.models)?b.models:[],...aw(b.modelOverrides)?Object.values(b.modelOverrides):[]])if(aw(c)){for(let b of["contextWindow","maxTokens"])if(void 0!==c[b]&&("number"!=typeof c[b]||!Number.isSafeInteger(c[b])||c[b]<=0))throw new aP(`provider "${a}" 的 ${b} 必须是正整数`)}}if(await f().writeFile(g,JSON.stringify(c,null,2),{encoding:"utf8",flag:void 0===b.content?"wx":"w",mode:384}),await az(g),(await ax(a)).revision!==b.revision)throw new aQ;await f().rename(g,a)}finally{await f().rm(g,{force:!0}).catch(()=>void 0)}}async function aB(a,b){let c=au();await (0,x.Ax)(c,()=>(0,x._i)(c,async()=>{let d=await ax(c);if(void 0!==b&&b!==d.revision)throw new aQ;let e=av(a);await aA(c,d,e,a=>{for(let[b,c]of Object.entries(e.providers))if(null===c.apiKey)delete c.apiKey;else if(void 0===c.apiKey){let d=a.providers[b];d&&Object.prototype.hasOwnProperty.call(d,"apiKey")&&(c.apiKey=d.apiKey)}for(let a of Object.values(e.providers))void 0===a.apiKey&&"string"==typeof a.baseUrl&&/^https?:\/\/(localhost|127\.0\.0\.1|\[::1\]|192\.168\.|10\.|172\.(1[6-9]|2\d|3[01])\.)/i.test(a.baseUrl.trim())&&(a.apiKey="unused")})})),await (0,s.x9)(),B(),await (0,u.Sj)()}async function aC(a,b){let c=(await (0,s.uU)()).getModel(a,b);if(!c)throw new aP(`找不到模型:${a}/${b}`);let d=(await D()).get(a)?.get(b);return{contextWindow:Number(c.contextWindow)||0,builtin:d||null}}async function aD(a,b){return await (0,s.NU)(),aC(a,b)}async function aE(a,b,c){if(!Number.isSafeInteger(c)||c<=0)throw new aP("contextWindow 必须是正整数");await aC(a,b);let d=au();return await (0,x.Ax)(d,()=>(0,x._i)(d,async()=>{let e=await ax(d),f=av(e.content??'{"providers":{}}'),g=(0,v.Ax)(f.providers,a,b,c);await aA(d,e,{...f,providers:g})})),await (0,s.x9)(),B(),(0,u.oW)(a,b),aC(a,b)}d()}catch(a){d(a)}})},71553:a=>{a.exports=require("node:dns/promises")},71808:(a,b,c)=>{var d,e,f,g,h,i,j,k,l;function m(a){return 32===a||9===a}function n(a){return 10===a||13===a}function o(a){return a>=48&&a<=57}c.d(b,{yQ:()=>q,cZ:()=>p,_n:()=>r}),(i=d||(d={}))[i.lineFeed=10]="lineFeed",i[i.carriageReturn=13]="carriageReturn",i[i.space=32]="space",i[i._0=48]="_0",i[i._1=49]="_1",i[i._2=50]="_2",i[i._3=51]="_3",i[i._4=52]="_4",i[i._5=53]="_5",i[i._6=54]="_6",i[i._7=55]="_7",i[i._8=56]="_8",i[i._9=57]="_9",i[i.a=97]="a",i[i.b=98]="b",i[i.c=99]="c",i[i.d=100]="d",i[i.e=101]="e",i[i.f=102]="f",i[i.g=103]="g",i[i.h=104]="h",i[i.i=105]="i",i[i.j=106]="j",i[i.k=107]="k",i[i.l=108]="l",i[i.m=109]="m",i[i.n=110]="n",i[i.o=111]="o",i[i.p=112]="p",i[i.q=113]="q",i[i.r=114]="r",i[i.s=115]="s",i[i.t=116]="t",i[i.u=117]="u",i[i.v=118]="v",i[i.w=119]="w",i[i.x=120]="x",i[i.y=121]="y",i[i.z=122]="z",i[i.A=65]="A",i[i.B=66]="B",i[i.C=67]="C",i[i.D=68]="D",i[i.E=69]="E",i[i.F=70]="F",i[i.G=71]="G",i[i.H=72]="H",i[i.I=73]="I",i[i.J=74]="J",i[i.K=75]="K",i[i.L=76]="L",i[i.M=77]="M",i[i.N=78]="N",i[i.O=79]="O",i[i.P=80]="P",i[i.Q=81]="Q",i[i.R=82]="R",i[i.S=83]="S",i[i.T=84]="T",i[i.U=85]="U",i[i.V=86]="V",i[i.W=87]="W",i[i.X=88]="X",i[i.Y=89]="Y",i[i.Z=90]="Z",i[i.asterisk=42]="asterisk",i[i.backslash=92]="backslash",i[i.closeBrace=125]="closeBrace",i[i.closeBracket=93]="closeBracket",i[i.colon=58]="colon",i[i.comma=44]="comma",i[i.dot=46]="dot",i[i.doubleQuote=34]="doubleQuote",i[i.minus=45]="minus",i[i.openBrace=123]="openBrace",i[i.openBracket=91]="openBracket",i[i.plus=43]="plus",i[i.slash=47]="slash",i[i.formFeed=12]="formFeed",i[i.tab=9]="tab",Array(20).fill(0).map((a,b)=>" ".repeat(b)),Array(200).fill(0).map((a,b)=>"\n"+" ".repeat(b)),Array(200).fill(0).map((a,b)=>"\r"+" ".repeat(b)),Array(200).fill(0).map((a,b)=>"\r\n"+" ".repeat(b)),Array(200).fill(0).map((a,b)=>"\n"+" ".repeat(b)),Array(200).fill(0).map((a,b)=>"\r"+" ".repeat(b)),Array(200).fill(0).map((a,b)=>"\r\n"+" ".repeat(b)),(e||(e={})).DEFAULT={allowTrailingComma:!1},(j=f||(f={}))[j.None=0]="None",j[j.UnexpectedEndOfComment=1]="UnexpectedEndOfComment",j[j.UnexpectedEndOfString=2]="UnexpectedEndOfString",j[j.UnexpectedEndOfNumber=3]="UnexpectedEndOfNumber",j[j.InvalidUnicode=4]="InvalidUnicode",j[j.InvalidEscapeCharacter=5]="InvalidEscapeCharacter",j[j.InvalidCharacter=6]="InvalidCharacter",(k=g||(g={}))[k.OpenBraceToken=1]="OpenBraceToken",k[k.CloseBraceToken=2]="CloseBraceToken",k[k.OpenBracketToken=3]="OpenBracketToken",k[k.CloseBracketToken=4]="CloseBracketToken",k[k.CommaToken=5]="CommaToken",k[k.ColonToken=6]="ColonToken",k[k.NullKeyword=7]="NullKeyword",k[k.TrueKeyword=8]="TrueKeyword",k[k.FalseKeyword=9]="FalseKeyword",k[k.StringLiteral=10]="StringLiteral",k[k.NumericLiteral=11]="NumericLiteral",k[k.LineCommentTrivia=12]="LineCommentTrivia",k[k.BlockCommentTrivia=13]="BlockCommentTrivia",k[k.LineBreakTrivia=14]="LineBreakTrivia",k[k.Trivia=15]="Trivia",k[k.Unknown=16]="Unknown",k[k.EOF=17]="EOF";let p=function(a,b=[],c=e.DEFAULT){let d={type:"array",offset:-1,length:-1,children:[],parent:void 0};function f(a){"property"===d.type&&(d.length=a-d.offset,d=d.parent)}function g(a){return d.children.push(a),a}!function(a,b,c=e.DEFAULT){var d;let f=function(a,b=!1){let c=a.length,d=0,e="",f=0,g=16,h=0,i=0,j=0,k=0,l=0;function p(){if(e="",l=0,f=d,i=h,k=j,d>=c)return f=c,g=17;let b=a.charCodeAt(d);if(m(b)){do d++,e+=String.fromCharCode(b),b=a.charCodeAt(d);while(m(b));return g=15}if(n(b))return d++,e+=String.fromCharCode(b),13===b&&10===a.charCodeAt(d)&&(d++,e+="\n"),h++,j=d,g=14;switch(b){case 123:return d++,g=1;case 125:return d++,g=2;case 91:return d++,g=3;case 93:return d++,g=4;case 58:return d++,g=6;case 44:return d++,g=5;case 34:return d++,e=function(){let b="",e=d;for(;;){if(d>=c){b+=a.substring(e,d),l=2;break}let f=a.charCodeAt(d);if(34===f){b+=a.substring(e,d),d++;break}if(92===f){if(b+=a.substring(e,d),++d>=c){l=2;break}switch(a.charCodeAt(d++)){case 34:b+='"';break;case 92:b+="\\";break;case 47:b+="/";break;case 98:b+="\b";break;case 102:b+="\f";break;case 110:b+="\n";break;case 114:b+="\r";break;case 116:b+=" ";break;case 117:let f=function(b){let c=0,e=0;for(;c<4||!b;){let b=a.charCodeAt(d);if(b>=48&&b<=57)e=16*e+b-48;else if(b>=65&&b<=70)e=16*e+b-65+10;else if(b>=97&&b<=102)e=16*e+b-97+10;else break;d++,c++}return c<4&&(e=-1),e}(!0);f>=0?b+=String.fromCharCode(f):l=4;break;default:l=5}e=d;continue}if(f>=0&&f<=31)if(n(f)){b+=a.substring(e,d),l=2;break}else l=6;d++}return b}(),g=10;case 47:let p=d-1;if(47===a.charCodeAt(d+1)){for(d+=2;d<c&&!n(a.charCodeAt(d));)d++;return e=a.substring(p,d),g=12}if(42===a.charCodeAt(d+1)){d+=2;let b=c-1,f=!1;for(;d<b;){let b=a.charCodeAt(d);if(42===b&&47===a.charCodeAt(d+1)){d+=2,f=!0;break}d++,n(b)&&(13===b&&10===a.charCodeAt(d)&&d++,h++,j=d)}return f||(d++,l=1),e=a.substring(p,d),g=13}return e+=String.fromCharCode(b),d++,g=16;case 45:if(e+=String.fromCharCode(b),++d===c||!o(a.charCodeAt(d)))return g=16;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return e+=function(){let b=d;if(48===a.charCodeAt(d))d++;else for(d++;d<a.length&&o(a.charCodeAt(d));)d++;if(d<a.length&&46===a.charCodeAt(d)){if(!(++d<a.length&&o(a.charCodeAt(d))))return l=3,a.substring(b,d);for(d++;d<a.length&&o(a.charCodeAt(d));)d++}let c=d;if(d<a.length&&(69===a.charCodeAt(d)||101===a.charCodeAt(d)))if((++d<a.length&&43===a.charCodeAt(d)||45===a.charCodeAt(d))&&d++,d<a.length&&o(a.charCodeAt(d))){for(d++;d<a.length&&o(a.charCodeAt(d));)d++;c=d}else l=3;return a.substring(b,c)}(),g=11;default:for(;d<c&&function(a){if(m(a)||n(a))return!1;switch(a){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return!1}return!0}(b);)d++,b=a.charCodeAt(d);if(f!==d){switch(e=a.substring(f,d)){case"true":return g=8;case"false":return g=9;case"null":return g=7}return g=16}return e+=String.fromCharCode(b),d++,g=16}}return{setPosition:function(a){d=a,e="",f=0,g=16,l=0},getPosition:()=>d,scan:b?function(){let a;do a=p();while(a>=12&&a<=15);return a}:p,getToken:()=>g,getTokenValue:()=>e,getTokenOffset:()=>f,getTokenLength:()=>d-f,getTokenStartLine:()=>i,getTokenStartCharacter:()=>f-k,getTokenError:()=>l}}(a,!1),g=[],h=0;function i(a){return a?b=>0===h&&a(b,f.getTokenOffset(),f.getTokenLength(),f.getTokenStartLine(),f.getTokenStartCharacter()):()=>!0}function j(a){return a?b=>0===h&&a(b,f.getTokenOffset(),f.getTokenLength(),f.getTokenStartLine(),f.getTokenStartCharacter(),()=>g.slice()):()=>!0}function k(a){return a?()=>{h>0?h++:!1===a(f.getTokenOffset(),f.getTokenLength(),f.getTokenStartLine(),f.getTokenStartCharacter(),()=>g.slice())&&(h=1)}:()=>!0}function l(a){return a?()=>{h>0&&h--,0===h&&a(f.getTokenOffset(),f.getTokenLength(),f.getTokenStartLine(),f.getTokenStartCharacter())}:()=>!0}let p=k(b.onObjectBegin),q=j(b.onObjectProperty),r=l(b.onObjectEnd),s=k(b.onArrayBegin),t=l(b.onArrayEnd),u=j(b.onLiteralValue),v=i(b.onSeparator),w=(d=b.onComment)?()=>0===h&&d(f.getTokenOffset(),f.getTokenLength(),f.getTokenStartLine(),f.getTokenStartCharacter()):()=>!0,x=i(b.onError),y=c&&c.disallowComments,z=c&&c.allowTrailingComma;function A(){for(;;){let a=f.scan();switch(f.getTokenError()){case 4:B(14);break;case 5:B(15);break;case 3:B(13);break;case 1:y||B(11);break;case 2:B(12);break;case 6:B(16)}switch(a){case 12:case 13:y?B(10):w();break;case 16:B(1);break;case 15:case 14:break;default:return a}}}function B(a,b=[],c=[]){if(x(a),b.length+c.length>0){let a=f.getToken();for(;17!==a;){if(-1!==b.indexOf(a)){A();break}if(-1!==c.indexOf(a))break;a=A()}}}function C(a){let b=f.getTokenValue();return a?u(b):(q(b),g.push(b)),A(),!0}if(A(),17===f.getToken())return c.allowEmptyContent||B(4,[],[]);!function a(){switch(f.getToken()){case 3:s(),A();let b=!0,c=!1;for(;4!==f.getToken()&&17!==f.getToken();){if(5===f.getToken()){if(c||B(4,[],[]),v(","),A(),4===f.getToken()&&z)break}else c&&B(6,[],[]);b?(g.push(0),b=!1):g[g.length-1]++,a()||B(4,[],[4,5]),c=!0}return t(),b||g.pop(),4!==f.getToken()?B(8,[4],[]):A(),!0;case 1:p(),A();let d=!1;for(;2!==f.getToken()&&17!==f.getToken();){if(5===f.getToken()){if(d||B(4,[],[]),v(","),A(),2===f.getToken()&&z)break}else d&&B(6,[],[]);(10!==f.getToken()?(B(3,[],[2,5]),1):(C(!1),6===f.getToken()?(v(":"),A(),a()||B(4,[],[2,5])):B(5,[],[2,5]),g.pop(),0))&&B(4,[],[2,5]),d=!0}return r(),2!==f.getToken()?B(7,[2],[]):A(),!0;case 10:return C(!0);default:switch(f.getToken()){case 11:let e=Number(f.getTokenValue());isNaN(e)&&(B(2),e=0),u(e);break;case 7:u(null);break;case 8:u(!0);break;case 9:u(!1);break;default:return!1}return A(),!0}}()?B(4,[],[]):17!==f.getToken()&&B(9,[],[])}(a,{onObjectBegin:a=>{d=g({type:"object",offset:a,length:-1,parent:d,children:[]})},onObjectProperty:(a,b,c)=>{(d=g({type:"property",offset:b,length:-1,parent:d,children:[]})).children.push({type:"string",value:a,offset:b,length:c,parent:d})},onObjectEnd:(a,b)=>{f(a+b),d.length=a+b-d.offset,d=d.parent,f(a+b)},onArrayBegin:(a,b)=>{d=g({type:"array",offset:a,length:-1,parent:d,children:[]})},onArrayEnd:(a,b)=>{d.length=a+b-d.offset,d=d.parent,f(a+b)},onLiteralValue:(a,b,c)=>{g({type:function(a){switch(typeof a){case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"object":if(!a)return"null";if(Array.isArray(a))return"array";return"object";default:return"null"}}(a),offset:b,length:c,parent:d,value:a}),f(b+c)},onSeparator:(a,b,c)=>{"property"===d.type&&(":"===a?d.colonOffset=b:","===a&&f(b))},onError:(a,c,d)=>{b.push({error:a,offset:c,length:d})}},c);let h=d.children[0];return h&&delete h.parent,h},q=function a(b){switch(b.type){case"array":return b.children.map(a);case"object":let c=Object.create(null);for(let d of b.children){let b=d.children[1];b&&(c[d.children[0].value]=a(b))}return c;case"null":case"string":case"number":case"boolean":return b.value;default:return}};function r(a){switch(a){case 1:return"InvalidSymbol";case 2:return"InvalidNumberFormat";case 3:return"PropertyNameExpected";case 4:return"ValueExpected";case 5:return"ColonExpected";case 6:return"CommaExpected";case 7:return"CloseBraceExpected";case 8:return"CloseBracketExpected";case 9:return"EndOfFileExpected";case 10:return"InvalidCommentToken";case 11:return"UnexpectedEndOfComment";case 12:return"UnexpectedEndOfString";case 13:return"UnexpectedEndOfNumber";case 14:return"InvalidUnicode";case 15:return"InvalidEscapeCharacter";case 16:return"InvalidCharacter"}return"<unknown ParseErrorCode>"}(l=h||(h={}))[l.InvalidSymbol=1]="InvalidSymbol",l[l.InvalidNumberFormat=2]="InvalidNumberFormat",l[l.PropertyNameExpected=3]="PropertyNameExpected",l[l.ValueExpected=4]="ValueExpected",l[l.ColonExpected=5]="ColonExpected",l[l.CommaExpected=6]="CommaExpected",l[l.CloseBraceExpected=7]="CloseBraceExpected",l[l.CloseBracketExpected=8]="CloseBracketExpected",l[l.EndOfFileExpected=9]="EndOfFileExpected",l[l.InvalidCommentToken=10]="InvalidCommentToken",l[l.UnexpectedEndOfComment=11]="UnexpectedEndOfComment",l[l.UnexpectedEndOfString=12]="UnexpectedEndOfString",l[l.UnexpectedEndOfNumber=13]="UnexpectedEndOfNumber",l[l.InvalidUnicode=14]="InvalidUnicode",l[l.InvalidEscapeCharacter=15]="InvalidEscapeCharacter",l[l.InvalidCharacter=16]="InvalidCharacter"},73024:a=>{a.exports=require("node:fs")},75430:a=>{a.exports=import("@earendil-works/pi-coding-agent")},75554:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{DY:()=>s,Gh:()=>x,J0:()=>r,MO:()=>p});var e=c(51455),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c(86159),k=c(87982),l=c(49904),m=a([k]);k=(m.then?(await m)():m)[0];let t=16384,u=2e4,v=3,w=2e3;function n(){return h().join((0,k.$M)(),"settings.json")}async function o(){return(0,j.op)(n())}async function p(){let a=(await o()).enabledModels;return!Array.isArray(a)||a.some(a=>"string"!=typeof a)?null:a}function q(a,b){let c=a[b];return c&&"object"==typeof c&&!Array.isArray(c)?c:{}}async function r(){let a=await o(),b=a.compaction??{},c=a.retry??{},d=(a,b)=>"number"==typeof a&&Number.isSafeInteger(a)&&a>=0?a:b;return{compaction:{enabled:!1!==b.enabled,reserveTokens:d(b.reserveTokens,t),keepRecentTokens:d(b.keepRecentTokens,u)},retry:{enabled:!1!==c.enabled,maxRetries:d(c.maxRetries,v),baseDelayMs:d(c.baseDelayMs,w)}}}class x extends Error{}async function s(a){let b=function(a){if(!a||"object"!=typeof a||Array.isArray(a))throw new x("invalid settings patch");if(Object.keys(a).some(a=>"compaction"!==a&&"retry"!==a))throw new x("unknown settings field");let b={};for(let c of["compaction","retry"]){if(void 0===a[c])continue;let d=a[c];if(!d||"object"!=typeof d||Array.isArray(d))throw new x(`invalid ${c} settings`);let e="compaction"===c?["enabled","reserveTokens","keepRecentTokens"]:["enabled","maxRetries","baseDelayMs"];for(let[a,b]of Object.entries(d)){if(!e.includes(a))throw new x(`unknown ${c} field: ${a}`);if("enabled"===a){if("boolean"!=typeof b)throw new x(`${c}.${a} must be boolean`)}else if("number"!=typeof b||!Number.isSafeInteger(b)||b<0||b>1e9)throw new x(`${c}.${a} must be a non-negative integer`)}"compaction"===c?b.compaction=d:b.retry=d}return b}(a),c=n();await (0,l.Ax)(c,()=>(0,l._i)(c,async()=>{let a=await (0,j.mu)(c);b.compaction&&(a.compaction={...q(a,"compaction"),...b.compaction}),b.retry&&(a.retry={...q(a,"retry"),...b.retry}),await f().mkdir(h().dirname(c),{recursive:!0});let d=`${c}.${process.pid}.${(0,i.randomUUID)()}.tmp`;try{await f().writeFile(d,JSON.stringify(a,null," "),"utf8"),await f().rename(d,c)}finally{await f().rm(d,{force:!0}).catch(()=>void 0)}(0,j.Ix)(c)})),await (0,k.BW)()}d()}catch(a){d(a)}})},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},80481:a=>{a.exports=require("node:readline")},81115:a=>{a.exports=require("constants")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},94735:a=>{a.exports=require("events")},97138:(a,b,c)=>{c.d(b,{fv:()=>d,lG:()=>e});let d=604800,e=2592e3},98203:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>A,patchFetch:()=>z,routeModule:()=>v,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>x});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(10246),u=c(37527);let v=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/models/route",pathname:"/api/models",filename:"route",bundlePath:"app/api/models/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/home/runner/work/PiWeb/PiWeb/src/app/api/models/route.ts",nextConfigOutput:"",userland:()=>c(38708),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:x,serverHooks:y}=v;function z(){return(0,f.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:x})}async function A(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),v.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/models/route";"/index"===d&&(d="/");let f=await v.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!f)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:w,deploymentId:x,params:y,nextConfig:z,parsedUrl:A,isDraftMode:B,prerenderManifest:C,routerServerContext:D,isOnDemandRevalidate:E,revalidateOnlyGenerated:F,resolvedPathname:G,clientReferenceManifest:H,serverActionsManifest:I,previewProps:J}=f,K=(0,j.normalizeAppPath)(d),L=!!C.routes[G]&&(v.isDev||(0,t.isRouteCacheOwner)(G,v.cacheOwner,C.routes[G])),M=!!(C.dynamicRoutes[K]||L),N=async()=>((null==D?void 0:D.render404)?await D.render404(a,b,A,!1):b.end("This page could not be found"),null);if(M&&!B){let a=C.dynamicRoutes[K];if(a&&!1===a.fallback&&!L){if(z.adapterPath)return await N();throw new s.NoFallbackError}}let O=null;!M||v.isDev||B||(O="/index"===(O=G)?"/":O),I&&H&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:H,serverActionsManifest:I});let P=a.method||"GET",Q=(0,h.getTracer)(),R=Q.getActiveScopeSpan(),S=!!(null==D?void 0:D.isWrappedByNextServer),T=!!(0,g.getRequestMeta)(a,"minimalMode"),U=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,z,J,C,T);null==U||U.resetRequestCache(),globalThis.__incrementalCache=U;let V={params:y,previewProps:J,renderOpts:{experimental:{authInterrupts:!!z.experimental.authInterrupts,useCacheTimeout:z.experimental.useCacheTimeout,durableUseCacheEntries:!!z.experimental.durableUseCacheEntries},cacheComponents:!!z.cacheComponents,validationLevel:z.experimental.instantInsights.validationLevel,isDraftMode:B,incrementalCache:U,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:z.cacheLife,staticPageGenerationTimeout:z.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0},sharedContext:{buildId:w,deploymentId:x}},W=new k.NodeNextRequest(a),X=new k.NodeNextResponse(b),Y=l.NextRequestAdapter.fromNodeNextRequest(W,(0,l.signalFromNodeResponse)(b)),Z=async({previousCacheEntry:e})=>{try{if(!T&&E&&F&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=null===O?await v.handle(Y,V):await v.prerender(Y,V);a.fetchMetrics=V.renderOpts.fetchMetrics;let f=V.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=V.renderOpts.collectedTags;if(!M)return await (0,o.I)(W,X,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==V.renderOpts.collectedRevalidate&&!(V.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&V.renderOpts.collectedRevalidate,e=void 0===V.renderOpts.collectedExpire||V.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?z.expireTime:void 0:V.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await v.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==O,isOnDemandRevalidate:E})},!1,D),b}},$=async(d,f)=>{try{var g,i;let d=await v.handleResponse({req:a,nextConfig:z,cacheKey:O,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,previewProps:J,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:F,responseGenerator:Z,waitUntil:c.waitUntil,isMinimalMode:T});if(null!==d&&"error"in d)throw d.error;if(!M)return;if((null==d||null==(g=d.value)?void 0:g.kind)!==u.CachedRouteKind.APP_ROUTE)throw Error(`Invariant: app-route received invalid cache entry ${null==d||null==(i=d.value)?void 0:i.kind}`);T||b.setHeader("x-nextjs-cache",E?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),B&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let f=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);T&&M||f.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||f.get("Cache-Control")||f.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(W,X,new Response(d.value.body,{headers:f,status:d.value.status||200}));return}catch(c){if(c instanceof s.NoFallbackError||await v.onRequestError(a,c,{routerKind:"App Router",routePath:K,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==O,isOnDemandRevalidate:E})},!1,D),M)throw c;if(b.headersSent){if(d){let a=c instanceof Error?c:Error("Unknown app route error");d.recordException(a),d.setStatus({code:h.SpanStatusCode.ERROR,message:a.message}),d.setAttribute("error.type",a.name)}b.writableEnded||b.destroyed||b.end()}else await (0,o.I)(W,X,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=Q.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||K,g=`${P} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":g}),d.updateName(g),f&&f!==d&&(f.setAttribute("http.route",e),f.updateName(g))})()}};if(S&&R)await $(R,void 0);else{let b=Q.getActiveScopeSpan();await Q.withPropagatedContext(a.headers,()=>Q.trace(m.BaseServerSpan.handleRequest,{spanName:`${P} ${d}`,kind:h.SpanKind.SERVER,attributes:{"http.method":P,"http.target":a.url}},a=>$(a,b)),void 0,!S)}}}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813,974,538,9920,8686],()=>b(b.s=98203));module.exports=c})();
|