@jheavenknows/bluerouter 5.5.29 → 5.5.31
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 +21 -21
- package/app/.next-cli-build/build-manifest.json +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/ai-power-index/page_client-reference-manifest.js +1 -1
- 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_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/audit-proxy/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/audit-proxy/page_client-reference-manifest.js +1 -1
- 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.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/model-profiles/page_client-reference-manifest.js +1 -1
- 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_client-reference-manifest.js +1 -1
- 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_client-reference-manifest.js +1 -1
- 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/logs/console/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
- 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_client-reference-manifest.js +1 -1
- 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_client-reference-manifest.js +1 -1
- 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/personal/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudcombo/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudcombo/page_client-reference-manifest.js +1 -1
- 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_client-reference-manifest.js +1 -1
- 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_client-reference-manifest.js +1 -1
- 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_client-reference-manifest.js +1 -1
- 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/embedding/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/embedding/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/image/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/image/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/image-to-text/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/image-to-text/page_client-reference-manifest.js +1 -1
- 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_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/stt/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/stt/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/tts/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/tts/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/web/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/web/page_client-reference-manifest.js +1 -1
- 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_client-reference-manifest.js +1 -1
- 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_client-reference-manifest.js +1 -1
- 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_client-reference-manifest.js +1 -1
- 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_client-reference-manifest.js +1 -1
- 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/_tree.segment.rsc +1 -1
- 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 +5 -5
- package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/api/audit-proxy/ca/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/audit-proxy/me/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/audit-proxy/root-ca/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/audit-proxy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/audit-proxy/users/route.js.nft.json +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.nft.json +1 -1
- 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.nft.json +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.nft.json +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.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/view-mode/route.js.nft.json +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.nft.json +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-model-profiles/cloud-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-model-profiles/model-catalog/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-model-profiles/route.js.nft.json +1 -1
- 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/copilot-settings/route.js.nft.json +1 -1
- 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/cluster/config/route.js.nft.json +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.nft.json +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.nft.json +1 -1
- 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.nft.json +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/codex-catalog/download/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/codex-catalog/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/codex-catalog/upload/route.js.nft.json +1 -1
- 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.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/ai-power-index/route.js.nft.json +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.nft.json +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.nft.json +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/prompt-logs/[id]/route.js.nft.json +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.nft.json +1 -1
- 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/keys/[id]/caveman-test/route.js.nft.json +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.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +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.nft.json +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.nft.json +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.nft.json +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.nft.json +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.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.nft.json +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.nft.json +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.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/grok-cli/device-code/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/grok-cli/poll/route.js.nft.json +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/import/route.js.nft.json +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-combos/[id]/api-key-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-combos/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-combos/route.js.nft.json +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.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]/move/route.js.nft.json +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.nft.json +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.nft.json +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.nft.json +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/personal-cloud-providers/shares/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/visibility/route.js.nft.json +1 -1
- 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.nft.json +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.nft.json +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/combo-references/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/custom-embedding/manage/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/openai-compatible/manage/route.js.nft.json +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/providers/[id]/models/route.js.nft.json +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.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.nft.json +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/test-batch/route.js.nft.json +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.nft.json +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.nft.json +1 -1
- 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.nft.json +1 -1
- 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.nft.json +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.nft.json +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.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/export/route.js.nft.json +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/prompt-log-db/route.js.nft.json +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/translator/console-logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/stream/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.nft.json +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.nft.json +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/logs/route.js.nft.json +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.nft.json +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.nft.json +1 -1
- 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.nft.json +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.nft.json +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.nft.json +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/route.js.nft.json +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/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/rate-limits/route.js.nft.json +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.nft.json +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.nft.json +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.nft.json +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/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_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 +5 -5
- package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/!KGRhc2hib2FyZCk/dashboard/ai-power-index/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/api-keys.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/api-keys.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys/__PAGE__.segment.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_full.segment.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/model-profiles/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cluster.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cluster.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/cluster.segments/!KGRhc2hib2FyZCk/dashboard/cluster/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/cluster.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/cluster.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/logs.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/logs.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/logs.segments/!KGRhc2hib2FyZCk/dashboard/logs/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/logs.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/logs.segments/_tree.segment.rsc +1 -1
- 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 +7 -7
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/personal.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/personal.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/personal.segments/!KGRhc2hib2FyZCk/dashboard/personal/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/personal.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/personal.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/provider-health.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/provider-health.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/embedding.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/embedding.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/embedding.segments/!KGRhc2hib2FyZCk/dashboard/providers/embedding/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/embedding.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/embedding.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/image-to-text.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/image-to-text.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/image-to-text.segments/!KGRhc2hib2FyZCk/dashboard/providers/image-to-text/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/image-to-text.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/image-to-text.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/image.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/image.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/image.segments/!KGRhc2hib2FyZCk/dashboard/providers/image/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/image.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/image.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/stt.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/stt.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/stt.segments/!KGRhc2hib2FyZCk/dashboard/providers/stt/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/stt.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/stt.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/tts.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/tts.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/tts.segments/!KGRhc2hib2FyZCk/dashboard/providers/tts/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/tts.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/tts.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/web.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/web.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/web.segments/!KGRhc2hib2FyZCk/dashboard/providers/web/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/web.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/web.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/!KGRhc2hib2FyZCk/dashboard/resource-monitor/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard.html +1 -1
- package/app/.next-cli-build/server/app/dashboard.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/index.html +1 -1
- package/app/.next-cli-build/server/app/index.rsc +5 -5
- package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
- 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 +5 -5
- package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +5 -5
- 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 +6 -6
- package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app-paths-manifest.json +21 -21
- package/app/.next-cli-build/server/chunks/2428.js +1 -1
- package/app/.next-cli-build/server/chunks/3399.js +1 -1
- package/app/.next-cli-build/server/chunks/4746.js +1 -1
- package/app/.next-cli-build/server/chunks/6811.js +1 -1
- package/app/.next-cli-build/server/chunks/6992.js +1 -1
- package/app/.next-cli-build/server/chunks/7126.js +1 -1
- 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/chunks/{5263-27880098055728b6.js → 5263-c3d964574213df7b.js} +1 -1
- package/app/.next-cli-build/static/chunks/912-6b0eff2ccc75cb6f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/personalcloudcombo/{page-60b737fd98c8c791.js → page-49b624ecbe4f4e3f.js} +1 -1
- package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite +0 -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/chunks/912-787e60c04e96f811.js +0 -1
- /package/app/.next-cli-build/static/{MtaBmvxeI9lMgTBm8bhtP → ITaoh5AK5FTLHwwTAgZGr}/_buildManifest.js +0 -0
- /package/app/.next-cli-build/static/{MtaBmvxeI9lMgTBm8bhtP → ITaoh5AK5FTLHwwTAgZGr}/_ssgManifest.js +0 -0
- /package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/{upgrade-5.4.48-to-5.4.49-5.4.49-20260915-183525 → upgrade-5.5.23-to-5.5.28-5.5.28-20260924-101146}/data.sqlite +0 -0
- /package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/{upgrade-5.4.49-to-5.4.50-5.4.50-20260915-190431 → upgrade-5.5.28-to-5.5.29-5.5.29-20260924-103755}/data.sqlite +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{var a={};a.id=823,a.ids=[823],a.modules={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")},8128:a=>{"use strict";a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},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")},20503:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={MutableRequestCookiesAdapter:function(){return o},ReadonlyRequestCookiesError:function(){return j},RequestCookiesAdapter:function(){return k},appendMutableCookies:function(){return n},areCookiesMutableInCurrentPhase:function(){return q},createCookiesWithMutableAccessCheck:function(){return p},getModifiedCookieValues:function(){return m},responseCookiesToRequestCookies:function(){return s}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(91488),g=c(20445),h=c(29294),i=c(43014);class j extends Error{constructor(){super("Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#options"),Object.defineProperty(this,"__NEXT_ERROR_CODE",{value:"E1180",enumerable:!1,configurable:!0})}static callable(){throw new j}}class k{static seal(a){return new Proxy(a,{get(a,b,c){switch(b){case"clear":case"delete":case"set":return j.callable;default:return g.ReflectAdapter.get(a,b,c)}}})}static fresh(a){return new Proxy(a,{get:(a,b,c)=>g.ReflectAdapter.get(a,b,c)})}}let l=Symbol.for("next.mutated.cookies");function m(a){let b=a[l];return b&&Array.isArray(b)&&0!==b.length?b:[]}function n(a,b){let c=m(b);if(0===c.length)return!1;let d=new f.ResponseCookies(a),e=d.getAll();for(let a of c)d.set(a);for(let a of e)d.set(a);return!0}class o{static wrap(a,b){let c=new f.ResponseCookies(new Headers);for(let b of a.getAll())c.set(b);let d=[],e=new Set,j=()=>{let a=h.workAsyncStorage.getStore();if(a&&(a.pathWasRevalidated=i.ActionDidRevalidateStaticAndDynamic),d=c.getAll().filter(a=>e.has(a.name)),b){let a=[];for(let b of d){let c=new f.ResponseCookies(new Headers);c.set(b),a.push(c.toString())}b(a)}},k=new Proxy(c,{get(a,b,c){switch(b){case l:return d;case"delete":return function(...b){e.add("string"==typeof b[0]?b[0]:b[0].name);try{return a.delete(...b),k}finally{j()}};case"set":return function(...b){e.add("string"==typeof b[0]?b[0]:b[0].name);try{return a.set(...b),k}finally{j()}};default:return g.ReflectAdapter.get(a,b,c)}}});return k}}function p(a){let b=new Proxy(a.mutableCookies,{get(c,d,e){switch(d){case"delete":return function(...d){return r(a,"cookies().delete"),c.delete(...d),b};case"set":return function(...d){return r(a,"cookies().set"),c.set(...d),b};default:return g.ReflectAdapter.get(c,d,e)}}});return b}function q(a){return"action"===a.phase}function r(a,b){if(!q(a))throw new j}function s(a){let b=new f.RequestCookies(new Headers);for(let c of a.getAll())b.set(c);return b}},21820:a=>{"use strict";a.exports=require("os")},27091:(a,b,c)=>{"use strict";c.r(b),c.d(b,{__next_app__:()=>w,handler:()=>y,routeModule:()=>x});var d=c(21635),e=c(86315),f=c(1020),g=c(61287),h={};for(let a in g)0>["default","__next_app__","routeModule","handler"].indexOf(a)&&(h[a]=()=>g[a]);c.d(b,h);let i=(0,d.p)(()=>Promise.resolve().then(c.bind(c,32059))),j=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),k=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,55091,23))),l=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,45270,23))),m=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,28193,23))),n=(0,d.p)(()=>Promise.resolve().then(c.bind(c,30508))),o=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),p=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,55091,23))),q=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,45270,23))),r=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,28193,23))),s=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),t=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),u={children:["",{children:["(dashboard)",{children:["dashboard",{children:["personalcloudcombo",{children:["__PAGE__",{},{page:[(0,d.p)(()=>Promise.resolve().then(c.bind(c,30229))),"D:\\bluerouter\\src\\app\\(dashboard)\\dashboard\\personalcloudcombo\\page.js"]}]},{"global-error":[t,"next/dist/client/components/builtin/global-error.js"]},[]]},{"global-error":[s,"next/dist/client/components/builtin/global-error.js"]},[]]},{layout:[n,"D:\\bluerouter\\src\\app\\(dashboard)\\layout.js"],"global-error":[o,"next/dist/client/components/builtin/global-error.js"],"not-found":[p,"next/dist/client/components/builtin/not-found.js"],forbidden:[q,"next/dist/client/components/builtin/forbidden.js"],unauthorized:[r,"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await (0,d.p)(()=>Promise.resolve().then(c.bind(c,70440)))()).default(a)],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]},{layout:[i,"D:\\bluerouter\\src\\app\\layout.js"],"global-error":[j,"next/dist/client/components/builtin/global-error.js"],"not-found":[k,"next/dist/client/components/builtin/not-found.js"],forbidden:[l,"next/dist/client/components/builtin/forbidden.js"],unauthorized:[m,"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await (0,d.p)(()=>Promise.resolve().then(c.bind(c,70440)))()).default(a)],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]}.children,v=(0,e.H)({tree:u,page:"/(dashboard)/dashboard/personalcloudcombo/page",pathname:"/dashboard/personalcloudcombo",require:c,loadChunk:()=>Promise.resolve(),interopDefault:f.T}),w=v.__next_app__,x=v.routeModule,y=v.handler},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")},30229:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>g,dynamic:()=>f});var d=c(5735),e=c(45152);let f="force-dynamic";function g(){return(0,d.jsx)("div",{className:"min-w-0",children:(0,d.jsx)(e.default,{})})}},32052:(a,b,c)=>{Promise.resolve().then(c.bind(c,45152))},33873:a=>{"use strict";a.exports=require("path")},34631:a=>{"use strict";a.exports=require("tls")},38522:a=>{"use strict";a.exports=require("node:zlib")},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")},43014:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={ActionDidNotRevalidate:function(){return e},ActionDidRevalidateDynamicOnly:function(){return g},ActionDidRevalidateStaticAndDynamic:function(){return f}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});let e=0,f=1,g=2},43621:(a,b,c)=>{"use strict";c.d(b,{default:()=>o});var d=c(48249),e=c(67484),f=c(17660),g=c(72738),h=c(95145),i=c(99070);let j=[{id:"fallback",label:"Fallback (priority order)",icon:"swap_vert"},{id:"round-robin",label:"Round Robin",icon:"sync"}],k={fallback:"Fallback (priority order)","round-robin":"Round Robin",sticky:"Sticky","least-latency":"Least latency",p2c:"Power of two choices"};function l(a){return k[a]||a||"fallback"}function m(a){return String(a||"").trim().toLowerCase()}function n(){return{id:null,name:"",strategy:"fallback",models:[]}}function o(){let[a,b]=(0,e.useState)([]),[c,k]=(0,e.useState)([]),[o,p]=(0,e.useState)(!0),[q,r]=(0,e.useState)(""),[s,t]=(0,e.useState)(!1),[u,v]=(0,e.useState)(""),[w,x]=(0,e.useState)(null),[y,z]=(0,e.useState)(n()),[A,B]=(0,e.useState)(""),[C,D]=(0,e.useState)(!1),[E,F]=(0,e.useState)(""),[G,H]=(0,e.useState)(""),[I,J]=(0,e.useState)(""),[K,L]=(0,e.useState)("all"),[M,N]=(0,e.useState)(null),[O,P]=(0,e.useState)([]),[Q,R]=(0,e.useState)(!1),[S,T]=(0,e.useState)(""),[U,V]=(0,e.useState)(!1),[W,X]=(0,e.useState)(""),[Y,Z]=(0,e.useState)(""),$=(0,e.useCallback)(async()=>{p(!0),r("");try{let[a,c]=await Promise.all([fetch("/api/personal-cloud-providers",{cache:"no-store"}),fetch("/api/personal-cloud-combos?scope=all",{cache:"no-store"})]),d=await a.json().catch(()=>({})),e=await c.json().catch(()=>({}));if(!a.ok)throw Error(d.error||"Failed to load personal connections");if(!c.ok)throw Error(e.error||"Failed to load cloud combos");b(Array.isArray(d.connections)?d.connections:[]),k(Array.isArray(e.combos)?e.combos:[]),B(e.userId||""),D("all"===e.scope)}catch(a){r(a.message||"Failed to load cloud combos")}finally{p(!1)}},[]),_=async a=>{N(a),T(""),X(""),Z(""),R(!0);try{let a=await fetch("/api/keys?pageSize=100&status=active",{cache:"no-store"}),b=await a.json().catch(()=>({}));if(!a.ok)throw Error(b.error||"Failed to load API keys");P(Array.isArray(b.keys)?b.keys:[])}catch(a){X(a.message||"Failed to load API keys"),P([])}finally{R(!1)}};function aa(){N(null),T(""),X(""),Z("")}async function ab(){if(M&&S){V(!0),X("");try{let a=await fetch(`/api/personal-cloud-combos/${encodeURIComponent(M.id)}/api-key-models`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKeyId:S})}),b=await a.json().catch(()=>({}));if(!a.ok)throw Error(b.error||"Failed to add combo to API key");Z(`Đ\xe3 th\xeam "${M.name}" v\xe0o API key ${b.key?.name||""}.`)}catch(a){X(a.message||"Failed to add combo to API key")}finally{V(!1)}}}let ac=(0,e.useMemo)(()=>{let b=new Set,c=[];for(let d of a)if(!1!==d.isActive){for(let a of Array.isArray(d?.importedModels)&&d.importedModels.length>0?d.importedModels:Array.isArray(d?.availableModels)?d.availableModels:[])!a?.routeModel||b.has(a.routeModel)||(b.add(a.routeModel),c.push({provider:d.provider,connectionLabel:d.name||d.email||d.provider,model:a}))}return c},[a]),ad=m(A),ae=(0,e.useCallback)(a=>!C||!!ad&&m(a?.ownerUser)===ad,[C,ad]),af=(0,e.useMemo)(()=>{let a=new Set;for(let b of c){let c=String(b.ownerUser||"").trim();c&&a.add(c)}return[...a].sort((a,b)=>a.localeCompare(b))},[c]),ag=(0,e.useMemo)(()=>[...new Set(c.map(a=>a.strategy||"fallback"))].sort((a,b)=>l(a).localeCompare(l(b))),[c]),ah=!!E.trim()||!!G||!!I||"all"!==K,ai=(0,e.useMemo)(()=>{if(!C)return c;let a=E.trim().toLowerCase();return c.filter(b=>(!G||m(b.ownerUser)===m(G))&&(!I||(b.strategy||"fallback")===I)&&("active"!==K||!1!==b.isActive)&&("inactive"!==K||!1===b.isActive)&&(!a||[b.ownerUser,b.name,b.id,...b.models||[]].join(" ").toLowerCase().includes(a)))},[c,C,E,G,I,K]);function aj(){x(null),z(n()),v("")}function ak(a,b){z(c=>{let d=[...c.models],e=a+b;return e<0||e>=d.length?c:([d[a],d[e]]=[d[e],d[a]],{...c,models:d})})}async function al(){v("");let a=y.name.trim();if(!a)return void v("Name is required");if(0===y.models.length)return void v("Select at least one model");t(!0);try{let b="new"===w,c=b?"/api/personal-cloud-combos":`/api/personal-cloud-combos/${encodeURIComponent(y.id)}`,d=await fetch(c,{method:b?"POST":"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:a,strategy:y.strategy,models:y.models})}),e=await d.json().catch(()=>({}));if(!d.ok){let a=Array.isArray(e.invalidModels)&&e.invalidModels.length>0?`: ${e.invalidModels.join(", ")}`:"";throw Error((e.error||"Failed to save combo")+a)}await $(),aj()}catch(a){v(a.message||"Failed to save combo")}finally{t(!1)}}async function am(a){if(window.confirm(`Delete cloud combo "${a.name}"? This cannot be undone.`))try{let b=await fetch(`/api/personal-cloud-combos/${encodeURIComponent(a.id)}`,{method:"DELETE"}),c=await b.json().catch(()=>({}));if(!b.ok)throw Error(c.error||"Failed to delete combo");await $()}catch(a){r(a.message||"Failed to delete combo")}}return o?(0,d.jsx)("div",{className:"rounded-2xl border border-border bg-surface p-4 text-sm text-text-muted",children:"Loading cloud combos…"}):(0,d.jsxs)("div",{className:"space-y-5",children:[(0,d.jsxs)("section",{className:"space-y-2",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-base font-semibold text-text-main",children:"Cloud Combos"}),(0,d.jsx)("p",{className:"mt-1 max-w-2xl text-xs leading-5 text-text-muted",children:"Tạo combo (fallback / round-robin) gồm c\xe1c model từ ch\xednh c\xe1c t\xe0i khoản OAuth c\xe1 nh\xe2n của bạn (Claude, Codex/OpenAI, Grok, Kiro...). Kh\xf4ng c\xf3 sampling override."}),C&&(0,d.jsxs)("p",{className:"mt-1.5 inline-flex items-center gap-1.5 rounded-lg border border-primary/30 bg-primary/5 px-2 py-1 text-[11px] text-primary",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"admin_panel_settings"}),"Chế độ admin: đang xem ",c.length," combo của to\xe0n hệ thống (",af.length," người d\xf9ng). Combo của người kh\xe1c chỉ xem, kh\xf4ng sửa được."]})]}),null===w&&(0,d.jsxs)("button",{type:"button",onClick:function(){z(n()),v(""),x("new")},className:"inline-flex items-center gap-1.5 rounded-lg border border-border bg-background px-3 py-1.5 text-xs font-medium text-text-main transition hover:border-primary/30 hover:bg-surface",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"add"}),"New combo"]})]}),q&&(0,d.jsx)("div",{className:"rounded-lg border border-red-500/20 bg-red-500/5 p-3 text-xs text-red-600",children:q}),C&&c.length>0&&(0,d.jsxs)("div",{className:"grid gap-2 md:grid-cols-[minmax(0,1fr)_auto_auto_auto]",children:[(0,d.jsx)("input",{type:"text",value:E,onChange:a=>F(a.target.value),placeholder:"T\xecm theo owner, t\xean combo, model id...",className:"h-9 w-full rounded-lg border border-border bg-background px-3 text-xs text-text-main outline-none focus:border-primary"}),(0,d.jsxs)("select",{value:G,onChange:a=>H(a.target.value),className:"h-9 rounded-lg border border-border bg-background px-2 text-xs text-text-main outline-none focus:border-primary",children:[(0,d.jsx)("option",{value:"",children:"Tất cả owner"}),af.map(a=>(0,d.jsx)("option",{value:a,children:a},a))]}),(0,d.jsxs)("select",{value:I,onChange:a=>J(a.target.value),className:"h-9 rounded-lg border border-border bg-background px-2 text-xs text-text-main outline-none focus:border-primary",children:[(0,d.jsx)("option",{value:"",children:"Tất cả strategy"}),ag.map(a=>(0,d.jsx)("option",{value:a,children:l(a)},a))]}),(0,d.jsxs)("select",{value:K,onChange:a=>L(a.target.value),className:"h-9 rounded-lg border border-border bg-background px-2 text-xs 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:"Đang hoạt động"}),(0,d.jsx)("option",{value:"inactive",children:"Cần xử l\xfd"})]})]}),C&&ah&&(0,d.jsxs)("div",{className:"flex items-center gap-2 text-[11px] text-text-muted",children:[(0,d.jsxs)("span",{children:["Hiện ",ai.length,"/",c.length," combo"]}),(0,d.jsx)("button",{type:"button",onClick:function(){F(""),H(""),J(""),L("all")},className:"text-primary hover:underline",children:"Xo\xe1 bộ lọc"})]})]}),null!==w&&(0,d.jsxs)(f.default,{className:"space-y-4",children:[(0,d.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"mb-1 block text-xs font-medium text-text-muted",children:"Name"}),(0,d.jsx)("input",{type:"text",value:y.name,onChange:a=>z(b=>({...b,name:a.target.value})),placeholder:"my-claude-fallback",className:"w-full rounded-lg border border-border bg-background px-3 py-2 text-sm text-text-main"})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"mb-1 block text-xs font-medium text-text-muted",children:"Strategy"}),(0,d.jsx)("div",{className:"flex gap-2",children:j.map(a=>(0,d.jsxs)("button",{type:"button",onClick:()=>z(b=>({...b,strategy:a.id})),className:`inline-flex flex-1 items-center justify-center gap-1.5 rounded-lg border px-3 py-2 text-xs font-medium transition ${y.strategy===a.id?"border-primary/40 bg-primary/10 text-primary":"border-border bg-background text-text-main hover:border-primary/30"}`,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:a.icon}),a.label]},a.id))})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"mb-2 text-xs font-medium text-text-muted",children:"Models in this combo (order = fallback priority)"}),0===y.models.length?(0,d.jsx)("div",{className:"rounded-lg border border-dashed border-border p-3 text-xs text-text-muted",children:"Chưa chọn model n\xe0o."}):(0,d.jsx)("div",{className:"space-y-1.5",children:y.models.map((a,b)=>(0,d.jsxs)("div",{className:"flex items-center gap-2 rounded-lg border border-border bg-background px-3 py-1.5",children:[(0,d.jsx)("span",{className:"min-w-0 flex-1 truncate text-xs font-mono text-text-main",children:a}),(0,d.jsx)("button",{type:"button",onClick:()=>ak(b,-1),disabled:0===b,className:"text-text-muted hover:text-text-main disabled:opacity-30",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"arrow_upward"})}),(0,d.jsx)("button",{type:"button",onClick:()=>ak(b,1),disabled:b===y.models.length-1,className:"text-text-muted hover:text-text-main disabled:opacity-30",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"arrow_downward"})}),(0,d.jsx)("button",{type:"button",onClick:()=>{z(b=>({...b,models:b.models.filter(b=>b!==a)}))},className:"text-red-500 hover:text-red-600",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"close"})})]},a))})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"mb-2 text-xs font-medium text-text-muted",children:"Model của bạn (chỉ hiện model từ OAuth connection đang active của bạn)"}),0===ac.length?(0,d.jsx)("div",{className:"rounded-lg border border-dashed border-border p-3 text-xs text-text-muted",children:"Bạn chưa c\xf3 personal OAuth connection n\xe0o đang active. Kết nối t\xe0i khoản ở tab Personal OAuth trước."}):(0,d.jsx)("div",{className:"grid max-h-64 gap-1.5 overflow-y-auto rounded-lg border border-border p-2 sm:grid-cols-2",children:ac.map(({provider:a,connectionLabel:b,model:c})=>{let e=y.models.includes(c.routeModel),f="review"===c.quotaFamily,h=f?c.name.replace(/ Review$/,""):c.name;return(0,d.jsxs)("label",{className:"flex cursor-pointer items-center gap-2 rounded-lg px-2 py-1.5 text-xs hover:bg-surface-2/50",children:[(0,d.jsx)("input",{type:"checkbox",checked:e,onChange:()=>{var a;return a=c.routeModel,void z(b=>{let c=b.models.includes(a);return{...b,models:c?b.models.filter(b=>b!==a):[...b.models,a]}})},className:"shrink-0"}),(0,d.jsx)(g.A,{src:`/providers/${a}.png`,alt:a,size:18,className:"shrink-0 rounded object-contain",fallbackText:String(a||"?").slice(0,2).toUpperCase()}),(0,d.jsxs)("span",{className:"min-w-0 flex-1 truncate",children:[(0,d.jsxs)("span",{className:"block truncate",children:[(0,d.jsx)("span",{className:"font-medium text-text-main",children:h}),f&&(0,d.jsx)("span",{className:"ml-1 rounded bg-amber-500/10 px-1 py-0.5 text-[10px] font-medium text-amber-600",children:"Review quota"}),(0,d.jsxs)("span",{className:"ml-1 text-text-muted",children:["\xb7 ",b]})]}),(0,d.jsx)("span",{className:"block truncate font-mono text-[10px] text-text-muted/70",children:c.routeModel})]})]},`${b}:${c.routeModel}`)})})]}),u&&(0,d.jsx)("div",{className:"rounded-lg border border-red-500/20 bg-red-500/5 p-2.5 text-xs text-red-600",children:u}),(0,d.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,d.jsx)("button",{type:"button",onClick:aj,className:"rounded-lg border border-border bg-background px-3 py-1.5 text-xs font-medium text-text-main hover:bg-surface",children:"Cancel"}),(0,d.jsx)("button",{type:"button",onClick:al,disabled:s,className:"rounded-lg border border-primary/40 bg-primary/10 px-3 py-1.5 text-xs font-medium text-primary hover:bg-primary/20 disabled:opacity-50",children:s?"Saving…":"new"===w?"Create combo":"Save changes"})]})]}),(0,d.jsxs)("div",{className:"grid gap-3 xl:grid-cols-2",children:[0===c.length&&null===w?(0,d.jsx)("div",{className:"col-span-full rounded-2xl border border-dashed border-border p-6 text-center text-sm text-text-muted",children:C?"Chưa c\xf3 ai tạo cloud combo n\xe0o.":"Bạn chưa c\xf3 cloud combo n\xe0o."}):null,c.length>0&&0===ai.length?(0,d.jsx)("div",{className:"col-span-full rounded-2xl border border-dashed border-border p-6 text-center text-sm text-text-muted",children:"Kh\xf4ng c\xf3 combo n\xe0o khớp bộ lọc."}):null,ai.map(a=>(0,d.jsxs)(f.default,{className:"space-y-3",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-2",children:[(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("div",{className:"truncate text-sm font-semibold text-text-main",children:a.name}),!1===a.isActive&&(0,d.jsx)("span",{className:"rounded-full border border-amber-500/30 bg-amber-500/10 px-2 py-0.5 text-[10px] font-semibold text-amber-600",children:"No models left — needs attention"})]}),(0,d.jsxs)("div",{className:"mt-1 text-xs text-text-muted",children:[l(a.strategy)," \xb7 ",a.models?.length||0," model(s)"]}),C&&(0,d.jsxs)("div",{className:"mt-1 flex items-center gap-1 text-[11px] text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"person"}),(0,d.jsx)("span",{className:"truncate",children:a.ownerUser||"—"})]})]}),ae(a)?(0,d.jsxs)("div",{className:"flex items-center gap-1",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>_(a),className:"inline-flex items-center gap-1 rounded-lg border border-primary/30 bg-primary/5 px-2 py-1.5 text-[11px] font-medium text-primary hover:bg-primary/10",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"vpn_key"}),"Add to API key"]}),(0,d.jsx)("button",{type:"button",onClick:()=>{z({id:a.id,name:a.name,strategy:a.strategy||"fallback",models:[...a.models||[]]}),v(""),x(a.id)},className:"rounded-lg border border-border bg-background p-1.5 text-text-muted hover:text-text-main",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"edit"})}),(0,d.jsx)("button",{type:"button",onClick:()=>am(a),className:"rounded-lg border border-border bg-background p-1.5 text-red-500 hover:bg-red-500/5",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"delete"})})]}):(0,d.jsxs)("span",{className:"inline-flex shrink-0 items-center gap-1 rounded-full border border-border bg-background px-2 py-0.5 text-[10px] font-medium text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:"lock"}),"Chỉ xem"]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2 rounded-lg border border-border bg-background px-2.5 py-1.5",children:[(0,d.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-text-muted",children:"model id để gọi API"}),(0,d.jsx)("code",{className:"min-w-0 flex-1 truncate text-xs text-text-main",children:a.id}),(0,d.jsx)("button",{type:"button",onClick:()=>(function(a){try{navigator.clipboard?.writeText(a)}catch{}})(a.id),className:"text-text-muted hover:text-text-main",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"content_copy"})})]}),(0,d.jsx)("div",{className:"flex flex-wrap gap-1.5",children:(a.models||[]).map(a=>(0,d.jsx)("span",{className:"rounded-full border border-border bg-background px-2 py-0.5 text-[11px] font-mono text-text-muted",children:a},a))})]},a.id))]}),(0,d.jsx)(h.default,{isOpen:!!M,onClose:aa,title:`Add "${M?.name||""}" to API key`,footer:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(i.default,{variant:"ghost",onClick:aa,disabled:U,children:"Cancel"}),(0,d.jsx)(i.default,{onClick:ab,loading:U,disabled:!S,children:"Add to key"})]}),children:(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["Th\xeam model id ",(0,d.jsx)("code",{className:"font-mono text-text-main",children:M?.id})," v\xe0o ",(0,d.jsx)("code",{children:"allowedModels"})," của API key đ\xe3 chọn (chỉ hiện API key của ch\xednh bạn)."]}),(0,d.jsxs)("label",{className:"block text-sm",children:[(0,d.jsx)("span",{className:"mb-1 block font-medium text-text-main",children:"API key"}),(0,d.jsxs)("select",{value:S,onChange:a=>T(a.target.value),className:"h-10 w-full rounded-xl border border-border bg-background px-3 text-sm text-text-main outline-none focus:border-primary",disabled:Q,children:[(0,d.jsx)("option",{value:"",children:Q?"Đang tải API keys...":"Chọn API key"}),O.map(a=>(0,d.jsx)("option",{value:a.id,children:a.name||a.id},a.id))]})]}),Q||0!==O.length?null:(0,d.jsx)("div",{className:"rounded-xl border border-amber-500/30 bg-amber-500/10 p-3 text-xs text-amber-700",children:"Bạn chưa c\xf3 API key active n\xe0o. Tạo API key ở /dashboard/api-keys trước."}),W&&(0,d.jsx)("div",{className:"rounded-lg border border-red-500/20 bg-red-500/5 p-2.5 text-xs text-red-600",children:W}),Y&&(0,d.jsx)("div",{className:"rounded-lg border border-green-500/20 bg-green-500/5 p-2.5 text-xs text-green-600",children:Y})]})})]})}},45152:(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\\\\personalcloudcombo\\\\CloudComboPageClient.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\\personalcloudcombo\\CloudComboPageClient.js","default")},46060:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external.js")},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")},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")},77598:a=>{"use strict";a.exports=require("node:crypto")},78474:a=>{"use strict";a.exports=require("node:events")},79428:a=>{"use strict";a.exports=require("buffer")},79748:a=>{"use strict";a.exports=require("fs/promises")},80099:a=>{"use strict";a.exports=require("node:sqlite")},81787:a=>{"use strict";a.exports=require("bun:sqlite")},84788:(a,b,c)=>{Promise.resolve().then(c.bind(c,43621))},87550:a=>{"use strict";a.exports=require("better-sqlite3")},89768:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"createDedupedByCallsiteServerErrorLoggerDev",{enumerable:!0,get:function(){return i}});let d=function(a){if(a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var b=e(void 0);if(b&&b.has(a))return b.get(a);var c={__proto__:null},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in a)if("default"!==f&&Object.prototype.hasOwnProperty.call(a,f)){var g=d?Object.getOwnPropertyDescriptor(a,f):null;g&&(g.get||g.set)?Object.defineProperty(c,f,g):c[f]=a[f]}return c.default=a,b&&b.set(a,c),c}(c(91986));function e(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(e=function(a){return a?c:b})(a)}let f={current:null},g="function"==typeof d.cache?d.cache:a=>a,h=console.warn;function i(a){return function(...b){h(a(...b))}}g(a=>{try{h(f.current)}finally{f.current=null}})},91645:a=>{"use strict";a.exports=require("net")},92305:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={isRequestApiAllowedInCurrentPhase:function(){return k},throwForSearchParamsAccessInUseCache:function(){return j},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return i}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(15693),g=c(19121),h=c(3295);function i(a,b){throw Object.defineProperty(new f.StaticGenBailoutError(`Route ${a} with \`dynamic = "error"\` couldn't be rendered statically because it used ${b}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function j(a,b){let c=Object.defineProperty(Error(`Route ${a.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(c,b),a.invalidDynamicUsageError??=c,c}function k(a){switch(a.phase){case"action":case"render":return!0;case"after":{let a=g.actionAsyncStorage.getStore();if(a&&(a.isAppRoute||a.isAction))return!0;let b=h.afterTaskAsyncStorage.getStore();if(b)return"action"===b.rootTaskSpawnPhase;return!1}}}},94735:a=>{"use strict";a.exports=require("events")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,2430,8316,8946,402,5681,4404,5024,2428,1240],()=>b(b.s=27091));module.exports=c})();
|
|
1
|
+
(()=>{var a={};a.id=823,a.ids=[823],a.modules={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")},8128:a=>{"use strict";a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},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")},20503:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={MutableRequestCookiesAdapter:function(){return o},ReadonlyRequestCookiesError:function(){return j},RequestCookiesAdapter:function(){return k},appendMutableCookies:function(){return n},areCookiesMutableInCurrentPhase:function(){return q},createCookiesWithMutableAccessCheck:function(){return p},getModifiedCookieValues:function(){return m},responseCookiesToRequestCookies:function(){return s}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(91488),g=c(20445),h=c(29294),i=c(43014);class j extends Error{constructor(){super("Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#options"),Object.defineProperty(this,"__NEXT_ERROR_CODE",{value:"E1180",enumerable:!1,configurable:!0})}static callable(){throw new j}}class k{static seal(a){return new Proxy(a,{get(a,b,c){switch(b){case"clear":case"delete":case"set":return j.callable;default:return g.ReflectAdapter.get(a,b,c)}}})}static fresh(a){return new Proxy(a,{get:(a,b,c)=>g.ReflectAdapter.get(a,b,c)})}}let l=Symbol.for("next.mutated.cookies");function m(a){let b=a[l];return b&&Array.isArray(b)&&0!==b.length?b:[]}function n(a,b){let c=m(b);if(0===c.length)return!1;let d=new f.ResponseCookies(a),e=d.getAll();for(let a of c)d.set(a);for(let a of e)d.set(a);return!0}class o{static wrap(a,b){let c=new f.ResponseCookies(new Headers);for(let b of a.getAll())c.set(b);let d=[],e=new Set,j=()=>{let a=h.workAsyncStorage.getStore();if(a&&(a.pathWasRevalidated=i.ActionDidRevalidateStaticAndDynamic),d=c.getAll().filter(a=>e.has(a.name)),b){let a=[];for(let b of d){let c=new f.ResponseCookies(new Headers);c.set(b),a.push(c.toString())}b(a)}},k=new Proxy(c,{get(a,b,c){switch(b){case l:return d;case"delete":return function(...b){e.add("string"==typeof b[0]?b[0]:b[0].name);try{return a.delete(...b),k}finally{j()}};case"set":return function(...b){e.add("string"==typeof b[0]?b[0]:b[0].name);try{return a.set(...b),k}finally{j()}};default:return g.ReflectAdapter.get(a,b,c)}}});return k}}function p(a){let b=new Proxy(a.mutableCookies,{get(c,d,e){switch(d){case"delete":return function(...d){return r(a,"cookies().delete"),c.delete(...d),b};case"set":return function(...d){return r(a,"cookies().set"),c.set(...d),b};default:return g.ReflectAdapter.get(c,d,e)}}});return b}function q(a){return"action"===a.phase}function r(a,b){if(!q(a))throw new j}function s(a){let b=new f.RequestCookies(new Headers);for(let c of a.getAll())b.set(c);return b}},21820:a=>{"use strict";a.exports=require("os")},27091:(a,b,c)=>{"use strict";c.r(b),c.d(b,{__next_app__:()=>w,handler:()=>y,routeModule:()=>x});var d=c(21635),e=c(86315),f=c(1020),g=c(61287),h={};for(let a in g)0>["default","__next_app__","routeModule","handler"].indexOf(a)&&(h[a]=()=>g[a]);c.d(b,h);let i=(0,d.p)(()=>Promise.resolve().then(c.bind(c,32059))),j=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),k=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,55091,23))),l=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,45270,23))),m=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,28193,23))),n=(0,d.p)(()=>Promise.resolve().then(c.bind(c,30508))),o=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),p=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,55091,23))),q=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,45270,23))),r=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,28193,23))),s=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),t=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),u={children:["",{children:["(dashboard)",{children:["dashboard",{children:["personalcloudcombo",{children:["__PAGE__",{},{page:[(0,d.p)(()=>Promise.resolve().then(c.bind(c,30229))),"D:\\bluerouter\\src\\app\\(dashboard)\\dashboard\\personalcloudcombo\\page.js"]}]},{"global-error":[t,"next/dist/client/components/builtin/global-error.js"]},[]]},{"global-error":[s,"next/dist/client/components/builtin/global-error.js"]},[]]},{layout:[n,"D:\\bluerouter\\src\\app\\(dashboard)\\layout.js"],"global-error":[o,"next/dist/client/components/builtin/global-error.js"],"not-found":[p,"next/dist/client/components/builtin/not-found.js"],forbidden:[q,"next/dist/client/components/builtin/forbidden.js"],unauthorized:[r,"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await (0,d.p)(()=>Promise.resolve().then(c.bind(c,70440)))()).default(a)],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]},{layout:[i,"D:\\bluerouter\\src\\app\\layout.js"],"global-error":[j,"next/dist/client/components/builtin/global-error.js"],"not-found":[k,"next/dist/client/components/builtin/not-found.js"],forbidden:[l,"next/dist/client/components/builtin/forbidden.js"],unauthorized:[m,"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await (0,d.p)(()=>Promise.resolve().then(c.bind(c,70440)))()).default(a)],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]}.children,v=(0,e.H)({tree:u,page:"/(dashboard)/dashboard/personalcloudcombo/page",pathname:"/dashboard/personalcloudcombo",require:c,loadChunk:()=>Promise.resolve(),interopDefault:f.T}),w=v.__next_app__,x=v.routeModule,y=v.handler},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")},30229:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>g,dynamic:()=>f});var d=c(5735),e=c(45152);let f="force-dynamic";function g(){return(0,d.jsx)("div",{className:"min-w-0",children:(0,d.jsx)(e.default,{})})}},32052:(a,b,c)=>{Promise.resolve().then(c.bind(c,45152))},33873:a=>{"use strict";a.exports=require("path")},34631:a=>{"use strict";a.exports=require("tls")},38522:a=>{"use strict";a.exports=require("node:zlib")},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")},43014:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={ActionDidNotRevalidate:function(){return e},ActionDidRevalidateDynamicOnly:function(){return g},ActionDidRevalidateStaticAndDynamic:function(){return f}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});let e=0,f=1,g=2},43621:(a,b,c)=>{"use strict";c.d(b,{default:()=>o});var d=c(48249),e=c(67484),f=c(17660),g=c(72738),h=c(95145),i=c(99070);let j=[{id:"fallback",label:"Fallback (priority order)",icon:"swap_vert"},{id:"round-robin",label:"Round Robin",icon:"sync"}],k={fallback:"Fallback (priority order)","round-robin":"Round Robin",sticky:"Sticky","least-latency":"Least latency",p2c:"Power of two choices"};function l(a){return k[a]||a||"fallback"}function m(a){return String(a||"").trim().toLowerCase()}function n(){return{id:null,name:"",strategy:"fallback",models:[]}}function o(){let[a,b]=(0,e.useState)([]),[c,k]=(0,e.useState)([]),[o,p]=(0,e.useState)(!0),[q,r]=(0,e.useState)(""),[s,t]=(0,e.useState)(!1),[u,v]=(0,e.useState)(""),[w,x]=(0,e.useState)(null),[y,z]=(0,e.useState)(n()),[A,B]=(0,e.useState)(""),[C,D]=(0,e.useState)(!1),[E,F]=(0,e.useState)(""),[G,H]=(0,e.useState)(""),[I,J]=(0,e.useState)(""),[K,L]=(0,e.useState)("all"),[M,N]=(0,e.useState)(null),[O,P]=(0,e.useState)([]),[Q,R]=(0,e.useState)(!1),[S,T]=(0,e.useState)(""),[U,V]=(0,e.useState)(!1),[W,X]=(0,e.useState)(""),[Y,Z]=(0,e.useState)(""),$=(0,e.useCallback)(async()=>{p(!0),r("");try{let[a,c]=await Promise.all([fetch("/api/personal-cloud-providers",{cache:"no-store"}),fetch("/api/personal-cloud-combos?scope=all",{cache:"no-store"})]),d=await a.json().catch(()=>({})),e=await c.json().catch(()=>({}));if(!a.ok)throw Error(d.error||"Failed to load personal connections");if(!c.ok)throw Error(e.error||"Failed to load cloud combos");b(Array.isArray(d.connections)?d.connections:[]),k(Array.isArray(e.combos)?e.combos:[]),B(e.userId||""),D("all"===e.scope)}catch(a){r(a.message||"Failed to load cloud combos")}finally{p(!1)}},[]),_=async a=>{N(a),T(""),X(""),Z(""),R(!0);try{let a=await fetch("/api/keys?pageSize=100&status=active",{cache:"no-store"}),b=await a.json().catch(()=>({}));if(!a.ok)throw Error(b.error||"Failed to load API keys");P(Array.isArray(b.keys)?b.keys:[])}catch(a){X(a.message||"Failed to load API keys"),P([])}finally{R(!1)}};function aa(){N(null),T(""),X(""),Z("")}async function ab(){if(M&&S){V(!0),X("");try{let a=await fetch(`/api/personal-cloud-combos/${encodeURIComponent(M.id)}/api-key-models`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKeyId:S})}),b=await a.json().catch(()=>({}));if(!a.ok)throw Error(b.error||"Failed to add combo to API key");Z(`Đ\xe3 th\xeam "${M.name}" v\xe0o API key ${b.key?.name||""}.`)}catch(a){X(a.message||"Failed to add combo to API key")}finally{V(!1)}}}let ac=(0,e.useMemo)(()=>{let b=new Set,c=[];for(let d of a)if(!1!==d.isActive){for(let a of Array.isArray(d?.importedModels)&&d.importedModels.length>0?d.importedModels:Array.isArray(d?.availableModels)?d.availableModels:[])!a?.routeModel||b.has(a.routeModel)||(b.add(a.routeModel),c.push({provider:d.provider,connectionLabel:d.name||d.email||d.provider,model:a}))}return c},[a]),ad=m(A),ae=(0,e.useCallback)(a=>!C||!!ad&&m(a?.ownerUser)===ad,[C,ad]),af=(0,e.useMemo)(()=>{let a=new Set;for(let b of c){let c=String(b.ownerUser||"").trim();c&&a.add(c)}return[...a].sort((a,b)=>a.localeCompare(b))},[c]),ag=(0,e.useMemo)(()=>[...new Set(c.map(a=>a.strategy||"fallback"))].sort((a,b)=>l(a).localeCompare(l(b))),[c]),ah=!!E.trim()||!!G||!!I||"all"!==K,ai=(0,e.useMemo)(()=>{if(!C)return c;let a=E.trim().toLowerCase();return c.filter(b=>(!G||m(b.ownerUser)===m(G))&&(!I||(b.strategy||"fallback")===I)&&("active"!==K||!1!==b.isActive)&&("inactive"!==K||!1===b.isActive)&&(!a||[b.ownerUser,b.name,b.id,...b.models||[]].join(" ").toLowerCase().includes(a)))},[c,C,E,G,I,K]);function aj(){x(null),z(n()),v("")}function ak(a,b){z(c=>{let d=[...c.models],e=a+b;return e<0||e>=d.length?c:([d[a],d[e]]=[d[e],d[a]],{...c,models:d})})}async function al(){v("");let a=y.name.trim();if(!a)return void v("Name is required");if(0===y.models.length)return void v("Select at least one model");t(!0);try{let b="new"===w,c=b?"/api/personal-cloud-combos":`/api/personal-cloud-combos/${encodeURIComponent(y.id)}`,d=await fetch(c,{method:b?"POST":"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:a,strategy:y.strategy,models:y.models})}),e=await d.json().catch(()=>({}));if(!d.ok){let a=Array.isArray(e.invalidModels)&&e.invalidModels.length>0?`: ${e.invalidModels.join(", ")}`:"";throw Error((e.error||"Failed to save combo")+a)}await $(),aj()}catch(a){v(a.message||"Failed to save combo")}finally{t(!1)}}async function am(a){if(window.confirm(`Delete cloud combo "${a.name}"? This cannot be undone.`))try{let b=await fetch(`/api/personal-cloud-combos/${encodeURIComponent(a.id)}`,{method:"DELETE"}),c=await b.json().catch(()=>({}));if(!b.ok)throw Error(c.error||"Failed to delete combo");await $()}catch(a){r(a.message||"Failed to delete combo")}}return o?(0,d.jsx)("div",{className:"rounded-2xl border border-border bg-surface p-4 text-sm text-text-muted",children:"Loading cloud combos…"}):(0,d.jsxs)("div",{className:"space-y-5",children:[(0,d.jsxs)("section",{className:"space-y-2",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-base font-semibold text-text-main",children:"Cloud Combos"}),(0,d.jsx)("p",{className:"mt-1 max-w-2xl text-xs leading-5 text-text-muted",children:"Tạo combo (fallback / round-robin) gồm c\xe1c model từ ch\xednh c\xe1c t\xe0i khoản OAuth c\xe1 nh\xe2n của bạn (Claude, Codex/OpenAI, Grok, Kiro...). Kh\xf4ng c\xf3 sampling override."}),C&&(0,d.jsxs)("p",{className:"mt-1.5 inline-flex items-center gap-1.5 rounded-lg border border-primary/30 bg-primary/5 px-2 py-1 text-[11px] text-primary",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"admin_panel_settings"}),"Chế độ admin: đang xem ",c.length," combo của to\xe0n hệ thống (",af.length," người d\xf9ng). Combo của người kh\xe1c chỉ xem, kh\xf4ng sửa được."]})]}),null===w&&(0,d.jsxs)("button",{type:"button",onClick:function(){z(n()),v(""),x("new")},className:"inline-flex items-center gap-1.5 rounded-lg border border-border bg-background px-3 py-1.5 text-xs font-medium text-text-main transition hover:border-primary/30 hover:bg-surface",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"add"}),"New combo"]})]}),q&&(0,d.jsx)("div",{className:"rounded-lg border border-red-500/20 bg-red-500/5 p-3 text-xs text-red-600",children:q}),C&&c.length>0&&(0,d.jsxs)("div",{className:"grid gap-2 md:grid-cols-[minmax(0,1fr)_auto_auto_auto]",children:[(0,d.jsx)("input",{type:"text",value:E,onChange:a=>F(a.target.value),placeholder:"T\xecm theo owner, t\xean combo, model id...",className:"h-9 w-full rounded-lg border border-border bg-background px-3 text-xs text-text-main outline-none focus:border-primary"}),(0,d.jsxs)("select",{value:G,onChange:a=>H(a.target.value),className:"h-9 rounded-lg border border-border bg-background px-2 text-xs text-text-main outline-none focus:border-primary",children:[(0,d.jsx)("option",{value:"",children:"Tất cả owner"}),af.map(a=>(0,d.jsx)("option",{value:a,children:a},a))]}),(0,d.jsxs)("select",{value:I,onChange:a=>J(a.target.value),className:"h-9 rounded-lg border border-border bg-background px-2 text-xs text-text-main outline-none focus:border-primary",children:[(0,d.jsx)("option",{value:"",children:"Tất cả strategy"}),ag.map(a=>(0,d.jsx)("option",{value:a,children:l(a)},a))]}),(0,d.jsxs)("select",{value:K,onChange:a=>L(a.target.value),className:"h-9 rounded-lg border border-border bg-background px-2 text-xs 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:"Đang hoạt động"}),(0,d.jsx)("option",{value:"inactive",children:"Cần xử l\xfd"})]})]}),C&&ah&&(0,d.jsxs)("div",{className:"flex items-center gap-2 text-[11px] text-text-muted",children:[(0,d.jsxs)("span",{children:["Hiện ",ai.length,"/",c.length," combo"]}),(0,d.jsx)("button",{type:"button",onClick:function(){F(""),H(""),J(""),L("all")},className:"text-primary hover:underline",children:"Xo\xe1 bộ lọc"})]})]}),null!==w&&(0,d.jsxs)(f.default,{className:"space-y-4",children:[(0,d.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"mb-1 block text-xs font-medium text-text-muted",children:"Name"}),(0,d.jsx)("input",{type:"text",value:y.name,onChange:a=>z(b=>({...b,name:a.target.value})),placeholder:"my-claude-fallback",className:"w-full rounded-lg border border-border bg-background px-3 py-2 text-sm text-text-main"})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"mb-1 block text-xs font-medium text-text-muted",children:"Strategy"}),(0,d.jsx)("div",{className:"flex gap-2",children:j.map(a=>(0,d.jsxs)("button",{type:"button",onClick:()=>z(b=>({...b,strategy:a.id})),className:`inline-flex flex-1 items-center justify-center gap-1.5 rounded-lg border px-3 py-2 text-xs font-medium transition ${y.strategy===a.id?"border-primary/40 bg-primary/10 text-primary":"border-border bg-background text-text-main hover:border-primary/30"}`,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:a.icon}),a.label]},a.id))})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"mb-2 text-xs font-medium text-text-muted",children:"Models in this combo (order = fallback priority)"}),0===y.models.length?(0,d.jsx)("div",{className:"rounded-lg border border-dashed border-border p-3 text-xs text-text-muted",children:"Chưa chọn model n\xe0o."}):(0,d.jsx)("div",{className:"space-y-1.5",children:y.models.map((a,b)=>(0,d.jsxs)("div",{className:"flex items-center gap-2 rounded-lg border border-border bg-background px-3 py-1.5",children:[(0,d.jsx)("span",{className:"min-w-0 flex-1 truncate text-xs font-mono text-text-main",children:a}),(0,d.jsx)("button",{type:"button",onClick:()=>ak(b,-1),disabled:0===b,className:"text-text-muted hover:text-text-main disabled:opacity-30",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"arrow_upward"})}),(0,d.jsx)("button",{type:"button",onClick:()=>ak(b,1),disabled:b===y.models.length-1,className:"text-text-muted hover:text-text-main disabled:opacity-30",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"arrow_downward"})}),(0,d.jsx)("button",{type:"button",onClick:()=>{z(b=>({...b,models:b.models.filter(b=>b!==a)}))},className:"text-red-500 hover:text-red-600",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"close"})})]},a))})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"mb-2 text-xs font-medium text-text-muted",children:"Model của bạn (chỉ hiện model từ OAuth connection đang active của bạn)"}),0===ac.length?(0,d.jsx)("div",{className:"rounded-lg border border-dashed border-border p-3 text-xs text-text-muted",children:"Bạn chưa c\xf3 personal OAuth connection n\xe0o đang active. Kết nối t\xe0i khoản ở tab Personal OAuth trước."}):(0,d.jsx)("div",{className:"grid max-h-64 gap-1.5 overflow-y-auto rounded-lg border border-border p-2 sm:grid-cols-2",children:ac.map(({provider:a,connectionLabel:b,model:c})=>{let e=y.models.includes(c.routeModel),f="review"===c.quotaFamily,h=f?c.name.replace(/ Review$/,""):c.name;return(0,d.jsxs)("label",{className:"flex cursor-pointer items-center gap-2 rounded-lg px-2 py-1.5 text-xs hover:bg-surface-2/50",children:[(0,d.jsx)("input",{type:"checkbox",checked:e,onChange:()=>{var a;return a=c.routeModel,void z(b=>{let c=b.models.includes(a);return{...b,models:c?b.models.filter(b=>b!==a):[...b.models,a]}})},className:"shrink-0"}),(0,d.jsx)(g.A,{src:`/providers/${a}.png`,alt:a,size:18,className:"shrink-0 rounded object-contain",fallbackText:String(a||"?").slice(0,2).toUpperCase()}),(0,d.jsxs)("span",{className:"min-w-0 flex-1 truncate",children:[(0,d.jsxs)("span",{className:"block truncate",children:[(0,d.jsx)("span",{className:"font-medium text-text-main",children:h}),f&&(0,d.jsx)("span",{className:"ml-1 rounded bg-amber-500/10 px-1 py-0.5 text-[10px] font-medium text-amber-600",children:"Review quota"}),(0,d.jsxs)("span",{className:"ml-1 text-text-muted",children:["\xb7 ",b]})]}),(0,d.jsx)("span",{className:"block truncate font-mono text-[10px] text-text-muted/70",children:c.routeModel})]})]},`${b}:${c.routeModel}`)})})]}),u&&(0,d.jsx)("div",{className:"rounded-lg border border-red-500/20 bg-red-500/5 p-2.5 text-xs text-red-600",children:u}),(0,d.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,d.jsx)("button",{type:"button",onClick:aj,className:"rounded-lg border border-border bg-background px-3 py-1.5 text-xs font-medium text-text-main hover:bg-surface",children:"Cancel"}),(0,d.jsx)("button",{type:"button",onClick:al,disabled:s,className:"rounded-lg border border-primary/40 bg-primary/10 px-3 py-1.5 text-xs font-medium text-primary hover:bg-primary/20 disabled:opacity-50",children:s?"Saving…":"new"===w?"Create combo":"Save changes"})]})]}),(0,d.jsxs)("div",{className:"grid gap-3 xl:grid-cols-2",children:[0===c.length&&null===w?(0,d.jsx)("div",{className:"col-span-full rounded-2xl border border-dashed border-border p-6 text-center text-sm text-text-muted",children:C?"Chưa c\xf3 ai tạo cloud combo n\xe0o.":"Bạn chưa c\xf3 cloud combo n\xe0o."}):null,c.length>0&&0===ai.length?(0,d.jsx)("div",{className:"col-span-full rounded-2xl border border-dashed border-border p-6 text-center text-sm text-text-muted",children:"Kh\xf4ng c\xf3 combo n\xe0o khớp bộ lọc."}):null,ai.map(a=>(0,d.jsxs)(f.default,{className:"space-y-3",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-2",children:[(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("div",{className:"truncate text-sm font-semibold text-text-main",children:a.name}),!1===a.isActive&&(0,d.jsx)("span",{className:"rounded-full border border-amber-500/30 bg-amber-500/10 px-2 py-0.5 text-[10px] font-semibold text-amber-600",children:"No models left — needs attention"})]}),(0,d.jsxs)("div",{className:"mt-1 text-xs text-text-muted",children:[l(a.strategy)," \xb7 ",a.models?.length||0," model(s)"]}),C&&(0,d.jsxs)("div",{className:"mt-1 flex items-center gap-1 text-[11px] text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"person"}),(0,d.jsx)("span",{className:"truncate",children:a.ownerUser||"—"})]})]}),ae(a)?(0,d.jsxs)("div",{className:"flex items-center gap-1",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>_(a),className:"inline-flex items-center gap-1 rounded-lg border border-primary/30 bg-primary/5 px-2 py-1.5 text-[11px] font-medium text-primary hover:bg-primary/10",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"vpn_key"}),"Add this combo to API key"]}),(0,d.jsx)("button",{type:"button",onClick:()=>{z({id:a.id,name:a.name,strategy:a.strategy||"fallback",models:[...a.models||[]]}),v(""),x(a.id)},className:"rounded-lg border border-border bg-background p-1.5 text-text-muted hover:text-text-main",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"edit"})}),(0,d.jsx)("button",{type:"button",onClick:()=>am(a),className:"rounded-lg border border-border bg-background p-1.5 text-red-500 hover:bg-red-500/5",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"delete"})})]}):(0,d.jsxs)("span",{className:"inline-flex shrink-0 items-center gap-1 rounded-full border border-border bg-background px-2 py-0.5 text-[10px] font-medium text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:"lock"}),"Chỉ xem"]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2 rounded-lg border border-border bg-background px-2.5 py-1.5",children:[(0,d.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-text-muted",children:"model id để gọi API"}),(0,d.jsx)("code",{className:"min-w-0 flex-1 truncate text-xs text-text-main",children:a.id}),(0,d.jsx)("button",{type:"button",onClick:()=>(function(a){try{navigator.clipboard?.writeText(a)}catch{}})(a.id),className:"text-text-muted hover:text-text-main",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"content_copy"})})]}),(0,d.jsx)("div",{className:"flex flex-wrap gap-1.5",children:(a.models||[]).map(a=>(0,d.jsx)("span",{className:"rounded-full border border-border bg-background px-2 py-0.5 text-[11px] font-mono text-text-muted",children:a},a))})]},a.id))]}),(0,d.jsx)(h.default,{isOpen:!!M,onClose:aa,title:`Add "${M?.name||""}" to API key`,footer:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(i.default,{variant:"ghost",onClick:aa,disabled:U,children:"Cancel"}),(0,d.jsx)(i.default,{onClick:ab,loading:U,disabled:!S,children:"Add to key"})]}),children:(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["Th\xeam model id ",(0,d.jsx)("code",{className:"font-mono text-text-main",children:M?.id})," v\xe0o ",(0,d.jsx)("code",{children:"allowedModels"})," của API key đ\xe3 chọn (chỉ hiện API key của ch\xednh bạn)."]}),(0,d.jsx)("p",{className:"rounded-lg border border-primary/20 bg-primary/5 p-2.5 text-xs text-text-muted",children:"Chỉ cần cấp quyền combo: API key d\xf9ng được combo n\xe0y m\xe0 kh\xf4ng cần cấp quyền ri\xeang cho từng model b\xean trong."}),(0,d.jsxs)("label",{className:"block text-sm",children:[(0,d.jsx)("span",{className:"mb-1 block font-medium text-text-main",children:"API key"}),(0,d.jsxs)("select",{value:S,onChange:a=>T(a.target.value),className:"h-10 w-full rounded-xl border border-border bg-background px-3 text-sm text-text-main outline-none focus:border-primary",disabled:Q,children:[(0,d.jsx)("option",{value:"",children:Q?"Đang tải API keys...":"Chọn API key"}),O.map(a=>(0,d.jsx)("option",{value:a.id,children:a.name||a.id},a.id))]})]}),Q||0!==O.length?null:(0,d.jsx)("div",{className:"rounded-xl border border-amber-500/30 bg-amber-500/10 p-3 text-xs text-amber-700",children:"Bạn chưa c\xf3 API key active n\xe0o. Tạo API key ở /dashboard/api-keys trước."}),W&&(0,d.jsx)("div",{className:"rounded-lg border border-red-500/20 bg-red-500/5 p-2.5 text-xs text-red-600",children:W}),Y&&(0,d.jsx)("div",{className:"rounded-lg border border-green-500/20 bg-green-500/5 p-2.5 text-xs text-green-600",children:Y})]})})]})}},45152:(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\\\\personalcloudcombo\\\\CloudComboPageClient.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\\personalcloudcombo\\CloudComboPageClient.js","default")},46060:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external.js")},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")},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")},77598:a=>{"use strict";a.exports=require("node:crypto")},78474:a=>{"use strict";a.exports=require("node:events")},79428:a=>{"use strict";a.exports=require("buffer")},79748:a=>{"use strict";a.exports=require("fs/promises")},80099:a=>{"use strict";a.exports=require("node:sqlite")},81787:a=>{"use strict";a.exports=require("bun:sqlite")},84788:(a,b,c)=>{Promise.resolve().then(c.bind(c,43621))},87550:a=>{"use strict";a.exports=require("better-sqlite3")},89768:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"createDedupedByCallsiteServerErrorLoggerDev",{enumerable:!0,get:function(){return i}});let d=function(a){if(a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var b=e(void 0);if(b&&b.has(a))return b.get(a);var c={__proto__:null},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in a)if("default"!==f&&Object.prototype.hasOwnProperty.call(a,f)){var g=d?Object.getOwnPropertyDescriptor(a,f):null;g&&(g.get||g.set)?Object.defineProperty(c,f,g):c[f]=a[f]}return c.default=a,b&&b.set(a,c),c}(c(91986));function e(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(e=function(a){return a?c:b})(a)}let f={current:null},g="function"==typeof d.cache?d.cache:a=>a,h=console.warn;function i(a){return function(...b){h(a(...b))}}g(a=>{try{h(f.current)}finally{f.current=null}})},91645:a=>{"use strict";a.exports=require("net")},92305:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={isRequestApiAllowedInCurrentPhase:function(){return k},throwForSearchParamsAccessInUseCache:function(){return j},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return i}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(15693),g=c(19121),h=c(3295);function i(a,b){throw Object.defineProperty(new f.StaticGenBailoutError(`Route ${a} with \`dynamic = "error"\` couldn't be rendered statically because it used ${b}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function j(a,b){let c=Object.defineProperty(Error(`Route ${a.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(c,b),a.invalidDynamicUsageError??=c,c}function k(a){switch(a.phase){case"action":case"render":return!0;case"after":{let a=g.actionAsyncStorage.getStore();if(a&&(a.isAppRoute||a.isAction))return!0;let b=h.afterTaskAsyncStorage.getStore();if(b)return"action"===b.rootTaskSpawnPhase;return!1}}}},94735:a=>{"use strict";a.exports=require("events")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,2430,8316,8946,402,5681,4404,5024,2428,1240],()=>b(b.s=27091));module.exports=c})();
|