@jheavenknows/bluerouter 5.2.37 → 5.2.39
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/app/.next-cli-build/BUILD_ID +1 -1
- package/app/.next-cli-build/app-path-routes-manifest.json +16 -14
- package/app/.next-cli-build/build-manifest.json +2 -2
- package/app/.next-cli-build/prerender-manifest.json +24 -0
- package/app/.next-cli-build/routes-manifest.json +12 -0
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/ai-power-index/page.js +2 -0
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/ai-power-index/page.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/ai-power-index/page_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page.js +3 -3
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cluster/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cluster/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/local-ai-report/page.js +3 -3
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/local-ai-report/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +3 -3
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovider/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovider/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovidermonitor/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovidermonitor/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalquota/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalquota/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/resource-monitor/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/resource-monitor/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error/page.js +2 -2
- package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error.html +1 -1
- package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found/page.js +2 -2
- package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_not-found.html +1 -1
- package/app/.next-cli-build/server/app/_not-found.rsc +6 -6
- package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/api/auth/ldap/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/ldap/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/ldap/users/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/ldap/users/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/login/route.js +2 -2
- package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/branding/[asset]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/branding/[asset]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/branding/route.js +1 -1
- package/app/.next-cli-build/server/app/api/branding/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/branding/upload/route.js +1 -1
- package/app/.next-cli-build/server/app/api/branding/upload/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/autostart/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/autostart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/root-ca/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/root-ca/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/qwen-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cluster/config/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/config/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/heartbeat/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/heartbeat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/peers/[id]/command/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/peers/[id]/command/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/peers/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/peers/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/peers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/peers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/snapshot/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cluster/snapshot/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/sync/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/sync/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/[id]/route.js +2 -2
- package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/ai-power-index/route.js +22 -0
- package/app/.next-cli-build/server/app/api/dashboard/ai-power-index/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/dashboard/ai-power-index/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/dashboard/analytics/ai-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/analytics/ai-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/analytics/analyze/route.js +2 -2
- package/app/.next-cli-build/server/app/api/dashboard/analytics/analyze/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/analytics/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/analytics/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/combos/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/combos/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/endpoint/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/endpoint/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/local-ai-report/route.js +2 -2
- package/app/.next-cli-build/server/app/api/dashboard/local-ai-report/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/options/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/options/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/token-saver/route.js +2 -2
- package/app/.next-cli-build/server/app/api/dashboard/token-saver/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/health/route.js +1 -1
- package/app/.next-cli-build/server/app/api/init/route.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/caveman-test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/caveman-test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/route.js +2 -2
- package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/locale/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +2 -2
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +2 -2
- package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +2 -2
- package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +2 -2
- package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/api-key-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/api-key-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/import-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/import-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/models/[...routeModel]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/models/[...routeModel]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/usage/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/usage/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/client/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/client/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/monitor/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/monitor/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/permissions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/permissions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/routing/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/routing/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pricing/catalog/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pricing/catalog/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pricing/recalculate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/pricing/recalculate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
- package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-health/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
- package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
- package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
- package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/[id]/route.js +2 -2
- package/app/.next-cli-build/server/app/api/resource-monitor/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/ai-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/ai-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/analyze/route.js +2 -2
- package/app/.next-cli-build/server/app/api/resource-monitor/analyze/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/history/route.js +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/history/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/route.js +3 -3
- package/app/.next-cli-build/server/app/api/resource-monitor/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/shutdown/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tags/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
- package/app/.next-cli-build/server/app/api/translator/load/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-login/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stream/route.js +2 -2
- package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/restart/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/callback/page.js +2 -2
- package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/callback.html +1 -1
- package/app/.next-cli-build/server/app/callback.rsc +6 -6
- package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.html +1 -0
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.meta +17 -0
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.rsc +25 -0
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/!KGRhc2hib2FyZCk/dashboard/ai-power-index/__PAGE__.segment.rsc +6 -0
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/!KGRhc2hib2FyZCk/dashboard/ai-power-index.segment.rsc +5 -0
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +5 -0
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/!KGRhc2hib2FyZCk.segment.rsc +6 -0
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/_full.segment.rsc +25 -0
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/_head.segment.rsc +6 -0
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/_index.segment.rsc +10 -0
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/_tree.segment.rsc +4 -0
- package/app/.next-cli-build/server/app/dashboard/analytics.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/analytics.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/analytics.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/analytics.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/analytics.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/analytics.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/api-keys.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/api-keys.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/cluster.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cluster.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/cluster.segments/!KGRhc2hib2FyZCk/dashboard/cluster/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cluster.segments/!KGRhc2hib2FyZCk/dashboard/cluster.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cluster.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cluster.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/cluster.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/cluster.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cluster.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/cluster.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/local-ai-report.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/local-ai-report.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/local-ai-report.segments/!KGRhc2hib2FyZCk/dashboard/local-ai-report/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/local-ai-report.segments/!KGRhc2hib2FyZCk/dashboard/local-ai-report.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/local-ai-report.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/local-ai-report.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/local-ai-report.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/local-ai-report.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/local-ai-report.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/local-ai-report.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/provider-health.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/provider-health.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/quota.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/!KGRhc2hib2FyZCk/dashboard/resource-monitor/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/!KGRhc2hib2FyZCk/dashboard/resource-monitor.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard.html +1 -1
- package/app/.next-cli-build/server/app/dashboard.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/favicon.ico/route.js +1 -1
- package/app/.next-cli-build/server/app/index.html +1 -1
- package/app/.next-cli-build/server/app/index.rsc +6 -6
- package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/landing/page.js +2 -2
- package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/landing.html +1 -1
- package/app/.next-cli-build/server/app/landing.rsc +6 -6
- package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/login/page.js +2 -2
- package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/login.html +1 -1
- package/app/.next-cli-build/server/app/login.rsc +7 -7
- package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/manifest.webmanifest/route.js +2 -2
- package/app/.next-cli-build/server/app/page.js +2 -2
- package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app-paths-manifest.json +16 -14
- package/app/.next-cli-build/server/chunks/1340.js +1 -1
- package/app/.next-cli-build/server/chunks/1568.js +2 -2
- package/app/.next-cli-build/server/chunks/2242.js +2 -2
- package/app/.next-cli-build/server/chunks/3110.js +1 -1
- package/app/.next-cli-build/server/chunks/4746.js +1 -1
- package/app/.next-cli-build/server/chunks/4790.js +2 -2
- package/app/.next-cli-build/server/chunks/541.js +3 -3
- package/app/.next-cli-build/server/chunks/5810.js +8 -8
- package/app/.next-cli-build/server/chunks/6328.js +1 -1
- package/app/.next-cli-build/server/chunks/6759.js +1 -1
- package/app/.next-cli-build/server/chunks/6811.js +1 -1
- package/app/.next-cli-build/server/chunks/6956.js +1 -1
- package/app/.next-cli-build/server/chunks/8352.js +1 -1
- package/app/.next-cli-build/server/chunks/8491.js +2 -2
- package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/app/.next-cli-build/server/pages/404.html +1 -1
- package/app/.next-cli-build/server/pages/500.html +1 -1
- package/app/.next-cli-build/static/9R1neziug_kHLFnjRop1v/_buildManifest.js +1 -0
- package/app/.next-cli-build/static/chunks/{5263-9780641101245b4d.js → 5263-64c4af8153b15018.js} +1 -1
- package/app/.next-cli-build/static/chunks/{5497-f4e588197cee6283.js → 5497-0ff6af144721d73f.js} +3 -3
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/ai-power-index/page-8ddfdb9d55016608.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-0f7805ec41f07a6f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/_global-error/page-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/ldap/test/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/ldap/users/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/login/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/status/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/branding/[asset]/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/branding/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/branding/upload/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/autostart/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/prompt-log-db/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/root-ca/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/qwen-settings/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cluster/config/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cluster/heartbeat/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cluster/peers/[id]/command/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cluster/peers/[id]/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cluster/peers/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cluster/snapshot/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cluster/sync/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cluster/test/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/ai-power-index/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/analytics/ai-models/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/analytics/analyze/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/analytics/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/combos/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/endpoint/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/local-ai-report/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/prompt-logs/[id]/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/prompt-logs/options/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/prompt-logs/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/token-saver/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/health/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/init/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/caveman-test/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/rotate/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/locale/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/alias/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/availability/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/custom/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/test/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/api-key-models/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/import-models/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/models/[...routeModel]/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/usage/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/client/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/monitor/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/permissions/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/routing/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pricing/catalog/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pricing/recalculate/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pricing/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-health/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/client/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/resource-monitor/[id]/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/resource-monitor/ai-models/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/resource-monitor/analyze/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/resource-monitor/history/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/resource-monitor/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/database/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/shutdown/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tags/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/load/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/save/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/send/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-login/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-start-daemon/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/history/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/search/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/restart/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/update/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/page-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-9dcfd16008d5f76b.js +1 -0
- package/app/.next-cli-build/static/css/cf7ad764cd5f58ee.css +1 -0
- package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-shm +0 -0
- package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-wal +0 -0
- package/app/package.json +1 -1
- package/package.json +1 -1
- package/app/.next-cli-build/static/Uol6Dpjj3AwE9eJ62JZe8/_buildManifest.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-87b9417d86a06dcc.js +0 -1
- package/app/.next-cli-build/static/chunks/app/_global-error/page-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/ldap/test/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/ldap/users/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/login/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/status/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/branding/[asset]/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/branding/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/branding/upload/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/autostart/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/prompt-log-db/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/root-ca/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/qwen-settings/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cluster/config/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cluster/heartbeat/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cluster/peers/[id]/command/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cluster/peers/[id]/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cluster/peers/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cluster/snapshot/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cluster/sync/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cluster/test/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/analytics/ai-models/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/analytics/analyze/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/analytics/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/combos/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/endpoint/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/local-ai-report/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/prompt-logs/[id]/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/prompt-logs/options/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/prompt-logs/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/token-saver/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/health/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/init/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/caveman-test/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/rotate/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/keys/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/locale/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/alias/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/availability/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/custom/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/test/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/api-key-models/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/import-models/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/models/[...routeModel]/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/[id]/usage/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/client/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/monitor/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/permissions/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/personal-cloud-providers/routing/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pricing/catalog/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pricing/recalculate/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pricing/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-health/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/client/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/resource-monitor/[id]/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/resource-monitor/ai-models/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/resource-monitor/analyze/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/resource-monitor/history/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/resource-monitor/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/database/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/shutdown/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tags/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/load/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/save/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/send/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-login/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-start-daemon/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/history/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/search/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/restart/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/update/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/app/page-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-984d38fbe7bdf873.js +0 -1
- package/app/.next-cli-build/static/css/523ea6b99dc712e8.css +0 -1
- /package/app/.next-cli-build/static/{Uol6Dpjj3AwE9eJ62JZe8 → 9R1neziug_kHLFnjRop1v}/_ssgManifest.js +0 -0
- /package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/{upgrade-5.2.31-to-5.2.32-5.2.32-20260724-125131 → upgrade-5.2.36-to-5.2.37-5.2.37-20260728-174922}/data.sqlite +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
(()=>{var a={};a.id=7593,a.ids=[7593],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},1932:a=>{"use strict";a.exports=require("url")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4573:a=>{"use strict";a.exports=require("node:buffer")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11777:(a,b,c)=>{Promise.resolve().then(c.bind(c,68070))},17891:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/get-segment-param")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},19771:a=>{"use strict";a.exports=require("process")},21820:a=>{"use strict";a.exports=require("os")},24929:(a,b,c)=>{Promise.resolve().then(c.bind(c,86396))},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},27910:a=>{"use strict";a.exports=require("stream")},28354:a=>{"use strict";a.exports=require("util")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},34631:a=>{"use strict";a.exports=require("tls")},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},41204:a=>{"use strict";a.exports=require("string_decoder")},43954:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/interception-routes")},46293:a=>{"use strict";a.exports=require("sql.js")},50793:(a,b,c)=>{"use strict";c.r(b),c.d(b,{__next_app__:()=>O,handler:()=>Q,routeModule:()=>P});var d=c(7553),e=c(84006),f=c(67798),g=c(34775),h=c(99373),i=c(73461),j=c(1020),k=c(26349),l=c(54365),m=c(16023),n=c(14965),o=c(63747),p=c(24235),q=c(23938),r=c(261),s=c(66758),t=c(77243),u=c(26713),v=c(37527),w=c(22820),x=c(88216),y=c(47929),z=c(79551),A=c(71797),B=c(89125),C=c(86439),D=c(77068),E=c(27269),F=c(37525),G=c(61287),H=c(81494),I=c(70722),J=c(70753),K=c(43954),L=c(17891),M={};for(let a in G)0>["default","__next_app__","routeModule","handler"].indexOf(a)&&(M[a]=()=>G[a]);c.d(b,M);let N={children:["",{children:["(dashboard)",{children:["dashboard",{children:["api-keys",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,77619)),"D:\\bluerouter\\src\\app\\(dashboard)\\dashboard\\api-keys\\page.js"]}]},{"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"]},[]]},{"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"]},[]]},{layout:[()=>Promise.resolve().then(c.bind(c,30508)),"D:\\bluerouter\\src\\app\\(dashboard)\\layout.js"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,55091,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,45270,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,28193,23)),"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await Promise.resolve().then(c.bind(c,70440))).default(a)],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]},{layout:[()=>Promise.resolve().then(c.bind(c,32059)),"D:\\bluerouter\\src\\app\\layout.js"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,55091,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,45270,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,28193,23)),"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await Promise.resolve().then(c.bind(c,70440))).default(a)],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]}.children,O={require:c,loadChunk:()=>Promise.resolve()},P=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/(dashboard)/dashboard/api-keys/page",pathname:"/dashboard/api-keys",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:N},distDir:".next-cli-build",relativeProjectDir:""});async function Q(a,b,d){var M,R,S,T,U;d.requestMeta&&(0,h.setRequestMeta)(a,d.requestMeta),P.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let V=!!(0,h.getRequestMeta)(a,"minimalMode"),W="/(dashboard)/dashboard/api-keys/page";"/index"===W&&(W="/");let X=await P.prepare(a,b,{srcPage:W,multiZoneDraftMode:!1});if(!X)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:Y,query:Z,params:$,pageIsDynamic:_,buildManifest:aa,nextFontManifest:ab,reactLoadableManifest:ac,serverActionsManifest:ad,clientReferenceManifest:ae,subresourceIntegrityManifest:af,prerenderManifest:ag,isDraftMode:ah,resolvedPathname:ai,revalidateOnlyGenerated:aj,routerServerContext:ak,nextConfig:al,parsedUrl:am,interceptionRoutePatterns:an,deploymentId:ao,clientAssetToken:ap}=X,aq=(0,r.normalizeAppPath)(W),{isOnDemandRevalidate:ar}=X,as=al.experimental.ppr&&!al.cacheComponents&&(0,K.isInterceptionRouteAppPath)(ai)?null:P.match(ai,ag),at=(null==as?void 0:as.route)??null,au=!!ag.routes[ai],av=a.headers["user-agent"]||"",aw=(0,u.getBotType)(av),ax=(0,q.isHtmlBotRequest)(a),ay=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[t.NEXT_ROUTER_PREFETCH_HEADER],az=(0,h.getRequestMeta)(a,"isRSCRequest")??(0,n.f)(a.headers[t.RSC_HEADER]),aA=(0,s.getIsPossibleServerAction)(a),aB=(0,m.checkIsAppPPREnabled)(al.experimental.ppr),aC=a.headers[y.NEXT_RESUME_STATE_LENGTH_HEADER];if(!(0,h.getRequestMeta)(a,"postponed")&&V&&aB&&aA&&aC&&"string"==typeof aC){let e=parseInt(aC,10),{maxPostponedStateSize:f,maxPostponedStateSizeBytes:g}=(0,E.getMaxPostponedStateSize)(al.experimental.maxPostponedStateSize);if(!isNaN(e)&&e>0){if(e>g)return b.statusCode=413,b.end((0,E.getPostponedStateExceededErrorMessage)(f)),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let i="1 MB",j=(null==(U=al.experimental.serverActions)?void 0:U.bodySizeLimit)??i,k=e+(j!==i?c(95726).parse(j):1048576),l=await (0,E.readBodyWithSizeLimit)(a,k);if(null===l)return b.statusCode=413,b.end("Request body exceeded limit. To configure the body size limit for Server Actions, see: https://nextjs.org/docs/app/api-reference/next-config-js/serverActions#bodysizelimit"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;if(l.length>=e){let b=l.subarray(0,e).toString("utf8");(0,h.addRequestMeta)(a,"postponed",b);let c=l.subarray(e);(0,h.addRequestMeta)(a,"actionBody",c)}else throw Object.defineProperty(Error(`invariant: expected ${e} bytes of postponed state but only received ${l.length} bytes`),"__NEXT_ERROR_CODE",{value:"E979",enumerable:!1,configurable:!0})}}if(!(0,h.getRequestMeta)(a,"postponed")&&aB&&"1"===a.headers[y.NEXT_RESUME_HEADER]&&"POST"===a.method){let{maxPostponedStateSize:c,maxPostponedStateSizeBytes:e}=(0,E.getMaxPostponedStateSize)(al.experimental.maxPostponedStateSize),f=await (0,E.readBodyWithSizeLimit)(a,e);if(null===f)return b.statusCode=413,b.end((0,E.getPostponedStateExceededErrorMessage)(c)),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let g=f.toString("utf8");(0,h.addRequestMeta)(a,"postponed",g)}let aD=!0===P.isDev||!0===al.experimental.exposeTestingApiInProductionBuild,aE=aD&&("1"===a.headers[t.NEXT_INSTANT_PREFETCH_HEADER]||!(0,n.f)(a.headers[t.RSC_HEADER])&&"string"==typeof a.headers.cookie&&a.headers.cookie.includes(t.NEXT_INSTANT_TEST_COOKIE+"=")),aF=(aB||aE)&&((null==(M=ag.routes[aq]??ag.dynamicRoutes[aq])?void 0:M.renderingMode)==="PARTIALLY_STATIC"||aE&&(aD||(null==ak?void 0:ak.experimentalTestProxy)===!0)),aG=aE&&aF,aH=aG&&!0===P.isDev,aI=!1,aJ=aF?(0,h.getRequestMeta)(a,"postponed"):void 0,aK=null==(R=ag.routes[ai])?void 0:R.prefetchDataRoute,aL=aF&&az&&!ay&&!aK;V&&(aL=aL&&!!aJ);let aM=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),aN=(!aw||!aF)&&(!av||(0,q.shouldServeStreamingMetadata)(av,al.htmlLimitedBots)),aO=!!((at||au||ag.routes[aq])&&!(aw&&aF)),aP=aF&&!0===al.cacheComponents,aQ=!0===P.isDev||!aO||"string"==typeof aJ||(aP&&(0,h.getRequestMeta)(a,"onCacheEntryV2")?aL&&!V:aL),aR=!!aw&&aF,aS=(null==at?void 0:at.remainingPrerenderableParams)??[],aT=(null==at?void 0:at.fallback)===null&&((null==(S=at.fallbackRootParams)?void 0:S.length)??0)>0,aU=null;if(!ah&&aO&&!aQ&&!aA&&!aJ&&!aL){let a=as?"string"==typeof(null==at?void 0:at.fallback)?at.fallback:as.source:null;if(!0===al.experimental.partialFallbacks&&a&&(null==at?void 0:at.fallbackRouteParams)&&!aT){if(aS.length>0){let b,c=(b=new Map(aS.map(a=>[a.paramName,a])),a.split("/").map(a=>{let c=(0,L.getSegmentParam)(a);if(!c)return a;let d=b.get(c.paramName);if(!d)return a;let e=null==$?void 0:$[d.paramName];if(!e)return a;let f=Array.isArray(e)?e.map(a=>encodeURIComponent(a)).join("/"):encodeURIComponent(e);return a.replace((0,o.buildDynamicSegmentPlaceholder)(d),f)}).join("/")||"/");aU=c!==a?c:null}}else aU=ai}let aV=aU;!aV&&(P.isDev||aO&&_&&(null==at?void 0:at.fallbackRouteParams)&&!aA)&&(aV=ai),P.isDev||ah||!aO||!az||aL||(0,k.d)(a.headers);let aW={...G,tree:N,handler:Q,routeModule:P,__next_app__:O};ad&&ae&&(0,p.setManifestsSingleton)({page:W,clientReferenceManifest:ae,serverActionsManifest:ad});let aX=a.method||"GET",aY=(0,g.getTracer)(),aZ=aY.getActiveScopeSpan(),a$=!!(null==ak?void 0:ak.isWrappedByNextServer),a_=!0===al.experimental.partialFallbacks&&aS.length>0?(null==at||null==(T=at.fallbackRouteParams)?void 0:T.filter(a=>!aS.some(b=>b.paramName===a.paramName)))??[]:[],a0=async()=>((null==ak?void 0:ak.render404)?await ak.render404(a,b,am,!1):b.end("This page could not be found"),null);try{let k,m=P.getVaryHeader(ai,an);b.setHeader("Vary",m);let n=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return P.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let a=aY.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let d=a.get("next.route");if(d){let a=`${aX} ${d}`;c.setAttributes({"next.route":d,"http.route":d,"next.span_name":a}),c.updateName(a),k&&k!==c&&(k.setAttribute("http.route",d),k.updateName(a))}else c.updateName(`${aX} ${W}`)})},p=(0,h.getRequestMeta)(a,"incrementalCache")||await P.getIncrementalCache(a,al,ag,V);null==p||p.resetRequestCache(),globalThis.__incrementalCache=p;let q=async({span:e,postponed:f,fallbackRouteParams:g,forceStaticRender:i})=>{let k={query:Z,params:$,page:aq,sharedContext:{buildId:Y,deploymentId:ao,clientAssetToken:ap},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aW,Component:(0,j.T)(aW),params:$,routeModule:P,page:W,postponed:f,shouldWaitOnAllReady:aR,serveStreamingMetadata:aN,supportsDynamicResponse:"string"==typeof f||aQ,buildManifest:aa,nextFontManifest:ab,reactLoadableManifest:ac,subresourceIntegrityManifest:af,setCacheStatus:null==ak?void 0:ak.setCacheStatus,setIsrStatus:null==ak?void 0:ak.setIsrStatus,setReactDebugChannel:null==ak?void 0:ak.setReactDebugChannel,sendErrorsToBrowser:null==ak?void 0:ak.sendErrorsToBrowser,dir:c(33873).join(process.cwd(),P.relativeProjectDir),isDraftMode:ah,botType:aw,isOnDemandRevalidate:ar,isPossibleServerAction:aA,assetPrefix:al.assetPrefix,nextConfigOutput:al.output,crossOrigin:al.crossOrigin,trailingSlash:al.trailingSlash,images:al.images,previewProps:ag.preview,enableTainting:al.experimental.taint,htmlLimitedBots:al.htmlLimitedBots,reactMaxHeadersLength:al.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:p,cacheLifeProfiles:al.cacheLife,basePath:al.basePath,serverActions:al.experimental.serverActions,logServerFunctions:"object"==typeof al.logging&&!!al.logging.serverFunctions,...aG||aH||aI?{isBuildTimePrerendering:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isDebugDynamicAccesses:aH}:{},cacheComponents:!!al.cacheComponents,experimental:{isRoutePPREnabled:aF,expireTime:al.expireTime,staleTimes:al.experimental.staleTimes,dynamicOnHover:!!al.experimental.dynamicOnHover,optimisticRouting:!!al.experimental.optimisticRouting,inlineCss:!!al.experimental.inlineCss,prefetchInlining:al.experimental.prefetchInlining??!1,authInterrupts:!!al.experimental.authInterrupts,cachedNavigations:!!al.experimental.cachedNavigations,clientTraceMetadata:al.experimental.clientTraceMetadata||[],clientParamParsingOrigins:al.experimental.clientParamParsingOrigins,maxPostponedStateSizeBytes:(0,D.parseMaxPostponedStateSize)(al.experimental.maxPostponedStateSize)},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d,e)=>P.onRequestError(a,b,d,e,ak),err:(0,h.getRequestMeta)(a,"invokeError")}};i&&(k.renderOpts.supportsDynamicResponse=!1);let l=await n(e,k),{metadata:m}=l,{cacheControl:o,headers:q={},fetchTags:r,fetchMetrics:s}=m;if(r&&(q[y.NEXT_CACHE_TAGS_HEADER]=r),a.fetchMetrics=s,aO&&(null==o?void 0:o.revalidate)===0&&!P.isDev&&!aF){let a=m.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${ai}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
|
|
2
|
-
see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:v.CachedRouteKind.APP_PAGE,html:l,headers:q,rscData:m.flightData,postponed:m.postponed,status:m.statusCode,segmentData:m.segmentData},cacheControl:o}},r=async({hasResolved:c,previousCacheEntry:g,isRevalidating:i,span:j,forceStaticRender:k=!1})=>{let l=!1===P.isDev,m=c||b.writableEnded;try{var n;let f;if(ar&&aj&&!g&&!V)return(null==ak?void 0:ak.render404)?await ak.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(at&&(f=(0,w.parseFallbackField)(at.fallback)),!0===al.experimental.partialFallbacks&&(null==at?void 0:at.fallback)===null&&!aT&&aS.length>0&&(f=w.FallbackMode.PRERENDER),f===w.FallbackMode.PRERENDER&&(0,u.isBot)(av)&&(!aF||ax)&&(f=w.FallbackMode.BLOCKING_STATIC_RENDER),(null==g?void 0:g.isStale)===-1&&(ar=!0),ar&&(f!==w.FallbackMode.NOT_FOUND||g)&&(f=w.FallbackMode.BLOCKING_STATIC_RENDER),!V&&f!==w.FallbackMode.BLOCKING_STATIC_RENDER&&aV&&!m&&!ah&&_&&(l||!au)){if((l||at)&&f===w.FallbackMode.NOT_FOUND){if(al.adapterPath)return await a0();throw new C.NoFallbackError}if(aF&&(al.cacheComponents?!aL:!az)){let b=l&&"string"==typeof(null==at?void 0:at.fallback)?at.fallback:aq,f=(l||aG)&&(null==at?void 0:at.fallbackRouteParams)?(0,o.createOpaqueFallbackRouteParams)(at.fallbackRouteParams):aI?(0,o.getFallbackRouteParams)(aq,P):null;aG&&f&&(0,h.addRequestMeta)(a,"fallbackParams",f);let g=await P.handleResponse({cacheKey:b,req:a,nextConfig:al,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:ag,isRoutePPREnabled:aF,responseGenerator:async()=>q({span:j,postponed:void 0,fallbackRouteParams:f,forceStaticRender:!0}),waitUntil:d.waitUntil,isMinimalMode:V});if(null===g)return null;if(g)return V||!aF||!(aS.length>0)||!0!==al.experimental.partialFallbacks||!aU||!p||ar||aI||aD||aE||ay||(0,J.scheduleOnNextTick)(async()=>{let b=P.getResponseCache(a);try{await b.revalidate(aU,p,aF,!1,a=>q({span:a.span,postponed:void 0,fallbackRouteParams:a_.length>0?(0,o.createOpaqueFallbackRouteParams)(a_):null,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}),delete g.cacheControl,g}}let s=ar||i||!aJ?void 0:aJ;if(aP&&!V&&p&&(aL||aA)&&!k){let b=await p.get(ai,{kind:v.IncrementalCacheKind.APP_PAGE,isRoutePPREnabled:!0,isFallback:!1});b&&b.value&&b.value.kind===v.CachedRouteKind.APP_PAGE&&(s=b.value.postponed,b&&(-1===b.isStale||!0===b.isStale)&&(0,J.scheduleOnNextTick)(async()=>{let b=P.getResponseCache(a);try{await b.revalidate(ai,p,aF,!1,a=>r({...a,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}))}if((aG||aH)&&void 0!==s)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:v.CachedRouteKind.PAGES,html:x.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let t=!P.isDev&&_&&(null==at?void 0:at.fallbackRouteParams)?(0,o.getPlaceholderFallbackRouteParams)($,at.fallbackRouteParams):null,y=t&&t.length>0?t:null==at?void 0:at.fallbackRouteParams,z=null!=t&&t.length>0,A=null;if(al.cacheComponents&&(null==at?void 0:at.fallbackRouteParams)){let b=(0,h.getRequestMeta)(a,"resolvedRouteParamKeys");b&&b.size>0&&(A=at.fallbackRouteParams.filter(a=>!b.has(a.paramName)))}let B=(l&&(0,h.getRequestMeta)(a,"renderFallbackShell")||z||aG&&!au)&&y?(0,o.createOpaqueFallbackRouteParams)(y):A&&A.length>0&&A.length<((null==at||null==(n=at.fallbackRouteParams)?void 0:n.length)??0)?(0,o.createOpaqueFallbackRouteParams)(A):aI?(0,o.getFallbackRouteParams)(aq,P):null;if((l||aG)&&al.cacheComponents&&!au&&(null==at?void 0:at.fallbackRouteParams)){let b=(0,o.createOpaqueFallbackRouteParams)(y??at.fallbackRouteParams);b&&(0,h.addRequestMeta)(a,"fallbackParams",b)}return q({span:j,postponed:s,fallbackRouteParams:B,forceStaticRender:k})}catch(b){throw(null==g?void 0:g.isStale)&&await P.onRequestError(a,b,{routerKind:"App Router",routePath:W,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:aO,isOnDemandRevalidate:ar})},!1,ak),b}},s=async c=>{var f,g,i,j,k,l;let m,n=await P.handleResponse({cacheKey:aU,responseGenerator:a=>r({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ar,isRoutePPREnabled:aF,req:a,nextConfig:al,prerenderManifest:ag,waitUntil:d.waitUntil,isMinimalMode:V});if(ah&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),P.isDev&&b.setHeader("Cache-Control","no-cache, must-revalidate"),!n){if(aU)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=n.value)?void 0:f.kind)!==v.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=n.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let o="string"==typeof n.value.postponed;az&&!aA&&ao&&b.setHeader(y.NEXT_NAV_DEPLOYMENT_ID_HEADER,ao),aO&&!aL&&(!o||ay)&&(V||b.setHeader("x-nextjs-cache",ar?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),b.setHeader(t.NEXT_IS_PRERENDER_HEADER,"1"));let{value:p}=n;if(aJ)m={revalidate:0,expire:void 0};else if(aL)m={revalidate:0,expire:void 0};else if(!P.isDev)if(ah)m={revalidate:0,expire:void 0};else if(aO){if(n.cacheControl)if("number"==typeof n.cacheControl.revalidate){if(n.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${n.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});m={revalidate:n.cacheControl.revalidate,expire:(null==(j=n.cacheControl)?void 0:j.expire)??al.expireTime}}else m={revalidate:y.CACHE_ONE_YEAR_SECONDS,expire:void 0}}else b.getHeader("Cache-Control")||(m={revalidate:0,expire:void 0});if(n.cacheControl=m,"string"==typeof aM&&(null==p?void 0:p.kind)===v.CachedRouteKind.APP_PAGE&&p.segmentData){b.setHeader(t.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=p.headers)?void 0:k[y.NEXT_CACHE_TAGS_HEADER];V&&aO&&c&&"string"==typeof c&&b.setHeader(y.NEXT_CACHE_TAGS_HEADER,c);let d=p.segmentData.get(aM);return void 0!==d?(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.fromStatic(d,t.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl}):(b.statusCode=204,(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.EMPTY,cacheControl:n.cacheControl}))}let s=aP?(0,h.getRequestMeta)(a,"onCacheEntryV2")??(0,h.getRequestMeta)(a,"onCacheEntry"):(0,h.getRequestMeta)(a,"onCacheEntry");if(s){let b=(0,h.getRequestMeta)(a,"initURL")??a.url,c=b?(null==(l=(0,F.parseUrl)(b))?void 0:l.pathname)??b:void 0;if(await s(n,{url:c}))return null}if(p.headers){let a={...p.headers};for(let[c,d]of(V&&aO||delete a[y.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let u=null==(g=p.headers)?void 0:g[y.NEXT_CACHE_TAGS_HEADER];if(V&&aO&&u&&"string"==typeof u&&b.setHeader(y.NEXT_CACHE_TAGS_HEADER,u),!p.status||az&&aF||(b.statusCode=p.status),!V&&p.status&&H.RedirectStatusCode[p.status]&&az&&(b.statusCode=200),o&&!aL&&b.setHeader(t.NEXT_DID_POSTPONE_HEADER,"1"),az&&!ah){if(void 0===p.rscData){if(p.html.contentType!==t.RSC_CONTENT_TYPE_HEADER)if(al.cacheComponents)return b.statusCode=404,(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.EMPTY,cacheControl:n.cacheControl});else throw Object.defineProperty(new I.InvariantError(`Expected RSC response, got ${p.html.contentType}`),"__NEXT_ERROR_CODE",{value:"E789",enumerable:!1,configurable:!0});return(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:p.html,cacheControl:n.cacheControl})}return(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.fromStatic(p.rscData,t.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl})}let w=p.html;if(aE&&aG){let c=!0===P.isDev?crypto.randomUUID():null;return w.pipeThrough(await (0,A.createInstantTestScriptInsertionTransformStream)(c)),(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:{revalidate:0,expire:void 0}})}if(!o||V||az)return(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:n.cacheControl});if(aG||aH)return w.push(new ReadableStream({start(a){a.enqueue(z.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:{revalidate:0,expire:void 0}});let C=new TransformStream;return w.push(C.readable),q({span:c,postponed:p.postponed,fallbackRouteParams:null,forceStaticRender:!1}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==v.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(C.writable)}).catch(a=>{C.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:{revalidate:0,expire:void 0}})};if(!a$||!aZ)return k=aY.getActiveScopeSpan(),await aY.withPropagatedContext(a.headers,()=>aY.trace(i.BaseServerSpan.handleRequest,{spanName:`${aX} ${W}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aX,"http.target":a.url}},s),void 0,!a$);await s(aZ)}catch(b){throw b instanceof C.NoFallbackError||await P.onRequestError(a,b,{routerKind:"App Router",routePath:W,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:aO,isOnDemandRevalidate:ar})},!1,ak),b}}},51455:a=>{"use strict";a.exports=require("node:fs/promises")},53053:a=>{"use strict";a.exports=require("node:diagnostics_channel")},55511:a=>{"use strict";a.exports=require("crypto")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},64939:a=>{"use strict";a.exports=import("pg")},66136:a=>{"use strict";a.exports=require("timers")},68070:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"D:\\\\bluerouter\\\\src\\\\app\\\\(dashboard)\\\\dashboard\\\\api-keys\\\\ApiKeysPageClient.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"D:\\bluerouter\\src\\app\\(dashboard)\\dashboard\\api-keys\\ApiKeysPageClient.js","default")},70722:a=>{"use strict";a.exports=require("next/dist/shared/lib/invariant-error")},73024:a=>{"use strict";a.exports=require("node:fs")},74075:a=>{"use strict";a.exports=require("zlib")},76760:a=>{"use strict";a.exports=require("node:path")},77068:a=>{"use strict";a.exports=require("next/dist/shared/lib/size-limit")},77598:a=>{"use strict";a.exports=require("node:crypto")},77619:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(5735),e=c(68070);function f(){return(0,d.jsx)(e.default,{})}},79428:a=>{"use strict";a.exports=require("buffer")},79748:a=>{"use strict";a.exports=require("fs/promises")},79868:a=>{"use strict";a.exports=require("node:sqlite")},81787:a=>{"use strict";a.exports=require("bun:sqlite")},86396:(a,b,c)=>{"use strict";c.d(b,{default:()=>M});var d=c(48249),e=c(67484),f=c(50412),g=c(20151),h=c(50377);let i=Object.freeze({enabled:!0,requestsPerMinute:20,promptCharsMax:12e4,maxOutputTokens:0,forceThinkingOff:!0,allowedIpCidrs:[],expiresAt:""});function j(a){return String(a||"").trim().toLowerCase()}function k(a){return Array.isArray(a)?[...new Set(a.map(a=>String(a||"").trim()).filter(Boolean))]:[]}function l(a,b){let c=k(a?.allowedModels),d=c[0]||String(b||"programmer").trim()||"programmer",e=c.find(a=>/fast|small|haiku/i.test(a))||c.find(a=>a!==d)||d;return{codingModel:d,fastModel:e}}function m({icon:a,materialIcon:b,image:c,children:e,className:f=""}){return(0,d.jsxs)("span",{className:`inline-flex items-center gap-1.5 ${f}`,children:[c?(0,d.jsx)("img",{src:c,alt:"","aria-hidden":"true",className:"size-4 rounded-sm object-contain"}):b?(0,d.jsx)("span",{"aria-hidden":"true",className:"material-symbols-outlined text-[17px] leading-none",children:b}):a?(0,d.jsx)("span",{"aria-hidden":"true",className:"text-base leading-none",children:a}):null,(0,d.jsx)("span",{children:e})]})}function n(a,b=0){let c=Number(a);return Number.isFinite(c)?Math.max(0,Math.floor(c)):b}function o(a,b=!0){return null==a||""===a?b:!0===a||"true"===a||1===a||"1"===a}function p(a){return Array.isArray(a)?[...new Set(a.map(a=>String(a||"").trim()).filter(Boolean))]:[]}function q(a){return a&&"object"==typeof a&&!Array.isArray(a)&&Object.keys(a).length>0}function r(a={},b={}){let c={...b},d=a&&"object"==typeof a&&!Array.isArray(a)?a:{};return{enabled:o(d.enabled??c.enabled,!0),requestsPerMinute:n(d.requestsPerMinute??c.requestsPerMinute,0),promptCharsMax:n(d.promptCharsMax??c.promptCharsMax,0),maxOutputTokens:n(d.maxOutputTokens??d.outputTokensMax??d.maxTokens??d.max_tokens??d.max_completion_tokens??c.maxOutputTokens,0),forceThinkingOff:o(d.forceThinkingOff??c.forceThinkingOff,!0),allowedIpCidrs:p(d.allowedIpCidrs??c.allowedIpCidrs),expiresAt:String(d.expiresAt??c.expiresAt??"").trim()}}function s({models:a,emptyLabel:b="Chưa g\xe1n model"}){let c=k(a);return 0===c.length?(0,d.jsx)("span",{className:"text-xs text-text-muted",children:b}):(0,d.jsxs)("div",{className:"mt-2 flex flex-wrap gap-1.5",children:[c.slice(0,8).map(a=>(0,d.jsx)("span",{className:"rounded-full border border-border bg-surface px-2 py-1 font-mono text-xs",children:a},a)),c.length>8?(0,d.jsxs)("span",{className:"rounded-full border border-border bg-surface px-2 py-1 text-xs",children:["+",c.length-8," model kh\xe1c"]}):null]})}function t({limits:a,showThinking:b=!1,showOutputLimit:c=!1}){if(!q(a))return(0,d.jsx)("div",{className:"mt-2 flex flex-wrap gap-2 text-xs text-text-muted",children:(0,d.jsx)("span",{className:"rounded-full border border-border bg-surface px-2 py-1",children:"policy: chưa set, kh\xf4ng giới hạn"})});let e=r(a);return(0,d.jsxs)("div",{className:"mt-2 flex flex-wrap gap-2 text-xs text-text-muted",children:[(0,d.jsxs)("span",{className:"rounded-full border border-border bg-surface px-2 py-1",children:["policy: ",e.enabled?"bật":"tắt"]}),(0,d.jsxs)("span",{className:"rounded-full border border-border bg-surface px-2 py-1",children:[e.requestsPerMinute||"∞"," req/ph\xfat"]}),(0,d.jsxs)("span",{className:"rounded-full border border-border bg-surface px-2 py-1",children:[e.promptCharsMax||"∞"," chars prompt"]}),c?(0,d.jsxs)("span",{className:"rounded-full border border-border bg-surface px-2 py-1",children:[e.maxOutputTokens||"∞"," output tokens"]}):null,b?(0,d.jsxs)("span",{className:"rounded-full border border-border bg-surface px-2 py-1",children:["thinking: ",e.forceThinkingOff?"force off":"client tự quyết"]}):null,e.allowedIpCidrs.length>0?(0,d.jsx)("span",{className:"rounded-full border border-border bg-surface px-2 py-1",children:"IP locked"}):null]})}function u({label:a,value:b,onChange:c,hint:e}){return(0,d.jsxs)("label",{className:"block",children:[(0,d.jsx)("span",{className:"mb-1 block text-xs font-medium text-text-muted",children:a}),(0,d.jsx)("input",{type:"number",min:"0",value:b,onChange:a=>c(n(a.target.value,0)),className:"w-full rounded-xl border border-border bg-background px-3 py-2 text-sm text-text-main outline-none focus:border-primary"}),e?(0,d.jsx)("span",{className:"mt-1 block text-xs text-text-muted",children:e}):null]})}function v({isOpen:a,keyName:b,policy:c,setPolicy:e,onClose:g,onSave:h,onClear:j,saving:k,clearLabel:l="X\xf3a policy / kh\xf4ng limit"}){let m=r(c,i),n=(a,b)=>e(c=>r({...c,[a]:b},i));return(0,d.jsx)(f.aF,{isOpen:a,onClose:g,title:`Policy API key: ${b||"API Key"}`,size:"xl",children:(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface/60 p-3 text-sm text-text-muted",children:["Key mới tự c\xf3 ",(0,d.jsx)("b",{children:"default policy"}),". Chỉ admin được sửa policy. Request/ph\xfat = 0 nghĩa l\xe0 kh\xf4ng giới hạn tần suất. Max output tokens = 0 nghĩa l\xe0 kh\xf4ng \xe9p giới hạn output."]}),(0,d.jsxs)("label",{className:"flex items-center justify-between gap-3 rounded-xl border border-border p-3 text-sm",children:[(0,d.jsxs)("span",{children:[(0,d.jsx)("b",{children:"Bật policy"}),(0,d.jsx)("br",{}),(0,d.jsx)("span",{className:"text-xs text-text-muted",children:"Tắt mục n\xe0y th\xec policy được lưu nhưng kh\xf4ng \xe1p limit."})]}),(0,d.jsx)("input",{type:"checkbox",checked:m.enabled,onChange:a=>n("enabled",a.target.checked)})]}),(0,d.jsxs)("div",{className:"grid gap-3 md:grid-cols-2",children:[(0,d.jsx)(u,{label:"Request / ph\xfat",value:m.requestsPerMinute,onChange:a=>n("requestsPerMinute",a),hint:"0 = kh\xf4ng giới hạn tần suất. Khuyến nghị user thường: 10–20 req/ph\xfat."}),(0,d.jsx)(u,{label:"Max output tokens",value:m.maxOutputTokens,onChange:a=>n("maxOutputTokens",a),hint:"0 = kh\xf4ng giới hạn. VS Code khuyến nghị 2048–3072; chat d\xe0i 4096–8192."})]}),(0,d.jsx)(u,{label:"Prompt chars tối đa",value:m.promptCharsMax,onChange:a=>n("promptCharsMax",a),hint:"0 = kh\xf4ng giới hạn input/prompt."}),(0,d.jsxs)("label",{className:"flex items-center justify-between gap-3 rounded-xl border border-border p-3 text-sm",children:[(0,d.jsxs)("span",{children:[(0,d.jsx)("b",{children:"Force Thinking Off"}),(0,d.jsx)("br",{}),(0,d.jsx)("span",{className:"text-xs text-text-muted",children:"Khi bật, gateway \xe9p request c\xf3 chat_template_kwargs.enable_thinking=false theo chuẩn llama.cpp."})]}),(0,d.jsx)("input",{type:"checkbox",checked:m.forceThinkingOff,onChange:a=>n("forceThinkingOff",a.target.checked)})]}),(0,d.jsxs)("label",{className:"block",children:[(0,d.jsx)("span",{className:"mb-1 block text-xs font-medium text-text-muted",children:"IP/CIDR được ph\xe9p"}),(0,d.jsx)("textarea",{value:p(m.allowedIpCidrs).join("\n"),onChange:a=>n("allowedIpCidrs",[...new Set(String(a.target.value||"").split(/[\n,]+/).map(a=>a.trim()).filter(Boolean))]),rows:3,className:"w-full rounded-xl border border-border bg-background px-3 py-2 font-mono text-sm text-text-main outline-none focus:border-primary",placeholder:"10.0.0.0/8\n192.168.0.0/16"}),(0,d.jsx)("span",{className:"mt-1 block text-xs text-text-muted",children:"Để trống = mọi IP. Hỗ trợ IPv4 exact hoặc CIDR."})]}),(0,d.jsxs)("label",{className:"block",children:[(0,d.jsx)("span",{className:"mb-1 block text-xs font-medium text-text-muted",children:"Hết hạn l\xfac"}),(0,d.jsx)("input",{value:m.expiresAt,onChange:a=>n("expiresAt",a.target.value),className:"w-full rounded-xl border border-border bg-background px-3 py-2 font-mono text-sm text-text-main outline-none focus:border-primary",placeholder:"2026-12-31T23:59:59+07:00 hoặc để trống"})]}),(0,d.jsxs)("div",{className:"flex flex-wrap justify-end gap-2",children:[(0,d.jsx)(f.$n,{variant:"ghost",onClick:g,children:"Hủy"}),j?(0,d.jsx)(f.$n,{variant:"outline",onClick:j,disabled:k,children:l}):null,(0,d.jsx)(f.$n,{onClick:()=>h(m),disabled:k,children:k?"Đang lưu...":"Lưu policy"})]})]})})}function w({open:a,keyName:b,models:c,setModels:g,activeProviders:h,modelAliases:i,onClose:j,onSave:l,saving:m,personalOnly:n,extraModels:o}){let[p,q]=(0,e.useState)(!1),r=k(c),s=a=>{let b=a?.value||a?.name||a;g(a=>k(a).filter(a=>a!==b))};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(f.aF,{isOpen:a,onClose:j,title:`Model access: ${b||"API Key"}`,size:"xl",children:(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Chọn một hoặc nhiều model m\xe0 API key n\xe0y được ph\xe9p sử dụng. Trang n\xe0y kh\xf4ng cho lưu danh s\xe1ch model rỗng."}),(0,d.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,d.jsx)("span",{className:"text-sm font-medium",children:"Model được ph\xe9p d\xf9ng"}),(0,d.jsx)(f.$n,{size:"sm",variant:"outline",onClick:()=>q(!0),children:"Th\xeam model"})]}),0===r.length?(0,d.jsx)("div",{className:"rounded-xl border border-dashed border-border p-4 text-sm text-text-muted",children:"Chưa chọn model n\xe0o. H\xe3y th\xeam \xedt nhất một model trước khi lưu."}):(0,d.jsx)("div",{className:"flex flex-wrap gap-2",children:r.map(a=>(0,d.jsxs)("button",{type:"button",onClick:()=>s(a),className:"rounded-full border border-primary/30 bg-primary/10 px-2 py-1 font-mono text-xs text-primary transition hover:bg-red-500/10 hover:text-red-600",title:"Bấm để gỡ model n\xe0y",children:[a," \xd7"]},a))}),(0,d.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,d.jsx)(f.$n,{variant:"ghost",onClick:j,children:"Hủy"}),(0,d.jsx)(f.$n,{onClick:l,disabled:m||0===r.length,children:m?"Đang lưu...":"Lưu danh s\xe1ch model"})]})]})}),(0,d.jsx)(f.rq,{isOpen:p,onClose:()=>q(!1),onSelect:a=>{let b=a?.value||a?.name||a;b&&g(a=>k([...a,b]))},onDeselect:s,activeProviders:h,modelAliases:i,title:"Chọn model được ph\xe9p d\xf9ng",addedModelValues:r,closeOnSelect:!1,personalOnly:n,extraModels:o})]})}function x({label:a,value:b,hint:c}){return(0,d.jsxs)("div",{className:"rounded-2xl border border-border bg-surface/70 p-4",children:[(0,d.jsx)("div",{className:"text-xs font-medium uppercase tracking-wide text-text-muted",children:a}),(0,d.jsx)("div",{className:"mt-2 text-2xl font-semibold text-text-main",children:b}),c?(0,d.jsx)("div",{className:"mt-1 text-xs text-text-muted",children:c}):null]})}function y({pagination:a,pageSize:b,onPageChange:c,onPageSizeChange:e,loading:g}){let h=Number(a?.page||1),i=Number(a?.totalPages||1),j=Number(a?.total||0),k=0===j?0:(h-1)*b+1,l=Math.min(j,h*b);return(0,d.jsxs)("div",{className:"flex flex-col gap-3 border-t border-border px-4 py-3 md:flex-row md:items-center md:justify-between",children:[(0,d.jsxs)("div",{className:"text-sm text-text-muted",children:["Hiển thị ",(0,d.jsx)("b",{children:k}),"–",(0,d.jsx)("b",{children:l})," / ",(0,d.jsx)("b",{children:j})," API keys"]}),(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,d.jsxs)("select",{value:b,onChange:a=>e(Number(a.target.value)),className:"rounded-xl border border-border bg-background px-3 py-2 text-sm text-text-main outline-none focus:border-primary",disabled:g,children:[(0,d.jsx)("option",{value:25,children:"25 / trang"}),(0,d.jsx)("option",{value:50,children:"50 / trang"}),(0,d.jsx)("option",{value:100,children:"100 / trang"})]}),(0,d.jsx)(f.$n,{variant:"outline",size:"sm",onClick:()=>c(1),disabled:g||h<=1,children:"Đầu"}),(0,d.jsx)(f.$n,{variant:"outline",size:"sm",onClick:()=>c(Math.max(1,h-1)),disabled:g||h<=1,children:"Trước"}),(0,d.jsxs)("span",{className:"rounded-xl border border-border bg-surface px-3 py-2 text-sm",children:["Trang ",h,"/",i]}),(0,d.jsx)(f.$n,{variant:"outline",size:"sm",onClick:()=>c(Math.min(i,h+1)),disabled:g||h>=i,children:"Sau"}),(0,d.jsx)(f.$n,{variant:"outline",size:"sm",onClick:()=>c(i),disabled:g||h>=i,children:"Cuối"})]})]})}function z({image:a,label:b,onClick:c}){return(0,d.jsx)("button",{type:"button",onClick:c,title:b,"aria-label":b,className:"flex h-9 w-9 items-center justify-center rounded-xl border border-border bg-background transition hover:border-primary/50 hover:bg-surface focus:outline-none focus:ring-2 focus:ring-primary/20",children:(0,d.jsx)("img",{src:a,alt:"","aria-hidden":"true",className:"size-5 rounded-sm object-contain"})})}function A({apiKey:a,onClaudeSettings:b,onOpenCodeSettings:c,onCodexSettings:e,onQwenSettings:f}){return(0,d.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,d.jsx)(z,{image:"/providers/claude.png",label:"Claude Code Settings",onClick:()=>b(a)}),(0,d.jsx)(z,{image:"/providers/opencode.png",label:"OpenCode Settings",onClick:()=>c(a)}),(0,d.jsx)(z,{image:"/providers/codex.png",label:"Codex Settings",onClick:()=>e(a)}),(0,d.jsx)(z,{image:"/providers/qwen.png",label:"Qwen Code Settings",onClick:()=>f(a)})]})}function B({apiKey:a,globalEnabled:b,globalLevel:c,onClose:g,onSave:h,saving:i,infoOnly:j=!1}){let[k,l]=(0,e.useState)(a?.cavemanMode||"inherit"),[m,n]=(0,e.useState)(a?.cavemanLevel||"lite"),[o,p]=(0,e.useState)(j?"info":"edit"),[q,r]=(0,e.useState)("");if(!a)return null;let s="on"===k||"off"!==k&&b,t="on"===k?m:c,u=String(c||"full").toUpperCase(),v="info"===o,w=()=>{if(!i){if(v&&!j)return void p("edit");g()}},x=async()=>{if(!i){r("");try{let a=await h({cavemanMode:k,cavemanLevel:m});!1===a&&r("Kh\xf4ng lưu được cấu h\xecnh Caveman. Vui l\xf2ng kiểm tra lại v\xe0 thử lần nữa.")}catch(a){r(a?.message||"Kh\xf4ng lưu được cấu h\xecnh Caveman.")}}};return(0,d.jsx)(f.aF,{isOpen:!!a,onClose:w,title:v?"Caveman output compression l\xe0 g\xec?":`Caveman: ${a.name||"API Key"}`,size:v?"xl":"lg",footer:v?(0,d.jsx)(f.$n,{onClick:w,disabled:i,children:j?"Đ\xe3 hiểu":"Quay lại cấu h\xecnh"}):void 0,children:v?(0,d.jsxs)("div",{className:"space-y-5 text-sm text-text-main",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2 rounded-xl border border-border bg-surface px-3 py-2",children:[(0,d.jsx)("span",{className:"text-xs text-text-muted",children:"Global Caveman hiện đang:"}),(0,d.jsx)(f.Ex,{variant:b?"success":"default",size:"sm",children:b?"ON":"OFF"}),b?(0,d.jsx)(f.Ex,{variant:"default",size:"sm",children:u}):null,(0,d.jsx)("span",{className:"text-xs text-text-muted",children:'— \xe1p dụng cho API key chọn "Kế thừa Global"'})]}),(0,d.jsxs)("p",{className:"text-text-muted",children:["Caveman ch\xe8n một instruction về phong c\xe1ch trả lời v\xe0o ",(0,d.jsx)("span",{className:"font-semibold text-text-main",children:"provider request"})," ngay trước khi gửi tới model, nhằm giảm lời dẫn, lặp \xfd v\xe0 diễn giải kh\xf4ng cần thiết để output ngắn gọn hơn. T\xednh năng n\xe0y d\xf9ng được cho mọi request qua API key, kh\xf4ng chỉ CLI tool."]}),(0,d.jsxs)("div",{className:"rounded-xl border border-amber-500/30 bg-amber-500/10 p-3 text-amber-800 dark:text-amber-200",children:["Caveman kh\xf4ng n\xe9n input hoặc tool output như RTK. Hiệu quả phụ thuộc model v\xe0 nội dung request. D\xf9ng n\xfat ",(0,d.jsx)("b",{children:"Test"})," ngay cuối block Caveman của API key để gọi c\xf9ng prompt khi Caveman OFF v\xe0 ON, sau đ\xf3 so s\xe1nh output token thực tế."]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h3",{className:"mb-2 font-semibold text-text-main",children:"Caveman được \xe1p dụng ở đ\xe2u?"}),(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface/60 p-3 font-mono text-xs text-text-muted",children:["Client request → x\xe1c thực / quota → routing → translate provider → RTK → ",(0,d.jsx)("span",{className:"font-semibold text-text-main",children:"Caveman"})," → gửi provider"]}),(0,d.jsxs)("ul",{className:"mt-2 list-disc space-y-1 pl-5 text-text-muted",children:[(0,d.jsx)("li",{children:"Kh\xf4ng thay đổi model, provider, account, combo routing, fallback hoặc retry."}),(0,d.jsx)("li",{children:"Client Request v\xe0 Source Request vẫn giữ nội dung gốc."}),(0,d.jsx)("li",{children:"Provider Request JSON trong log sẽ chứa instruction Caveman v\xec đ\xf3 l\xe0 body thực tế gửi upstream."})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h3",{className:"mb-2 font-semibold text-text-main",children:"C\xe1c mức độ"}),(0,d.jsx)("div",{className:"overflow-x-auto rounded-xl border border-border",children:(0,d.jsxs)("table",{className:"min-w-full text-xs",children:[(0,d.jsx)("thead",{className:"bg-surface/80 text-left uppercase tracking-wide text-text-muted",children:(0,d.jsxs)("tr",{children:[(0,d.jsx)("th",{className:"px-3 py-2 font-medium",children:"Mức"}),(0,d.jsx)("th",{className:"px-3 py-2 font-medium",children:"T\xe1c dụng"}),(0,d.jsx)("th",{className:"px-3 py-2 font-medium",children:"Khuyến nghị"})]})}),(0,d.jsxs)("tbody",{className:"divide-y divide-border text-text-muted",children:[(0,d.jsxs)("tr",{children:[(0,d.jsx)("td",{className:"px-3 py-2 font-semibold text-text-main",children:"Lite"}),(0,d.jsx)("td",{className:"px-3 py-2",children:"Bỏ lời dẫn v\xe0 lặp \xfd, vẫn ưu ti\xean giữ giải th\xedch cần thiết."}),(0,d.jsx)("td",{className:"px-3 py-2",children:"Coding CLI, chat kỹ thuật, agent th\xf4ng thường."})]}),(0,d.jsxs)("tr",{children:[(0,d.jsx)("td",{className:"px-3 py-2 font-semibold text-text-main",children:"Full"}),(0,d.jsx)("td",{className:"px-3 py-2",children:"\xc9p c\xe2u trả lời s\xfac t\xedch hơn, ưu ti\xean lệnh, code v\xe0 kết luận."}),(0,d.jsx)("td",{className:"px-3 py-2",children:"Automation, t\xe1c vụ lặp lại, người d\xf9ng đ\xe3 quen ngữ cảnh."})]}),(0,d.jsxs)("tr",{children:[(0,d.jsx)("td",{className:"px-3 py-2 font-semibold text-text-main",children:"Ultra"}),(0,d.jsx)("td",{className:"px-3 py-2",children:"Output cực ngắn, giảm mạnh phần giải th\xedch."}),(0,d.jsx)("td",{className:"px-3 py-2",children:"Chỉ d\xf9ng cho workflow kiểm so\xe1t chặt v\xe0 đ\xe3 kiểm thử."})]})]})]})})]}),(0,d.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[(0,d.jsxs)("div",{className:"rounded-xl border border-green-500/30 bg-green-500/10 p-4",children:[(0,d.jsx)("h3",{className:"mb-2 font-semibold text-green-800 dark:text-green-200",children:"N\xean bật"}),(0,d.jsxs)("ul",{className:"list-disc space-y-1 pl-5 text-green-800/90 dark:text-green-200/90",children:[(0,d.jsx)("li",{children:"Claude Code, Codex CLI, OpenCode v\xe0 coding agent."}),(0,d.jsx)("li",{children:"Chat hỗ trợ kỹ thuật cần c\xe2u trả lời đi thẳng v\xe0o thao t\xe1c."}),(0,d.jsx)("li",{children:"Automation hoặc agent gọi model nhiều lần với ngữ cảnh r\xf5 r\xe0ng."}),(0,d.jsx)("li",{children:"API key chuy\xean d\xf9ng cho output ngắn: lệnh, checklist, kết luận, đoạn code."})]})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-red-500/30 bg-red-500/10 p-4",children:[(0,d.jsx)("h3",{className:"mb-2 font-semibold text-red-800 dark:text-red-200",children:"Kh\xf4ng n\xean bật"}),(0,d.jsxs)("ul",{className:"list-disc space-y-1 pl-5 text-red-800/90 dark:text-red-200/90",children:[(0,d.jsx)("li",{children:"Dịch thuật, viết t\xe0i liệu, b\xe1o c\xe1o, proposal hoặc tạo presentation."}),(0,d.jsx)("li",{children:"Nội dung ph\xe1p l\xfd, hợp đồng, bi\xean bản, incident report cần đầy đủ chi tiết."}),(0,d.jsx)("li",{children:"Hướng dẫn đ\xe0o tạo, giải th\xedch chuy\xean s\xe2u, brainstorming hoặc s\xe1ng tạo nội dung."}),(0,d.jsx)("li",{children:"Workflow y\xeau cầu đ\xfang cấu tr\xfac, đủ trường hoặc wording ch\xednh x\xe1c tuyệt đối."})]})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h3",{className:"mb-2 font-semibold text-text-main",children:"Caveman kh\xe1c RTK thế n\xe0o?"}),(0,d.jsx)("div",{className:"overflow-x-auto rounded-xl border border-border",children:(0,d.jsxs)("table",{className:"min-w-full text-xs",children:[(0,d.jsx)("thead",{className:"bg-surface/80 text-left uppercase tracking-wide text-text-muted",children:(0,d.jsxs)("tr",{children:[(0,d.jsx)("th",{className:"px-3 py-2 font-medium",children:"T\xednh năng"}),(0,d.jsx)("th",{className:"px-3 py-2 font-medium",children:"T\xe1c động"})]})}),(0,d.jsxs)("tbody",{className:"divide-y divide-border text-text-muted",children:[(0,d.jsxs)("tr",{children:[(0,d.jsx)("td",{className:"px-3 py-2 font-semibold text-text-main",children:"RTK"}),(0,d.jsx)("td",{className:"px-3 py-2",children:"R\xfat gọn tool output trước khi gửi model."})]}),(0,d.jsxs)("tr",{children:[(0,d.jsx)("td",{className:"px-3 py-2 font-semibold text-text-main",children:"Caveman"}),(0,d.jsx)("td",{className:"px-3 py-2",children:"Điều khiển model trả lời ngắn hơn."})]})]})]})})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h3",{className:"mb-2 font-semibold text-text-main",children:"Global vs từng API key"}),(0,d.jsxs)("p",{className:"text-text-muted",children:[(0,d.jsx)("span",{className:"font-semibold text-text-main",children:"Kế thừa Global"})," d\xf9ng đ\xfang trạng th\xe1i v\xe0 level tại ",(0,d.jsx)("span",{className:"font-mono text-text-main",children:"/dashboard/endpoint"}),";",(0,d.jsx)("span",{className:"font-semibold text-text-main",children:" Force ON"})," bật ri\xeang cho key v\xe0 d\xf9ng level đ\xe3 chọn;",(0,d.jsx)("span",{className:"font-semibold text-text-main",children:" Force OFF"})," lu\xf4n tắt cho key. Override của API key lu\xf4n thắng Global theo cả hai chiều."]})]})]}):(0,d.jsxs)("div",{className:"space-y-5",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2 rounded-xl border border-border bg-surface p-3 text-sm",children:[(0,d.jsx)("span",{className:"text-text-muted",children:"Global Caveman hiện đang:"}),(0,d.jsx)(f.Ex,{variant:b?"success":"default",size:"sm",children:b?"ON":"OFF"}),b?(0,d.jsx)(f.Ex,{variant:"default",size:"sm",children:u}):null,(0,d.jsx)("span",{className:"text-xs text-text-muted",children:'— \xe1p dụng cho API key chọn "Kế thừa Global"'}),(0,d.jsx)("button",{type:"button",onClick:()=>p("info"),disabled:i,title:"Caveman l\xe0 g\xec? Bấm để xem giải th\xedch","aria-label":"Xem giải th\xedch về Caveman",className:"inline-flex size-5 shrink-0 items-center justify-center rounded-full border border-border text-[11px] font-bold text-text-muted transition-colors hover:border-brand-500 hover:text-brand-600 disabled:cursor-not-allowed disabled:opacity-50",children:"?"})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)("label",{className:"block text-sm font-medium",children:"Chế độ override"}),(0,d.jsxs)("select",{value:k,onChange:a=>{l(a.target.value),r("")},disabled:i,className:"w-full rounded-xl border border-border bg-background px-3 py-2 text-sm disabled:cursor-not-allowed disabled:opacity-60",children:[(0,d.jsxs)("option",{value:"inherit",children:["Kế thừa Global (",b?`ON \xb7 ${u}`:"OFF",")"]}),(0,d.jsx)("option",{value:"on",children:"Force ON"}),(0,d.jsx)("option",{value:"off",children:"Force OFF"})]})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)("label",{className:"block text-sm font-medium",children:"Mức n\xe9n"}),"on"===k?(0,d.jsxs)("select",{value:m,onChange:a=>{n(a.target.value),r("")},disabled:i,className:"w-full rounded-xl border border-border bg-background px-3 py-2 text-sm disabled:cursor-not-allowed disabled:opacity-60",children:[(0,d.jsx)("option",{value:"lite",children:"Lite — an to\xe0n cho coding CLI"}),(0,d.jsx)("option",{value:"full",children:"Full — s\xfac t\xedch hơn"}),(0,d.jsx)("option",{value:"ultra",children:"Ultra — cực ngắn"})]}):(0,d.jsx)("div",{className:"rounded-xl border border-border bg-surface/60 px-3 py-2.5 text-sm text-text-muted",children:"inherit"===k?b?(0,d.jsxs)(d.Fragment,{children:["Đang d\xf9ng mức Global: ",(0,d.jsx)("b",{className:"text-text-main",children:u})]}):(0,d.jsxs)(d.Fragment,{children:["Global đang ",(0,d.jsx)("b",{className:"text-text-main",children:"OFF"}),", n\xean kh\xf4ng c\xf3 mức n\xe9n hiệu lực."]}):(0,d.jsx)(d.Fragment,{children:"Force OFF — mức n\xe9n kh\xf4ng được \xe1p dụng."})})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-border p-3 text-sm text-text-muted",children:["Hiệu lực: ",(0,d.jsx)("b",{className:"text-text-main",children:s?`ON \xb7 ${String(t||"lite").toUpperCase()}`:"OFF"})]}),q?(0,d.jsxs)("div",{className:"flex items-start gap-2 rounded-xl border border-red-500/30 bg-red-500/10 p-3 text-sm text-red-700 dark:text-red-300",children:[(0,d.jsx)("span",{"aria-hidden":"true",className:"material-symbols-outlined text-[19px]",children:"error"}),(0,d.jsx)("span",{children:q})]}):null,(0,d.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,d.jsx)(f.$n,{variant:"outline",onClick:w,disabled:i,children:"Hủy"}),(0,d.jsx)(f.$n,{onClick:x,disabled:i,children:i?"Đang lưu...":"Lưu"})]})]})})}let C=Object.freeze([{value:"lite",label:"Lite",description:"Giữ giải th\xedch cần thiết"},{value:"full",label:"Full",description:"Ưu ti\xean code v\xe0 kết luận"},{value:"ultra",label:"Ultra",description:"Output cực ngắn"}]),D=`Ph\xe2n t\xedch đoạn code sau, chỉ ra lỗi, nguy\xean nh\xe2n v\xe0 đưa bản sửa ho\xe0n chỉnh. Giữ đầy đủ lệnh v\xe0 code cần thiết:
|
|
1
|
+
(()=>{var a={};a.id=7593,a.ids=[7593],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},1932:a=>{"use strict";a.exports=require("url")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4573:a=>{"use strict";a.exports=require("node:buffer")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11777:(a,b,c)=>{Promise.resolve().then(c.bind(c,68070))},17891:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/get-segment-param")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},19771:a=>{"use strict";a.exports=require("process")},21820:a=>{"use strict";a.exports=require("os")},24929:(a,b,c)=>{Promise.resolve().then(c.bind(c,86396))},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},27910:a=>{"use strict";a.exports=require("stream")},28354:a=>{"use strict";a.exports=require("util")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},34631:a=>{"use strict";a.exports=require("tls")},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},41204:a=>{"use strict";a.exports=require("string_decoder")},43954:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/interception-routes")},46293:a=>{"use strict";a.exports=require("sql.js")},51455:a=>{"use strict";a.exports=require("node:fs/promises")},53053:a=>{"use strict";a.exports=require("node:diagnostics_channel")},55511:a=>{"use strict";a.exports=require("crypto")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},64939:a=>{"use strict";a.exports=import("pg")},66136:a=>{"use strict";a.exports=require("timers")},68070:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"D:\\\\bluerouter\\\\src\\\\app\\\\(dashboard)\\\\dashboard\\\\api-keys\\\\ApiKeysPageClient.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"D:\\bluerouter\\src\\app\\(dashboard)\\dashboard\\api-keys\\ApiKeysPageClient.js","default")},70722:a=>{"use strict";a.exports=require("next/dist/shared/lib/invariant-error")},73024:a=>{"use strict";a.exports=require("node:fs")},74075:a=>{"use strict";a.exports=require("zlib")},76760:a=>{"use strict";a.exports=require("node:path")},77068:a=>{"use strict";a.exports=require("next/dist/shared/lib/size-limit")},77598:a=>{"use strict";a.exports=require("node:crypto")},77619:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(5735),e=c(68070);function f(){return(0,d.jsx)(e.default,{})}},79314:(a,b,c)=>{"use strict";c.r(b),c.d(b,{__next_app__:()=>O,handler:()=>Q,routeModule:()=>P});var d=c(7553),e=c(84006),f=c(67798),g=c(34775),h=c(99373),i=c(73461),j=c(1020),k=c(26349),l=c(54365),m=c(16023),n=c(14965),o=c(63747),p=c(24235),q=c(23938),r=c(261),s=c(66758),t=c(77243),u=c(26713),v=c(37527),w=c(22820),x=c(88216),y=c(47929),z=c(79551),A=c(71797),B=c(89125),C=c(86439),D=c(77068),E=c(27269),F=c(37525),G=c(61287),H=c(81494),I=c(70722),J=c(70753),K=c(43954),L=c(17891),M={};for(let a in G)0>["default","__next_app__","routeModule","handler"].indexOf(a)&&(M[a]=()=>G[a]);c.d(b,M);let N={children:["",{children:["(dashboard)",{children:["dashboard",{children:["api-keys",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,77619)),"D:\\bluerouter\\src\\app\\(dashboard)\\dashboard\\api-keys\\page.js"]}]},{"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"]},[]]},{"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"]},[]]},{layout:[()=>Promise.resolve().then(c.bind(c,30508)),"D:\\bluerouter\\src\\app\\(dashboard)\\layout.js"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,55091,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,45270,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,28193,23)),"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await Promise.resolve().then(c.bind(c,70440))).default(a)],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]},{layout:[()=>Promise.resolve().then(c.bind(c,32059)),"D:\\bluerouter\\src\\app\\layout.js"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,55091,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,45270,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,28193,23)),"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await Promise.resolve().then(c.bind(c,70440))).default(a)],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]}.children,O={require:c,loadChunk:()=>Promise.resolve()},P=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/(dashboard)/dashboard/api-keys/page",pathname:"/dashboard/api-keys",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:N},distDir:".next-cli-build",relativeProjectDir:""});async function Q(a,b,d){var M,R,S,T,U;d.requestMeta&&(0,h.setRequestMeta)(a,d.requestMeta),P.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let V=!!(0,h.getRequestMeta)(a,"minimalMode"),W="/(dashboard)/dashboard/api-keys/page";"/index"===W&&(W="/");let X=await P.prepare(a,b,{srcPage:W,multiZoneDraftMode:!1});if(!X)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:Y,query:Z,params:$,pageIsDynamic:_,buildManifest:aa,nextFontManifest:ab,reactLoadableManifest:ac,serverActionsManifest:ad,clientReferenceManifest:ae,subresourceIntegrityManifest:af,prerenderManifest:ag,isDraftMode:ah,resolvedPathname:ai,revalidateOnlyGenerated:aj,routerServerContext:ak,nextConfig:al,parsedUrl:am,interceptionRoutePatterns:an,deploymentId:ao,clientAssetToken:ap}=X,aq=(0,r.normalizeAppPath)(W),{isOnDemandRevalidate:ar}=X,as=al.experimental.ppr&&!al.cacheComponents&&(0,K.isInterceptionRouteAppPath)(ai)?null:P.match(ai,ag),at=(null==as?void 0:as.route)??null,au=!!ag.routes[ai],av=a.headers["user-agent"]||"",aw=(0,u.getBotType)(av),ax=(0,q.isHtmlBotRequest)(a),ay=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[t.NEXT_ROUTER_PREFETCH_HEADER],az=(0,h.getRequestMeta)(a,"isRSCRequest")??(0,n.f)(a.headers[t.RSC_HEADER]),aA=(0,s.getIsPossibleServerAction)(a),aB=(0,m.checkIsAppPPREnabled)(al.experimental.ppr),aC=a.headers[y.NEXT_RESUME_STATE_LENGTH_HEADER];if(!(0,h.getRequestMeta)(a,"postponed")&&V&&aB&&aA&&aC&&"string"==typeof aC){let e=parseInt(aC,10),{maxPostponedStateSize:f,maxPostponedStateSizeBytes:g}=(0,E.getMaxPostponedStateSize)(al.experimental.maxPostponedStateSize);if(!isNaN(e)&&e>0){if(e>g)return b.statusCode=413,b.end((0,E.getPostponedStateExceededErrorMessage)(f)),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let i="1 MB",j=(null==(U=al.experimental.serverActions)?void 0:U.bodySizeLimit)??i,k=e+(j!==i?c(95726).parse(j):1048576),l=await (0,E.readBodyWithSizeLimit)(a,k);if(null===l)return b.statusCode=413,b.end("Request body exceeded limit. To configure the body size limit for Server Actions, see: https://nextjs.org/docs/app/api-reference/next-config-js/serverActions#bodysizelimit"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;if(l.length>=e){let b=l.subarray(0,e).toString("utf8");(0,h.addRequestMeta)(a,"postponed",b);let c=l.subarray(e);(0,h.addRequestMeta)(a,"actionBody",c)}else throw Object.defineProperty(Error(`invariant: expected ${e} bytes of postponed state but only received ${l.length} bytes`),"__NEXT_ERROR_CODE",{value:"E979",enumerable:!1,configurable:!0})}}if(!(0,h.getRequestMeta)(a,"postponed")&&aB&&"1"===a.headers[y.NEXT_RESUME_HEADER]&&"POST"===a.method){let{maxPostponedStateSize:c,maxPostponedStateSizeBytes:e}=(0,E.getMaxPostponedStateSize)(al.experimental.maxPostponedStateSize),f=await (0,E.readBodyWithSizeLimit)(a,e);if(null===f)return b.statusCode=413,b.end((0,E.getPostponedStateExceededErrorMessage)(c)),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let g=f.toString("utf8");(0,h.addRequestMeta)(a,"postponed",g)}let aD=!0===P.isDev||!0===al.experimental.exposeTestingApiInProductionBuild,aE=aD&&("1"===a.headers[t.NEXT_INSTANT_PREFETCH_HEADER]||!(0,n.f)(a.headers[t.RSC_HEADER])&&"string"==typeof a.headers.cookie&&a.headers.cookie.includes(t.NEXT_INSTANT_TEST_COOKIE+"=")),aF=(aB||aE)&&((null==(M=ag.routes[aq]??ag.dynamicRoutes[aq])?void 0:M.renderingMode)==="PARTIALLY_STATIC"||aE&&(aD||(null==ak?void 0:ak.experimentalTestProxy)===!0)),aG=aE&&aF,aH=aG&&!0===P.isDev,aI=!1,aJ=aF?(0,h.getRequestMeta)(a,"postponed"):void 0,aK=null==(R=ag.routes[ai])?void 0:R.prefetchDataRoute,aL=aF&&az&&!ay&&!aK;V&&(aL=aL&&!!aJ);let aM=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),aN=(!aw||!aF)&&(!av||(0,q.shouldServeStreamingMetadata)(av,al.htmlLimitedBots)),aO=!!((at||au||ag.routes[aq])&&!(aw&&aF)),aP=aF&&!0===al.cacheComponents,aQ=!0===P.isDev||!aO||"string"==typeof aJ||(aP&&(0,h.getRequestMeta)(a,"onCacheEntryV2")?aL&&!V:aL),aR=!!aw&&aF,aS=(null==at?void 0:at.remainingPrerenderableParams)??[],aT=(null==at?void 0:at.fallback)===null&&((null==(S=at.fallbackRootParams)?void 0:S.length)??0)>0,aU=null;if(!ah&&aO&&!aQ&&!aA&&!aJ&&!aL){let a=as?"string"==typeof(null==at?void 0:at.fallback)?at.fallback:as.source:null;if(!0===al.experimental.partialFallbacks&&a&&(null==at?void 0:at.fallbackRouteParams)&&!aT){if(aS.length>0){let b,c=(b=new Map(aS.map(a=>[a.paramName,a])),a.split("/").map(a=>{let c=(0,L.getSegmentParam)(a);if(!c)return a;let d=b.get(c.paramName);if(!d)return a;let e=null==$?void 0:$[d.paramName];if(!e)return a;let f=Array.isArray(e)?e.map(a=>encodeURIComponent(a)).join("/"):encodeURIComponent(e);return a.replace((0,o.buildDynamicSegmentPlaceholder)(d),f)}).join("/")||"/");aU=c!==a?c:null}}else aU=ai}let aV=aU;!aV&&(P.isDev||aO&&_&&(null==at?void 0:at.fallbackRouteParams)&&!aA)&&(aV=ai),P.isDev||ah||!aO||!az||aL||(0,k.d)(a.headers);let aW={...G,tree:N,handler:Q,routeModule:P,__next_app__:O};ad&&ae&&(0,p.setManifestsSingleton)({page:W,clientReferenceManifest:ae,serverActionsManifest:ad});let aX=a.method||"GET",aY=(0,g.getTracer)(),aZ=aY.getActiveScopeSpan(),a$=!!(null==ak?void 0:ak.isWrappedByNextServer),a_=!0===al.experimental.partialFallbacks&&aS.length>0?(null==at||null==(T=at.fallbackRouteParams)?void 0:T.filter(a=>!aS.some(b=>b.paramName===a.paramName)))??[]:[],a0=async()=>((null==ak?void 0:ak.render404)?await ak.render404(a,b,am,!1):b.end("This page could not be found"),null);try{let k,m=P.getVaryHeader(ai,an);b.setHeader("Vary",m);let n=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return P.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let a=aY.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let d=a.get("next.route");if(d){let a=`${aX} ${d}`;c.setAttributes({"next.route":d,"http.route":d,"next.span_name":a}),c.updateName(a),k&&k!==c&&(k.setAttribute("http.route",d),k.updateName(a))}else c.updateName(`${aX} ${W}`)})},p=(0,h.getRequestMeta)(a,"incrementalCache")||await P.getIncrementalCache(a,al,ag,V);null==p||p.resetRequestCache(),globalThis.__incrementalCache=p;let q=async({span:e,postponed:f,fallbackRouteParams:g,forceStaticRender:i})=>{let k={query:Z,params:$,page:aq,sharedContext:{buildId:Y,deploymentId:ao,clientAssetToken:ap},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aW,Component:(0,j.T)(aW),params:$,routeModule:P,page:W,postponed:f,shouldWaitOnAllReady:aR,serveStreamingMetadata:aN,supportsDynamicResponse:"string"==typeof f||aQ,buildManifest:aa,nextFontManifest:ab,reactLoadableManifest:ac,subresourceIntegrityManifest:af,setCacheStatus:null==ak?void 0:ak.setCacheStatus,setIsrStatus:null==ak?void 0:ak.setIsrStatus,setReactDebugChannel:null==ak?void 0:ak.setReactDebugChannel,sendErrorsToBrowser:null==ak?void 0:ak.sendErrorsToBrowser,dir:c(33873).join(process.cwd(),P.relativeProjectDir),isDraftMode:ah,botType:aw,isOnDemandRevalidate:ar,isPossibleServerAction:aA,assetPrefix:al.assetPrefix,nextConfigOutput:al.output,crossOrigin:al.crossOrigin,trailingSlash:al.trailingSlash,images:al.images,previewProps:ag.preview,enableTainting:al.experimental.taint,htmlLimitedBots:al.htmlLimitedBots,reactMaxHeadersLength:al.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:p,cacheLifeProfiles:al.cacheLife,basePath:al.basePath,serverActions:al.experimental.serverActions,logServerFunctions:"object"==typeof al.logging&&!!al.logging.serverFunctions,...aG||aH||aI?{isBuildTimePrerendering:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isDebugDynamicAccesses:aH}:{},cacheComponents:!!al.cacheComponents,experimental:{isRoutePPREnabled:aF,expireTime:al.expireTime,staleTimes:al.experimental.staleTimes,dynamicOnHover:!!al.experimental.dynamicOnHover,optimisticRouting:!!al.experimental.optimisticRouting,inlineCss:!!al.experimental.inlineCss,prefetchInlining:al.experimental.prefetchInlining??!1,authInterrupts:!!al.experimental.authInterrupts,cachedNavigations:!!al.experimental.cachedNavigations,clientTraceMetadata:al.experimental.clientTraceMetadata||[],clientParamParsingOrigins:al.experimental.clientParamParsingOrigins,maxPostponedStateSizeBytes:(0,D.parseMaxPostponedStateSize)(al.experimental.maxPostponedStateSize)},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d,e)=>P.onRequestError(a,b,d,e,ak),err:(0,h.getRequestMeta)(a,"invokeError")}};i&&(k.renderOpts.supportsDynamicResponse=!1);let l=await n(e,k),{metadata:m}=l,{cacheControl:o,headers:q={},fetchTags:r,fetchMetrics:s}=m;if(r&&(q[y.NEXT_CACHE_TAGS_HEADER]=r),a.fetchMetrics=s,aO&&(null==o?void 0:o.revalidate)===0&&!P.isDev&&!aF){let a=m.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${ai}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
|
|
2
|
+
see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:v.CachedRouteKind.APP_PAGE,html:l,headers:q,rscData:m.flightData,postponed:m.postponed,status:m.statusCode,segmentData:m.segmentData},cacheControl:o}},r=async({hasResolved:c,previousCacheEntry:g,isRevalidating:i,span:j,forceStaticRender:k=!1})=>{let l=!1===P.isDev,m=c||b.writableEnded;try{var n;let f;if(ar&&aj&&!g&&!V)return(null==ak?void 0:ak.render404)?await ak.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(at&&(f=(0,w.parseFallbackField)(at.fallback)),!0===al.experimental.partialFallbacks&&(null==at?void 0:at.fallback)===null&&!aT&&aS.length>0&&(f=w.FallbackMode.PRERENDER),f===w.FallbackMode.PRERENDER&&(0,u.isBot)(av)&&(!aF||ax)&&(f=w.FallbackMode.BLOCKING_STATIC_RENDER),(null==g?void 0:g.isStale)===-1&&(ar=!0),ar&&(f!==w.FallbackMode.NOT_FOUND||g)&&(f=w.FallbackMode.BLOCKING_STATIC_RENDER),!V&&f!==w.FallbackMode.BLOCKING_STATIC_RENDER&&aV&&!m&&!ah&&_&&(l||!au)){if((l||at)&&f===w.FallbackMode.NOT_FOUND){if(al.adapterPath)return await a0();throw new C.NoFallbackError}if(aF&&(al.cacheComponents?!aL:!az)){let b=l&&"string"==typeof(null==at?void 0:at.fallback)?at.fallback:aq,f=(l||aG)&&(null==at?void 0:at.fallbackRouteParams)?(0,o.createOpaqueFallbackRouteParams)(at.fallbackRouteParams):aI?(0,o.getFallbackRouteParams)(aq,P):null;aG&&f&&(0,h.addRequestMeta)(a,"fallbackParams",f);let g=await P.handleResponse({cacheKey:b,req:a,nextConfig:al,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:ag,isRoutePPREnabled:aF,responseGenerator:async()=>q({span:j,postponed:void 0,fallbackRouteParams:f,forceStaticRender:!0}),waitUntil:d.waitUntil,isMinimalMode:V});if(null===g)return null;if(g)return V||!aF||!(aS.length>0)||!0!==al.experimental.partialFallbacks||!aU||!p||ar||aI||aD||aE||ay||(0,J.scheduleOnNextTick)(async()=>{let b=P.getResponseCache(a);try{await b.revalidate(aU,p,aF,!1,a=>q({span:a.span,postponed:void 0,fallbackRouteParams:a_.length>0?(0,o.createOpaqueFallbackRouteParams)(a_):null,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}),delete g.cacheControl,g}}let s=ar||i||!aJ?void 0:aJ;if(aP&&!V&&p&&(aL||aA)&&!k){let b=await p.get(ai,{kind:v.IncrementalCacheKind.APP_PAGE,isRoutePPREnabled:!0,isFallback:!1});b&&b.value&&b.value.kind===v.CachedRouteKind.APP_PAGE&&(s=b.value.postponed,b&&(-1===b.isStale||!0===b.isStale)&&(0,J.scheduleOnNextTick)(async()=>{let b=P.getResponseCache(a);try{await b.revalidate(ai,p,aF,!1,a=>r({...a,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}))}if((aG||aH)&&void 0!==s)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:v.CachedRouteKind.PAGES,html:x.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let t=!P.isDev&&_&&(null==at?void 0:at.fallbackRouteParams)?(0,o.getPlaceholderFallbackRouteParams)($,at.fallbackRouteParams):null,y=t&&t.length>0?t:null==at?void 0:at.fallbackRouteParams,z=null!=t&&t.length>0,A=null;if(al.cacheComponents&&(null==at?void 0:at.fallbackRouteParams)){let b=(0,h.getRequestMeta)(a,"resolvedRouteParamKeys");b&&b.size>0&&(A=at.fallbackRouteParams.filter(a=>!b.has(a.paramName)))}let B=(l&&(0,h.getRequestMeta)(a,"renderFallbackShell")||z||aG&&!au)&&y?(0,o.createOpaqueFallbackRouteParams)(y):A&&A.length>0&&A.length<((null==at||null==(n=at.fallbackRouteParams)?void 0:n.length)??0)?(0,o.createOpaqueFallbackRouteParams)(A):aI?(0,o.getFallbackRouteParams)(aq,P):null;if((l||aG)&&al.cacheComponents&&!au&&(null==at?void 0:at.fallbackRouteParams)){let b=(0,o.createOpaqueFallbackRouteParams)(y??at.fallbackRouteParams);b&&(0,h.addRequestMeta)(a,"fallbackParams",b)}return q({span:j,postponed:s,fallbackRouteParams:B,forceStaticRender:k})}catch(b){throw(null==g?void 0:g.isStale)&&await P.onRequestError(a,b,{routerKind:"App Router",routePath:W,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:aO,isOnDemandRevalidate:ar})},!1,ak),b}},s=async c=>{var f,g,i,j,k,l;let m,n=await P.handleResponse({cacheKey:aU,responseGenerator:a=>r({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ar,isRoutePPREnabled:aF,req:a,nextConfig:al,prerenderManifest:ag,waitUntil:d.waitUntil,isMinimalMode:V});if(ah&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),P.isDev&&b.setHeader("Cache-Control","no-cache, must-revalidate"),!n){if(aU)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=n.value)?void 0:f.kind)!==v.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=n.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let o="string"==typeof n.value.postponed;az&&!aA&&ao&&b.setHeader(y.NEXT_NAV_DEPLOYMENT_ID_HEADER,ao),aO&&!aL&&(!o||ay)&&(V||b.setHeader("x-nextjs-cache",ar?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),b.setHeader(t.NEXT_IS_PRERENDER_HEADER,"1"));let{value:p}=n;if(aJ)m={revalidate:0,expire:void 0};else if(aL)m={revalidate:0,expire:void 0};else if(!P.isDev)if(ah)m={revalidate:0,expire:void 0};else if(aO){if(n.cacheControl)if("number"==typeof n.cacheControl.revalidate){if(n.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${n.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});m={revalidate:n.cacheControl.revalidate,expire:(null==(j=n.cacheControl)?void 0:j.expire)??al.expireTime}}else m={revalidate:y.CACHE_ONE_YEAR_SECONDS,expire:void 0}}else b.getHeader("Cache-Control")||(m={revalidate:0,expire:void 0});if(n.cacheControl=m,"string"==typeof aM&&(null==p?void 0:p.kind)===v.CachedRouteKind.APP_PAGE&&p.segmentData){b.setHeader(t.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=p.headers)?void 0:k[y.NEXT_CACHE_TAGS_HEADER];V&&aO&&c&&"string"==typeof c&&b.setHeader(y.NEXT_CACHE_TAGS_HEADER,c);let d=p.segmentData.get(aM);return void 0!==d?(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.fromStatic(d,t.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl}):(b.statusCode=204,(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.EMPTY,cacheControl:n.cacheControl}))}let s=aP?(0,h.getRequestMeta)(a,"onCacheEntryV2")??(0,h.getRequestMeta)(a,"onCacheEntry"):(0,h.getRequestMeta)(a,"onCacheEntry");if(s){let b=(0,h.getRequestMeta)(a,"initURL")??a.url,c=b?(null==(l=(0,F.parseUrl)(b))?void 0:l.pathname)??b:void 0;if(await s(n,{url:c}))return null}if(p.headers){let a={...p.headers};for(let[c,d]of(V&&aO||delete a[y.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let u=null==(g=p.headers)?void 0:g[y.NEXT_CACHE_TAGS_HEADER];if(V&&aO&&u&&"string"==typeof u&&b.setHeader(y.NEXT_CACHE_TAGS_HEADER,u),!p.status||az&&aF||(b.statusCode=p.status),!V&&p.status&&H.RedirectStatusCode[p.status]&&az&&(b.statusCode=200),o&&!aL&&b.setHeader(t.NEXT_DID_POSTPONE_HEADER,"1"),az&&!ah){if(void 0===p.rscData){if(p.html.contentType!==t.RSC_CONTENT_TYPE_HEADER)if(al.cacheComponents)return b.statusCode=404,(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.EMPTY,cacheControl:n.cacheControl});else throw Object.defineProperty(new I.InvariantError(`Expected RSC response, got ${p.html.contentType}`),"__NEXT_ERROR_CODE",{value:"E789",enumerable:!1,configurable:!0});return(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:p.html,cacheControl:n.cacheControl})}return(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.fromStatic(p.rscData,t.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl})}let w=p.html;if(aE&&aG){let c=!0===P.isDev?crypto.randomUUID():null;return w.pipeThrough(await (0,A.createInstantTestScriptInsertionTransformStream)(c)),(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:{revalidate:0,expire:void 0}})}if(!o||V||az)return(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:n.cacheControl});if(aG||aH)return w.push(new ReadableStream({start(a){a.enqueue(z.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:{revalidate:0,expire:void 0}});let C=new TransformStream;return w.push(C.readable),q({span:c,postponed:p.postponed,fallbackRouteParams:null,forceStaticRender:!1}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==v.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(C.writable)}).catch(a=>{C.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:{revalidate:0,expire:void 0}})};if(!a$||!aZ)return k=aY.getActiveScopeSpan(),await aY.withPropagatedContext(a.headers,()=>aY.trace(i.BaseServerSpan.handleRequest,{spanName:`${aX} ${W}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aX,"http.target":a.url}},s),void 0,!a$);await s(aZ)}catch(b){throw b instanceof C.NoFallbackError||await P.onRequestError(a,b,{routerKind:"App Router",routePath:W,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:aO,isOnDemandRevalidate:ar})},!1,ak),b}}},79428:a=>{"use strict";a.exports=require("buffer")},79748:a=>{"use strict";a.exports=require("fs/promises")},79868:a=>{"use strict";a.exports=require("node:sqlite")},81787:a=>{"use strict";a.exports=require("bun:sqlite")},86396:(a,b,c)=>{"use strict";c.d(b,{default:()=>M});var d=c(48249),e=c(67484),f=c(50412),g=c(20151),h=c(50377);let i=Object.freeze({enabled:!0,requestsPerMinute:20,promptCharsMax:12e4,maxOutputTokens:0,forceThinkingOff:!0,allowedIpCidrs:[],expiresAt:""});function j(a){return String(a||"").trim().toLowerCase()}function k(a){return Array.isArray(a)?[...new Set(a.map(a=>String(a||"").trim()).filter(Boolean))]:[]}function l(a,b){let c=k(a?.allowedModels),d=c[0]||String(b||"programmer").trim()||"programmer",e=c.find(a=>/fast|small|haiku/i.test(a))||c.find(a=>a!==d)||d;return{codingModel:d,fastModel:e}}function m({icon:a,materialIcon:b,image:c,children:e,className:f=""}){return(0,d.jsxs)("span",{className:`inline-flex items-center gap-1.5 ${f}`,children:[c?(0,d.jsx)("img",{src:c,alt:"","aria-hidden":"true",className:"size-4 rounded-sm object-contain"}):b?(0,d.jsx)("span",{"aria-hidden":"true",className:"material-symbols-outlined text-[17px] leading-none",children:b}):a?(0,d.jsx)("span",{"aria-hidden":"true",className:"text-base leading-none",children:a}):null,(0,d.jsx)("span",{children:e})]})}function n(a,b=0){let c=Number(a);return Number.isFinite(c)?Math.max(0,Math.floor(c)):b}function o(a,b=!0){return null==a||""===a?b:!0===a||"true"===a||1===a||"1"===a}function p(a){return Array.isArray(a)?[...new Set(a.map(a=>String(a||"").trim()).filter(Boolean))]:[]}function q(a){return a&&"object"==typeof a&&!Array.isArray(a)&&Object.keys(a).length>0}function r(a={},b={}){let c={...b},d=a&&"object"==typeof a&&!Array.isArray(a)?a:{};return{enabled:o(d.enabled??c.enabled,!0),requestsPerMinute:n(d.requestsPerMinute??c.requestsPerMinute,0),promptCharsMax:n(d.promptCharsMax??c.promptCharsMax,0),maxOutputTokens:n(d.maxOutputTokens??d.outputTokensMax??d.maxTokens??d.max_tokens??d.max_completion_tokens??c.maxOutputTokens,0),forceThinkingOff:o(d.forceThinkingOff??c.forceThinkingOff,!0),allowedIpCidrs:p(d.allowedIpCidrs??c.allowedIpCidrs),expiresAt:String(d.expiresAt??c.expiresAt??"").trim()}}function s({models:a,emptyLabel:b="Chưa g\xe1n model"}){let c=k(a);return 0===c.length?(0,d.jsx)("span",{className:"text-xs text-text-muted",children:b}):(0,d.jsxs)("div",{className:"mt-2 flex flex-wrap gap-1.5",children:[c.slice(0,8).map(a=>(0,d.jsx)("span",{className:"rounded-full border border-border bg-surface px-2 py-1 font-mono text-xs",children:a},a)),c.length>8?(0,d.jsxs)("span",{className:"rounded-full border border-border bg-surface px-2 py-1 text-xs",children:["+",c.length-8," model kh\xe1c"]}):null]})}function t({limits:a,showThinking:b=!1,showOutputLimit:c=!1}){if(!q(a))return(0,d.jsx)("div",{className:"mt-2 flex flex-wrap gap-2 text-xs text-text-muted",children:(0,d.jsx)("span",{className:"rounded-full border border-border bg-surface px-2 py-1",children:"policy: chưa set, kh\xf4ng giới hạn"})});let e=r(a);return(0,d.jsxs)("div",{className:"mt-2 flex flex-wrap gap-2 text-xs text-text-muted",children:[(0,d.jsxs)("span",{className:"rounded-full border border-border bg-surface px-2 py-1",children:["policy: ",e.enabled?"bật":"tắt"]}),(0,d.jsxs)("span",{className:"rounded-full border border-border bg-surface px-2 py-1",children:[e.requestsPerMinute||"∞"," req/ph\xfat"]}),(0,d.jsxs)("span",{className:"rounded-full border border-border bg-surface px-2 py-1",children:[e.promptCharsMax||"∞"," chars prompt"]}),c?(0,d.jsxs)("span",{className:"rounded-full border border-border bg-surface px-2 py-1",children:[e.maxOutputTokens||"∞"," output tokens"]}):null,b?(0,d.jsxs)("span",{className:"rounded-full border border-border bg-surface px-2 py-1",children:["thinking: ",e.forceThinkingOff?"force off":"client tự quyết"]}):null,e.allowedIpCidrs.length>0?(0,d.jsx)("span",{className:"rounded-full border border-border bg-surface px-2 py-1",children:"IP locked"}):null]})}function u({label:a,value:b,onChange:c,hint:e}){return(0,d.jsxs)("label",{className:"block",children:[(0,d.jsx)("span",{className:"mb-1 block text-xs font-medium text-text-muted",children:a}),(0,d.jsx)("input",{type:"number",min:"0",value:b,onChange:a=>c(n(a.target.value,0)),className:"w-full rounded-xl border border-border bg-background px-3 py-2 text-sm text-text-main outline-none focus:border-primary"}),e?(0,d.jsx)("span",{className:"mt-1 block text-xs text-text-muted",children:e}):null]})}function v({isOpen:a,keyName:b,policy:c,setPolicy:e,onClose:g,onSave:h,onClear:j,saving:k,clearLabel:l="X\xf3a policy / kh\xf4ng limit"}){let m=r(c,i),n=(a,b)=>e(c=>r({...c,[a]:b},i));return(0,d.jsx)(f.aF,{isOpen:a,onClose:g,title:`Policy API key: ${b||"API Key"}`,size:"xl",children:(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface/60 p-3 text-sm text-text-muted",children:["Key mới tự c\xf3 ",(0,d.jsx)("b",{children:"default policy"}),". Chỉ admin được sửa policy. Request/ph\xfat = 0 nghĩa l\xe0 kh\xf4ng giới hạn tần suất. Max output tokens = 0 nghĩa l\xe0 kh\xf4ng \xe9p giới hạn output."]}),(0,d.jsxs)("label",{className:"flex items-center justify-between gap-3 rounded-xl border border-border p-3 text-sm",children:[(0,d.jsxs)("span",{children:[(0,d.jsx)("b",{children:"Bật policy"}),(0,d.jsx)("br",{}),(0,d.jsx)("span",{className:"text-xs text-text-muted",children:"Tắt mục n\xe0y th\xec policy được lưu nhưng kh\xf4ng \xe1p limit."})]}),(0,d.jsx)("input",{type:"checkbox",checked:m.enabled,onChange:a=>n("enabled",a.target.checked)})]}),(0,d.jsxs)("div",{className:"grid gap-3 md:grid-cols-2",children:[(0,d.jsx)(u,{label:"Request / ph\xfat",value:m.requestsPerMinute,onChange:a=>n("requestsPerMinute",a),hint:"0 = kh\xf4ng giới hạn tần suất. Khuyến nghị user thường: 10–20 req/ph\xfat."}),(0,d.jsx)(u,{label:"Max output tokens",value:m.maxOutputTokens,onChange:a=>n("maxOutputTokens",a),hint:"0 = kh\xf4ng giới hạn. VS Code khuyến nghị 2048–3072; chat d\xe0i 4096–8192."})]}),(0,d.jsx)(u,{label:"Prompt chars tối đa",value:m.promptCharsMax,onChange:a=>n("promptCharsMax",a),hint:"0 = kh\xf4ng giới hạn input/prompt."}),(0,d.jsxs)("label",{className:"flex items-center justify-between gap-3 rounded-xl border border-border p-3 text-sm",children:[(0,d.jsxs)("span",{children:[(0,d.jsx)("b",{children:"Force Thinking Off"}),(0,d.jsx)("br",{}),(0,d.jsx)("span",{className:"text-xs text-text-muted",children:"Khi bật, gateway \xe9p request c\xf3 chat_template_kwargs.enable_thinking=false theo chuẩn llama.cpp."})]}),(0,d.jsx)("input",{type:"checkbox",checked:m.forceThinkingOff,onChange:a=>n("forceThinkingOff",a.target.checked)})]}),(0,d.jsxs)("label",{className:"block",children:[(0,d.jsx)("span",{className:"mb-1 block text-xs font-medium text-text-muted",children:"IP/CIDR được ph\xe9p"}),(0,d.jsx)("textarea",{value:p(m.allowedIpCidrs).join("\n"),onChange:a=>n("allowedIpCidrs",[...new Set(String(a.target.value||"").split(/[\n,]+/).map(a=>a.trim()).filter(Boolean))]),rows:3,className:"w-full rounded-xl border border-border bg-background px-3 py-2 font-mono text-sm text-text-main outline-none focus:border-primary",placeholder:"10.0.0.0/8\n192.168.0.0/16"}),(0,d.jsx)("span",{className:"mt-1 block text-xs text-text-muted",children:"Để trống = mọi IP. Hỗ trợ IPv4 exact hoặc CIDR."})]}),(0,d.jsxs)("label",{className:"block",children:[(0,d.jsx)("span",{className:"mb-1 block text-xs font-medium text-text-muted",children:"Hết hạn l\xfac"}),(0,d.jsx)("input",{value:m.expiresAt,onChange:a=>n("expiresAt",a.target.value),className:"w-full rounded-xl border border-border bg-background px-3 py-2 font-mono text-sm text-text-main outline-none focus:border-primary",placeholder:"2026-12-31T23:59:59+07:00 hoặc để trống"})]}),(0,d.jsxs)("div",{className:"flex flex-wrap justify-end gap-2",children:[(0,d.jsx)(f.$n,{variant:"ghost",onClick:g,children:"Hủy"}),j?(0,d.jsx)(f.$n,{variant:"outline",onClick:j,disabled:k,children:l}):null,(0,d.jsx)(f.$n,{onClick:()=>h(m),disabled:k,children:k?"Đang lưu...":"Lưu policy"})]})]})})}function w({open:a,keyName:b,models:c,setModels:g,activeProviders:h,modelAliases:i,onClose:j,onSave:l,saving:m,personalOnly:n,extraModels:o}){let[p,q]=(0,e.useState)(!1),r=k(c),s=a=>{let b=a?.value||a?.name||a;g(a=>k(a).filter(a=>a!==b))};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(f.aF,{isOpen:a,onClose:j,title:`Model access: ${b||"API Key"}`,size:"xl",children:(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Chọn một hoặc nhiều model m\xe0 API key n\xe0y được ph\xe9p sử dụng. Trang n\xe0y kh\xf4ng cho lưu danh s\xe1ch model rỗng."}),(0,d.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,d.jsx)("span",{className:"text-sm font-medium",children:"Model được ph\xe9p d\xf9ng"}),(0,d.jsx)(f.$n,{size:"sm",variant:"outline",onClick:()=>q(!0),children:"Th\xeam model"})]}),0===r.length?(0,d.jsx)("div",{className:"rounded-xl border border-dashed border-border p-4 text-sm text-text-muted",children:"Chưa chọn model n\xe0o. H\xe3y th\xeam \xedt nhất một model trước khi lưu."}):(0,d.jsx)("div",{className:"flex flex-wrap gap-2",children:r.map(a=>(0,d.jsxs)("button",{type:"button",onClick:()=>s(a),className:"rounded-full border border-primary/30 bg-primary/10 px-2 py-1 font-mono text-xs text-primary transition hover:bg-red-500/10 hover:text-red-600",title:"Bấm để gỡ model n\xe0y",children:[a," \xd7"]},a))}),(0,d.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,d.jsx)(f.$n,{variant:"ghost",onClick:j,children:"Hủy"}),(0,d.jsx)(f.$n,{onClick:l,disabled:m||0===r.length,children:m?"Đang lưu...":"Lưu danh s\xe1ch model"})]})]})}),(0,d.jsx)(f.rq,{isOpen:p,onClose:()=>q(!1),onSelect:a=>{let b=a?.value||a?.name||a;b&&g(a=>k([...a,b]))},onDeselect:s,activeProviders:h,modelAliases:i,title:"Chọn model được ph\xe9p d\xf9ng",addedModelValues:r,closeOnSelect:!1,personalOnly:n,extraModels:o})]})}function x({label:a,value:b,hint:c}){return(0,d.jsxs)("div",{className:"rounded-2xl border border-border bg-surface/70 p-4",children:[(0,d.jsx)("div",{className:"text-xs font-medium uppercase tracking-wide text-text-muted",children:a}),(0,d.jsx)("div",{className:"mt-2 text-2xl font-semibold text-text-main",children:b}),c?(0,d.jsx)("div",{className:"mt-1 text-xs text-text-muted",children:c}):null]})}function y({pagination:a,pageSize:b,onPageChange:c,onPageSizeChange:e,loading:g}){let h=Number(a?.page||1),i=Number(a?.totalPages||1),j=Number(a?.total||0),k=0===j?0:(h-1)*b+1,l=Math.min(j,h*b);return(0,d.jsxs)("div",{className:"flex flex-col gap-3 border-t border-border px-4 py-3 md:flex-row md:items-center md:justify-between",children:[(0,d.jsxs)("div",{className:"text-sm text-text-muted",children:["Hiển thị ",(0,d.jsx)("b",{children:k}),"–",(0,d.jsx)("b",{children:l})," / ",(0,d.jsx)("b",{children:j})," API keys"]}),(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,d.jsxs)("select",{value:b,onChange:a=>e(Number(a.target.value)),className:"rounded-xl border border-border bg-background px-3 py-2 text-sm text-text-main outline-none focus:border-primary",disabled:g,children:[(0,d.jsx)("option",{value:25,children:"25 / trang"}),(0,d.jsx)("option",{value:50,children:"50 / trang"}),(0,d.jsx)("option",{value:100,children:"100 / trang"})]}),(0,d.jsx)(f.$n,{variant:"outline",size:"sm",onClick:()=>c(1),disabled:g||h<=1,children:"Đầu"}),(0,d.jsx)(f.$n,{variant:"outline",size:"sm",onClick:()=>c(Math.max(1,h-1)),disabled:g||h<=1,children:"Trước"}),(0,d.jsxs)("span",{className:"rounded-xl border border-border bg-surface px-3 py-2 text-sm",children:["Trang ",h,"/",i]}),(0,d.jsx)(f.$n,{variant:"outline",size:"sm",onClick:()=>c(Math.min(i,h+1)),disabled:g||h>=i,children:"Sau"}),(0,d.jsx)(f.$n,{variant:"outline",size:"sm",onClick:()=>c(i),disabled:g||h>=i,children:"Cuối"})]})]})}function z({image:a,label:b,onClick:c}){return(0,d.jsx)("button",{type:"button",onClick:c,title:b,"aria-label":b,className:"flex h-9 w-9 items-center justify-center rounded-xl border border-border bg-background transition hover:border-primary/50 hover:bg-surface focus:outline-none focus:ring-2 focus:ring-primary/20",children:(0,d.jsx)("img",{src:a,alt:"","aria-hidden":"true",className:"size-5 rounded-sm object-contain"})})}function A({apiKey:a,onClaudeSettings:b,onOpenCodeSettings:c,onCodexSettings:e,onQwenSettings:f}){return(0,d.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,d.jsx)(z,{image:"/providers/claude.png",label:"Claude Code Settings",onClick:()=>b(a)}),(0,d.jsx)(z,{image:"/providers/opencode.png",label:"OpenCode Settings",onClick:()=>c(a)}),(0,d.jsx)(z,{image:"/providers/codex.png",label:"Codex Settings",onClick:()=>e(a)}),(0,d.jsx)(z,{image:"/providers/qwen.png",label:"Qwen Code Settings",onClick:()=>f(a)})]})}function B({apiKey:a,globalEnabled:b,globalLevel:c,onClose:g,onSave:h,saving:i,infoOnly:j=!1}){let[k,l]=(0,e.useState)(a?.cavemanMode||"inherit"),[m,n]=(0,e.useState)(a?.cavemanLevel||"lite"),[o,p]=(0,e.useState)(j?"info":"edit"),[q,r]=(0,e.useState)("");if(!a)return null;let s="on"===k||"off"!==k&&b,t="on"===k?m:c,u=String(c||"full").toUpperCase(),v="info"===o,w=()=>{if(!i){if(v&&!j)return void p("edit");g()}},x=async()=>{if(!i){r("");try{let a=await h({cavemanMode:k,cavemanLevel:m});!1===a&&r("Kh\xf4ng lưu được cấu h\xecnh Caveman. Vui l\xf2ng kiểm tra lại v\xe0 thử lần nữa.")}catch(a){r(a?.message||"Kh\xf4ng lưu được cấu h\xecnh Caveman.")}}};return(0,d.jsx)(f.aF,{isOpen:!!a,onClose:w,title:v?"Caveman output compression l\xe0 g\xec?":`Caveman: ${a.name||"API Key"}`,size:v?"xl":"lg",footer:v?(0,d.jsx)(f.$n,{onClick:w,disabled:i,children:j?"Đ\xe3 hiểu":"Quay lại cấu h\xecnh"}):void 0,children:v?(0,d.jsxs)("div",{className:"space-y-5 text-sm text-text-main",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2 rounded-xl border border-border bg-surface px-3 py-2",children:[(0,d.jsx)("span",{className:"text-xs text-text-muted",children:"Global Caveman hiện đang:"}),(0,d.jsx)(f.Ex,{variant:b?"success":"default",size:"sm",children:b?"ON":"OFF"}),b?(0,d.jsx)(f.Ex,{variant:"default",size:"sm",children:u}):null,(0,d.jsx)("span",{className:"text-xs text-text-muted",children:'— \xe1p dụng cho API key chọn "Kế thừa Global"'})]}),(0,d.jsxs)("p",{className:"text-text-muted",children:["Caveman ch\xe8n một instruction về phong c\xe1ch trả lời v\xe0o ",(0,d.jsx)("span",{className:"font-semibold text-text-main",children:"provider request"})," ngay trước khi gửi tới model, nhằm giảm lời dẫn, lặp \xfd v\xe0 diễn giải kh\xf4ng cần thiết để output ngắn gọn hơn. T\xednh năng n\xe0y d\xf9ng được cho mọi request qua API key, kh\xf4ng chỉ CLI tool."]}),(0,d.jsxs)("div",{className:"rounded-xl border border-amber-500/30 bg-amber-500/10 p-3 text-amber-800 dark:text-amber-200",children:["Caveman kh\xf4ng n\xe9n input hoặc tool output như RTK. Hiệu quả phụ thuộc model v\xe0 nội dung request. D\xf9ng n\xfat ",(0,d.jsx)("b",{children:"Test"})," ngay cuối block Caveman của API key để gọi c\xf9ng prompt khi Caveman OFF v\xe0 ON, sau đ\xf3 so s\xe1nh output token thực tế."]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h3",{className:"mb-2 font-semibold text-text-main",children:"Caveman được \xe1p dụng ở đ\xe2u?"}),(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface/60 p-3 font-mono text-xs text-text-muted",children:["Client request → x\xe1c thực / quota → routing → translate provider → RTK → ",(0,d.jsx)("span",{className:"font-semibold text-text-main",children:"Caveman"})," → gửi provider"]}),(0,d.jsxs)("ul",{className:"mt-2 list-disc space-y-1 pl-5 text-text-muted",children:[(0,d.jsx)("li",{children:"Kh\xf4ng thay đổi model, provider, account, combo routing, fallback hoặc retry."}),(0,d.jsx)("li",{children:"Client Request v\xe0 Source Request vẫn giữ nội dung gốc."}),(0,d.jsx)("li",{children:"Provider Request JSON trong log sẽ chứa instruction Caveman v\xec đ\xf3 l\xe0 body thực tế gửi upstream."})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h3",{className:"mb-2 font-semibold text-text-main",children:"C\xe1c mức độ"}),(0,d.jsx)("div",{className:"overflow-x-auto rounded-xl border border-border",children:(0,d.jsxs)("table",{className:"min-w-full text-xs",children:[(0,d.jsx)("thead",{className:"bg-surface/80 text-left uppercase tracking-wide text-text-muted",children:(0,d.jsxs)("tr",{children:[(0,d.jsx)("th",{className:"px-3 py-2 font-medium",children:"Mức"}),(0,d.jsx)("th",{className:"px-3 py-2 font-medium",children:"T\xe1c dụng"}),(0,d.jsx)("th",{className:"px-3 py-2 font-medium",children:"Khuyến nghị"})]})}),(0,d.jsxs)("tbody",{className:"divide-y divide-border text-text-muted",children:[(0,d.jsxs)("tr",{children:[(0,d.jsx)("td",{className:"px-3 py-2 font-semibold text-text-main",children:"Lite"}),(0,d.jsx)("td",{className:"px-3 py-2",children:"Bỏ lời dẫn v\xe0 lặp \xfd, vẫn ưu ti\xean giữ giải th\xedch cần thiết."}),(0,d.jsx)("td",{className:"px-3 py-2",children:"Coding CLI, chat kỹ thuật, agent th\xf4ng thường."})]}),(0,d.jsxs)("tr",{children:[(0,d.jsx)("td",{className:"px-3 py-2 font-semibold text-text-main",children:"Full"}),(0,d.jsx)("td",{className:"px-3 py-2",children:"\xc9p c\xe2u trả lời s\xfac t\xedch hơn, ưu ti\xean lệnh, code v\xe0 kết luận."}),(0,d.jsx)("td",{className:"px-3 py-2",children:"Automation, t\xe1c vụ lặp lại, người d\xf9ng đ\xe3 quen ngữ cảnh."})]}),(0,d.jsxs)("tr",{children:[(0,d.jsx)("td",{className:"px-3 py-2 font-semibold text-text-main",children:"Ultra"}),(0,d.jsx)("td",{className:"px-3 py-2",children:"Output cực ngắn, giảm mạnh phần giải th\xedch."}),(0,d.jsx)("td",{className:"px-3 py-2",children:"Chỉ d\xf9ng cho workflow kiểm so\xe1t chặt v\xe0 đ\xe3 kiểm thử."})]})]})]})})]}),(0,d.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[(0,d.jsxs)("div",{className:"rounded-xl border border-green-500/30 bg-green-500/10 p-4",children:[(0,d.jsx)("h3",{className:"mb-2 font-semibold text-green-800 dark:text-green-200",children:"N\xean bật"}),(0,d.jsxs)("ul",{className:"list-disc space-y-1 pl-5 text-green-800/90 dark:text-green-200/90",children:[(0,d.jsx)("li",{children:"Claude Code, Codex CLI, OpenCode v\xe0 coding agent."}),(0,d.jsx)("li",{children:"Chat hỗ trợ kỹ thuật cần c\xe2u trả lời đi thẳng v\xe0o thao t\xe1c."}),(0,d.jsx)("li",{children:"Automation hoặc agent gọi model nhiều lần với ngữ cảnh r\xf5 r\xe0ng."}),(0,d.jsx)("li",{children:"API key chuy\xean d\xf9ng cho output ngắn: lệnh, checklist, kết luận, đoạn code."})]})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-red-500/30 bg-red-500/10 p-4",children:[(0,d.jsx)("h3",{className:"mb-2 font-semibold text-red-800 dark:text-red-200",children:"Kh\xf4ng n\xean bật"}),(0,d.jsxs)("ul",{className:"list-disc space-y-1 pl-5 text-red-800/90 dark:text-red-200/90",children:[(0,d.jsx)("li",{children:"Dịch thuật, viết t\xe0i liệu, b\xe1o c\xe1o, proposal hoặc tạo presentation."}),(0,d.jsx)("li",{children:"Nội dung ph\xe1p l\xfd, hợp đồng, bi\xean bản, incident report cần đầy đủ chi tiết."}),(0,d.jsx)("li",{children:"Hướng dẫn đ\xe0o tạo, giải th\xedch chuy\xean s\xe2u, brainstorming hoặc s\xe1ng tạo nội dung."}),(0,d.jsx)("li",{children:"Workflow y\xeau cầu đ\xfang cấu tr\xfac, đủ trường hoặc wording ch\xednh x\xe1c tuyệt đối."})]})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h3",{className:"mb-2 font-semibold text-text-main",children:"Caveman kh\xe1c RTK thế n\xe0o?"}),(0,d.jsx)("div",{className:"overflow-x-auto rounded-xl border border-border",children:(0,d.jsxs)("table",{className:"min-w-full text-xs",children:[(0,d.jsx)("thead",{className:"bg-surface/80 text-left uppercase tracking-wide text-text-muted",children:(0,d.jsxs)("tr",{children:[(0,d.jsx)("th",{className:"px-3 py-2 font-medium",children:"T\xednh năng"}),(0,d.jsx)("th",{className:"px-3 py-2 font-medium",children:"T\xe1c động"})]})}),(0,d.jsxs)("tbody",{className:"divide-y divide-border text-text-muted",children:[(0,d.jsxs)("tr",{children:[(0,d.jsx)("td",{className:"px-3 py-2 font-semibold text-text-main",children:"RTK"}),(0,d.jsx)("td",{className:"px-3 py-2",children:"R\xfat gọn tool output trước khi gửi model."})]}),(0,d.jsxs)("tr",{children:[(0,d.jsx)("td",{className:"px-3 py-2 font-semibold text-text-main",children:"Caveman"}),(0,d.jsx)("td",{className:"px-3 py-2",children:"Điều khiển model trả lời ngắn hơn."})]})]})]})})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h3",{className:"mb-2 font-semibold text-text-main",children:"Global vs từng API key"}),(0,d.jsxs)("p",{className:"text-text-muted",children:[(0,d.jsx)("span",{className:"font-semibold text-text-main",children:"Kế thừa Global"})," d\xf9ng đ\xfang trạng th\xe1i v\xe0 level tại ",(0,d.jsx)("span",{className:"font-mono text-text-main",children:"/dashboard/endpoint"}),";",(0,d.jsx)("span",{className:"font-semibold text-text-main",children:" Force ON"})," bật ri\xeang cho key v\xe0 d\xf9ng level đ\xe3 chọn;",(0,d.jsx)("span",{className:"font-semibold text-text-main",children:" Force OFF"})," lu\xf4n tắt cho key. Override của API key lu\xf4n thắng Global theo cả hai chiều."]})]})]}):(0,d.jsxs)("div",{className:"space-y-5",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2 rounded-xl border border-border bg-surface p-3 text-sm",children:[(0,d.jsx)("span",{className:"text-text-muted",children:"Global Caveman hiện đang:"}),(0,d.jsx)(f.Ex,{variant:b?"success":"default",size:"sm",children:b?"ON":"OFF"}),b?(0,d.jsx)(f.Ex,{variant:"default",size:"sm",children:u}):null,(0,d.jsx)("span",{className:"text-xs text-text-muted",children:'— \xe1p dụng cho API key chọn "Kế thừa Global"'}),(0,d.jsx)("button",{type:"button",onClick:()=>p("info"),disabled:i,title:"Caveman l\xe0 g\xec? Bấm để xem giải th\xedch","aria-label":"Xem giải th\xedch về Caveman",className:"inline-flex size-5 shrink-0 items-center justify-center rounded-full border border-border text-[11px] font-bold text-text-muted transition-colors hover:border-brand-500 hover:text-brand-600 disabled:cursor-not-allowed disabled:opacity-50",children:"?"})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)("label",{className:"block text-sm font-medium",children:"Chế độ override"}),(0,d.jsxs)("select",{value:k,onChange:a=>{l(a.target.value),r("")},disabled:i,className:"w-full rounded-xl border border-border bg-background px-3 py-2 text-sm disabled:cursor-not-allowed disabled:opacity-60",children:[(0,d.jsxs)("option",{value:"inherit",children:["Kế thừa Global (",b?`ON \xb7 ${u}`:"OFF",")"]}),(0,d.jsx)("option",{value:"on",children:"Force ON"}),(0,d.jsx)("option",{value:"off",children:"Force OFF"})]})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)("label",{className:"block text-sm font-medium",children:"Mức n\xe9n"}),"on"===k?(0,d.jsxs)("select",{value:m,onChange:a=>{n(a.target.value),r("")},disabled:i,className:"w-full rounded-xl border border-border bg-background px-3 py-2 text-sm disabled:cursor-not-allowed disabled:opacity-60",children:[(0,d.jsx)("option",{value:"lite",children:"Lite — an to\xe0n cho coding CLI"}),(0,d.jsx)("option",{value:"full",children:"Full — s\xfac t\xedch hơn"}),(0,d.jsx)("option",{value:"ultra",children:"Ultra — cực ngắn"})]}):(0,d.jsx)("div",{className:"rounded-xl border border-border bg-surface/60 px-3 py-2.5 text-sm text-text-muted",children:"inherit"===k?b?(0,d.jsxs)(d.Fragment,{children:["Đang d\xf9ng mức Global: ",(0,d.jsx)("b",{className:"text-text-main",children:u})]}):(0,d.jsxs)(d.Fragment,{children:["Global đang ",(0,d.jsx)("b",{className:"text-text-main",children:"OFF"}),", n\xean kh\xf4ng c\xf3 mức n\xe9n hiệu lực."]}):(0,d.jsx)(d.Fragment,{children:"Force OFF — mức n\xe9n kh\xf4ng được \xe1p dụng."})})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-border p-3 text-sm text-text-muted",children:["Hiệu lực: ",(0,d.jsx)("b",{className:"text-text-main",children:s?`ON \xb7 ${String(t||"lite").toUpperCase()}`:"OFF"})]}),q?(0,d.jsxs)("div",{className:"flex items-start gap-2 rounded-xl border border-red-500/30 bg-red-500/10 p-3 text-sm text-red-700 dark:text-red-300",children:[(0,d.jsx)("span",{"aria-hidden":"true",className:"material-symbols-outlined text-[19px]",children:"error"}),(0,d.jsx)("span",{children:q})]}):null,(0,d.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,d.jsx)(f.$n,{variant:"outline",onClick:w,disabled:i,children:"Hủy"}),(0,d.jsx)(f.$n,{onClick:x,disabled:i,children:i?"Đang lưu...":"Lưu"})]})]})})}let C=Object.freeze([{value:"lite",label:"Lite",description:"Giữ giải th\xedch cần thiết"},{value:"full",label:"Full",description:"Ưu ti\xean code v\xe0 kết luận"},{value:"ultra",label:"Ultra",description:"Output cực ngắn"}]),D=`Ph\xe2n t\xedch đoạn code sau, chỉ ra lỗi, nguy\xean nh\xe2n v\xe0 đưa bản sửa ho\xe0n chỉnh. Giữ đầy đủ lệnh v\xe0 code cần thiết:
|
|
3
3
|
|
|
4
4
|
function getUserName(user) {
|
|
5
5
|
return user.profile.name.trim();
|
|
@@ -37,4 +37,4 @@ wire_api = "responses"
|
|
|
37
37
|
[profiles.fast]
|
|
38
38
|
model = "${c||d||"programmer-fast"}"
|
|
39
39
|
model_provider = "bluerouter"`}({baseUrl:bx,codingModel:bK.codingModel,fastModel:bK.fastModel}):"",bM=a5?['npm install -g @openai/codex\ncodex --version\nmkdir $env:USERPROFILE\\.codex -Force\n$utf8NoBom = New-Object System.Text.UTF8Encoding $false\n[System.IO.File]::WriteAllText("$env:USERPROFILE\\.codex\\config.toml", @\'',bL,"'@, $utf8NoBom)",`$env:OPENAI_API_KEY = "${a5.key}"`,`setx OPENAI_API_KEY "${a5.key}"`,"cd D:\\path\\to\\your-project\ncodex"].join("\n"):"",bN=a7?l(a7,bz):{codingModel:bz||"YOUR_MODEL",fastModel:bz||"YOUR_MODEL"},bO=a7?function({baseUrl:a,apiKey:b,codingModel:c,fastModel:d}){let e=c||"programmer",f=d||e||"programmer-fast",g=a||"https://models-gateway.example.com/v1";return JSON.stringify({env:{OPENAI_API_KEY:b||"sk-xxxxx"},security:{auth:{selectedType:"openai"}},model:{name:e},modelProviders:{openai:[{id:e,name:e,envKey:"OPENAI_API_KEY",baseUrl:g,generationConfig:{timeout:12e4,maxRetries:2,contextWindowSize:12e4,samplingParams:{temperature:.2}}},{id:f,name:f,envKey:"OPENAI_API_KEY",baseUrl:g,generationConfig:{timeout:6e4,maxRetries:2,reasoning:!1,contextWindowSize:12e4,samplingParams:{temperature:.2,max_tokens:4096}}}]}},null,2)}({baseUrl:bx,apiKey:a7.key,codingModel:bN.codingModel,fastModel:bN.fastModel}):"",bP=a7?['npm install -g @qwen-code/qwen-code\nqwen --version\nmkdir $env:USERPROFILE\\.qwen -Force\n$utf8NoBom = New-Object System.Text.UTF8Encoding $false\n[System.IO.File]::WriteAllText("$env:USERPROFILE\\.qwen\\settings.json", @\'',bO,"'@, $utf8NoBom)",`$env:OPENAI_API_KEY = "${a7.key}"`,`$env:OPENAI_BASE_URL = "${bx}"`,`$env:OPENAI_MODEL = "${bN.codingModel}"`,`setx OPENAI_API_KEY "${a7.key}"`,`setx OPENAI_BASE_URL "${bx}"`,`setx OPENAI_MODEL "${bN.codingModel}"`,"cd D:\\path\\to\\your-project\nqwen"].join("\n"):"",bQ=(0,e.useMemo)(()=>{let a=new Map;for(let b of R){let c=j(b.username||b.email||b.userPrincipalName||b.sAMAccountName);c&&a.set(c,{id:c,label:`${b.displayName||b.username||c}${b.email?` \xb7 ${b.email}`:""}`})}for(let b of o){let c=j(b.ownerUser||b.createdByUser);c&&!a.has(c)&&a.set(c,{id:c,label:c})}return bq&&!a.has(bq)&&a.set(bq,{id:bq,label:`${bq} (t\xf4i)`}),[...a.values()].sort((a,b)=>a.label.localeCompare(b.label))},[R,o,bq]),bR=(c=k(_),m=k(Z),!(c.length===m.length&&c.every((a,b)=>a===m[b]))),bS=X||!F.trim()||0===Z.length||bw,bT=!!bb||"all"!==bd,bU=async()=>{z(!0),C("");try{let a=new URLSearchParams;a.set("page",String(bf)),a.set("pageSize",String(bh)),bb&&a.set("q",bb),"all"!==bd&&a.set("status",bd);let b=await fetch(`/api/keys?${a.toString()}`,{cache:"no-store"}),c=await b.json().catch(()=>({}));if(!b.ok)throw Error(c.error||"Kh\xf4ng tải được danh s\xe1ch API keys");let d=c.keys||[],e=c.pagination||{page:bf,pageSize:bh,total:d.length,totalAll:d.length,totalPages:1,search:bb,status:bd};if(0===d.length&&Number(e.total||0)>0&&bf>1)return void bg(Math.max(1,Number(e.totalPages||1)));let f=k(c.apiKeyDefaultModels||(c.apiKeyDefaultModel?[c.apiKeyDefaultModel]:[]));p(d),bk(e),aY(c.apiKeyTotal??e.totalAll??e.total??d.length);let g=r(c.apiKeyDefaultPolicy||i,i);$(f),aa(f),ae(g),ag(g),aU(c.apiKeyLimit??5),aW(c.apiKeyCount??e.totalAll??d.length),aQ(!0===c.globalCavemanEnabled),aS(c.globalCavemanLevel||"full")}catch(a){C(a.message||"Kh\xf4ng tải được danh s\xe1ch API keys")}finally{z(!1)}},bV=async()=>{if(!ar&&!at){au(!0);try{let[a,b,c]=await Promise.allSettled([br?fetch("/api/providers",{cache:"no-store"}):Promise.resolve(null),fetch("/api/personal-cloud-providers",{cache:"no-store"}),fetch("/api/models/alias",{cache:"no-store"})]),d=[],e=[];if("fulfilled"===a.status&&a.value?.ok){let b=await a.value.json().catch(()=>({}));d.push(...b.connections||[])}if("fulfilled"===b.status&&b.value.ok){let a=await b.value.json().catch(()=>({}));e.push(...a.connections||[])}if(ao(br?[...d,...e]:e),"fulfilled"===c.status&&c.value.ok){let a=await c.value.json().catch(()=>({}));aq(a.aliases||{})}as(!0)}catch{}finally{au(!1)}}},bW=async(a=T)=>{if(br){W(!0);try{let b=await fetch(`/api/auth/ldap/users?q=${encodeURIComponent(a||"")}`,{cache:"no-store"}),c=await b.json().catch(()=>({}));b.ok&&S(c.users||[])}catch{}finally{W(!1)}}},bX=async()=>{if(br&&0!==_.length){ac(!0),C("");try{let a=await fetch("/api/keys",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKeyDefaultModels:_})}),b=await a.json().catch(()=>({}));if(!a.ok)throw Error(b.error||"Kh\xf4ng lưu được default models");let c=k(b.apiKeyDefaultModels||(b.apiKeyDefaultModel?[b.apiKeyDefaultModel]:[])),d=r(b.apiKeyDefaultPolicy||i,i);$(c),aa(c),ae(d),ag(d)}catch(a){C(a.message||"Kh\xf4ng lưu được default models")}finally{ac(!1)}}},bY=async a=>{if(!br)return;let b=r(a,i);ai(!0),C("");try{let a=await fetch("/api/keys",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKeyDefaultPolicy:b})}),c=await a.json().catch(()=>({}));if(!a.ok)throw Error(c.error||"Kh\xf4ng lưu được default policy");let d=r(c.apiKeyDefaultPolicy||b,i);ae(d),ag(d),ak(!1)}catch(a){C(a.message||"Kh\xf4ng lưu được default policy")}finally{ai(!1)}},bZ=async()=>{if(F.trim()){if(0===Z.length)return void C("Admin cần cấu h\xecnh default models trước khi tạo API key.");if(bw)return void C(`Mỗi user chỉ được tạo tối đa ${bs} API keys.
|
|
40
|
-
C\xf3 thể d\xf9ng n\xfat Đổi key để xoay sang key mới m\xe0 kh\xf4ng cần x\xf3a/tạo lại.`);Y(!0),C("");try{let a=br?j(K||H||bq):void 0,b=await fetch("/api/keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:F.trim(),ownerUser:a})}),c=await b.json().catch(()=>({}));if(!b.ok)throw Error(c.error||"Kh\xf4ng tạo được API key");O(c.key),G(""),M(""),E(!1),bg(1),await bU()}catch(a){C(a.message||"Kh\xf4ng tạo được API key")}finally{Y(!1)}}},b$=async(a,b)=>{let c=await fetch(`/api/keys/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)}),d=await c.json().catch(()=>({}));return c.ok?(await bU(),!0):(C(d.error||"Kh\xf4ng cập nhật được API key"),!1)},b_=async()=>{if(!av)return;let a=k(ax);if(0===a.length)return void C("H\xe3y chọn \xedt nhất một model trước khi lưu quyền truy cập API key.");aA(!0),C("");try{await b$(av.id,{allowedModels:a})&&(aw(null),ay([]))}finally{aA(!1)}},b0=async a=>{if(aB){aG(!0),C("");try{await b$(aB.id,{limits:r(a)})&&(aC(null),aE(i))}finally{aG(!1)}}},b1=async()=>{if(aB){aG(!0),C("");try{await b$(aB.id,{limits:{}})&&(aC(null),aE(i))}finally{aG(!1)}}},b2=async a=>{if(!aH)return!1;aO(!0),C("");try{let b=await fetch(`/api/keys/${aH.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}),c=await b.json().catch(()=>({}));if(!b.ok)throw Error(c.error||"Kh\xf4ng lưu được cấu h\xecnh Caveman");return await bU(),aI(null),!0}catch(b){let a=b?.message||"Kh\xf4ng lưu được cấu h\xecnh Caveman";throw C(a),Error(a)}finally{aO(!1)}};return(0,d.jsxs)("div",{className:"space-y-6",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h1",{className:"text-2xl font-semibold text-text-main",children:"Quản l\xfd API Keys"}),(0,d.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:br?"Bảng quản trị API key c\xf3 t\xecm kiếm, lọc trạng th\xe1i v\xe0 ph\xe2n trang để kh\xf4ng render qu\xe1 nhiều key c\xf9ng l\xfac.":`Bạn c\xf3 thể quản l\xfd API key của t\xe0i khoản m\xecnh. Mỗi user thường sở hữu tối đa ${bs} API keys. D\xf9ng n\xfat Đổi key để xoay sang key mới m\xe0 kh\xf4ng cần x\xf3a/tạo lại.`})]}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,d.jsx)(f.$n,{variant:"outline",onClick:bU,disabled:u,children:u?"Đang tải...":"Refresh"}),(0,d.jsx)(f.$n,{onClick:()=>{E(!0),!H&&bq&&J(bq)},disabled:bw,children:"Tạo API Key"})]})]}),A?(0,d.jsx)("div",{className:"rounded-xl border border-red-500/30 bg-red-500/10 p-3 text-sm text-red-600 whitespace-pre-line",children:A}):null,(0,d.jsxs)("div",{className:"grid gap-3 md:grid-cols-3",children:[(0,d.jsx)(x,{label:"Tổng API keys",value:bu,hint:br?"To\xe0n hệ thống":`${bt}/${bs} key của bạn`}),(0,d.jsx)(x,{label:"Đang hiển thị",value:bv,hint:bT?"Theo bộ lọc hiện tại":"Kh\xf4ng filter"}),(0,d.jsx)(x,{label:"Page size",value:bh,hint:"Chỉ tải số d\xf2ng của trang hiện tại"})]}),br?null:(0,d.jsx)(f.Zp,{children:(0,d.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h3",{className:"font-medium",children:"Giới hạn API key theo user"}),(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["T\xe0i khoản của bạn đang c\xf3 ",bt,"/",bs," API keys. Key bị disabled vẫn được t\xednh v\xe0o giới hạn."]})]}),(0,d.jsx)("span",{className:"rounded-full border border-border bg-surface px-3 py-1 text-sm",children:bw?"Đ\xe3 đạt giới hạn":"C\xf2n c\xf3 thể tạo th\xeam"})]})}),(0,d.jsxs)("div",{className:"grid gap-4 xl:grid-cols-2",children:[(0,d.jsx)(f.Zp,{children:(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h3",{className:"font-medium",children:"Default models cho API key mới"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"API key mới sẽ mặc định được d\xf9ng c\xe1c model n\xe0y. Cần cấu h\xecnh \xedt nhất một default model trước khi tạo API key."})]}),(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[Z.length>0?(0,d.jsx)(s,{models:Z,emptyLabel:"Chưa cấu h\xecnh default models"}):(0,d.jsx)("span",{className:"text-sm text-red-600",children:"Chưa cấu h\xecnh default models"}),br?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(f.$n,{variant:"outline",size:"sm",onClick:()=>{am(!0),bV()},children:_.length>0?`Đ\xe3 chọn ${_.length} model`:"Chọn default models..."}),(0,d.jsx)(f.$n,{size:"sm",onClick:bX,disabled:!bR||ab||0===_.length,children:ab?"Đang lưu...":"Lưu"})]}):null]}),br?(0,d.jsx)("p",{className:"text-xs text-text-muted",children:at?"Đang tải danh s\xe1ch model...":"Danh s\xe1ch model chỉ tải khi mở bộ chọn để trang load nhanh hơn."}):null]})}),(0,d.jsx)(f.Zp,{children:(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h3",{className:"font-medium",children:"Default policy cho API key mới"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Policy n\xe0y được tự động g\xe1n cho key mới. Policy ri\xeang từng key vẫn c\xf3 thể override sau khi tạo."})]}),br?(0,d.jsx)(f.$n,{variant:"outline",size:"sm",onClick:()=>{ag(r(ad||i,i)),ak(!0)},children:"Chỉnh default policy"}):null]}),(0,d.jsx)(t,{limits:ad,showThinking:br,showOutputLimit:br})]})})]}),(0,d.jsx)(f.Zp,{children:(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h3",{className:"font-medium",children:"Th\xf4ng tin API endpoint"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"D\xf9ng API key b\xean dưới để gọi gateway theo chuẩn OpenAI-compatible. Endpoint lấy theo domain hiện tại của dashboard."})]}),(0,d.jsxs)("div",{className:"grid gap-3 md:grid-cols-2",children:[(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Base URL"}),(0,d.jsx)("div",{className:"mt-1 break-all font-mono text-sm",children:bx})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Chat Completions"}),(0,d.jsx)("div",{className:"mt-1 break-all font-mono text-sm",children:by})]})]}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,d.jsx)(f.$n,{variant:"outline",size:"sm",onClick:()=>bm(bx,"api-base-url"),children:"api-base-url"===bl?"Đ\xe3 copy Base URL":"Copy Base URL"}),(0,d.jsx)(f.$n,{variant:"outline",size:"sm",onClick:()=>bm(by,"api-chat-endpoint"),children:"api-chat-endpoint"===bl?"Đ\xe3 copy Endpoint":"Copy Endpoint"})]})]})}),N?(0,d.jsx)(f.Zp,{children:(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsx)("h3",{className:"font-medium",children:"Đ\xe3 tạo API key"}),(0,d.jsx)("pre",{className:"overflow-auto rounded-xl border border-border bg-surface p-3 text-sm",children:N}),(0,d.jsxs)("div",{className:"text-sm text-text-muted",children:["H\xe3y copy ngay. Key mới mặc định được d\xf9ng default models v\xe0 default policy đang cấu h\xecnh trong Dashboard, trừ khi admin chỉnh quyền model/policy.",(0,d.jsx)(s,{models:Z,emptyLabel:"default models"})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(f.$n,{size:"sm",onClick:()=>bm(N,"created"),children:"created"===bl?"Đ\xe3 copy":"Copy"}),(0,d.jsx)(f.$n,{size:"sm",variant:"ghost",onClick:()=>O(""),children:"Đ\xf3ng"})]})]})}):null,(0,d.jsx)(f.Zp,{children:(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-3 xl:flex-row xl:items-end xl:justify-between",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h3",{className:"text-lg font-semibold text-text-main",children:"Danh s\xe1ch API keys"}),(0,d.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:"T\xecm theo t\xean key, owner, model, id hoặc một phần API key. Backend chỉ trả về page hiện tại."})]}),(0,d.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center",children:[(0,d.jsx)("input",{value:a9,onChange:a=>ba(a.target.value),placeholder:"T\xecm API key, owner, model...",className:"w-full rounded-xl border border-border bg-background px-3 py-2 text-sm text-text-main outline-none focus:border-primary sm:w-80"}),(0,d.jsxs)("select",{value:bd,onChange:a=>{be(a.target.value),bg(1)},className:"rounded-xl border border-border bg-background px-3 py-2 text-sm text-text-main outline-none focus:border-primary",children:[(0,d.jsx)("option",{value:"all",children:"Tất cả trạng th\xe1i"}),(0,d.jsx)("option",{value:"active",children:"Chỉ key đang bật"}),(0,d.jsx)("option",{value:"inactive",children:"Chỉ key đ\xe3 tắt"})]}),bT?(0,d.jsx)(f.$n,{variant:"outline",size:"sm",onClick:()=>{ba(""),bc(""),be("all"),bg(1)},children:"X\xf3a lọc"}):null]})]}),u?(0,d.jsx)("div",{className:"rounded-2xl border border-dashed border-border p-8 text-center text-sm text-text-muted",children:"Đang tải API keys..."}):0===o.length?(0,d.jsx)("div",{className:"rounded-2xl border border-dashed border-border p-8 text-center text-sm text-text-muted",children:bT?"Kh\xf4ng t\xecm thấy API key ph\xf9 hợp bộ lọc.":"Chưa c\xf3 API key n\xe0o."}):(0,d.jsx)(L,{keys:o,copied:bl,copy:bm,isAdmin:br,globalCavemanEnabled:aP,globalCavemanLevel:aR,onToggleActive:(a,b)=>b$(a,{isActive:b}),onApiTest:a0,onClaudeSettings:a2,onOpenCodeSettings:a4,onCodexSettings:a6,onQwenSettings:a8,onRename:(a,b)=>{let c=prompt("T\xean API key mới",b||"");c?.trim()&&b$(a,{name:c.trim()})},onRotate:a=>{a?.id&&Q({title:"Đổi API key",message:"Hệ thống sẽ tạo chuỗi API key mới cho record n\xe0y v\xe0 giữ nguy\xean t\xean, owner, model, policy. Key cũ sẽ hết hiệu lực ngay sau khi đổi.",onConfirm:async()=>{Q(null),C("");let b=await fetch(`/api/keys/${a.id}/rotate`,{method:"POST"}),c=await b.json().catch(()=>({}));if(!b.ok)return void C(c.error||"Kh\xf4ng đổi được API key");let d=c.rotatedKey||c.key?.key||"";d&&O(d),await bU()}})},onEditModels:a=>{aw(a),ay(k(a.allowedModels)),bV()},onEditPolicy:a=>{br&&(aC(a),aE(q(a.limits)?r(a.limits):i))},onEditCaveman:aI,onShowCavemanInfo:aK,onCavemanTest:aM,onAssignOwner:(a,b)=>{if(!br)return;let c=prompt("G\xe1n owner username/email",b||bq||"");null!==c&&b$(a,{ownerUser:j(c)})},onDelete:a=>{Q({title:"X\xf3a API Key",message:"Bạn chắc chắn muốn x\xf3a API key n\xe0y? Thao t\xe1c n\xe0y kh\xf4ng thể ho\xe0n t\xe1c.",onConfirm:async()=>{Q(null),(await fetch(`/api/keys/${a}`,{method:"DELETE"})).ok&&await bU()}})}}),(0,d.jsx)(y,{pagination:bj,pageSize:bh,onPageChange:bg,onPageSizeChange:a=>{bi(a),bg(1)},loading:u})]})}),(0,d.jsx)(f.aF,{isOpen:D,onClose:()=>E(!1),title:"Tạo API Key",size:"lg",children:(0,d.jsxs)("div",{className:"space-y-4",children:[0===Z.length?(0,d.jsx)("div",{className:"rounded-xl border border-red-500/30 bg-red-500/10 p-3 text-sm text-red-600",children:"Admin cần cấu h\xecnh default models trước khi tạo API key."}):bw?(0,d.jsxs)("div",{className:"rounded-xl border border-red-500/30 bg-red-500/10 p-3 text-sm text-red-600",children:["Bạn đ\xe3 đạt giới hạn ",bs," API keys. H\xe3y x\xf3a bớt key cũ trước khi tạo key mới."]}):(0,d.jsxs)("div",{className:"text-sm text-text-muted",children:["Key n\xe0y sẽ được tạo với quyền d\xf9ng default models v\xe0 default policy đang cấu h\xecnh trong Dashboard.",(0,d.jsx)(s,{models:Z})]}),(0,d.jsxs)("label",{className:"block",children:[(0,d.jsx)("span",{className:"mb-1 block text-xs font-medium text-text-muted",children:"T\xean API key"}),(0,d.jsx)("input",{value:F,onChange:a=>G(a.target.value),placeholder:"VD: VSCode, LibreChat, team-user",className:"w-full rounded-xl border border-border bg-background px-3 py-2 text-sm outline-none focus:border-primary"})]}),br?(0,d.jsxs)("div",{className:"space-y-3 rounded-xl border border-border p-3",children:[(0,d.jsx)("div",{className:"text-sm font-medium",children:"Owner user"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("input",{value:T,onChange:a=>U(a.target.value),placeholder:"Nhập từ kh\xf3a rồi bấm Tải",className:"min-w-0 flex-1 rounded-xl border border-border bg-background px-3 py-2 text-sm outline-none focus:border-primary"}),(0,d.jsx)(f.$n,{variant:"outline",onClick:()=>bW(T),disabled:V,children:V?"Đang tải":"Tải LDAP"})]}),(0,d.jsxs)("select",{value:H,onChange:a=>J(a.target.value),className:"w-full rounded-xl border border-border bg-background px-3 py-2 text-sm text-text-main outline-none focus:border-primary",children:[(0,d.jsxs)("option",{value:bq||"",children:["G\xe1n cho t\xf4i (",bq||"local",")"]}),bQ.map(a=>(0,d.jsx)("option",{value:a.id,children:a.label},a.id))]}),(0,d.jsx)("input",{value:K,onChange:a=>M(a.target.value),placeholder:"username hoặc email, kh\xf4ng bắt buộc",className:"w-full rounded-xl border border-border bg-background px-3 py-2 text-sm outline-none focus:border-primary"}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"LDAP kh\xf4ng tự tải khi mở trang để giảm thời gian load. C\xf3 thể nhập owner thủ c\xf4ng hoặc nhập từ kh\xf3a rồi bấm Tải LDAP."})]}):(0,d.jsxs)("p",{className:"rounded-xl border border-border bg-surface p-3 text-sm text-text-muted",children:["Owner: ",bq||"user hiện tại"]}),(0,d.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,d.jsx)(f.$n,{variant:"ghost",onClick:()=>E(!1),children:"Hủy"}),(0,d.jsx)(f.$n,{onClick:bZ,disabled:bS,children:X?"Đang tạo...":"Tạo"})]})]})}),(0,d.jsx)(f.aF,{isOpen:!!a_,onClose:()=>a0(null),title:"API Test bằng curl Windows",size:"xl",children:(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Lệnh dưới đ\xe2y gọi thử endpoint Chat Completions bằng API key đang chọn v\xe0 đ\xe3 nh\xfang sẵn Bearer token."}),(0,d.jsxs)("div",{className:"grid gap-3 md:grid-cols-3",children:[(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"API Key"}),(0,d.jsx)("div",{className:"mt-1 text-sm",children:a_?.name||"API Key"})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Endpoint"}),(0,d.jsx)("div",{className:"mt-1 break-all font-mono text-sm",children:by})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Model test"}),(0,d.jsx)("div",{className:"mt-1 break-all font-mono text-sm",children:bA})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"mb-1 text-xs font-medium text-text-muted",children:"Lệnh curl cho Windows CMD"}),(0,d.jsx)("pre",{className:"overflow-auto rounded-xl border border-border bg-surface p-3 text-xs",children:bD})]}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"D\xe1n lệnh v\xe0o CMD hoặc Windows Terminal để test nhanh. Nếu domain dashboard chạy sau reverse proxy, endpoint sẽ d\xf9ng đ\xfang domain đang mở tr\xean tr\xecnh duyệt."}),(0,d.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,d.jsx)(f.$n,{variant:"ghost",onClick:()=>a0(null),children:"Đ\xf3ng"}),(0,d.jsx)(f.$n,{onClick:()=>bm(bD,`api-test-curl-${a_?.id||"current"}`),children:bl===`api-test-curl-${a_?.id||"current"}`?"Đ\xe3 copy":"Copy lệnh curl"})]})]})}),(0,d.jsx)(f.aF,{isOpen:!!a1,onClose:()=>a2(null),title:"Claude Code Settings",size:"xl",children:(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["Copy nội dung JSON dưới đ\xe2y v\xe0o file ",(0,d.jsx)("span",{className:"font-mono",children:"%USERPROFILE%\\.claude\\settings.json"})," để Claude Code gọi qua gateway n\xe0y. Model coding d\xf9ng ",(0,d.jsx)("span",{className:"font-mono",children:bE.codingModel}),"; model fast d\xf9ng ",(0,d.jsx)("span",{className:"font-mono",children:bE.fastModel}),"."]}),(0,d.jsxs)("div",{className:"grid gap-3 md:grid-cols-3",children:[(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"API Key"}),(0,d.jsx)("div",{className:"mt-1 text-sm",children:a1?.name||"API Key"})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Base URL"}),(0,d.jsx)("div",{className:"mt-1 break-all font-mono text-sm",children:bx})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Model"}),(0,d.jsx)("div",{className:"mt-1 break-all font-mono text-sm",children:bE.codingModel})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"mb-1 text-xs font-medium text-text-muted",children:"settings.json"}),(0,d.jsx)("pre",{className:"max-h-[420px] overflow-auto rounded-xl border border-border bg-surface p-3 text-xs",children:bF})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"mb-1 text-xs font-medium text-text-muted",children:"C\xe0i v\xe0 chạy Claude Code CLI tr\xean Windows"}),(0,d.jsx)("pre",{className:"overflow-auto rounded-xl border border-border bg-surface p-3 text-xs",children:bG})]}),(0,d.jsx)("div",{className:"rounded-xl border border-amber-500/30 bg-amber-500/10 p-3 text-xs text-amber-700 dark:text-amber-300",children:"Lưu \xfd: 2 d\xf2ng auto-compact/context window đ\xe3 được comment sẵn; chỉ uncomment khi d\xf9ng local model. Nếu c\xe0i bằng npm th\xec m\xe1y cần c\xe0i Node.js trước. Chạy Claude Code trong thư mục project, kh\xf4ng chạy trong C:\\WINDOWS\\system32. Nếu d\xf9ng model fast ri\xeang như programmer-fast th\xec API key n\xe0y cũng phải được ph\xe9p d\xf9ng model đ\xf3 trong cột Model."}),(0,d.jsxs)("div",{className:"flex flex-wrap justify-end gap-2",children:[(0,d.jsx)(f.$n,{variant:"ghost",onClick:()=>a2(null),children:"Đ\xf3ng"}),(0,d.jsx)(f.$n,{variant:"outline",onClick:()=>bm(bG,`claude-code-help-${a1?.id||"current"}`),children:bl===`claude-code-help-${a1?.id||"current"}`?"Đ\xe3 copy hướng dẫn":"Copy hướng dẫn"}),(0,d.jsx)(f.$n,{onClick:()=>bm(bF,`claude-code-settings-${a1?.id||"current"}`),children:bl===`claude-code-settings-${a1?.id||"current"}`?"Đ\xe3 copy settings":"Copy settings.json"})]})]})}),(0,d.jsx)(f.aF,{isOpen:!!a3,onClose:()=>a4(null),title:"OpenCode Settings",size:"xl",children:(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["Copy JSON dưới đ\xe2y v\xe0o file ",(0,d.jsx)("span",{className:"font-mono",children:"%APPDATA%\\opencode\\opencode.json"})," hoặc ",(0,d.jsx)("span",{className:"font-mono",children:"opencode.json"})," trong project. Model ch\xednh d\xf9ng ",(0,d.jsx)("span",{className:"font-mono",children:bH.codingModel}),"; explorer/fast d\xf9ng ",(0,d.jsx)("span",{className:"font-mono",children:bH.fastModel}),"."]}),(0,d.jsxs)("div",{className:"grid gap-3 md:grid-cols-4",children:[(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"API Key"}),(0,d.jsx)("div",{className:"mt-1 text-sm",children:a3?.name||"API Key"})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Base URL"}),(0,d.jsx)("div",{className:"mt-1 break-all font-mono text-sm",children:bx})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Model ch\xednh"}),(0,d.jsx)("div",{className:"mt-1 break-all font-mono text-sm",children:bH.codingModel})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Model fast"}),(0,d.jsx)("div",{className:"mt-1 break-all font-mono text-sm",children:bH.fastModel})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"mb-1 text-xs font-medium text-text-muted",children:"opencode.json"}),(0,d.jsx)("pre",{className:"max-h-[420px] overflow-auto rounded-xl border border-border bg-surface p-3 text-xs",children:bI})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"mb-1 text-xs font-medium text-text-muted",children:"C\xe0i v\xe0 chạy OpenCode tr\xean Windows PowerShell"}),(0,d.jsx)("pre",{className:"overflow-auto rounded-xl border border-border bg-surface p-3 text-xs",children:bJ})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-amber-500/30 bg-amber-500/10 p-3 text-xs text-amber-700 dark:text-amber-300",children:["Lưu \xfd: API key n\xe0y cần được ph\xe9p gọi cả ",bH.codingModel," v\xe0 ",bH.fastModel,". Nếu OpenCode đang d\xf9ng đường dẫn config kh\xe1c, c\xf3 thể đặt file opencode.json ngay trong thư mục project."]}),(0,d.jsxs)("div",{className:"flex flex-wrap justify-end gap-2",children:[(0,d.jsx)(f.$n,{variant:"ghost",onClick:()=>a4(null),children:"Đ\xf3ng"}),(0,d.jsx)(f.$n,{variant:"outline",onClick:()=>bm(bJ,`opencode-help-${a3?.id||"current"}`),children:bl===`opencode-help-${a3?.id||"current"}`?"Đ\xe3 copy hướng dẫn":"Copy hướng dẫn"}),(0,d.jsx)(f.$n,{onClick:()=>bm(bI,`opencode-settings-${a3?.id||"current"}`),children:bl===`opencode-settings-${a3?.id||"current"}`?"Đ\xe3 copy settings":"Copy opencode.json"})]})]})}),(0,d.jsx)(f.aF,{isOpen:!!a5,onClose:()=>a6(null),title:"Codex Settings",size:"xl",children:(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["Copy TOML dưới đ\xe2y v\xe0o file ",(0,d.jsx)("span",{className:"font-mono",children:"%USERPROFILE%\\.codex\\config.toml"}),". API key được set bằng biến m\xf4i trường ",(0,d.jsx)("span",{className:"font-mono",children:"OPENAI_API_KEY"}),". Model ch\xednh d\xf9ng ",(0,d.jsx)("span",{className:"font-mono",children:bK.codingModel}),"; profile fast d\xf9ng ",(0,d.jsx)("span",{className:"font-mono",children:bK.fastModel}),"."]}),(0,d.jsxs)("div",{className:"grid gap-3 md:grid-cols-3",children:[(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"API Key"}),(0,d.jsx)("div",{className:"mt-1 text-sm",children:a5?.name||"API Key"})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Base URL"}),(0,d.jsx)("div",{className:"mt-1 break-all font-mono text-sm",children:bx})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Model"}),(0,d.jsx)("div",{className:"mt-1 break-all font-mono text-sm",children:bK.codingModel})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"mb-1 text-xs font-medium text-text-muted",children:"config.toml"}),(0,d.jsx)("pre",{className:"max-h-[420px] overflow-auto rounded-xl border border-border bg-surface p-3 text-xs",children:bL})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"mb-1 text-xs font-medium text-text-muted",children:"C\xe0i v\xe0 chạy Codex tr\xean Windows PowerShell"}),(0,d.jsx)("pre",{className:"overflow-auto rounded-xl border border-border bg-surface p-3 text-xs",children:bM})]}),(0,d.jsx)("div",{className:"rounded-xl border border-amber-500/30 bg-amber-500/10 p-3 text-xs text-amber-700 dark:text-amber-300",children:"Lưu \xfd: c\xe1c d\xf2ng context window v\xe0 auto-compact đ\xe3 được comment sẵn; chỉ uncomment khi d\xf9ng local model. Nếu c\xe0i bằng npm th\xec m\xe1y cần c\xe0i Node.js trước. Hướng dẫn đ\xe3 tự tạo config.toml v\xe0 set biến m\xf4i trường cho phi\xean PowerShell hiện tại; setx chỉ lưu lại cho terminal mở sau. Codex d\xf9ng OpenAI-compatible endpoint của BlueRouter."}),(0,d.jsxs)("div",{className:"flex flex-wrap justify-end gap-2",children:[(0,d.jsx)(f.$n,{variant:"ghost",onClick:()=>a6(null),children:"Đ\xf3ng"}),(0,d.jsx)(f.$n,{variant:"outline",onClick:()=>bm(bM,`codex-help-${a5?.id||"current"}`),children:bl===`codex-help-${a5?.id||"current"}`?"Đ\xe3 copy hướng dẫn":"Copy hướng dẫn"}),(0,d.jsx)(f.$n,{onClick:()=>bm(bL,`codex-settings-${a5?.id||"current"}`),children:bl===`codex-settings-${a5?.id||"current"}`?"Đ\xe3 copy settings":"Copy config.toml"})]})]})}),(0,d.jsx)(f.aF,{isOpen:!!a7,onClose:()=>a8(null),title:"Qwen Code Settings",size:"xl",children:(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["Copy JSON dưới đ\xe2y v\xe0o file ",(0,d.jsx)("span",{className:"font-mono",children:"%USERPROFILE%\\.qwen\\settings.json"})," để Qwen Code gọi qua OpenAI-compatible endpoint của BlueRouter. Model ch\xednh d\xf9ng ",(0,d.jsx)("span",{className:"font-mono",children:bN.codingModel}),"; model fast d\xf9ng ",(0,d.jsx)("span",{className:"font-mono",children:bN.fastModel}),"."]}),(0,d.jsxs)("div",{className:"grid gap-3 md:grid-cols-3",children:[(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"API Key"}),(0,d.jsx)("div",{className:"mt-1 text-sm",children:a7?.name||"API Key"})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Base URL"}),(0,d.jsx)("div",{className:"mt-1 break-all font-mono text-sm",children:bx})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Model"}),(0,d.jsx)("div",{className:"mt-1 break-all font-mono text-sm",children:bN.codingModel})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"mb-1 text-xs font-medium text-text-muted",children:"settings.json"}),(0,d.jsx)("pre",{className:"max-h-[420px] overflow-auto rounded-xl border border-border bg-surface p-3 text-xs",children:bO})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"mb-1 text-xs font-medium text-text-muted",children:"C\xe0i v\xe0 chạy Qwen Code tr\xean Windows PowerShell"}),(0,d.jsx)("pre",{className:"overflow-auto rounded-xl border border-border bg-surface p-3 text-xs",children:bP})]}),(0,d.jsx)("div",{className:"rounded-xl border border-amber-500/30 bg-amber-500/10 p-3 text-xs text-amber-700 dark:text-amber-300",children:"Lưu \xfd: hướng dẫn đ\xe3 tự tạo settings.json hợp lệ v\xe0 set biến m\xf4i trường cho phi\xean PowerShell hiện tại. setx chỉ lưu lại cho terminal mở sau. Qwen Code hỗ trợ OpenAI-compatible provider n\xean d\xf9ng tốt với BlueRouter."}),(0,d.jsxs)("div",{className:"flex flex-wrap justify-end gap-2",children:[(0,d.jsx)(f.$n,{variant:"ghost",onClick:()=>a8(null),children:"Đ\xf3ng"}),(0,d.jsx)(f.$n,{variant:"outline",onClick:()=>bm(bP,`qwen-code-help-${a7?.id||"current"}`),children:bl===`qwen-code-help-${a7?.id||"current"}`?"Đ\xe3 copy hướng dẫn":"Copy hướng dẫn"}),(0,d.jsx)(f.$n,{onClick:()=>bm(bO,`qwen-code-settings-${a7?.id||"current"}`),children:bl===`qwen-code-settings-${a7?.id||"current"}`?"Đ\xe3 copy settings":"Copy settings.json"})]})]})}),(0,d.jsx)(I,{apiKey:aL,fallbackModels:Z,onClose:()=>aM(null)}),(0,d.jsx)(B,{apiKey:aH,globalEnabled:aP,globalLevel:aR,onClose:()=>aI(null),onSave:b2,saving:aN}),(0,d.jsx)(B,{apiKey:aJ,globalEnabled:aP,globalLevel:aR,onClose:()=>aK(null),onSave:()=>{},saving:!1,infoOnly:!0}),(0,d.jsx)(w,{open:!!av,keyName:av?.name,models:ax,setModels:ay,activeProviders:an,modelAliases:ap,onClose:()=>{aw(null),ay([])},onSave:b_,saving:az,personalOnly:!br,extraModels:Z}),(0,d.jsx)(v,{isOpen:aj,keyName:"Default cho API key mới",policy:af,setPolicy:ag,onClose:()=>{ak(!1),ag(ad||i)},onSave:bY,saving:ah}),(0,d.jsx)(v,{isOpen:!!aB,keyName:aB?.name,policy:aD,setPolicy:aE,onClose:()=>{aC(null),aE(i)},onSave:b0,onClear:b1,saving:aF}),(0,d.jsx)(f.rq,{isOpen:al,onClose:()=>am(!1),onSelect:a=>{let b=String(a?.value||a?.name||a||"").trim();b&&aa(a=>k([...a,b]))},onDeselect:a=>{let b=String(a?.value||a?.name||a||"").trim();b&&aa(a=>k(a).filter(a=>a!==b))},activeProviders:an,modelAliases:ap,title:"Chọn default models cho API key",addedModelValues:_,closeOnSelect:!1}),P?(0,d.jsx)(f.uo,{isOpen:!!P,onClose:()=>Q(null),onConfirm:P.onConfirm,title:P.title,message:P.message,confirmText:"X\xf3a",cancelText:"Hủy",variant:"danger"}):null]})}},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{"use strict";a.exports=require("better-sqlite3")},91645:a=>{"use strict";a.exports=require("net")},94735:a=>{"use strict";a.exports=require("events")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,319,1361,1568,402,5681,4404,6064,6328,1340],()=>b(b.s=50793));module.exports=c})();
|
|
40
|
+
C\xf3 thể d\xf9ng n\xfat Đổi key để xoay sang key mới m\xe0 kh\xf4ng cần x\xf3a/tạo lại.`);Y(!0),C("");try{let a=br?j(K||H||bq):void 0,b=await fetch("/api/keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:F.trim(),ownerUser:a})}),c=await b.json().catch(()=>({}));if(!b.ok)throw Error(c.error||"Kh\xf4ng tạo được API key");O(c.key),G(""),M(""),E(!1),bg(1),await bU()}catch(a){C(a.message||"Kh\xf4ng tạo được API key")}finally{Y(!1)}}},b$=async(a,b)=>{let c=await fetch(`/api/keys/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)}),d=await c.json().catch(()=>({}));return c.ok?(await bU(),!0):(C(d.error||"Kh\xf4ng cập nhật được API key"),!1)},b_=async()=>{if(!av)return;let a=k(ax);if(0===a.length)return void C("H\xe3y chọn \xedt nhất một model trước khi lưu quyền truy cập API key.");aA(!0),C("");try{await b$(av.id,{allowedModels:a})&&(aw(null),ay([]))}finally{aA(!1)}},b0=async a=>{if(aB){aG(!0),C("");try{await b$(aB.id,{limits:r(a)})&&(aC(null),aE(i))}finally{aG(!1)}}},b1=async()=>{if(aB){aG(!0),C("");try{await b$(aB.id,{limits:{}})&&(aC(null),aE(i))}finally{aG(!1)}}},b2=async a=>{if(!aH)return!1;aO(!0),C("");try{let b=await fetch(`/api/keys/${aH.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}),c=await b.json().catch(()=>({}));if(!b.ok)throw Error(c.error||"Kh\xf4ng lưu được cấu h\xecnh Caveman");return await bU(),aI(null),!0}catch(b){let a=b?.message||"Kh\xf4ng lưu được cấu h\xecnh Caveman";throw C(a),Error(a)}finally{aO(!1)}};return(0,d.jsxs)("div",{className:"space-y-6",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h1",{className:"text-2xl font-semibold text-text-main",children:"Quản l\xfd API Keys"}),(0,d.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:br?"Bảng quản trị API key c\xf3 t\xecm kiếm, lọc trạng th\xe1i v\xe0 ph\xe2n trang để kh\xf4ng render qu\xe1 nhiều key c\xf9ng l\xfac.":`Bạn c\xf3 thể quản l\xfd API key của t\xe0i khoản m\xecnh. Mỗi user thường sở hữu tối đa ${bs} API keys. D\xf9ng n\xfat Đổi key để xoay sang key mới m\xe0 kh\xf4ng cần x\xf3a/tạo lại.`})]}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,d.jsx)(f.$n,{variant:"outline",onClick:bU,disabled:u,children:u?"Đang tải...":"Refresh"}),(0,d.jsx)(f.$n,{onClick:()=>{E(!0),!H&&bq&&J(bq)},disabled:bw,children:"Tạo API Key"})]})]}),A?(0,d.jsx)("div",{className:"rounded-xl border border-red-500/30 bg-red-500/10 p-3 text-sm text-red-600 whitespace-pre-line",children:A}):null,(0,d.jsxs)("div",{className:"grid gap-3 md:grid-cols-3",children:[(0,d.jsx)(x,{label:"Tổng API keys",value:bu,hint:br?"To\xe0n hệ thống":`${bt}/${bs} key của bạn`}),(0,d.jsx)(x,{label:"Đang hiển thị",value:bv,hint:bT?"Theo bộ lọc hiện tại":"Kh\xf4ng filter"}),(0,d.jsx)(x,{label:"Page size",value:bh,hint:"Chỉ tải số d\xf2ng của trang hiện tại"})]}),br?null:(0,d.jsx)(f.Zp,{children:(0,d.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h3",{className:"font-medium",children:"Giới hạn API key theo user"}),(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["T\xe0i khoản của bạn đang c\xf3 ",bt,"/",bs," API keys. Key bị disabled vẫn được t\xednh v\xe0o giới hạn."]})]}),(0,d.jsx)("span",{className:"rounded-full border border-border bg-surface px-3 py-1 text-sm",children:bw?"Đ\xe3 đạt giới hạn":"C\xf2n c\xf3 thể tạo th\xeam"})]})}),(0,d.jsxs)("div",{className:"grid gap-4 xl:grid-cols-2",children:[(0,d.jsx)(f.Zp,{children:(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h3",{className:"font-medium",children:"Default models cho API key mới"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"API key mới sẽ mặc định được d\xf9ng c\xe1c model n\xe0y. Cần cấu h\xecnh \xedt nhất một default model trước khi tạo API key."})]}),(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[Z.length>0?(0,d.jsx)(s,{models:Z,emptyLabel:"Chưa cấu h\xecnh default models"}):(0,d.jsx)("span",{className:"text-sm text-red-600",children:"Chưa cấu h\xecnh default models"}),br?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(f.$n,{variant:"outline",size:"sm",onClick:()=>{am(!0),bV()},children:_.length>0?`Đ\xe3 chọn ${_.length} model`:"Chọn default models..."}),(0,d.jsx)(f.$n,{size:"sm",onClick:bX,disabled:!bR||ab||0===_.length,children:ab?"Đang lưu...":"Lưu"})]}):null]}),br?(0,d.jsx)("p",{className:"text-xs text-text-muted",children:at?"Đang tải danh s\xe1ch model...":"Danh s\xe1ch model chỉ tải khi mở bộ chọn để trang load nhanh hơn."}):null]})}),(0,d.jsx)(f.Zp,{children:(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h3",{className:"font-medium",children:"Default policy cho API key mới"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Policy n\xe0y được tự động g\xe1n cho key mới. Policy ri\xeang từng key vẫn c\xf3 thể override sau khi tạo."})]}),br?(0,d.jsx)(f.$n,{variant:"outline",size:"sm",onClick:()=>{ag(r(ad||i,i)),ak(!0)},children:"Chỉnh default policy"}):null]}),(0,d.jsx)(t,{limits:ad,showThinking:br,showOutputLimit:br})]})})]}),(0,d.jsx)(f.Zp,{children:(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h3",{className:"font-medium",children:"Th\xf4ng tin API endpoint"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"D\xf9ng API key b\xean dưới để gọi gateway theo chuẩn OpenAI-compatible. Endpoint lấy theo domain hiện tại của dashboard."})]}),(0,d.jsxs)("div",{className:"grid gap-3 md:grid-cols-2",children:[(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Base URL"}),(0,d.jsx)("div",{className:"mt-1 break-all font-mono text-sm",children:bx})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Chat Completions"}),(0,d.jsx)("div",{className:"mt-1 break-all font-mono text-sm",children:by})]})]}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,d.jsx)(f.$n,{variant:"outline",size:"sm",onClick:()=>bm(bx,"api-base-url"),children:"api-base-url"===bl?"Đ\xe3 copy Base URL":"Copy Base URL"}),(0,d.jsx)(f.$n,{variant:"outline",size:"sm",onClick:()=>bm(by,"api-chat-endpoint"),children:"api-chat-endpoint"===bl?"Đ\xe3 copy Endpoint":"Copy Endpoint"})]})]})}),N?(0,d.jsx)(f.Zp,{children:(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsx)("h3",{className:"font-medium",children:"Đ\xe3 tạo API key"}),(0,d.jsx)("pre",{className:"overflow-auto rounded-xl border border-border bg-surface p-3 text-sm",children:N}),(0,d.jsxs)("div",{className:"text-sm text-text-muted",children:["H\xe3y copy ngay. Key mới mặc định được d\xf9ng default models v\xe0 default policy đang cấu h\xecnh trong Dashboard, trừ khi admin chỉnh quyền model/policy.",(0,d.jsx)(s,{models:Z,emptyLabel:"default models"})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(f.$n,{size:"sm",onClick:()=>bm(N,"created"),children:"created"===bl?"Đ\xe3 copy":"Copy"}),(0,d.jsx)(f.$n,{size:"sm",variant:"ghost",onClick:()=>O(""),children:"Đ\xf3ng"})]})]})}):null,(0,d.jsx)(f.Zp,{children:(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-3 xl:flex-row xl:items-end xl:justify-between",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h3",{className:"text-lg font-semibold text-text-main",children:"Danh s\xe1ch API keys"}),(0,d.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:"T\xecm theo t\xean key, owner, model, id hoặc một phần API key. Backend chỉ trả về page hiện tại."})]}),(0,d.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center",children:[(0,d.jsx)("input",{value:a9,onChange:a=>ba(a.target.value),placeholder:"T\xecm API key, owner, model...",className:"w-full rounded-xl border border-border bg-background px-3 py-2 text-sm text-text-main outline-none focus:border-primary sm:w-80"}),(0,d.jsxs)("select",{value:bd,onChange:a=>{be(a.target.value),bg(1)},className:"rounded-xl border border-border bg-background px-3 py-2 text-sm text-text-main outline-none focus:border-primary",children:[(0,d.jsx)("option",{value:"all",children:"Tất cả trạng th\xe1i"}),(0,d.jsx)("option",{value:"active",children:"Chỉ key đang bật"}),(0,d.jsx)("option",{value:"inactive",children:"Chỉ key đ\xe3 tắt"})]}),bT?(0,d.jsx)(f.$n,{variant:"outline",size:"sm",onClick:()=>{ba(""),bc(""),be("all"),bg(1)},children:"X\xf3a lọc"}):null]})]}),u?(0,d.jsx)("div",{className:"rounded-2xl border border-dashed border-border p-8 text-center text-sm text-text-muted",children:"Đang tải API keys..."}):0===o.length?(0,d.jsx)("div",{className:"rounded-2xl border border-dashed border-border p-8 text-center text-sm text-text-muted",children:bT?"Kh\xf4ng t\xecm thấy API key ph\xf9 hợp bộ lọc.":"Chưa c\xf3 API key n\xe0o."}):(0,d.jsx)(L,{keys:o,copied:bl,copy:bm,isAdmin:br,globalCavemanEnabled:aP,globalCavemanLevel:aR,onToggleActive:(a,b)=>b$(a,{isActive:b}),onApiTest:a0,onClaudeSettings:a2,onOpenCodeSettings:a4,onCodexSettings:a6,onQwenSettings:a8,onRename:(a,b)=>{let c=prompt("T\xean API key mới",b||"");c?.trim()&&b$(a,{name:c.trim()})},onRotate:a=>{a?.id&&Q({title:"Đổi API key",message:"Hệ thống sẽ tạo chuỗi API key mới cho record n\xe0y v\xe0 giữ nguy\xean t\xean, owner, model, policy. Key cũ sẽ hết hiệu lực ngay sau khi đổi.",onConfirm:async()=>{Q(null),C("");let b=await fetch(`/api/keys/${a.id}/rotate`,{method:"POST"}),c=await b.json().catch(()=>({}));if(!b.ok)return void C(c.error||"Kh\xf4ng đổi được API key");let d=c.rotatedKey||c.key?.key||"";d&&O(d),await bU()}})},onEditModels:a=>{aw(a),ay(k(a.allowedModels)),bV()},onEditPolicy:a=>{br&&(aC(a),aE(q(a.limits)?r(a.limits):i))},onEditCaveman:aI,onShowCavemanInfo:aK,onCavemanTest:aM,onAssignOwner:(a,b)=>{if(!br)return;let c=prompt("G\xe1n owner username/email",b||bq||"");null!==c&&b$(a,{ownerUser:j(c)})},onDelete:a=>{Q({title:"X\xf3a API Key",message:"Bạn chắc chắn muốn x\xf3a API key n\xe0y? Thao t\xe1c n\xe0y kh\xf4ng thể ho\xe0n t\xe1c.",onConfirm:async()=>{Q(null),(await fetch(`/api/keys/${a}`,{method:"DELETE"})).ok&&await bU()}})}}),(0,d.jsx)(y,{pagination:bj,pageSize:bh,onPageChange:bg,onPageSizeChange:a=>{bi(a),bg(1)},loading:u})]})}),(0,d.jsx)(f.aF,{isOpen:D,onClose:()=>E(!1),title:"Tạo API Key",size:"lg",children:(0,d.jsxs)("div",{className:"space-y-4",children:[0===Z.length?(0,d.jsx)("div",{className:"rounded-xl border border-red-500/30 bg-red-500/10 p-3 text-sm text-red-600",children:"Admin cần cấu h\xecnh default models trước khi tạo API key."}):bw?(0,d.jsxs)("div",{className:"rounded-xl border border-red-500/30 bg-red-500/10 p-3 text-sm text-red-600",children:["Bạn đ\xe3 đạt giới hạn ",bs," API keys. H\xe3y x\xf3a bớt key cũ trước khi tạo key mới."]}):(0,d.jsxs)("div",{className:"text-sm text-text-muted",children:["Key n\xe0y sẽ được tạo với quyền d\xf9ng default models v\xe0 default policy đang cấu h\xecnh trong Dashboard.",(0,d.jsx)(s,{models:Z})]}),(0,d.jsxs)("label",{className:"block",children:[(0,d.jsx)("span",{className:"mb-1 block text-xs font-medium text-text-muted",children:"T\xean API key"}),(0,d.jsx)("input",{value:F,onChange:a=>G(a.target.value),placeholder:"VD: VSCode, LibreChat, team-user",className:"w-full rounded-xl border border-border bg-background px-3 py-2 text-sm outline-none focus:border-primary"})]}),br?(0,d.jsxs)("div",{className:"space-y-3 rounded-xl border border-border p-3",children:[(0,d.jsx)("div",{className:"text-sm font-medium",children:"Owner user"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("input",{value:T,onChange:a=>U(a.target.value),placeholder:"Nhập từ kh\xf3a rồi bấm Tải",className:"min-w-0 flex-1 rounded-xl border border-border bg-background px-3 py-2 text-sm outline-none focus:border-primary"}),(0,d.jsx)(f.$n,{variant:"outline",onClick:()=>bW(T),disabled:V,children:V?"Đang tải":"Tải LDAP"})]}),(0,d.jsxs)("select",{value:H,onChange:a=>J(a.target.value),className:"w-full rounded-xl border border-border bg-background px-3 py-2 text-sm text-text-main outline-none focus:border-primary",children:[(0,d.jsxs)("option",{value:bq||"",children:["G\xe1n cho t\xf4i (",bq||"local",")"]}),bQ.map(a=>(0,d.jsx)("option",{value:a.id,children:a.label},a.id))]}),(0,d.jsx)("input",{value:K,onChange:a=>M(a.target.value),placeholder:"username hoặc email, kh\xf4ng bắt buộc",className:"w-full rounded-xl border border-border bg-background px-3 py-2 text-sm outline-none focus:border-primary"}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"LDAP kh\xf4ng tự tải khi mở trang để giảm thời gian load. C\xf3 thể nhập owner thủ c\xf4ng hoặc nhập từ kh\xf3a rồi bấm Tải LDAP."})]}):(0,d.jsxs)("p",{className:"rounded-xl border border-border bg-surface p-3 text-sm text-text-muted",children:["Owner: ",bq||"user hiện tại"]}),(0,d.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,d.jsx)(f.$n,{variant:"ghost",onClick:()=>E(!1),children:"Hủy"}),(0,d.jsx)(f.$n,{onClick:bZ,disabled:bS,children:X?"Đang tạo...":"Tạo"})]})]})}),(0,d.jsx)(f.aF,{isOpen:!!a_,onClose:()=>a0(null),title:"API Test bằng curl Windows",size:"xl",children:(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Lệnh dưới đ\xe2y gọi thử endpoint Chat Completions bằng API key đang chọn v\xe0 đ\xe3 nh\xfang sẵn Bearer token."}),(0,d.jsxs)("div",{className:"grid gap-3 md:grid-cols-3",children:[(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"API Key"}),(0,d.jsx)("div",{className:"mt-1 text-sm",children:a_?.name||"API Key"})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Endpoint"}),(0,d.jsx)("div",{className:"mt-1 break-all font-mono text-sm",children:by})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Model test"}),(0,d.jsx)("div",{className:"mt-1 break-all font-mono text-sm",children:bA})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"mb-1 text-xs font-medium text-text-muted",children:"Lệnh curl cho Windows CMD"}),(0,d.jsx)("pre",{className:"overflow-auto rounded-xl border border-border bg-surface p-3 text-xs",children:bD})]}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"D\xe1n lệnh v\xe0o CMD hoặc Windows Terminal để test nhanh. Nếu domain dashboard chạy sau reverse proxy, endpoint sẽ d\xf9ng đ\xfang domain đang mở tr\xean tr\xecnh duyệt."}),(0,d.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,d.jsx)(f.$n,{variant:"ghost",onClick:()=>a0(null),children:"Đ\xf3ng"}),(0,d.jsx)(f.$n,{onClick:()=>bm(bD,`api-test-curl-${a_?.id||"current"}`),children:bl===`api-test-curl-${a_?.id||"current"}`?"Đ\xe3 copy":"Copy lệnh curl"})]})]})}),(0,d.jsx)(f.aF,{isOpen:!!a1,onClose:()=>a2(null),title:"Claude Code Settings",size:"xl",children:(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["Copy nội dung JSON dưới đ\xe2y v\xe0o file ",(0,d.jsx)("span",{className:"font-mono",children:"%USERPROFILE%\\.claude\\settings.json"})," để Claude Code gọi qua gateway n\xe0y. Model coding d\xf9ng ",(0,d.jsx)("span",{className:"font-mono",children:bE.codingModel}),"; model fast d\xf9ng ",(0,d.jsx)("span",{className:"font-mono",children:bE.fastModel}),"."]}),(0,d.jsxs)("div",{className:"grid gap-3 md:grid-cols-3",children:[(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"API Key"}),(0,d.jsx)("div",{className:"mt-1 text-sm",children:a1?.name||"API Key"})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Base URL"}),(0,d.jsx)("div",{className:"mt-1 break-all font-mono text-sm",children:bx})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Model"}),(0,d.jsx)("div",{className:"mt-1 break-all font-mono text-sm",children:bE.codingModel})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"mb-1 text-xs font-medium text-text-muted",children:"settings.json"}),(0,d.jsx)("pre",{className:"max-h-[420px] overflow-auto rounded-xl border border-border bg-surface p-3 text-xs",children:bF})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"mb-1 text-xs font-medium text-text-muted",children:"C\xe0i v\xe0 chạy Claude Code CLI tr\xean Windows"}),(0,d.jsx)("pre",{className:"overflow-auto rounded-xl border border-border bg-surface p-3 text-xs",children:bG})]}),(0,d.jsx)("div",{className:"rounded-xl border border-amber-500/30 bg-amber-500/10 p-3 text-xs text-amber-700 dark:text-amber-300",children:"Lưu \xfd: 2 d\xf2ng auto-compact/context window đ\xe3 được comment sẵn; chỉ uncomment khi d\xf9ng local model. Nếu c\xe0i bằng npm th\xec m\xe1y cần c\xe0i Node.js trước. Chạy Claude Code trong thư mục project, kh\xf4ng chạy trong C:\\WINDOWS\\system32. Nếu d\xf9ng model fast ri\xeang như programmer-fast th\xec API key n\xe0y cũng phải được ph\xe9p d\xf9ng model đ\xf3 trong cột Model."}),(0,d.jsxs)("div",{className:"flex flex-wrap justify-end gap-2",children:[(0,d.jsx)(f.$n,{variant:"ghost",onClick:()=>a2(null),children:"Đ\xf3ng"}),(0,d.jsx)(f.$n,{variant:"outline",onClick:()=>bm(bG,`claude-code-help-${a1?.id||"current"}`),children:bl===`claude-code-help-${a1?.id||"current"}`?"Đ\xe3 copy hướng dẫn":"Copy hướng dẫn"}),(0,d.jsx)(f.$n,{onClick:()=>bm(bF,`claude-code-settings-${a1?.id||"current"}`),children:bl===`claude-code-settings-${a1?.id||"current"}`?"Đ\xe3 copy settings":"Copy settings.json"})]})]})}),(0,d.jsx)(f.aF,{isOpen:!!a3,onClose:()=>a4(null),title:"OpenCode Settings",size:"xl",children:(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["Copy JSON dưới đ\xe2y v\xe0o file ",(0,d.jsx)("span",{className:"font-mono",children:"%APPDATA%\\opencode\\opencode.json"})," hoặc ",(0,d.jsx)("span",{className:"font-mono",children:"opencode.json"})," trong project. Model ch\xednh d\xf9ng ",(0,d.jsx)("span",{className:"font-mono",children:bH.codingModel}),"; explorer/fast d\xf9ng ",(0,d.jsx)("span",{className:"font-mono",children:bH.fastModel}),"."]}),(0,d.jsxs)("div",{className:"grid gap-3 md:grid-cols-4",children:[(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"API Key"}),(0,d.jsx)("div",{className:"mt-1 text-sm",children:a3?.name||"API Key"})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Base URL"}),(0,d.jsx)("div",{className:"mt-1 break-all font-mono text-sm",children:bx})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Model ch\xednh"}),(0,d.jsx)("div",{className:"mt-1 break-all font-mono text-sm",children:bH.codingModel})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Model fast"}),(0,d.jsx)("div",{className:"mt-1 break-all font-mono text-sm",children:bH.fastModel})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"mb-1 text-xs font-medium text-text-muted",children:"opencode.json"}),(0,d.jsx)("pre",{className:"max-h-[420px] overflow-auto rounded-xl border border-border bg-surface p-3 text-xs",children:bI})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"mb-1 text-xs font-medium text-text-muted",children:"C\xe0i v\xe0 chạy OpenCode tr\xean Windows PowerShell"}),(0,d.jsx)("pre",{className:"overflow-auto rounded-xl border border-border bg-surface p-3 text-xs",children:bJ})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-amber-500/30 bg-amber-500/10 p-3 text-xs text-amber-700 dark:text-amber-300",children:["Lưu \xfd: API key n\xe0y cần được ph\xe9p gọi cả ",bH.codingModel," v\xe0 ",bH.fastModel,". Nếu OpenCode đang d\xf9ng đường dẫn config kh\xe1c, c\xf3 thể đặt file opencode.json ngay trong thư mục project."]}),(0,d.jsxs)("div",{className:"flex flex-wrap justify-end gap-2",children:[(0,d.jsx)(f.$n,{variant:"ghost",onClick:()=>a4(null),children:"Đ\xf3ng"}),(0,d.jsx)(f.$n,{variant:"outline",onClick:()=>bm(bJ,`opencode-help-${a3?.id||"current"}`),children:bl===`opencode-help-${a3?.id||"current"}`?"Đ\xe3 copy hướng dẫn":"Copy hướng dẫn"}),(0,d.jsx)(f.$n,{onClick:()=>bm(bI,`opencode-settings-${a3?.id||"current"}`),children:bl===`opencode-settings-${a3?.id||"current"}`?"Đ\xe3 copy settings":"Copy opencode.json"})]})]})}),(0,d.jsx)(f.aF,{isOpen:!!a5,onClose:()=>a6(null),title:"Codex Settings",size:"xl",children:(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["Copy TOML dưới đ\xe2y v\xe0o file ",(0,d.jsx)("span",{className:"font-mono",children:"%USERPROFILE%\\.codex\\config.toml"}),". API key được set bằng biến m\xf4i trường ",(0,d.jsx)("span",{className:"font-mono",children:"OPENAI_API_KEY"}),". Model ch\xednh d\xf9ng ",(0,d.jsx)("span",{className:"font-mono",children:bK.codingModel}),"; profile fast d\xf9ng ",(0,d.jsx)("span",{className:"font-mono",children:bK.fastModel}),"."]}),(0,d.jsxs)("div",{className:"grid gap-3 md:grid-cols-3",children:[(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"API Key"}),(0,d.jsx)("div",{className:"mt-1 text-sm",children:a5?.name||"API Key"})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Base URL"}),(0,d.jsx)("div",{className:"mt-1 break-all font-mono text-sm",children:bx})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Model"}),(0,d.jsx)("div",{className:"mt-1 break-all font-mono text-sm",children:bK.codingModel})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"mb-1 text-xs font-medium text-text-muted",children:"config.toml"}),(0,d.jsx)("pre",{className:"max-h-[420px] overflow-auto rounded-xl border border-border bg-surface p-3 text-xs",children:bL})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"mb-1 text-xs font-medium text-text-muted",children:"C\xe0i v\xe0 chạy Codex tr\xean Windows PowerShell"}),(0,d.jsx)("pre",{className:"overflow-auto rounded-xl border border-border bg-surface p-3 text-xs",children:bM})]}),(0,d.jsx)("div",{className:"rounded-xl border border-amber-500/30 bg-amber-500/10 p-3 text-xs text-amber-700 dark:text-amber-300",children:"Lưu \xfd: c\xe1c d\xf2ng context window v\xe0 auto-compact đ\xe3 được comment sẵn; chỉ uncomment khi d\xf9ng local model. Nếu c\xe0i bằng npm th\xec m\xe1y cần c\xe0i Node.js trước. Hướng dẫn đ\xe3 tự tạo config.toml v\xe0 set biến m\xf4i trường cho phi\xean PowerShell hiện tại; setx chỉ lưu lại cho terminal mở sau. Codex d\xf9ng OpenAI-compatible endpoint của BlueRouter."}),(0,d.jsxs)("div",{className:"flex flex-wrap justify-end gap-2",children:[(0,d.jsx)(f.$n,{variant:"ghost",onClick:()=>a6(null),children:"Đ\xf3ng"}),(0,d.jsx)(f.$n,{variant:"outline",onClick:()=>bm(bM,`codex-help-${a5?.id||"current"}`),children:bl===`codex-help-${a5?.id||"current"}`?"Đ\xe3 copy hướng dẫn":"Copy hướng dẫn"}),(0,d.jsx)(f.$n,{onClick:()=>bm(bL,`codex-settings-${a5?.id||"current"}`),children:bl===`codex-settings-${a5?.id||"current"}`?"Đ\xe3 copy settings":"Copy config.toml"})]})]})}),(0,d.jsx)(f.aF,{isOpen:!!a7,onClose:()=>a8(null),title:"Qwen Code Settings",size:"xl",children:(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["Copy JSON dưới đ\xe2y v\xe0o file ",(0,d.jsx)("span",{className:"font-mono",children:"%USERPROFILE%\\.qwen\\settings.json"})," để Qwen Code gọi qua OpenAI-compatible endpoint của BlueRouter. Model ch\xednh d\xf9ng ",(0,d.jsx)("span",{className:"font-mono",children:bN.codingModel}),"; model fast d\xf9ng ",(0,d.jsx)("span",{className:"font-mono",children:bN.fastModel}),"."]}),(0,d.jsxs)("div",{className:"grid gap-3 md:grid-cols-3",children:[(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"API Key"}),(0,d.jsx)("div",{className:"mt-1 text-sm",children:a7?.name||"API Key"})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Base URL"}),(0,d.jsx)("div",{className:"mt-1 break-all font-mono text-sm",children:bx})]}),(0,d.jsxs)("div",{className:"rounded-xl border border-border bg-surface p-3",children:[(0,d.jsx)("div",{className:"text-xs text-text-muted",children:"Model"}),(0,d.jsx)("div",{className:"mt-1 break-all font-mono text-sm",children:bN.codingModel})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"mb-1 text-xs font-medium text-text-muted",children:"settings.json"}),(0,d.jsx)("pre",{className:"max-h-[420px] overflow-auto rounded-xl border border-border bg-surface p-3 text-xs",children:bO})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"mb-1 text-xs font-medium text-text-muted",children:"C\xe0i v\xe0 chạy Qwen Code tr\xean Windows PowerShell"}),(0,d.jsx)("pre",{className:"overflow-auto rounded-xl border border-border bg-surface p-3 text-xs",children:bP})]}),(0,d.jsx)("div",{className:"rounded-xl border border-amber-500/30 bg-amber-500/10 p-3 text-xs text-amber-700 dark:text-amber-300",children:"Lưu \xfd: hướng dẫn đ\xe3 tự tạo settings.json hợp lệ v\xe0 set biến m\xf4i trường cho phi\xean PowerShell hiện tại. setx chỉ lưu lại cho terminal mở sau. Qwen Code hỗ trợ OpenAI-compatible provider n\xean d\xf9ng tốt với BlueRouter."}),(0,d.jsxs)("div",{className:"flex flex-wrap justify-end gap-2",children:[(0,d.jsx)(f.$n,{variant:"ghost",onClick:()=>a8(null),children:"Đ\xf3ng"}),(0,d.jsx)(f.$n,{variant:"outline",onClick:()=>bm(bP,`qwen-code-help-${a7?.id||"current"}`),children:bl===`qwen-code-help-${a7?.id||"current"}`?"Đ\xe3 copy hướng dẫn":"Copy hướng dẫn"}),(0,d.jsx)(f.$n,{onClick:()=>bm(bO,`qwen-code-settings-${a7?.id||"current"}`),children:bl===`qwen-code-settings-${a7?.id||"current"}`?"Đ\xe3 copy settings":"Copy settings.json"})]})]})}),(0,d.jsx)(I,{apiKey:aL,fallbackModels:Z,onClose:()=>aM(null)}),(0,d.jsx)(B,{apiKey:aH,globalEnabled:aP,globalLevel:aR,onClose:()=>aI(null),onSave:b2,saving:aN}),(0,d.jsx)(B,{apiKey:aJ,globalEnabled:aP,globalLevel:aR,onClose:()=>aK(null),onSave:()=>{},saving:!1,infoOnly:!0}),(0,d.jsx)(w,{open:!!av,keyName:av?.name,models:ax,setModels:ay,activeProviders:an,modelAliases:ap,onClose:()=>{aw(null),ay([])},onSave:b_,saving:az,personalOnly:!br,extraModels:Z}),(0,d.jsx)(v,{isOpen:aj,keyName:"Default cho API key mới",policy:af,setPolicy:ag,onClose:()=>{ak(!1),ag(ad||i)},onSave:bY,saving:ah}),(0,d.jsx)(v,{isOpen:!!aB,keyName:aB?.name,policy:aD,setPolicy:aE,onClose:()=>{aC(null),aE(i)},onSave:b0,onClear:b1,saving:aF}),(0,d.jsx)(f.rq,{isOpen:al,onClose:()=>am(!1),onSelect:a=>{let b=String(a?.value||a?.name||a||"").trim();b&&aa(a=>k([...a,b]))},onDeselect:a=>{let b=String(a?.value||a?.name||a||"").trim();b&&aa(a=>k(a).filter(a=>a!==b))},activeProviders:an,modelAliases:ap,title:"Chọn default models cho API key",addedModelValues:_,closeOnSelect:!1}),P?(0,d.jsx)(f.uo,{isOpen:!!P,onClose:()=>Q(null),onConfirm:P.onConfirm,title:P.title,message:P.message,confirmText:"X\xf3a",cancelText:"Hủy",variant:"danger"}):null]})}},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{"use strict";a.exports=require("better-sqlite3")},91645:a=>{"use strict";a.exports=require("net")},94735:a=>{"use strict";a.exports=require("events")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,319,1361,1568,402,5681,4404,6064,6328,1340],()=>b(b.s=79314));module.exports=c})();
|