ompgui 0.7.1 → 0.7.3
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 +9 -8
- package/.next/build-manifest.json +3 -3
- package/.next/prerender-manifest.json +4 -4
- package/.next/react-loadable-manifest.json +14 -7
- package/.next/required-server-files.js +2 -2
- package/.next/required-server-files.json +2 -2
- package/.next/routes-manifest.json +6 -0
- package/.next/server/app/_global-error/page.js +2 -2
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +2 -2
- package/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +3 -3
- package/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
- package/.next/server/app/api/agent/[id]/events/route.js +1 -1
- package/.next/server/app/api/agent/[id]/route.js +1 -1
- package/.next/server/app/api/agent/new/route.js +1 -1
- package/.next/server/app/api/agent/running/events/route.js +2 -2
- package/.next/server/app/api/agents/[name]/route.js +1 -1
- package/.next/server/app/api/agents/route.js +1 -1
- package/.next/server/app/api/agents/unpack/route.js +1 -1
- package/.next/server/app/api/app-update/route.js +1 -1
- package/.next/server/app/api/auth/all-providers/route.js +1 -1
- package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/login/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/providers/route.js +1 -1
- package/.next/server/app/api/cwd/browse/route.js +1 -1
- package/.next/server/app/api/cwd/validate/route.js +2 -2
- package/.next/server/app/api/daemon/route.js +1 -0
- package/.next/server/app/api/daemon/route.js.nft.json +1 -0
- package/.next/server/app/api/daemon/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/default-cwd/route.js +1 -1
- package/.next/server/app/api/file-index/route.js +1 -1
- package/.next/server/app/api/files/[...path]/route.js +1 -1
- package/.next/server/app/api/git/diff/route.js +2 -2
- package/.next/server/app/api/git/status/route.js +2 -2
- package/.next/server/app/api/home/route.js +1 -1
- package/.next/server/app/api/mcp/route.js +2 -2
- package/.next/server/app/api/model-roles/route.js +1 -1
- package/.next/server/app/api/models/route.js +1 -1
- package/.next/server/app/api/models-config/catalog/route.js +1 -1
- package/.next/server/app/api/models-config/route.js +1 -1
- package/.next/server/app/api/models-config/test/route.js +1 -1
- package/.next/server/app/api/omp-settings/route.js +1 -1
- package/.next/server/app/api/omp-update/route.js +2 -2
- package/.next/server/app/api/omp-version/route.js +1 -1
- package/.next/server/app/api/plugins/route.js +1 -1
- package/.next/server/app/api/projects/route.js +1 -1
- package/.next/server/app/api/providers/enable/route.js +1 -1
- package/.next/server/app/api/relay/devices/[id]/route.js +1 -1
- package/.next/server/app/api/relay/devices/route.js +1 -1
- package/.next/server/app/api/relay/pair/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/archive/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/auto-name/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/entries/[entryId]/media/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/subagents/[subagentId]/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/subagents/route.js +1 -1
- package/.next/server/app/api/sessions/archive/route.js +1 -1
- package/.next/server/app/api/sessions/import/route.js +1 -1
- package/.next/server/app/api/sessions/route.js +1 -1
- package/.next/server/app/api/skills/check/route.js +1 -1
- package/.next/server/app/api/skills/install/route.js +1 -1
- package/.next/server/app/api/skills/route.js +1 -1
- package/.next/server/app/api/skills/search/route.js +1 -1
- package/.next/server/app/api/skills/update/route.js +1 -1
- package/.next/server/app/api/usage/route.js +1 -1
- package/.next/server/app/api/web-auth/session/route.js +1 -1
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/apple-icon.png/route.js +1 -1
- package/.next/server/app/favicon.ico/route.js +1 -1
- package/.next/server/app/icon.svg/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +4 -4
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/index.segments/_full.segment.rsc +4 -4
- 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_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/manifest.webmanifest/route.js +2 -2
- package/.next/server/app/page.js +2 -2
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/pair/page.js +1 -1
- package/.next/server/app/pair/page_client-reference-manifest.js +1 -1
- package/.next/server/app/pair.html +1 -1
- package/.next/server/app/pair.rsc +4 -4
- package/.next/server/app/pair.segments/_full.segment.rsc +4 -4
- package/.next/server/app/pair.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/pair.segments/pair/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/relay/route.js +1 -1
- package/.next/server/app-paths-manifest.json +9 -8
- package/.next/server/chunks/5318.js +1 -1
- package/.next/server/chunks/714.js +1 -1
- package/.next/server/chunks/795.js +9 -9
- package/.next/server/chunks/8834.js +1 -1
- package/.next/server/chunks/933.js +1 -1
- package/.next/server/functions-config-manifest.json +1 -0
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/middleware.js +3 -3
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/-e2ns-fZZm-4SQeI3H4-N/_buildManifest.js +1 -0
- package/.next/static/chunks/{1012.2a9e89fd82a08863.js → 1012.1393cfb59d12bb81.js} +1 -1
- package/.next/static/chunks/1941.66c3a0942c0c3e5d.js +1 -0
- package/.next/static/chunks/{2201.e6bbfc26ce87920c.js → 2201.46326eb058826eb2.js} +1 -1
- package/.next/static/chunks/{3274.4cdcf3a52b884856.js → 3274.2a04ea2716225057.js} +1 -1
- package/.next/static/chunks/3944.6215b78f025077b3.js +1 -0
- package/.next/static/chunks/4315-142781649334beb2.js +1 -0
- package/.next/static/chunks/4906-7dff29185f63f908.js +1 -0
- package/.next/static/chunks/587-c973123b3c9a5b80.js +1 -0
- package/.next/static/chunks/{7488.42415d6f1b86c86b.js → 7488.1403755f69bda581.js} +1 -1
- package/.next/static/chunks/app/_global-error/page-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/bash-output/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/events/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/agent/new/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/agent/running/events/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/agents/[name]/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/agents/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/agents/unpack/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/app-update/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/auth/all-providers/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/auth/login/[provider]/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/auth/providers/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/cwd/browse/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/cwd/validate/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/daemon/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/default-cwd/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/file-index/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/files/[...path]/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/git/diff/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/git/status/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/home/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/mcp/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/model-roles/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/models/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/models-config/catalog/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/models-config/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/models-config/test/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/omp-settings/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/omp-update/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/omp-version/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/plugins/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/projects/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/providers/enable/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/relay/devices/[id]/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/relay/devices/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/relay/pair/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/archive/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/context/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/media/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/export/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/state/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/subagents/[subagentId]/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/subagents/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/sessions/archive/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/sessions/import/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/sessions/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/skills/check/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/skills/install/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/skills/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/skills/search/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/skills/update/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/usage/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/web-auth/session/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/login/page-a54174ed920300f7.js +1 -0
- package/.next/static/chunks/app/manifest.webmanifest/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/app/{page-dcb62803f94d0c1c.js → page-fe40fe42b5ca1207.js} +1 -1
- package/.next/static/chunks/app/pair/page-d72423ffc5654e29.js +1 -0
- package/.next/static/chunks/app/relay/route-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-710453b8adcf7d31.js +1 -0
- package/.next/static/chunks/webpack-d6e3c46873419a16.js +1 -0
- package/.next/static/css/63b622301ba107de.css +3 -0
- package/README.ja.md +28 -3
- package/README.ko.md +28 -3
- package/README.md +28 -3
- package/README.zh-CN.md +28 -3
- package/bin/ompgui-options.js +9 -2
- package/bin/ompgui-service.js +223 -0
- package/bin/ompgui-update.js +85 -22
- package/bin/ompgui.js +7 -0
- package/package.json +2 -1
- package/.next/static/QFUZ5E_wgec_DUeAoDxrb/_buildManifest.js +0 -1
- package/.next/static/chunks/1108.1f1e4661b6e402fb.js +0 -1
- package/.next/static/chunks/3065-24b6f2111fc740ea.js +0 -1
- package/.next/static/chunks/4315-bd1069a88334f3a3.js +0 -1
- package/.next/static/chunks/9090-6ce028ffeafe2aee.js +0 -1
- package/.next/static/chunks/app/_global-error/page-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/bash-output/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/events/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/agent/new/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/agent/running/events/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/agents/[name]/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/agents/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/agents/unpack/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/app-update/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/auth/all-providers/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/auth/login/[provider]/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/auth/providers/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/cwd/browse/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/cwd/validate/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/default-cwd/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/file-index/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/files/[...path]/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/git/diff/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/git/status/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/home/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/mcp/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/model-roles/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/models/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/models-config/catalog/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/models-config/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/models-config/test/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/omp-settings/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/omp-update/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/omp-version/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/plugins/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/projects/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/providers/enable/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/relay/devices/[id]/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/relay/devices/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/relay/pair/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/archive/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/context/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/media/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/export/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/state/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/subagents/[subagentId]/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/subagents/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/sessions/archive/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/sessions/import/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/sessions/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/skills/check/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/skills/install/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/skills/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/skills/search/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/skills/update/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/usage/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/web-auth/session/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/login/page-76b98ef41947c31b.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/app/pair/page-e1ad2578491903a8.js +0 -1
- package/.next/static/chunks/app/relay/route-2900441d61e06609.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-2900441d61e06609.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-2900441d61e06609.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-2900441d61e06609.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-2900441d61e06609.js +0 -1
- package/.next/static/chunks/webpack-789dbb5c37af2dc8.js +0 -1
- package/.next/static/css/d4456801cd2ff0da.css +0 -3
- /package/.next/static/{QFUZ5E_wgec_DUeAoDxrb → -e2ns-fZZm-4SQeI3H4-N}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3274],{33274:(e,r,t)=>{t.r(r),t.d(r,{ModelsConfig:()=>eR,modelsConfigFingerprint:()=>eT});var o=t(95155),n=t(12115),i=t(31590),a=t(4315);function s(e){if("string"!=typeof e)return!1;let r=e.trim();if(!r||r.startsWith("//"))return!1;try{let e=new URL(r);return"http:"===e.protocol||"https:"===e.protocol||"mailto:"===e.protocol}catch{return!1}}function l(e){return Object.entries(e).every(([e,r])=>"id"===e?"string"==typeof r&&""===r.trim():void 0===r)}var d=t(18136),c=t(90071),p=t(30808),x=t(69090),u=t(38158),g=t(19805),v=t(88074),h=t(65738),m=t(12651),f=t(86272),b=t(82749),y=t(64577),j=t(35484),C=t(2125),k=t(19707),S=t(40557),w=t(80846),z=t(51087),I=t(84111);function T({open:e,providerName:r,providerBaseUrl:t,existingIds:i,onAdd:s,onClose:l}){let{t:d}=(0,a.s9)(),[c,x]=(0,n.useState)(""),[u,g]=(0,n.useState)(null),[v,h]=(0,n.useState)(!1),[m,f]=(0,n.useState)(null),b=(0,n.useRef)(null),y=(0,n.useRef)(0);(0,n.useEffect)(()=>{if(!e)return;b.current?.focus();let o=c.trim();if(!o){y.current+=1,g(null),f(null),h(!1);return}let n=new URLSearchParams({q:o,limit:String(30)});r&&n.set("provider",r),t&&n.set("baseUrl",t);let i=new AbortController,a=y.current+1;y.current=a,h(!0);let s=setTimeout(async()=>{try{let e=await fetch(`/api/models-config/catalog?${n.toString()}`,{signal:i.signal}),r=await e.json();if(y.current!==a)return;if(!e.ok)throw Error(r.error??`HTTP ${e.status}`);g(r.models??[]),f(null)}catch(e){if(y.current!==a)return;"AbortError"!==e.name&&f(e instanceof Error?e.message:String(e))}finally{y.current===a&&h(!1)}},250);return()=>{clearTimeout(s),i.abort()}},[c,e,r,t]);let j={display:"flex",flexDirection:"row",alignItems:"center",gap:10,padding:"9px 12px",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",marginBottom:"var(--space-3)",minWidth:0};return(0,o.jsx)(p.lG,{open:!0,onOpenChange:e=>{e||l()},children:(0,o.jsxs)(p.Cf,{ariaLabel:d("modelsConfig.catalogTitle"),style:{width:720,maxWidth:"min(92vw, 720px)",maxHeight:"min(72dvh, calc(100dvh - 32px))",padding:0,display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,o.jsx)(p.L3,{style:{margin:"14px 18px 8px",fontSize:18},children:d("modelsConfig.catalogTitle")}),(0,o.jsx)("div",{style:{padding:"8px 14px 12px",flexShrink:0},children:(0,o.jsx)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-4)",padding:"6px 10px",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)"},children:(0,o.jsx)("input",{ref:b,value:c,onChange:e=>x(e.target.value),"aria-label":d("modelsConfig.catalogSearchPlaceholder"),placeholder:d("modelsConfig.catalogSearchPlaceholder"),style:{flex:1,background:"none",border:"none",outline:"none",color:"var(--text)",fontSize:"var(--text-base)",boxSizing:"border-box",minWidth:0}})})}),(0,o.jsx)("div",{style:{flex:1,overflowY:"auto",padding:"4px 14px 14px"},children:m?(0,o.jsx)("div",{role:"alert",style:{padding:"20px 0",fontSize:"var(--text-md)",color:"var(--status-error)",textAlign:"center"},children:d("modelsConfig.catalogError",{error:m})}):v?(0,o.jsx)("div",{role:"status","aria-live":"polite",style:{padding:"20px 0",fontSize:"var(--text-md)",color:"var(--text-dim)",textAlign:"center"},children:d("modelsConfig.catalogLoading")}):null===u?(0,o.jsx)("div",{style:{padding:"20px 0",fontSize:"var(--text-md)",color:"var(--text-dim)",textAlign:"center"},children:d("modelsConfig.catalogSearchPlaceholder")}):0===u.length?(0,o.jsx)("div",{style:{padding:"20px 0",fontSize:"var(--text-md)",color:"var(--text-dim)",textAlign:"center"},children:d("modelsConfig.catalogNoResults")}):u.map(e=>{var r;let n=i.has(e.id),a=!!e.providerBaseUrl&&!t;return(0,o.jsxs)("div",{style:j,children:[(0,o.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-3)",minWidth:0},children:[(0,o.jsx)("span",{style:{fontSize:"var(--text-md)",fontFamily:"var(--font-mono)",color:"var(--text)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.id}),e.reasoning&&(0,o.jsx)("span",{style:{fontSize:9,padding:"1px 4px",background:"var(--accent-subtle)",color:"var(--accent)",borderRadius:3,flexShrink:0},children:"T"})]}),(0,o.jsxs)("div",{style:{fontSize:"var(--text-sm)",color:"var(--text-dim)",marginTop:2,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[e.providerName,void 0!==e.contextWindow?` \xb7 ${d("modelsConfig.catalogContext",{n:(r=e.contextWindow,(0,I.wk)(r))})}`:"",void 0!==e.cost.input&&void 0!==e.cost.output?` \xb7 ${d("modelsConfig.catalogPrice",{input:e.cost.input,output:e.cost.output})}`:"",a?` \xb7 ${d("modelsConfig.catalogSetBaseUrl")}`:""]})]}),n?(0,o.jsx)("span",{style:{flexShrink:0,padding:"5px 12px",background:"none",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",color:"var(--text-dim)",fontSize:12},children:d("modelsConfig.catalogAdded")}):(0,o.jsx)("button",{type:"button","aria-label":"Add "+e.id+" ("+e.providerName+")",onClick:()=>{let r;return s((r=void 0!==e.cost.input&&void 0!==e.cost.output,{id:e.id,...e.name&&e.name!==e.id?{name:e.name}:{},...void 0!==e.reasoning?{reasoning:e.reasoning}:{},...e.input?{input:e.input}:{},...void 0!==e.contextWindow?{contextWindow:e.contextWindow}:{},...void 0!==e.maxTokens?{maxTokens:e.maxTokens}:{},...r?{cost:{input:e.cost.input,output:e.cost.output,cacheRead:e.cost.cacheRead??0,cacheWrite:e.cost.cacheWrite??0}}:{}}),e.providerBaseUrl)},style:{flexShrink:0,padding:"5px 12px",background:"var(--accent)",border:"none",borderRadius:"var(--radius-control)",color:"var(--on-accent)",cursor:"pointer",fontSize:"var(--text-md)",fontWeight:600},children:d("modelsConfig.catalogAdd")})]},e.key)})})]})})}var R=t(67381),A=t(64433),P=t(70350),M=t(88195),O=t(9312),$=t(87275),W=t(22008),E=t(95476),N=t(35029),U=t(14489),L=t(78728),D=t(19872),H=t(7751),K=t(92526),B=t(48238),F=t(57794),_=t(41098),J=t(84604),q=t(15315),Y=t(74278),V=t(55457),X=t(71437),Z=t(29167),G=t(97283),Q=t(34166),ee=t(33889),er=t(85486),et=t(74068),eo=t(83546),en=t(83709);let ei={anthropic:{Icon:R.A,hasColor:!1},openai:{Icon:A.A,hasColor:!1},"openai-codex":{Icon:A.A,hasColor:!1},google:{Icon:P.A,hasColor:!0},"google-vertex":{Icon:P.A,hasColor:!0},"ant-ling":{Icon:ee.A,hasColor:!0},deepseek:{Icon:M.A,hasColor:!0},groq:{Icon:O.A,hasColor:!1},mistral:{Icon:$.A,hasColor:!0},moonshotai:{Icon:W.A,hasColor:!1},"moonshotai-cn":{Icon:W.A,hasColor:!1},moonshot:{Icon:W.A,hasColor:!1},minimax:{Icon:E.A,hasColor:!0},"minimax-cn":{Icon:E.A,hasColor:!0},fireworks:{Icon:N.A,hasColor:!0},huggingface:{Icon:U.A,hasColor:!0},cerebras:{Icon:L.A,hasColor:!0},openrouter:{Icon:D.A,hasColor:!1},xai:{Icon:H.A,hasColor:!1},"cloudflare-ai-gateway":{Icon:K.A,hasColor:!0},"cloudflare-workers-ai":{Icon:K.A,hasColor:!0},"vercel-ai-gateway":{Icon:B.A,hasColor:!1},"github-copilot":{Icon:F.A,hasColor:!1},"amazon-bedrock":{Icon:_.A,hasColor:!0},"azure-openai-responses":{Icon:J.A,hasColor:!0},"kimi-coding":{Icon:q.A,hasColor:!0},nvidia:{Icon:er.A,hasColor:!0},opencode:{Icon:et.A,hasColor:!1},"opencode-go":{Icon:et.A,hasColor:!1},qwen:{Icon:Y.A,hasColor:!0},xiaomi:{Icon:eo.A,hasColor:!1},"xiaomi-token-plan-ams":{Icon:eo.A,hasColor:!1},"xiaomi-token-plan-cn":{Icon:eo.A,hasColor:!1},"xiaomi-token-plan-sgp":{Icon:eo.A,hasColor:!1},zai:{Icon:en.A,hasColor:!1},"zai-coding-cn":{Icon:en.A,hasColor:!1},zhipu:{Icon:V.A,hasColor:!0},cohere:{Icon:X.A,hasColor:!0},perplexity:{Icon:Z.A,hasColor:!0},together:{Icon:G.A,hasColor:!0},grok:{Icon:Q.A,hasColor:!1}};function ea({models:e,connectedProviders:r,onChanged:t}){let[i,a]=(0,n.useState)(null),[s,l]=(0,n.useState)(null),[d,c]=(0,n.useState)(!1);(0,n.useEffect)(()=>{fetch("/api/omp-settings").then(e=>e.ok?e.json():Promise.reject(Error(`HTTP ${e.status}`))).then(e=>a(e.settings??{})).catch(e=>l(e instanceof Error?e.message:String(e)))},[]);let p=(0,n.useRef)(null),x=(0,n.useRef)(!1),v=e=>{a(e),c(!0),l(null),p.current=e,x.current||(x.current=!0,(async()=>{try{for(;null!==p.current;){let e=p.current;p.current=null;try{let r=await fetch("/api/omp-settings",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({settings:e})}),o=await r.json();if(!r.ok||o.error)throw Error(o.error||`HTTP ${r.status}`);null===p.current&&a(o.settings??e),await t()}catch(e){l(e instanceof Error?e.message:String(e));break}}}finally{x.current=!1,c(!1)}})())};if(!i)return(0,o.jsx)("div",{style:{color:"var(--text-muted)",fontSize:"var(--text-md)"},children:"Loading native OMP registry settings..."});let h=!0===i.registryHasScopedEntries,m=e.map(e=>`${e.provider}/${e.id}`),f=(i.enabledModels?.length??0)>0,b=new Set(i.enabledModels??m),y=[...new Set([...e.map(e=>e.provider),...r.map(e=>e.id),...i.disabledProviders??[]])].sort(),j=new Set(i.disabledProviders??[]),C=i.modelProviderOrder??[],k=[...C,...y.filter(e=>!C.includes(e))];return(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:14},children:[(0,o.jsxs)("div",{children:[(0,o.jsx)(ex,{children:"Native OMP Model Registry"}),(0,o.jsxs)("p",{style:{margin:"4px 0 0",color:"var(--text-muted)",fontSize:"var(--text-md)",lineHeight:1.5},children:["These settings affect the models OMP itself can resolve. They are saved in ",(0,o.jsx)("code",{children:"~/.omp/agent/config.yml"}),", unlike the Composer picker."]})]}),(0,o.jsxs)("section",{style:{border:"1px solid var(--border)",borderRadius:"var(--radius-card)",overflow:"hidden"},children:[(0,o.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:"var(--space-4)",padding:"10px 12px",background:"var(--bg-panel)",color:"var(--text)",fontSize:"var(--text-md)",fontWeight:600},children:[(0,o.jsx)("input",{type:"checkbox",checked:f,disabled:d||h,onChange:e=>void v({...i,enabledModels:e.target.checked?m:[]})})," Restrict OMP to selected models"]}),(0,o.jsx)("p",{style:{margin:0,padding:"8px 12px",color:"var(--text-muted)",fontSize:"var(--text-sm)",lineHeight:1.45},children:f?"Unchecked models are unavailable to every OMP session.":"All currently available OMP models are allowed."}),f&&(0,o.jsx)("div",{style:{maxHeight:260,overflowY:"auto",borderTop:"1px solid var(--border)"},children:e.map(e=>{let r=`${e.provider}/${e.id}`;return(0,o.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:"var(--space-4)",padding:"6px 12px",color:"var(--text-muted)",fontSize:"var(--text-md)"},children:[(0,o.jsx)("input",{type:"checkbox",checked:b.has(r),disabled:d||h,onChange:e=>{let t=new Set(b);e.target.checked?t.add(r):t.delete(r),v({...i,enabledModels:[...t]})}}),(0,o.jsx)("code",{children:r})]},r)})})]}),(0,o.jsxs)("section",{style:{border:"1px solid var(--border)",borderRadius:"var(--radius-card)",overflow:"hidden"},children:[(0,o.jsx)("div",{style:{padding:"10px 12px",background:"var(--bg-panel)",color:"var(--text)",fontSize:"var(--text-md)",fontWeight:600},children:"Disabled Providers"}),(0,o.jsx)("p",{style:{margin:0,padding:"8px 12px",color:"var(--text-muted)",fontSize:"var(--text-sm)",lineHeight:1.45},children:"Disabling a provider removes it from OMP's model registry, even if it has credentials."}),(0,o.jsx)("div",{style:{borderTop:"1px solid var(--border)"},children:y.map(e=>(0,o.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:"var(--space-4)",padding:"7px 12px",color:"var(--text-muted)",fontSize:"var(--text-md)"},children:[(0,o.jsx)("input",{type:"checkbox",checked:j.has(e),disabled:d||h,onChange:r=>{let t=new Set(j);r.target.checked?t.add(e):t.delete(e),v({...i,disabledProviders:[...t]})}}),(0,o.jsx)(ez,{id:e,size:14}),(0,o.jsx)("code",{children:e})]},e))})]}),(0,o.jsxs)("section",{style:{border:"1px solid var(--border)",borderRadius:"var(--radius-card)",overflow:"hidden"},children:[(0,o.jsx)("div",{style:{padding:"10px 12px",background:"var(--bg-panel)",color:"var(--text)",fontSize:"var(--text-md)",fontWeight:600},children:"Provider Preference"}),(0,o.jsx)("p",{style:{margin:0,padding:"8px 12px",color:"var(--text-muted)",fontSize:"var(--text-sm)",lineHeight:1.45},children:"Sets OMP's provider order when a model id is ambiguous."}),(0,o.jsx)("div",{style:{borderTop:"1px solid var(--border)"},children:k.map((e,r)=>(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-4)",padding:"7px 12px",color:"var(--text-muted)",fontSize:"var(--text-md)"},children:[(0,o.jsx)(ez,{id:e,size:14}),(0,o.jsx)("code",{style:{flex:1},children:e}),(0,o.jsx)("button",{type:"button",disabled:d||h||0===r,onClick:()=>{let e=[...k];[e[r-1],e[r]]=[e[r],e[r-1]],v({...i,modelProviderOrder:e})},title:"Move provider up","aria-label":`Move provider ${e} up`,className:"ui-focus-ring",style:{width:24,height:24,padding:0,display:"inline-flex",alignItems:"center",justifyContent:"center",border:"none",borderRadius:4,background:"transparent",color:"var(--text-muted)",cursor:"pointer"},children:(0,o.jsx)(u.A,{size:14})}),(0,o.jsx)("button",{type:"button",disabled:d||h||r===k.length-1,onClick:()=>{let e=[...k];[e[r+1],e[r]]=[e[r],e[r+1]],v({...i,modelProviderOrder:e})},title:"Move provider down","aria-label":`Move provider ${e} down`,className:"ui-focus-ring",style:{width:24,height:24,padding:0,display:"inline-flex",alignItems:"center",justifyContent:"center",border:"none",borderRadius:4,background:"transparent",color:"var(--text-muted)",cursor:"pointer"},children:(0,o.jsx)(g.A,{size:14})})]},e))})]}),h&&(0,o.jsxs)("div",{role:"status",style:{padding:"9px 11px",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",color:"var(--text-muted)",fontSize:"var(--text-md)",lineHeight:1.45},children:["OMP path-scoped registry entries are configured. Edit ",(0,o.jsx)("code",{children:"config.yml"})," directly to preserve their path rules."]}),s&&(0,o.jsx)("div",{role:"alert",style:{color:"var(--status-error)",fontSize:"var(--text-md)"},children:s})]})}let es="omp-composer-models",el=["default","smol","slow","vision","plan","designer","commit","tiny","task","advisor"];function ed({models:e}){let[r,t]=(0,n.useState)({}),[i,a]=(0,n.useState)(!0),[s,l]=(0,n.useState)(!1),[d,c]=(0,n.useState)(null);(0,n.useEffect)(()=>{fetch("/api/model-roles").then(e=>e.ok?e.json():Promise.reject(Error(`HTTP ${e.status}`))).then(e=>t(e.roles??{})).catch(e=>c(e instanceof Error?e.message:String(e))).finally(()=>a(!1))},[]);let p=async()=>{l(!0),c(null);try{let e=await fetch("/api/model-roles",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({roles:r})}),t=await e.json();if(!e.ok||t.error)throw Error(t.error||`HTTP ${e.status}`);z.oR.success("OMP model roles saved")}catch(e){c(e instanceof Error?e.message:String(e))}finally{l(!1)}};return(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:14},children:[(0,o.jsxs)("div",{children:[(0,o.jsx)(ex,{children:"OMP Model Roles"}),(0,o.jsxs)("p",{style:{margin:"4px 0 0",fontSize:"var(--text-md)",color:"var(--text-muted)",lineHeight:1.5},children:["Saved natively in ",(0,o.jsx)("code",{children:"~/.omp/agent/config.yml"}),". Choose an OMP model and its supported reasoning level for each role."]})]}),i?(0,o.jsx)("div",{style:{color:"var(--text-muted)",fontSize:"var(--text-md)"},children:"Loading roles..."}):el.map(n=>{let i,a,s,l,d;return(0,o.jsxs)("div",{className:"model-role-row",style:{display:"grid",gridTemplateColumns:"82px minmax(0, 1fr) minmax(110px, 0.35fr)",alignItems:"center",gap:10,fontSize:"var(--text-md)"},children:[(0,o.jsx)("code",{style:{color:"var(--text-muted)"},children:n}),(a=(i=r[n]??"").replace(/:([^,:]+)$/,""),s=i.match(/:([^,:]+)$/)?.[1]??"",l=e.find(e=>`${e.provider}/${e.id}`===a),d=!a||!!l,(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)("select",{"aria-label":`Model override for ${n}`,value:a,onChange:e=>{var o;let i,a;return o=e.target.value,i=r[n]??"",a=i.match(/:([^,:]+)$/)?.[1]??"",void t(e=>({...e,[n]:o?`${o}${a?`:${a}`:""}`:""}))},style:{minWidth:0,padding:"7px 9px",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"var(--bg)",color:"var(--text)",fontSize:"var(--text-md)"},children:[(0,o.jsx)("option",{value:"",children:"No override"}),!d&&(0,o.jsxs)("option",{value:a,children:[a," (not currently available)"]}),e.map(e=>(0,o.jsxs)("option",{value:`${e.provider}/${e.id}`,children:[e.name||e.id," (",e.provider,"/",e.id,")"]},`${e.provider}:${e.id}`))]}),(0,o.jsxs)("select",{"aria-label":`Thinking level for ${n}`,value:s,disabled:!l,onChange:e=>{var o;let i;return o=e.target.value,i=(r[n]??"").replace(/:([^,:]+)$/,""),void t(e=>({...e,[n]:i?`${i}${o?`:${o}`:""}`:""}))},style:{minWidth:0,padding:"7px 9px",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"var(--bg)",color:"var(--text)",fontSize:"var(--text-md)",opacity:l?1:.55},children:[(0,o.jsx)("option",{value:"",children:"Model default"}),(l?.thinkingLevels??[]).filter(e=>"off"!==e).map(e=>(0,o.jsx)("option",{value:e,children:e},e))]})]}))]},n)}),d&&(0,o.jsx)("div",{role:"alert",style:{color:"var(--status-error)",fontSize:"var(--text-md)"},children:d}),(0,o.jsx)("button",{type:"button",onClick:()=>void p(),disabled:i||s,style:{alignSelf:"flex-start",padding:"7px 12px",border:"none",borderRadius:"var(--radius-control)",background:"var(--accent)",color:"var(--on-accent)",cursor:s?"wait":"pointer",fontSize:"var(--text-md)",fontWeight:600},children:s?"Saving...":"Save OMP roles"})]})}let ec=["openai-completions","openai-responses","openai-codex-responses","azure-openai-responses","anthropic-messages","bedrock-converse-stream","google-generative-ai","google-gemini-cli","google-vertex"];function ep({text:e}){let r=e.split("`");return 1===r.length?(0,o.jsx)(o.Fragment,{children:e}):(0,o.jsx)(o.Fragment,{children:r.map((e,r)=>r%2==1?(0,o.jsx)("code",{style:{fontFamily:"var(--font-mono)"},children:e},r):e)})}function ex({children:e}){return(0,o.jsx)("div",{style:{fontSize:"var(--text-sm)",fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.06em",marginBottom:2},children:e})}function eu({icon:e,label:r,selected:t,onClick:n}){return(0,o.jsxs)("button",{type:"button",onClick:n,style:{width:"100%",padding:"8px 10px",border:"none",borderRadius:"var(--radius-control)",background:t?"var(--bg-selected)":"none",color:t?"var(--text)":"var(--text-muted)",cursor:"pointer",fontSize:"var(--text-md)",textAlign:"left",display:"flex",alignItems:"center",gap:"var(--space-4)",fontWeight:t?600:400},children:[(0,o.jsx)(e,{size:14,style:{color:t?"var(--accent)":"currentColor",flexShrink:0}}),r]})}let eg=e=>({onMouseEnter:r=>{e||(r.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:r=>{e||(r.currentTarget.style.background="none")}}),ev={onMouseEnter:e=>{e.currentTarget.style.color="var(--accent)",e.currentTarget.style.borderColor="var(--accent)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.borderColor="var(--border)"}},eh=[{label:"\uD83E\uDD99 Ollama",baseUrl:"http://localhost:11434/v1",auth:"none"},{label:"⚡ LM Studio / vLLM",baseUrl:"http://localhost:1234/v1",auth:"none"},{label:"\uD83C\uDF10 OpenRouter",baseUrl:"https://openrouter.ai/api/v1",auth:"apiKey"},{label:"\uD83E\uDD16 Local Proxy (:2455)",baseUrl:"http://127.0.0.1:2455/v1",auth:"keep"}],em={padding:"4px 8px",fontSize:"var(--text-sm)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"var(--bg)",color:"var(--text)",cursor:"pointer"};function ef({name:e,provider:r,onChange:t,onRename:i,onDelete:s}){let{t:l}=(0,a.s9)(),[d,c]=(0,n.useState)(e),[p,u]=(0,n.useState)(!1);(0,n.useEffect)(()=>c(e),[e]);let g=(e,o)=>t({...r,[e]:o}),m=(0,x.JT)(()=>d.trim()?null:l("modelsConfig.errorNameRequired")),f=(0,x.JT)(()=>{let e=r.baseUrl??"";if(!e.trim())return null;try{let r=new URL(e);if("http:"!==r.protocol&&"https:"!==r.protocol)return l("modelsConfig.errorUrlInvalid");return null}catch{return l("modelsConfig.errorUrlInvalid")}}),b=!0===r.apiKeyConfigured,y=b&&void 0===r.apiKey,j=(0,x.JT)(()=>"none"===r.auth||"oauth"===r.auth||!r.models?.length||y||"string"==typeof r.apiKey&&r.apiKey.trim()?null:l("modelsConfig.errorApiKeyRequired")),C=d.trim(),k=r.baseUrl?r.baseUrl.replace(/^https?:\/\//,"").split("/")[0]||r.baseUrl:"Default endpoint";return(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-6)"},children:[(0,o.jsxs)("div",{style:{padding:"14px 16px",border:"1px solid var(--border)",borderRadius:"var(--radius-card)",background:"var(--bg-panel)",display:"flex",flexDirection:"column",gap:10,boxShadow:"var(--shadow-card)"},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"var(--space-5)"},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10},children:[(0,o.jsx)("div",{style:{width:"var(--control-height-lg)",height:"var(--control-height-lg)",borderRadius:"var(--radius-control)",background:"var(--bg-subtle)",border:"1px solid var(--border)",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:(0,o.jsx)(ez,{id:e,size:20})}),(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:2},children:[(0,o.jsx)("div",{style:{fontSize:15,fontWeight:700,fontFamily:"var(--font-mono)",color:"var(--text)"},children:e}),(0,o.jsx)("div",{style:{fontSize:"var(--text-sm)",color:"var(--text-muted)",fontFamily:"var(--font-mono)"},children:k})]})]}),(0,o.jsx)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-3)"},children:"none"===r.auth?(0,o.jsx)("span",{style:{fontSize:"var(--text-xs)",padding:"2px 7px",borderRadius:4,background:"var(--bg-subtle)",color:"var(--text-muted)",fontWeight:500},children:"Auth: None"}):y||"string"==typeof r.apiKey&&r.apiKey.length>0?(0,o.jsx)("span",{style:{fontSize:"var(--text-xs)",padding:"2px 7px",borderRadius:4,background:"color-mix(in srgb, var(--accent) 15%, transparent)",color:"var(--accent)",fontWeight:600},children:"Key Set"}):null===r.apiKey?(0,o.jsx)("span",{style:{fontSize:"var(--text-xs)",padding:"2px 7px",borderRadius:4,background:"color-mix(in srgb, var(--status-warning) 15%, transparent)",color:"var(--status-warning)",fontWeight:600},children:"Key Will Clear"}):(0,o.jsx)("span",{style:{fontSize:"var(--text-xs)",padding:"2px 7px",borderRadius:4,background:"color-mix(in srgb, var(--status-error) 15%, transparent)",color:"var(--status-error)",fontWeight:600},children:"Key Missing"})})]}),(0,o.jsxs)("div",{style:{borderTop:"1px solid var(--border)",paddingTop:10,marginTop:4},children:[(0,o.jsx)("div",{style:{fontSize:"var(--text-xs)",fontWeight:700,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.06em",marginBottom:6},children:"Quick Endpoint Presets"}),(0,o.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:"var(--space-3)"},children:eh.map(e=>(0,o.jsx)("button",{type:"button",onClick:()=>{t({...r,baseUrl:e.baseUrl,api:"openai-completions",auth:"keep"===e.auth?r.auth:e.auth}),z.oR.success(`Applied ${e.baseUrl} endpoint preset`)},style:em,children:e.label},e.baseUrl))})]})]}),(0,o.jsxs)(x.M_,{label:(0,o.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:"var(--space-3)"},children:[(0,o.jsx)(v.A,{size:12,"aria-hidden":"true"})," Configuration Details"]}),children:[(0,o.jsx)(x.D0,{label:l("modelsConfig.providerName"),required:!0,error:m.error,children:(0,o.jsx)(x.ks,{value:d,onChange:e=>{c(e),m.onChange()},placeholder:"provider-name",mono:!0,invalid:!!m.error,error:m.error,onBlurValidate:m.onBlur})}),C!==e&&(0,o.jsx)("button",{type:"button",onClick:()=>{m.onSubmit()||i(C)},style:{alignSelf:"flex-start",padding:"5px 12px",background:"var(--accent)",border:"none",borderRadius:"var(--radius-control)",color:"var(--on-accent)",cursor:"pointer",fontSize:"var(--text-sm)",fontWeight:600},children:l("modelsConfig.rename")}),(0,o.jsx)(x.D0,{label:l("modelsConfig.baseUrl"),error:f.error,children:(0,o.jsx)(x.ks,{value:r.baseUrl??"",onChange:e=>{g("baseUrl",e||void 0),f.onChange()},placeholder:"https://api.example.com/v1",mono:!0,invalid:!!f.error,error:f.error,onBlurValidate:f.onBlur})}),(0,o.jsxs)(x.D0,{label:l("modelsConfig.apiKey"),hint:(0,o.jsxs)("span",{children:[(0,o.jsx)(ep,{text:l("modelsConfig.apiKeyHint")}),y&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("br",{}),"A configured key is retained unless you replace it or explicitly clear it."]})]}),error:j.error,children:[(0,o.jsx)(x.L4,{value:"string"==typeof r.apiKey?r.apiKey:"",onChange:e=>{g("apiKey",e||(b?null:void 0)),j.onChange()},placeholder:l("modelsConfig.apiKeyPlaceholder"),invalid:!!j.error,error:j.error,onBlurValidate:j.onBlur,showLabel:l("modelsConfig.showApiKey"),hideLabel:l("modelsConfig.hideApiKey")}),b&&(0,o.jsx)("button",{type:"button",onClick:()=>{g("apiKey",null),j.onChange(),j.onBlur()},style:{alignSelf:"flex-start",padding:"4px 9px",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"none",color:"var(--text-muted)",cursor:"pointer",fontSize:"var(--text-sm)"},children:"Clear stored API key"})]}),(0,o.jsx)(x.Jl,{label:l("modelsConfig.noApiKeyRequired"),checked:"none"===r.auth,onChange:e=>{g("auth",e?"none":void 0),e&&j.onChange(),j.onBlur()}}),(0,o.jsx)(x.D0,{label:l("modelsConfig.api"),children:(0,o.jsx)(x.l6,{value:r.api??"openai-completions",onChange:e=>g("api",e),options:r.api&&!ec.includes(r.api)?[r.api,...ec]:ec,required:!0,placeholder:l("modelsConfig.inheritNone")})})]}),(0,o.jsxs)("section",{style:{padding:"14px 16px",border:"1px solid color-mix(in srgb, var(--status-error) 25%, transparent)",borderRadius:"var(--radius-card)",background:"var(--bg-panel)",display:"flex",alignItems:"center",justifyContent:"space-between",gap:"var(--space-5)"},children:[(0,o.jsxs)("div",{children:[(0,o.jsx)("div",{style:{fontSize:12.5,fontWeight:600,color:"var(--text)"},children:"Remove Provider"}),(0,o.jsxs)("div",{style:{fontSize:"var(--text-sm)",color:"var(--text-muted)",marginTop:2},children:["Delete ",e," and remove its models from models.yml configuration."]})]}),(0,o.jsxs)("button",{type:"button",onClick:()=>u(!0),style:{padding:"6px 12px",background:"none",border:"1px solid var(--status-error)",borderRadius:"var(--radius-control)",color:"var(--status-error)",cursor:"pointer",fontSize:"var(--text-md)",display:"inline-flex",alignItems:"center",gap:5,fontWeight:500,flexShrink:0},children:[(0,o.jsx)(h.A,{size:13,"aria-hidden":"true"})," ",l("modelsConfig.delete")]})]}),(0,o.jsx)(x.TM,{open:p,onOpenChange:u,title:l("modelsConfig.deleteProviderTitle",{name:e}),description:l("modelsConfig.deleteProviderBody",{name:e}),confirmLabel:l("modelsConfig.delete"),cancelLabel:l("modelsConfig.cancel"),danger:!0,onConfirm:()=>{u(!1),s()}})]})}let eb=["minimal","low","medium","high","xhigh","max"],ey={minimal:"var(--text-dim)",low:"color-mix(in srgb, var(--accent) 45%, var(--text-muted))",medium:"var(--accent)",high:"var(--accent-hover)",xhigh:"var(--status-warning)",max:"var(--status-error)"};function ej({value:e,onChange:r}){let{t}=(0,a.s9)(),n=e?.efforts,i=e?.effortMap??{},s=(t,o)=>{let a=new Set(n??[...eb]),s={...i};null===o?(a.delete(t),delete s[t]):(a.add(t),"omit"===o?delete s[t]:s[t]=o);let l=eb.filter(e=>a.has(e));0===l.length||l.length===eb.length&&0===Object.keys(s).length?r(void 0):r({...e??{},mode:e?.mode??"effort",efforts:l,effortMap:Object.keys(s).length?s:void 0})};return(0,o.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:2},children:eb.map(e=>{let r=void 0!==n&&!n.includes(e),a=r?null:i[e],l=r?"null":"string"==typeof a?"string":"omit",d="string"==typeof a?a:"",c=ey[e],p={padding:"4px 10px",fontSize:"var(--text-xs)",border:"none",cursor:"pointer",fontWeight:400,transition:"background var(--dur-fast) var(--ease-out-warm), color var(--dur-fast) var(--ease-out-warm)",whiteSpace:"nowrap",background:"var(--bg-panel)",color:"var(--text-dim)"},x={background:"var(--accent)",color:"var(--on-accent)",fontWeight:600};return(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-4)",padding:"5px 4px",borderRadius:"var(--radius-control)",background:"transparent",border:"1px solid transparent"},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:5,width:68,flexShrink:0},children:[(0,o.jsx)("span",{style:{width:6,height:6,borderRadius:"50%",background:c,flexShrink:0,opacity:"null"===l?.3:1}}),(0,o.jsx)("span",{style:{fontSize:"var(--text-sm)",fontFamily:"var(--font-mono)",color:"null"===l?"var(--text-dim)":"var(--text-muted)",textDecoration:"null"===l?"line-through":"none"},children:e})]}),(0,o.jsxs)("div",{style:{display:"flex",borderRadius:"var(--radius-control)",border:"1px solid var(--border)",overflow:"hidden",flexShrink:0},children:[(0,o.jsx)("button",{onClick:()=>s(e,"omit"),style:{...p,..."omit"===l?x:{}},children:t("modelsConfig.default")}),(0,o.jsx)("button",{onClick:()=>s(e,null),style:{...p,borderLeft:"1px solid var(--border)",..."null"===l?{background:"var(--status-error)",color:"var(--on-accent)",fontWeight:600}:{}},children:t("modelsConfig.disabled")})]}),(0,o.jsxs)("div",{style:{display:"flex",borderRadius:"var(--radius-control)",border:`1px solid ${"string"===l?"var(--accent)":"var(--border)"}`,overflow:"hidden",transition:"border-color var(--dur-fast) var(--ease-out-warm)"},children:[(0,o.jsx)("button",{onClick:()=>s(e,d||e),style:{...p,..."string"===l?x:{},borderRight:"1px solid var(--border)",flexShrink:0},children:t("modelsConfig.custom")}),(0,o.jsx)("input",{value:d,onChange:r=>s(e,r.target.value),onFocus:()=>{"string"!==l&&s(e,d||e)},placeholder:e,maxLength:10,style:{width:"12ch",background:"string"===l?"var(--bg)":"var(--bg-panel)",border:"none",outline:"none",color:"string"===l?"var(--text)":"var(--text-dim)",fontFamily:"var(--font-mono)",fontSize:"var(--text-sm)",padding:"4px 7px",transition:"background var(--dur-fast) var(--ease-out-warm), color var(--dur-fast) var(--ease-out-warm)"}})]})]},e)})})}let eC={input:"modelsConfig.costInput",output:"modelsConfig.costOutput",cacheRead:"modelsConfig.costCacheRead",cacheWrite:"modelsConfig.costCacheWrite"};function ek({providerName:e,provider:r,model:t,onChange:i,onDelete:s}){let{t:l}=(0,a.s9)(),[c,p]=(0,n.useState)({phase:"idle"}),[u,g]=(0,n.useState)(!1),v=(e,r)=>i({...t,[e]:r}),C=(0,x.JT)(()=>t.id.trim()?null:l("modelsConfig.errorIdRequired")),k=(()=>{if("idle"===c.phase)return null;if("testing"===c.phase)return l("modelsConfig.validatingConfig");let e=[void 0!==c.latencyMs?`${c.latencyMs}ms`:null,void 0!==c.status?`HTTP ${c.status}`:null].filter(Boolean);return"success"===c.phase?[l("modelsConfig.ok"),...e,c.responseText||null].filter(Boolean).join(" \xb7 "):[l("modelsConfig.failed"),...e,c.message].filter(Boolean).join(" \xb7 ")})();(0,n.useEffect)(()=>{p({phase:"idle"})},[e,r.baseUrl,r.api,r.apiKey,t.id,t.api]);let S=(0,n.useCallback)(async()=>{if(t.id.trim()&&"testing"!==c.phase){p({phase:"testing"});try{let o=await fetch("/api/models-config/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({providerName:e,provider:r,model:t})}),n=await o.json();if(!o.ok||!n.ok)return void p({phase:"error",message:n.error||n.code?(0,d.K)(n):`HTTP ${o.status}`,latencyMs:n.latencyMs,status:n.status});p({phase:"success",latencyMs:n.latencyMs,status:n.status,responseText:n.responseText})}catch(e){p({phase:"error",message:e instanceof Error?e.message:String(e)})}}},[t,r,e,c.phase]);return(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:14},children:[(0,o.jsxs)(x.M_,{label:(0,o.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:5},children:[(0,o.jsx)(m.A,{size:11,"aria-hidden":"true"})," ",l("modelsConfig.model")]}),children:[(0,o.jsxs)("div",{className:"model-detail-grid-2",style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:10},children:[(0,o.jsx)(x.D0,{label:l("modelsConfig.idRequired"),required:!0,error:C.error,children:(0,o.jsx)(x.ks,{value:t.id,onChange:e=>{v("id",e),C.onChange()},placeholder:"model-id",mono:!0,invalid:!!C.error,error:C.error,onBlurValidate:C.onBlur})}),(0,o.jsx)(x.D0,{label:l("modelsConfig.name"),children:(0,o.jsx)(x.ks,{value:t.name??"",onChange:e=>v("name",e||void 0),placeholder:l("modelsConfig.displayNamePlaceholder")})})]}),(0,o.jsx)(x.D0,{label:l("modelsConfig.apiOverride"),children:(0,o.jsx)(x.l6,{value:t.api??"",onChange:e=>v("api",e||void 0),options:t.api&&!ec.includes(t.api)?[t.api,...ec]:ec,placeholder:l("modelsConfig.inheritNone")})}),(0,o.jsxs)("div",{style:{display:"flex",gap:20,flexWrap:"wrap"},children:[(0,o.jsx)(x.Jl,{label:l("modelsConfig.reasoningThinking"),checked:t.reasoning??!1,onChange:e=>v("reasoning",e||void 0)}),(0,o.jsx)(x.Jl,{label:l("modelsConfig.imageInput"),checked:t.input?.includes("image")??!1,onChange:e=>v("input",e?["text","image"]:void 0)})]})]}),t.reasoning&&(0,o.jsxs)(x.M_,{label:(0,o.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:5},children:[(0,o.jsx)(f.A,{size:11,"aria-hidden":"true"})," ",l("modelsConfig.thinkingLevels")]}),children:[(0,o.jsx)("div",{style:{display:"flex",justifyContent:"flex-end"},children:t.thinking&&(0,o.jsxs)("button",{type:"button",onClick:()=>v("thinking",void 0),style:{fontSize:"var(--text-xs)",padding:"3px 9px",background:"none",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",color:"var(--text-dim)",cursor:"pointer",display:"inline-flex",alignItems:"center",gap:"var(--space-2)"},children:[(0,o.jsx)(b.A,{size:10,"aria-hidden":"true"})," ",l("modelsConfig.resetToAuto")]})}),(0,o.jsx)(ej,{value:t.thinking,onChange:e=>v("thinking",e)})]}),(0,o.jsx)(x.M_,{label:l("modelsConfig.tokenLimits"),children:(0,o.jsxs)("div",{className:"model-detail-grid-2",style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:10},children:[(0,o.jsx)(x.D0,{label:l("modelsConfig.contextWindowTokens"),children:(0,o.jsx)(x.XZ,{value:void 0!==t.contextWindow?String(t.contextWindow):"",onChange:e=>v("contextWindow",e?parseInt(e):void 0),placeholder:"128000"})}),(0,o.jsx)(x.D0,{label:l("modelsConfig.maxOutputTokens"),children:(0,o.jsx)(x.XZ,{value:void 0!==t.maxTokens?String(t.maxTokens):"",onChange:e=>v("maxTokens",e?parseInt(e):void 0),placeholder:"16384"})})]})}),(0,o.jsx)(x.M_,{label:l("modelsConfig.costPerMillion"),children:(0,o.jsx)("div",{className:"model-detail-grid-4",style:{display:"grid",gridTemplateColumns:"1fr 1fr 1fr 1fr",gap:10},children:["input","output","cacheRead","cacheWrite"].map(e=>(0,o.jsx)(x.D0,{label:l(eC[e]),children:(0,o.jsx)(x.XZ,{value:t.cost?.[e]!==void 0?String(t.cost[e]):"",onChange:r=>{let o;return o=parseFloat(r),void i({...t,cost:{...t.cost??{},[e]:isNaN(o)?void 0:o}})},placeholder:"0"})},e))})}),(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:"var(--space-4)"},children:[k&&(0,o.jsxs)("span",{title:k,style:{maxWidth:360,padding:"4px 10px",border:`1px solid ${"error"===c.phase?"color-mix(in srgb, var(--accent) 30%, transparent)":"success"===c.phase?"color-mix(in srgb, var(--accent) 25%, transparent)":"var(--border)"}`,borderRadius:"var(--radius-control)",background:"error"===c.phase?"color-mix(in srgb, var(--accent) 10%, var(--bg-panel))":"success"===c.phase?"color-mix(in srgb, var(--accent) 8%, var(--bg-panel))":"var(--bg-panel)",color:"error"===c.phase||"success"===c.phase?"var(--text)":"var(--text-muted)",fontSize:"var(--text-sm)",display:"inline-flex",alignItems:"center",gap:"var(--space-3)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:["success"===c.phase?(0,o.jsx)(y.A,{size:11,"aria-hidden":"true"}):null,"error"===c.phase?(0,o.jsx)(j.A,{size:11,"aria-hidden":"true"}):null,k]}),(0,o.jsxs)("div",{style:{display:"flex",gap:"var(--space-4)",marginLeft:"auto"},children:[(0,o.jsxs)("button",{type:"button",onClick:S,disabled:!t.id.trim()||"testing"===c.phase,title:l("modelsConfig.testTitle"),style:{padding:"5px 12px",background:"success"===c.phase?"color-mix(in srgb, var(--accent) 18%, var(--bg-panel))":"none",border:`1px solid ${"success"===c.phase?"color-mix(in srgb, var(--accent) 30%, transparent)":"var(--border)"}`,borderRadius:"var(--radius-control)",color:"success"===c.phase?"var(--accent)":t.id.trim()&&"testing"!==c.phase?"var(--text-muted)":"var(--text-dim)",cursor:t.id.trim()&&"testing"!==c.phase?"pointer":"not-allowed",fontSize:"var(--text-sm)",display:"inline-flex",alignItems:"center",justifyContent:"center",gap:5},children:["success"===c.phase&&(0,o.jsx)(y.A,{size:11,"aria-hidden":"true"}),"testing"===c.phase?l("modelsConfig.testing"):"success"===c.phase?l("modelsConfig.ok"):l("modelsConfig.test")]}),(0,o.jsxs)("button",{type:"button",onClick:()=>g(!0),style:{padding:"5px 12px",background:"none",border:"1px solid color-mix(in srgb, var(--accent) 30%, transparent)",borderRadius:"var(--radius-control)",color:"var(--accent)",cursor:"pointer",fontSize:"var(--text-sm)",display:"inline-flex",alignItems:"center",gap:"var(--space-2)"},children:[(0,o.jsx)(h.A,{size:11,"aria-hidden":"true"})," ",l("modelsConfig.remove")]})]})]}),(0,o.jsx)(x.TM,{open:u,onOpenChange:g,title:l("modelsConfig.removeModelTitle",{id:t.id}),description:l("modelsConfig.removeModelBody",{id:t.id}),confirmLabel:l("modelsConfig.remove"),cancelLabel:l("modelsConfig.cancel"),danger:!0,onConfirm:()=>{g(!1),s()}})]})}function eS({provider:e,onRefresh:r}){let{t,tn:i}=(0,a.s9)(),[l,c]=(0,n.useState)({phase:"idle"}),[p,x]=(0,n.useState)(""),u=(0,n.useRef)(null),g=(0,n.useRef)(null);(0,n.useEffect)(()=>{("auth"===l.phase||"prompt"===l.phase)&&setTimeout(()=>g.current?.focus(),50)},[l.phase]),(0,n.useEffect)(()=>{c({phase:"idle"}),x(""),u.current?.close(),u.current=null},[e.id]),(0,n.useEffect)(()=>()=>{u.current?.close()},[]);let v=(0,n.useCallback)(()=>{u.current?.close(),c({phase:"connecting"}),x("");let o=new EventSource(`/api/auth/login/${encodeURIComponent(e.id)}`);u.current=o,o.onmessage=e=>{let t;try{t=JSON.parse(e.data)}catch{return}"auth"===t.type?(c({phase:"auth",url:t.url,instructions:t.instructions??null,token:t.token}),s(t.url)&&window.open(t.url,"_blank","noopener,noreferrer")):"device_code"===t.type?(c({phase:"device_code",userCode:t.userCode,verificationUri:t.verificationUri,intervalSeconds:t.intervalSeconds??null,expiresInSeconds:t.expiresInSeconds??null}),s(t.verificationUri)&&window.open(t.verificationUri,"_blank","noopener,noreferrer")):"prompt_request"===t.type?c({phase:"prompt",message:t.message,placeholder:t.placeholder??null,token:t.token}):"select_request"===t.type?c({phase:"select",message:t.message,options:t.options??[],token:t.token}):"progress"===t.type?c({phase:"progress",message:t.message}):"success"===t.type?(o.close(),c({phase:"success"}),r()):"error"===t.type?(o.close(),c({phase:"error",message:t.message})):"cancelled"===t.type&&(o.close(),c({phase:"idle"}))},o.onerror=()=>{o.close(),c(e=>"success"===e.phase?e:{phase:"error",message:t("modelsConfig.connectionLost")})}},[e.id,r,t]),h=(0,n.useCallback)(async(r,o)=>{if(o.trim()){c({phase:"progress",message:t("modelsConfig.verifying")});try{let n=await fetch(`/api/auth/login/${encodeURIComponent(e.id)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:r,code:o.trim()})});if(!n.ok){let e=await n.json().catch(()=>({}));c({phase:"error",message:e.error||e.code?(0,d.K)(e):t("modelsConfig.serverError",{status:n.status})});return}x("")}catch(e){c({phase:"error",message:e instanceof Error?e.message:t("modelsConfig.networkError")})}}},[e.id,t]),m=(0,n.useCallback)(async(r,o)=>{c({phase:"progress",message:t("modelsConfig.continuing")});try{let n=await fetch(`/api/auth/login/${encodeURIComponent(e.id)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:r,code:o})});if(!n.ok){let e=await n.json().catch(()=>({}));c({phase:"error",message:e.error||e.code?(0,d.K)(e):t("modelsConfig.serverError",{status:n.status})})}}catch(e){c({phase:"error",message:e instanceof Error?e.message:t("modelsConfig.networkError")})}},[e.id,t]),f="connecting"===l.phase||"progress"===l.phase||"auth"===l.phase||"device_code"===l.phase||"prompt"===l.phase||"select"===l.phase;return(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-6)"},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,o.jsx)(ex,{children:t("modelsConfig.subscription")}),(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-3)"},children:[(0,o.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:e.loggedIn?"var(--status-success)":"var(--border)",display:"inline-block"}}),(0,o.jsx)("span",{style:{fontSize:"var(--text-sm)",color:e.loggedIn?"var(--status-success)":"var(--text-dim)"},children:e.loggedIn?t("modelsConfig.connected"):t("modelsConfig.notConnected")})]})]}),(0,o.jsxs)("div",{style:{minHeight:48},children:["idle"===l.phase&&(0,o.jsx)("p",{style:{margin:0,fontSize:"var(--text-md)",color:"var(--text-muted)",lineHeight:1.5},children:e.loggedIn?t("modelsConfig.alreadyConnected"):t("modelsConfig.connectAccount",{name:e.name})}),"connecting"===l.phase&&(0,o.jsx)("p",{style:{margin:0,fontSize:"var(--text-md)",color:"var(--text-muted)"},children:t("modelsConfig.openingBrowser")}),"select"===l.phase&&(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:10},children:[(0,o.jsx)("p",{style:{margin:0,fontSize:"var(--text-md)",color:"var(--text-muted)",lineHeight:1.5},children:l.message}),(0,o.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-3)"},children:l.options.map(e=>(0,o.jsx)("button",{onClick:()=>m(l.token,e.id),style:{padding:"6px 9px",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",color:"var(--text)",cursor:"pointer",fontSize:"var(--text-md)",textAlign:"left"},children:e.label},e.id))})]}),("auth"===l.phase||"prompt"===l.phase)&&(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:10},children:[(0,o.jsx)("p",{style:{margin:0,fontSize:"var(--text-md)",color:"var(--text-muted)",lineHeight:1.5},children:"auth"===l.phase?t("modelsConfig.completeSignIn"):l.message}),"auth"===l.phase&&(0,o.jsx)("p",{style:{margin:0,fontSize:"var(--text-sm)",color:"var(--text-dim)",lineHeight:1.5},children:(0,o.jsx)("a",{href:l.url,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--accent)",wordBreak:"break-all"},children:t("modelsConfig.browserNotOpened")})}),(0,o.jsxs)("div",{style:{display:"flex",gap:"var(--space-3)"},children:[(0,o.jsx)("input",{ref:g,value:p,onChange:e=>x(e.target.value),onKeyDown:e=>{"Enter"===e.key&&h(l.token,p)},placeholder:"auth"===l.phase?"http://localhost:1455/auth/callback?code=…":l.placeholder??t("modelsConfig.enterValue"),style:{flex:1,padding:"6px 9px",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",color:"var(--text)",fontSize:"var(--text-md)",outline:"none",fontFamily:"var(--font-mono)",boxSizing:"border-box"}}),(0,o.jsx)("button",{onClick:()=>h(l.token,p),disabled:!p.trim(),style:{padding:"6px 12px",background:p.trim()?"var(--accent)":"var(--bg-panel)",border:"none",borderRadius:"var(--radius-control)",color:p.trim()?"var(--on-accent)":"var(--text-dim)",cursor:p.trim()?"pointer":"not-allowed",fontSize:"var(--text-md)",fontWeight:600,flexShrink:0},children:t("modelsConfig.submit")})]})]}),"device_code"===l.phase&&(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:10},children:[(0,o.jsx)("p",{style:{margin:0,fontSize:"var(--text-md)",color:"var(--text-muted)",lineHeight:1.5},children:t("modelsConfig.deviceCodeInstructions")}),(0,o.jsx)("div",{style:{padding:"8px 10px",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",color:"var(--text)",fontSize:16,fontWeight:700,fontFamily:"var(--font-mono)",letterSpacing:0},children:l.userCode}),(0,o.jsxs)("p",{style:{margin:0,fontSize:"var(--text-sm)",color:"var(--text-dim)",lineHeight:1.5},children:[(0,o.jsx)("a",{href:l.verificationUri,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--accent)",wordBreak:"break-all"},children:l.verificationUri}),l.expiresInSeconds?" "+i("modelsConfig.expiresInMinutes",Math.ceil(l.expiresInSeconds/60)):""]})]}),"progress"===l.phase&&(0,o.jsx)("p",{style:{margin:0,fontSize:"var(--text-md)",color:"var(--text-muted)"},children:l.message}),"success"===l.phase&&(0,o.jsx)("p",{style:{margin:0,fontSize:"var(--text-md)",color:"var(--status-success)"},children:t("modelsConfig.connectedSuccessfully")}),"error"===l.phase&&(0,o.jsx)("p",{style:{margin:0,fontSize:"var(--text-md)",color:"var(--status-error)"},children:l.message})]}),(0,o.jsx)("div",{style:{display:"flex",gap:"var(--space-4)"},children:f?(0,o.jsx)("button",{onClick:()=>{u.current?.close(),c({phase:"idle"})},style:{padding:"5px 12px",background:"none",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",color:"var(--text-muted)",cursor:"pointer",fontSize:"var(--text-md)"},children:t("modelsConfig.cancel")}):(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("button",{onClick:v,style:{padding:"5px 14px",background:"var(--accent)",border:"none",borderRadius:"var(--radius-control)",color:"var(--on-accent)",cursor:"pointer",fontSize:"var(--text-md)",fontWeight:600},children:e.loggedIn?t("modelsConfig.relogin"):t("modelsConfig.login")}),e.loggedIn&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("button",{type:"button",disabled:!0,title:"Disconnect this OMP account from the OMP terminal",style:{padding:"5px 12px",background:"none",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",color:"var(--text-dim)",cursor:"not-allowed",fontSize:"var(--text-md)",opacity:.7},children:t("modelsConfig.disconnect")}),(0,o.jsx)("span",{style:{alignSelf:"center",color:"var(--text-dim)",fontSize:"var(--text-sm)"},children:"Use the OMP terminal to disconnect this account."})]})]})})]})}function ew({provider:e}){let{t:r,tn:t}=(0,a.s9)();return(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-6)"},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,o.jsx)(ex,{children:r("modelsConfig.apiKey")}),(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-3)"},children:[(0,o.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:e.configured?"var(--status-success)":"var(--border)",display:"inline-block"}}),(0,o.jsx)("span",{style:{fontSize:"var(--text-sm)",color:e.configured?"var(--status-success)":"var(--text-dim)"},children:r(e.configured?"modelsConfig.configured":"modelsConfig.notConfigured")})]})]}),(0,o.jsx)("p",{style:{margin:0,fontSize:"var(--text-md)",color:"var(--text-muted)",lineHeight:1.5},children:e.configured?t("modelsConfig.providerConfigured",e.modelCount,{name:e.displayName}):r("modelsConfig.providerNotConfigured",{name:e.displayName})}),(0,o.jsx)("p",{style:{margin:0,fontSize:"var(--text-sm)",color:"var(--text-dim)",lineHeight:1.5},children:(0,o.jsx)(ep,{text:r("modelsConfig.apiKeyManageHint")})})]})}function ez({id:e,size:r}){let t=ei[e];if(!t){let t=e.split(/[-_]/).filter(Boolean).slice(0,2).map(e=>e[0]).join("").toUpperCase()||"?";return(0,o.jsx)("span",{"aria-hidden":"true",style:{width:r,height:r,border:"1px solid var(--border)",borderRadius:4,color:"var(--text-dim)",display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0,fontSize:Math.max(8,Math.floor(.42*r)),fontWeight:700,lineHeight:1},children:t})}return t.hasColor?(0,o.jsx)(t.Icon,{size:r}):(0,o.jsx)(t.Icon,{size:r,style:{color:"var(--text-muted)"}})}function eI({oauthProviders:e,apiKeyProviders:r,onSelectOAuth:t,onSelectApiKey:i,onAddCustom:s,onClose:l}){let{t:d,tn:c}=(0,a.s9)(),[x,u]=(0,n.useState)(""),g=(0,n.useRef)(null),v=x.trim().toLowerCase(),h=e.filter(e=>!e.loggedIn&&(!v||e.name.toLowerCase().includes(v))),m=r.filter(e=>!e.configured&&(!v||e.displayName.toLowerCase().includes(v)||e.id.toLowerCase().includes(v))),f=!v||"custom".includes(v)||"openai-compatible".includes(v)||"anthropic-compatible".includes(v),b=h.length+m.length+ +!!f,y={display:"flex",flexDirection:"row",alignItems:"center",gap:"var(--space-4)",padding:"10px 12px",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",boxSizing:"border-box",cursor:"pointer",minWidth:0,textAlign:"left",transition:"border-color var(--dur-fast) var(--ease-out-warm), background var(--dur-fast) var(--ease-out-warm)",width:"100%"};return(0,o.jsx)(p.lG,{open:!0,onOpenChange:e=>{e||l()},children:(0,o.jsxs)(p.Cf,{ariaLabel:d("modelsConfig.addProvider"),style:{width:820,maxWidth:"min(92vw, 820px)",maxHeight:"min(72dvh, calc(100dvh - 32px))",padding:0,display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,o.jsx)(p.L3,{style:{margin:"14px 18px 8px",fontSize:18},children:d("modelsConfig.addProvider")}),(0,o.jsx)("div",{style:{padding:"8px 14px 12px",flexShrink:0},children:(0,o.jsx)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-4)",padding:"6px 10px",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)"},children:(0,o.jsx)("input",{ref:g,value:x,onChange:e=>u(e.target.value),placeholder:d("modelsConfig.searchProviders"),style:{flex:1,background:"none",border:"none",outline:"none",color:"var(--text)",fontSize:"var(--text-base)",boxSizing:"border-box",minWidth:0}})})}),(0,o.jsx)("div",{style:{flex:1,overflowY:"auto",padding:"4px 14px 14px"},children:0===b?(0,o.jsx)("div",{style:{padding:"20px 0",fontSize:"var(--text-md)",color:"var(--text-dim)",textAlign:"center"},children:d("modelsConfig.noProvidersMatch")}):(0,o.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(min(240px, 100%), 1fr))",gap:"var(--space-4)"},children:[f&&(0,o.jsx)("div",{style:{gridColumn:"1 / -1",fontSize:"var(--text-xs)",fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em"},children:d("modelsConfig.customSection")}),f&&(0,o.jsxs)("button",{type:"button",onClick:()=>{s(),l()},style:y,onMouseEnter:e=>{e.currentTarget.style.borderColor="var(--accent)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.borderColor="var(--border)",e.currentTarget.style.background="var(--bg-panel)"},children:[(0,o.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,o.jsx)("div",{style:{fontSize:"var(--text-md)",fontWeight:600,color:"var(--text)",lineHeight:1.3,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:d("modelsConfig.openaiAnthropicCompatible")}),(0,o.jsx)("div",{style:{fontSize:"var(--text-xs)",color:"var(--text-dim)",marginTop:2},children:d("modelsConfig.customEndpointFormat")})]}),(0,o.jsx)("span",{style:{width:26,height:26,borderRadius:"var(--radius-control)",background:"var(--bg-hover)",border:"1px dashed var(--border)",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:(0,o.jsx)(C.A,{size:13,"aria-hidden":"true"})})]}),h.length>0&&(0,o.jsx)("div",{style:{gridColumn:"1 / -1",paddingTop:6*!!f,fontSize:"var(--text-xs)",fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em"},children:d("modelsConfig.subscriptions")}),h.map(e=>(0,o.jsxs)("button",{type:"button",onClick:()=>{t(e.id),l()},style:y,onMouseEnter:e=>{e.currentTarget.style.borderColor="var(--accent)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.borderColor="var(--border)",e.currentTarget.style.background="var(--bg-panel)"},children:[(0,o.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,o.jsx)("div",{style:{fontSize:"var(--text-md)",fontWeight:600,color:"var(--text)",lineHeight:1.3,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),(0,o.jsx)("div",{style:{fontSize:"var(--text-xs)",color:"var(--text-dim)",marginTop:2},children:"OAuth"})]}),(0,o.jsx)(ez,{id:e.id,size:28})]},e.id)),m.length>0&&(0,o.jsx)("div",{style:{gridColumn:"1 / -1",paddingTop:6*(h.length>0),fontSize:"var(--text-xs)",fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em"},children:d("modelsConfig.apiKey")}),m.map(e=>(0,o.jsxs)("button",{type:"button",onClick:()=>{i(e.id),l()},style:y,onMouseEnter:e=>{e.currentTarget.style.borderColor="var(--accent)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.borderColor="var(--border)",e.currentTarget.style.background="var(--bg-panel)"},children:[(0,o.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,o.jsx)("div",{style:{fontSize:"var(--text-md)",fontWeight:600,color:"var(--text)",lineHeight:1.3,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.displayName}),(0,o.jsx)("div",{style:{fontSize:"var(--text-xs)",color:"var(--text-dim)",marginTop:2},children:c("modelsConfig.modelCount",e.modelCount)})]}),(0,o.jsx)(ez,{id:e.id,size:28})]},e.id))]})})]})})}function eT(e){return Array.isArray(e)?`[${e.map(eT).join(",")}]`:e&&"object"==typeof e?`{${Object.keys(e).sort().map(r=>`${JSON.stringify(r)}:${eT(e[r])}`).join(",")}}`:JSON.stringify(e)??"undefined"}function eR({onSaved:e,onDirtyChange:r}){let{t}=(0,a.s9)(),s=(0,i.a)(),[p,x]=(0,n.useState)({providers:{}}),u=(0,n.useRef)(p),g=(0,n.useCallback)(e=>{let r=u.current,t="function"==typeof e?e(r):e;t!==r&&(u.current=t,x(t))},[]),v=(0,n.useRef)(eT({providers:{}})),[h,m]=(0,n.useState)(!0),[f,y]=(0,n.useState)(!1),[j,I]=(0,n.useState)(null),[R,A]=(0,n.useState)([]),[P,M]=(0,n.useState)(!1),[O,$]=(0,n.useState)(null),[W,E]=(0,n.useState)([]),[N,U]=(0,n.useState)([]),[L,D]=(0,n.useState)([]),[H,K]=(0,n.useState)([]),[B,F]=(0,n.useState)(!0),[_,J]=(0,n.useState)(null),[q,Y]=(0,n.useState)(!1),[V,X]=(0,n.useState)(null),[Z,G]=(0,n.useState)(null),Q=(0,n.useCallback)(()=>{fetch("/api/auth/providers").then(e=>e.json()).then(e=>{Array.isArray(e.providers)&&E(e.providers)}).catch(()=>{})},[]),ee=(0,n.useCallback)(()=>{fetch("/api/auth/all-providers").then(e=>e.json()).then(e=>{Array.isArray(e.providers)&&U(e.providers)}).catch(()=>{})},[]),er=(0,n.useCallback)(async e=>{F(!0);try{e?.force&&(0,c.dU)();let r=await (0,c.aQ)("",{force:e?.force});D(r.modelList??[]),K(r.connectedProviders??[])}catch{}finally{F(!1)}},[]),et=(0,n.useCallback)(async(e=eT(u.current))=>{m(!0);try{let r=await fetch("/api/models-config"),t=await r.json();if(eT(u.current)!==e)return;if(t.parseError){G({message:t.parseError,path:t.path}),g({providers:{}}),$(null);return}if(!r.ok)throw Error(`HTTP ${r.status}`);G(null),I(null),A([]);let o=t.providers?t:{...t,providers:{}};v.current=eT(o),g(o);let n=Object.keys(o.providers??{});n.length>0?$({type:"provider",name:n[0]}):$(null)}catch{}finally{m(!1)}},[g]);(0,n.useEffect)(()=>{et(),Q(),ee(),er()},[et,Q,ee,er]),(0,n.useEffect)(()=>{r?.(v.current!==eT(p))},[p,r]),(0,n.useEffect)(()=>{try{let e=JSON.parse(localStorage.getItem(es)??"null");Array.isArray(e)&&J(new Set(e.filter(e=>"string"==typeof e)))}catch{}},[]);let eo=(0,n.useCallback)((e,r)=>{J(t=>{let o=new Set(t??L.map(e=>`${e.provider}:${e.id}`)),n=`${e.provider}:${e.id}`;return r?o.add(n):o.delete(n),localStorage.setItem(es,JSON.stringify([...o])),window.dispatchEvent(new Event("omp-composer-models-change")),o})},[L]),en=(0,n.useCallback)((e,r)=>{J(t=>{let o=new Set(t??L.map(e=>`${e.provider}:${e.id}`));for(let t of L){if(t.provider!==e)continue;let n=`${t.provider}:${t.id}`;r?o.add(n):o.delete(n)}return localStorage.setItem(es,JSON.stringify([...o])),window.dispatchEvent(new Event("omp-composer-models-change")),o})},[L]),ei=(0,n.useCallback)(async e=>{let r=await fetch("/api/providers/enable",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:e})}),t=await r.json();if(!r.ok||t.error)throw Error(t.error||`HTTP ${r.status}`);await er({force:!0})},[er]),el=(0,n.useCallback)(()=>{let e="new-provider",r=1;for(;p.providers?.[e];)e=`new-provider-${r++}`;g(r=>({...r,providers:{...r.providers??{},[e]:{api:"openai-completions"}}})),$({type:"provider",name:e})},[p.providers,g]),ec=(0,n.useCallback)((e,r)=>{g(t=>({...t,providers:{...t.providers??{},[e]:r}}))},[g]),ep=(0,n.useCallback)((e,r)=>{g(t=>{let o=Object.entries(t.providers??{}),n=o.findIndex(([r])=>r===e);return -1===n?t:(o[n]=[r,o[n][1]],{...t,providers:Object.fromEntries(o)})}),$(t=>t?"provider"===t.type&&t.name===e?{type:"provider",name:r}:"model"===t.type&&t.providerName===e?{...t,providerName:r}:t:t)},[g]),eh=(0,n.useCallback)(e=>{g(r=>{let t={...r.providers??{}};return delete t[e],{...r,providers:t}}),g(e=>{let r=Object.keys(e.providers??{});return $(r.length>0?{type:"provider",name:r[0]}:null),e})},[g]),em=(0,n.useCallback)(e=>{g(r=>{let t=r.providers?.[e]??{},o=[...t.models??[],{id:""}];return{...r,providers:{...r.providers??{},[e]:{...t,models:o}}}}),g(r=>{let t=(r.providers?.[e]?.models?.length??1)-1;return $({type:"model",providerName:e,index:t}),r})},[g]),eb=(0,n.useCallback)((e,r,t)=>{let o,n=(o={...r,id:r.id,...void 0!==r.cost?{cost:{...r.cost}}:{}},delete o.originalId,o);g(r=>{let o=r.providers?.[e]??{},i=[...o.models??[],n],a={...o,models:i};return t&&!o.baseUrl&&(a.baseUrl=t),{...r,providers:{...r.providers??{},[e]:a}}}),g(r=>{let t=(r.providers?.[e]?.models?.length??1)-1;return $({type:"model",providerName:e,index:t}),r}),X(null)},[g]),ey=(0,n.useCallback)((e,r,t)=>{g(o=>{let n=o.providers?.[e]??{},i=[...n.models??[]];return i[r]=t,{...o,providers:{...o.providers??{},[e]:{...n,models:i}}}})},[g]),ej=(0,n.useCallback)((e,r)=>{g(t=>{let o=t.providers?.[e]??{},n=[...o.models??[]];return n.splice(r,1),{...t,providers:{...t.providers??{},[e]:{...o,models:n.length?n:void 0}}}}),$({type:"provider",name:e})},[g]),eC=(0,n.useCallback)(async()=>{if(Z)return;let o=u.current,n=function(e){if(!e.providers)return e;let r=!1,t={};for(let[o,n]of Object.entries(e.providers)){let e=n.models;if(!e?.some(l)){t[o]=n;continue}r=!0;let i=e.filter(e=>!l(e));t[o]={...n,models:i.length>0?i:void 0}}return r?{...e,providers:t}:e}(o),i=eT(o),a=eT(n);y(!0),I(null),A([]),M(!1);try{let o=await fetch("/api/models-config?mode=full",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)}),s=await o.json();if(!o.ok||s.error){let e=Array.isArray(s.issues)?s.issues.filter(e=>"string"==typeof e.path&&"string"==typeof e.message):[],r=e.map(e=>e.path?`${e.path}: ${e.message}`:e.message).join("; ");A(e);let n=s.error||s.code?(0,d.K)(s):`HTTP ${o.status}`;I(n),z.oR.error(t("modelsConfig.saveErrorTitle"),r?`${n}: ${r}`:n),"models_config_unparseable"===s.code&&G({message:s.error??(0,d.K)(s)})}else{v.current=a;let o=eT(u.current)!==i;o&&r?.(!0),o||(g(n),r?.(!1),await et(a)),await er({force:!0}),ee(),e?.(),o&&r?.(!0),M(!0),setTimeout(()=>M(!1),2e3),z.oR.success(t("modelsConfig.saveSuccessTitle"))}}catch(r){let e=r instanceof Error?r.message:String(r);I(e),z.oR.error(t("modelsConfig.saveErrorTitle"),e)}finally{y(!1)}},[ee,et,er,r,e,Z,g,t]),eA=Object.entries(p.providers??{}),eP=W.filter(e=>e.loggedIn),eM=N.filter(e=>e.configured),eO=L.reduce((e,r)=>((e[r.provider]??=[]).push(r),e),{}),e$=(()=>{if(!O)return null;if("oauth"===O.type){let e=W.find(e=>e.id===O.providerId);return e?(0,o.jsx)(eS,{provider:e,onRefresh:()=>{Q(),ee(),er({force:!0})}},e.id):null}if("apikey"===O.type){let e=N.find(e=>e.id===O.providerId);return e?(0,o.jsx)(ew,{provider:e},e.id):null}if("roles"===O.type)return(0,o.jsx)(ed,{models:L});if("registry"===O.type)return(0,o.jsx)(ea,{models:L,connectedProviders:H,onChanged:()=>er({force:!0})});if("picker"===O.type)return(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:14},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:"var(--space-5)"},children:[(0,o.jsxs)("div",{children:[(0,o.jsx)(ex,{children:"Composer Model Picker"}),(0,o.jsx)("p",{style:{margin:"4px 0 0",color:"var(--text-muted)",fontSize:"var(--text-md)",lineHeight:1.5},children:"Choose which native OMP models are available in the composer. This changes only omp-web's picker, not OMP's model registry."})]}),(0,o.jsx)("button",{type:"button",onClick:()=>void er({force:!0}),disabled:B,title:"Refresh OMP runtime models",style:{padding:7,border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"transparent",color:"var(--text-muted)",cursor:B?"wait":"pointer"},children:(0,o.jsx)(b.A,{size:14,"aria-hidden":"true"})})]}),B?(0,o.jsx)("div",{style:{color:"var(--text-muted)",fontSize:"var(--text-md)"},children:"Loading OMP runtime models..."}):Object.entries(eO).map(([e,r])=>{let t=r.every(e=>null===_||_.has(`${e.provider}:${e.id}`)),n=r.some(e=>null===_||_.has(`${e.provider}:${e.id}`));return(0,o.jsxs)("section",{style:{border:"1px solid var(--border)",borderRadius:"var(--radius-card)",overflow:"hidden"},children:[(0,o.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:"var(--space-4)",padding:"9px 11px",background:"var(--bg-panel)",color:"var(--text)",fontSize:"var(--text-md)",fontWeight:600},children:[(0,o.jsx)("input",{type:"checkbox",checked:t,ref:e=>{e&&(e.indeterminate=n&&!t)},onChange:r=>en(e,r.target.checked),"aria-label":`Show all ${e} models in composer`}),(0,o.jsx)(ez,{id:e,size:15}),(0,o.jsx)("span",{children:e}),(0,o.jsxs)("span",{style:{marginLeft:"auto",color:"var(--text-dim)",fontSize:"var(--text-sm)",fontWeight:400},children:[r.length," model",1===r.length?"":"s"]})]}),(0,o.jsx)("div",{style:{padding:"4px 0"},children:r.map(e=>(0,o.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:9,padding:"7px 11px",color:"var(--text-muted)",cursor:"pointer"},children:[(0,o.jsx)("input",{type:"checkbox",checked:null===_||_.has(`${e.provider}:${e.id}`),onChange:r=>eo(e,r.target.checked),"aria-label":`Show ${e.provider}/${e.id} in composer`}),(0,o.jsx)("span",{style:{minWidth:0,flex:1,fontSize:"var(--text-md)"},children:e.name||e.id}),(0,o.jsxs)("code",{style:{color:"var(--text-dim)",fontSize:"var(--text-sm)",fontFamily:"var(--font-mono)",whiteSpace:"nowrap"},children:[e.provider,"/",e.id]})]},`${e.provider}:${e.id}`))})]},e)}),!B&&0===L.length&&(0,o.jsx)("div",{style:{color:"var(--text-muted)",fontSize:"var(--text-md)"},children:"OMP did not report any configured models."}),H.filter(e=>!eO[e.id]).map(e=>(0,o.jsxs)("section",{style:{border:"1px solid var(--border)",borderRadius:"var(--radius-card)",padding:12},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-4)",color:"var(--text)",fontSize:"var(--text-md)",fontWeight:600},children:[(0,o.jsx)(ez,{id:e.id,size:15}),e.name]}),(0,o.jsx)("p",{style:{margin:"6px 0 0",color:"var(--text-muted)",fontSize:"var(--text-md)",lineHeight:1.5},children:e.disabled?"Connected, but disabled in OMP. Enable it to discover its models.":"Connected, but OMP has not reported models for this provider yet."}),e.disabled&&(0,o.jsx)("button",{type:"button",onClick:()=>void ei(e.id).catch(e=>z.oR.error("Could not enable provider",e instanceof Error?e.message:String(e))),style:{marginTop:8,padding:"6px 10px",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"transparent",color:"var(--text)",cursor:"pointer",fontSize:"var(--text-md)"},children:"Enable in OMP"})]},e.id))]});if("provider"===O.type){let e=p.providers?.[O.name];return e?(0,o.jsx)(ef,{name:O.name,provider:e,onChange:e=>ec(O.name,e),onRename:e=>ep(O.name,e),onDelete:()=>eh(O.name)},O.name):null}let e=p.providers?.[O.providerName],r=e?.models?.[O.index];return r?(0,o.jsx)(ek,{providerName:O.providerName,provider:e,model:r,onChange:e=>ey(O.providerName,O.index,e),onDelete:()=>ej(O.providerName,O.index)},`${O.providerName}-${O.index}`):null})();return(0,o.jsxs)(o.Fragment,{children:[Z?(0,o.jsxs)("div",{style:{flex:1,overflowY:"auto",padding:"var(--space-8)",display:"flex",flexDirection:"column",gap:"var(--space-5)"},children:[(0,o.jsx)("div",{style:{fontSize:"var(--text-base)",fontWeight:600,color:"var(--status-error)"},children:t("modelsConfig.parseErrorTitle")}),(0,o.jsx)("div",{style:{fontSize:"var(--text-md)",color:"var(--text-muted)",lineHeight:1.6},children:t("modelsConfig.parseErrorBody")}),Z.path&&(0,o.jsx)("code",{style:{fontSize:"var(--text-sm)",color:"var(--text-dim)",fontFamily:"var(--font-mono)",wordBreak:"break-all"},children:Z.path}),(0,o.jsx)("pre",{style:{margin:0,padding:"10px 12px",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",color:"var(--text-muted)",fontSize:"var(--text-sm)",fontFamily:"var(--font-mono)",whiteSpace:"pre-wrap",wordBreak:"break-word",overflowX:"auto"},children:Z.message}),(0,o.jsx)("button",{onClick:()=>{et()},disabled:h,style:{alignSelf:"flex-start",padding:"5px 12px",background:"none",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",color:"var(--text-muted)",cursor:h?"default":"pointer",fontSize:"var(--text-md)"},children:h?t("modelsConfig.loading"):t("modelsConfig.reload")})]}):(0,o.jsxs)("div",{style:{flex:1,display:"flex",flexDirection:s?"column":"row",overflow:"hidden"},children:[(0,o.jsxs)("div",{style:{width:s?"100%":235,maxHeight:s?"40vh":void 0,borderRight:s?"none":"1px solid var(--border)",borderBottom:s?"1px solid var(--border)":"none",display:"flex",flexDirection:"column",flexShrink:0,background:"var(--bg-panel)"},children:[(0,o.jsxs)("div",{style:{flex:1,overflowY:"auto",padding:"8px 6px"},children:[(0,o.jsx)(eu,{icon:k.A,label:"Native OMP registry",selected:O?.type==="registry",onClick:()=>$({type:"registry"})}),(0,o.jsx)(eu,{icon:S.A,label:"Composer model picker",selected:O?.type==="picker",onClick:()=>$({type:"picker"})}),(0,o.jsx)(eu,{icon:w.A,label:"OMP model roles",selected:O?.type==="roles",onClick:()=>$({type:"roles"})}),(eP.length>0||eM.length>0)&&(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-3)",padding:"14px 10px 6px",color:"var(--text-dim)",fontSize:"var(--text-xs)",fontWeight:700,letterSpacing:"0.06em",textTransform:"uppercase"},children:[(0,o.jsx)("span",{"aria-hidden":"true",style:{width:6,height:6,borderRadius:"50%",background:"var(--accent)",flexShrink:0}}),"Connected through OMP"]}),eP.map(e=>{let r=O?.type==="oauth"&&O.providerId===e.id;return(0,o.jsxs)("button",{type:"button",onClick:()=>$({type:"oauth",providerId:e.id}),style:{display:"flex",alignItems:"center",gap:"var(--space-4)",padding:"7px 10px",borderRadius:"var(--radius-control)",cursor:"pointer",width:"100%",border:"none",textAlign:"left",fontFamily:"inherit",background:r?"var(--bg-selected)":"none",fontWeight:r?600:400},...eg(r),children:[(0,o.jsx)(ez,{id:e.id,size:16}),(0,o.jsx)("span",{style:{fontSize:"var(--text-md)",color:"var(--text)",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),(0,o.jsx)("span",{title:`OMP OAuth provider: ${e.id}`,style:{padding:"2px 5px",borderRadius:4,background:"var(--bg-subtle)",color:"var(--text-muted)",fontSize:9,fontWeight:500,flexShrink:0},children:"OAuth"})]},e.id)}),eM.map(e=>{let r=O?.type==="apikey"&&O.providerId===e.id;return(0,o.jsxs)("button",{type:"button",onClick:()=>$({type:"apikey",providerId:e.id}),style:{display:"flex",alignItems:"center",gap:"var(--space-4)",padding:"7px 10px",borderRadius:"var(--radius-control)",cursor:"pointer",width:"100%",border:"none",textAlign:"left",fontFamily:"inherit",background:r?"var(--bg-selected)":"none",fontWeight:r?600:400},...eg(r),children:[(0,o.jsx)(ez,{id:e.id,size:16}),(0,o.jsx)("span",{style:{fontSize:"var(--text-md)",color:"var(--text)",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.displayName}),(0,o.jsx)("span",{title:`OMP API-key provider: ${e.id}`,style:{padding:"2px 5px",borderRadius:4,background:"var(--bg-subtle)",color:"var(--text-muted)",fontSize:9,fontWeight:500,flexShrink:0},children:"API key"})]},e.id)}),(eP.length>0||eM.length>0)&&eA.length>0&&(0,o.jsx)("div",{style:{margin:"8px 10px",borderTop:"1px solid var(--border)"}}),eA.length>0&&(0,o.jsx)("div",{style:{padding:"10px 10px 4px",fontSize:"var(--text-xs)",fontWeight:700,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.06em"},children:"Configured Providers"}),h?(0,o.jsx)("div",{style:{padding:"10px 8px",fontSize:"var(--text-md)",color:"var(--text-muted)"},children:t("modelsConfig.loading")}):eA.map(([e,r])=>{let n=O?.type==="provider"&&O.name===e,i=r.models??[];return(0,o.jsxs)("div",{style:{marginBottom:6,padding:"4px 6px",borderRadius:"var(--radius-control)",background:n?"var(--bg-panel)":"transparent",border:n?"1px solid var(--border)":"1px solid transparent"},children:[(0,o.jsxs)("button",{type:"button",onClick:()=>$({type:"provider",name:e}),style:{display:"flex",alignItems:"center",gap:7,padding:"6px 8px",borderRadius:"var(--radius-control)",cursor:"pointer",width:"100%",border:"none",textAlign:"left",fontFamily:"inherit",background:n?"var(--bg-selected)":"none"},...eg(n),children:[(0,o.jsx)(ez,{id:e,size:15}),(0,o.jsx)("span",{style:{fontSize:"var(--text-md)",fontWeight:n?600:500,color:"var(--text)",fontFamily:"var(--font-mono)",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e}),(0,o.jsxs)("span",{style:{fontSize:"var(--text-xs)",color:"var(--text-dim)",padding:"1px 5px",borderRadius:4,background:"var(--bg-subtle)"},children:[i.length," model",1===i.length?"":"s"]})]}),i.map((r,n)=>{let i=O?.type==="model"&&O.providerName===e&&O.index===n;return(0,o.jsxs)("button",{type:"button",onClick:()=>$({type:"model",providerName:e,index:n}),style:{display:"flex",alignItems:"center",gap:"var(--space-3)",padding:"5px 8px 5px 28px",borderRadius:"var(--radius-control)",cursor:"pointer",width:"100%",border:"none",textAlign:"left",fontFamily:"inherit",background:i?"var(--bg-selected)":"none",marginTop:1},...eg(i),children:[(0,o.jsx)("span",{style:{fontSize:"var(--text-sm)",fontFamily:"var(--font-mono)",color:r.id?"var(--text-muted)":"var(--text-dim)",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:r.id||t("modelsConfig.newModel")}),r.reasoning&&(0,o.jsx)("span",{style:{fontSize:9,padding:"1px 4px",background:"var(--accent-subtle)",color:"var(--accent)",borderRadius:3,flexShrink:0},children:"T"})]},n)}),(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-3)",padding:"6px 8px 4px 10px",marginTop:2,flexWrap:"nowrap"},children:[(0,o.jsxs)("button",{type:"button",onClick:r=>{r.stopPropagation(),em(e)},style:{display:"inline-flex",alignItems:"center",gap:"var(--space-2)",padding:"3px 8px",borderRadius:"var(--radius-control)",cursor:"pointer",color:"var(--text-muted)",border:"1px solid var(--border)",background:"var(--bg-subtle)",fontFamily:"inherit",fontSize:"var(--text-sm)",whiteSpace:"nowrap",flexShrink:0},...ev,children:[(0,o.jsx)(C.A,{size:11,"aria-hidden":"true"}),(0,o.jsx)("span",{children:t("modelsConfig.addModel")})]}),(0,o.jsxs)("button",{type:"button",onClick:r=>{r.stopPropagation(),X(e)},style:{display:"inline-flex",alignItems:"center",gap:"var(--space-2)",padding:"3px 8px",borderRadius:"var(--radius-control)",cursor:"pointer",color:"var(--text-muted)",border:"1px solid var(--border)",background:"var(--bg-subtle)",fontFamily:"inherit",fontSize:"var(--text-sm)",whiteSpace:"nowrap",flexShrink:0},...ev,children:[(0,o.jsx)(S.A,{size:11,"aria-hidden":"true"}),(0,o.jsx)("span",{children:t("modelsConfig.addFromCatalog")})]})]})]},e)})]}),(0,o.jsx)("div",{style:{borderTop:"1px solid var(--border)",padding:"8px 6px"},children:(0,o.jsx)("button",{onClick:()=>Y(!0),style:{display:"flex",alignItems:"center",justifyContent:"center",gap:5,width:"100%",padding:"6px 0",background:"none",border:"1px dashed var(--border)",borderRadius:"var(--radius-control)",color:"var(--text-muted)",cursor:"pointer",fontSize:"var(--text-md)"},onMouseEnter:e=>{e.currentTarget.style.borderColor="var(--accent)",e.currentTarget.style.color="var(--accent)"},onMouseLeave:e=>{e.currentTarget.style.borderColor="var(--border)",e.currentTarget.style.color="var(--text-muted)"},children:t("modelsConfig.addProvider")})})]}),(0,o.jsx)("div",{style:{flex:1,overflowY:"auto",padding:20},children:h?(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:10},children:[(0,o.jsx)("div",{className:"skeleton",style:{height:18,width:"40%"}}),(0,o.jsx)("div",{className:"skeleton",style:{height:12,width:"70%"}}),(0,o.jsx)("div",{className:"skeleton",style:{height:12,width:"55%"}}),(0,o.jsx)("div",{className:"skeleton",style:{height:90,width:"100%"}})]}):e$??(0,o.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-dim)",fontSize:"var(--text-base)"},children:t("modelsConfig.selectProviderOrModel")})})]}),(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"flex-end",gap:10,padding:"10px 18px",borderTop:"1px solid var(--border)",flexShrink:0},children:[(j||R.length>0)&&(0,o.jsxs)("div",{role:"alert",style:{fontSize:"var(--text-md)",color:"var(--status-error)",flex:1,minWidth:0},children:[j,R.length>0&&(0,o.jsx)("ul",{style:{margin:"4px 0 0",paddingLeft:18},children:R.map((e,r)=>(0,o.jsxs)("li",{children:[e.path?`${e.path}: `:"",e.message]},`${e.path}-${r}`))})]}),(0,o.jsxs)("button",{onClick:eC,disabled:f||P||null!==Z,style:{position:"relative",padding:"6px 16px",minWidth:92,background:P?"var(--status-success)":f||Z?"var(--bg-panel)":"var(--accent)",border:"none",borderRadius:"var(--radius-control)",color:P?"var(--on-accent)":f||Z?"var(--text-muted)":"var(--on-accent)",cursor:f||P||Z?"default":"pointer",fontSize:"var(--text-base)",fontWeight:600,display:"inline-flex",alignItems:"center",justifyContent:"center",gap:"var(--space-3)",transition:"background-color var(--dur-med) var(--ease-out-warm), color var(--dur-med) var(--ease-out-warm)",animation:P?"saved-pop var(--dur-theme) var(--ease-out-warm)":void 0},children:[P&&(0,o.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round",style:{strokeDasharray:18,animation:"saved-check-draw 0.35s ease forwards",flexShrink:0},children:(0,o.jsx)("polyline",{points:"20 6 9 17 4 12"})}),(0,o.jsx)("span",{children:P?t("modelsConfig.saved"):f?t("modelsConfig.saving"):t("modelsConfig.save")})]})]}),q&&(0,o.jsx)(eI,{oauthProviders:W,apiKeyProviders:N,onSelectOAuth:e=>$({type:"oauth",providerId:e}),onSelectApiKey:e=>$({type:"apikey",providerId:e}),onAddCustom:el,onClose:()=>Y(!1)}),null!==V&&(0,o.jsx)(T,{open:!0,providerName:V,providerBaseUrl:p.providers?.[V]?.baseUrl??"",existingIds:new Set((p.providers?.[V]?.models??[]).map(e=>e.id)),onAdd:(e,r)=>eb(V,e,r),onClose:()=>X(null)})]})}}}]);
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3274],{33274:(e,r,t)=>{t.r(r),t.d(r,{ModelsConfig:()=>eR,modelsConfigFingerprint:()=>eT});var o=t(95155),n=t(12115),i=t(31590),a=t(4315);function s(e){if("string"!=typeof e)return!1;let r=e.trim();if(!r||r.startsWith("//"))return!1;try{let e=new URL(r);return"http:"===e.protocol||"https:"===e.protocol||"mailto:"===e.protocol}catch{return!1}}function l(e){return Object.entries(e).every(([e,r])=>"id"===e?"string"==typeof r&&""===r.trim():void 0===r)}var d=t(18136),c=t(90071),p=t(30808),x=t(34906),u=t(38158),g=t(19805),v=t(88074),h=t(65738),m=t(12651),f=t(86272),b=t(82749),y=t(64577),j=t(35484),C=t(2125),k=t(19707),S=t(40557),w=t(80846),z=t(51087),I=t(84111);function T({open:e,providerName:r,providerBaseUrl:t,existingIds:i,onAdd:s,onClose:l}){let{t:d}=(0,a.s9)(),[c,x]=(0,n.useState)(""),[u,g]=(0,n.useState)(null),[v,h]=(0,n.useState)(!1),[m,f]=(0,n.useState)(null),b=(0,n.useRef)(null),y=(0,n.useRef)(0);(0,n.useEffect)(()=>{if(!e)return;b.current?.focus();let o=c.trim();if(!o){y.current+=1,g(null),f(null),h(!1);return}let n=new URLSearchParams({q:o,limit:String(30)});r&&n.set("provider",r),t&&n.set("baseUrl",t);let i=new AbortController,a=y.current+1;y.current=a,h(!0);let s=setTimeout(async()=>{try{let e=await fetch(`/api/models-config/catalog?${n.toString()}`,{signal:i.signal}),r=await e.json();if(y.current!==a)return;if(!e.ok)throw Error(r.error??`HTTP ${e.status}`);g(r.models??[]),f(null)}catch(e){if(y.current!==a)return;"AbortError"!==e.name&&f(e instanceof Error?e.message:String(e))}finally{y.current===a&&h(!1)}},250);return()=>{clearTimeout(s),i.abort()}},[c,e,r,t]);let j={display:"flex",flexDirection:"row",alignItems:"center",gap:10,padding:"9px 12px",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",marginBottom:"var(--space-3)",minWidth:0};return(0,o.jsx)(p.lG,{open:!0,onOpenChange:e=>{e||l()},children:(0,o.jsxs)(p.Cf,{ariaLabel:d("modelsConfig.catalogTitle"),style:{width:720,maxWidth:"min(92vw, 720px)",maxHeight:"min(72dvh, calc(100dvh - 32px))",padding:0,display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,o.jsx)(p.L3,{style:{margin:"14px 18px 8px",fontSize:18},children:d("modelsConfig.catalogTitle")}),(0,o.jsx)("div",{style:{padding:"8px 14px 12px",flexShrink:0},children:(0,o.jsx)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-4)",padding:"6px 10px",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)"},children:(0,o.jsx)("input",{ref:b,value:c,onChange:e=>x(e.target.value),"aria-label":d("modelsConfig.catalogSearchPlaceholder"),placeholder:d("modelsConfig.catalogSearchPlaceholder"),style:{flex:1,background:"none",border:"none",outline:"none",color:"var(--text)",fontSize:"var(--text-base)",boxSizing:"border-box",minWidth:0}})})}),(0,o.jsx)("div",{style:{flex:1,overflowY:"auto",padding:"4px 14px 14px"},children:m?(0,o.jsx)("div",{role:"alert",style:{padding:"20px 0",fontSize:"var(--text-md)",color:"var(--status-error)",textAlign:"center"},children:d("modelsConfig.catalogError",{error:m})}):v?(0,o.jsx)("div",{role:"status","aria-live":"polite",style:{padding:"20px 0",fontSize:"var(--text-md)",color:"var(--text-dim)",textAlign:"center"},children:d("modelsConfig.catalogLoading")}):null===u?(0,o.jsx)("div",{style:{padding:"20px 0",fontSize:"var(--text-md)",color:"var(--text-dim)",textAlign:"center"},children:d("modelsConfig.catalogSearchPlaceholder")}):0===u.length?(0,o.jsx)("div",{style:{padding:"20px 0",fontSize:"var(--text-md)",color:"var(--text-dim)",textAlign:"center"},children:d("modelsConfig.catalogNoResults")}):u.map(e=>{var r;let n=i.has(e.id),a=!!e.providerBaseUrl&&!t;return(0,o.jsxs)("div",{style:j,children:[(0,o.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-3)",minWidth:0},children:[(0,o.jsx)("span",{style:{fontSize:"var(--text-md)",fontFamily:"var(--font-mono)",color:"var(--text)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.id}),e.reasoning&&(0,o.jsx)("span",{style:{fontSize:9,padding:"1px 4px",background:"var(--accent-subtle)",color:"var(--accent)",borderRadius:3,flexShrink:0},children:"T"})]}),(0,o.jsxs)("div",{style:{fontSize:"var(--text-sm)",color:"var(--text-dim)",marginTop:2,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[e.providerName,void 0!==e.contextWindow?` \xb7 ${d("modelsConfig.catalogContext",{n:(r=e.contextWindow,(0,I.wk)(r))})}`:"",void 0!==e.cost.input&&void 0!==e.cost.output?` \xb7 ${d("modelsConfig.catalogPrice",{input:e.cost.input,output:e.cost.output})}`:"",a?` \xb7 ${d("modelsConfig.catalogSetBaseUrl")}`:""]})]}),n?(0,o.jsx)("span",{style:{flexShrink:0,padding:"5px 12px",background:"none",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",color:"var(--text-dim)",fontSize:12},children:d("modelsConfig.catalogAdded")}):(0,o.jsx)("button",{type:"button","aria-label":"Add "+e.id+" ("+e.providerName+")",onClick:()=>{let r;return s((r=void 0!==e.cost.input&&void 0!==e.cost.output,{id:e.id,...e.name&&e.name!==e.id?{name:e.name}:{},...void 0!==e.reasoning?{reasoning:e.reasoning}:{},...e.input?{input:e.input}:{},...void 0!==e.contextWindow?{contextWindow:e.contextWindow}:{},...void 0!==e.maxTokens?{maxTokens:e.maxTokens}:{},...r?{cost:{input:e.cost.input,output:e.cost.output,cacheRead:e.cost.cacheRead??0,cacheWrite:e.cost.cacheWrite??0}}:{}}),e.providerBaseUrl)},style:{flexShrink:0,padding:"5px 12px",background:"var(--accent)",border:"none",borderRadius:"var(--radius-control)",color:"var(--on-accent)",cursor:"pointer",fontSize:"var(--text-md)",fontWeight:600},children:d("modelsConfig.catalogAdd")})]},e.key)})})]})})}var R=t(67381),A=t(64433),P=t(70350),M=t(88195),O=t(9312),$=t(87275),W=t(22008),E=t(95476),N=t(35029),U=t(14489),L=t(78728),D=t(19872),H=t(7751),K=t(92526),B=t(48238),F=t(57794),_=t(41098),J=t(84604),q=t(15315),Y=t(74278),V=t(55457),X=t(71437),Z=t(29167),G=t(97283),Q=t(34166),ee=t(33889),er=t(85486),et=t(74068),eo=t(83546),en=t(83709);let ei={anthropic:{Icon:R.A,hasColor:!1},openai:{Icon:A.A,hasColor:!1},"openai-codex":{Icon:A.A,hasColor:!1},google:{Icon:P.A,hasColor:!0},"google-vertex":{Icon:P.A,hasColor:!0},"ant-ling":{Icon:ee.A,hasColor:!0},deepseek:{Icon:M.A,hasColor:!0},groq:{Icon:O.A,hasColor:!1},mistral:{Icon:$.A,hasColor:!0},moonshotai:{Icon:W.A,hasColor:!1},"moonshotai-cn":{Icon:W.A,hasColor:!1},moonshot:{Icon:W.A,hasColor:!1},minimax:{Icon:E.A,hasColor:!0},"minimax-cn":{Icon:E.A,hasColor:!0},fireworks:{Icon:N.A,hasColor:!0},huggingface:{Icon:U.A,hasColor:!0},cerebras:{Icon:L.A,hasColor:!0},openrouter:{Icon:D.A,hasColor:!1},xai:{Icon:H.A,hasColor:!1},"cloudflare-ai-gateway":{Icon:K.A,hasColor:!0},"cloudflare-workers-ai":{Icon:K.A,hasColor:!0},"vercel-ai-gateway":{Icon:B.A,hasColor:!1},"github-copilot":{Icon:F.A,hasColor:!1},"amazon-bedrock":{Icon:_.A,hasColor:!0},"azure-openai-responses":{Icon:J.A,hasColor:!0},"kimi-coding":{Icon:q.A,hasColor:!0},nvidia:{Icon:er.A,hasColor:!0},opencode:{Icon:et.A,hasColor:!1},"opencode-go":{Icon:et.A,hasColor:!1},qwen:{Icon:Y.A,hasColor:!0},xiaomi:{Icon:eo.A,hasColor:!1},"xiaomi-token-plan-ams":{Icon:eo.A,hasColor:!1},"xiaomi-token-plan-cn":{Icon:eo.A,hasColor:!1},"xiaomi-token-plan-sgp":{Icon:eo.A,hasColor:!1},zai:{Icon:en.A,hasColor:!1},"zai-coding-cn":{Icon:en.A,hasColor:!1},zhipu:{Icon:V.A,hasColor:!0},cohere:{Icon:X.A,hasColor:!0},perplexity:{Icon:Z.A,hasColor:!0},together:{Icon:G.A,hasColor:!0},grok:{Icon:Q.A,hasColor:!1}};function ea({models:e,connectedProviders:r,onChanged:t}){let[i,a]=(0,n.useState)(null),[s,l]=(0,n.useState)(null),[d,c]=(0,n.useState)(!1);(0,n.useEffect)(()=>{fetch("/api/omp-settings").then(e=>e.ok?e.json():Promise.reject(Error(`HTTP ${e.status}`))).then(e=>a(e.settings??{})).catch(e=>l(e instanceof Error?e.message:String(e)))},[]);let p=(0,n.useRef)(null),x=(0,n.useRef)(!1),v=e=>{a(e),c(!0),l(null),p.current=e,x.current||(x.current=!0,(async()=>{try{for(;null!==p.current;){let e=p.current;p.current=null;try{let r=await fetch("/api/omp-settings",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({settings:e})}),o=await r.json();if(!r.ok||o.error)throw Error(o.error||`HTTP ${r.status}`);null===p.current&&a(o.settings??e),await t()}catch(e){l(e instanceof Error?e.message:String(e));break}}}finally{x.current=!1,c(!1)}})())};if(!i)return(0,o.jsx)("div",{style:{color:"var(--text-muted)",fontSize:"var(--text-md)"},children:"Loading native OMP registry settings..."});let h=!0===i.registryHasScopedEntries,m=e.map(e=>`${e.provider}/${e.id}`),f=(i.enabledModels?.length??0)>0,b=new Set(i.enabledModels??m),y=[...new Set([...e.map(e=>e.provider),...r.map(e=>e.id),...i.disabledProviders??[]])].sort(),j=new Set(i.disabledProviders??[]),C=i.modelProviderOrder??[],k=[...C,...y.filter(e=>!C.includes(e))];return(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:14},children:[(0,o.jsxs)("div",{children:[(0,o.jsx)(ex,{children:"Native OMP Model Registry"}),(0,o.jsxs)("p",{style:{margin:"4px 0 0",color:"var(--text-muted)",fontSize:"var(--text-md)",lineHeight:1.5},children:["These settings affect the models OMP itself can resolve. They are saved in ",(0,o.jsx)("code",{children:"~/.omp/agent/config.yml"}),", unlike the Composer picker."]})]}),(0,o.jsxs)("section",{style:{border:"1px solid var(--border)",borderRadius:"var(--radius-card)",overflow:"hidden"},children:[(0,o.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:"var(--space-4)",padding:"10px 12px",background:"var(--bg-panel)",color:"var(--text)",fontSize:"var(--text-md)",fontWeight:600},children:[(0,o.jsx)("input",{type:"checkbox",checked:f,disabled:d||h,onChange:e=>void v({...i,enabledModels:e.target.checked?m:[]})})," Restrict OMP to selected models"]}),(0,o.jsx)("p",{style:{margin:0,padding:"8px 12px",color:"var(--text-muted)",fontSize:"var(--text-sm)",lineHeight:1.45},children:f?"Unchecked models are unavailable to every OMP session.":"All currently available OMP models are allowed."}),f&&(0,o.jsx)("div",{style:{maxHeight:260,overflowY:"auto",borderTop:"1px solid var(--border)"},children:e.map(e=>{let r=`${e.provider}/${e.id}`;return(0,o.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:"var(--space-4)",padding:"6px 12px",color:"var(--text-muted)",fontSize:"var(--text-md)"},children:[(0,o.jsx)("input",{type:"checkbox",checked:b.has(r),disabled:d||h,onChange:e=>{let t=new Set(b);e.target.checked?t.add(r):t.delete(r),v({...i,enabledModels:[...t]})}}),(0,o.jsx)("code",{children:r})]},r)})})]}),(0,o.jsxs)("section",{style:{border:"1px solid var(--border)",borderRadius:"var(--radius-card)",overflow:"hidden"},children:[(0,o.jsx)("div",{style:{padding:"10px 12px",background:"var(--bg-panel)",color:"var(--text)",fontSize:"var(--text-md)",fontWeight:600},children:"Disabled Providers"}),(0,o.jsx)("p",{style:{margin:0,padding:"8px 12px",color:"var(--text-muted)",fontSize:"var(--text-sm)",lineHeight:1.45},children:"Disabling a provider removes it from OMP's model registry, even if it has credentials."}),(0,o.jsx)("div",{style:{borderTop:"1px solid var(--border)"},children:y.map(e=>(0,o.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:"var(--space-4)",padding:"7px 12px",color:"var(--text-muted)",fontSize:"var(--text-md)"},children:[(0,o.jsx)("input",{type:"checkbox",checked:j.has(e),disabled:d||h,onChange:r=>{let t=new Set(j);r.target.checked?t.add(e):t.delete(e),v({...i,disabledProviders:[...t]})}}),(0,o.jsx)(ez,{id:e,size:14}),(0,o.jsx)("code",{children:e})]},e))})]}),(0,o.jsxs)("section",{style:{border:"1px solid var(--border)",borderRadius:"var(--radius-card)",overflow:"hidden"},children:[(0,o.jsx)("div",{style:{padding:"10px 12px",background:"var(--bg-panel)",color:"var(--text)",fontSize:"var(--text-md)",fontWeight:600},children:"Provider Preference"}),(0,o.jsx)("p",{style:{margin:0,padding:"8px 12px",color:"var(--text-muted)",fontSize:"var(--text-sm)",lineHeight:1.45},children:"Sets OMP's provider order when a model id is ambiguous."}),(0,o.jsx)("div",{style:{borderTop:"1px solid var(--border)"},children:k.map((e,r)=>(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-4)",padding:"7px 12px",color:"var(--text-muted)",fontSize:"var(--text-md)"},children:[(0,o.jsx)(ez,{id:e,size:14}),(0,o.jsx)("code",{style:{flex:1},children:e}),(0,o.jsx)("button",{type:"button",disabled:d||h||0===r,onClick:()=>{let e=[...k];[e[r-1],e[r]]=[e[r],e[r-1]],v({...i,modelProviderOrder:e})},title:"Move provider up","aria-label":`Move provider ${e} up`,className:"ui-focus-ring",style:{width:24,height:24,padding:0,display:"inline-flex",alignItems:"center",justifyContent:"center",border:"none",borderRadius:4,background:"transparent",color:"var(--text-muted)",cursor:"pointer"},children:(0,o.jsx)(u.A,{size:14})}),(0,o.jsx)("button",{type:"button",disabled:d||h||r===k.length-1,onClick:()=>{let e=[...k];[e[r+1],e[r]]=[e[r],e[r+1]],v({...i,modelProviderOrder:e})},title:"Move provider down","aria-label":`Move provider ${e} down`,className:"ui-focus-ring",style:{width:24,height:24,padding:0,display:"inline-flex",alignItems:"center",justifyContent:"center",border:"none",borderRadius:4,background:"transparent",color:"var(--text-muted)",cursor:"pointer"},children:(0,o.jsx)(g.A,{size:14})})]},e))})]}),h&&(0,o.jsxs)("div",{role:"status",style:{padding:"9px 11px",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",color:"var(--text-muted)",fontSize:"var(--text-md)",lineHeight:1.45},children:["OMP path-scoped registry entries are configured. Edit ",(0,o.jsx)("code",{children:"config.yml"})," directly to preserve their path rules."]}),s&&(0,o.jsx)("div",{role:"alert",style:{color:"var(--status-error)",fontSize:"var(--text-md)"},children:s})]})}let es="omp-composer-models",el=["default","smol","slow","vision","plan","designer","commit","tiny","task","advisor"];function ed({models:e}){let[r,t]=(0,n.useState)({}),[i,a]=(0,n.useState)(!0),[s,l]=(0,n.useState)(!1),[d,c]=(0,n.useState)(null);(0,n.useEffect)(()=>{fetch("/api/model-roles").then(e=>e.ok?e.json():Promise.reject(Error(`HTTP ${e.status}`))).then(e=>t(e.roles??{})).catch(e=>c(e instanceof Error?e.message:String(e))).finally(()=>a(!1))},[]);let p=async()=>{l(!0),c(null);try{let e=await fetch("/api/model-roles",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({roles:r})}),t=await e.json();if(!e.ok||t.error)throw Error(t.error||`HTTP ${e.status}`);z.oR.success("OMP model roles saved")}catch(e){c(e instanceof Error?e.message:String(e))}finally{l(!1)}};return(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:14},children:[(0,o.jsxs)("div",{children:[(0,o.jsx)(ex,{children:"OMP Model Roles"}),(0,o.jsxs)("p",{style:{margin:"4px 0 0",fontSize:"var(--text-md)",color:"var(--text-muted)",lineHeight:1.5},children:["Saved natively in ",(0,o.jsx)("code",{children:"~/.omp/agent/config.yml"}),". Choose an OMP model and its supported reasoning level for each role."]})]}),i?(0,o.jsx)("div",{style:{color:"var(--text-muted)",fontSize:"var(--text-md)"},children:"Loading roles..."}):el.map(n=>{let i,a,s,l,d;return(0,o.jsxs)("div",{className:"model-role-row",style:{display:"grid",gridTemplateColumns:"82px minmax(0, 1fr) minmax(110px, 0.35fr)",alignItems:"center",gap:10,fontSize:"var(--text-md)"},children:[(0,o.jsx)("code",{style:{color:"var(--text-muted)"},children:n}),(a=(i=r[n]??"").replace(/:([^,:]+)$/,""),s=i.match(/:([^,:]+)$/)?.[1]??"",l=e.find(e=>`${e.provider}/${e.id}`===a),d=!a||!!l,(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)("select",{"aria-label":`Model override for ${n}`,value:a,onChange:e=>{var o;let i,a;return o=e.target.value,i=r[n]??"",a=i.match(/:([^,:]+)$/)?.[1]??"",void t(e=>({...e,[n]:o?`${o}${a?`:${a}`:""}`:""}))},style:{minWidth:0,padding:"7px 9px",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"var(--bg)",color:"var(--text)",fontSize:"var(--text-md)"},children:[(0,o.jsx)("option",{value:"",children:"No override"}),!d&&(0,o.jsxs)("option",{value:a,children:[a," (not currently available)"]}),e.map(e=>(0,o.jsxs)("option",{value:`${e.provider}/${e.id}`,children:[e.name||e.id," (",e.provider,"/",e.id,")"]},`${e.provider}:${e.id}`))]}),(0,o.jsxs)("select",{"aria-label":`Thinking level for ${n}`,value:s,disabled:!l,onChange:e=>{var o;let i;return o=e.target.value,i=(r[n]??"").replace(/:([^,:]+)$/,""),void t(e=>({...e,[n]:i?`${i}${o?`:${o}`:""}`:""}))},style:{minWidth:0,padding:"7px 9px",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"var(--bg)",color:"var(--text)",fontSize:"var(--text-md)",opacity:l?1:.55},children:[(0,o.jsx)("option",{value:"",children:"Model default"}),(l?.thinkingLevels??[]).filter(e=>"off"!==e).map(e=>(0,o.jsx)("option",{value:e,children:e},e))]})]}))]},n)}),d&&(0,o.jsx)("div",{role:"alert",style:{color:"var(--status-error)",fontSize:"var(--text-md)"},children:d}),(0,o.jsx)("button",{type:"button",onClick:()=>void p(),disabled:i||s,style:{alignSelf:"flex-start",padding:"7px 12px",border:"none",borderRadius:"var(--radius-control)",background:"var(--accent)",color:"var(--on-accent)",cursor:s?"wait":"pointer",fontSize:"var(--text-md)",fontWeight:600},children:s?"Saving...":"Save OMP roles"})]})}let ec=["openai-completions","openai-responses","openai-codex-responses","azure-openai-responses","anthropic-messages","bedrock-converse-stream","google-generative-ai","google-gemini-cli","google-vertex"];function ep({text:e}){let r=e.split("`");return 1===r.length?(0,o.jsx)(o.Fragment,{children:e}):(0,o.jsx)(o.Fragment,{children:r.map((e,r)=>r%2==1?(0,o.jsx)("code",{style:{fontFamily:"var(--font-mono)"},children:e},r):e)})}function ex({children:e}){return(0,o.jsx)("div",{style:{fontSize:"var(--text-sm)",fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.06em",marginBottom:2},children:e})}function eu({icon:e,label:r,selected:t,onClick:n}){return(0,o.jsxs)("button",{type:"button",onClick:n,style:{width:"100%",padding:"8px 10px",border:"none",borderRadius:"var(--radius-control)",background:t?"var(--bg-selected)":"none",color:t?"var(--text)":"var(--text-muted)",cursor:"pointer",fontSize:"var(--text-md)",textAlign:"left",display:"flex",alignItems:"center",gap:"var(--space-4)",fontWeight:t?600:400},children:[(0,o.jsx)(e,{size:14,style:{color:t?"var(--accent)":"currentColor",flexShrink:0}}),r]})}let eg=e=>({onMouseEnter:r=>{e||(r.currentTarget.style.background="var(--bg-hover)")},onMouseLeave:r=>{e||(r.currentTarget.style.background="none")}}),ev={onMouseEnter:e=>{e.currentTarget.style.color="var(--accent)",e.currentTarget.style.borderColor="var(--accent)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.borderColor="var(--border)"}},eh=[{label:"\uD83E\uDD99 Ollama",baseUrl:"http://localhost:11434/v1",auth:"none"},{label:"⚡ LM Studio / vLLM",baseUrl:"http://localhost:1234/v1",auth:"none"},{label:"\uD83C\uDF10 OpenRouter",baseUrl:"https://openrouter.ai/api/v1",auth:"apiKey"},{label:"\uD83E\uDD16 Local Proxy (:2455)",baseUrl:"http://127.0.0.1:2455/v1",auth:"keep"}],em={padding:"4px 8px",fontSize:"var(--text-sm)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"var(--bg)",color:"var(--text)",cursor:"pointer"};function ef({name:e,provider:r,onChange:t,onRename:i,onDelete:s}){let{t:l}=(0,a.s9)(),[d,c]=(0,n.useState)(e),[p,u]=(0,n.useState)(!1);(0,n.useEffect)(()=>c(e),[e]);let g=(e,o)=>t({...r,[e]:o}),m=(0,x.JT)(()=>d.trim()?null:l("modelsConfig.errorNameRequired")),f=(0,x.JT)(()=>{let e=r.baseUrl??"";if(!e.trim())return null;try{let r=new URL(e);if("http:"!==r.protocol&&"https:"!==r.protocol)return l("modelsConfig.errorUrlInvalid");return null}catch{return l("modelsConfig.errorUrlInvalid")}}),b=!0===r.apiKeyConfigured,y=b&&void 0===r.apiKey,j=(0,x.JT)(()=>"none"===r.auth||"oauth"===r.auth||!r.models?.length||y||"string"==typeof r.apiKey&&r.apiKey.trim()?null:l("modelsConfig.errorApiKeyRequired")),C=d.trim(),k=r.baseUrl?r.baseUrl.replace(/^https?:\/\//,"").split("/")[0]||r.baseUrl:"Default endpoint";return(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-6)"},children:[(0,o.jsxs)("div",{style:{padding:"14px 16px",border:"1px solid var(--border)",borderRadius:"var(--radius-card)",background:"var(--bg-panel)",display:"flex",flexDirection:"column",gap:10,boxShadow:"var(--shadow-card)"},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"var(--space-5)"},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10},children:[(0,o.jsx)("div",{style:{width:"var(--control-height-lg)",height:"var(--control-height-lg)",borderRadius:"var(--radius-control)",background:"var(--bg-subtle)",border:"1px solid var(--border)",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:(0,o.jsx)(ez,{id:e,size:20})}),(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:2},children:[(0,o.jsx)("div",{style:{fontSize:15,fontWeight:700,fontFamily:"var(--font-mono)",color:"var(--text)"},children:e}),(0,o.jsx)("div",{style:{fontSize:"var(--text-sm)",color:"var(--text-muted)",fontFamily:"var(--font-mono)"},children:k})]})]}),(0,o.jsx)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-3)"},children:"none"===r.auth?(0,o.jsx)("span",{style:{fontSize:"var(--text-xs)",padding:"2px 7px",borderRadius:4,background:"var(--bg-subtle)",color:"var(--text-muted)",fontWeight:500},children:"Auth: None"}):y||"string"==typeof r.apiKey&&r.apiKey.length>0?(0,o.jsx)("span",{style:{fontSize:"var(--text-xs)",padding:"2px 7px",borderRadius:4,background:"color-mix(in srgb, var(--accent) 15%, transparent)",color:"var(--accent)",fontWeight:600},children:"Key Set"}):null===r.apiKey?(0,o.jsx)("span",{style:{fontSize:"var(--text-xs)",padding:"2px 7px",borderRadius:4,background:"color-mix(in srgb, var(--status-warning) 15%, transparent)",color:"var(--status-warning)",fontWeight:600},children:"Key Will Clear"}):(0,o.jsx)("span",{style:{fontSize:"var(--text-xs)",padding:"2px 7px",borderRadius:4,background:"color-mix(in srgb, var(--status-error) 15%, transparent)",color:"var(--status-error)",fontWeight:600},children:"Key Missing"})})]}),(0,o.jsxs)("div",{style:{borderTop:"1px solid var(--border)",paddingTop:10,marginTop:4},children:[(0,o.jsx)("div",{style:{fontSize:"var(--text-xs)",fontWeight:700,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.06em",marginBottom:6},children:"Quick Endpoint Presets"}),(0,o.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:"var(--space-3)"},children:eh.map(e=>(0,o.jsx)("button",{type:"button",onClick:()=>{t({...r,baseUrl:e.baseUrl,api:"openai-completions",auth:"keep"===e.auth?r.auth:e.auth}),z.oR.success(`Applied ${e.baseUrl} endpoint preset`)},style:em,children:e.label},e.baseUrl))})]})]}),(0,o.jsxs)(x.M_,{label:(0,o.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:"var(--space-3)"},children:[(0,o.jsx)(v.A,{size:12,"aria-hidden":"true"})," Configuration Details"]}),children:[(0,o.jsx)(x.D0,{label:l("modelsConfig.providerName"),required:!0,error:m.error,children:(0,o.jsx)(x.ks,{value:d,onChange:e=>{c(e),m.onChange()},placeholder:"provider-name",mono:!0,invalid:!!m.error,error:m.error,onBlurValidate:m.onBlur})}),C!==e&&(0,o.jsx)("button",{type:"button",onClick:()=>{m.onSubmit()||i(C)},style:{alignSelf:"flex-start",padding:"5px 12px",background:"var(--accent)",border:"none",borderRadius:"var(--radius-control)",color:"var(--on-accent)",cursor:"pointer",fontSize:"var(--text-sm)",fontWeight:600},children:l("modelsConfig.rename")}),(0,o.jsx)(x.D0,{label:l("modelsConfig.baseUrl"),error:f.error,children:(0,o.jsx)(x.ks,{value:r.baseUrl??"",onChange:e=>{g("baseUrl",e||void 0),f.onChange()},placeholder:"https://api.example.com/v1",mono:!0,invalid:!!f.error,error:f.error,onBlurValidate:f.onBlur})}),(0,o.jsxs)(x.D0,{label:l("modelsConfig.apiKey"),hint:(0,o.jsxs)("span",{children:[(0,o.jsx)(ep,{text:l("modelsConfig.apiKeyHint")}),y&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("br",{}),"A configured key is retained unless you replace it or explicitly clear it."]})]}),error:j.error,children:[(0,o.jsx)(x.L4,{value:"string"==typeof r.apiKey?r.apiKey:"",onChange:e=>{g("apiKey",e||(b?null:void 0)),j.onChange()},placeholder:l("modelsConfig.apiKeyPlaceholder"),invalid:!!j.error,error:j.error,onBlurValidate:j.onBlur,showLabel:l("modelsConfig.showApiKey"),hideLabel:l("modelsConfig.hideApiKey")}),b&&(0,o.jsx)("button",{type:"button",onClick:()=>{g("apiKey",null),j.onChange(),j.onBlur()},style:{alignSelf:"flex-start",padding:"4px 9px",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"none",color:"var(--text-muted)",cursor:"pointer",fontSize:"var(--text-sm)"},children:"Clear stored API key"})]}),(0,o.jsx)(x.Jl,{label:l("modelsConfig.noApiKeyRequired"),checked:"none"===r.auth,onChange:e=>{g("auth",e?"none":void 0),e&&j.onChange(),j.onBlur()}}),(0,o.jsx)(x.D0,{label:l("modelsConfig.api"),children:(0,o.jsx)(x.l6,{value:r.api??"openai-completions",onChange:e=>g("api",e),options:r.api&&!ec.includes(r.api)?[r.api,...ec]:ec,required:!0,placeholder:l("modelsConfig.inheritNone")})})]}),(0,o.jsxs)("section",{style:{padding:"14px 16px",border:"1px solid color-mix(in srgb, var(--status-error) 25%, transparent)",borderRadius:"var(--radius-card)",background:"var(--bg-panel)",display:"flex",alignItems:"center",justifyContent:"space-between",gap:"var(--space-5)"},children:[(0,o.jsxs)("div",{children:[(0,o.jsx)("div",{style:{fontSize:12.5,fontWeight:600,color:"var(--text)"},children:"Remove Provider"}),(0,o.jsxs)("div",{style:{fontSize:"var(--text-sm)",color:"var(--text-muted)",marginTop:2},children:["Delete ",e," and remove its models from models.yml configuration."]})]}),(0,o.jsxs)("button",{type:"button",onClick:()=>u(!0),style:{padding:"6px 12px",background:"none",border:"1px solid var(--status-error)",borderRadius:"var(--radius-control)",color:"var(--status-error)",cursor:"pointer",fontSize:"var(--text-md)",display:"inline-flex",alignItems:"center",gap:5,fontWeight:500,flexShrink:0},children:[(0,o.jsx)(h.A,{size:13,"aria-hidden":"true"})," ",l("modelsConfig.delete")]})]}),(0,o.jsx)(x.TM,{open:p,onOpenChange:u,title:l("modelsConfig.deleteProviderTitle",{name:e}),description:l("modelsConfig.deleteProviderBody",{name:e}),confirmLabel:l("modelsConfig.delete"),cancelLabel:l("modelsConfig.cancel"),danger:!0,onConfirm:()=>{u(!1),s()}})]})}let eb=["minimal","low","medium","high","xhigh","max"],ey={minimal:"var(--text-dim)",low:"color-mix(in srgb, var(--accent) 45%, var(--text-muted))",medium:"var(--accent)",high:"var(--accent-hover)",xhigh:"var(--status-warning)",max:"var(--status-error)"};function ej({value:e,onChange:r}){let{t}=(0,a.s9)(),n=e?.efforts,i=e?.effortMap??{},s=(t,o)=>{let a=new Set(n??[...eb]),s={...i};null===o?(a.delete(t),delete s[t]):(a.add(t),"omit"===o?delete s[t]:s[t]=o);let l=eb.filter(e=>a.has(e));0===l.length||l.length===eb.length&&0===Object.keys(s).length?r(void 0):r({...e??{},mode:e?.mode??"effort",efforts:l,effortMap:Object.keys(s).length?s:void 0})};return(0,o.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:2},children:eb.map(e=>{let r=void 0!==n&&!n.includes(e),a=r?null:i[e],l=r?"null":"string"==typeof a?"string":"omit",d="string"==typeof a?a:"",c=ey[e],p={padding:"4px 10px",fontSize:"var(--text-xs)",border:"none",cursor:"pointer",fontWeight:400,transition:"background var(--dur-fast) var(--ease-out-warm), color var(--dur-fast) var(--ease-out-warm)",whiteSpace:"nowrap",background:"var(--bg-panel)",color:"var(--text-dim)"},x={background:"var(--accent)",color:"var(--on-accent)",fontWeight:600};return(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-4)",padding:"5px 4px",borderRadius:"var(--radius-control)",background:"transparent",border:"1px solid transparent"},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:5,width:68,flexShrink:0},children:[(0,o.jsx)("span",{style:{width:6,height:6,borderRadius:"50%",background:c,flexShrink:0,opacity:"null"===l?.3:1}}),(0,o.jsx)("span",{style:{fontSize:"var(--text-sm)",fontFamily:"var(--font-mono)",color:"null"===l?"var(--text-dim)":"var(--text-muted)",textDecoration:"null"===l?"line-through":"none"},children:e})]}),(0,o.jsxs)("div",{style:{display:"flex",borderRadius:"var(--radius-control)",border:"1px solid var(--border)",overflow:"hidden",flexShrink:0},children:[(0,o.jsx)("button",{onClick:()=>s(e,"omit"),style:{...p,..."omit"===l?x:{}},children:t("modelsConfig.default")}),(0,o.jsx)("button",{onClick:()=>s(e,null),style:{...p,borderLeft:"1px solid var(--border)",..."null"===l?{background:"var(--status-error)",color:"var(--on-accent)",fontWeight:600}:{}},children:t("modelsConfig.disabled")})]}),(0,o.jsxs)("div",{style:{display:"flex",borderRadius:"var(--radius-control)",border:`1px solid ${"string"===l?"var(--accent)":"var(--border)"}`,overflow:"hidden",transition:"border-color var(--dur-fast) var(--ease-out-warm)"},children:[(0,o.jsx)("button",{onClick:()=>s(e,d||e),style:{...p,..."string"===l?x:{},borderRight:"1px solid var(--border)",flexShrink:0},children:t("modelsConfig.custom")}),(0,o.jsx)("input",{value:d,onChange:r=>s(e,r.target.value),onFocus:()=>{"string"!==l&&s(e,d||e)},placeholder:e,maxLength:10,style:{width:"12ch",background:"string"===l?"var(--bg)":"var(--bg-panel)",border:"none",outline:"none",color:"string"===l?"var(--text)":"var(--text-dim)",fontFamily:"var(--font-mono)",fontSize:"var(--text-sm)",padding:"4px 7px",transition:"background var(--dur-fast) var(--ease-out-warm), color var(--dur-fast) var(--ease-out-warm)"}})]})]},e)})})}let eC={input:"modelsConfig.costInput",output:"modelsConfig.costOutput",cacheRead:"modelsConfig.costCacheRead",cacheWrite:"modelsConfig.costCacheWrite"};function ek({providerName:e,provider:r,model:t,onChange:i,onDelete:s}){let{t:l}=(0,a.s9)(),[c,p]=(0,n.useState)({phase:"idle"}),[u,g]=(0,n.useState)(!1),v=(e,r)=>i({...t,[e]:r}),C=(0,x.JT)(()=>t.id.trim()?null:l("modelsConfig.errorIdRequired")),k=(()=>{if("idle"===c.phase)return null;if("testing"===c.phase)return l("modelsConfig.validatingConfig");let e=[void 0!==c.latencyMs?`${c.latencyMs}ms`:null,void 0!==c.status?`HTTP ${c.status}`:null].filter(Boolean);return"success"===c.phase?[l("modelsConfig.ok"),...e,c.responseText||null].filter(Boolean).join(" \xb7 "):[l("modelsConfig.failed"),...e,c.message].filter(Boolean).join(" \xb7 ")})();(0,n.useEffect)(()=>{p({phase:"idle"})},[e,r.baseUrl,r.api,r.apiKey,t.id,t.api]);let S=(0,n.useCallback)(async()=>{if(t.id.trim()&&"testing"!==c.phase){p({phase:"testing"});try{let o=await fetch("/api/models-config/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({providerName:e,provider:r,model:t})}),n=await o.json();if(!o.ok||!n.ok)return void p({phase:"error",message:n.error||n.code?(0,d.K)(n):`HTTP ${o.status}`,latencyMs:n.latencyMs,status:n.status});p({phase:"success",latencyMs:n.latencyMs,status:n.status,responseText:n.responseText})}catch(e){p({phase:"error",message:e instanceof Error?e.message:String(e)})}}},[t,r,e,c.phase]);return(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:14},children:[(0,o.jsxs)(x.M_,{label:(0,o.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:5},children:[(0,o.jsx)(m.A,{size:11,"aria-hidden":"true"})," ",l("modelsConfig.model")]}),children:[(0,o.jsxs)("div",{className:"model-detail-grid-2",style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:10},children:[(0,o.jsx)(x.D0,{label:l("modelsConfig.idRequired"),required:!0,error:C.error,children:(0,o.jsx)(x.ks,{value:t.id,onChange:e=>{v("id",e),C.onChange()},placeholder:"model-id",mono:!0,invalid:!!C.error,error:C.error,onBlurValidate:C.onBlur})}),(0,o.jsx)(x.D0,{label:l("modelsConfig.name"),children:(0,o.jsx)(x.ks,{value:t.name??"",onChange:e=>v("name",e||void 0),placeholder:l("modelsConfig.displayNamePlaceholder")})})]}),(0,o.jsx)(x.D0,{label:l("modelsConfig.apiOverride"),children:(0,o.jsx)(x.l6,{value:t.api??"",onChange:e=>v("api",e||void 0),options:t.api&&!ec.includes(t.api)?[t.api,...ec]:ec,placeholder:l("modelsConfig.inheritNone")})}),(0,o.jsxs)("div",{style:{display:"flex",gap:20,flexWrap:"wrap"},children:[(0,o.jsx)(x.Jl,{label:l("modelsConfig.reasoningThinking"),checked:t.reasoning??!1,onChange:e=>v("reasoning",e||void 0)}),(0,o.jsx)(x.Jl,{label:l("modelsConfig.imageInput"),checked:t.input?.includes("image")??!1,onChange:e=>v("input",e?["text","image"]:void 0)})]})]}),t.reasoning&&(0,o.jsxs)(x.M_,{label:(0,o.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:5},children:[(0,o.jsx)(f.A,{size:11,"aria-hidden":"true"})," ",l("modelsConfig.thinkingLevels")]}),children:[(0,o.jsx)("div",{style:{display:"flex",justifyContent:"flex-end"},children:t.thinking&&(0,o.jsxs)("button",{type:"button",onClick:()=>v("thinking",void 0),style:{fontSize:"var(--text-xs)",padding:"3px 9px",background:"none",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",color:"var(--text-dim)",cursor:"pointer",display:"inline-flex",alignItems:"center",gap:"var(--space-2)"},children:[(0,o.jsx)(b.A,{size:10,"aria-hidden":"true"})," ",l("modelsConfig.resetToAuto")]})}),(0,o.jsx)(ej,{value:t.thinking,onChange:e=>v("thinking",e)})]}),(0,o.jsx)(x.M_,{label:l("modelsConfig.tokenLimits"),children:(0,o.jsxs)("div",{className:"model-detail-grid-2",style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:10},children:[(0,o.jsx)(x.D0,{label:l("modelsConfig.contextWindowTokens"),children:(0,o.jsx)(x.XZ,{value:void 0!==t.contextWindow?String(t.contextWindow):"",onChange:e=>v("contextWindow",e?parseInt(e):void 0),placeholder:"128000"})}),(0,o.jsx)(x.D0,{label:l("modelsConfig.maxOutputTokens"),children:(0,o.jsx)(x.XZ,{value:void 0!==t.maxTokens?String(t.maxTokens):"",onChange:e=>v("maxTokens",e?parseInt(e):void 0),placeholder:"16384"})})]})}),(0,o.jsx)(x.M_,{label:l("modelsConfig.costPerMillion"),children:(0,o.jsx)("div",{className:"model-detail-grid-4",style:{display:"grid",gridTemplateColumns:"1fr 1fr 1fr 1fr",gap:10},children:["input","output","cacheRead","cacheWrite"].map(e=>(0,o.jsx)(x.D0,{label:l(eC[e]),children:(0,o.jsx)(x.XZ,{value:t.cost?.[e]!==void 0?String(t.cost[e]):"",onChange:r=>{let o;return o=parseFloat(r),void i({...t,cost:{...t.cost??{},[e]:isNaN(o)?void 0:o}})},placeholder:"0"})},e))})}),(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:"var(--space-4)"},children:[k&&(0,o.jsxs)("span",{title:k,style:{maxWidth:360,padding:"4px 10px",border:`1px solid ${"error"===c.phase?"color-mix(in srgb, var(--accent) 30%, transparent)":"success"===c.phase?"color-mix(in srgb, var(--accent) 25%, transparent)":"var(--border)"}`,borderRadius:"var(--radius-control)",background:"error"===c.phase?"color-mix(in srgb, var(--accent) 10%, var(--bg-panel))":"success"===c.phase?"color-mix(in srgb, var(--accent) 8%, var(--bg-panel))":"var(--bg-panel)",color:"error"===c.phase||"success"===c.phase?"var(--text)":"var(--text-muted)",fontSize:"var(--text-sm)",display:"inline-flex",alignItems:"center",gap:"var(--space-3)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:["success"===c.phase?(0,o.jsx)(y.A,{size:11,"aria-hidden":"true"}):null,"error"===c.phase?(0,o.jsx)(j.A,{size:11,"aria-hidden":"true"}):null,k]}),(0,o.jsxs)("div",{style:{display:"flex",gap:"var(--space-4)",marginLeft:"auto"},children:[(0,o.jsxs)("button",{type:"button",onClick:S,disabled:!t.id.trim()||"testing"===c.phase,title:l("modelsConfig.testTitle"),style:{padding:"5px 12px",background:"success"===c.phase?"color-mix(in srgb, var(--accent) 18%, var(--bg-panel))":"none",border:`1px solid ${"success"===c.phase?"color-mix(in srgb, var(--accent) 30%, transparent)":"var(--border)"}`,borderRadius:"var(--radius-control)",color:"success"===c.phase?"var(--accent)":t.id.trim()&&"testing"!==c.phase?"var(--text-muted)":"var(--text-dim)",cursor:t.id.trim()&&"testing"!==c.phase?"pointer":"not-allowed",fontSize:"var(--text-sm)",display:"inline-flex",alignItems:"center",justifyContent:"center",gap:5},children:["success"===c.phase&&(0,o.jsx)(y.A,{size:11,"aria-hidden":"true"}),"testing"===c.phase?l("modelsConfig.testing"):"success"===c.phase?l("modelsConfig.ok"):l("modelsConfig.test")]}),(0,o.jsxs)("button",{type:"button",onClick:()=>g(!0),style:{padding:"5px 12px",background:"none",border:"1px solid color-mix(in srgb, var(--accent) 30%, transparent)",borderRadius:"var(--radius-control)",color:"var(--accent)",cursor:"pointer",fontSize:"var(--text-sm)",display:"inline-flex",alignItems:"center",gap:"var(--space-2)"},children:[(0,o.jsx)(h.A,{size:11,"aria-hidden":"true"})," ",l("modelsConfig.remove")]})]})]}),(0,o.jsx)(x.TM,{open:u,onOpenChange:g,title:l("modelsConfig.removeModelTitle",{id:t.id}),description:l("modelsConfig.removeModelBody",{id:t.id}),confirmLabel:l("modelsConfig.remove"),cancelLabel:l("modelsConfig.cancel"),danger:!0,onConfirm:()=>{g(!1),s()}})]})}function eS({provider:e,onRefresh:r}){let{t,tn:i}=(0,a.s9)(),[l,c]=(0,n.useState)({phase:"idle"}),[p,x]=(0,n.useState)(""),u=(0,n.useRef)(null),g=(0,n.useRef)(null);(0,n.useEffect)(()=>{("auth"===l.phase||"prompt"===l.phase)&&setTimeout(()=>g.current?.focus(),50)},[l.phase]),(0,n.useEffect)(()=>{c({phase:"idle"}),x(""),u.current?.close(),u.current=null},[e.id]),(0,n.useEffect)(()=>()=>{u.current?.close()},[]);let v=(0,n.useCallback)(()=>{u.current?.close(),c({phase:"connecting"}),x("");let o=new EventSource(`/api/auth/login/${encodeURIComponent(e.id)}`);u.current=o,o.onmessage=e=>{let t;try{t=JSON.parse(e.data)}catch{return}"auth"===t.type?(c({phase:"auth",url:t.url,instructions:t.instructions??null,token:t.token}),s(t.url)&&window.open(t.url,"_blank","noopener,noreferrer")):"device_code"===t.type?(c({phase:"device_code",userCode:t.userCode,verificationUri:t.verificationUri,intervalSeconds:t.intervalSeconds??null,expiresInSeconds:t.expiresInSeconds??null}),s(t.verificationUri)&&window.open(t.verificationUri,"_blank","noopener,noreferrer")):"prompt_request"===t.type?c({phase:"prompt",message:t.message,placeholder:t.placeholder??null,token:t.token}):"select_request"===t.type?c({phase:"select",message:t.message,options:t.options??[],token:t.token}):"progress"===t.type?c({phase:"progress",message:t.message}):"success"===t.type?(o.close(),c({phase:"success"}),r()):"error"===t.type?(o.close(),c({phase:"error",message:t.message})):"cancelled"===t.type&&(o.close(),c({phase:"idle"}))},o.onerror=()=>{o.close(),c(e=>"success"===e.phase?e:{phase:"error",message:t("modelsConfig.connectionLost")})}},[e.id,r,t]),h=(0,n.useCallback)(async(r,o)=>{if(o.trim()){c({phase:"progress",message:t("modelsConfig.verifying")});try{let n=await fetch(`/api/auth/login/${encodeURIComponent(e.id)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:r,code:o.trim()})});if(!n.ok){let e=await n.json().catch(()=>({}));c({phase:"error",message:e.error||e.code?(0,d.K)(e):t("modelsConfig.serverError",{status:n.status})});return}x("")}catch(e){c({phase:"error",message:e instanceof Error?e.message:t("modelsConfig.networkError")})}}},[e.id,t]),m=(0,n.useCallback)(async(r,o)=>{c({phase:"progress",message:t("modelsConfig.continuing")});try{let n=await fetch(`/api/auth/login/${encodeURIComponent(e.id)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:r,code:o})});if(!n.ok){let e=await n.json().catch(()=>({}));c({phase:"error",message:e.error||e.code?(0,d.K)(e):t("modelsConfig.serverError",{status:n.status})})}}catch(e){c({phase:"error",message:e instanceof Error?e.message:t("modelsConfig.networkError")})}},[e.id,t]),f="connecting"===l.phase||"progress"===l.phase||"auth"===l.phase||"device_code"===l.phase||"prompt"===l.phase||"select"===l.phase;return(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-6)"},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,o.jsx)(ex,{children:t("modelsConfig.subscription")}),(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-3)"},children:[(0,o.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:e.loggedIn?"var(--status-success)":"var(--border)",display:"inline-block"}}),(0,o.jsx)("span",{style:{fontSize:"var(--text-sm)",color:e.loggedIn?"var(--status-success)":"var(--text-dim)"},children:e.loggedIn?t("modelsConfig.connected"):t("modelsConfig.notConnected")})]})]}),(0,o.jsxs)("div",{style:{minHeight:48},children:["idle"===l.phase&&(0,o.jsx)("p",{style:{margin:0,fontSize:"var(--text-md)",color:"var(--text-muted)",lineHeight:1.5},children:e.loggedIn?t("modelsConfig.alreadyConnected"):t("modelsConfig.connectAccount",{name:e.name})}),"connecting"===l.phase&&(0,o.jsx)("p",{style:{margin:0,fontSize:"var(--text-md)",color:"var(--text-muted)"},children:t("modelsConfig.openingBrowser")}),"select"===l.phase&&(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:10},children:[(0,o.jsx)("p",{style:{margin:0,fontSize:"var(--text-md)",color:"var(--text-muted)",lineHeight:1.5},children:l.message}),(0,o.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-3)"},children:l.options.map(e=>(0,o.jsx)("button",{onClick:()=>m(l.token,e.id),style:{padding:"6px 9px",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",color:"var(--text)",cursor:"pointer",fontSize:"var(--text-md)",textAlign:"left"},children:e.label},e.id))})]}),("auth"===l.phase||"prompt"===l.phase)&&(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:10},children:[(0,o.jsx)("p",{style:{margin:0,fontSize:"var(--text-md)",color:"var(--text-muted)",lineHeight:1.5},children:"auth"===l.phase?t("modelsConfig.completeSignIn"):l.message}),"auth"===l.phase&&(0,o.jsx)("p",{style:{margin:0,fontSize:"var(--text-sm)",color:"var(--text-dim)",lineHeight:1.5},children:(0,o.jsx)("a",{href:l.url,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--accent)",wordBreak:"break-all"},children:t("modelsConfig.browserNotOpened")})}),(0,o.jsxs)("div",{style:{display:"flex",gap:"var(--space-3)"},children:[(0,o.jsx)("input",{ref:g,value:p,onChange:e=>x(e.target.value),onKeyDown:e=>{"Enter"===e.key&&h(l.token,p)},placeholder:"auth"===l.phase?"http://localhost:1455/auth/callback?code=…":l.placeholder??t("modelsConfig.enterValue"),style:{flex:1,padding:"6px 9px",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",color:"var(--text)",fontSize:"var(--text-md)",outline:"none",fontFamily:"var(--font-mono)",boxSizing:"border-box"}}),(0,o.jsx)("button",{onClick:()=>h(l.token,p),disabled:!p.trim(),style:{padding:"6px 12px",background:p.trim()?"var(--accent)":"var(--bg-panel)",border:"none",borderRadius:"var(--radius-control)",color:p.trim()?"var(--on-accent)":"var(--text-dim)",cursor:p.trim()?"pointer":"not-allowed",fontSize:"var(--text-md)",fontWeight:600,flexShrink:0},children:t("modelsConfig.submit")})]})]}),"device_code"===l.phase&&(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:10},children:[(0,o.jsx)("p",{style:{margin:0,fontSize:"var(--text-md)",color:"var(--text-muted)",lineHeight:1.5},children:t("modelsConfig.deviceCodeInstructions")}),(0,o.jsx)("div",{style:{padding:"8px 10px",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",color:"var(--text)",fontSize:16,fontWeight:700,fontFamily:"var(--font-mono)",letterSpacing:0},children:l.userCode}),(0,o.jsxs)("p",{style:{margin:0,fontSize:"var(--text-sm)",color:"var(--text-dim)",lineHeight:1.5},children:[(0,o.jsx)("a",{href:l.verificationUri,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--accent)",wordBreak:"break-all"},children:l.verificationUri}),l.expiresInSeconds?" "+i("modelsConfig.expiresInMinutes",Math.ceil(l.expiresInSeconds/60)):""]})]}),"progress"===l.phase&&(0,o.jsx)("p",{style:{margin:0,fontSize:"var(--text-md)",color:"var(--text-muted)"},children:l.message}),"success"===l.phase&&(0,o.jsx)("p",{style:{margin:0,fontSize:"var(--text-md)",color:"var(--status-success)"},children:t("modelsConfig.connectedSuccessfully")}),"error"===l.phase&&(0,o.jsx)("p",{style:{margin:0,fontSize:"var(--text-md)",color:"var(--status-error)"},children:l.message})]}),(0,o.jsx)("div",{style:{display:"flex",gap:"var(--space-4)"},children:f?(0,o.jsx)("button",{onClick:()=>{u.current?.close(),c({phase:"idle"})},style:{padding:"5px 12px",background:"none",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",color:"var(--text-muted)",cursor:"pointer",fontSize:"var(--text-md)"},children:t("modelsConfig.cancel")}):(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("button",{onClick:v,style:{padding:"5px 14px",background:"var(--accent)",border:"none",borderRadius:"var(--radius-control)",color:"var(--on-accent)",cursor:"pointer",fontSize:"var(--text-md)",fontWeight:600},children:e.loggedIn?t("modelsConfig.relogin"):t("modelsConfig.login")}),e.loggedIn&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("button",{type:"button",disabled:!0,title:"Disconnect this OMP account from the OMP terminal",style:{padding:"5px 12px",background:"none",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",color:"var(--text-dim)",cursor:"not-allowed",fontSize:"var(--text-md)",opacity:.7},children:t("modelsConfig.disconnect")}),(0,o.jsx)("span",{style:{alignSelf:"center",color:"var(--text-dim)",fontSize:"var(--text-sm)"},children:"Use the OMP terminal to disconnect this account."})]})]})})]})}function ew({provider:e}){let{t:r,tn:t}=(0,a.s9)();return(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-6)"},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,o.jsx)(ex,{children:r("modelsConfig.apiKey")}),(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-3)"},children:[(0,o.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:e.configured?"var(--status-success)":"var(--border)",display:"inline-block"}}),(0,o.jsx)("span",{style:{fontSize:"var(--text-sm)",color:e.configured?"var(--status-success)":"var(--text-dim)"},children:r(e.configured?"modelsConfig.configured":"modelsConfig.notConfigured")})]})]}),(0,o.jsx)("p",{style:{margin:0,fontSize:"var(--text-md)",color:"var(--text-muted)",lineHeight:1.5},children:e.configured?t("modelsConfig.providerConfigured",e.modelCount,{name:e.displayName}):r("modelsConfig.providerNotConfigured",{name:e.displayName})}),(0,o.jsx)("p",{style:{margin:0,fontSize:"var(--text-sm)",color:"var(--text-dim)",lineHeight:1.5},children:(0,o.jsx)(ep,{text:r("modelsConfig.apiKeyManageHint")})})]})}function ez({id:e,size:r}){let t=ei[e];if(!t){let t=e.split(/[-_]/).filter(Boolean).slice(0,2).map(e=>e[0]).join("").toUpperCase()||"?";return(0,o.jsx)("span",{"aria-hidden":"true",style:{width:r,height:r,border:"1px solid var(--border)",borderRadius:4,color:"var(--text-dim)",display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0,fontSize:Math.max(8,Math.floor(.42*r)),fontWeight:700,lineHeight:1},children:t})}return t.hasColor?(0,o.jsx)(t.Icon,{size:r}):(0,o.jsx)(t.Icon,{size:r,style:{color:"var(--text-muted)"}})}function eI({oauthProviders:e,apiKeyProviders:r,onSelectOAuth:t,onSelectApiKey:i,onAddCustom:s,onClose:l}){let{t:d,tn:c}=(0,a.s9)(),[x,u]=(0,n.useState)(""),g=(0,n.useRef)(null),v=x.trim().toLowerCase(),h=e.filter(e=>!e.loggedIn&&(!v||e.name.toLowerCase().includes(v))),m=r.filter(e=>!e.configured&&(!v||e.displayName.toLowerCase().includes(v)||e.id.toLowerCase().includes(v))),f=!v||"custom".includes(v)||"openai-compatible".includes(v)||"anthropic-compatible".includes(v),b=h.length+m.length+ +!!f,y={display:"flex",flexDirection:"row",alignItems:"center",gap:"var(--space-4)",padding:"10px 12px",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",boxSizing:"border-box",cursor:"pointer",minWidth:0,textAlign:"left",transition:"border-color var(--dur-fast) var(--ease-out-warm), background var(--dur-fast) var(--ease-out-warm)",width:"100%"};return(0,o.jsx)(p.lG,{open:!0,onOpenChange:e=>{e||l()},children:(0,o.jsxs)(p.Cf,{ariaLabel:d("modelsConfig.addProvider"),style:{width:820,maxWidth:"min(92vw, 820px)",maxHeight:"min(72dvh, calc(100dvh - 32px))",padding:0,display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,o.jsx)(p.L3,{style:{margin:"14px 18px 8px",fontSize:18},children:d("modelsConfig.addProvider")}),(0,o.jsx)("div",{style:{padding:"8px 14px 12px",flexShrink:0},children:(0,o.jsx)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-4)",padding:"6px 10px",background:"var(--bg)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)"},children:(0,o.jsx)("input",{ref:g,value:x,onChange:e=>u(e.target.value),placeholder:d("modelsConfig.searchProviders"),style:{flex:1,background:"none",border:"none",outline:"none",color:"var(--text)",fontSize:"var(--text-base)",boxSizing:"border-box",minWidth:0}})})}),(0,o.jsx)("div",{style:{flex:1,overflowY:"auto",padding:"4px 14px 14px"},children:0===b?(0,o.jsx)("div",{style:{padding:"20px 0",fontSize:"var(--text-md)",color:"var(--text-dim)",textAlign:"center"},children:d("modelsConfig.noProvidersMatch")}):(0,o.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(min(240px, 100%), 1fr))",gap:"var(--space-4)"},children:[f&&(0,o.jsx)("div",{style:{gridColumn:"1 / -1",fontSize:"var(--text-xs)",fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em"},children:d("modelsConfig.customSection")}),f&&(0,o.jsxs)("button",{type:"button",onClick:()=>{s(),l()},style:y,onMouseEnter:e=>{e.currentTarget.style.borderColor="var(--accent)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.borderColor="var(--border)",e.currentTarget.style.background="var(--bg-panel)"},children:[(0,o.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,o.jsx)("div",{style:{fontSize:"var(--text-md)",fontWeight:600,color:"var(--text)",lineHeight:1.3,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:d("modelsConfig.openaiAnthropicCompatible")}),(0,o.jsx)("div",{style:{fontSize:"var(--text-xs)",color:"var(--text-dim)",marginTop:2},children:d("modelsConfig.customEndpointFormat")})]}),(0,o.jsx)("span",{style:{width:26,height:26,borderRadius:"var(--radius-control)",background:"var(--bg-hover)",border:"1px dashed var(--border)",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:(0,o.jsx)(C.A,{size:13,"aria-hidden":"true"})})]}),h.length>0&&(0,o.jsx)("div",{style:{gridColumn:"1 / -1",paddingTop:6*!!f,fontSize:"var(--text-xs)",fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em"},children:d("modelsConfig.subscriptions")}),h.map(e=>(0,o.jsxs)("button",{type:"button",onClick:()=>{t(e.id),l()},style:y,onMouseEnter:e=>{e.currentTarget.style.borderColor="var(--accent)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.borderColor="var(--border)",e.currentTarget.style.background="var(--bg-panel)"},children:[(0,o.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,o.jsx)("div",{style:{fontSize:"var(--text-md)",fontWeight:600,color:"var(--text)",lineHeight:1.3,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),(0,o.jsx)("div",{style:{fontSize:"var(--text-xs)",color:"var(--text-dim)",marginTop:2},children:"OAuth"})]}),(0,o.jsx)(ez,{id:e.id,size:28})]},e.id)),m.length>0&&(0,o.jsx)("div",{style:{gridColumn:"1 / -1",paddingTop:6*(h.length>0),fontSize:"var(--text-xs)",fontWeight:600,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.07em"},children:d("modelsConfig.apiKey")}),m.map(e=>(0,o.jsxs)("button",{type:"button",onClick:()=>{i(e.id),l()},style:y,onMouseEnter:e=>{e.currentTarget.style.borderColor="var(--accent)",e.currentTarget.style.background="var(--bg-hover)"},onMouseLeave:e=>{e.currentTarget.style.borderColor="var(--border)",e.currentTarget.style.background="var(--bg-panel)"},children:[(0,o.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,o.jsx)("div",{style:{fontSize:"var(--text-md)",fontWeight:600,color:"var(--text)",lineHeight:1.3,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.displayName}),(0,o.jsx)("div",{style:{fontSize:"var(--text-xs)",color:"var(--text-dim)",marginTop:2},children:c("modelsConfig.modelCount",e.modelCount)})]}),(0,o.jsx)(ez,{id:e.id,size:28})]},e.id))]})})]})})}function eT(e){return Array.isArray(e)?`[${e.map(eT).join(",")}]`:e&&"object"==typeof e?`{${Object.keys(e).sort().map(r=>`${JSON.stringify(r)}:${eT(e[r])}`).join(",")}}`:JSON.stringify(e)??"undefined"}function eR({onSaved:e,onDirtyChange:r}){let{t}=(0,a.s9)(),s=(0,i.a)(),[p,x]=(0,n.useState)({providers:{}}),u=(0,n.useRef)(p),g=(0,n.useCallback)(e=>{let r=u.current,t="function"==typeof e?e(r):e;t!==r&&(u.current=t,x(t))},[]),v=(0,n.useRef)(eT({providers:{}})),[h,m]=(0,n.useState)(!0),[f,y]=(0,n.useState)(!1),[j,I]=(0,n.useState)(null),[R,A]=(0,n.useState)([]),[P,M]=(0,n.useState)(!1),[O,$]=(0,n.useState)(null),[W,E]=(0,n.useState)([]),[N,U]=(0,n.useState)([]),[L,D]=(0,n.useState)([]),[H,K]=(0,n.useState)([]),[B,F]=(0,n.useState)(!0),[_,J]=(0,n.useState)(null),[q,Y]=(0,n.useState)(!1),[V,X]=(0,n.useState)(null),[Z,G]=(0,n.useState)(null),Q=(0,n.useCallback)(()=>{fetch("/api/auth/providers").then(e=>e.json()).then(e=>{Array.isArray(e.providers)&&E(e.providers)}).catch(()=>{})},[]),ee=(0,n.useCallback)(()=>{fetch("/api/auth/all-providers").then(e=>e.json()).then(e=>{Array.isArray(e.providers)&&U(e.providers)}).catch(()=>{})},[]),er=(0,n.useCallback)(async e=>{F(!0);try{e?.force&&(0,c.dU)();let r=await (0,c.aQ)("",{force:e?.force});D(r.modelList??[]),K(r.connectedProviders??[])}catch{}finally{F(!1)}},[]),et=(0,n.useCallback)(async(e=eT(u.current))=>{m(!0);try{let r=await fetch("/api/models-config"),t=await r.json();if(eT(u.current)!==e)return;if(t.parseError){G({message:t.parseError,path:t.path}),g({providers:{}}),$(null);return}if(!r.ok)throw Error(`HTTP ${r.status}`);G(null),I(null),A([]);let o=t.providers?t:{...t,providers:{}};v.current=eT(o),g(o);let n=Object.keys(o.providers??{});n.length>0?$({type:"provider",name:n[0]}):$(null)}catch{}finally{m(!1)}},[g]);(0,n.useEffect)(()=>{et(),Q(),ee(),er()},[et,Q,ee,er]),(0,n.useEffect)(()=>{r?.(v.current!==eT(p))},[p,r]),(0,n.useEffect)(()=>{try{let e=JSON.parse(localStorage.getItem(es)??"null");Array.isArray(e)&&J(new Set(e.filter(e=>"string"==typeof e)))}catch{}},[]);let eo=(0,n.useCallback)((e,r)=>{J(t=>{let o=new Set(t??L.map(e=>`${e.provider}:${e.id}`)),n=`${e.provider}:${e.id}`;return r?o.add(n):o.delete(n),localStorage.setItem(es,JSON.stringify([...o])),window.dispatchEvent(new Event("omp-composer-models-change")),o})},[L]),en=(0,n.useCallback)((e,r)=>{J(t=>{let o=new Set(t??L.map(e=>`${e.provider}:${e.id}`));for(let t of L){if(t.provider!==e)continue;let n=`${t.provider}:${t.id}`;r?o.add(n):o.delete(n)}return localStorage.setItem(es,JSON.stringify([...o])),window.dispatchEvent(new Event("omp-composer-models-change")),o})},[L]),ei=(0,n.useCallback)(async e=>{let r=await fetch("/api/providers/enable",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:e})}),t=await r.json();if(!r.ok||t.error)throw Error(t.error||`HTTP ${r.status}`);await er({force:!0})},[er]),el=(0,n.useCallback)(()=>{let e="new-provider",r=1;for(;p.providers?.[e];)e=`new-provider-${r++}`;g(r=>({...r,providers:{...r.providers??{},[e]:{api:"openai-completions"}}})),$({type:"provider",name:e})},[p.providers,g]),ec=(0,n.useCallback)((e,r)=>{g(t=>({...t,providers:{...t.providers??{},[e]:r}}))},[g]),ep=(0,n.useCallback)((e,r)=>{g(t=>{let o=Object.entries(t.providers??{}),n=o.findIndex(([r])=>r===e);return -1===n?t:(o[n]=[r,o[n][1]],{...t,providers:Object.fromEntries(o)})}),$(t=>t?"provider"===t.type&&t.name===e?{type:"provider",name:r}:"model"===t.type&&t.providerName===e?{...t,providerName:r}:t:t)},[g]),eh=(0,n.useCallback)(e=>{g(r=>{let t={...r.providers??{}};return delete t[e],{...r,providers:t}}),g(e=>{let r=Object.keys(e.providers??{});return $(r.length>0?{type:"provider",name:r[0]}:null),e})},[g]),em=(0,n.useCallback)(e=>{g(r=>{let t=r.providers?.[e]??{},o=[...t.models??[],{id:""}];return{...r,providers:{...r.providers??{},[e]:{...t,models:o}}}}),g(r=>{let t=(r.providers?.[e]?.models?.length??1)-1;return $({type:"model",providerName:e,index:t}),r})},[g]),eb=(0,n.useCallback)((e,r,t)=>{let o,n=(o={...r,id:r.id,...void 0!==r.cost?{cost:{...r.cost}}:{}},delete o.originalId,o);g(r=>{let o=r.providers?.[e]??{},i=[...o.models??[],n],a={...o,models:i};return t&&!o.baseUrl&&(a.baseUrl=t),{...r,providers:{...r.providers??{},[e]:a}}}),g(r=>{let t=(r.providers?.[e]?.models?.length??1)-1;return $({type:"model",providerName:e,index:t}),r}),X(null)},[g]),ey=(0,n.useCallback)((e,r,t)=>{g(o=>{let n=o.providers?.[e]??{},i=[...n.models??[]];return i[r]=t,{...o,providers:{...o.providers??{},[e]:{...n,models:i}}}})},[g]),ej=(0,n.useCallback)((e,r)=>{g(t=>{let o=t.providers?.[e]??{},n=[...o.models??[]];return n.splice(r,1),{...t,providers:{...t.providers??{},[e]:{...o,models:n.length?n:void 0}}}}),$({type:"provider",name:e})},[g]),eC=(0,n.useCallback)(async()=>{if(Z)return;let o=u.current,n=function(e){if(!e.providers)return e;let r=!1,t={};for(let[o,n]of Object.entries(e.providers)){let e=n.models;if(!e?.some(l)){t[o]=n;continue}r=!0;let i=e.filter(e=>!l(e));t[o]={...n,models:i.length>0?i:void 0}}return r?{...e,providers:t}:e}(o),i=eT(o),a=eT(n);y(!0),I(null),A([]),M(!1);try{let o=await fetch("/api/models-config?mode=full",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)}),s=await o.json();if(!o.ok||s.error){let e=Array.isArray(s.issues)?s.issues.filter(e=>"string"==typeof e.path&&"string"==typeof e.message):[],r=e.map(e=>e.path?`${e.path}: ${e.message}`:e.message).join("; ");A(e);let n=s.error||s.code?(0,d.K)(s):`HTTP ${o.status}`;I(n),z.oR.error(t("modelsConfig.saveErrorTitle"),r?`${n}: ${r}`:n),"models_config_unparseable"===s.code&&G({message:s.error??(0,d.K)(s)})}else{v.current=a;let o=eT(u.current)!==i;o&&r?.(!0),o||(g(n),r?.(!1),await et(a)),await er({force:!0}),ee(),e?.(),o&&r?.(!0),M(!0),setTimeout(()=>M(!1),2e3),z.oR.success(t("modelsConfig.saveSuccessTitle"))}}catch(r){let e=r instanceof Error?r.message:String(r);I(e),z.oR.error(t("modelsConfig.saveErrorTitle"),e)}finally{y(!1)}},[ee,et,er,r,e,Z,g,t]),eA=Object.entries(p.providers??{}),eP=W.filter(e=>e.loggedIn),eM=N.filter(e=>e.configured),eO=L.reduce((e,r)=>((e[r.provider]??=[]).push(r),e),{}),e$=(()=>{if(!O)return null;if("oauth"===O.type){let e=W.find(e=>e.id===O.providerId);return e?(0,o.jsx)(eS,{provider:e,onRefresh:()=>{Q(),ee(),er({force:!0})}},e.id):null}if("apikey"===O.type){let e=N.find(e=>e.id===O.providerId);return e?(0,o.jsx)(ew,{provider:e},e.id):null}if("roles"===O.type)return(0,o.jsx)(ed,{models:L});if("registry"===O.type)return(0,o.jsx)(ea,{models:L,connectedProviders:H,onChanged:()=>er({force:!0})});if("picker"===O.type)return(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:14},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:"var(--space-5)"},children:[(0,o.jsxs)("div",{children:[(0,o.jsx)(ex,{children:"Composer Model Picker"}),(0,o.jsx)("p",{style:{margin:"4px 0 0",color:"var(--text-muted)",fontSize:"var(--text-md)",lineHeight:1.5},children:"Choose which native OMP models are available in the composer. This changes only omp-web's picker, not OMP's model registry."})]}),(0,o.jsx)("button",{type:"button",onClick:()=>void er({force:!0}),disabled:B,title:"Refresh OMP runtime models",style:{padding:7,border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"transparent",color:"var(--text-muted)",cursor:B?"wait":"pointer"},children:(0,o.jsx)(b.A,{size:14,"aria-hidden":"true"})})]}),B?(0,o.jsx)("div",{style:{color:"var(--text-muted)",fontSize:"var(--text-md)"},children:"Loading OMP runtime models..."}):Object.entries(eO).map(([e,r])=>{let t=r.every(e=>null===_||_.has(`${e.provider}:${e.id}`)),n=r.some(e=>null===_||_.has(`${e.provider}:${e.id}`));return(0,o.jsxs)("section",{style:{border:"1px solid var(--border)",borderRadius:"var(--radius-card)",overflow:"hidden"},children:[(0,o.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:"var(--space-4)",padding:"9px 11px",background:"var(--bg-panel)",color:"var(--text)",fontSize:"var(--text-md)",fontWeight:600},children:[(0,o.jsx)("input",{type:"checkbox",checked:t,ref:e=>{e&&(e.indeterminate=n&&!t)},onChange:r=>en(e,r.target.checked),"aria-label":`Show all ${e} models in composer`}),(0,o.jsx)(ez,{id:e,size:15}),(0,o.jsx)("span",{children:e}),(0,o.jsxs)("span",{style:{marginLeft:"auto",color:"var(--text-dim)",fontSize:"var(--text-sm)",fontWeight:400},children:[r.length," model",1===r.length?"":"s"]})]}),(0,o.jsx)("div",{style:{padding:"4px 0"},children:r.map(e=>(0,o.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:9,padding:"7px 11px",color:"var(--text-muted)",cursor:"pointer"},children:[(0,o.jsx)("input",{type:"checkbox",checked:null===_||_.has(`${e.provider}:${e.id}`),onChange:r=>eo(e,r.target.checked),"aria-label":`Show ${e.provider}/${e.id} in composer`}),(0,o.jsx)("span",{style:{minWidth:0,flex:1,fontSize:"var(--text-md)"},children:e.name||e.id}),(0,o.jsxs)("code",{style:{color:"var(--text-dim)",fontSize:"var(--text-sm)",fontFamily:"var(--font-mono)",whiteSpace:"nowrap"},children:[e.provider,"/",e.id]})]},`${e.provider}:${e.id}`))})]},e)}),!B&&0===L.length&&(0,o.jsx)("div",{style:{color:"var(--text-muted)",fontSize:"var(--text-md)"},children:"OMP did not report any configured models."}),H.filter(e=>!eO[e.id]).map(e=>(0,o.jsxs)("section",{style:{border:"1px solid var(--border)",borderRadius:"var(--radius-card)",padding:12},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-4)",color:"var(--text)",fontSize:"var(--text-md)",fontWeight:600},children:[(0,o.jsx)(ez,{id:e.id,size:15}),e.name]}),(0,o.jsx)("p",{style:{margin:"6px 0 0",color:"var(--text-muted)",fontSize:"var(--text-md)",lineHeight:1.5},children:e.disabled?"Connected, but disabled in OMP. Enable it to discover its models.":"Connected, but OMP has not reported models for this provider yet."}),e.disabled&&(0,o.jsx)("button",{type:"button",onClick:()=>void ei(e.id).catch(e=>z.oR.error("Could not enable provider",e instanceof Error?e.message:String(e))),style:{marginTop:8,padding:"6px 10px",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"transparent",color:"var(--text)",cursor:"pointer",fontSize:"var(--text-md)"},children:"Enable in OMP"})]},e.id))]});if("provider"===O.type){let e=p.providers?.[O.name];return e?(0,o.jsx)(ef,{name:O.name,provider:e,onChange:e=>ec(O.name,e),onRename:e=>ep(O.name,e),onDelete:()=>eh(O.name)},O.name):null}let e=p.providers?.[O.providerName],r=e?.models?.[O.index];return r?(0,o.jsx)(ek,{providerName:O.providerName,provider:e,model:r,onChange:e=>ey(O.providerName,O.index,e),onDelete:()=>ej(O.providerName,O.index)},`${O.providerName}-${O.index}`):null})();return(0,o.jsxs)(o.Fragment,{children:[Z?(0,o.jsxs)("div",{style:{flex:1,overflowY:"auto",padding:"var(--space-8)",display:"flex",flexDirection:"column",gap:"var(--space-5)"},children:[(0,o.jsx)("div",{style:{fontSize:"var(--text-base)",fontWeight:600,color:"var(--status-error)"},children:t("modelsConfig.parseErrorTitle")}),(0,o.jsx)("div",{style:{fontSize:"var(--text-md)",color:"var(--text-muted)",lineHeight:1.6},children:t("modelsConfig.parseErrorBody")}),Z.path&&(0,o.jsx)("code",{style:{fontSize:"var(--text-sm)",color:"var(--text-dim)",fontFamily:"var(--font-mono)",wordBreak:"break-all"},children:Z.path}),(0,o.jsx)("pre",{style:{margin:0,padding:"10px 12px",background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",color:"var(--text-muted)",fontSize:"var(--text-sm)",fontFamily:"var(--font-mono)",whiteSpace:"pre-wrap",wordBreak:"break-word",overflowX:"auto"},children:Z.message}),(0,o.jsx)("button",{onClick:()=>{et()},disabled:h,style:{alignSelf:"flex-start",padding:"5px 12px",background:"none",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",color:"var(--text-muted)",cursor:h?"default":"pointer",fontSize:"var(--text-md)"},children:h?t("modelsConfig.loading"):t("modelsConfig.reload")})]}):(0,o.jsxs)("div",{style:{flex:1,display:"flex",flexDirection:s?"column":"row",overflow:"hidden"},children:[(0,o.jsxs)("div",{style:{width:s?"100%":235,maxHeight:s?"40vh":void 0,borderRight:s?"none":"1px solid var(--border)",borderBottom:s?"1px solid var(--border)":"none",display:"flex",flexDirection:"column",flexShrink:0,background:"var(--bg-panel)"},children:[(0,o.jsxs)("div",{style:{flex:1,overflowY:"auto",padding:"8px 6px"},children:[(0,o.jsx)(eu,{icon:k.A,label:"Native OMP registry",selected:O?.type==="registry",onClick:()=>$({type:"registry"})}),(0,o.jsx)(eu,{icon:S.A,label:"Composer model picker",selected:O?.type==="picker",onClick:()=>$({type:"picker"})}),(0,o.jsx)(eu,{icon:w.A,label:"OMP model roles",selected:O?.type==="roles",onClick:()=>$({type:"roles"})}),(eP.length>0||eM.length>0)&&(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-3)",padding:"14px 10px 6px",color:"var(--text-dim)",fontSize:"var(--text-xs)",fontWeight:700,letterSpacing:"0.06em",textTransform:"uppercase"},children:[(0,o.jsx)("span",{"aria-hidden":"true",style:{width:6,height:6,borderRadius:"50%",background:"var(--accent)",flexShrink:0}}),"Connected through OMP"]}),eP.map(e=>{let r=O?.type==="oauth"&&O.providerId===e.id;return(0,o.jsxs)("button",{type:"button",onClick:()=>$({type:"oauth",providerId:e.id}),style:{display:"flex",alignItems:"center",gap:"var(--space-4)",padding:"7px 10px",borderRadius:"var(--radius-control)",cursor:"pointer",width:"100%",border:"none",textAlign:"left",fontFamily:"inherit",background:r?"var(--bg-selected)":"none",fontWeight:r?600:400},...eg(r),children:[(0,o.jsx)(ez,{id:e.id,size:16}),(0,o.jsx)("span",{style:{fontSize:"var(--text-md)",color:"var(--text)",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),(0,o.jsx)("span",{title:`OMP OAuth provider: ${e.id}`,style:{padding:"2px 5px",borderRadius:4,background:"var(--bg-subtle)",color:"var(--text-muted)",fontSize:9,fontWeight:500,flexShrink:0},children:"OAuth"})]},e.id)}),eM.map(e=>{let r=O?.type==="apikey"&&O.providerId===e.id;return(0,o.jsxs)("button",{type:"button",onClick:()=>$({type:"apikey",providerId:e.id}),style:{display:"flex",alignItems:"center",gap:"var(--space-4)",padding:"7px 10px",borderRadius:"var(--radius-control)",cursor:"pointer",width:"100%",border:"none",textAlign:"left",fontFamily:"inherit",background:r?"var(--bg-selected)":"none",fontWeight:r?600:400},...eg(r),children:[(0,o.jsx)(ez,{id:e.id,size:16}),(0,o.jsx)("span",{style:{fontSize:"var(--text-md)",color:"var(--text)",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.displayName}),(0,o.jsx)("span",{title:`OMP API-key provider: ${e.id}`,style:{padding:"2px 5px",borderRadius:4,background:"var(--bg-subtle)",color:"var(--text-muted)",fontSize:9,fontWeight:500,flexShrink:0},children:"API key"})]},e.id)}),(eP.length>0||eM.length>0)&&eA.length>0&&(0,o.jsx)("div",{style:{margin:"8px 10px",borderTop:"1px solid var(--border)"}}),eA.length>0&&(0,o.jsx)("div",{style:{padding:"10px 10px 4px",fontSize:"var(--text-xs)",fontWeight:700,color:"var(--text-dim)",textTransform:"uppercase",letterSpacing:"0.06em"},children:"Configured Providers"}),h?(0,o.jsx)("div",{style:{padding:"10px 8px",fontSize:"var(--text-md)",color:"var(--text-muted)"},children:t("modelsConfig.loading")}):eA.map(([e,r])=>{let n=O?.type==="provider"&&O.name===e,i=r.models??[];return(0,o.jsxs)("div",{style:{marginBottom:6,padding:"4px 6px",borderRadius:"var(--radius-control)",background:n?"var(--bg-panel)":"transparent",border:n?"1px solid var(--border)":"1px solid transparent"},children:[(0,o.jsxs)("button",{type:"button",onClick:()=>$({type:"provider",name:e}),style:{display:"flex",alignItems:"center",gap:7,padding:"6px 8px",borderRadius:"var(--radius-control)",cursor:"pointer",width:"100%",border:"none",textAlign:"left",fontFamily:"inherit",background:n?"var(--bg-selected)":"none"},...eg(n),children:[(0,o.jsx)(ez,{id:e,size:15}),(0,o.jsx)("span",{style:{fontSize:"var(--text-md)",fontWeight:n?600:500,color:"var(--text)",fontFamily:"var(--font-mono)",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e}),(0,o.jsxs)("span",{style:{fontSize:"var(--text-xs)",color:"var(--text-dim)",padding:"1px 5px",borderRadius:4,background:"var(--bg-subtle)"},children:[i.length," model",1===i.length?"":"s"]})]}),i.map((r,n)=>{let i=O?.type==="model"&&O.providerName===e&&O.index===n;return(0,o.jsxs)("button",{type:"button",onClick:()=>$({type:"model",providerName:e,index:n}),style:{display:"flex",alignItems:"center",gap:"var(--space-3)",padding:"5px 8px 5px 28px",borderRadius:"var(--radius-control)",cursor:"pointer",width:"100%",border:"none",textAlign:"left",fontFamily:"inherit",background:i?"var(--bg-selected)":"none",marginTop:1},...eg(i),children:[(0,o.jsx)("span",{style:{fontSize:"var(--text-sm)",fontFamily:"var(--font-mono)",color:r.id?"var(--text-muted)":"var(--text-dim)",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:r.id||t("modelsConfig.newModel")}),r.reasoning&&(0,o.jsx)("span",{style:{fontSize:9,padding:"1px 4px",background:"var(--accent-subtle)",color:"var(--accent)",borderRadius:3,flexShrink:0},children:"T"})]},n)}),(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-3)",padding:"6px 8px 4px 10px",marginTop:2,flexWrap:"nowrap"},children:[(0,o.jsxs)("button",{type:"button",onClick:r=>{r.stopPropagation(),em(e)},style:{display:"inline-flex",alignItems:"center",gap:"var(--space-2)",padding:"3px 8px",borderRadius:"var(--radius-control)",cursor:"pointer",color:"var(--text-muted)",border:"1px solid var(--border)",background:"var(--bg-subtle)",fontFamily:"inherit",fontSize:"var(--text-sm)",whiteSpace:"nowrap",flexShrink:0},...ev,children:[(0,o.jsx)(C.A,{size:11,"aria-hidden":"true"}),(0,o.jsx)("span",{children:t("modelsConfig.addModel")})]}),(0,o.jsxs)("button",{type:"button",onClick:r=>{r.stopPropagation(),X(e)},style:{display:"inline-flex",alignItems:"center",gap:"var(--space-2)",padding:"3px 8px",borderRadius:"var(--radius-control)",cursor:"pointer",color:"var(--text-muted)",border:"1px solid var(--border)",background:"var(--bg-subtle)",fontFamily:"inherit",fontSize:"var(--text-sm)",whiteSpace:"nowrap",flexShrink:0},...ev,children:[(0,o.jsx)(S.A,{size:11,"aria-hidden":"true"}),(0,o.jsx)("span",{children:t("modelsConfig.addFromCatalog")})]})]})]},e)})]}),(0,o.jsx)("div",{style:{borderTop:"1px solid var(--border)",padding:"8px 6px"},children:(0,o.jsx)("button",{onClick:()=>Y(!0),style:{display:"flex",alignItems:"center",justifyContent:"center",gap:5,width:"100%",padding:"6px 0",background:"none",border:"1px dashed var(--border)",borderRadius:"var(--radius-control)",color:"var(--text-muted)",cursor:"pointer",fontSize:"var(--text-md)"},onMouseEnter:e=>{e.currentTarget.style.borderColor="var(--accent)",e.currentTarget.style.color="var(--accent)"},onMouseLeave:e=>{e.currentTarget.style.borderColor="var(--border)",e.currentTarget.style.color="var(--text-muted)"},children:t("modelsConfig.addProvider")})})]}),(0,o.jsx)("div",{style:{flex:1,overflowY:"auto",padding:20},children:h?(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:10},children:[(0,o.jsx)("div",{className:"skeleton",style:{height:18,width:"40%"}}),(0,o.jsx)("div",{className:"skeleton",style:{height:12,width:"70%"}}),(0,o.jsx)("div",{className:"skeleton",style:{height:12,width:"55%"}}),(0,o.jsx)("div",{className:"skeleton",style:{height:90,width:"100%"}})]}):e$??(0,o.jsx)("div",{style:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-dim)",fontSize:"var(--text-base)"},children:t("modelsConfig.selectProviderOrModel")})})]}),(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"flex-end",gap:10,padding:"10px 18px",borderTop:"1px solid var(--border)",flexShrink:0},children:[(j||R.length>0)&&(0,o.jsxs)("div",{role:"alert",style:{fontSize:"var(--text-md)",color:"var(--status-error)",flex:1,minWidth:0},children:[j,R.length>0&&(0,o.jsx)("ul",{style:{margin:"4px 0 0",paddingLeft:18},children:R.map((e,r)=>(0,o.jsxs)("li",{children:[e.path?`${e.path}: `:"",e.message]},`${e.path}-${r}`))})]}),(0,o.jsxs)("button",{onClick:eC,disabled:f||P||null!==Z,style:{position:"relative",padding:"6px 16px",minWidth:92,background:P?"var(--status-success)":f||Z?"var(--bg-panel)":"var(--accent)",border:"none",borderRadius:"var(--radius-control)",color:P?"var(--on-accent)":f||Z?"var(--text-muted)":"var(--on-accent)",cursor:f||P||Z?"default":"pointer",fontSize:"var(--text-base)",fontWeight:600,display:"inline-flex",alignItems:"center",justifyContent:"center",gap:"var(--space-3)",transition:"background-color var(--dur-med) var(--ease-out-warm), color var(--dur-med) var(--ease-out-warm)",animation:P?"saved-pop var(--dur-theme) var(--ease-out-warm)":void 0},children:[P&&(0,o.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round",style:{strokeDasharray:18,animation:"saved-check-draw 0.35s ease forwards",flexShrink:0},children:(0,o.jsx)("polyline",{points:"20 6 9 17 4 12"})}),(0,o.jsx)("span",{children:P?t("modelsConfig.saved"):f?t("modelsConfig.saving"):t("modelsConfig.save")})]})]}),q&&(0,o.jsx)(eI,{oauthProviders:W,apiKeyProviders:N,onSelectOAuth:e=>$({type:"oauth",providerId:e}),onSelectApiKey:e=>$({type:"apikey",providerId:e}),onAddCustom:el,onClose:()=>Y(!1)}),null!==V&&(0,o.jsx)(T,{open:!0,providerName:V,providerBaseUrl:p.providers?.[V]?.baseUrl??"",existingIds:new Set((p.providers?.[V]?.models??[]).map(e=>e.id)),onAdd:(e,r)=>eb(V,e,r),onClose:()=>X(null)})]})}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3944],{63944:(e,r,t)=>{t.r(r),t.d(r,{RelayPairPanel:()=>d});var a=t(95155),i=t(51128),l=t(12115),n=t(34906),s=t(4315),o=t(28594);function d({embedded:e=!1}){let{t:r}=(0,s.s9)(),[t,c]=(0,l.useState)(""),[y,h]=(0,l.useState)(),[x,u]=(0,l.useState)(null),[v,p]=(0,l.useState)([]),[g,f]=(0,l.useState)(null),[m,b]=(0,l.useState)(!1),[j,w]=(0,l.useState)(!1),S=(0,l.useMemo)(()=>x?function(e){let r=function(e){let r=e.trim();if(!r||r.length>2048)return null;try{let{data:e}=(0,o.lF)(r,{ecc:"M"});if(!Array.isArray(e)||e.length<21)return null;return e}catch{return null}}(e);if(!r)return null;let t=r.length,a=[];for(let e=0;e<t;e+=1){let i=r[e];if(!i||i.length!==t)return null;for(let r=0;r<t;r+=1)i[r]&&a.push(`M${r} ${e}h1v1h-1z`)}let i=a.join("");return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${t} ${t}" width="100%" height="100%" shape-rendering="crispEdges" role="img"><rect width="${t}" height="${t}" fill="#fff"/><path fill="#000" d="${i}"/></svg>`}(x.uri):null,[x]),P=(0,l.useCallback)(async()=>{try{let[e,r]=await Promise.all([fetch("/api/relay/pair"),fetch("/api/relay/devices")]);if(e.ok){let r=await e.json(),t=null!==r&&"object"==typeof r&&"relayUrl"in r&&"string"==typeof r.relayUrl?r.relayUrl:void 0;t&&c(e=>e||t),h(t)}if(r.ok){let e=await r.json();p(e.devices??[])}}catch{}},[]);async function k(){b(!0),f(null),w(!1);try{let e=await fetch("/api/relay/pair",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t.trim()?{url:t.trim()}:{})}),a=await e.json();if(!e.ok)return void f(a.error??r("relayPair.createFailed"));u(a),c(a.relayUrl),await P()}catch{f(r("relayPair.createFailed"))}finally{b(!1)}}async function z(){if(x)try{await navigator.clipboard.writeText(x.uri),w(!0)}catch{w(!1)}}async function C(e){f(null);try{if(!(await fetch(`/api/relay/devices/${encodeURIComponent(e)}`,{method:"DELETE"})).ok)return void f(r("relayPair.revokeFailed"));await P()}catch{f(r("relayPair.revokeFailed"))}}(0,l.useEffect)(()=>{P()},[P]);let $=(0,a.jsxs)(a.Fragment,{children:[e?null:(0,a.jsx)("div",{style:{width:40,height:40,display:"grid",placeItems:"center",borderRadius:"50%",background:"var(--user-bg)",color:"var(--accent)",marginBottom:20},children:(0,a.jsx)(i.A,{size:19,"aria-hidden":"true"})}),e?(0,a.jsx)("h3",{style:{margin:0,fontSize:"var(--text-base)",fontWeight:600,color:"var(--text)"},children:r("relayPair.title")}):(0,a.jsx)("h1",{className:"display-serif",style:{margin:0,fontSize:"calc(var(--text-xl) + var(--space-5) - var(--space-1))",color:"var(--text)"},children:r("relayPair.title")}),(0,a.jsx)("p",{style:{margin:e?"4px 0 16px":"10px 0 24px",color:"var(--text-muted)",fontSize:"var(--text-base)",lineHeight:1.5},children:r("relayPair.description")}),(0,a.jsx)("p",{style:{margin:"0 0 16px",color:"var(--text-dim)",fontSize:"var(--text-sm)",lineHeight:1.45},children:r("relayPair.steps")}),(0,a.jsxs)("div",{style:{display:"grid",gap:14},children:[(0,a.jsx)(n.D0,{label:r("relayPair.urlLabel"),hint:y&&!t?y:void 0,children:(0,a.jsx)(n.ks,{value:t,onChange:c,placeholder:"wss://machine.tailnet.ts.net/relay",autoComplete:"off",spellCheck:!1,mono:!0})}),(0,a.jsx)(n.$n,{type:"button",variant:"primary",busy:m,disabled:m,onClick:()=>void k(),children:m?r("relayPair.creating"):r("relayPair.create")}),g?(0,a.jsx)("p",{style:{margin:0,color:"var(--danger, #c44)",fontSize:"var(--text-sm)"},children:g}):null,x?(0,a.jsxs)("div",{style:{display:"grid",gap:8},children:[S?(0,a.jsxs)("div",{style:{display:"grid",justifyItems:"center",gap:8},children:[(0,a.jsx)("div",{role:"img","aria-label":r("relayPair.qrHint"),className:"relay-pair-qr",style:{width:212,height:212,boxSizing:"border-box",background:"#fff",color:"#000",padding:12,borderRadius:"var(--radius-control)",border:"1px solid var(--border)",isolation:"isolate"},dangerouslySetInnerHTML:{__html:S}}),(0,a.jsx)("p",{style:{margin:0,color:"var(--text-dim)",fontSize:"var(--text-sm)",textAlign:"center"},children:r("relayPair.qrHint")})]}):null,(0,a.jsx)("label",{style:{color:"var(--text-muted)",fontSize:"var(--text-sm)"},children:r("relayPair.linkLabel")}),(0,a.jsx)("textarea",{readOnly:!0,value:x.uri,rows:4,style:{width:"100%",resize:"vertical",fontFamily:"var(--font-mono)",fontSize:"var(--text-sm)",padding:10,borderRadius:"var(--radius-control)",border:"1px solid var(--border)",background:"var(--bg)",color:"var(--text)"}}),(0,a.jsx)(n.$n,{type:"button",variant:"secondary",onClick:()=>void z(),children:j?r("relayPair.copied"):r("relayPair.copy")}),(0,a.jsx)("p",{style:{margin:0,color:"var(--text-dim)",fontSize:"var(--text-sm)"},children:r("relayPair.expires",{time:new Date(x.expiresAt).toLocaleTimeString()})})]}):null,(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{style:{margin:"16px 0 8px",fontSize:"var(--text-base)",color:"var(--text)"},children:r("relayPair.devicesTitle")}),0===v.length?(0,a.jsx)("p",{style:{margin:0,color:"var(--text-muted)",fontSize:"var(--text-sm)"},children:r("relayPair.noDevices")}):(0,a.jsx)("ul",{style:{listStyle:"none",margin:0,padding:0,display:"grid",gap:8},children:v.map(e=>(0,a.jsxs)("li",{style:{display:"flex",justifyContent:"space-between",gap:12,alignItems:"center"},children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{style:{color:"var(--text)",fontSize:"var(--text-sm)"},children:e.label||e.id}),(0,a.jsx)("div",{style:{color:"var(--text-dim)",fontSize:"var(--text-sm)",fontFamily:"var(--font-mono)"},children:e.id})]}),(0,a.jsx)(n.$n,{type:"button",variant:"secondary",onClick:()=>void C(e.id),children:r("relayPair.revoke")})]},e.id))})]})]})]});return e?(0,a.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:0,maxWidth:520},children:$}):(0,a.jsx)("main",{style:{flex:1,display:"grid",placeItems:"center",padding:20,background:"var(--bg)"},children:(0,a.jsx)("section",{style:{width:"min(100%, 520px)",padding:32,background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:"var(--radius-modal)",boxShadow:"var(--shadow-modal)"},children:$})})}}}]);
|