ai-agent-router 0.2.2 → 0.2.4
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 +4 -1
- package/.next/build/chunks/{[root-of-the-server]__6d51cb5d._.js → [root-of-the-server]__0iv9ksq._.js} +1 -1
- package/.next/build/chunks/[root-of-the-server]__0iv9ksq._.js.map +8 -0
- package/.next/build/chunks/{[root-of-the-server]__44695d76._.js → [root-of-the-server]__0rua-~2._.js} +30 -30
- package/.next/build/chunks/[root-of-the-server]__0rua-~2._.js.map +11 -0
- package/.next/build/chunks/{[turbopack-node]_transforms_postcss_ts_df7a5b11._.js → [turbopack-node]_transforms_postcss_ts_0nnejqq._.js} +2 -2
- package/.next/build/chunks/[turbopack]_runtime.js +155 -60
- package/.next/build/chunks/[turbopack]_runtime.js.map +6 -5
- package/.next/build/chunks/{node_modules_fe693df6._.js → node_modules_13sb.px._.js} +1 -1
- package/.next/build/chunks/{node_modules_fe693df6._.js.map → node_modules_13sb.px._.js.map} +42 -42
- package/.next/build/postcss.js +5 -5
- package/.next/build-manifest.json +8 -7
- package/.next/diagnostics/framework.json +1 -1
- package/.next/diagnostics/route-bundle-stats.json +93 -0
- package/.next/fallback-build-manifest.json +3 -2
- package/.next/images-manifest.json +1 -0
- package/.next/next-minimal-server.js.nft.json +1 -1
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +33 -9
- package/.next/required-server-files.js +18 -6
- package/.next/required-server-files.json +18 -6
- package/.next/routes-manifest.json +19 -0
- package/.next/server/app/_global-error/page/build-manifest.json +5 -5
- package/.next/server/app/_global-error/page.js +8 -9
- package/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/server/app/_global-error/page_client-reference-manifest.js +2 -1
- package/.next/server/app/_global-error.html +1 -2
- package/.next/server/app/_global-error.rsc +11 -9
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_global-error.segments/_full.segment.rsc +11 -9
- package/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
- package/.next/server/app/_global-error.segments/_index.segment.rsc +4 -3
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page/build-manifest.json +5 -5
- package/.next/server/app/_not-found/page.js +11 -12
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +2 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +13 -11
- package/.next/server/app/_not-found.segments/_full.segment.rsc +13 -11
- package/.next/server/app/_not-found.segments/_head.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_index.segment.rsc +5 -5
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +4 -3
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/config/route/build-manifest.json +1 -3
- package/.next/server/app/api/config/route.js +4 -4
- package/.next/server/app/api/config/route.js.nft.json +1 -1
- package/.next/server/app/api/config/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/gateway/[...path]/route/build-manifest.json +1 -3
- package/.next/server/app/api/gateway/[...path]/route.js +5 -5
- package/.next/server/app/api/gateway/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/gateway/[...path]/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/gateway/models/route/build-manifest.json +1 -3
- package/.next/server/app/api/gateway/models/route.js +4 -4
- package/.next/server/app/api/gateway/models/route.js.nft.json +1 -1
- package/.next/server/app/api/gateway/models/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/gateway/route/build-manifest.json +1 -3
- package/.next/server/app/api/gateway/route.js +5 -5
- package/.next/server/app/api/gateway/route.js.nft.json +1 -1
- package/.next/server/app/api/gateway/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/ide/claude/apply/route/build-manifest.json +1 -3
- package/.next/server/app/api/ide/claude/apply/route.js +4 -4
- package/.next/server/app/api/ide/claude/apply/route.js.nft.json +1 -1
- package/.next/server/app/api/ide/claude/apply/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/ide/claude/available-models/route/build-manifest.json +1 -3
- package/.next/server/app/api/ide/claude/available-models/route.js +4 -4
- package/.next/server/app/api/ide/claude/available-models/route.js.nft.json +1 -1
- package/.next/server/app/api/ide/claude/available-models/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/ide/claude/restore/route/build-manifest.json +1 -3
- package/.next/server/app/api/ide/claude/restore/route.js +3 -3
- package/.next/server/app/api/ide/claude/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/ide/claude/restore/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/ide/claude/save/route/build-manifest.json +1 -3
- package/.next/server/app/api/ide/claude/save/route.js +4 -4
- package/.next/server/app/api/ide/claude/save/route.js.nft.json +1 -1
- package/.next/server/app/api/ide/claude/save/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/ide/claude/status/route/build-manifest.json +1 -3
- package/.next/server/app/api/ide/claude/status/route.js +4 -4
- package/.next/server/app/api/ide/claude/status/route.js.nft.json +1 -1
- package/.next/server/app/api/ide/claude/status/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/ide/claude/test/route/build-manifest.json +1 -3
- package/.next/server/app/api/ide/claude/test/route.js +5 -5
- package/.next/server/app/api/ide/claude/test/route.js.nft.json +1 -1
- package/.next/server/app/api/ide/claude/test/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/ide/openclaw/apply/route/build-manifest.json +1 -3
- package/.next/server/app/api/ide/openclaw/apply/route.js +4 -4
- package/.next/server/app/api/ide/openclaw/apply/route.js.nft.json +1 -1
- package/.next/server/app/api/ide/openclaw/apply/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/ide/openclaw/available-models/route/build-manifest.json +1 -3
- package/.next/server/app/api/ide/openclaw/available-models/route.js +4 -4
- package/.next/server/app/api/ide/openclaw/available-models/route.js.nft.json +1 -1
- package/.next/server/app/api/ide/openclaw/available-models/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/ide/openclaw/preview/route/build-manifest.json +1 -3
- package/.next/server/app/api/ide/openclaw/preview/route.js +4 -4
- package/.next/server/app/api/ide/openclaw/preview/route.js.nft.json +1 -1
- package/.next/server/app/api/ide/openclaw/preview/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/ide/openclaw/restore/route/build-manifest.json +1 -3
- package/.next/server/app/api/ide/openclaw/restore/route.js +3 -3
- package/.next/server/app/api/ide/openclaw/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/ide/openclaw/restore/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/ide/openclaw/save/route/build-manifest.json +1 -3
- package/.next/server/app/api/ide/openclaw/save/route.js +4 -4
- package/.next/server/app/api/ide/openclaw/save/route.js.nft.json +1 -1
- package/.next/server/app/api/ide/openclaw/save/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/ide/openclaw/status/route/build-manifest.json +1 -3
- package/.next/server/app/api/ide/openclaw/status/route.js +4 -4
- package/.next/server/app/api/ide/openclaw/status/route.js.nft.json +1 -1
- package/.next/server/app/api/ide/openclaw/status/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/ide/openclaw/test/route/build-manifest.json +1 -3
- package/.next/server/app/api/ide/openclaw/test/route.js +3 -3
- package/.next/server/app/api/ide/openclaw/test/route.js.nft.json +1 -1
- package/.next/server/app/api/ide/openclaw/test/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/ide/opencode/apply/route/build-manifest.json +1 -3
- package/.next/server/app/api/ide/opencode/apply/route.js +4 -4
- package/.next/server/app/api/ide/opencode/apply/route.js.nft.json +1 -1
- package/.next/server/app/api/ide/opencode/apply/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/ide/opencode/available-models/route/build-manifest.json +1 -3
- package/.next/server/app/api/ide/opencode/available-models/route.js +4 -4
- package/.next/server/app/api/ide/opencode/available-models/route.js.nft.json +1 -1
- package/.next/server/app/api/ide/opencode/available-models/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/ide/opencode/preview/route/build-manifest.json +1 -3
- package/.next/server/app/api/ide/opencode/preview/route.js +4 -4
- package/.next/server/app/api/ide/opencode/preview/route.js.nft.json +1 -1
- package/.next/server/app/api/ide/opencode/preview/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/ide/opencode/restore/route/build-manifest.json +1 -3
- package/.next/server/app/api/ide/opencode/restore/route.js +3 -3
- package/.next/server/app/api/ide/opencode/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/ide/opencode/restore/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/ide/opencode/save/route/build-manifest.json +1 -3
- package/.next/server/app/api/ide/opencode/save/route.js +4 -4
- package/.next/server/app/api/ide/opencode/save/route.js.nft.json +1 -1
- package/.next/server/app/api/ide/opencode/save/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/ide/opencode/status/route/build-manifest.json +1 -3
- package/.next/server/app/api/ide/opencode/status/route.js +4 -4
- package/.next/server/app/api/ide/opencode/status/route.js.nft.json +1 -1
- package/.next/server/app/api/ide/opencode/status/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/ide/opencode/test/route/build-manifest.json +1 -3
- package/.next/server/app/api/ide/opencode/test/route.js +3 -3
- package/.next/server/app/api/ide/opencode/test/route.js.nft.json +1 -1
- package/.next/server/app/api/ide/opencode/test/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/logs/route/build-manifest.json +1 -3
- package/.next/server/app/api/logs/route.js +4 -4
- package/.next/server/app/api/logs/route.js.nft.json +1 -1
- package/.next/server/app/api/logs/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/models/route/build-manifest.json +1 -3
- package/.next/server/app/api/models/route.js +5 -5
- package/.next/server/app/api/models/route.js.nft.json +1 -1
- package/.next/server/app/api/models/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/providers/route/build-manifest.json +1 -3
- package/.next/server/app/api/providers/route.js +5 -5
- package/.next/server/app/api/providers/route.js.nft.json +1 -1
- package/.next/server/app/api/providers/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/providers/test/route/build-manifest.json +1 -3
- package/.next/server/app/api/providers/test/route.js +5 -5
- package/.next/server/app/api/providers/test/route.js.nft.json +1 -1
- package/.next/server/app/api/providers/test/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/service/force-stop/route/build-manifest.json +1 -3
- package/.next/server/app/api/service/force-stop/route.js +4 -4
- package/.next/server/app/api/service/force-stop/route.js.nft.json +1 -1
- package/.next/server/app/api/service/force-stop/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/service/start/route/build-manifest.json +1 -3
- package/.next/server/app/api/service/start/route.js +4 -4
- package/.next/server/app/api/service/start/route.js.nft.json +1 -1
- package/.next/server/app/api/service/start/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/service/status/route/build-manifest.json +1 -3
- package/.next/server/app/api/service/status/route.js +4 -4
- package/.next/server/app/api/service/status/route.js.nft.json +1 -1
- package/.next/server/app/api/service/status/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/service/stop/route/build-manifest.json +1 -3
- package/.next/server/app/api/service/stop/route.js +4 -4
- package/.next/server/app/api/service/stop/route.js.nft.json +1 -1
- package/.next/server/app/api/service/stop/route_client-reference-manifest.js +2 -1
- package/.next/server/app/api/tokenizer/history/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/tokenizer/history/route/build-manifest.json +9 -0
- package/.next/server/app/api/tokenizer/history/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/tokenizer/history/route.js +7 -0
- package/.next/server/app/api/tokenizer/history/route.js.map +5 -0
- package/.next/server/app/api/tokenizer/history/route.js.nft.json +1 -0
- package/.next/server/app/api/tokenizer/history/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/tokenizer/test/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/tokenizer/test/route/build-manifest.json +9 -0
- package/.next/server/app/api/tokenizer/test/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/tokenizer/test/route.js +8 -0
- package/.next/server/app/api/tokenizer/test/route.js.map +5 -0
- package/.next/server/app/api/tokenizer/test/route.js.nft.json +1 -0
- package/.next/server/app/api/tokenizer/test/route_client-reference-manifest.js +3 -0
- package/.next/server/app/ide/page/build-manifest.json +5 -5
- package/.next/server/app/ide/page.js +12 -14
- package/.next/server/app/ide/page.js.nft.json +1 -1
- package/.next/server/app/ide/page_client-reference-manifest.js +2 -1
- package/.next/server/app/ide.html +1 -1
- package/.next/server/app/ide.rsc +15 -13
- package/.next/server/app/ide.segments/_full.segment.rsc +15 -13
- package/.next/server/app/ide.segments/_head.segment.rsc +3 -3
- package/.next/server/app/ide.segments/_index.segment.rsc +5 -5
- package/.next/server/app/ide.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/ide.segments/ide/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/ide.segments/ide.segment.rsc +4 -3
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +11 -11
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/index.segments/_full.segment.rsc +11 -11
- package/.next/server/app/index.segments/_head.segment.rsc +3 -3
- package/.next/server/app/index.segments/_index.segment.rsc +5 -5
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/logs/page/build-manifest.json +5 -5
- package/.next/server/app/logs/page.js +12 -14
- package/.next/server/app/logs/page.js.nft.json +1 -1
- package/.next/server/app/logs/page_client-reference-manifest.js +2 -1
- package/.next/server/app/logs.html +1 -1
- package/.next/server/app/logs.rsc +15 -13
- package/.next/server/app/logs.segments/_full.segment.rsc +15 -13
- package/.next/server/app/logs.segments/_head.segment.rsc +3 -3
- package/.next/server/app/logs.segments/_index.segment.rsc +5 -5
- package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/logs.segments/logs.segment.rsc +4 -3
- package/.next/server/app/models/page/build-manifest.json +5 -5
- package/.next/server/app/models/page.js +12 -14
- package/.next/server/app/models/page.js.nft.json +1 -1
- package/.next/server/app/models/page_client-reference-manifest.js +2 -1
- package/.next/server/app/models.html +1 -1
- package/.next/server/app/models.rsc +15 -13
- package/.next/server/app/models.segments/_full.segment.rsc +15 -13
- package/.next/server/app/models.segments/_head.segment.rsc +3 -3
- package/.next/server/app/models.segments/_index.segment.rsc +5 -5
- package/.next/server/app/models.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/models.segments/models/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/models.segments/models.segment.rsc +4 -3
- package/.next/server/app/page/build-manifest.json +5 -5
- package/.next/server/app/page.js +12 -14
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +2 -1
- package/.next/server/app/providers/page/build-manifest.json +5 -5
- package/.next/server/app/providers/page.js +12 -14
- package/.next/server/app/providers/page.js.nft.json +1 -1
- package/.next/server/app/providers/page_client-reference-manifest.js +2 -1
- package/.next/server/app/providers.html +1 -1
- package/.next/server/app/providers.rsc +15 -13
- package/.next/server/app/providers.segments/_full.segment.rsc +15 -13
- package/.next/server/app/providers.segments/_head.segment.rsc +3 -3
- package/.next/server/app/providers.segments/_index.segment.rsc +5 -5
- package/.next/server/app/providers.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/providers.segments/providers/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/providers.segments/providers.segment.rsc +4 -3
- package/.next/server/app/tokenizer/page/app-paths-manifest.json +3 -0
- package/.next/server/app/tokenizer/page/build-manifest.json +16 -0
- package/.next/server/app/tokenizer/page/next-font-manifest.json +6 -0
- package/.next/server/app/tokenizer/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/tokenizer/page/server-reference-manifest.json +4 -0
- package/.next/server/app/tokenizer/page.js +13 -0
- package/.next/server/app/tokenizer/page.js.map +5 -0
- package/.next/server/app/tokenizer/page.js.nft.json +1 -0
- package/.next/server/app/tokenizer/page_client-reference-manifest.js +3 -0
- package/.next/server/app/tokenizer.html +1 -0
- package/.next/server/app/tokenizer.meta +15 -0
- package/.next/server/app/tokenizer.rsc +20 -0
- package/.next/server/app/tokenizer.segments/_full.segment.rsc +20 -0
- package/.next/server/app/tokenizer.segments/_head.segment.rsc +5 -0
- package/.next/server/app/tokenizer.segments/_index.segment.rsc +6 -0
- package/.next/server/app/tokenizer.segments/_tree.segment.rsc +2 -0
- package/.next/server/app/tokenizer.segments/tokenizer/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/tokenizer.segments/tokenizer.segment.rsc +5 -0
- package/.next/server/app-paths-manifest.json +4 -1
- package/.next/server/chunks/0zjb_server_app_api_ide_openclaw_available-models_route_actions_0.gjr6a.js +3 -0
- package/.next/server/chunks/0zjb_server_app_api_ide_opencode_available-models_route_actions_0poyhyk.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0-_5z3v._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0-_5z3v._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__012ucp~._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__012ucp~._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__01atdgx._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__01atdgx._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__01~ft76._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__01~ft76._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__04sfkei._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__04sfkei._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__065r.wp._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__065r.wp._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__07pm7px._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__07pm7px._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__07vosna._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__07vosna._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__083j1v0._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__083j1v0._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__08_ekvs._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__08_ekvs._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__08ftz8n._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__08ftz8n._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__08oq8ma._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__08oq8ma._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__099b1my._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__099b1my._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0aw-~h8._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0aw-~h8._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0dj43ut._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0dj43ut._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0efv_yh._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0efv_yh._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0el37wu._.js +7 -0
- package/.next/server/chunks/[root-of-the-server]__0el37wu._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0g.1w-q._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0g.1w-q._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0im~-m7._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0im~-m7._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0jf1q27._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0jf1q27._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0kldv62._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0kldv62._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0lr16iw._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0lr16iw._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0m62mql._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0m62mql._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0qp1t_m._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0qp1t_m._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0qz-m.u._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0qz-m.u._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0r235yd._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0r235yd._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0rjkw2y._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0rjkw2y._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0uaqs.r._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0uaqs.r._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0vktxod._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0vktxod._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0vlh9um._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0vlh9um._.js.map +1 -0
- package/.next/server/chunks/{[root-of-the-server]__c1b4b601._.js → [root-of-the-server]__0xb5i_t._.js} +21 -9
- package/.next/server/chunks/[root-of-the-server]__0xb5i_t._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0xsal5d._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0xsal5d._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0yo.c6n._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0yo.c6n._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0yz0y4l._.js +13 -0
- package/.next/server/chunks/[root-of-the-server]__0yz0y4l._.js.map +1 -0
- package/.next/server/chunks/{[root-of-the-server]__e7623a6c._.js → [root-of-the-server]__11srlmi._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__e7623a6c._.js.map → [root-of-the-server]__11srlmi._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__12d44rt._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__12d44rt._.js.map +1 -0
- package/.next/server/chunks/[turbopack]_runtime.js +168 -60
- package/.next/server/chunks/[turbopack]_runtime.js.map +6 -5
- package/.next/server/chunks/_0v0oe6c._.js +3 -0
- package/.next/server/chunks/{_b48847f5._.js.map → _0v0oe6c._.js.map} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_config_route_actions_308a9f33.js → _next-internal_server_app_api_config_route_actions_08dm.dx.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_gateway_[___path]_route_actions_835b2379.js → _next-internal_server_app_api_gateway_[___path]_route_actions_0mmqyo7.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_gateway_models_route_actions_302c9983.js → _next-internal_server_app_api_gateway_models_route_actions_08b214z.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_gateway_route_actions_e5e7405d.js → _next-internal_server_app_api_gateway_route_actions_0.jzdw1.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_ide_claude_apply_route_actions_5056516c.js → _next-internal_server_app_api_ide_claude_apply_route_actions_0dw2_pf.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_ide_claude_available-models_route_actions_94d710a0.js → _next-internal_server_app_api_ide_claude_available-models_route_actions_0pmwy75.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_ide_claude_restore_route_actions_f37acc94.js → _next-internal_server_app_api_ide_claude_restore_route_actions_11x77hl.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_ide_claude_save_route_actions_407c55f5.js → _next-internal_server_app_api_ide_claude_save_route_actions_0b35ro_.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_ide_claude_status_route_actions_5ac73db8.js → _next-internal_server_app_api_ide_claude_status_route_actions_0fnw-w7.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_ide_claude_test_route_actions_70587902.js → _next-internal_server_app_api_ide_claude_test_route_actions_0jc1czy.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_ide_openclaw_apply_route_actions_2cb9e4b4.js → _next-internal_server_app_api_ide_openclaw_apply_route_actions_07re971.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_ide_openclaw_preview_route_actions_9814a8e4.js → _next-internal_server_app_api_ide_openclaw_preview_route_actions_0q53p05.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_ide_openclaw_restore_route_actions_10ad8f9d.js → _next-internal_server_app_api_ide_openclaw_restore_route_actions_02yog9-.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_ide_openclaw_save_route_actions_044ad081.js → _next-internal_server_app_api_ide_openclaw_save_route_actions_00tjxsz.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_ide_openclaw_status_route_actions_ed9786d2.js → _next-internal_server_app_api_ide_openclaw_status_route_actions_10wsun4.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_ide_openclaw_test_route_actions_ce2cb808.js → _next-internal_server_app_api_ide_openclaw_test_route_actions_0zgwyon.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_ide_opencode_apply_route_actions_6c422244.js → _next-internal_server_app_api_ide_opencode_apply_route_actions_0in-w.g.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_ide_opencode_preview_route_actions_256c82e0.js → _next-internal_server_app_api_ide_opencode_preview_route_actions_06h6.w~.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_ide_opencode_restore_route_actions_371993d3.js → _next-internal_server_app_api_ide_opencode_restore_route_actions_09ipt-l.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_ide_opencode_save_route_actions_6e4c9c41.js → _next-internal_server_app_api_ide_opencode_save_route_actions_0i-~x79.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_ide_opencode_status_route_actions_498ad77b.js → _next-internal_server_app_api_ide_opencode_status_route_actions_0cpf6rv.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_ide_opencode_test_route_actions_c71be510.js → _next-internal_server_app_api_ide_opencode_test_route_actions_0y8aq8h.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_logs_route_actions_30a87f47.js → _next-internal_server_app_api_logs_route_actions_08ef2j7.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_models_route_actions_b6abdc83.js → _next-internal_server_app_api_models_route_actions_0vfccm4.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_providers_route_actions_5388b373.js → _next-internal_server_app_api_providers_route_actions_0ee1p_m.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_providers_test_route_actions_b97ab15a.js → _next-internal_server_app_api_providers_test_route_actions_0vyo652.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_service_force-stop_route_actions_95eba80b.js → _next-internal_server_app_api_service_force-stop_route_actions_0pu9xrq.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_service_start_route_actions_d50efb77.js → _next-internal_server_app_api_service_start_route_actions_0_o53a2.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_service_status_route_actions_30149042.js → _next-internal_server_app_api_service_status_route_actions_08ag8v4.js} +1 -1
- package/.next/server/chunks/{_next-internal_server_app_api_service_stop_route_actions_19443941.js → _next-internal_server_app_api_service_stop_route_actions_04dp83p.js} +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_tokenizer_history_route_actions_09~nqtd.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_tokenizer_test_route_actions_0t2swp-.js +3 -0
- package/.next/server/chunks/{node_modules_next_dist_esm_build_templates_app-route_4be65264.js → node_modules_next_dist_esm_build_templates_app-route_0d1n5~u.js} +6 -6
- package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0d1n5~u.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0.zquoa._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0.zquoa._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__01dqyhh._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__01dqyhh._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__04qwc64._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__04qwc64._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__06r_ug4._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__06r_ug4._.js.map +1 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__f92001a5._.js → [root-of-the-server]__0814l01._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__0814l01._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0gb1hlj._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0gb1hlj._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0p8tmu2._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0p8tmu2._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0rf3.7n._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0rf3.7n._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0~6rwng._.js +33 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0~6rwng._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__10xgshr._.js +33 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__10xgshr._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__11i~7lq._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__11i~7lq._.js.map +1 -0
- package/.next/server/chunks/ssr/[turbopack]_runtime.js +168 -60
- package/.next/server/chunks/ssr/[turbopack]_runtime.js.map +6 -5
- package/.next/server/chunks/ssr/_0k83omg._.js +6 -0
- package/.next/server/chunks/ssr/_0k83omg._.js.map +1 -0
- package/.next/server/chunks/ssr/_0yyi5po._.js +3 -0
- package/.next/server/chunks/ssr/_0yyi5po._.js.map +1 -0
- package/.next/server/chunks/ssr/{_next-internal_server_app__global-error_page_actions_75761787.js → _next-internal_server_app__global-error_page_actions_0k77kol.js} +1 -1
- package/.next/server/chunks/ssr/{_next-internal_server_app__not-found_page_actions_554ec2bf.js → _next-internal_server_app__not-found_page_actions_0eq97pa.js} +1 -1
- package/.next/server/chunks/ssr/{_next-internal_server_app_ide_page_actions_d521d6ae.js → _next-internal_server_app_ide_page_actions_0_opd4~.js} +1 -1
- package/.next/server/chunks/ssr/{_next-internal_server_app_logs_page_actions_a1c69041.js → _next-internal_server_app_logs_page_actions_0rvsl~d.js} +1 -1
- package/.next/server/chunks/ssr/{_next-internal_server_app_models_page_actions_543cf22f.js → _next-internal_server_app_models_page_actions_0eiz7f7.js} +1 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_page_actions_09-gtaw.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_page_actions_09-gtaw.js.map +1 -0
- package/.next/server/chunks/ssr/{_next-internal_server_app_providers_page_actions_c75f6cb3.js → _next-internal_server_app_providers_page_actions_0ya36nw.js} +1 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_providers_page_actions_0ya36nw.js.map +1 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_tokenizer_page_actions_0imc_ya.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_tokenizer_page_actions_0imc_ya.js.map +1 -0
- package/.next/server/chunks/ssr/node_modules_09w7yel._.js +33 -0
- package/.next/server/chunks/ssr/node_modules_09w7yel._.js.map +1 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_06hehg4._.js +19 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_06hehg4._.js.map +1 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_0e1izl_._.js +6 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_0e1izl_._.js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules_next_dist_client_components_9774470f._.js → node_modules_next_dist_client_components_0inhx6q._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_next_dist_client_components_builtin_forbidden_45780354.js → node_modules_next_dist_client_components_builtin_forbidden_0ghu-f7.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules_next_dist_client_components_builtin_global-error_ece394eb.js → node_modules_next_dist_client_components_builtin_global-error_0lgvd_..js} +2 -2
- package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0lgvd_..js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules_next_dist_client_components_builtin_unauthorized_15817684.js → node_modules_next_dist_client_components_builtin_unauthorized_0cjv-23.js} +2 -2
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_05u.ff5.js +4 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_05u.ff5.js.map +1 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_06a5k-w.js +4 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_06a5k-w.js.map +1 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0_rrdx6.js +4 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0_rrdx6.js.map +1 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0a7b~p7.js +4 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0a7b~p7.js.map +1 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0bj8dkg.js +4 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0bj8dkg.js.map +1 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0cvrgh7.js +4 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0cvrgh7.js.map +1 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0nkcfme.js +4 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0nkcfme.js.map +1 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0rc3ul_.js +4 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0rc3ul_.js.map +1 -0
- package/.next/server/chunks/ssr/src_app_components_ConfirmDialog_tsx_0mm3plr._.js +3 -0
- package/.next/server/chunks/ssr/src_app_components_ConfirmDialog_tsx_0mm3plr._.js.map +1 -0
- package/.next/server/chunks/ssr/src_app_ide_page_tsx_0no40dj._.js +3 -0
- package/.next/server/chunks/ssr/{src_app_ide_page_tsx_8962793b._.js.map → src_app_ide_page_tsx_0no40dj._.js.map} +1 -1
- package/.next/server/chunks/ssr/src_app_logs_page_tsx_0l8mmxe._.js +3 -0
- package/.next/server/chunks/ssr/{src_app_logs_page_tsx_7b7b7b83._.js.map → src_app_logs_page_tsx_0l8mmxe._.js.map} +1 -1
- package/.next/server/chunks/ssr/src_app_models_page_tsx_10vsbc1._.js +3 -0
- package/.next/server/chunks/ssr/{src_app_models_page_tsx_ed71d32e._.js.map → src_app_models_page_tsx_10vsbc1._.js.map} +1 -1
- package/.next/server/chunks/ssr/src_app_page_tsx_0ss2.w7._.js +3 -0
- package/.next/server/chunks/ssr/src_app_page_tsx_0ss2.w7._.js.map +1 -0
- package/.next/server/chunks/ssr/src_app_providers_page_tsx_10ipz~8._.js +3 -0
- package/.next/server/chunks/ssr/{src_app_providers_page_tsx_eb8b5137._.js.map → src_app_providers_page_tsx_10ipz~8._.js.map} +1 -1
- package/.next/server/chunks/ssr/src_app_tokenizer_page_tsx_0eqhpbs._.js +3 -0
- package/.next/server/chunks/ssr/src_app_tokenizer_page_tsx_0eqhpbs._.js.map +1 -0
- package/.next/server/functions-config-manifest.json +3 -1
- package/.next/server/middleware-build-manifest.js +10 -10
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -2
- package/.next/server/prefetch-hints.json +1 -0
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/XHnu7Z1vWSrgmneps8rX4/_clientMiddlewareManifest.js +1 -0
- package/.next/static/chunks/01xlw8hd842-c.js +1 -0
- package/.next/static/chunks/0bzupvr5gt3k9.js +31 -0
- package/.next/static/chunks/0d3shmwh5_nmn.js +1 -0
- package/.next/static/chunks/0h7-_zr5_nt.5.js +1 -0
- package/.next/static/chunks/0mjx90nkvhsot.js +1 -0
- package/.next/static/chunks/0ntp1qkrtsgn0.js +1 -0
- package/.next/static/chunks/0tc5l6c1zalyc.css +1 -0
- package/.next/static/chunks/0v7.1nc4jyaet.js +1 -0
- package/.next/static/chunks/0vlwn301rv7dw.js +1 -0
- package/.next/static/chunks/0y3~cortx~or~.js +5 -0
- package/.next/static/chunks/0~c9fm3-3-f41.js +1 -0
- package/.next/static/chunks/11-7_fybhp2~y.js +1 -0
- package/.next/static/chunks/121-ofr4.6_5t.js +1 -0
- package/.next/static/chunks/16g.ca89g7fib.js +1 -0
- package/.next/static/chunks/turbopack-0griofc2i3wvs.js +1 -0
- package/.next/types/routes.d.ts +5 -2
- package/.next/types/validator.ts +27 -0
- package/CHANGELOG.md +15 -0
- package/README.md +6 -0
- package/dist/.next/dev/types/validator.js +12 -0
- package/dist/.next/types/validator.js +12 -0
- package/dist/package.json +3 -2
- package/dist/src/app/api/tokenizer/history/route.js +60 -0
- package/dist/src/app/api/tokenizer/test/route.js +97 -0
- package/dist/src/app/components/Nav.js +2 -1
- package/dist/src/app/tokenizer/page.js +318 -0
- package/dist/src/cli/index.js +3 -3
- package/dist/src/db/database.js +19 -21
- package/dist/src/db/queries.js +21 -0
- package/dist/src/server/tokenizer.js +215 -0
- package/package.json +3 -2
- package/src/app/api/tokenizer/history/route.ts +63 -0
- package/src/app/api/tokenizer/test/route.ts +151 -0
- package/src/app/components/Nav.tsx +2 -2
- package/src/app/tokenizer/page.tsx +813 -0
- package/src/cli/index.ts +4 -4
- package/src/db/database.ts +18 -25
- package/src/db/queries.ts +22 -0
- package/src/server/tokenizer.ts +285 -0
- package/.next/build/chunks/[root-of-the-server]__44695d76._.js.map +0 -11
- package/.next/build/chunks/[root-of-the-server]__6d51cb5d._.js.map +0 -8
- package/.next/server/chunks/[root-of-the-server]__001d5756._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__001d5756._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__05f8578b._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__05f8578b._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__1480f018._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1480f018._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__1909f3aa._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1909f3aa._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__1d4b7fc5._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1d4b7fc5._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__33fec899._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__33fec899._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__372ef2bf._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__372ef2bf._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__3a204d25._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__3a204d25._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__3aaf963c._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__3aaf963c._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__43810962._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__43810962._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__4a8f9bc7._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__4a8f9bc7._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__55cd88b8._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__55cd88b8._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__59aacd30._.js +0 -21
- package/.next/server/chunks/[root-of-the-server]__59aacd30._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__5e8276bc._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__5e8276bc._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__64356cb2._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__64356cb2._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__6ce199d2._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__6ce199d2._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__760eaa16._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__760eaa16._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__772134c6._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__772134c6._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__7b77f523._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__7b77f523._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__7c298a19._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__7c298a19._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__85540228._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__85540228._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__94fe8d3c._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__94fe8d3c._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__97622908._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__97622908._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__a02e6618._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__a02e6618._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__a32a20a7._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__a32a20a7._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__a719d045._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__a719d045._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__af5b556a._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__af5b556a._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__c1b4b601._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__cafe113e._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__cafe113e._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__ccfc7f1d._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__ccfc7f1d._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__dc8b0bed._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__dc8b0bed._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__f0461b8d._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__f0461b8d._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__f8949f88._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__f8949f88._.js.map +0 -1
- package/.next/server/chunks/_b48847f5._.js +0 -3
- package/.next/server/chunks/ce889_server_app_api_ide_openclaw_available-models_route_actions_e568e70b.js +0 -3
- package/.next/server/chunks/ce889_server_app_api_ide_opencode_available-models_route_actions_95230db3.js +0 -3
- package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_4be65264.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__083d944d._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__083d944d._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__15600e29._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__15600e29._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1836f866._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__1836f866._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__256a03fe._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__256a03fe._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__31fde618._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__31fde618._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__523c120c._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__523c120c._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__70a81394._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__70a81394._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__81937253._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__81937253._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__976ad963._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__976ad963._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__af2ad6aa._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__af2ad6aa._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__b9356576._.js +0 -4
- package/.next/server/chunks/ssr/[root-of-the-server]__b9356576._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__ccb6a4da._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__ccb6a4da._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__cfa2d991._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__cfa2d991._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__f437da88._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__f437da88._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__f92001a5._.js.map +0 -1
- package/.next/server/chunks/ssr/_06262cbd._.js +0 -4
- package/.next/server/chunks/ssr/_06262cbd._.js.map +0 -1
- package/.next/server/chunks/ssr/_0cd72da5._.js +0 -4
- package/.next/server/chunks/ssr/_0cd72da5._.js.map +0 -1
- package/.next/server/chunks/ssr/_4828a6d2._.js +0 -4
- package/.next/server/chunks/ssr/_4828a6d2._.js.map +0 -1
- package/.next/server/chunks/ssr/_69468f4c._.js +0 -3
- package/.next/server/chunks/ssr/_69468f4c._.js.map +0 -1
- package/.next/server/chunks/ssr/_93850476._.js +0 -6
- package/.next/server/chunks/ssr/_93850476._.js.map +0 -1
- package/.next/server/chunks/ssr/_c1309523._.js +0 -4
- package/.next/server/chunks/ssr/_c1309523._.js.map +0 -1
- package/.next/server/chunks/ssr/_f7d273e3._.js +0 -4
- package/.next/server/chunks/ssr/_f7d273e3._.js.map +0 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_page_actions_39d4fc33.js +0 -3
- package/.next/server/chunks/ssr/node_modules_next_dist_08570d7f._.js +0 -4
- package/.next/server/chunks/ssr/node_modules_next_dist_08570d7f._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_174ae28d._.js +0 -10
- package/.next/server/chunks/ssr/node_modules_next_dist_174ae28d._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_27457240._.js +0 -6
- package/.next/server/chunks/ssr/node_modules_next_dist_27457240._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_4b63a0e1._.js +0 -3
- package/.next/server/chunks/ssr/node_modules_next_dist_4b63a0e1._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_ece394eb.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_65a7265e.js +0 -4
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_65a7265e.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_f9713a08._.js +0 -3
- package/.next/server/chunks/ssr/node_modules_next_dist_f9713a08._.js.map +0 -1
- package/.next/server/chunks/ssr/src_app_ide_page_tsx_8962793b._.js +0 -3
- package/.next/server/chunks/ssr/src_app_logs_page_tsx_7b7b7b83._.js +0 -3
- package/.next/server/chunks/ssr/src_app_models_page_tsx_ed71d32e._.js +0 -3
- package/.next/server/chunks/ssr/src_app_providers_page_tsx_eb8b5137._.js +0 -3
- package/.next/static/cf2SWIkI5HVbnDjLExI42/_clientMiddlewareManifest.json +0 -1
- package/.next/static/chunks/5663c8696095f277.js +0 -1
- package/.next/static/chunks/64f547b3bcd3aef4.js +0 -1
- package/.next/static/chunks/6992685fe009e8fd.css +0 -1
- package/.next/static/chunks/6e0dee5b6681763c.js +0 -1
- package/.next/static/chunks/6f7efe5271343778.js +0 -1
- package/.next/static/chunks/75f76753fd97c8fd.js +0 -1
- package/.next/static/chunks/7c8b7cbb3339f139.js +0 -1
- package/.next/static/chunks/8ccc14e022ff6de3.js +0 -1
- package/.next/static/chunks/8cf1e5f00ebaea52.js +0 -1
- package/.next/static/chunks/a6dad97d9634a72d.js.map +0 -1
- package/.next/static/chunks/a7f539bf6487f4ff.js +0 -5
- package/.next/static/chunks/a89fdf03c5b0dfbd.js +0 -1
- package/.next/static/chunks/d2be314c3ece3fbe.js +0 -1
- package/.next/static/chunks/f2f58a7e93290fbb.js +0 -1
- package/.next/static/chunks/ff1a16fafef87110.js +0 -1
- package/.next/static/chunks/turbopack-fdb839c72e10c2ea.js +0 -4
- /package/.next/build/chunks/{[turbopack-node]_transforms_postcss_ts_df7a5b11._.js.map → [turbopack-node]_transforms_postcss_ts_0nnejqq._.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_config_route_actions_308a9f33.js.map → 0zjb_server_app_api_ide_openclaw_available-models_route_actions_0.gjr6a.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_gateway_[___path]_route_actions_835b2379.js.map → 0zjb_server_app_api_ide_opencode_available-models_route_actions_0poyhyk.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_gateway_models_route_actions_302c9983.js.map → _next-internal_server_app_api_config_route_actions_08dm.dx.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_gateway_route_actions_e5e7405d.js.map → _next-internal_server_app_api_gateway_[___path]_route_actions_0mmqyo7.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_ide_claude_apply_route_actions_5056516c.js.map → _next-internal_server_app_api_gateway_models_route_actions_08b214z.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_ide_claude_available-models_route_actions_94d710a0.js.map → _next-internal_server_app_api_gateway_route_actions_0.jzdw1.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_ide_claude_restore_route_actions_f37acc94.js.map → _next-internal_server_app_api_ide_claude_apply_route_actions_0dw2_pf.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_ide_claude_save_route_actions_407c55f5.js.map → _next-internal_server_app_api_ide_claude_available-models_route_actions_0pmwy75.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_ide_claude_status_route_actions_5ac73db8.js.map → _next-internal_server_app_api_ide_claude_restore_route_actions_11x77hl.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_ide_claude_test_route_actions_70587902.js.map → _next-internal_server_app_api_ide_claude_save_route_actions_0b35ro_.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_ide_openclaw_apply_route_actions_2cb9e4b4.js.map → _next-internal_server_app_api_ide_claude_status_route_actions_0fnw-w7.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_ide_openclaw_preview_route_actions_9814a8e4.js.map → _next-internal_server_app_api_ide_claude_test_route_actions_0jc1czy.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_ide_openclaw_restore_route_actions_10ad8f9d.js.map → _next-internal_server_app_api_ide_openclaw_apply_route_actions_07re971.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_ide_openclaw_save_route_actions_044ad081.js.map → _next-internal_server_app_api_ide_openclaw_preview_route_actions_0q53p05.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_ide_openclaw_status_route_actions_ed9786d2.js.map → _next-internal_server_app_api_ide_openclaw_restore_route_actions_02yog9-.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_ide_openclaw_test_route_actions_ce2cb808.js.map → _next-internal_server_app_api_ide_openclaw_save_route_actions_00tjxsz.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_ide_opencode_apply_route_actions_6c422244.js.map → _next-internal_server_app_api_ide_openclaw_status_route_actions_10wsun4.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_ide_opencode_preview_route_actions_256c82e0.js.map → _next-internal_server_app_api_ide_openclaw_test_route_actions_0zgwyon.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_ide_opencode_restore_route_actions_371993d3.js.map → _next-internal_server_app_api_ide_opencode_apply_route_actions_0in-w.g.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_ide_opencode_save_route_actions_6e4c9c41.js.map → _next-internal_server_app_api_ide_opencode_preview_route_actions_06h6.w~.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_ide_opencode_status_route_actions_498ad77b.js.map → _next-internal_server_app_api_ide_opencode_restore_route_actions_09ipt-l.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_ide_opencode_test_route_actions_c71be510.js.map → _next-internal_server_app_api_ide_opencode_save_route_actions_0i-~x79.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_logs_route_actions_30a87f47.js.map → _next-internal_server_app_api_ide_opencode_status_route_actions_0cpf6rv.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_models_route_actions_b6abdc83.js.map → _next-internal_server_app_api_ide_opencode_test_route_actions_0y8aq8h.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_providers_route_actions_5388b373.js.map → _next-internal_server_app_api_logs_route_actions_08ef2j7.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_providers_test_route_actions_b97ab15a.js.map → _next-internal_server_app_api_models_route_actions_0vfccm4.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_service_force-stop_route_actions_95eba80b.js.map → _next-internal_server_app_api_providers_route_actions_0ee1p_m.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_service_start_route_actions_d50efb77.js.map → _next-internal_server_app_api_providers_test_route_actions_0vyo652.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_service_status_route_actions_30149042.js.map → _next-internal_server_app_api_service_force-stop_route_actions_0pu9xrq.js.map} +0 -0
- /package/.next/server/chunks/{_next-internal_server_app_api_service_stop_route_actions_19443941.js.map → _next-internal_server_app_api_service_start_route_actions_0_o53a2.js.map} +0 -0
- /package/.next/server/chunks/{ce889_server_app_api_ide_openclaw_available-models_route_actions_e568e70b.js.map → _next-internal_server_app_api_service_status_route_actions_08ag8v4.js.map} +0 -0
- /package/.next/server/chunks/{ce889_server_app_api_ide_opencode_available-models_route_actions_95230db3.js.map → _next-internal_server_app_api_service_stop_route_actions_04dp83p.js.map} +0 -0
- /package/.next/server/chunks/{ssr/_next-internal_server_app__global-error_page_actions_75761787.js.map → _next-internal_server_app_api_tokenizer_history_route_actions_09~nqtd.js.map} +0 -0
- /package/.next/server/chunks/{ssr/_next-internal_server_app__not-found_page_actions_554ec2bf.js.map → _next-internal_server_app_api_tokenizer_test_route_actions_0t2swp-.js.map} +0 -0
- /package/.next/server/chunks/ssr/{_next-internal_server_app_ide_page_actions_d521d6ae.js.map → _next-internal_server_app__global-error_page_actions_0k77kol.js.map} +0 -0
- /package/.next/server/chunks/ssr/{_next-internal_server_app_logs_page_actions_a1c69041.js.map → _next-internal_server_app__not-found_page_actions_0eq97pa.js.map} +0 -0
- /package/.next/server/chunks/ssr/{_next-internal_server_app_models_page_actions_543cf22f.js.map → _next-internal_server_app_ide_page_actions_0_opd4~.js.map} +0 -0
- /package/.next/server/chunks/ssr/{_next-internal_server_app_page_actions_39d4fc33.js.map → _next-internal_server_app_logs_page_actions_0rvsl~d.js.map} +0 -0
- /package/.next/server/chunks/ssr/{_next-internal_server_app_providers_page_actions_c75f6cb3.js.map → _next-internal_server_app_models_page_actions_0eiz7f7.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_next_dist_client_components_9774470f._.js.map → node_modules_next_dist_client_components_0inhx6q._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_next_dist_client_components_builtin_forbidden_45780354.js.map → node_modules_next_dist_client_components_builtin_forbidden_0ghu-f7.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules_next_dist_client_components_builtin_unauthorized_15817684.js.map → node_modules_next_dist_client_components_builtin_unauthorized_0cjv-23.js.map} +0 -0
- /package/.next/static/{cf2SWIkI5HVbnDjLExI42 → XHnu7Z1vWSrgmneps8rX4}/_buildManifest.js +0 -0
- /package/.next/static/{cf2SWIkI5HVbnDjLExI42 → XHnu7Z1vWSrgmneps8rX4}/_ssgManifest.js +0 -0
- /package/.next/static/chunks/{a6dad97d9634a72d.js → 03~yq9q893hmn.js} +0 -0
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[53119,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(81844),e=a.i(21215);function f(){let[a,f]=(0,c.useState)("claude"),[g,h]=(0,c.useState)("GLM-4.5-air"),[i,j]=(0,c.useState)("MiniMax-M2.1"),[k,l]=(0,c.useState)("GLM-4.7"),[m,n]=(0,c.useState)("GLM-4.7"),[o,p]=(0,c.useState)("GLM-4.7"),[q,r]=(0,c.useState)(!1),[s,t]=(0,c.useState)(!1),[u,v]=(0,c.useState)("preview"),[w,x]=(0,c.useState)(!1),[y,z]=(0,c.useState)(!1),[A,B]=(0,c.useState)(!1),[C,D]=(0,c.useState)(!1),[E,F]=(0,c.useState)(null),[G,H]=(0,c.useState)({}),[I,J]=(0,c.useState)(!0),[K,L]=(0,c.useState)(null),[M,N]=(0,c.useState)("GLM-4.7"),[O,P]=(0,c.useState)(null),[Q,R]=(0,c.useState)(!1),[S,T]=(0,c.useState)(!1),[U,V]=(0,c.useState)(!1),[W,X]=(0,c.useState)(!1),[Y,Z]=(0,c.useState)(null),[$,_]=(0,c.useState)({}),[aa,ab]=(0,c.useState)(null),[ac,ad]=(0,c.useState)(""),[ae,af]=(0,c.useState)(!1),[ag,ah]=(0,c.useState)("current"),[ai,aj]=(0,c.useState)("GLM-4.7"),[ak,al]=(0,c.useState)([]),[am,an]=(0,c.useState)(""),[ao,ap]=(0,c.useState)([]),[aq,ar]=(0,c.useState)(null),[as,at]=(0,c.useState)(!1),[au,av]=(0,c.useState)(!1),[aw,ax]=(0,c.useState)(!1),[ay,az]=(0,c.useState)(!1),[aA,aB]=(0,c.useState)(null),[aC,aD]=(0,c.useState)({}),[aE,aF]=(0,c.useState)(null),[aG,aH]=(0,c.useState)(""),[aI,aJ]=(0,c.useState)(!1),[aK,aL]=(0,c.useState)(null),[aM,aN]=(0,c.useState)(""),[aO,aP]=(0,c.useState)("preview"),aQ=(0,c.useRef)(null),{showToast:aR}=(0,e.useToast)(),aS=(0,c.useMemo)(()=>Object.entries(aC).flatMap(([a,b])=>b.map(b=>({...b,provider:a}))),[aC]),aT=(0,c.useMemo)(()=>{let a=aM.trim().toLowerCase();return a?aS.filter(b=>b.name.toLowerCase().includes(a)||b.model_id.toLowerCase().includes(a)):aS},[aS,aM]),aU=(0,c.useRef)(null),aV=(0,c.useRef)(null),aW=(0,c.useRef)(null),aX=async()=>{try{let a=await fetch("/api/ide/claude/status"),b=await a.json();F(b);let c=!1===b.matchCurrentGateway&&b.tempMapping?b.tempMapping:b.modelMapping;c&&(h(c.haiku||"GLM-4.5-air"),j(c.sonnet||"MiniMax-M2.1"),l(c.opus||"GLM-4.7"),n(c.default||"GLM-4.7"),p(c.reasoning||"GLM-4.7")),r(b.applied&&"aar"===b.routerProvider)}catch(a){console.error("Failed to load status:",a)}finally{J(!1)}},aY=async()=>{try{let a=await fetch("/api/ide/claude/available-models"),b=await a.json();H(b.models||{})}catch(a){console.error("Failed to load models:",a)}},aZ=async()=>{try{let a=await fetch("/api/ide/opencode/status"),b=await a.json();P(b);let c=!1===b.matchCurrentGateway&&b.tempDefaultModel?b.tempDefaultModel:b.defaultModel;c?N(c):b.defaultModel&&N(b.defaultModel)}catch(a){console.error("Failed to load OpenCode status:",a)}},a$=async()=>{try{let a=await fetch("/api/ide/opencode/available-models"),b=await a.json();_(b.models||{})}catch(a){console.error("Failed to load OpenCode models:",a)}},a_=async()=>{try{let a=await fetch("/api/ide/openclaw/status"),b=await a.json();ar(b),!1===b.matchCurrentGateway&&b.tempDefaultModel?(aj(b.tempDefaultModel||"GLM-4.7"),al(b.tempDefaultFallbacks||[]),an(b.tempImageModel||""),ap(b.tempImageFallbacks||[])):(aj(b.defaultModel||"GLM-4.7"),al(b.defaultFallbacks||[]),an(b.imageModel||""),ap(b.imageFallbacks||[]))}catch(a){console.error("Failed to load OpenClaw status:",a)}},a0=async()=>{try{let a=await fetch("/api/ide/openclaw/available-models"),b=await a.json();aD(b.models||{})}catch(a){console.error("Failed to load OpenClaw models:",a)}};(0,c.useEffect)(()=>{aX(),aY(),aZ(),a$(),a_(),a0()},[]),(0,c.useEffect)(()=>{if("opencode"!==a||!M){ab(null),ad("");return}let b=!1;return af(!0),ab(null),ad(""),fetch(`/api/ide/opencode/preview?default_model=${encodeURIComponent(M)}`).then(a=>a.json()).then(a=>{!b&&a.config&&(ab(a.config),ad(JSON.stringify(a.config,null,2)))}).catch(()=>{b||ab(null),b||ad("")}).finally(()=>{b||af(!1)}),()=>{b=!0}},[a,M]),(0,c.useEffect)(()=>{if("openclaw"!==a||!ai){aF(null),aH("");return}let b=!1;aJ(!0),aF(null),aH("");let c=new URLSearchParams({default_model:ai,default_fallbacks:ak.join(",")});return am&&(c.set("image_model",am),ao.length>0&&c.set("image_fallbacks",ao.join(","))),fetch(`/api/ide/openclaw/preview?${c.toString()}`).then(a=>a.json()).then(a=>{!b&&a.config&&(aF(a.config),aH(JSON.stringify(a.config,null,2)))}).catch(()=>{b||aF(null),b||aH("")}).finally(()=>{b||aJ(!1)}),()=>{b=!0}},[a,ai,ak,am,ao]),(0,c.useEffect)(()=>{if(null==aK)return;let a=a=>{aQ.current&&!aQ.current.contains(a.target)&&aL(null)};return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[aK]),(0,c.useEffect)(()=>{let a=Object.values(G).flat();if(0===a.length)return;let b=a.map(a=>a.model_id),c=a[0].model_id;b.includes(g)||h(c),b.includes(i)||j(c),b.includes(k)||l(c),b.includes(m)||n(c),b.includes(o)||p(c)},[G]),(0,c.useEffect)(()=>{let a=Object.values($).flat();if(0===a.length)return;let b=a.map(a=>a.model_id),c=a[0].model_id;b.includes(M)||N(c)},[$]),(0,c.useEffect)(()=>{let a=Object.values(aC).flat();if(0===a.length)return;let b=a.map(a=>a.model_id),c=a[0].model_id;b.includes(ai)||aj(c);let d=ak.filter(a=>b.includes(a));d.length!==ak.length&&al(d),am&&!b.includes(am)&&an("");let e=ao.filter(a=>b.includes(a));e.length!==ao.length&&ap(e)},[aC]);let a1=async()=>{x(!0);try{let a=await fetch("/api/ide/claude/apply",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({haiku:g,sonnet:i,opus:k,default:m,reasoning:o})}),b=await a.json();b.success?(aR("配置应用成功","success"),await aX()):aR("应用失败: "+(b.error||"未知错误"),"error")}catch(a){console.error("Failed to apply config:",a),aR("应用失败: 网络错误","error")}finally{x(!1)}},a2=async()=>{z(!0);try{let a=await fetch("/api/ide/claude/restore",{method:"POST"}),b=await a.json();b.success?(aR("配置已还原","success"),v("current"),await aX()):aR("还原失败: "+(b.error||"未知错误"),"error")}catch(a){console.error("Failed to restore config:",a),aR("还原失败: 网络错误","error")}finally{z(!1)}},a3=async()=>{aU.current&&(aU.current.abort(),aU.current=null),aU.current=new AbortController,B(!0),L(null);try{let a=await fetch("/api/ide/claude/test",{signal:aU.current.signal}),b=await a.json();L(b),b.success?aR("配置测试通过","success"):aR("配置验证失败: "+(b.error||b.suggestion||"请检查配置"),"error")}catch(a){console.error("Failed to test config:",a),"AbortError"===a.name?aR("测试已取消","info"):(aR("测试失败: 网络错误","error"),L({error:"Network error"}))}finally{aU.current?.signal.aborted===!1&&(aU.current=null),B(!1)}},a4=O?.applied&&O?.routerProvider==="aar",a5=async()=>{R(!0);try{let a=await fetch("/api/ide/opencode/apply",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({default_model:M,...ac.trim()?{config:ac}:{}})}),b=await a.json();b.success?(aR(b.message||"OpenCode 配置应用成功","success"),await aZ()):aR("应用失败: "+(b.error||"未知错误"),"error")}catch(a){console.error("Failed to apply OpenCode config:",a),aR("应用失败: 网络错误","error")}finally{R(!1)}},a6=async()=>{T(!0);try{let a=await fetch("/api/ide/opencode/restore",{method:"POST"}),b=await a.json();b.success?(aR("OpenCode 配置已还原","success"),ah("current"),await aZ()):aR("还原失败: "+(b.error||"未知错误"),"error")}catch(a){console.error("Failed to restore OpenCode config:",a),aR("还原失败: 网络错误","error")}finally{T(!1)}},a7=async()=>{aV.current&&(aV.current.abort(),aV.current=null),aV.current=new AbortController,V(!0),Z(null);try{let a=await fetch("/api/ide/opencode/test",{signal:aV.current.signal}),b=await a.json();Z(b),b.success?aR("OpenCode 配置测试通过","success"):aR("配置验证失败: "+(b.error||b.suggestion||"请检查配置"),"error")}catch(a){"AbortError"===a.name?aR("测试已取消","info"):(aR("测试失败: 网络错误","error"),Z({error:"Network error"}))}finally{aV.current?.signal.aborted===!1&&(aV.current=null),V(!1)}},a8=aq?.applied&&aq?.routerProvider==="aar",a9=async()=>{at(!0);try{let a=await fetch("/api/ide/openclaw/apply",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({default_model:ai,default_fallbacks:ak,image_model:am||void 0,image_fallbacks:ao,...aG.trim()?{config:aG}:{}})}),b=await a.json();b.success?(aR(b.message||"OpenClaw 配置应用成功","success"),await a_()):aR("应用失败: "+(b.error||"未知错误"),"error")}catch(a){console.error("Failed to apply OpenClaw config:",a),aR("应用失败: 网络错误","error")}finally{at(!1)}},ba=async()=>{av(!0);try{let a=await fetch("/api/ide/openclaw/restore",{method:"POST"}),b=await a.json();b.success?(aR("OpenClaw 配置已还原","success"),aP("current"),await a_()):aR("还原失败: "+(b.error||"未知错误"),"error")}catch(a){console.error("Failed to restore OpenClaw config:",a),aR("还原失败: 网络错误","error")}finally{av(!1)}},bb=async()=>{aW.current&&(aW.current.abort(),aW.current=null),aW.current=new AbortController,ax(!0),aB(null);try{let a=await fetch("/api/ide/openclaw/test",{signal:aW.current.signal}),b=await a.json();aB(b),b.success?aR("OpenClaw 配置测试通过","success"):aR("配置验证失败: "+(b.error||b.suggestion||"请检查配置"),"error")}catch(a){"AbortError"===a.name?aR("测试已取消","info"):(aR("测试失败: 网络错误","error"),aB({error:"Network error"}))}finally{aW.current?.signal.aborted===!1&&(aW.current=null),ax(!1)}};return I?(0,b.jsx)("div",{className:"min-h-screen flex items-center justify-center bg-slate-50/80",children:(0,b.jsxs)("div",{className:"flex flex-col items-center gap-3",children:[(0,b.jsx)("div",{className:"w-8 h-8 border-2 border-slate-200 border-t-slate-900 rounded-full animate-spin"}),(0,b.jsx)("div",{className:"text-xs font-medium text-slate-500",children:"加载中..."})]})}):(0,b.jsxs)("div",{className:"min-h-screen bg-slate-50/80",children:[(0,b.jsx)(d.default,{}),(0,b.jsxs)("main",{className:"max-w-3xl mx-auto px-4 sm:px-6 lg:px-8 py-12",children:[(0,b.jsxs)("div",{className:"mb-10",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,b.jsx)("h1",{className:"text-2xl font-semibold text-slate-900 tracking-tight",children:"IDE 配置"}),(0,b.jsx)("span",{className:"px-2.5 py-0.5 text-xs font-medium text-slate-600 bg-slate-100/80 rounded-full border border-slate-200/50",children:"v1.0"})]}),(0,b.jsx)("p",{className:"text-sm text-slate-500",children:"配置 Claude Code、OpenCode 和 OpenClaw 的模型代理设置"})]}),(0,b.jsxs)("div",{className:"bg-white/60 backdrop-blur-md rounded-xl border border-slate-200/50 shadow-sm",children:[(0,b.jsx)("div",{className:"border-b border-slate-200/50 bg-white/40",children:(0,b.jsxs)("nav",{className:"flex gap-1 px-5","aria-label":"Tabs",children:[(0,b.jsxs)("button",{onClick:()=>f("claude"),className:`relative px-4 py-3.5 text-sm font-medium transition-all duration-200 ${"claude"===a?"text-slate-900":"text-slate-400 hover:text-slate-600"}`,children:["Claude Code","claude"===a&&(0,b.jsx)("span",{className:"absolute bottom-0 left-4 right-4 h-[2px] bg-slate-900 rounded-full"})]}),(0,b.jsxs)("button",{onClick:()=>f("opencode"),className:`relative px-4 py-3.5 text-sm font-medium transition-all duration-200 ${"opencode"===a?"text-slate-900":"text-slate-400 hover:text-slate-600"}`,children:["OpenCode","opencode"===a&&(0,b.jsx)("span",{className:"absolute bottom-0 left-4 right-4 h-[2px] bg-slate-900 rounded-full"})]}),(0,b.jsxs)("button",{onClick:()=>f("openclaw"),className:`relative px-4 py-3.5 text-sm font-medium transition-all duration-200 ${"openclaw"===a?"text-slate-900":"text-slate-400 hover:text-slate-600"}`,children:["OpenClaw","openclaw"===a&&(0,b.jsx)("span",{className:"absolute bottom-0 left-4 right-4 h-[2px] bg-slate-900 rounded-full"})]}),(0,b.jsx)("button",{onClick:()=>f("picoclaw"),disabled:!0,className:"relative px-4 py-3.5 text-sm font-medium text-slate-300 disabled:cursor-not-allowed",children:(0,b.jsxs)("div",{className:"flex items-center gap-2",children:["PicoClaw",(0,b.jsx)("span",{className:"px-2 py-0.5 text-[10px] font-medium text-slate-400 bg-slate-100/60 rounded-full border border-slate-200/50",children:"即将推出"})]})})]})}),(0,b.jsxs)("div",{className:"p-5 sm:p-6",children:["claude"===a&&(0,b.jsxs)("div",{className:"space-y-6",children:[E&&(0,b.jsxs)("div",{className:"flex items-center justify-between py-3 px-4 bg-white/60 rounded-lg border border-slate-200/50",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsx)("div",{className:`w-6 h-6 rounded-full flex items-center justify-center ${E.applied?"bg-emerald-100 text-emerald-600":"bg-slate-100 text-slate-400"}`,children:E.applied?(0,b.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2.5,d:"M5 13l4 4L19 7"})}):(0,b.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 9v2m0 4h.01"})})}),(0,b.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,b.jsx)("span",{className:"text-sm font-medium text-slate-700",children:E.applied?"已配置":"未配置"}),E.applied&&"aar"===E.routerProvider&&void 0!==E.matchCurrentGateway&&(0,b.jsx)("span",{className:`inline-flex items-center px-2 py-0.5 text-[10px] font-medium rounded-full border ${E.matchCurrentGateway?"bg-emerald-50/80 text-emerald-700 border-emerald-200/60":"bg-amber-50/80 text-amber-700 border-amber-200/60"}`,children:E.matchCurrentGateway?"匹配配置":"不匹配"})]})]}),E.lastUpdated&&(0,b.jsx)("div",{className:"text-[11px] text-slate-400 font-mono",children:new Date(E.lastUpdated).toLocaleString("zh-CN",{month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit"})})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h2",{className:"text-[11px] font-medium text-slate-400 mb-5",children:"模型映射"}),(0,b.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[{key:"haiku",label:"Haiku",icon:(0,b.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M13 10V3L4 14h7v7l9-11h-7z"})}),description:"快速响应",value:g,onChange:h},{key:"sonnet",label:"Sonnet",icon:(0,b.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})}),description:"平衡性能",value:i,onChange:j},{key:"opus",label:"Opus",icon:(0,b.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M9.663 17h4.673M12 3v1m6.364 5.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"})}),description:"深度思考",value:k,onChange:l},{key:"default",label:"默认",icon:(0,b.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M5 3v4M3 5h4M6 17v4m-2-2h4m5-16l2.286 6.857L21 12l-5.714 2.143L13 21l-2.286-6.857L5 12l5.714-2.143L13 3z"})}),description:"主要模型",value:m,onChange:n},{key:"reasoning",label:"推理",icon:(0,b.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M19.428 15.428a2 2 0 00-1.022-.547l-2.387-.477a6 6 0 00-3.86.517l-.318.158a6 6 0 01-3.86.517L6.05 14.9a2 2 0 00-1.806.547M8 4h8l-1 1v5.172a2 2 0 00.586 1.414l5 5c1.26 1.26.367 3.414-1.415 1.414l-5-5A2 2 0 009 10.172V5L8 4z"})}),description:"复杂推理",value:o,onChange:p}].map(a=>(0,b.jsx)("div",{className:"group relative bg-gradient-to-br from-white/50 to-transparent hover:from-slate-50/60 rounded-xl border border-slate-200/50 p-4 transition-all duration-300 hover:border-slate-300/60 hover:shadow-sm",children:(0,b.jsxs)("label",{htmlFor:a.key,className:"cursor-pointer",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2.5 mb-2.5 relative group/tip",children:[(0,b.jsx)("div",{className:"w-7 h-7 rounded-lg bg-slate-100/80 text-slate-600 flex items-center justify-center",children:a.icon}),(0,b.jsx)("div",{className:"flex items-center gap-2.5",children:(0,b.jsx)("span",{className:"text-[11px] font-medium text-slate-700",children:a.label})}),(0,b.jsx)("div",{className:"absolute left-9 top-0 mt-8 w-28 rounded-lg bg-slate-900/95 backdrop-blur-md px-3 py-2 text-[10px] text-slate-200 shadow-xl opacity-0 invisible group-hover/tip:opacity-100 group-hover/tip:visible transition-all duration-200 z-10",children:a.description})]}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)("select",{id:a.key,value:a.value,onChange:b=>a.onChange(b.target.value),className:"w-full appearance-none rounded-lg border border-slate-200/80 bg-white/90 backdrop-blur-sm px-3 py-2 pr-7 text-[11px] font-medium text-slate-700 shadow-sm transition-all duration-200 hover:border-slate-300/80 hover:bg-white focus:border-slate-400/80 focus:ring-2 focus:ring-slate-200/50 focus:outline-none cursor-pointer",children:Object.entries(G).map(([a,c])=>(0,b.jsx)("optgroup",{label:a,children:c.map(a=>(0,b.jsx)("option",{value:a.model_id,children:a.name},a.id))},a))}),(0,b.jsx)("div",{className:"absolute right-2.5 top-1/2 -translate-y-1/2 pointer-events-none",children:(0,b.jsx)("svg",{className:"w-3 h-3 text-slate-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})})]}),(0,b.jsx)("p",{className:"text-[10px] text-slate-500 mt-2.5 group-hover:text-slate-600 transition-colors",children:a.description})]})},a.key))})]}),(0,b.jsxs)("div",{className:`grid gap-3 pt-1 ${E?.backupExists?"grid-cols-3":"grid-cols-2"}`,children:[(0,b.jsx)("button",{onClick:a1,disabled:w,className:"w-full px-4 py-2.5 text-xs font-medium rounded-lg border border-slate-900 bg-slate-900 text-white hover:bg-slate-800 transition-all duration-200 disabled:opacity-50 disabled:cursor-not-allowed flex items-center justify-center gap-2",children:w?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("svg",{className:"animate-spin w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",children:[(0,b.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"3"}),(0,b.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),"应用中"]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})}),q?"更新配置":"应用配置"]})}),E?.backupExists&&(0,b.jsx)("button",{onClick:a2,disabled:y,className:"w-full px-4 py-2.5 text-xs font-medium rounded-lg border border-slate-200/80 bg-white text-slate-700 hover:border-slate-300 hover:bg-slate-50 transition-all duration-200 disabled:opacity-50 disabled:cursor-not-allowed flex items-center justify-center gap-2",children:y?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("svg",{className:"animate-spin w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",children:[(0,b.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"3"}),(0,b.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),"还原中"]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),"还原配置"]})}),A?(0,b.jsxs)("button",{onClick:()=>{aU.current&&(aU.current.abort(),aU.current=null)},className:"w-full px-4 py-2.5 text-xs font-medium rounded-lg border border-amber-200/80 bg-amber-50 text-amber-700 hover:bg-amber-100 transition-all duration-200 flex items-center justify-center gap-2",children:[(0,b.jsxs)("svg",{className:"animate-spin w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",children:[(0,b.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"3"}),(0,b.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),"取消测试"]}):(0,b.jsxs)("button",{onClick:a3,className:"w-full px-4 py-2.5 text-xs font-medium rounded-lg border border-slate-200/80 bg-white text-slate-700 hover:bg-slate-50 transition-all duration-200 flex items-center justify-center gap-2",children:[(0,b.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 10V3L4 14h7v7l9-11h-7z"})}),"测试配置"]})]}),K&&(0,b.jsx)("div",{className:`rounded-lg border px-4 py-3 ${K.success?"bg-emerald-50/60 border-emerald-200/60":"bg-rose-50/60 border-rose-200/60"}`,children:(0,b.jsxs)("div",{className:"flex items-start gap-3",children:[(0,b.jsx)("div",{className:`w-5 h-5 rounded-full flex items-center justify-center flex-shrink-0 mt-0.5 ${K.success?"bg-emerald-500":"bg-rose-500"}`,children:K.success?(0,b.jsx)("svg",{className:"w-3 h-3 text-white",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2.5,d:"M5 13l4 4L19 7"})}):(0,b.jsx)("svg",{className:"w-3 h-3 text-white",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2.5,d:"M6 18L18 6M6 6l12 12"})})}),(0,b.jsxs)("div",{className:"flex-1",children:[(0,b.jsx)("div",{className:"text-xs font-medium mb-1",children:K.success?"配置验证成功":"配置验证失败"}),(0,b.jsx)("p",{className:`text-[11px] ${K.success?"text-emerald-700/80":"text-rose-700/80"}`,children:K.success?"Claude Code 可以正常工作":"请检查配置"}),K.checks&&(0,b.jsx)("div",{className:"mt-3 pt-3 border-t border-white/40",children:(0,b.jsx)("div",{className:"grid grid-cols-3 gap-2",children:Object.entries(K.checks).map(([a,c])=>(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[c?(0,b.jsx)("svg",{className:"w-3 h-3 text-emerald-500 flex-shrink-0",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2.5,d:"M5 13l4 4L19 7"})}):(0,b.jsx)("svg",{className:"w-3 h-3 text-rose-500 flex-shrink-0",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2.5,d:"M6 18L18 6M6 6l12 12"})}),(0,b.jsx)("span",{className:"text-[10px] text-slate-600",children:{hasBaseUrl:"网关",hasApiKey:"API Key",hasHaikuModel:"Haiku",hasSonnetModel:"Sonnet",hasOpusModel:"Opus",hasDefaultModel:"默认模型",hasReasoningModel:"推理模型",isFromAar:"来源"}[a]||a})]},a))})}),K.claudeTest&&(0,b.jsx)("div",{className:"mt-3 pt-3 border-t border-white/40",children:K.claudeTest.success?(0,b.jsxs)("p",{className:"text-[10px] text-emerald-700",children:[K.claudeTest.message,K.claudeTest.output&&(0,b.jsxs)("span",{className:"text-[10px] text-slate-500 ml-1.5",children:["输出: ",K.claudeTest.output]})]}):(0,b.jsx)("p",{className:"text-[10px] text-rose-700 font-mono bg-rose-100/50 px-2 py-1 rounded inline-block",children:K.claudeTest.error})}),K.configSummary&&(0,b.jsxs)("details",{className:"mt-3 group",children:[(0,b.jsxs)("summary",{className:"cursor-pointer text-[10px] text-slate-500 hover:text-slate-700 list-none flex items-center gap-1",children:[(0,b.jsx)("svg",{className:"w-3 h-3 transition-transform group-open:rotate-90",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),"配置详情"]}),(0,b.jsxs)("div",{className:"mt-2 space-y-1.5 text-[10px]",children:[(0,b.jsxs)("div",{className:"flex justify-between py-1 border-b border-slate-200/40",children:[(0,b.jsx)("span",{className:"text-slate-500",children:"网关"}),(0,b.jsx)("span",{className:"font-mono text-slate-700",children:K.configSummary.baseUrl})]}),(0,b.jsxs)("div",{className:"flex justify-between py-1 border-b border-slate-200/40",children:[(0,b.jsx)("span",{className:"text-slate-500",children:"API Key"}),(0,b.jsx)("span",{className:"font-mono text-slate-700",children:K.configSummary.apiKey})]}),K.configSummary.routerProvider&&(0,b.jsxs)("div",{className:"flex justify-between py-1 border-b border-slate-200/40",children:[(0,b.jsx)("span",{className:"text-slate-500",children:"来源"}),(0,b.jsx)("span",{className:"text-slate-700",children:"aar"===K.configSummary.routerProvider?"当前工具":K.configSummary.routerProvider})]}),"not set"!==K.configSummary.haikuModel&&(0,b.jsxs)("div",{className:"flex justify-between py-1 border-b border-slate-200/40",children:[(0,b.jsx)("span",{className:"text-slate-500",children:"Haiku"}),(0,b.jsx)("span",{className:"font-mono text-slate-700",children:K.configSummary.haikuModel})]}),"not set"!==K.configSummary.sonnetModel&&(0,b.jsxs)("div",{className:"flex justify-between py-1 border-b border-slate-200/40",children:[(0,b.jsx)("span",{className:"text-slate-500",children:"Sonnet"}),(0,b.jsx)("span",{className:"font-mono text-slate-700",children:K.configSummary.sonnetModel})]}),"not set"!==K.configSummary.opusModel&&(0,b.jsxs)("div",{className:"flex justify-between py-1",children:[(0,b.jsx)("span",{className:"text-slate-500",children:"Opus"}),(0,b.jsx)("span",{className:"font-mono text-slate-700",children:K.configSummary.opusModel})]})]})]})]})]})}),(0,b.jsxs)("details",{className:"group",open:!0,children:[(0,b.jsxs)("summary",{className:"cursor-pointer text-[11px] text-slate-500 hover:text-slate-700 list-none flex items-center gap-1.5 py-1",children:[(0,b.jsx)("svg",{className:"w-3 h-3 transition-transform group-open:rotate-90",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,b.jsx)("span",{children:"配置"})]}),(0,b.jsxs)("div",{className:"mt-3",children:[(0,b.jsxs)("div",{className:"flex border border-slate-200 rounded-t-lg overflow-hidden bg-slate-100/90",children:[(0,b.jsx)("button",{type:"button",onClick:()=>v("preview"),className:`flex-1 px-4 py-2.5 text-[11px] transition-all ${"preview"===u?"bg-white text-slate-800 font-semibold shadow-sm":"text-slate-500 font-medium hover:bg-slate-200/80 hover:text-slate-600"}`,children:"预览"}),(0,b.jsx)("button",{type:"button",onClick:()=>v("current"),className:`flex-1 px-4 py-2.5 text-[11px] transition-all ${"current"===u?"bg-white text-slate-800 font-semibold shadow-sm":"text-slate-500 font-medium hover:bg-slate-200/80 hover:text-slate-600"}`,children:"生效中"})]}),(0,b.jsx)("div",{className:"relative overflow-hidden rounded-b-lg bg-slate-950 border border-slate-200 border-t-0",children:"preview"===u?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5 px-3 py-2 bg-slate-900 border-b border-slate-800",children:[(0,b.jsxs)("div",{className:"flex gap-1.5",children:[(0,b.jsx)("div",{className:"w-2.5 h-2.5 rounded-full bg-slate-600"}),(0,b.jsx)("div",{className:"w-2.5 h-2.5 rounded-full bg-slate-600"}),(0,b.jsx)("div",{className:"w-2.5 h-2.5 rounded-full bg-slate-600"})]}),(0,b.jsx)("span",{className:"text-[10px] font-medium text-slate-400 ml-2",children:"settings.json(仅当前网关相关,应用时会合并进现有配置)"})]}),(0,b.jsx)("pre",{className:"w-full min-h-[12rem] p-3.5 text-[10px] text-slate-300 font-mono overflow-auto bg-slate-950 max-h-96 [&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-track]:bg-slate-900 [&::-webkit-scrollbar-thumb]:bg-slate-600 [&::-webkit-scrollbar-thumb]:rounded-full",children:JSON.stringify({router_provider:"aar",env:{ANTHROPIC_AUTH_TOKEN:E?.currentGatewayApiKey??"your-gateway-api-key",ANTHROPIC_BASE_URL:E?.currentGatewayAddress??"http://localhost:1357",ANTHROPIC_DEFAULT_HAIKU_MODEL:g,ANTHROPIC_DEFAULT_SONNET_MODEL:i,ANTHROPIC_DEFAULT_OPUS_MODEL:k,ANTHROPIC_MODEL:m,ANTHROPIC_REASONING_MODEL:o,API_TIMEOUT_MS:"3000000",CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC:1,hasCompletedOnboarding:!0}},null,2)})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5 px-3 py-2 bg-slate-900 border-b border-slate-800",children:[(0,b.jsxs)("div",{className:"flex gap-1.5",children:[(0,b.jsx)("div",{className:"w-2.5 h-2.5 rounded-full bg-slate-600"}),(0,b.jsx)("div",{className:"w-2.5 h-2.5 rounded-full bg-slate-600"}),(0,b.jsx)("div",{className:"w-2.5 h-2.5 rounded-full bg-slate-600"})]}),(0,b.jsx)("span",{className:"text-[10px] font-medium text-slate-400 ml-2",children:"settings.json(当前磁盘内容,还原后即更新)"})]}),E?.config!=null?(0,b.jsx)("pre",{className:"w-full min-h-[12rem] p-3.5 text-[10px] text-slate-300 font-mono overflow-auto bg-slate-950 max-h-96 [&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-track]:bg-slate-900 [&::-webkit-scrollbar-thumb]:bg-slate-600 [&::-webkit-scrollbar-thumb]:rounded-full",children:JSON.stringify(E.config,null,2)}):(0,b.jsx)("div",{className:"p-3.5 text-[10px] text-slate-500 font-mono",children:"暂无配置文件"})]})})]})]}),(0,b.jsxs)("div",{className:"rounded-lg border border-slate-200/50 bg-slate-50/60 px-4 py-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 mb-2.5",children:[(0,b.jsx)("svg",{className:"w-4 h-4 text-slate-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})}),(0,b.jsx)("h3",{className:"text-xs font-semibold text-slate-700",children:"使用说明"})]}),(0,b.jsxs)("ul",{className:"space-y-1.5 text-[10px] text-slate-600",children:[(0,b.jsxs)("li",{className:"flex gap-2",children:[(0,b.jsx)("span",{className:"text-slate-400",children:"1."}),(0,b.jsx)("span",{children:"「生效中」为当前磁盘上的 settings.json;「预览」为应用后将写入的内容"})]}),(0,b.jsxs)("li",{className:"flex gap-2",children:[(0,b.jsx)("span",{className:"text-slate-400",children:"2."}),(0,b.jsx)("span",{children:"为每个模型类别选择路由模型后,在「预览」中查看,点击「应用配置」或「更新配置」写入"})]}),(0,b.jsxs)("li",{className:"flex gap-2",children:[(0,b.jsx)("span",{className:"text-slate-400",children:"3."}),(0,b.jsx)("span",{children:"配置文件位于 ~/.claude/settings.json"})]}),(0,b.jsxs)("li",{className:"flex gap-2",children:[(0,b.jsx)("span",{className:"text-slate-400",children:"4."}),(0,b.jsx)("span",{children:"若已应用过 AAR,会显示「更新配置」;有备份时「还原配置」可恢复,还原后请在「生效中」查看"})]})]})]})]}),"opencode"===a&&(0,b.jsxs)("div",{className:"space-y-6",children:[O&&(0,b.jsxs)("div",{className:"flex items-center justify-between py-3 px-4 bg-white/60 rounded-lg border border-slate-200/50",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsx)("div",{className:`w-6 h-6 rounded-full flex items-center justify-center ${O.applied?"bg-emerald-100 text-emerald-600":"bg-slate-100 text-slate-400"}`,children:O.applied?(0,b.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2.5,d:"M5 13l4 4L19 7"})}):(0,b.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 9v2m0 4h.01"})})}),(0,b.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,b.jsx)("span",{className:"text-sm font-medium text-slate-700",children:O.applied?"已配置":"未配置"}),O.applied&&void 0!==O.matchCurrentGateway&&(0,b.jsx)("span",{className:`inline-flex items-center px-2 py-0.5 text-[10px] font-medium rounded-full border ${O.matchCurrentGateway?"bg-emerald-50/80 text-emerald-700 border-emerald-200/60":"bg-amber-50/80 text-amber-700 border-amber-200/60"}`,children:O.matchCurrentGateway?"匹配当前网关":"不匹配"})]})]}),O.lastUpdated&&(0,b.jsx)("div",{className:"text-[11px] text-slate-400 font-mono",children:new Date(O.lastUpdated).toLocaleString("zh-CN",{month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit"})})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h2",{className:"text-[11px] font-medium text-slate-400 mb-5",children:"默认模型"}),(0,b.jsx)("div",{className:"group relative bg-gradient-to-br from-white/50 to-transparent hover:from-slate-50/60 rounded-xl border border-slate-200/50 p-4 transition-all duration-300 hover:border-slate-300/60 hover:shadow-sm",children:(0,b.jsxs)("label",{htmlFor:"opencode-default-model",className:"cursor-pointer",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2.5 mb-2.5",children:[(0,b.jsx)("div",{className:"w-7 h-7 rounded-lg bg-slate-100/80 text-slate-600 flex items-center justify-center",children:(0,b.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M5 3v4M3 5h4M6 17v4m-2-2h4m5-16l2.286 6.857L21 12l-5.714 2.143L13 21l-2.286-6.857L5 12l5.714-2.143L13 3z"})})}),(0,b.jsx)("span",{className:"text-[11px] font-medium text-slate-700",children:"OpenCode 使用的默认模型"})]}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)("select",{id:"opencode-default-model",value:M,onChange:a=>N(a.target.value),className:"w-full appearance-none rounded-lg border border-slate-200/80 bg-white/90 backdrop-blur-sm px-3 py-2 pr-7 text-[11px] font-medium text-slate-700 shadow-sm transition-all duration-200 hover:border-slate-300/80 hover:bg-white focus:border-slate-400/80 focus:ring-2 focus:ring-slate-200/50 focus:outline-none cursor-pointer",children:Object.entries($).map(([a,c])=>(0,b.jsx)("optgroup",{label:a,children:c.map(a=>(0,b.jsx)("option",{value:a.model_id,children:a.name},a.id))},a))}),(0,b.jsx)("div",{className:"absolute right-2.5 top-1/2 -translate-y-1/2 pointer-events-none",children:(0,b.jsx)("svg",{className:"w-3 h-3 text-slate-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})})]})]})})]}),(0,b.jsxs)("div",{className:`grid gap-3 pt-1 ${a4?"grid-cols-3":"grid-cols-2"}`,children:[(0,b.jsx)("button",{onClick:a5,disabled:Q,className:`w-full px-4 py-2.5 text-xs font-medium rounded-lg border transition-all duration-200 disabled:opacity-50 disabled:cursor-not-allowed flex items-center justify-center gap-2 ${a4?"bg-white border-slate-200/80 text-slate-700 hover:border-slate-300 hover:bg-slate-50":"bg-slate-900 border-slate-900 text-white hover:bg-slate-800"}`,children:Q?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("svg",{className:"animate-spin w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",children:[(0,b.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"3"}),(0,b.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),"应用中"]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})}),a4?"更新配置":"应用配置"]})}),a4&&(0,b.jsx)("button",{onClick:a6,disabled:S,className:"w-full px-4 py-2.5 text-xs font-medium rounded-lg border border-slate-200/80 bg-white text-slate-700 hover:border-slate-300 hover:bg-slate-50 transition-all duration-200 disabled:opacity-50 disabled:cursor-not-allowed flex items-center justify-center gap-2",children:S?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("svg",{className:"animate-spin w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",children:[(0,b.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"3"}),(0,b.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),"还原中"]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),"还原配置"]})}),U?(0,b.jsxs)("button",{onClick:()=>{aV.current&&(aV.current.abort(),aV.current=null)},className:"w-full px-4 py-2.5 text-xs font-medium rounded-lg border border-amber-200/80 bg-amber-50 text-amber-700 hover:bg-amber-100 transition-all duration-200 flex items-center justify-center gap-2",children:[(0,b.jsxs)("svg",{className:"animate-spin w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",children:[(0,b.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"3"}),(0,b.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),"取消测试"]}):(0,b.jsxs)("button",{onClick:a7,className:"w-full px-4 py-2.5 text-xs font-medium rounded-lg border border-slate-200/80 bg-white text-slate-700 hover:bg-slate-50 transition-all duration-200 flex items-center justify-center gap-2",children:[(0,b.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 10V3L4 14h7v7l9-11h-7z"})}),"测试配置"]})]}),Y&&(0,b.jsx)("div",{className:`rounded-lg border px-4 py-3 ${Y.success?"bg-emerald-50/60 border-emerald-200/60":"bg-rose-50/60 border-rose-200/60"}`,children:(0,b.jsxs)("div",{className:"flex items-start gap-3",children:[(0,b.jsx)("div",{className:`w-5 h-5 rounded-full flex items-center justify-center flex-shrink-0 mt-0.5 ${Y.success?"bg-emerald-500":"bg-rose-500"}`,children:Y.success?(0,b.jsx)("svg",{className:"w-3 h-3 text-white",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2.5,d:"M5 13l4 4L19 7"})}):(0,b.jsx)("svg",{className:"w-3 h-3 text-white",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2.5,d:"M6 18L18 6M6 6l12 12"})})}),(0,b.jsxs)("div",{className:"flex-1",children:[(0,b.jsx)("div",{className:"text-xs font-medium mb-1",children:Y.success?"配置验证成功":"配置验证失败"}),(0,b.jsx)("p",{className:`text-[11px] ${Y.success?"text-emerald-700/80":"text-rose-700/80"}`,children:Y.success?Y.opencodeTest?.message||"OpenCode 可以正常工作":Y.opencodeTest?.error||Y.error||Y.suggestion||"请检查配置"}),Y.checks&&(0,b.jsx)("div",{className:"mt-3 pt-3 border-t border-white/40",children:(0,b.jsx)("div",{className:"grid grid-cols-3 gap-2",children:Object.entries(Y.checks).map(([a,c])=>(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[c?(0,b.jsx)("svg",{className:"w-3 h-3 text-emerald-500 flex-shrink-0",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2.5,d:"M5 13l4 4L19 7"})}):(0,b.jsx)("svg",{className:"w-3 h-3 text-rose-500 flex-shrink-0",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2.5,d:"M6 18L18 6M6 6l12 12"})}),(0,b.jsx)("span",{className:"text-[10px] text-slate-600",children:{hasBaseUrl:"网关",hasApiKey:"API Key",hasDefaultModel:"默认模型",hasModels:"模型列表"}[a]||a})]},a))})})]})]})}),(0,b.jsxs)("details",{className:"group",open:!0,children:[(0,b.jsxs)("summary",{className:"cursor-pointer text-[11px] text-slate-500 hover:text-slate-700 list-none flex items-center gap-1.5 py-1",children:[(0,b.jsx)("svg",{className:"w-3 h-3 transition-transform group-open:rotate-90",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,b.jsx)("span",{children:"配置"})]}),(0,b.jsxs)("div",{className:"mt-3",children:[(0,b.jsxs)("div",{className:"flex border border-slate-200 rounded-t-lg overflow-hidden bg-slate-100/90",children:[(0,b.jsx)("button",{type:"button",onClick:()=>ah("preview"),className:`flex-1 px-4 py-2.5 text-[11px] transition-all ${"preview"===ag?"bg-white text-slate-800 font-semibold shadow-sm":"text-slate-500 font-medium hover:bg-slate-200/80 hover:text-slate-600"}`,children:"预览"}),(0,b.jsx)("button",{type:"button",onClick:()=>ah("current"),className:`flex-1 px-4 py-2.5 text-[11px] transition-all ${"current"===ag?"bg-white text-slate-800 font-semibold shadow-sm":"text-slate-500 font-medium hover:bg-slate-200/80 hover:text-slate-600"}`,children:"生效中"})]}),(0,b.jsx)("div",{className:"relative overflow-hidden rounded-b-lg bg-slate-950 border border-slate-200 border-t-0",children:"current"===ag?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5 px-3 py-2 bg-slate-900 border-b border-slate-800",children:[(0,b.jsxs)("div",{className:"flex gap-1.5",children:[(0,b.jsx)("div",{className:"w-2.5 h-2.5 rounded-full bg-slate-600"}),(0,b.jsx)("div",{className:"w-2.5 h-2.5 rounded-full bg-slate-600"}),(0,b.jsx)("div",{className:"w-2.5 h-2.5 rounded-full bg-slate-600"})]}),(0,b.jsx)("span",{className:"text-[10px] font-medium text-slate-400 ml-2",children:"opencode.json(当前磁盘内容,还原后即更新)"})]}),O?.config!=null?(0,b.jsx)("pre",{className:"w-full min-h-[12rem] p-3.5 text-[10px] text-slate-300 font-mono overflow-auto max-h-96 [&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-track]:bg-slate-900 [&::-webkit-scrollbar-thumb]:bg-slate-600 [&::-webkit-scrollbar-thumb]:rounded-full",children:JSON.stringify(O.config,null,2)}):(0,b.jsx)("div",{className:"p-3.5 text-[10px] text-slate-500 font-mono",children:"暂无配置文件"})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5 px-3 py-2 bg-slate-900 border-b border-slate-800",children:[(0,b.jsxs)("div",{className:"flex gap-1.5",children:[(0,b.jsx)("div",{className:"w-2.5 h-2.5 rounded-full bg-slate-600"}),(0,b.jsx)("div",{className:"w-2.5 h-2.5 rounded-full bg-slate-600"}),(0,b.jsx)("div",{className:"w-2.5 h-2.5 rounded-full bg-slate-600"})]}),(0,b.jsx)("span",{className:"text-[10px] font-medium text-slate-400 ml-2",children:"opencode.json(应用后将写入的合并结果)"})]}),ae?(0,b.jsx)("div",{className:"p-3.5 text-[10px] text-slate-400 font-mono",children:"加载中..."}):(0,b.jsx)("textarea",{className:"opencode-preview-textarea w-full min-h-[12rem] p-3.5 text-[10px] text-slate-300 font-mono bg-slate-950 border-0 focus:ring-0 focus:ring-offset-0 focus:outline-none resize-y max-h-96 overflow-y-auto placeholder:text-slate-500 [&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-track]:bg-slate-900 [&::-webkit-scrollbar-thumb]:bg-slate-600 [&::-webkit-scrollbar-thumb]:rounded-full",placeholder:"暂无预览",spellCheck:!1,value:ac,onChange:a=>ad(a.target.value)})]})})]})]}),(0,b.jsxs)("div",{className:"rounded-lg border border-slate-200/50 bg-slate-50/60 px-4 py-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 mb-2.5",children:[(0,b.jsx)("svg",{className:"w-4 h-4 text-slate-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})}),(0,b.jsx)("h3",{className:"text-xs font-semibold text-slate-700",children:"使用说明"})]}),(0,b.jsxs)("ul",{className:"space-y-1.5 text-[10px] text-slate-600",children:[(0,b.jsxs)("li",{className:"flex gap-2",children:[(0,b.jsx)("span",{className:"text-slate-400",children:"1."}),(0,b.jsx)("span",{children:"「生效中」为当前磁盘上的 opencode.json;「预览」为点击应用后将写入的合并结果(含 AAR 网关)"})]}),(0,b.jsxs)("li",{className:"flex gap-2",children:[(0,b.jsx)("span",{className:"text-slate-400",children:"2."}),(0,b.jsx)("span",{children:"选择默认模型后,在「预览」中查看合并结果,点击「应用配置」写入"})]}),(0,b.jsxs)("li",{className:"flex gap-2",children:[(0,b.jsx)("span",{className:"text-slate-400",children:"3."}),(0,b.jsx)("span",{children:"配置文件位于 ~/.config/opencode/opencode.json(或 Windows %APPDATA%/opencode)"})]}),(0,b.jsxs)("li",{className:"flex gap-2",children:[(0,b.jsx)("span",{className:"text-slate-400",children:"4."}),(0,b.jsx)("span",{children:"「还原配置」恢复为应用前的备份;还原后请在「生效中」查看当前内容"})]})]})]})]}),"openclaw"===a&&(0,b.jsxs)("div",{className:"space-y-6",children:[aq&&(0,b.jsxs)("div",{className:"flex items-center justify-between py-3 px-4 bg-white/60 rounded-lg border border-slate-200/50",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsx)("div",{className:`w-6 h-6 rounded-full flex items-center justify-center ${aq.applied?"bg-emerald-100 text-emerald-600":"bg-slate-100 text-slate-400"}`,children:aq.applied?(0,b.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2.5,d:"M5 13l4 4L19 7"})}):(0,b.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 9v2m0 4h.01"})})}),(0,b.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,b.jsx)("span",{className:"text-sm font-medium text-slate-700",children:aq.applied?"已配置":"未配置"}),aq.applied&&void 0!==aq.matchCurrentGateway&&(0,b.jsx)("span",{className:`inline-flex items-center px-2 py-0.5 text-[10px] font-medium rounded-full border ${aq.matchCurrentGateway?"bg-emerald-50/80 text-emerald-700 border-emerald-200/60":"bg-amber-50/80 text-amber-700 border-amber-200/60"}`,children:aq.matchCurrentGateway?"匹配当前网关":"不匹配"})]})]}),aq.lastUpdated&&(0,b.jsx)("div",{className:"text-[11px] text-slate-400 font-mono",children:new Date(aq.lastUpdated).toLocaleString("zh-CN",{month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit"})})]}),(0,b.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",ref:aQ,children:[(0,b.jsxs)("div",{className:"bg-gradient-to-br from-white/50 to-transparent rounded-xl border border-slate-200/50 p-4 transition-all duration-300 hover:border-slate-300/60 hover:shadow-sm",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2.5 mb-2.5",children:[(0,b.jsx)("div",{className:"w-7 h-7 rounded-lg bg-indigo-100/80 text-indigo-600 flex items-center justify-center",children:(0,b.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M5 3v4M3 5h4M6 17v4m-2-2h4m5-16l2.286 6.857L21 12l-5.714 2.143L13 21l-2.286-6.857L5 12l5.714-2.143L13 3z"})})}),(0,b.jsx)("span",{className:"text-[11px] font-medium text-slate-700",children:"默认模型"})]}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>{aN(""),aL("default"===aK?null:"default")},className:"w-full text-left appearance-none rounded-lg border border-slate-200/80 bg-white/90 px-3 py-2 pr-8 text-[11px] font-medium text-slate-700 shadow-sm focus:border-indigo-400 focus:ring-2 focus:ring-indigo-200/50 focus:outline-none cursor-pointer flex items-center justify-between",children:[(0,b.jsx)("span",{className:"truncate",children:aS.find(a=>a.model_id===ai)?.name||ai||"选择模型"}),(0,b.jsx)("svg",{className:"w-3 h-3 text-slate-400 flex-shrink-0",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),"default"===aK&&(0,b.jsxs)("div",{className:"absolute z-20 mt-1 w-full rounded-lg border border-slate-200 bg-white shadow-lg py-1 max-h-56 overflow-hidden flex flex-col",children:[(0,b.jsx)("input",{type:"text",placeholder:"搜索模型...",value:aM,onChange:a=>aN(a.target.value),onKeyDown:a=>a.stopPropagation(),className:"mx-2 mb-1 px-2 py-1.5 text-[11px] border border-slate-200 rounded-md focus:ring-2 focus:ring-indigo-200 focus:border-indigo-400 focus:outline-none"}),(0,b.jsx)("ul",{className:"overflow-y-auto overscroll-contain max-h-44",children:aT.map(a=>(0,b.jsx)("li",{children:(0,b.jsxs)("button",{type:"button",onClick:()=>{aj(a.model_id),aL(null),aN("")},className:`w-full text-left px-3 py-2 text-[11px] hover:bg-indigo-50 ${a.model_id===ai?"bg-indigo-100 text-indigo-700 font-medium":"text-slate-700"}`,children:[a.name,(0,b.jsxs)("span",{className:"text-slate-400 ml-1",children:["(",a.provider,")"]})]})},a.id))})]})]}),(0,b.jsx)("p",{className:"text-[10px] text-slate-500 mt-2",children:"主要使用的模型"})]}),(0,b.jsxs)("div",{className:"bg-gradient-to-br from-white/50 to-transparent rounded-xl border border-slate-200/50 p-4 transition-all duration-300 hover:border-slate-300/60 hover:shadow-sm",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2.5 mb-2.5",children:[(0,b.jsx)("div",{className:"w-7 h-7 rounded-lg bg-amber-100/80 text-amber-600 flex items-center justify-center",children:(0,b.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})})}),(0,b.jsx)("span",{className:"text-[11px] font-medium text-slate-700",children:"默认 Fallback"})]}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)("div",{className:"min-h-[38px] rounded-lg border border-slate-200/80 bg-white/90 px-3 py-2 flex flex-wrap gap-1.5 items-center",children:0===ak.length?(0,b.jsx)("span",{className:"text-[11px] text-slate-400",children:"从下方搜索并添加备用模型"}):ak.map(a=>{let c=aS.find(b=>b.model_id===a);return(0,b.jsxs)("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-md bg-amber-100 text-amber-800 text-[10px] font-medium",children:[c?.name||a,(0,b.jsx)("button",{type:"button",onClick:()=>al(b=>b.filter(b=>b!==a)),className:"hover:bg-amber-200 rounded p-0.5","aria-label":"移除",children:(0,b.jsx)("svg",{className:"w-3 h-3",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]},a)})}),(0,b.jsx)("button",{type:"button",onClick:()=>{aN(""),aL("defaultFallbacks"===aK?null:"defaultFallbacks")},className:"mt-1.5 w-full text-left px-3 py-1.5 text-[11px] text-slate-500 border border-dashed border-slate-200 rounded-md hover:border-amber-300 hover:text-amber-700 hover:bg-amber-50/50",children:"+ 搜索并添加 Fallback 模型"}),"defaultFallbacks"===aK&&(0,b.jsxs)("div",{className:"absolute z-20 mt-1 w-full rounded-lg border border-slate-200 bg-white shadow-lg py-1 max-h-56 overflow-hidden flex flex-col",children:[(0,b.jsx)("input",{type:"text",placeholder:"搜索模型...",value:aM,onChange:a=>aN(a.target.value),onKeyDown:a=>a.stopPropagation(),className:"mx-2 mb-1 px-2 py-1.5 text-[11px] border border-slate-200 rounded-md focus:ring-2 focus:ring-amber-200 focus:border-amber-400 focus:outline-none"}),(0,b.jsxs)("ul",{className:"overflow-y-auto overscroll-contain max-h-44",children:[aT.filter(a=>!ak.includes(a.model_id)).map(a=>(0,b.jsx)("li",{children:(0,b.jsxs)("button",{type:"button",onClick:()=>{al(b=>b.includes(a.model_id)?b:[...b,a.model_id]),aN("")},className:"w-full text-left px-3 py-2 text-[11px] text-slate-700 hover:bg-amber-50",children:[a.name,(0,b.jsxs)("span",{className:"text-slate-400 ml-1",children:["(",a.provider,")"]})]})},a.id)),0===aT.filter(a=>!ak.includes(a.model_id)).length&&(0,b.jsx)("li",{className:"px-3 py-2 text-[11px] text-slate-400",children:"无更多可选或已全部添加"})]})]})]}),(0,b.jsx)("p",{className:"text-[10px] text-slate-500 mt-2",children:"默认模型的备用模型,可多选,不可重复"})]}),(0,b.jsxs)("div",{className:"bg-gradient-to-br from-white/50 to-transparent rounded-xl border border-slate-200/50 p-4 transition-all duration-300 hover:border-slate-300/60 hover:shadow-sm",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2.5 mb-2.5",children:[(0,b.jsx)("div",{className:"w-7 h-7 rounded-lg bg-rose-100/80 text-rose-600 flex items-center justify-center",children:(0,b.jsxs)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:[(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})]})}),(0,b.jsx)("span",{className:"text-[11px] font-medium text-slate-700",children:"视觉模型"})]}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>{aN(""),aL("image"===aK?null:"image")},className:"w-full text-left appearance-none rounded-lg border border-slate-200/80 bg-white/90 px-3 py-2 pr-8 text-[11px] font-medium text-slate-700 shadow-sm focus:border-rose-400 focus:ring-2 focus:ring-rose-200/50 focus:outline-none cursor-pointer flex items-center justify-between",children:[(0,b.jsx)("span",{className:"truncate",children:am?aS.find(a=>a.model_id===am)?.name||am:"未设置"}),(0,b.jsx)("svg",{className:"w-3 h-3 text-slate-400 flex-shrink-0",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),"image"===aK&&(0,b.jsxs)("div",{className:"absolute z-20 mt-1 w-full rounded-lg border border-slate-200 bg-white shadow-lg py-1 max-h-56 overflow-hidden flex flex-col",children:[(0,b.jsx)("input",{type:"text",placeholder:"搜索模型...",value:aM,onChange:a=>aN(a.target.value),onKeyDown:a=>a.stopPropagation(),className:"mx-2 mb-1 px-2 py-1.5 text-[11px] border border-slate-200 rounded-md focus:ring-2 focus:ring-rose-200 focus:border-rose-400 focus:outline-none"}),(0,b.jsxs)("ul",{className:"overflow-y-auto overscroll-contain max-h-44",children:[(0,b.jsx)("li",{children:(0,b.jsx)("button",{type:"button",onClick:()=>{an(""),aL(null),aN("")},className:`w-full text-left px-3 py-2 text-[11px] hover:bg-rose-50 ${!am?"bg-rose-100 text-rose-700 font-medium":"text-slate-500"}`,children:"未设置"})}),aT.map(a=>(0,b.jsx)("li",{children:(0,b.jsxs)("button",{type:"button",onClick:()=>{an(a.model_id),aL(null),aN("")},className:`w-full text-left px-3 py-2 text-[11px] hover:bg-rose-50 ${a.model_id===am?"bg-rose-100 text-rose-700 font-medium":"text-slate-700"}`,children:[a.name,(0,b.jsxs)("span",{className:"text-slate-400 ml-1",children:["(",a.provider,")"]})]})},a.id))]})]})]}),(0,b.jsx)("p",{className:"text-[10px] text-slate-500 mt-2",children:"用于图像理解(可选)"})]}),(0,b.jsxs)("div",{className:"bg-gradient-to-br from-white/50 to-transparent rounded-xl border border-slate-200/50 p-4 transition-all duration-300 hover:border-slate-300/60 hover:shadow-sm",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2.5 mb-2.5",children:[(0,b.jsx)("div",{className:"w-7 h-7 rounded-lg bg-emerald-100/80 text-emerald-600 flex items-center justify-center",children:(0,b.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})})}),(0,b.jsx)("span",{className:"text-[11px] font-medium text-slate-700",children:"视觉 Fallback"})]}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)("div",{className:"min-h-[38px] rounded-lg border border-slate-200/80 bg-white/90 px-3 py-2 flex flex-wrap gap-1.5 items-center",children:0===ao.length?(0,b.jsx)("span",{className:"text-[11px] text-slate-400",children:"从下方搜索并添加备用模型"}):ao.map(a=>{let c=aS.find(b=>b.model_id===a);return(0,b.jsxs)("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-md bg-emerald-100 text-emerald-800 text-[10px] font-medium",children:[c?.name||a,(0,b.jsx)("button",{type:"button",onClick:()=>ap(b=>b.filter(b=>b!==a)),className:"hover:bg-emerald-200 rounded p-0.5","aria-label":"移除",children:(0,b.jsx)("svg",{className:"w-3 h-3",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]},a)})}),(0,b.jsx)("button",{type:"button",onClick:()=>{aN(""),aL("imageFallbacks"===aK?null:"imageFallbacks")},className:"mt-1.5 w-full text-left px-3 py-1.5 text-[11px] text-slate-500 border border-dashed border-slate-200 rounded-md hover:border-emerald-300 hover:text-emerald-700 hover:bg-emerald-50/50",children:"+ 搜索并添加 Fallback 模型"}),"imageFallbacks"===aK&&(0,b.jsxs)("div",{className:"absolute z-20 mt-1 w-full rounded-lg border border-slate-200 bg-white shadow-lg py-1 max-h-56 overflow-hidden flex flex-col",children:[(0,b.jsx)("input",{type:"text",placeholder:"搜索模型...",value:aM,onChange:a=>aN(a.target.value),onKeyDown:a=>a.stopPropagation(),className:"mx-2 mb-1 px-2 py-1.5 text-[11px] border border-slate-200 rounded-md focus:ring-2 focus:ring-emerald-200 focus:border-emerald-400 focus:outline-none"}),(0,b.jsxs)("ul",{className:"overflow-y-auto overscroll-contain max-h-44",children:[aT.filter(a=>!ao.includes(a.model_id)).map(a=>(0,b.jsx)("li",{children:(0,b.jsxs)("button",{type:"button",onClick:()=>{ap(b=>b.includes(a.model_id)?b:[...b,a.model_id]),aN("")},className:"w-full text-left px-3 py-2 text-[11px] text-slate-700 hover:bg-emerald-50",children:[a.name,(0,b.jsxs)("span",{className:"text-slate-400 ml-1",children:["(",a.provider,")"]})]})},a.id)),0===aT.filter(a=>!ao.includes(a.model_id)).length&&(0,b.jsx)("li",{className:"px-3 py-2 text-[11px] text-slate-400",children:"无更多可选或已全部添加"})]})]})]}),(0,b.jsx)("p",{className:"text-[10px] text-slate-500 mt-2",children:"视觉模型的备用模型,可多选,不可重复"})]})]}),(0,b.jsxs)("div",{className:`grid gap-3 pt-1 ${a8?"grid-cols-3":"grid-cols-2"}`,children:[(0,b.jsx)("button",{onClick:a9,disabled:as,className:`w-full px-4 py-2.5 text-xs font-medium rounded-lg border transition-all duration-200 disabled:opacity-50 disabled:cursor-not-allowed flex items-center justify-center gap-2 ${a8?"bg-white border-slate-200/80 text-slate-700 hover:border-slate-300 hover:bg-slate-50":"bg-slate-900 border-slate-900 text-white hover:bg-slate-800"}`,children:as?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("svg",{className:"animate-spin w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",children:[(0,b.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"3"}),(0,b.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),"应用中"]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})}),a8?"更新配置":"应用配置"]})}),a8&&(0,b.jsx)("button",{onClick:ba,disabled:au,className:"w-full px-4 py-2.5 text-xs font-medium rounded-lg border border-slate-200/80 bg-white text-slate-700 hover:border-slate-300 hover:bg-slate-50 transition-all duration-200 disabled:opacity-50 disabled:cursor-not-allowed flex items-center justify-center gap-2",children:au?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("svg",{className:"animate-spin w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",children:[(0,b.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"3"}),(0,b.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),"还原中"]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),"还原配置"]})}),aw?(0,b.jsxs)("button",{onClick:()=>{aW.current&&(aW.current.abort(),aW.current=null)},className:"w-full px-4 py-2.5 text-xs font-medium rounded-lg border border-amber-200/80 bg-amber-50 text-amber-700 hover:bg-amber-100 transition-all duration-200 flex items-center justify-center gap-2",children:[(0,b.jsxs)("svg",{className:"animate-spin w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",children:[(0,b.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"3"}),(0,b.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),"取消测试"]}):(0,b.jsxs)("button",{onClick:bb,className:"w-full px-4 py-2.5 text-xs font-medium rounded-lg border border-slate-200/80 bg-white text-slate-700 hover:bg-slate-50 transition-all duration-200 flex items-center justify-center gap-2",children:[(0,b.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 10V3L4 14h7v7l9-11h-7z"})}),"测试配置"]})]}),aA&&(0,b.jsx)("div",{className:`rounded-lg border px-4 py-3 ${aA.success?"bg-emerald-50/60 border-emerald-200/60":"bg-rose-50/60 border-rose-200/60"}`,children:(0,b.jsxs)("div",{className:"flex items-start gap-3",children:[(0,b.jsx)("div",{className:`w-5 h-5 rounded-full flex items-center justify-center flex-shrink-0 mt-0.5 ${aA.success?"bg-emerald-500":"bg-rose-500"}`,children:aA.success?(0,b.jsx)("svg",{className:"w-3 h-3 text-white",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2.5,d:"M5 13l4 4L19 7"})}):(0,b.jsx)("svg",{className:"w-3 h-3 text-white",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2.5,d:"M6 18L18 6M6 6l12 12"})})}),(0,b.jsxs)("div",{className:"flex-1",children:[(0,b.jsx)("div",{className:"text-xs font-medium mb-1",children:aA.success?"配置验证成功":"配置验证失败"}),(0,b.jsx)("p",{className:`text-[11px] ${aA.success?"text-emerald-700/80":"text-rose-700/80"}`,children:aA.success?aA.openclawTest?.message||"OpenClaw 可以正常工作":aA.openclawTest?.error||aA.error||aA.suggestion||"请检查配置"}),aA.openclawTest?.stdout&&(0,b.jsx)("div",{className:"mt-2 text-[10px] text-slate-500 font-mono bg-white/50 p-2 rounded",children:aA.openclawTest.stdout})]})]})}),(0,b.jsxs)("details",{className:"group",open:!0,children:[(0,b.jsxs)("summary",{className:"cursor-pointer text-[11px] text-slate-500 hover:text-slate-700 list-none flex items-center gap-1.5 py-1",children:[(0,b.jsx)("svg",{className:"w-3 h-3 transition-transform group-open:rotate-90",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})}),(0,b.jsx)("span",{children:"配置"})]}),(0,b.jsxs)("div",{className:"mt-3",children:[(0,b.jsxs)("div",{className:"flex border border-slate-200 rounded-t-lg overflow-hidden bg-slate-100/90",children:[(0,b.jsx)("button",{type:"button",onClick:()=>aP("preview"),className:`flex-1 px-4 py-2.5 text-[11px] transition-all ${"preview"===aO?"bg-white text-slate-800 font-semibold shadow-sm":"text-slate-500 font-medium hover:bg-slate-200/80 hover:text-slate-600"}`,children:"预览"}),(0,b.jsx)("button",{type:"button",onClick:()=>aP("current"),className:`flex-1 px-4 py-2.5 text-[11px] transition-all ${"current"===aO?"bg-white text-slate-800 font-semibold shadow-sm":"text-slate-500 font-medium hover:bg-slate-200/80 hover:text-slate-600"}`,children:"生效中"})]}),(0,b.jsx)("div",{className:"relative overflow-hidden rounded-b-lg bg-slate-950 border border-slate-200 border-t-0",children:"preview"===aO?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5 px-3 py-2 bg-slate-900 border-b border-slate-800",children:[(0,b.jsxs)("div",{className:"flex gap-1.5",children:[(0,b.jsx)("div",{className:"w-2.5 h-2.5 rounded-full bg-slate-600"}),(0,b.jsx)("div",{className:"w-2.5 h-2.5 rounded-full bg-slate-600"}),(0,b.jsx)("div",{className:"w-2.5 h-2.5 rounded-full bg-slate-600"})]}),(0,b.jsx)("span",{className:"text-[10px] font-medium text-slate-400 ml-2",children:"openclaw.json(应用后将写入的合并结果)"})]}),aI?(0,b.jsx)("div",{className:"p-3.5 text-[10px] text-slate-400 font-mono",children:"加载中..."}):(0,b.jsx)("textarea",{className:"openclaw-preview-textarea w-full min-h-[12rem] p-3.5 text-[10px] text-slate-300 font-mono bg-slate-950 border-0 focus:ring-0 focus:ring-offset-0 focus:outline-none resize-y max-h-96 overflow-y-auto placeholder:text-slate-500 [&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-track]:bg-slate-900 [&::-webkit-scrollbar-thumb]:bg-slate-600 [&::-webkit-scrollbar-thumb]:rounded-full",placeholder:"暂无预览",spellCheck:!1,value:aG,onChange:a=>aH(a.target.value)})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5 px-3 py-2 bg-slate-900 border-b border-slate-800",children:[(0,b.jsxs)("div",{className:"flex gap-1.5",children:[(0,b.jsx)("div",{className:"w-2.5 h-2.5 rounded-full bg-slate-600"}),(0,b.jsx)("div",{className:"w-2.5 h-2.5 rounded-full bg-slate-600"}),(0,b.jsx)("div",{className:"w-2.5 h-2.5 rounded-full bg-slate-600"})]}),(0,b.jsx)("span",{className:"text-[10px] font-medium text-slate-400 ml-2",children:"openclaw.json(当前磁盘内容,还原后即更新)"})]}),aq?.config!=null?(0,b.jsx)("pre",{className:"w-full min-h-[12rem] p-3.5 text-[10px] text-slate-300 font-mono overflow-auto max-h-96 [&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-track]:bg-slate-900 [&::-webkit-scrollbar-thumb]:bg-slate-600 [&::-webkit-scrollbar-thumb]:rounded-full",children:JSON.stringify(aq.config,null,2)}):(0,b.jsx)("div",{className:"p-3.5 text-[10px] text-slate-500 font-mono",children:"暂无配置文件"})]})})]})]}),(0,b.jsxs)("div",{className:"rounded-lg border border-slate-200/50 bg-slate-50/60 px-4 py-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 mb-2.5",children:[(0,b.jsx)("svg",{className:"w-4 h-4 text-slate-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})}),(0,b.jsx)("h3",{className:"text-xs font-semibold text-slate-700",children:"使用说明"})]}),(0,b.jsxs)("ul",{className:"space-y-1.5 text-[10px] text-slate-600",children:[(0,b.jsxs)("li",{className:"flex gap-2",children:[(0,b.jsx)("span",{className:"text-slate-400",children:"1."}),(0,b.jsx)("span",{children:"「生效中」为当前磁盘上的 openclaw.json;「预览」为应用后将写入的合并结果(含 AAR 网关)"})]}),(0,b.jsxs)("li",{className:"flex gap-2",children:[(0,b.jsx)("span",{className:"text-slate-400",children:"2."}),(0,b.jsx)("span",{children:"选择默认模型等后,在「预览」中查看合并结果,点击「应用配置」写入"})]}),(0,b.jsxs)("li",{className:"flex gap-2",children:[(0,b.jsx)("span",{className:"text-slate-400",children:"3."}),(0,b.jsx)("span",{children:"配置文件位于 ~/.openclaw/openclaw.json"})]}),(0,b.jsxs)("li",{className:"flex gap-2",children:[(0,b.jsx)("span",{className:"text-slate-400",children:"4."}),(0,b.jsx)("span",{children:"「还原配置」恢复为应用前的备份;还原后请在「生效中」查看当前内容"})]})]})]})]}),"picoclaw"===a&&(0,b.jsxs)("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[(0,b.jsx)("div",{className:"w-16 h-16 bg-slate-100 rounded-full flex items-center justify-center mb-4",children:(0,b.jsx)("svg",{className:"w-8 h-8 text-slate-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4"})})}),(0,b.jsx)("h3",{className:"text-sm font-medium text-slate-900 mb-1",children:"PicoClaw 支持即将推出"}),(0,b.jsx)("p",{className:"text-xs text-slate-500 max-w-xs",children:"我们将很快添加对 PicoClaw 的支持,敬请期待。"})]})]})]})]})]})}a.s(["default",()=>f])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=src_app_ide_page_tsx_8962793b._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[82602,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(81844),e=a.i(21215),f=a.i(71862);function g(){let[a,g]=(0,c.useState)([]),[h,i]=(0,c.useState)(null),[j,k]=(0,c.useState)(!0),[l,m]=(0,c.useState)(0),[n,o]=(0,c.useState)(0),[p,q]=(0,c.useState)([]),[r,s]=(0,c.useState)(!1),[t,u]=(0,c.useState)(null),[v,w]=(0,c.useState)(""),[x,y]=(0,c.useState)(""),{showToast:z}=(0,e.useToast)(),A=async a=>{try{await navigator.clipboard.writeText(a),z("已复制到剪贴板","success")}catch{z("复制失败,请手动复制","error")}},B=async()=>{0!==p.length&&u({open:!0,title:"删除确认",message:`确定要删除选中的 ${p.length} 条日志吗?`,onConfirm:async()=>{try{let a=await fetch(`/api/logs?ids=${p.join(",")}`,{method:"DELETE"}),b=await a.json();a.ok?(q([]),s(!1),D(),z("删除成功","success"),u(null)):z("删除失败:"+(b.error||"未知错误"),"error")}catch(a){console.error("Failed to delete logs:",a),z("删除失败","error")}}})},C=async()=>{u({open:!0,title:"清空日志",message:"确定要清空所有日志吗?此操作不可恢复!",onConfirm:async()=>{try{let a=await fetch("/api/logs?clear_all=true",{method:"DELETE"}),b=await a.json();a.ok?(m(0),q([]),s(!1),D(),z("清空成功","success"),u(null)):z("清空失败:"+(b.error||"未知错误"),"error")}catch(a){console.error("Failed to clear logs:",a),z("清空失败","error")}}})},D=async a=>{try{k(!0);let b=new URLSearchParams({limit:"50",offset:(50*l).toString()});a&&b.set("search",a);let c=await fetch(`/api/logs?${b.toString()}`),d=await c.json();g(d.logs||[]),o(d.total||0)}catch(a){console.error("Failed to load logs:",a),z("加载日志失败","error")}finally{k(!1)}},E=()=>{w(x),m(0),D(x)};(0,c.useEffect)(()=>{D()},[l,50]);let F=a=>"string"==typeof a?a:JSON.stringify(a),G=a=>I(a)?H(a):F(a),H=a=>{let b;if(!a)return"";try{b=JSON.parse(a)}catch{b=a}if(!b.includes("data:")||!b.includes("\n\n"))try{let a=JSON.parse(b);return JSON.stringify(a)}catch{return String(b)}let c=b.split("\n\n").filter(a=>a.trim()),d=[];for(let a of c){let b=a.trim();b=b.split("\n").map(a=>a.startsWith("data: ")?a.substring(6):a).join("\n"),d.push(b)}return d.join("\n\n")},I=a=>{if(!a)return!1;let b=a.includes("data:"),c=a.includes("\n\n"),d=a.includes("event:");return b||c||d};return j?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(d.default,{}),(0,b.jsx)("div",{className:"min-h-screen flex items-center justify-center",children:(0,b.jsx)("div",{className:"text-lg",children:"加载中..."})})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(d.default,{}),(0,b.jsx)("main",{className:"max-w-6xl mx-auto py-6 sm:px-6 lg:px-8",children:(0,b.jsxs)("div",{className:"px-4 py-4 sm:px-0",children:[(0,b.jsxs)("div",{className:"mb-5 flex items-center justify-between",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h1",{className:"text-lg font-bold text-slate-800",children:"请求日志"}),(0,b.jsx)("p",{className:"text-xs text-slate-500 mt-1",children:"查看所有 API 请求记录和响应详情"})]}),(0,b.jsxs)("div",{className:"flex gap-2 items-center",children:[(0,b.jsxs)("div",{className:"relative group",children:[(0,b.jsx)("input",{type:"text",placeholder:"搜索日志...",value:x,onChange:a=>y(a.target.value),onKeyPress:a=>{"Enter"===a.key&&E()},className:"w-64 pl-9 pr-20 py-1.5 text-xs border border-slate-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-emerald-500/30 focus:border-emerald-500 transition-all"}),(0,b.jsx)("svg",{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-slate-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})}),(0,b.jsx)("div",{className:"absolute right-2 top-1/2 -translate-y-1/2 flex items-center gap-1",children:x?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("button",{onClick:E,className:"p-0.5 text-emerald-500 hover:text-emerald-600 hover:bg-emerald-50 rounded transition-colors",title:"确认搜索",children:(0,b.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})})}),(0,b.jsx)("button",{onClick:()=>{y(""),v&&(w(""),m(0),D())},className:"p-0.5 text-slate-400 hover:text-rose-500 hover:bg-rose-50 rounded transition-colors",title:"清除搜索",children:(0,b.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}):null})]}),p.length>0&&(0,b.jsxs)("button",{onClick:B,className:"px-3 py-1.5 bg-rose-600 hover:bg-rose-700 text-white text-xs font-semibold rounded-lg border border-rose-200 transition-all duration-300",children:["删除选中 (",p.length,")"]}),(0,b.jsx)("button",{onClick:C,className:"px-3 py-1.5 bg-slate-600 hover:bg-slate-700 text-white text-xs font-semibold rounded-lg border border-slate-200 transition-all duration-300",children:"清空所有"})]})]}),(0,b.jsx)("div",{className:"bg-white/70 backdrop-blur-sm shadow-md rounded-2xl border border-emerald-100/50 overflow-hidden",children:(0,b.jsxs)("table",{className:"min-w-full divide-y divide-slate-100",children:[(0,b.jsx)("thead",{className:"bg-emerald-50/30",children:(0,b.jsxs)("tr",{children:[(0,b.jsx)("th",{className:"px-4 py-3.5 w-10",children:(0,b.jsx)("input",{type:"checkbox",checked:r&&a.length>0,onChange:b=>{var c;s(c=b.target.checked),q(c?a.map(a=>a.id):[])},className:"w-4 h-4 rounded border-slate-300 text-emerald-600 focus:ring-emerald-500"})}),(0,b.jsx)("th",{className:"px-4 py-2.5 text-left text-xs font-semibold text-slate-600 uppercase tracking-wider",children:"时间"}),(0,b.jsx)("th",{className:"px-6 py-3.5 text-left text-xs font-semibold text-gray-700 uppercase tracking-wider",children:"模型"}),(0,b.jsx)("th",{className:"px-6 py-3.5 text-left text-xs font-semibold text-gray-700 uppercase tracking-wider",children:"方法"}),(0,b.jsx)("th",{className:"px-6 py-3.5 text-left text-xs font-semibold text-gray-700 uppercase tracking-wider",children:"路径"}),(0,b.jsx)("th",{className:"px-6 py-3.5 text-left text-xs font-semibold text-gray-700 uppercase tracking-wider",children:"状态"}),(0,b.jsx)("th",{className:"px-6 py-3.5 text-left text-xs font-semibold text-gray-700 uppercase tracking-wider",children:"响应时间"}),(0,b.jsx)("th",{className:"px-6 py-3.5 text-right text-xs font-semibold text-gray-700 uppercase tracking-wider",children:"操作"})]})}),(0,b.jsx)("tbody",{className:"bg-white divide-y divide-slate-100",children:0===a.length?(0,b.jsx)("tr",{children:(0,b.jsx)("td",{colSpan:8,className:"px-4 py-12 text-center",children:(0,b.jsxs)("div",{className:"text-slate-400",children:[(0,b.jsx)("svg",{className:"mx-auto h-10 w-10 mb-3 text-slate-300",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})}),(0,b.jsx)("p",{className:"text-xs text-slate-500",children:v?"未找到匹配的日志":"暂无日志记录"}),v&&(0,b.jsx)("button",{onClick:()=>{y(""),w("")},className:"mt-2 text-xs text-emerald-600 hover:text-emerald-700",children:"清除搜索"})]})})}):a.map(a=>{let c=((a,b)=>{try{let c=a?JSON.parse(a):{},d=(b?JSON.parse(b):{}).model||c.model;if(Array.isArray(d)){let a=d[d.length-1];if(a&&"object"==typeof a&&"model"in a)return a.model}return"string"==typeof d?d:null}catch{return null}})(a.request_query,a.request_body)||a.model_name||"Gateway";return(0,b.jsxs)("tr",{className:"hover:bg-emerald-50/20 transition-colors duration-300",children:[(0,b.jsx)("td",{className:"px-4 py-3",children:(0,b.jsx)("input",{type:"checkbox",checked:p.includes(a.id),onChange:b=>{var c;return c=a.id,void(b.target.checked?q([...p,c]):(q(p.filter(a=>a!==c)),s(!1)))},className:"w-4 h-4 rounded border-slate-300 text-emerald-600 focus:ring-emerald-500",onClick:a=>a.stopPropagation()})}),(0,b.jsx)("td",{className:"px-4 py-3 whitespace-nowrap",children:(0,b.jsx)("div",{className:"text-xs text-slate-600",children:function(a){if(!a||"string"!=typeof a)return"";let b=a.trim();if(!b)return"";let c=new Date(/[Z+-]\d{2}:?\d{2}$/.test(b)?b:b.replace(" ","T"));return Number.isNaN(c.getTime())?b:c.toLocaleString("zh-CN")}(a.created_at)})}),(0,b.jsx)("td",{className:"px-4 py-3 whitespace-nowrap",children:(0,b.jsxs)("div",{className:"text-xs",children:[(0,b.jsx)("div",{className:"font-medium text-slate-800",children:c}),a.provider_name&&(0,b.jsx)("div",{className:"text-[10px] text-slate-500",children:a.provider_name})]})}),(0,b.jsx)("td",{className:"px-4 py-3 whitespace-nowrap",children:(0,b.jsx)("span",{className:`px-2 py-0.5 inline-flex text-xs leading-4 font-semibold rounded-lg border ${"GET"===a.request_method?"bg-sky-50 text-sky-700 border-sky-200/50":"POST"===a.request_method?"bg-emerald-50 text-emerald-700 border-emerald-200/50":"bg-slate-50 text-slate-600 border-slate-200/50"}`,children:a.request_method})}),(0,b.jsx)("td",{className:"px-4 py-3",children:(0,b.jsx)("div",{className:"text-xs text-slate-600 font-mono max-w-xs truncate",children:a.request_path})}),(0,b.jsx)("td",{className:"px-4 py-3 whitespace-nowrap",children:(0,b.jsx)("span",{className:`px-2 py-0.5 inline-flex text-xs leading-4 font-semibold rounded-full border ${a.response_status>=200&&a.response_status<300?"bg-emerald-100/80 text-emerald-700 border-emerald-200/50":a.response_status>=400&&a.response_status<500?"bg-amber-100/80 text-amber-700 border-amber-200/50":a.response_status>=500?"bg-rose-100/80 text-rose-700 border-rose-200/50":"bg-slate-100/80 text-slate-600 border-slate-200/50"}`,children:a.response_status})}),(0,b.jsx)("td",{className:"px-4 py-3 whitespace-nowrap",children:(0,b.jsxs)("div",{className:"text-xs text-slate-600",children:[a.response_time_ms,"ms"]})}),(0,b.jsx)("td",{className:"px-4 py-3 whitespace-nowrap text-right text-xs font-medium",children:(0,b.jsx)("button",{onClick:()=>i(a),className:"text-emerald-600 hover:text-emerald-700 font-medium transition-colors duration-300",children:"查看详情"})})]},a.id)})})]})}),(0,b.jsxs)("div",{className:"mt-5 flex items-center justify-between",children:[(0,b.jsx)("div",{className:"text-xs text-slate-600",children:v?(0,b.jsxs)("span",{children:['搜索 "',(0,b.jsx)("span",{className:"font-semibold text-slate-800",children:v}),'" 找到 ',(0,b.jsx)("span",{className:"font-semibold text-slate-800",children:n})," 条结果"]}):(0,b.jsxs)("span",{children:["共 ",(0,b.jsx)("span",{className:"font-semibold text-slate-800",children:n})," 条记录"]})}),(0,b.jsxs)("div",{className:"flex space-x-2",children:[(0,b.jsx)("button",{onClick:()=>m(Math.max(0,l-1)),disabled:0===l,className:"px-3 py-1.5 border border-slate-200 rounded-lg text-xs font-medium text-slate-600 bg-white hover:bg-slate-50 disabled:opacity-50 disabled:cursor-not-allowed transition-all duration-300",children:"上一页"}),(0,b.jsx)("button",{onClick:()=>m(l+1),disabled:(l+1)*50>=n,className:"px-3 py-1.5 border border-slate-200 rounded-lg text-xs font-medium text-slate-600 bg-white hover:bg-slate-50 disabled:opacity-50 disabled:cursor-not-allowed transition-all duration-300",children:"下一页"})]})]})]})}),h&&(0,b.jsx)("div",{className:"fixed z-50 inset-0 overflow-y-auto",children:(0,b.jsxs)("div",{className:"flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,b.jsx)("div",{className:"fixed inset-0 bg-slate-900/40 backdrop-blur-sm transition-opacity",onClick:()=>i(null)}),(0,b.jsx)("div",{className:"inline-block align-bottom bg-white rounded-2xl text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-3xl sm:w-full border border-emerald-100/50",children:(0,b.jsxs)("div",{className:"bg-white px-6 pt-5 pb-4 sm:p-6",children:[(0,b.jsxs)("div",{className:"mb-5",children:[(0,b.jsx)("h3",{className:"text-base font-bold text-slate-800 mb-1",children:"请求详情"}),(0,b.jsx)("p",{className:"text-xs text-slate-500",children:"查看完整的请求和响应信息"})]}),(0,b.jsxs)("div",{className:"space-y-4 max-h-[60vh] overflow-y-auto",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,b.jsx)("h4",{className:"text-xs font-semibold text-slate-700",children:"请求头"}),(0,b.jsx)("button",{onClick:()=>A(F(h.request_headers)),className:"px-2 py-0.5 text-xs text-emerald-600 hover:text-emerald-700 font-medium transition-colors",children:"复制"})]}),(0,b.jsx)("pre",{className:"bg-slate-50/80 border border-slate-200 p-3 rounded-xl text-[10px] overflow-x-auto font-mono text-slate-700",children:F(h.request_headers)})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,b.jsx)("h4",{className:"text-xs font-semibold text-slate-700",children:"请求 Query"}),(0,b.jsx)("button",{onClick:()=>A(F(h.request_query)),className:"px-2 py-0.5 text-xs text-emerald-600 hover:text-emerald-700 font-medium transition-colors",children:"复制"})]}),(0,b.jsx)("pre",{className:"bg-slate-50/80 border border-slate-200 p-3 rounded-xl text-[10px] overflow-x-auto font-mono text-slate-700",children:F(h.request_query)})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,b.jsx)("h4",{className:"text-xs font-semibold text-slate-700",children:"请求 Body"}),(0,b.jsx)("button",{onClick:()=>A(F(h.request_body)),className:"px-2 py-0.5 text-xs text-emerald-600 hover:text-emerald-700 font-medium transition-colors",children:"复制"})]}),(0,b.jsx)("pre",{className:"bg-slate-50/80 border border-slate-200 p-3 rounded-xl text-[10px] overflow-x-auto font-mono text-slate-700",children:F(h.request_body)})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,b.jsx)("h4",{className:"text-xs font-semibold text-slate-700",children:"响应 Body"}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[h&&I(h.response_body)&&(0,b.jsx)("span",{className:"px-2 py-0.5 text-xs bg-indigo-100 text-indigo-700 rounded-full border border-indigo-200",children:"流式响应"}),(0,b.jsx)("button",{onClick:()=>A(G(h.response_body)),className:"px-2 py-0.5 text-xs text-emerald-600 hover:text-emerald-700 font-medium transition-colors",children:"复制"})]})]}),(0,b.jsx)("div",{className:"bg-slate-50/80 border border-slate-200 rounded-xl p-3 max-h-96 overflow-auto",children:(0,b.jsx)("pre",{className:"bg-slate-50/80 border border-slate-200 p-3 rounded-xl text-[10px] overflow-x-auto font-mono text-slate-700",children:G(h.response_body)})})]})]}),(0,b.jsx)("div",{className:"mt-5 flex justify-end",children:(0,b.jsx)("button",{type:"button",onClick:()=>i(null),className:"px-4 py-1.5 border border-slate-200 rounded-lg text-xs font-semibold text-slate-600 bg-white hover:bg-slate-50 focus:outline-none focus:ring-2 focus:ring-offset-1 focus:ring-slate-400/30 transition-all duration-300",children:"关闭"})})]})})]})}),t&&(0,b.jsx)(f.default,{open:t.open,title:t.title,message:t.message,onConfirm:t.onConfirm,onCancel:()=>u(null),type:"danger"})]})}a.s(["default",()=>g])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=src_app_logs_page_tsx_7b7b7b83._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[17291,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(81844),e=a.i(21215),f=a.i(71862);function g(){let a,[g,h]=(0,c.useState)([]),[i,j]=(0,c.useState)([]),[k,l]=(0,c.useState)([]),[m,n]=(0,c.useState)(!0),[o,p]=(0,c.useState)(!1),[q,r]=(0,c.useState)(!1),[s,t]=(0,c.useState)(!1),[u,v]=(0,c.useState)(null),[w,x]=(0,c.useState)(null),[y,z]=(0,c.useState)(null),[A,B]=(0,c.useState)(""),[C,D]=(0,c.useState)(1),[E,F]=(0,c.useState)(!1),[G,H]=(0,c.useState)({provider_id:"",name:"",model_id:"",enabled:!0}),{showToast:I}=(0,e.useToast)();(0,c.useEffect)(()=>{M()},[]);let J=(a=(C-1)*20,i.slice(a,a+20)),K=Math.ceil(i.length/20),L=(0,c.useCallback)(()=>{let a=[...g];if(null!==y&&(a=a.filter(a=>a.provider_id===y)),E&&(a=a.filter(a=>a.enabled)),A.trim()){let b=A.toLowerCase().trim();a=a.filter(a=>a.name.toLowerCase().includes(b)||a.model_id.toLowerCase().includes(b)||a.provider_name?.toLowerCase().includes(b)||a.provider_protocol?.toLowerCase().includes(b))}j(a)},[g,y,E,A]);(0,c.useEffect)(()=>{D(1)},[y,E,A]),(0,c.useEffect)(()=>{L()},[L]);let M=async()=>{try{let[a,b]=await Promise.all([fetch("/api/models"),fetch("/api/providers")]),c=await a.json(),d=await b.json();h(c),l(d)}catch(a){console.error("Failed to load data:",a)}finally{n(!1)}},N=async a=>{a.preventDefault();try{await fetch("/api/models",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...G,provider_id:parseInt(G.provider_id)})}),p(!1),H({provider_id:"",name:"",model_id:"",enabled:!0}),M(),I("模型添加成功","success")}catch(a){console.error("Failed to save model:",a),I("保存失败","error")}},O=async(a,b)=>{try{await fetch("/api/models",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a,enabled:!b})}),M()}catch(a){console.error("Failed to update model:",a)}},P=async()=>{if(u)try{await fetch(`/api/models?id=${u}`,{method:"DELETE"}),M(),I("模型已删除","success")}catch(a){console.error("Failed to delete model:",a),I("删除失败","error")}r(!1),v(null)},Q=async()=>{if(w)try{let a=await fetch("/api/models",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider_id:w})}),b=await a.json();if(!a.ok)return void I(b.error||"拉取失败","error");let c=b.count??0;I(`成功拉取 ${c} 个模型`,"success"),M()}catch(a){console.error("Failed to fetch models:",a),I("拉取失败: "+a.message,"error")}t(!1),x(null)};return m?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(d.default,{}),(0,b.jsx)("div",{className:"min-h-screen flex items-center justify-center",children:(0,b.jsx)("div",{className:"text-lg",children:"加载中..."})})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(d.default,{}),(0,b.jsx)("main",{className:"max-w-6xl mx-auto py-6 sm:px-6 lg:px-8",children:(0,b.jsxs)("div",{className:"px-4 py-4 sm:px-0",children:[(0,b.jsxs)("div",{className:"flex justify-between items-center mb-5",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h1",{className:"text-lg font-bold text-slate-800",children:"模型管理"}),(0,b.jsx)("p",{className:"text-xs text-slate-500 mt-1",children:"管理 AI 模型配置和状态"})]}),(0,b.jsxs)("button",{onClick:()=>{H({provider_id:"",name:"",model_id:"",enabled:!0}),p(!0)},className:"inline-flex items-center px-3.5 py-1.5 border border-transparent text-xs font-semibold rounded-lg shadow-sm text-white bg-emerald-600 hover:bg-emerald-700 focus:outline-none focus:ring-2 focus:ring-offset-1 focus:ring-emerald-500/50 transition-all duration-300",children:[(0,b.jsx)("svg",{className:"w-3.5 h-3.5 mr-1.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 4v16m8-8H4"})}),"手动添加"]})]}),(0,b.jsxs)("div",{className:"mb-5 bg-white/70 backdrop-blur-sm shadow-md rounded-2xl border border-emerald-100/50 p-5",children:[(0,b.jsx)("div",{className:"flex items-center justify-between mb-4",children:(0,b.jsxs)("div",{children:[(0,b.jsx)("h2",{className:"text-sm font-bold text-slate-800",children:"快捷拉取"}),(0,b.jsx)("p",{className:"text-xs text-slate-500 mt-0.5",children:"从供应商 API 自动拉取可用模型"})]})}),(0,b.jsx)("div",{className:"grid grid-cols-1 gap-2.5 sm:grid-cols-2 lg:grid-cols-3",children:k.map(a=>(0,b.jsxs)("div",{className:"flex items-center justify-between p-3 border border-slate-200 rounded-xl hover:border-emerald-300 hover:shadow-sm transition-all duration-300 cursor-pointer bg-white/80 backdrop-blur-sm",children:[(0,b.jsxs)("div",{className:"flex-1",children:[(0,b.jsx)("div",{className:"font-semibold text-xs text-slate-800",children:a.name}),(0,b.jsx)("div",{className:"text-[10px] text-slate-500 mt-0.5",children:a.protocol})]}),(0,b.jsxs)("button",{onClick:()=>{x(a.id),t(!0)},className:"ml-3 inline-flex items-center px-2.5 py-1 border border-transparent text-[10px] font-semibold rounded-lg text-emerald-700 bg-emerald-50 hover:bg-emerald-100 transition-all duration-300",children:[(0,b.jsx)("svg",{className:"w-3 h-3 mr-1",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),"拉取"]})]},a.id))})]}),(0,b.jsxs)("div",{className:"mb-5 bg-white/70 backdrop-blur-sm shadow-md rounded-2xl border border-emerald-100/50 p-5",children:[(0,b.jsxs)("div",{className:"flex flex-col sm:flex-row gap-4",children:[(0,b.jsxs)("div",{className:"flex-1",children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-700 mb-1.5",children:"按供应商筛选"}),(0,b.jsxs)("select",{value:y??"",onChange:a=>z(a.target.value?parseInt(a.target.value):null),className:"block w-full rounded-lg border border-slate-200 bg-white/80 px-3 py-2 text-xs shadow-sm transition-all duration-300 focus:border-emerald-400 focus:ring-2 focus:ring-emerald-400/20 focus:ring-offset-1",children:[(0,b.jsx)("option",{value:"",children:"全部供应商"}),k.map(a=>(0,b.jsxs)("option",{value:a.id,children:[a.name," (",a.protocol,")"]},a.id))]})]}),(0,b.jsxs)("div",{className:"flex-1",children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-700 mb-1.5",children:"搜索模型"}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)("input",{type:"text",value:A,onChange:a=>B(a.target.value),placeholder:"搜索模型名称、ID、供应商...",className:"block w-full rounded-lg border border-slate-200 bg-white/80 px-3 py-2 pl-9 text-xs shadow-sm transition-all duration-300 focus:border-emerald-400 focus:ring-2 focus:ring-emerald-400/20 focus:ring-offset-1"}),(0,b.jsx)("svg",{className:"absolute left-2.5 top-1/2 -translate-y-1/2 w-4 h-4 text-slate-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})}),A&&(0,b.jsx)("button",{onClick:()=>B(""),className:"absolute right-2 top-1/2 -translate-y-1/2 p-1 text-slate-400 hover:text-slate-600 transition-colors",children:(0,b.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]})]}),(0,b.jsx)("div",{className:"flex items-center",children:(0,b.jsxs)("label",{className:"flex items-center cursor-pointer",children:[(0,b.jsx)("input",{type:"checkbox",checked:E,onChange:a=>F(a.target.checked),className:"w-4 h-4 text-emerald-600 border-slate-300 rounded focus:ring-emerald-500 transition-all duration-300"}),(0,b.jsx)("span",{className:"ml-2 text-xs font-semibold text-slate-700",children:"仅已启用"})]})})]}),(null!==y||A.trim()||E)&&(0,b.jsxs)("div",{className:"mt-3 text-xs text-slate-500",children:["显示 ",i.length," 个模型,第 ",(C-1)*20+1,"-",Math.min(20*C,i.length)," 个"]})]}),(0,b.jsxs)("div",{className:"bg-white/70 backdrop-blur-sm shadow-md rounded-2xl border border-emerald-100/50 overflow-hidden",children:[(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:"min-w-full divide-y divide-slate-100",children:[(0,b.jsx)("thead",{className:"bg-emerald-50/30",children:(0,b.jsxs)("tr",{children:[(0,b.jsx)("th",{className:"px-4 py-2.5 text-left text-xs font-semibold text-slate-600 uppercase tracking-wider",children:"名称"}),(0,b.jsx)("th",{className:"px-6 py-3.5 text-left text-xs font-semibold text-gray-700 uppercase tracking-wider",children:"模型 ID"}),(0,b.jsx)("th",{className:"px-6 py-3.5 text-left text-xs font-semibold text-gray-700 uppercase tracking-wider",children:"供应商"}),(0,b.jsx)("th",{className:"px-6 py-3.5 text-left text-xs font-semibold text-gray-700 uppercase tracking-wider",children:"状态"}),(0,b.jsx)("th",{className:"px-6 py-3.5 text-right text-xs font-semibold text-gray-700 uppercase tracking-wider",children:"操作"})]})}),(0,b.jsx)("tbody",{className:"bg-white divide-y divide-slate-100",children:0===J.length?(0,b.jsx)("tr",{children:(0,b.jsx)("td",{colSpan:5,className:"px-4 py-12 text-center",children:(0,b.jsx)("div",{className:"text-slate-400",children:0===g.length?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("svg",{className:"mx-auto h-10 w-10 mb-3 text-slate-300",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M20 13V6a2 2 0 00-2-2H6a2 2 0 00-2 2v7m16 0v5a2 2 0 01-2 2H6a2 2 0 01-2-2v-5m16 0h-2.586a1 1 0 00-.707.293l-2.414 2.414a1 1 0 01-.707.293h-3.172a1 1 0 01-.707-.293l-2.414-2.414A1 1 0 006.586 13H4"})}),(0,b.jsx)("p",{className:"text-xs text-slate-500",children:"暂无模型,请先添加或拉取模型"})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("svg",{className:"mx-auto h-10 w-10 mb-3 text-slate-300",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})}),(0,b.jsx)("p",{className:"text-xs text-slate-500",children:"没有找到匹配的模型"}),(null!==y||A.trim()||E)&&(0,b.jsx)("button",{onClick:()=>{z(null),B(""),F(!1)},className:"mt-2 text-xs text-emerald-600 hover:text-emerald-700 underline",children:"清除筛选条件"})]})})})}):J.map(a=>(0,b.jsxs)("tr",{className:"hover:bg-emerald-50/20 transition-colors duration-300",children:[(0,b.jsx)("td",{className:"px-4 py-3 whitespace-nowrap",children:(0,b.jsx)("div",{className:"text-xs font-medium text-slate-800",children:a.name})}),(0,b.jsx)("td",{className:"px-4 py-3 whitespace-nowrap",children:(0,b.jsx)("div",{className:"text-xs text-slate-600 font-mono",children:a.model_id})}),(0,b.jsx)("td",{className:"px-4 py-3 whitespace-nowrap",children:(0,b.jsxs)("div",{className:"text-xs text-slate-600",children:[(0,b.jsx)("span",{className:"font-medium",children:a.provider_name}),(0,b.jsxs)("span",{className:"text-slate-400 ml-1",children:["(",a.provider_protocol,")"]})]})}),(0,b.jsx)("td",{className:"px-4 py-3 whitespace-nowrap",children:(0,b.jsx)("span",{className:`px-2 py-0.5 inline-flex text-xs leading-4 font-semibold rounded-full border ${a.enabled?"bg-emerald-100/80 text-emerald-700 border-emerald-200/50":"bg-slate-100/80 text-slate-600 border-slate-200/50"}`,children:a.enabled?"启用":"禁用"})}),(0,b.jsx)("td",{className:"px-4 py-3 whitespace-nowrap text-right text-xs font-medium",children:(0,b.jsxs)("div",{className:"flex items-center justify-end space-x-3",children:[(0,b.jsx)("button",{onClick:()=>O(a.id,a.enabled),className:"text-emerald-600 hover:text-emerald-700 font-medium transition-colors duration-300",children:a.enabled?"禁用":"启用"}),(0,b.jsx)("button",{onClick:()=>{v(a.id),r(!0)},className:"text-rose-500 hover:text-rose-600 font-medium transition-colors duration-300",children:"删除"})]})})]},a.id))})]})}),K>1&&(0,b.jsxs)("div",{className:"mt-4 flex items-center justify-between px-4 py-3 bg-emerald-50/20 border-t border-emerald-100/50",children:[(0,b.jsxs)("div",{className:"text-xs text-slate-600",children:["第 ",(0,b.jsx)("span",{className:"font-semibold text-slate-800",children:C})," / ",K," 页"]}),(0,b.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,b.jsx)("button",{onClick:()=>D(a=>Math.max(1,a-1)),disabled:1===C,className:"px-3 py-1.5 border border-slate-200 rounded-lg text-xs font-semibold text-slate-600 bg-white hover:bg-emerald-50 disabled:opacity-50 disabled:cursor-not-allowed transition-all duration-300",children:"上一页"}),(0,b.jsx)("div",{className:"flex items-center space-x-1",children:Array.from({length:K},(a,b)=>b+1).filter(a=>2>Math.abs(a-C)||1===a||a===K).sort((a,b)=>a-b).map(a=>(0,b.jsx)("button",{onClick:()=>D(a),className:`w-8 h-8 font-semibold text-xs rounded-lg transition-all duration-300 ${C===a?"bg-emerald-600 text-white shadow-md":"bg-white text-slate-600 border border-slate-200 hover:bg-emerald-50 hover:border-emerald-300"}`,children:a},a))}),(0,b.jsx)("button",{onClick:()=>D(a=>Math.min(K,a+1)),disabled:C===K,className:"px-3 py-1.5 border border-slate-200 rounded-lg text-xs font-semibold text-slate-600 bg-white hover:bg-emerald-50 disabled:opacity-50 disabled:cursor-not-allowed transition-all duration-300",children:"下一页"})]})]})]})]})}),o&&(0,b.jsx)("div",{className:"fixed z-50 inset-0 overflow-y-auto",children:(0,b.jsxs)("div",{className:"flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,b.jsx)("div",{className:"fixed inset-0 bg-slate-900/40 backdrop-blur-sm transition-opacity",onClick:()=>p(!1)}),(0,b.jsx)("div",{className:"inline-block align-bottom bg-white rounded-2xl text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-md sm:w-full border border-emerald-100/50",children:(0,b.jsxs)("form",{onSubmit:N,className:"bg-white px-6 pt-5 pb-4 sm:p-6",children:[(0,b.jsxs)("div",{className:"mb-5",children:[(0,b.jsx)("h3",{className:"text-base font-bold text-slate-800 mb-1",children:"添加模型"}),(0,b.jsx)("p",{className:"text-xs text-slate-500",children:"手动添加新的 AI 模型"})]}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-700 mb-1.5",children:"供应商"}),(0,b.jsxs)("select",{required:!0,value:G.provider_id,onChange:a=>H({...G,provider_id:a.target.value}),autoComplete:"off",className:"block w-full rounded-lg border border-slate-200 bg-white/80 px-3 py-2 text-xs shadow-sm transition-all duration-300 focus:border-emerald-400 focus:ring-2 focus:ring-emerald-400/20 focus:ring-offset-1",children:[(0,b.jsx)("option",{value:"",children:"选择供应商"}),k.map(a=>(0,b.jsx)("option",{value:a.id,children:a.name},a.id))]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-700 mb-1.5",children:"名称"}),(0,b.jsx)("input",{type:"text",required:!0,value:G.name,onChange:a=>H({...G,name:a.target.value}),autoComplete:"off",className:"block w-full rounded-lg border border-slate-200 bg-white/80 px-3 py-2 text-xs shadow-sm transition-all duration-300 focus:border-emerald-400 focus:ring-2 focus:ring-emerald-400/20 focus:ring-offset-1",placeholder:"例如: GPT-4"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-700 mb-1.5",children:"模型 ID"}),(0,b.jsx)("input",{type:"text",required:!0,value:G.model_id,onChange:a=>H({...G,model_id:a.target.value}),autoComplete:"off",className:"block w-full rounded-lg border border-slate-200 bg-white/80 px-3 py-2 text-xs shadow-sm transition-all duration-300 focus:border-emerald-400 focus:ring-2 focus:ring-emerald-400/20 focus:ring-offset-1",placeholder:"例如: gpt-4"})]})]}),(0,b.jsxs)("div",{className:"mt-5 flex items-center justify-end space-x-2",children:[(0,b.jsx)("button",{type:"button",onClick:()=>p(!1),className:"px-3.5 py-1.5 border border-slate-200 rounded-lg text-xs font-semibold text-slate-600 bg-white hover:bg-slate-50 focus:outline-none focus:ring-2 focus:ring-offset-1 focus:ring-slate-400/30 transition-all duration-300",children:"取消"}),(0,b.jsx)("button",{type:"submit",className:"px-4 py-1.5 border border-transparent rounded-lg text-xs font-semibold text-white bg-emerald-600 hover:bg-emerald-700 focus:outline-none focus:ring-2 focus:ring-offset-1 focus:ring-emerald-500/50 transition-all duration-300",children:"保存"})]})]})})]})}),(0,b.jsx)(f.default,{open:q,title:"确认删除",message:"确定要删除这个模型吗?此操作不可恢复。",onConfirm:P,onCancel:()=>{r(!1),v(null)},confirmText:"删除",cancelText:"取消",type:"danger"}),(0,b.jsx)(f.default,{open:s,title:"拉取模型列表",message:"确定要从供应商拉取模型列表吗?",onConfirm:Q,onCancel:()=>{t(!1),x(null)},confirmText:"拉取",cancelText:"取消",type:"info"})]})}a.s(["default",()=>g])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=src_app_models_page_tsx_ed71d32e._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[40835,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(81844),e=a.i(21215),f=a.i(71862);function g(){let[a,g]=(0,c.useState)([]),[h,i]=(0,c.useState)([]),[j,k]=(0,c.useState)(!0),[l,m]=(0,c.useState)(!1),[n,o]=(0,c.useState)(null),[p,q]=(0,c.useState)(!1),[r,s]=(0,c.useState)(null),[t,u]=(0,c.useState)(null),[v,w]=(0,c.useState)(""),[x,y]=(0,c.useState)(!1),[z,A]=(0,c.useState)(""),[B,C]=(0,c.useState)({name:"",protocol:"openai",base_url:"",api_key:""}),[D,E]=(0,c.useState)(!1),{showToast:F}=(0,e.useToast)();(0,c.useEffect)(()=>{G(),H()},[]);let G=async()=>{try{let a=await fetch("/api/providers"),b=await a.json();g(b)}catch(a){console.error("Failed to load providers:",a)}finally{k(!1)}},H=async()=>{try{let a=await fetch("/api/models"),b=await a.json();i(b)}catch(a){console.error("Failed to load models:",a)}},I=async a=>{try{let b=await fetch(`/api/providers?id=${a}&includeKey=true`);if(!b.ok)throw Error("Failed to load provider");return await b.json()}catch(a){throw console.error("Failed to load provider for edit:",a),a}},J=async a=>{a.preventDefault();try{let a;if(n){let b={id:n.id,name:B.name,protocol:B.protocol,base_url:B.base_url};B.api_key&&""!==B.api_key.trim()&&(b.api_key=B.api_key.trim()),a=await fetch("/api/providers",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)})}else{if(!B.api_key||""===B.api_key.trim())return void F("API Key 不能为空","error");a=await fetch("/api/providers",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...B,api_key:B.api_key.trim()})})}if(!a.ok){let b=(await a.json().catch(()=>({}))).error||"保存失败";F(b,"error");return}m(!1),o(null),C({name:"",protocol:"openai",base_url:"",api_key:""}),E(!1),G(),F("供应商保存成功","success")}catch(a){console.error("Failed to save provider:",a),F("保存失败: "+(a.message||"未知错误"),"error")}},K=async a=>{try{let b=await I(a.id);o(a),C({name:b.name,protocol:b.protocol,base_url:b.base_url,api_key:b.api_key||""}),E(!1),m(!0)}catch(a){console.error("Failed to load provider for edit:",a),F("加载供应商信息失败","error")}},L=async()=>{if(r)try{await fetch(`/api/providers?id=${r}`,{method:"DELETE"}),G(),F("供应商已删除","success")}catch(a){console.error("Failed to delete provider:",a),F("删除失败","error")}q(!1),s(null)},M=async()=>{if(!t||!v)return void F("请选择要测试的模型","error");y(!0);try{let a=await fetch("/api/providers/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider_id:t,model_id:parseInt(v)})}),b=await a.json();b.success?F(b.message||"连接成功,模型可用","success"):F(b.error||"连接失败","error")}catch(a){console.error("Failed to test connection:",a),F("测试连接失败: "+(a.message||"未知错误"),"error")}finally{y(!1),w("")}},N=()=>{u(null),w(""),A("")},O=a=>{let b=h.filter(b=>b.provider_id===a&&b.enabled);if(!z.trim())return b;let c=z.toLowerCase().trim();return b.filter(a=>a.name.toLowerCase().includes(c)||a.model_id.toLowerCase().includes(c))};return j?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(d.default,{}),(0,b.jsx)("div",{className:"min-h-screen flex items-center justify-center",children:(0,b.jsx)("div",{className:"text-lg",children:"加载中..."})})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(d.default,{}),(0,b.jsx)("main",{className:"max-w-6xl mx-auto py-6 sm:px-6 lg:px-8",children:(0,b.jsxs)("div",{className:"px-4 py-4 sm:px-0",children:[(0,b.jsxs)("div",{className:"flex justify-between items-center mb-5",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h1",{className:"text-lg font-bold text-slate-800",children:"供应商管理"}),(0,b.jsx)("p",{className:"text-xs text-slate-500 mt-1",children:"管理 AI 模型供应商配置"})]}),(0,b.jsxs)("button",{onClick:()=>{o(null),C({name:"",protocol:"openai",base_url:"",api_key:""}),E(!1),m(!0)},className:"inline-flex items-center px-3.5 py-1.5 border border-transparent text-xs font-semibold rounded-lg shadow-sm text-white bg-emerald-600 hover:bg-emerald-700 focus:outline-none focus:ring-2 focus:ring-offset-1 focus:ring-emerald-500/50 transition-all duration-300",children:[(0,b.jsx)("svg",{className:"w-3.5 h-3.5 mr-1.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 4v16m8-8H4"})}),"添加供应商"]})]}),(0,b.jsx)("div",{className:"bg-white/70 backdrop-blur-sm shadow-md rounded-2xl border border-emerald-100/50 overflow-hidden",children:(0,b.jsxs)("table",{className:"min-w-full divide-y divide-slate-100",children:[(0,b.jsx)("thead",{className:"bg-emerald-50/30",children:(0,b.jsxs)("tr",{children:[(0,b.jsx)("th",{className:"px-4 py-2.5 text-left text-xs font-semibold text-slate-600 uppercase tracking-wider",children:"名称"}),(0,b.jsx)("th",{className:"px-6 py-4 text-left text-xs font-semibold text-slate-600 uppercase tracking-wider",children:"协议"}),(0,b.jsx)("th",{className:"px-6 py-4 text-left text-xs font-semibold text-slate-600 uppercase tracking-wider",children:"Base URL"}),(0,b.jsx)("th",{className:"px-6 py-3.5 text-right text-xs font-semibold text-gray-700 uppercase tracking-wider",children:"操作"})]})}),(0,b.jsx)("tbody",{className:"bg-white divide-y divide-slate-100",children:0===a.length?(0,b.jsx)("tr",{children:(0,b.jsx)("td",{colSpan:4,className:"px-4 py-12 text-center",children:(0,b.jsxs)("div",{className:"text-slate-400",children:[(0,b.jsx)("svg",{className:"mx-auto h-10 w-10 mb-3 text-slate-300",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"})}),(0,b.jsx)("p",{className:"text-xs text-slate-500",children:"暂无供应商,请先添加供应商"})]})})}):a.map(a=>(0,b.jsxs)("tr",{className:"hover:bg-emerald-50/20 transition-colors duration-300",children:[(0,b.jsx)("td",{className:"px-4 py-3 whitespace-nowrap",children:(0,b.jsx)("div",{className:"text-xs font-medium text-slate-800",children:a.name})}),(0,b.jsx)("td",{className:"px-4 py-3 whitespace-nowrap",children:(0,b.jsx)("span",{className:"px-2 py-0.5 inline-flex text-xs leading-4 font-semibold rounded-full bg-emerald-100/80 text-emerald-700 border border-emerald-200/50",children:a.protocol})}),(0,b.jsx)("td",{className:"px-4 py-3 whitespace-nowrap",children:(0,b.jsx)("div",{className:"text-xs text-slate-600 font-mono",children:a.base_url})}),(0,b.jsx)("td",{className:"px-4 py-3 whitespace-nowrap text-right text-xs font-medium",children:(0,b.jsxs)("div",{className:"flex items-center justify-end space-x-3",children:[(0,b.jsx)("button",{onClick:()=>{var b;return b=a.id,void(0===h.filter(a=>a.provider_id===b).length?F("该供应商下没有模型,请先添加或拉取模型","error"):(u(b),w(""),A("")))},className:"text-blue-600 hover:text-blue-700 font-medium transition-colors duration-300",children:"测试连接"}),(0,b.jsx)("button",{onClick:()=>K(a),className:"text-emerald-600 hover:text-emerald-700 font-medium transition-colors duration-300",children:"编辑"}),(0,b.jsx)("button",{onClick:()=>{s(a.id),q(!0)},className:"text-rose-500 hover:text-rose-600 font-medium transition-colors duration-300",children:"删除"})]})})]},a.id))})]})})]})}),l&&(0,b.jsx)("div",{className:"fixed z-50 inset-0 overflow-y-auto",children:(0,b.jsxs)("div",{className:"flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,b.jsx)("div",{className:"fixed inset-0 bg-slate-900/40 backdrop-blur-sm transition-opacity",onClick:()=>m(!1)}),(0,b.jsx)("div",{className:"inline-block align-bottom bg-white rounded-2xl text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-md sm:w-full border border-emerald-100/50",children:(0,b.jsxs)("form",{onSubmit:J,className:"bg-white px-6 pt-5 pb-4 sm:p-6",children:[(0,b.jsxs)("div",{className:"mb-5",children:[(0,b.jsx)("h3",{className:"text-base font-bold text-slate-800 mb-1",children:n?"编辑供应商":"添加供应商"}),(0,b.jsx)("p",{className:"text-xs text-slate-500",children:"配置 AI 模型供应商信息"})]}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-700 mb-1.5",children:"名称"}),(0,b.jsx)("input",{type:"text",required:!0,value:B.name,onChange:a=>C({...B,name:a.target.value}),autoComplete:"off",className:"block w-full rounded-lg border border-slate-200 bg-white/80 px-3 py-2 text-xs shadow-sm transition-all duration-300 focus:border-emerald-400 focus:ring-2 focus:ring-emerald-400/20 focus:ring-offset-1",placeholder:"例如: OpenAI"})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-700 mb-1.5",children:"协议"}),(0,b.jsxs)("select",{value:B.protocol,onChange:a=>C({...B,protocol:a.target.value}),autoComplete:"off",className:"block w-full rounded-lg border border-slate-200 bg-white/80 px-3 py-2 text-xs shadow-sm transition-all duration-300 focus:border-emerald-400 focus:ring-2 focus:ring-emerald-400/20 focus:ring-offset-1",children:[(0,b.jsx)("option",{value:"openai",children:"OpenAI"}),(0,b.jsx)("option",{value:"anthropic",children:"Anthropic"}),(0,b.jsx)("option",{value:"gemini",children:"Gemini"})]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-700 mb-1.5",children:"Base URL"}),(0,b.jsx)("input",{type:"url",required:!0,value:B.base_url,onChange:a=>C({...B,base_url:a.target.value}),autoComplete:"off",className:"block w-full rounded-lg border border-slate-200 bg-white/80 px-3 py-2 text-xs shadow-sm transition-all duration-300 focus:border-emerald-400 focus:ring-2 focus:ring-emerald-400/20 focus:ring-offset-1",placeholder:"https://api.openai.com/v1"})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("label",{className:"block text-xs font-semibold text-slate-700 mb-1.5",children:["API Key",n&&(0,b.jsx)("span",{className:"ml-1 text-[10px] text-slate-400 font-normal",children:"(已保存,输入新值可更新)"})]}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)("input",{type:D?"text":"password",required:!n,value:B.api_key,onChange:a=>C({...B,api_key:a.target.value}),autoComplete:"new-password",className:"block w-full rounded-lg border border-slate-200 bg-white/80 px-3 py-2 pr-9 text-xs shadow-sm transition-all duration-300 focus:border-emerald-400 focus:ring-2 focus:ring-emerald-400/20 focus:ring-offset-1",placeholder:n?"留空则不更新,输入新值可更新 API Key":"输入 API Key"}),(0,b.jsx)("button",{type:"button",onClick:()=>E(!D),className:"absolute right-2 top-1/2 -translate-y-1/2 p-1 text-slate-400 hover:text-slate-600 transition-colors",tabIndex:-1,children:D?(0,b.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21"})}):(0,b.jsxs)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:[(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})]})})]})]})]}),(0,b.jsxs)("div",{className:"mt-5 flex items-center justify-end space-x-2",children:[(0,b.jsx)("button",{type:"button",onClick:()=>{m(!1),o(null)},className:"px-3.5 py-1.5 border border-slate-200 rounded-lg text-xs font-semibold text-slate-600 bg-white hover:bg-slate-50 focus:outline-none focus:ring-2 focus:ring-offset-1 focus:ring-slate-400/30 transition-all duration-300",children:"取消"}),(0,b.jsx)("button",{type:"submit",className:"px-4 py-1.5 border border-transparent rounded-lg text-xs font-semibold text-white bg-emerald-600 hover:bg-emerald-700 focus:outline-none focus:ring-2 focus:ring-offset-1 focus:ring-emerald-500/50 transition-all duration-300",children:"保存"})]})]})})]})}),(0,b.jsx)(f.default,{open:p,title:"确认删除",message:"确定要删除这个供应商吗?此操作不可恢复。",onConfirm:L,onCancel:()=>{q(!1),s(null)},confirmText:"删除",cancelText:"取消",type:"danger"}),t&&(0,b.jsx)("div",{className:"fixed z-50 inset-0 overflow-y-auto",children:(0,b.jsxs)("div",{className:"flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,b.jsx)("div",{className:"fixed inset-0 bg-slate-900/40 backdrop-blur-sm transition-opacity",onClick:N}),(0,b.jsx)("div",{className:"inline-block align-bottom bg-white rounded-2xl text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-md sm:w-full border border-emerald-100/50",children:(0,b.jsxs)("div",{className:"bg-white px-6 pt-5 pb-4 sm:p-6",children:[(0,b.jsxs)("div",{className:"mb-5",children:[(0,b.jsx)("h3",{className:"text-base font-bold text-slate-800 mb-1",children:"测试连接"}),(0,b.jsx)("p",{className:"text-xs text-slate-500",children:"选择一个模型进行连接测试"})]}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("label",{className:"block text-xs font-semibold text-slate-700 mb-1.5",children:"搜索模型"}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)("input",{type:"text",value:z,onChange:a=>A(a.target.value),disabled:x,autoComplete:"off",className:"block w-full rounded-lg border border-slate-200 bg-white/80 pl-9 pr-3 py-2 text-xs shadow-sm transition-all duration-300 focus:border-emerald-400 focus:ring-2 focus:ring-emerald-400/20 focus:ring-offset-1 disabled:opacity-50 disabled:cursor-not-allowed",placeholder:"输入模型名称或ID进行搜索..."}),(0,b.jsx)("svg",{className:"absolute left-3 top-1/2 -translate-y-1/2 w-3.5 h-3.5 text-slate-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})})]})]}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("label",{className:"block text-xs font-semibold text-slate-700 mb-1.5",children:["选择模型",O(t).length>0&&(0,b.jsxs)("span",{className:"ml-2 text-[10px] text-slate-400 font-normal",children:["(共 ",O(t).length," 个模型)"]})]}),(0,b.jsx)("div",{className:"border border-slate-200 rounded-lg bg-white/80 overflow-hidden",children:(0,b.jsx)("div",{className:"max-h-[240px] overflow-y-auto scrollbar-thin scrollbar-thumb-slate-300 scrollbar-track-slate-100",children:0===O(t).length?(0,b.jsx)("div",{className:"px-3 py-6 text-center",children:(0,b.jsx)("p",{className:"text-xs text-slate-400",children:"没有找到可用的模型"})}):O(t).map(a=>(0,b.jsxs)("button",{type:"button",onClick:()=>w(a.id.toString()),disabled:x,className:`w-full text-left px-3 py-2.5 text-xs font-medium border-b border-slate-100 last:border-0 hover:bg-emerald-50/50 transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed ${v===a.id.toString()?"bg-emerald-100/50 text-emerald-700":"text-slate-700"}`,children:[(0,b.jsx)("div",{children:a.name}),(0,b.jsx)("div",{className:"text-[10px] text-slate-400 mt-0.5",children:a.model_id})]},a.id))})})]})]}),(0,b.jsxs)("div",{className:"mt-5 flex items-center justify-end space-x-2",children:[(0,b.jsx)("button",{type:"button",onClick:N,disabled:x,className:"px-3.5 py-1.5 border border-slate-200 rounded-lg text-xs font-semibold text-slate-600 bg-white hover:bg-slate-50 focus:outline-none focus:ring-2 focus:ring-offset-1 focus:ring-slate-400/30 transition-all duration-300 disabled:opacity-50 disabled:cursor-not-allowed",children:"取消"}),(0,b.jsx)("button",{type:"button",onClick:M,disabled:x||!v,className:"px-4 py-1.5 border border-transparent rounded-lg text-xs font-semibold text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-1 focus:ring-blue-500/50 transition-all duration-300 disabled:opacity-50 disabled:cursor-not-allowed inline-flex items-center",children:x?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("svg",{className:"animate-spin -ml-1 mr-2 h-3 w-3 text-white",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[(0,b.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,b.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),"测试中..."]}):"开始测试"})]})]})})]})})]})}a.s(["default",()=>g])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=src_app_providers_page_tsx_eb8b5137._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
[]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,33525,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return s}});let s=e=>{}},98183,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var s={assign:function(){return i},searchParamsToUrlQuery:function(){return l},urlQueryToSearchParams:function(){return o}};for(var n in s)Object.defineProperty(r,n,{enumerable:!0,get:s[n]});function l(e){let t={};for(let[r,s]of e.entries()){let e=t[r];void 0===e?t[r]=s:Array.isArray(e)?e.push(s):t[r]=[e,s]}return t}function a(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function o(e){let t=new URLSearchParams;for(let[r,s]of Object.entries(e))if(Array.isArray(s))for(let e of s)t.append(r,a(e));else t.set(r,a(s));return t}function i(e,...t){for(let r of t){for(let t of r.keys())e.delete(t);for(let[t,s]of r.entries())e.append(t,s)}return e}},95057,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var s={formatUrl:function(){return o},formatWithValidation:function(){return d},urlObjectKeys:function(){return i}};for(var n in s)Object.defineProperty(r,n,{enumerable:!0,get:s[n]});let l=e.r(90809)._(e.r(98183)),a=/https?|ftp|gopher|file/;function o(e){let{auth:t,hostname:r}=e,s=e.protocol||"",n=e.pathname||"",o=e.hash||"",i=e.query||"",d=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?d=t+e.host:r&&(d=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(d+=":"+e.port)),i&&"object"==typeof i&&(i=String(l.urlQueryToSearchParams(i)));let c=e.search||i&&`?${i}`||"";return s&&!s.endsWith(":")&&(s+=":"),e.slashes||(!s||a.test(s))&&!1!==d?(d="//"+(d||""),n&&"/"!==n[0]&&(n="/"+n)):d||(d=""),o&&"#"!==o[0]&&(o="#"+o),c&&"?"!==c[0]&&(c="?"+c),n=n.replace(/[?#]/g,encodeURIComponent),c=c.replace("#","%23"),`${s}${d}${n}${c}${o}`}let i=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function d(e){return o(e)}},18581,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return n}});let s=e.r(71645);function n(e,t){let r=(0,s.useRef)(null),n=(0,s.useRef)(null);return(0,s.useCallback)(s=>{if(null===s){let e=r.current;e&&(r.current=null,e());let t=n.current;t&&(n.current=null,t())}else e&&(r.current=l(e,s)),t&&(n.current=l(t,s))},[e,t])}function l(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},18967,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var s={DecodeError:function(){return b},MiddlewareNotFoundError:function(){return y},MissingStaticPage:function(){return v},NormalizeError:function(){return g},PageNotFoundError:function(){return j},SP:function(){return h},ST:function(){return p},WEB_VITALS:function(){return l},execOnce:function(){return a},getDisplayName:function(){return u},getLocationOrigin:function(){return d},getURL:function(){return c},isAbsoluteUrl:function(){return i},isResSent:function(){return m},loadGetInitialProps:function(){return f},normalizeRepeatedSlashes:function(){return x},stringifyError:function(){return N}};for(var n in s)Object.defineProperty(r,n,{enumerable:!0,get:s[n]});let l=["CLS","FCP","FID","INP","LCP","TTFB"];function a(e){let t,r=!1;return(...s)=>(r||(r=!0,t=e(...s)),t)}let o=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,i=e=>o.test(e);function d(){let{protocol:e,hostname:t,port:r}=window.location;return`${e}//${t}${r?":"+r:""}`}function c(){let{href:e}=window.location,t=d();return e.substring(t.length)}function u(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function m(e){return e.finished||e.headersSent}function x(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?`?${t.slice(1).join("?")}`:"")}async function f(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await f(t.Component,t.ctx)}:{};let s=await e.getInitialProps(t);if(r&&m(r))return s;if(!s)throw Object.defineProperty(Error(`"${u(e)}.getInitialProps()" should resolve to an object. But found "${s}" instead.`),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return s}let h="u">typeof performance,p=h&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class b extends Error{}class g extends Error{}class j extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class v extends Error{constructor(e,t){super(),this.message=`Failed to load static file for page: ${e} ${t}`}}class y extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function N(e){return JSON.stringify({message:e.message,stack:e.stack})}},73668,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return l}});let s=e.r(18967),n=e.r(52817);function l(e){if(!(0,s.isAbsoluteUrl)(e))return!0;try{let t=(0,s.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,n.hasBasePath)(r.pathname)}catch(e){return!1}}},84508,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return s}});let s=e=>{}},22016,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var s={default:function(){return b},useLinkStatus:function(){return j}};for(var n in s)Object.defineProperty(r,n,{enumerable:!0,get:s[n]});let l=e.r(90809),a=e.r(43476),o=l._(e.r(71645)),i=e.r(95057),d=e.r(8372),c=e.r(18581),u=e.r(18967),m=e.r(5550);e.r(33525);let x=e.r(91949),f=e.r(73668),h=e.r(9396);function p(e){return"string"==typeof e?e:(0,i.formatUrl)(e)}function b(t){var r;let s,n,l,[i,b]=(0,o.useOptimistic)(x.IDLE_LINK_STATUS),j=(0,o.useRef)(null),{href:v,as:y,children:N,prefetch:w=null,passHref:k,replace:C,shallow:_,scroll:P,onClick:S,onMouseEnter:E,onTouchStart:O,legacyBehavior:T=!1,onNavigate:L,ref:M,unstable_dynamicOnHover:A,...R}=t;s=N,T&&("string"==typeof s||"number"==typeof s)&&(s=(0,a.jsx)("a",{children:s}));let I=o.default.useContext(d.AppRouterContext),$=!1!==w,F=!1!==w?null===(r=w)||"auto"===r?h.FetchStrategy.PPR:h.FetchStrategy.Full:h.FetchStrategy.PPR,{href:U,as:B}=o.default.useMemo(()=>{let e=p(v);return{href:e,as:y?p(y):e}},[v,y]);if(T){if(s?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});n=o.default.Children.only(s)}let D=T?n&&"object"==typeof n&&n.ref:M,z=o.default.useCallback(e=>(null!==I&&(j.current=(0,x.mountLinkInstance)(e,U,I,F,$,b)),()=>{j.current&&((0,x.unmountLinkForCurrentNavigation)(j.current),j.current=null),(0,x.unmountPrefetchableInstance)(e)}),[$,U,I,F,b]),W={ref:(0,c.useMergedRef)(z,D),onClick(t){T||"function"!=typeof S||S(t),T&&n.props&&"function"==typeof n.props.onClick&&n.props.onClick(t),!I||t.defaultPrevented||function(t,r,s,n,l,a,i){if("u">typeof window){let d,{nodeName:c}=t.currentTarget;if("A"===c.toUpperCase()&&((d=t.currentTarget.getAttribute("target"))&&"_self"!==d||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,f.isLocalURL)(r)){l&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),i){let e=!1;if(i({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:u}=e.r(99781);o.default.startTransition(()=>{u(s||r,l?"replace":"push",a??!0,n.current)})}}(t,U,B,j,C,P,L)},onMouseEnter(e){T||"function"!=typeof E||E(e),T&&n.props&&"function"==typeof n.props.onMouseEnter&&n.props.onMouseEnter(e),I&&$&&(0,x.onNavigationIntent)(e.currentTarget,!0===A)},onTouchStart:function(e){T||"function"!=typeof O||O(e),T&&n.props&&"function"==typeof n.props.onTouchStart&&n.props.onTouchStart(e),I&&$&&(0,x.onNavigationIntent)(e.currentTarget,!0===A)}};return(0,u.isAbsoluteUrl)(B)?W.href=B:T&&!k&&("a"!==n.type||"href"in n.props)||(W.href=(0,m.addBasePath)(B)),l=T?o.default.cloneElement(n,W):(0,a.jsx)("a",{...R,...W,children:s}),(0,a.jsx)(g.Provider,{value:i,children:l})}e.r(84508);let g=(0,o.createContext)(x.IDLE_LINK_STATUS),j=()=>(0,o.useContext)(g);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},18566,(e,t,r)=>{t.exports=e.r(76562)},19739,e=>{"use strict";var t=e.i(43476),r=e.i(22016),s=e.i(18566);function n(){let e=(0,s.usePathname)();return(0,t.jsx)("nav",{className:"bg-white/70 backdrop-blur-xl border-b border-emerald-100/30 sticky top-0 z-50",children:(0,t.jsx)("div",{className:"max-w-7xl mx-auto px-6 sm:px-8 lg:px-10",children:(0,t.jsx)("div",{className:"flex items-center justify-between h-16",children:(0,t.jsxs)("div",{className:"flex items-center space-x-12",children:[(0,t.jsxs)(r.default,{href:"/",className:"flex flex-col group transition-all duration-300",children:[(0,t.jsx)("span",{className:"text-xl font-bold text-emerald-700 group-hover:text-emerald-600 transition-colors duration-300 leading-none",children:"AAR"}),(0,t.jsx)("span",{className:"text-[9px] font-medium text-slate-400 tracking-wider uppercase mt-0.5 leading-none",children:"AI Agent Router"})]}),(0,t.jsx)("div",{className:"hidden sm:flex sm:items-center",children:[{href:"/",label:"配置"},{href:"/ide",label:"IDE"},{href:"/providers",label:"供应商"},{href:"/models",label:"模型"},{href:"/logs",label:"日志"}].map(s=>{let n=e===s.href;return(0,t.jsxs)(r.default,{href:s.href,className:"relative inline-flex items-center justify-center w-[68px] h-9 text-xs font-medium transition-colors duration-300 group",style:{minWidth:"68px",maxWidth:"68px"},children:[(0,t.jsx)("span",{className:`absolute inset-0 flex items-center justify-center transition-colors duration-300 ${n?"text-emerald-700 font-semibold":"text-slate-500 group-hover:text-slate-700"}`,children:s.label}),(0,t.jsx)("span",{className:`absolute inset-0 rounded-lg transition-all duration-300 ${n?"bg-emerald-50/60":"bg-transparent group-hover:bg-slate-50/40"}`})]},s.href)})})]})})})})}e.s(["default",()=>n])},88066,e=>{"use strict";var t=e.i(43476);function r({open:e,title:r,message:s,onConfirm:n,onCancel:l,confirmText:a="确认",cancelText:o="取消",type:i="info"}){return e?(0,t.jsx)("div",{className:"fixed z-50 inset-0 overflow-y-auto",children:(0,t.jsxs)("div",{className:"flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,t.jsx)("div",{className:"fixed inset-0 bg-slate-900/40 backdrop-blur-sm transition-opacity",onClick:l}),(0,t.jsx)("div",{className:"inline-block align-bottom bg-white rounded-2xl text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-sm sm:w-full border border-emerald-100/50",children:(0,t.jsxs)("div",{className:"bg-white px-5 pt-5 pb-4 sm:p-6",children:[(0,t.jsxs)("div",{className:"mb-4",children:[(0,t.jsx)("h3",{className:"text-base font-bold text-slate-800 mb-1",children:r}),(0,t.jsx)("p",{className:"text-xs text-slate-600",children:s})]}),(0,t.jsxs)("div",{className:"flex items-center justify-end space-x-2",children:[(0,t.jsx)("button",{type:"button",onClick:l,className:"px-3.5 py-1.5 border border-slate-200 rounded-lg text-xs font-semibold text-slate-600 bg-white hover:bg-slate-50 focus:outline-none focus:ring-2 focus:ring-offset-1 focus:ring-slate-400/30 transition-all duration-300",children:o}),(0,t.jsx)("button",{type:"button",onClick:n,className:`px-4 py-1.5 border border-transparent rounded-lg text-xs font-semibold text-white focus:outline-none focus:ring-2 focus:ring-offset-1 transition-all duration-300 ${{danger:"bg-rose-500 hover:bg-rose-600 focus:ring-rose-500/50",warning:"bg-amber-500 hover:bg-amber-600 focus:ring-amber-500/50",info:"bg-emerald-600 hover:bg-emerald-700 focus:ring-emerald-500/50"}[i]}`,children:a})]})]})})]})}):null}e.s(["default",()=>r])},90060,e=>{"use strict";var t=e.i(43476),r=e.i(71645),s=e.i(19739),n=e.i(97100),l=e.i(88066);function a(){let e,[a,o]=(0,r.useState)([]),[i,d]=(0,r.useState)([]),[c,u]=(0,r.useState)([]),[m,x]=(0,r.useState)(!0),[f,h]=(0,r.useState)(!1),[p,b]=(0,r.useState)(!1),[g,j]=(0,r.useState)(!1),[v,y]=(0,r.useState)(null),[N,w]=(0,r.useState)(null),[k,C]=(0,r.useState)(null),[_,P]=(0,r.useState)(""),[S,E]=(0,r.useState)(1),[O,T]=(0,r.useState)(!1),[L,M]=(0,r.useState)({provider_id:"",name:"",model_id:"",enabled:!0}),{showToast:A}=(0,n.useToast)();(0,r.useEffect)(()=>{F()},[]);let R=(e=(S-1)*20,i.slice(e,e+20)),I=Math.ceil(i.length/20),$=(0,r.useCallback)(()=>{let e=[...a];if(null!==k&&(e=e.filter(e=>e.provider_id===k)),O&&(e=e.filter(e=>e.enabled)),_.trim()){let t=_.toLowerCase().trim();e=e.filter(e=>e.name.toLowerCase().includes(t)||e.model_id.toLowerCase().includes(t)||e.provider_name?.toLowerCase().includes(t)||e.provider_protocol?.toLowerCase().includes(t))}d(e)},[a,k,O,_]);(0,r.useEffect)(()=>{E(1)},[k,O,_]),(0,r.useEffect)(()=>{$()},[$]);let F=async()=>{try{let[e,t]=await Promise.all([fetch("/api/models"),fetch("/api/providers")]),r=await e.json(),s=await t.json();o(r),u(s)}catch(e){console.error("Failed to load data:",e)}finally{x(!1)}},U=async e=>{e.preventDefault();try{await fetch("/api/models",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...L,provider_id:parseInt(L.provider_id)})}),h(!1),M({provider_id:"",name:"",model_id:"",enabled:!0}),F(),A("模型添加成功","success")}catch(e){console.error("Failed to save model:",e),A("保存失败","error")}},B=async(e,t)=>{try{await fetch("/api/models",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e,enabled:!t})}),F()}catch(e){console.error("Failed to update model:",e)}},D=async()=>{if(v)try{await fetch(`/api/models?id=${v}`,{method:"DELETE"}),F(),A("模型已删除","success")}catch(e){console.error("Failed to delete model:",e),A("删除失败","error")}b(!1),y(null)},z=async()=>{if(N)try{let e=await fetch("/api/models",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider_id:N})}),t=await e.json();if(!e.ok)return void A(t.error||"拉取失败","error");let r=t.count??0;A(`成功拉取 ${r} 个模型`,"success"),F()}catch(e){console.error("Failed to fetch models:",e),A("拉取失败: "+e.message,"error")}j(!1),w(null)};return m?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.default,{}),(0,t.jsx)("div",{className:"min-h-screen flex items-center justify-center",children:(0,t.jsx)("div",{className:"text-lg",children:"加载中..."})})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.default,{}),(0,t.jsx)("main",{className:"max-w-6xl mx-auto py-6 sm:px-6 lg:px-8",children:(0,t.jsxs)("div",{className:"px-4 py-4 sm:px-0",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-5",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h1",{className:"text-lg font-bold text-slate-800",children:"模型管理"}),(0,t.jsx)("p",{className:"text-xs text-slate-500 mt-1",children:"管理 AI 模型配置和状态"})]}),(0,t.jsxs)("button",{onClick:()=>{M({provider_id:"",name:"",model_id:"",enabled:!0}),h(!0)},className:"inline-flex items-center px-3.5 py-1.5 border border-transparent text-xs font-semibold rounded-lg shadow-sm text-white bg-emerald-600 hover:bg-emerald-700 focus:outline-none focus:ring-2 focus:ring-offset-1 focus:ring-emerald-500/50 transition-all duration-300",children:[(0,t.jsx)("svg",{className:"w-3.5 h-3.5 mr-1.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 4v16m8-8H4"})}),"手动添加"]})]}),(0,t.jsxs)("div",{className:"mb-5 bg-white/70 backdrop-blur-sm shadow-md rounded-2xl border border-emerald-100/50 p-5",children:[(0,t.jsx)("div",{className:"flex items-center justify-between mb-4",children:(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-sm font-bold text-slate-800",children:"快捷拉取"}),(0,t.jsx)("p",{className:"text-xs text-slate-500 mt-0.5",children:"从供应商 API 自动拉取可用模型"})]})}),(0,t.jsx)("div",{className:"grid grid-cols-1 gap-2.5 sm:grid-cols-2 lg:grid-cols-3",children:c.map(e=>(0,t.jsxs)("div",{className:"flex items-center justify-between p-3 border border-slate-200 rounded-xl hover:border-emerald-300 hover:shadow-sm transition-all duration-300 cursor-pointer bg-white/80 backdrop-blur-sm",children:[(0,t.jsxs)("div",{className:"flex-1",children:[(0,t.jsx)("div",{className:"font-semibold text-xs text-slate-800",children:e.name}),(0,t.jsx)("div",{className:"text-[10px] text-slate-500 mt-0.5",children:e.protocol})]}),(0,t.jsxs)("button",{onClick:()=>{w(e.id),j(!0)},className:"ml-3 inline-flex items-center px-2.5 py-1 border border-transparent text-[10px] font-semibold rounded-lg text-emerald-700 bg-emerald-50 hover:bg-emerald-100 transition-all duration-300",children:[(0,t.jsx)("svg",{className:"w-3 h-3 mr-1",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),"拉取"]})]},e.id))})]}),(0,t.jsxs)("div",{className:"mb-5 bg-white/70 backdrop-blur-sm shadow-md rounded-2xl border border-emerald-100/50 p-5",children:[(0,t.jsxs)("div",{className:"flex flex-col sm:flex-row gap-4",children:[(0,t.jsxs)("div",{className:"flex-1",children:[(0,t.jsx)("label",{className:"block text-xs font-semibold text-slate-700 mb-1.5",children:"按供应商筛选"}),(0,t.jsxs)("select",{value:k??"",onChange:e=>C(e.target.value?parseInt(e.target.value):null),className:"block w-full rounded-lg border border-slate-200 bg-white/80 px-3 py-2 text-xs shadow-sm transition-all duration-300 focus:border-emerald-400 focus:ring-2 focus:ring-emerald-400/20 focus:ring-offset-1",children:[(0,t.jsx)("option",{value:"",children:"全部供应商"}),c.map(e=>(0,t.jsxs)("option",{value:e.id,children:[e.name," (",e.protocol,")"]},e.id))]})]}),(0,t.jsxs)("div",{className:"flex-1",children:[(0,t.jsx)("label",{className:"block text-xs font-semibold text-slate-700 mb-1.5",children:"搜索模型"}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("input",{type:"text",value:_,onChange:e=>P(e.target.value),placeholder:"搜索模型名称、ID、供应商...",className:"block w-full rounded-lg border border-slate-200 bg-white/80 px-3 py-2 pl-9 text-xs shadow-sm transition-all duration-300 focus:border-emerald-400 focus:ring-2 focus:ring-emerald-400/20 focus:ring-offset-1"}),(0,t.jsx)("svg",{className:"absolute left-2.5 top-1/2 -translate-y-1/2 w-4 h-4 text-slate-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})}),_&&(0,t.jsx)("button",{onClick:()=>P(""),className:"absolute right-2 top-1/2 -translate-y-1/2 p-1 text-slate-400 hover:text-slate-600 transition-colors",children:(0,t.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]})]}),(0,t.jsx)("div",{className:"flex items-center",children:(0,t.jsxs)("label",{className:"flex items-center cursor-pointer",children:[(0,t.jsx)("input",{type:"checkbox",checked:O,onChange:e=>T(e.target.checked),className:"w-4 h-4 text-emerald-600 border-slate-300 rounded focus:ring-emerald-500 transition-all duration-300"}),(0,t.jsx)("span",{className:"ml-2 text-xs font-semibold text-slate-700",children:"仅已启用"})]})})]}),(null!==k||_.trim()||O)&&(0,t.jsxs)("div",{className:"mt-3 text-xs text-slate-500",children:["显示 ",i.length," 个模型,第 ",(S-1)*20+1,"-",Math.min(20*S,i.length)," 个"]})]}),(0,t.jsxs)("div",{className:"bg-white/70 backdrop-blur-sm shadow-md rounded-2xl border border-emerald-100/50 overflow-hidden",children:[(0,t.jsx)("div",{className:"overflow-x-auto",children:(0,t.jsxs)("table",{className:"min-w-full divide-y divide-slate-100",children:[(0,t.jsx)("thead",{className:"bg-emerald-50/30",children:(0,t.jsxs)("tr",{children:[(0,t.jsx)("th",{className:"px-4 py-2.5 text-left text-xs font-semibold text-slate-600 uppercase tracking-wider",children:"名称"}),(0,t.jsx)("th",{className:"px-6 py-3.5 text-left text-xs font-semibold text-gray-700 uppercase tracking-wider",children:"模型 ID"}),(0,t.jsx)("th",{className:"px-6 py-3.5 text-left text-xs font-semibold text-gray-700 uppercase tracking-wider",children:"供应商"}),(0,t.jsx)("th",{className:"px-6 py-3.5 text-left text-xs font-semibold text-gray-700 uppercase tracking-wider",children:"状态"}),(0,t.jsx)("th",{className:"px-6 py-3.5 text-right text-xs font-semibold text-gray-700 uppercase tracking-wider",children:"操作"})]})}),(0,t.jsx)("tbody",{className:"bg-white divide-y divide-slate-100",children:0===R.length?(0,t.jsx)("tr",{children:(0,t.jsx)("td",{colSpan:5,className:"px-4 py-12 text-center",children:(0,t.jsx)("div",{className:"text-slate-400",children:0===a.length?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("svg",{className:"mx-auto h-10 w-10 mb-3 text-slate-300",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M20 13V6a2 2 0 00-2-2H6a2 2 0 00-2 2v7m16 0v5a2 2 0 01-2 2H6a2 2 0 01-2-2v-5m16 0h-2.586a1 1 0 00-.707.293l-2.414 2.414a1 1 0 01-.707.293h-3.172a1 1 0 01-.707-.293l-2.414-2.414A1 1 0 006.586 13H4"})}),(0,t.jsx)("p",{className:"text-xs text-slate-500",children:"暂无模型,请先添加或拉取模型"})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("svg",{className:"mx-auto h-10 w-10 mb-3 text-slate-300",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})}),(0,t.jsx)("p",{className:"text-xs text-slate-500",children:"没有找到匹配的模型"}),(null!==k||_.trim()||O)&&(0,t.jsx)("button",{onClick:()=>{C(null),P(""),T(!1)},className:"mt-2 text-xs text-emerald-600 hover:text-emerald-700 underline",children:"清除筛选条件"})]})})})}):R.map(e=>(0,t.jsxs)("tr",{className:"hover:bg-emerald-50/20 transition-colors duration-300",children:[(0,t.jsx)("td",{className:"px-4 py-3 whitespace-nowrap",children:(0,t.jsx)("div",{className:"text-xs font-medium text-slate-800",children:e.name})}),(0,t.jsx)("td",{className:"px-4 py-3 whitespace-nowrap",children:(0,t.jsx)("div",{className:"text-xs text-slate-600 font-mono",children:e.model_id})}),(0,t.jsx)("td",{className:"px-4 py-3 whitespace-nowrap",children:(0,t.jsxs)("div",{className:"text-xs text-slate-600",children:[(0,t.jsx)("span",{className:"font-medium",children:e.provider_name}),(0,t.jsxs)("span",{className:"text-slate-400 ml-1",children:["(",e.provider_protocol,")"]})]})}),(0,t.jsx)("td",{className:"px-4 py-3 whitespace-nowrap",children:(0,t.jsx)("span",{className:`px-2 py-0.5 inline-flex text-xs leading-4 font-semibold rounded-full border ${e.enabled?"bg-emerald-100/80 text-emerald-700 border-emerald-200/50":"bg-slate-100/80 text-slate-600 border-slate-200/50"}`,children:e.enabled?"启用":"禁用"})}),(0,t.jsx)("td",{className:"px-4 py-3 whitespace-nowrap text-right text-xs font-medium",children:(0,t.jsxs)("div",{className:"flex items-center justify-end space-x-3",children:[(0,t.jsx)("button",{onClick:()=>B(e.id,e.enabled),className:"text-emerald-600 hover:text-emerald-700 font-medium transition-colors duration-300",children:e.enabled?"禁用":"启用"}),(0,t.jsx)("button",{onClick:()=>{y(e.id),b(!0)},className:"text-rose-500 hover:text-rose-600 font-medium transition-colors duration-300",children:"删除"})]})})]},e.id))})]})}),I>1&&(0,t.jsxs)("div",{className:"mt-4 flex items-center justify-between px-4 py-3 bg-emerald-50/20 border-t border-emerald-100/50",children:[(0,t.jsxs)("div",{className:"text-xs text-slate-600",children:["第 ",(0,t.jsx)("span",{className:"font-semibold text-slate-800",children:S})," / ",I," 页"]}),(0,t.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,t.jsx)("button",{onClick:()=>E(e=>Math.max(1,e-1)),disabled:1===S,className:"px-3 py-1.5 border border-slate-200 rounded-lg text-xs font-semibold text-slate-600 bg-white hover:bg-emerald-50 disabled:opacity-50 disabled:cursor-not-allowed transition-all duration-300",children:"上一页"}),(0,t.jsx)("div",{className:"flex items-center space-x-1",children:Array.from({length:I},(e,t)=>t+1).filter(e=>2>Math.abs(e-S)||1===e||e===I).sort((e,t)=>e-t).map(e=>(0,t.jsx)("button",{onClick:()=>E(e),className:`w-8 h-8 font-semibold text-xs rounded-lg transition-all duration-300 ${S===e?"bg-emerald-600 text-white shadow-md":"bg-white text-slate-600 border border-slate-200 hover:bg-emerald-50 hover:border-emerald-300"}`,children:e},e))}),(0,t.jsx)("button",{onClick:()=>E(e=>Math.min(I,e+1)),disabled:S===I,className:"px-3 py-1.5 border border-slate-200 rounded-lg text-xs font-semibold text-slate-600 bg-white hover:bg-emerald-50 disabled:opacity-50 disabled:cursor-not-allowed transition-all duration-300",children:"下一页"})]})]})]})]})}),f&&(0,t.jsx)("div",{className:"fixed z-50 inset-0 overflow-y-auto",children:(0,t.jsxs)("div",{className:"flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,t.jsx)("div",{className:"fixed inset-0 bg-slate-900/40 backdrop-blur-sm transition-opacity",onClick:()=>h(!1)}),(0,t.jsx)("div",{className:"inline-block align-bottom bg-white rounded-2xl text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-md sm:w-full border border-emerald-100/50",children:(0,t.jsxs)("form",{onSubmit:U,className:"bg-white px-6 pt-5 pb-4 sm:p-6",children:[(0,t.jsxs)("div",{className:"mb-5",children:[(0,t.jsx)("h3",{className:"text-base font-bold text-slate-800 mb-1",children:"添加模型"}),(0,t.jsx)("p",{className:"text-xs text-slate-500",children:"手动添加新的 AI 模型"})]}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-semibold text-slate-700 mb-1.5",children:"供应商"}),(0,t.jsxs)("select",{required:!0,value:L.provider_id,onChange:e=>M({...L,provider_id:e.target.value}),autoComplete:"off",className:"block w-full rounded-lg border border-slate-200 bg-white/80 px-3 py-2 text-xs shadow-sm transition-all duration-300 focus:border-emerald-400 focus:ring-2 focus:ring-emerald-400/20 focus:ring-offset-1",children:[(0,t.jsx)("option",{value:"",children:"选择供应商"}),c.map(e=>(0,t.jsx)("option",{value:e.id,children:e.name},e.id))]})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-semibold text-slate-700 mb-1.5",children:"名称"}),(0,t.jsx)("input",{type:"text",required:!0,value:L.name,onChange:e=>M({...L,name:e.target.value}),autoComplete:"off",className:"block w-full rounded-lg border border-slate-200 bg-white/80 px-3 py-2 text-xs shadow-sm transition-all duration-300 focus:border-emerald-400 focus:ring-2 focus:ring-emerald-400/20 focus:ring-offset-1",placeholder:"例如: GPT-4"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"block text-xs font-semibold text-slate-700 mb-1.5",children:"模型 ID"}),(0,t.jsx)("input",{type:"text",required:!0,value:L.model_id,onChange:e=>M({...L,model_id:e.target.value}),autoComplete:"off",className:"block w-full rounded-lg border border-slate-200 bg-white/80 px-3 py-2 text-xs shadow-sm transition-all duration-300 focus:border-emerald-400 focus:ring-2 focus:ring-emerald-400/20 focus:ring-offset-1",placeholder:"例如: gpt-4"})]})]}),(0,t.jsxs)("div",{className:"mt-5 flex items-center justify-end space-x-2",children:[(0,t.jsx)("button",{type:"button",onClick:()=>h(!1),className:"px-3.5 py-1.5 border border-slate-200 rounded-lg text-xs font-semibold text-slate-600 bg-white hover:bg-slate-50 focus:outline-none focus:ring-2 focus:ring-offset-1 focus:ring-slate-400/30 transition-all duration-300",children:"取消"}),(0,t.jsx)("button",{type:"submit",className:"px-4 py-1.5 border border-transparent rounded-lg text-xs font-semibold text-white bg-emerald-600 hover:bg-emerald-700 focus:outline-none focus:ring-2 focus:ring-offset-1 focus:ring-emerald-500/50 transition-all duration-300",children:"保存"})]})]})})]})}),(0,t.jsx)(l.default,{open:p,title:"确认删除",message:"确定要删除这个模型吗?此操作不可恢复。",onConfirm:D,onCancel:()=>{b(!1),y(null)},confirmText:"删除",cancelText:"取消",type:"danger"}),(0,t.jsx)(l.default,{open:g,title:"拉取模型列表",message:"确定要从供应商拉取模型列表吗?",onConfirm:z,onCancel:()=>{j(!1),w(null)},confirmText:"拉取",cancelText:"取消",type:"info"})]})}e.s(["default",()=>a])}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,33525,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},98183,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={assign:function(){return l},searchParamsToUrlQuery:function(){return u},urlQueryToSearchParams:function(){return i}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});function u(e){let t={};for(let[r,n]of e.entries()){let e=t[r];void 0===e?t[r]=n:Array.isArray(e)?e.push(n):t[r]=[e,n]}return t}function a(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function i(e){let t=new URLSearchParams;for(let[r,n]of Object.entries(e))if(Array.isArray(n))for(let e of n)t.append(r,a(e));else t.set(r,a(n));return t}function l(e,...t){for(let r of t){for(let t of r.keys())e.delete(t);for(let[t,n]of r.entries())e.append(t,n)}return e}},95057,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={formatUrl:function(){return i},formatWithValidation:function(){return s},urlObjectKeys:function(){return l}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=e.r(90809)._(e.r(98183)),a=/https?|ftp|gopher|file/;function i(e){let{auth:t,hostname:r}=e,n=e.protocol||"",o=e.pathname||"",i=e.hash||"",l=e.query||"",s=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?s=t+e.host:r&&(s=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(s+=":"+e.port)),l&&"object"==typeof l&&(l=String(u.urlQueryToSearchParams(l)));let c=e.search||l&&`?${l}`||"";return n&&!n.endsWith(":")&&(n+=":"),e.slashes||(!n||a.test(n))&&!1!==s?(s="//"+(s||""),o&&"/"!==o[0]&&(o="/"+o)):s||(s=""),i&&"#"!==i[0]&&(i="#"+i),c&&"?"!==c[0]&&(c="?"+c),o=o.replace(/[?#]/g,encodeURIComponent),c=c.replace("#","%23"),`${n}${s}${o}${c}${i}`}let l=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function s(e){return i(e)}},18581,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return o}});let n=e.r(71645);function o(e,t){let r=(0,n.useRef)(null),o=(0,n.useRef)(null);return(0,n.useCallback)(n=>{if(null===n){let e=r.current;e&&(r.current=null,e());let t=o.current;t&&(o.current=null,t())}else e&&(r.current=u(e,n)),t&&(o.current=u(t,n))},[e,t])}function u(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},18967,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={DecodeError:function(){return y},MiddlewareNotFoundError:function(){return j},MissingStaticPage:function(){return v},NormalizeError:function(){return b},PageNotFoundError:function(){return x},SP:function(){return m},ST:function(){return g},WEB_VITALS:function(){return u},execOnce:function(){return a},getDisplayName:function(){return f},getLocationOrigin:function(){return s},getURL:function(){return c},isAbsoluteUrl:function(){return l},isResSent:function(){return d},loadGetInitialProps:function(){return h},normalizeRepeatedSlashes:function(){return p},stringifyError:function(){return P}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=["CLS","FCP","FID","INP","LCP","TTFB"];function a(e){let t,r=!1;return(...n)=>(r||(r=!0,t=e(...n)),t)}let i=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,l=e=>i.test(e);function s(){let{protocol:e,hostname:t,port:r}=window.location;return`${e}//${t}${r?":"+r:""}`}function c(){let{href:e}=window.location,t=s();return e.substring(t.length)}function f(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function d(e){return e.finished||e.headersSent}function p(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?`?${t.slice(1).join("?")}`:"")}async function h(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await h(t.Component,t.ctx)}:{};let n=await e.getInitialProps(t);if(r&&d(r))return n;if(!n)throw Object.defineProperty(Error(`"${f(e)}.getInitialProps()" should resolve to an object. But found "${n}" instead.`),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return n}let m="u">typeof performance,g=m&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class y extends Error{}class b extends Error{}class x extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class v extends Error{constructor(e,t){super(),this.message=`Failed to load static file for page: ${e} ${t}`}}class j extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function P(e){return JSON.stringify({message:e.message,stack:e.stack})}},73668,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return u}});let n=e.r(18967),o=e.r(52817);function u(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,o.hasBasePath)(r.pathname)}catch(e){return!1}}},84508,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},22016,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={default:function(){return y},useLinkStatus:function(){return x}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=e.r(90809),a=e.r(43476),i=u._(e.r(71645)),l=e.r(95057),s=e.r(8372),c=e.r(18581),f=e.r(18967),d=e.r(5550);e.r(33525);let p=e.r(91949),h=e.r(73668),m=e.r(9396);function g(e){return"string"==typeof e?e:(0,l.formatUrl)(e)}function y(t){var r;let n,o,u,[l,y]=(0,i.useOptimistic)(p.IDLE_LINK_STATUS),x=(0,i.useRef)(null),{href:v,as:j,children:P,prefetch:_=null,passHref:O,replace:E,shallow:N,scroll:S,onClick:T,onMouseEnter:C,onTouchStart:R,legacyBehavior:w=!1,onNavigate:A,ref:L,unstable_dynamicOnHover:M,...$}=t;n=P,w&&("string"==typeof n||"number"==typeof n)&&(n=(0,a.jsx)("a",{children:n}));let k=i.default.useContext(s.AppRouterContext),I=!1!==_,U=!1!==_?null===(r=_)||"auto"===r?m.FetchStrategy.PPR:m.FetchStrategy.Full:m.FetchStrategy.PPR,{href:F,as:D}=i.default.useMemo(()=>{let e=g(v);return{href:e,as:j?g(j):e}},[v,j]);if(w){if(n?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});o=i.default.Children.only(n)}let B=w?o&&"object"==typeof o&&o.ref:L,K=i.default.useCallback(e=>(null!==k&&(x.current=(0,p.mountLinkInstance)(e,F,k,U,I,y)),()=>{x.current&&((0,p.unmountLinkForCurrentNavigation)(x.current),x.current=null),(0,p.unmountPrefetchableInstance)(e)}),[I,F,k,U,y]),z={ref:(0,c.useMergedRef)(K,B),onClick(t){w||"function"!=typeof T||T(t),w&&o.props&&"function"==typeof o.props.onClick&&o.props.onClick(t),!k||t.defaultPrevented||function(t,r,n,o,u,a,l){if("u">typeof window){let s,{nodeName:c}=t.currentTarget;if("A"===c.toUpperCase()&&((s=t.currentTarget.getAttribute("target"))&&"_self"!==s||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,h.isLocalURL)(r)){u&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),l){let e=!1;if(l({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:f}=e.r(99781);i.default.startTransition(()=>{f(n||r,u?"replace":"push",a??!0,o.current)})}}(t,F,D,x,E,S,A)},onMouseEnter(e){w||"function"!=typeof C||C(e),w&&o.props&&"function"==typeof o.props.onMouseEnter&&o.props.onMouseEnter(e),k&&I&&(0,p.onNavigationIntent)(e.currentTarget,!0===M)},onTouchStart:function(e){w||"function"!=typeof R||R(e),w&&o.props&&"function"==typeof o.props.onTouchStart&&o.props.onTouchStart(e),k&&I&&(0,p.onNavigationIntent)(e.currentTarget,!0===M)}};return(0,f.isAbsoluteUrl)(D)?z.href=D:w&&!O&&("a"!==o.type||"href"in o.props)||(z.href=(0,d.addBasePath)(D)),u=w?i.default.cloneElement(o,z):(0,a.jsx)("a",{...$,...z,children:n}),(0,a.jsx)(b.Provider,{value:l,children:u})}e.r(84508);let b=(0,i.createContext)(p.IDLE_LINK_STATUS),x=()=>(0,i.useContext)(b);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},18566,(e,t,r)=>{t.exports=e.r(76562)},19739,e=>{"use strict";var t=e.i(43476),r=e.i(22016),n=e.i(18566);function o(){let e=(0,n.usePathname)();return(0,t.jsx)("nav",{className:"bg-white/70 backdrop-blur-xl border-b border-emerald-100/30 sticky top-0 z-50",children:(0,t.jsx)("div",{className:"max-w-7xl mx-auto px-6 sm:px-8 lg:px-10",children:(0,t.jsx)("div",{className:"flex items-center justify-between h-16",children:(0,t.jsxs)("div",{className:"flex items-center space-x-12",children:[(0,t.jsxs)(r.default,{href:"/",className:"flex flex-col group transition-all duration-300",children:[(0,t.jsx)("span",{className:"text-xl font-bold text-emerald-700 group-hover:text-emerald-600 transition-colors duration-300 leading-none",children:"AAR"}),(0,t.jsx)("span",{className:"text-[9px] font-medium text-slate-400 tracking-wider uppercase mt-0.5 leading-none",children:"AI Agent Router"})]}),(0,t.jsx)("div",{className:"hidden sm:flex sm:items-center",children:[{href:"/",label:"配置"},{href:"/ide",label:"IDE"},{href:"/providers",label:"供应商"},{href:"/models",label:"模型"},{href:"/logs",label:"日志"}].map(n=>{let o=e===n.href;return(0,t.jsxs)(r.default,{href:n.href,className:"relative inline-flex items-center justify-center w-[68px] h-9 text-xs font-medium transition-colors duration-300 group",style:{minWidth:"68px",maxWidth:"68px"},children:[(0,t.jsx)("span",{className:`absolute inset-0 flex items-center justify-center transition-colors duration-300 ${o?"text-emerald-700 font-semibold":"text-slate-500 group-hover:text-slate-700"}`,children:n.label}),(0,t.jsx)("span",{className:`absolute inset-0 rounded-lg transition-all duration-300 ${o?"bg-emerald-50/60":"bg-transparent group-hover:bg-slate-50/40"}`})]},n.href)})})]})})})})}e.s(["default",()=>o])}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.bottom-0{bottom:0}.left-0{left:0}.left-1\/2{left:50%}.left-2\.5{left:.625rem}.left-3{left:.75rem}.left-4{left:1rem}.left-9{left:2.25rem}.right-0{right:0}.right-2{right:.5rem}.right-2\.5{right:.625rem}.right-4{right:1rem}.top-0{top:0}.top-1\/2{top:50%}.top-20{top:5rem}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.-ml-1{margin-left:-.25rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-10{margin-bottom:2.5rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-2\.5{margin-top:.625rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-8{margin-top:2rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-10{height:2.5rem}.h-16{height:4rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[2px\]{height:2px}.max-h-44{max-height:11rem}.max-h-56{max-height:14rem}.max-h-96{max-height:24rem}.max-h-\[240px\]{max-height:240px}.max-h-\[60vh\]{max-height:60vh}.min-h-\[12rem\]{min-height:12rem}.min-h-\[38px\]{min-height:38px}.min-h-screen{min-height:100vh}.w-10{width:2.5rem}.w-16{width:4rem}.w-2\.5{width:.625rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-\[68px\]{width:68px}.w-full{width:100%}.min-w-full{min-width:100%}.max-w-3xl{max-width:48rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-xs{max-width:20rem}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:1s linear infinite spin}.cursor-pointer{cursor:pointer}.resize-y{resize:vertical}.list-none{list-style-type:none}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*calc(1 - var(--tw-space-x-reverse)))}.space-x-12>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(3rem*var(--tw-space-x-reverse));margin-left:calc(3rem*calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*calc(1 - var(--tw-space-x-reverse)))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.space-y-3\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.875rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.875rem*var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.divide-slate-100>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(241 245 249/var(--tw-divide-opacity,1))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-t-0{border-top-width:0}.border-dashed{border-style:dashed}.border-amber-200\/50{border-color:#fde68a80}.border-amber-200\/60{border-color:#fde68a99}.border-amber-200\/80{border-color:#fde68acc}.border-emerald-100\/30{border-color:#d1fae54d}.border-emerald-100\/50{border-color:#d1fae580}.border-emerald-200\/50{border-color:#a7f3d080}.border-emerald-200\/60{border-color:#a7f3d099}.border-emerald-600\/30{border-color:#0596694d}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.border-indigo-200{--tw-border-opacity:1;border-color:rgb(199 210 254/var(--tw-border-opacity,1))}.border-rose-200{--tw-border-opacity:1;border-color:rgb(254 205 211/var(--tw-border-opacity,1))}.border-rose-200\/50{border-color:#fecdd380}.border-rose-200\/60{border-color:#fecdd399}.border-rose-600\/30{border-color:#e11d484d}.border-sky-200\/50{border-color:#bae6fd80}.border-slate-100{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity,1))}.border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity,1))}.border-slate-200\/40{border-color:#e2e8f066}.border-slate-200\/50{border-color:#e2e8f080}.border-slate-200\/80{border-color:#e2e8f0cc}.border-slate-300{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity,1))}.border-slate-700\/30{border-color:#3341554d}.border-slate-800{--tw-border-opacity:1;border-color:rgb(30 41 59/var(--tw-border-opacity,1))}.border-slate-900{--tw-border-opacity:1;border-color:rgb(15 23 42/var(--tw-border-opacity,1))}.border-transparent{border-color:#0000}.border-white\/40{border-color:#fff6}.border-t-slate-900{--tw-border-opacity:1;border-top-color:rgb(15 23 42/var(--tw-border-opacity,1))}.bg-amber-100{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity,1))}.bg-amber-100\/80{background-color:#fef3c7cc}.bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.bg-amber-50\/80{background-color:#fffbebcc}.bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.bg-emerald-100{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity,1))}.bg-emerald-100\/50{background-color:#d1fae580}.bg-emerald-100\/80{background-color:#d1fae5cc}.bg-emerald-50{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity,1))}.bg-emerald-50\/20{background-color:#ecfdf533}.bg-emerald-50\/30{background-color:#ecfdf54d}.bg-emerald-50\/60{background-color:#ecfdf599}.bg-emerald-50\/80{background-color:#ecfdf5cc}.bg-emerald-500{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity,1))}.bg-emerald-600{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity,1))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.bg-indigo-100{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity,1))}.bg-indigo-100\/80{background-color:#e0e7ffcc}.bg-rose-100{--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity,1))}.bg-rose-100\/50{background-color:#ffe4e680}.bg-rose-100\/80{background-color:#ffe4e6cc}.bg-rose-50\/60{background-color:#fff1f299}.bg-rose-500{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity,1))}.bg-rose-600{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity,1))}.bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity,1))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity,1))}.bg-slate-100\/60{background-color:#f1f5f999}.bg-slate-100\/80{background-color:#f1f5f9cc}.bg-slate-100\/90{background-color:#f1f5f9e6}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.bg-slate-50\/60{background-color:#f8fafc99}.bg-slate-50\/80{background-color:#f8fafccc}.bg-slate-600{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity,1))}.bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.bg-slate-900\/40{background-color:#0f172a66}.bg-slate-900\/95{background-color:#0f172af2}.bg-slate-950{--tw-bg-opacity:1;background-color:rgb(2 6 23/var(--tw-bg-opacity,1))}.bg-transparent{background-color:#0000}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-white\/40{background-color:#fff6}.bg-white\/50{background-color:#ffffff80}.bg-white\/60{background-color:#fff9}.bg-white\/70{background-color:#ffffffb3}.bg-white\/80{background-color:#fffc}.bg-white\/90{background-color:#ffffffe6}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.from-emerald-50\/30{--tw-gradient-from:#ecfdf54d var(--tw-gradient-from-position);--tw-gradient-to:#ecfdf500 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-white\/50{--tw-gradient-from:#ffffff80 var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.via-white{--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#fff var(--tw-gradient-via-position),var(--tw-gradient-to)}.to-slate-50\/50{--tw-gradient-to:#f8fafc80 var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-3\.5{padding:.875rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pb-10{padding-bottom:2.5rem}.pb-20{padding-bottom:5rem}.pb-4{padding-bottom:1rem}.pl-9{padding-left:2.25rem}.pr-20{padding-right:5rem}.pr-3{padding-right:.75rem}.pr-7{padding-right:1.75rem}.pr-8{padding-right:2rem}.pr-9{padding-right:2.25rem}.pt-1{padding-top:.25rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-bottom{vertical-align:bottom}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.leading-4{line-height:1rem}.leading-none{line-height:1}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.text-amber-600{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity,1))}.text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.text-emerald-500{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity,1))}.text-emerald-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity,1))}.text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity,1))}.text-emerald-700\/80{color:#047857cc}.text-emerald-800{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity,1))}.text-indigo-700{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-rose-500{--tw-text-opacity:1;color:rgb(244 63 94/var(--tw-text-opacity,1))}.text-rose-600{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity,1))}.text-rose-700{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity,1))}.text-rose-700\/80{color:#be123ccc}.text-sky-700{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity,1))}.text-slate-200{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity,1))}.text-slate-300{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity,1))}.text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1))}.text-slate-800{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity,1))}.text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a;--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-emerald-500\/20{--tw-shadow-color:#10b98133;--tw-shadow:var(--tw-shadow-colored)}.shadow-rose-500\/20{--tw-shadow-color:#f43f5e33;--tw-shadow:var(--tw-shadow-colored)}.shadow-slate-600\/20{--tw-shadow-color:#47556933;--tw-shadow:var(--tw-shadow-colored)}.filter{filter:var(--tw-blur)var(--tw-brightness)var(--tw-contrast)var(--tw-grayscale)var(--tw-hue-rotate)var(--tw-invert)var(--tw-saturate)var(--tw-sepia)var(--tw-drop-shadow)}.backdrop-blur-md{--tw-backdrop-blur:blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia)}.transition-all{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-property:opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}:root{--background:#fafbf9;--foreground:#2d3436;--emerald-50:#ecfdf5;--emerald-100:#d1fae5;--emerald-500:#10b981;--emerald-700:#047857;--slate-50:#f8fafc;--slate-100:#f1f5f9;--slate-400:#94a3b8;--slate-500:#64748b;--slate-600:#475569;--slate-700:#334155;--slate-800:#1e293b}body{color:var(--foreground);background:var(--background);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:-.01em;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}input,select,textarea{transition-property:all;transition-duration:.3s;transition-timing-function:cubic-bezier(.4,0,.2,1)}input:focus,select:focus,textarea:focus{outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:#34d39933;--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;outline:2px solid #0000}button{transition-property:all;transition-duration:.3s;transition-timing-function:cubic-bezier(.4,0,.2,1)}button:disabled{cursor:not-allowed;opacity:.5}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#f1f5f9}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#94a3b8}.opencode-preview-textarea::-moz-selection{color:inherit!important;background:0 0!important}.opencode-preview-textarea::selection{color:inherit!important;background:0 0!important}.opencode-preview-textarea:focus{box-shadow:none!important;--tw-ring-shadow:none!important;--tw-ring-offset-shadow:none!important;outline:none!important}.placeholder\:text-slate-500::placeholder{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.last\:border-0:last-child{border-width:0}.hover\:border-amber-300:hover{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity,1))}.hover\:border-emerald-300:hover{--tw-border-opacity:1;border-color:rgb(110 231 183/var(--tw-border-opacity,1))}.hover\:border-slate-300:hover{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity,1))}.hover\:border-slate-300\/60:hover{border-color:#cbd5e199}.hover\:border-slate-300\/80:hover{border-color:#cbd5e1cc}.hover\:bg-amber-100:hover{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity,1))}.hover\:bg-amber-200:hover{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity,1))}.hover\:bg-amber-50:hover{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.hover\:bg-amber-50\/50:hover{background-color:#fffbeb80}.hover\:bg-amber-600:hover{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity,1))}.hover\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}.hover\:bg-emerald-100:hover{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity,1))}.hover\:bg-emerald-200:hover{--tw-bg-opacity:1;background-color:rgb(167 243 208/var(--tw-bg-opacity,1))}.hover\:bg-emerald-50:hover{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity,1))}.hover\:bg-emerald-50\/20:hover{background-color:#ecfdf533}.hover\:bg-emerald-50\/50:hover{background-color:#ecfdf580}.hover\:bg-emerald-700:hover{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity,1))}.hover\:bg-indigo-50:hover{--tw-bg-opacity:1;background-color:rgb(238 242 255/var(--tw-bg-opacity,1))}.hover\:bg-rose-50:hover{--tw-bg-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity,1))}.hover\:bg-rose-600:hover{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity,1))}.hover\:bg-rose-700:hover{--tw-bg-opacity:1;background-color:rgb(190 18 60/var(--tw-bg-opacity,1))}.hover\:bg-slate-200\/80:hover{background-color:#e2e8f0cc}.hover\:bg-slate-50:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.hover\:bg-slate-700:hover{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity,1))}.hover\:bg-slate-800:hover{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.hover\:bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.hover\:from-slate-50\/60:hover{--tw-gradient-from:#f8fafc99 var(--tw-gradient-from-position);--tw-gradient-to:#f8fafc00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.hover\:text-amber-700:hover{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.hover\:text-blue-700:hover{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.hover\:text-emerald-600:hover{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity,1))}.hover\:text-emerald-700:hover{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity,1))}.hover\:text-rose-500:hover{--tw-text-opacity:1;color:rgb(244 63 94/var(--tw-text-opacity,1))}.hover\:text-rose-600:hover{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity,1))}.hover\:text-slate-600:hover{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity,1))}.hover\:text-slate-700:hover{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1))}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-sm:hover{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\:border-amber-400:focus{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity,1))}.focus\:border-emerald-400:focus{--tw-border-opacity:1;border-color:rgb(52 211 153/var(--tw-border-opacity,1))}.focus\:border-emerald-500:focus{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity,1))}.focus\:border-indigo-400:focus{--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity,1))}.focus\:border-rose-400:focus{--tw-border-opacity:1;border-color:rgb(251 113 133/var(--tw-border-opacity,1))}.focus\:border-slate-400\/80:focus{border-color:#94a3b8cc}.focus\:outline-none:focus{outline-offset:2px;outline:2px solid #0000}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-amber-200:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(253 230 138/var(--tw-ring-opacity,1))}.focus\:ring-amber-500\/50:focus{--tw-ring-color:#f59e0b80}.focus\:ring-blue-500\/50:focus{--tw-ring-color:#3b82f680}.focus\:ring-emerald-200:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(167 243 208/var(--tw-ring-opacity,1))}.focus\:ring-emerald-400\/20:focus{--tw-ring-color:#34d39933}.focus\:ring-emerald-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(16 185 129/var(--tw-ring-opacity,1))}.focus\:ring-emerald-500\/30:focus{--tw-ring-color:#10b9814d}.focus\:ring-emerald-500\/50:focus{--tw-ring-color:#10b98180}.focus\:ring-indigo-200:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(199 210 254/var(--tw-ring-opacity,1))}.focus\:ring-indigo-200\/50:focus{--tw-ring-color:#c7d2fe80}.focus\:ring-rose-200:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(254 205 211/var(--tw-ring-opacity,1))}.focus\:ring-rose-200\/50:focus{--tw-ring-color:#fecdd380}.focus\:ring-rose-500\/50:focus{--tw-ring-color:#f43f5e80}.focus\:ring-slate-200\/50:focus{--tw-ring-color:#e2e8f080}.focus\:ring-slate-400\/30:focus{--tw-ring-color:#94a3b84d}.focus\:ring-offset-0:focus{--tw-ring-offset-width:0px}.focus\:ring-offset-1:focus{--tw-ring-offset-width:1px}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group[open] .group-open\:rotate-90{--tw-rotate:90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.group\/tip:hover .group-hover\/tip\:visible{visibility:visible}.group:hover .group-hover\:bg-slate-50\/40{background-color:#f8fafc66}.group:hover .group-hover\:text-emerald-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity,1))}.group:hover .group-hover\:text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity,1))}.group:hover .group-hover\:text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1))}.group\/tip:hover .group-hover\/tip\:opacity-100{opacity:1}@media (min-width:640px){.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:w-full{width:100%}.sm\:max-w-3xl{max-width:48rem}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:p-0{padding:0}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}.sm\:align-middle{vertical-align:middle}}@media (min-width:1024px){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:px-10{padding-left:2.5rem;padding-right:2.5rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}}.\[\&\:\:-webkit-scrollbar-thumb\]\:rounded-full::-webkit-scrollbar-thumb{border-radius:9999px}.\[\&\:\:-webkit-scrollbar-thumb\]\:bg-slate-600::-webkit-scrollbar-thumb{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity,1))}.\[\&\:\:-webkit-scrollbar-track\]\:bg-slate-900::-webkit-scrollbar-track{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.\[\&\:\:-webkit-scrollbar\]\:w-2::-webkit-scrollbar{width:.5rem}
|