@rabbi696/ezrouter 0.6.6 → 0.6.7
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 -19
- package/app/.next-cli-build/build-manifest.json +2 -2
- package/app/.next-cli-build/prerender-manifest.json +3 -3
- package/app/.next-cli-build/routes-manifest.json +12 -0
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +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 +3 -3
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +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.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +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/convoy/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/convoy/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/convoy/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/error-log/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/error-log/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/error-log/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mcp-gateway/keys/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mcp-gateway/keys/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mcp-gateway/keys/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mcp-gateway/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mcp-gateway/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mcp-gateway/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mcp-gateway/servers/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mcp-gateway/servers/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mcp-gateway/servers/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +16 -16
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +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.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +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.js +3 -3
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +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.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +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/mitm/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +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/providers/[id]/page.js +6 -6
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +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/new/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +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.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +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/proxy-pools/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +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/pxpipe/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +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/routing-health/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/routing-health/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/routing-health/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +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.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +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.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +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.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +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.js +3 -3
- package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +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/_global-error.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found/page.js +2 -2
- package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +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 +3 -3
- package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/api/auth/login/route.js +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 +1 -1
- package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/reset-password/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/acs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/acs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/start/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/changelog/route.js +1 -1
- package/app/.next-cli-build/server/app/api/changelog/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli/providers/codex/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli/providers/codex/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +6 -6
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-native/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-native/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-native/readiness/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-native/readiness/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +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/cli-tools/deepseek-tui-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/devin-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/devin-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +3 -3
- package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/[id]/route.js +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/[id]/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/export/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/export/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/convoy/rules/route.js +2 -2
- package/app/.next-cli-build/server/app/api/convoy/rules/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/extras/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/stop/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/health/route.js +1 -1
- package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/init/route.js +1 -1
- package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/internal/codex-native/lease/[action]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/internal/codex-native/lease/[action]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/route.js +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/locale/route.js +1 -1
- package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +2 -2
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp-gateway/instances/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mcp-gateway/instances/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp-gateway/instances/[id]/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mcp-gateway/instances/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp-gateway/instances/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mcp-gateway/instances/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp-gateway/keys/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mcp-gateway/keys/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp-gateway/keys/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mcp-gateway/keys/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp-gateway/message/route.js +2 -2
- package/app/.next-cli-build/server/app/api/mcp-gateway/message/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp-gateway/oauth/[id]/[action]/route.js +2 -2
- package/app/.next-cli-build/server/app/api/mcp-gateway/oauth/[id]/[action]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp-gateway/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mcp-gateway/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp-gateway/sse/route.js +2 -2
- package/app/.next-cli-build/server/app/api/mcp-gateway/sse/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +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 +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/catalog-sync/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/catalog-sync/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/callback/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/callback/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +2 -2
- package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/api-key/route.js +1 -0
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/api-key/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/api-key/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route.js +4 -0
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
- package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/refresh-profile/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/refresh-profile/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/kilo/free-models/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/suggested-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +14 -14
- 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 +14 -14
- package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +14 -14
- 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/pxpipe/health/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/install/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/start/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/status/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/routing-health/route.js +1 -1
- package/app/.next-cli-build/server/app/api/routing-health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/shutdown/route.js +1 -1
- package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tags/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/token-saver/stats/route.js +1 -1
- package/app/.next-cli-build/server/app/api/token-saver/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/token-saver/stream/route.js +2 -2
- package/app/.next-cli-build/server/app/api/token-saver/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tool-disclosure/stats/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tool-disclosure/stats/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/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
- package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/load/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +2 -2
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/error-logs/route.js +3 -3
- package/app/.next-cli-build/server/app/api/usage/error-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/logs/route.js +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 +1 -1
- package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stream/route.js +2 -2
- package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/alpha/search/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/alpha/search/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/codex/alpha/search/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/codex/alpha/search/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/codex/images/edits/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/codex/images/edits/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/codex/images/generations/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/codex/images/generations/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/codex/memories/trace_summarize/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/codex/memories/trace_summarize/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/codex/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/codex/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/codex/responses/compact/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/codex/responses/compact/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/codex/responses/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/codex/responses/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +3 -3
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/[...model]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/[...model]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/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.js +2 -2
- package/app/.next-cli-build/server/app/callback/page.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 +3 -3
- package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
- 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 +1 -1
- package/app/.next-cli-build/server/app/callback.segments/callback.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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
- 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.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/cli-tools.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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/convoy.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/convoy.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/convoy.segments/!KGRhc2hib2FyZCk/dashboard/convoy/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/convoy.segments/!KGRhc2hib2FyZCk/dashboard/convoy.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/convoy.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/convoy.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/convoy.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/convoy.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/convoy.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/convoy.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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/keys.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/keys.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/keys.segments/!KGRhc2hib2FyZCk/dashboard/mcp-gateway/keys/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/keys.segments/!KGRhc2hib2FyZCk/dashboard/mcp-gateway/keys.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/keys.segments/!KGRhc2hib2FyZCk/dashboard/mcp-gateway.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/keys.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/keys.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/keys.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/keys.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/keys.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/keys.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/servers.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/servers.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/servers.segments/!KGRhc2hib2FyZCk/dashboard/mcp-gateway/servers/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/servers.segments/!KGRhc2hib2FyZCk/dashboard/mcp-gateway/servers.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/servers.segments/!KGRhc2hib2FyZCk/dashboard/mcp-gateway.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/servers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/servers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/servers.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/servers.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/servers.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/servers.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway.segments/!KGRhc2hib2FyZCk/dashboard/mcp-gateway/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway.segments/!KGRhc2hib2FyZCk/dashboard/mcp-gateway.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway.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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
- 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/mitm.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/mitm.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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/profile.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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
- 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.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
- 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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/routing-health.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/routing-health.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/routing-health.segments/!KGRhc2hib2FyZCk/dashboard/routing-health/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/routing-health.segments/!KGRhc2hib2FyZCk/dashboard/routing-health.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/routing-health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/routing-health.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/routing-health.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/routing-health.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/routing-health.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/routing-health.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +2 -2
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +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 +3 -3
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +3 -3
- 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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +3 -3
- 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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
- 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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
- 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 +5 -5
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/favicon.ico/route.js +1 -1
- package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/index.html +1 -1
- package/app/.next-cli-build/server/app/index.rsc +3 -3
- package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/landing/page.js +2 -2
- package/app/.next-cli-build/server/app/landing/page.js.nft.json +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 +3 -3
- package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
- 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 +1 -1
- package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/login/page.js +2 -2
- package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
- 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 +4 -4
- package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
- 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 +2 -2
- package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/manifest.webmanifest/route.js +2 -2
- package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/page.js +2 -2
- package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
- 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 -19
- package/app/.next-cli-build/server/chunks/1133.js +1 -1
- package/app/.next-cli-build/server/chunks/1273.js +1 -0
- package/app/.next-cli-build/server/chunks/1482.js +2 -2
- package/app/.next-cli-build/server/chunks/1531.js +1 -1
- package/app/.next-cli-build/server/chunks/{7306.js → 1744.js} +18 -18
- package/app/.next-cli-build/server/chunks/1847.js +1 -1
- package/app/.next-cli-build/server/chunks/2021.js +1 -1
- package/app/.next-cli-build/server/chunks/2348.js +1 -1
- package/app/.next-cli-build/server/chunks/2892.js +1 -1
- package/app/.next-cli-build/server/chunks/2898.js +22 -3
- package/app/.next-cli-build/server/chunks/3148.js +1 -1
- package/app/.next-cli-build/server/chunks/3245.js +1 -1
- package/app/.next-cli-build/server/chunks/3311.js +1 -1
- package/app/.next-cli-build/server/chunks/3433.js +4 -4
- package/app/.next-cli-build/server/chunks/3547.js +1 -1
- package/app/.next-cli-build/server/chunks/3583.js +2 -2
- package/app/.next-cli-build/server/chunks/369.js +22 -28
- package/app/.next-cli-build/server/chunks/3698.js +1 -1
- package/app/.next-cli-build/server/chunks/3886.js +1 -1
- package/app/.next-cli-build/server/chunks/3977.js +2 -2
- package/app/.next-cli-build/server/chunks/412.js +5 -5
- package/app/.next-cli-build/server/chunks/4123.js +1 -1
- package/app/.next-cli-build/server/chunks/4152.js +1 -0
- package/app/.next-cli-build/server/chunks/4574.js +1 -1
- package/app/.next-cli-build/server/chunks/4827.js +1 -1
- package/app/.next-cli-build/server/chunks/4878.js +1 -1
- package/app/.next-cli-build/server/chunks/4924.js +300 -0
- package/app/.next-cli-build/server/chunks/5130.js +1 -0
- package/app/.next-cli-build/server/chunks/5224.js +1 -0
- package/app/.next-cli-build/server/chunks/5315.js +1 -1
- package/app/.next-cli-build/server/chunks/576.js +1 -0
- package/app/.next-cli-build/server/chunks/5849.js +1 -1
- package/app/.next-cli-build/server/chunks/6000.js +1 -0
- package/app/.next-cli-build/server/chunks/6330.js +1 -0
- package/app/.next-cli-build/server/chunks/6816.js +4 -4
- package/app/.next-cli-build/server/chunks/6875.js +1 -0
- package/app/.next-cli-build/server/chunks/6892.js +1 -1
- package/app/.next-cli-build/server/chunks/6947.js +1 -1
- package/app/.next-cli-build/server/chunks/7239.js +3 -3
- package/app/.next-cli-build/server/chunks/7353.js +1 -1
- package/app/.next-cli-build/server/chunks/7362.js +1 -1
- package/app/.next-cli-build/server/chunks/{6535.js → 7524.js} +3 -3
- package/app/.next-cli-build/server/chunks/7603.js +1 -1
- package/app/.next-cli-build/server/chunks/7677.js +1 -1
- package/app/.next-cli-build/server/chunks/7774.js +8 -8
- package/app/.next-cli-build/server/chunks/7775.js +1 -1
- package/app/.next-cli-build/server/chunks/8129.js +1 -1
- package/app/.next-cli-build/server/chunks/823.js +1 -1
- package/app/.next-cli-build/server/chunks/8243.js +7 -7
- package/app/.next-cli-build/server/chunks/8299.js +1 -0
- package/app/.next-cli-build/server/chunks/8306.js +1 -1
- package/app/.next-cli-build/server/chunks/8459.js +1 -1
- package/app/.next-cli-build/server/chunks/8586.js +1 -1
- package/app/.next-cli-build/server/chunks/8658.js +1 -1
- package/app/.next-cli-build/server/chunks/880.js +7 -7
- package/app/.next-cli-build/server/chunks/8946.js +1 -1
- package/app/.next-cli-build/server/chunks/8976.js +1 -1
- package/app/.next-cli-build/server/chunks/9062.js +1 -1
- package/app/.next-cli-build/server/chunks/9217.js +1 -1
- package/app/.next-cli-build/server/chunks/9303.js +1 -1
- package/app/.next-cli-build/server/chunks/9485.js +1 -1
- package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/app/.next-cli-build/server/middleware.js +4 -4
- 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/server/server-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
- package/app/.next-cli-build/static/caISOCVUmfRaqJe0JjnZh/_buildManifest.js +1 -0
- package/app/.next-cli-build/static/chunks/{1321-f082c0cd9fbb2097.js → 1321-b8a4f80390cd3ea3.js} +1 -1
- package/app/.next-cli-build/static/chunks/2852-c263bdffcaa33c2a.js +95 -0
- package/app/.next-cli-build/static/chunks/{316-89ef881941b53b2c.js → 316-54e07b35de6154b5.js} +1 -1
- package/app/.next-cli-build/static/chunks/{5497-f328c487bfcc0d0e.js → 5497-a4fcd9746123edae.js} +5 -5
- package/app/.next-cli-build/static/chunks/{8010-5892efa7a8d0bb03.js → 8010-4f17bcbf4cac2817.js} +2 -2
- package/app/.next-cli-build/static/chunks/8105-914b0eb9e3a50b9d.js +1 -0
- package/app/.next-cli-build/static/chunks/9227-0d7e658f80553659.js +3 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/{page-ce0b5b8882899119.js → page-5c9ac89a0fd078b6.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-257aaa1374d529b4.js → page-7a5b3f43946719b9.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/console-log/page-12452d79eba6c182.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-90a4f789d907db25.js → page-8236097df15d7be9.js} +16 -16
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/{page-e44166090e05cfb3.js → page-694c3b4cef7d111e.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-11a1a4053a30913f.js +27 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-679ec0628cd9d54f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-6f16a27a86240648.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/token-saver/page-f744066e8709b6c1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/{layout-100d6d3c6c7256f1.js → layout-fa3153761cc595bb.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/_global-error/page-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/login/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/reset-password/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/acs/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/metadata/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/start/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/test/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/status/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/changelog/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli/providers/codex/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-native/models/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-native/readiness/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/devin-settings/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-build-settings/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/pi-settings/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/[id]/test/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/export/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/import/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/test/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/convoy/rules/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/health/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/init/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/internal/codex-native/lease/[action]/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/locale/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp-gateway/instances/[id]/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp-gateway/instances/[id]/test/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp-gateway/instances/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp-gateway/keys/[id]/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp-gateway/keys/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp-gateway/message/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp-gateway/oauth/[id]/[action]/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp-gateway/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp-gateway/sse/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/alias/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/availability/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/catalog-sync/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/custom/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/test/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/callback/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/api-key/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/auto-import/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pricing/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/refresh-profile/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/client/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/logs/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/routing-health/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/database/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/shutdown/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tags/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/token-saver/stats/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/token-saver/stream/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tool-disclosure/stats/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/load/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/save/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/send/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/error-logs/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/history/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/alpha/search/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/codex/alpha/search/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/codex/images/edits/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/codex/images/generations/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/codex/memories/trace_summarize/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/codex/models/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/codex/responses/compact/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/codex/responses/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/[...model]/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/search/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/[id]/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/edits/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/extensions/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/generations/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/update/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/page-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-116cfb93931e646f.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-116cfb93931e646f.js +1 -0
- package/app/CHANGELOG.md +14 -0
- package/app/package.json +1 -1
- package/app/public/CHANGELOG.md +14 -0
- package/app/src/lib/db/migrate.js +22 -1
- package/app/src/lib/oauth/providers/xiaomi-mimo.js +123 -0
- package/app/src/mitm/server.js +31 -31
- package/app/src/sse/services/backgroundTokenRefresh.js +9 -6
- package/cli.js +4 -3
- package/package.json +1 -1
- package/src/cli/tray/autostart.js +65 -3
- package/src/cli/utils/modelSelector.js +182 -45
- package/app/.next-cli-build/server/chunks/1012.js +0 -1
- package/app/.next-cli-build/server/chunks/2221.js +0 -300
- package/app/.next-cli-build/server/chunks/5681.js +0 -1
- package/app/.next-cli-build/server/chunks/5822.js +0 -1
- package/app/.next-cli-build/server/chunks/6030.js +0 -1
- package/app/.next-cli-build/server/chunks/8540.js +0 -1
- package/app/.next-cli-build/server/chunks/9637.js +0 -1
- package/app/.next-cli-build/static/3kPJjWzmNgPDoa5VgYHwk/_buildManifest.js +0 -1
- package/app/.next-cli-build/static/chunks/2595-a258abe0d4a34649.js +0 -95
- package/app/.next-cli-build/static/chunks/8105-b488efe0a830e2a7.js +0 -1
- package/app/.next-cli-build/static/chunks/9227-bb7d883d6cd67632.js +0 -3
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/console-log/page-2c65df20769d31df.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-c2fb956227849ef3.js +0 -27
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-10cfe308dcee550e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-c55b823e44230396.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/token-saver/page-e38b4f8ebf6a3d47.js +0 -1
- package/app/.next-cli-build/static/chunks/app/_global-error/page-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/login/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/reset-password/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/acs/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/metadata/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/start/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/test/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/status/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/changelog/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli/providers/codex/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-native/models/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-native/readiness/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/devin-settings/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-build-settings/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/pi-settings/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/[id]/test/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/export/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/import/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/test/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/convoy/rules/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/health/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/init/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/internal/codex-native/lease/[action]/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/keys/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/locale/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp-gateway/instances/[id]/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp-gateway/instances/[id]/test/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp-gateway/instances/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp-gateway/keys/[id]/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp-gateway/keys/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp-gateway/message/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp-gateway/oauth/[id]/[action]/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp-gateway/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp-gateway/sse/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/alias/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/availability/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/catalog-sync/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/custom/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/test/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/callback/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pricing/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/refresh-profile/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/client/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/logs/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/routing-health/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/database/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/shutdown/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tags/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/token-saver/stats/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/token-saver/stream/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tool-disclosure/stats/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/load/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/save/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/send/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/error-logs/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/history/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/alpha/search/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/codex/alpha/search/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/codex/images/edits/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/codex/images/generations/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/codex/memories/trace_summarize/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/codex/models/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/codex/responses/compact/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/codex/responses/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/[...model]/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/search/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/[id]/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/edits/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/extensions/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/generations/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/update/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/page-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-25eef5877853a92d.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-25eef5877853a92d.js +0 -1
- /package/app/.next-cli-build/static/{3kPJjWzmNgPDoa5VgYHwk → caISOCVUmfRaqJe0JjnZh}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
exports.id=1482,exports.ids=[1482],exports.modules={19165:(a,b,c)=>{Promise.resolve().then(c.bind(c,51747))},51747:(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 \"/Volumes/Files/Projects/EzRouter/EzRouter/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.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.")},"/Volumes/Files/Projects/EzRouter/EzRouter/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js","default")},54603:(a,b,c)=>{"use strict";c.d(b,{Xj:()=>q});var d=c(19713),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c.n(i),k=c(49120);let l=h().join(k.n,"machine-id"),m=h().join(k.n,"auth"),n=h().join(m,"cli-secret"),o=null,p=null;async function q(a=null){let b=a||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt",c=function(){if(o)return o;try{if(o=f().readFileSync(l,"utf8").trim())return o}catch{}try{o=(0,d.machineIdSync)()}catch{o=j().randomUUID()}try{f().mkdirSync(k.n,{recursive:!0}),f().writeFileSync(l,o,{mode:384})}catch{}return o}(),e="9r-cli-auth"===b?function(){if(p)return p;try{if(p=f().readFileSync(n,"utf8").trim())return p}catch{}p=j().randomBytes(32).toString("hex");try{f().mkdirSync(m,{recursive:!0}),f().writeFileSync(n,p,{mode:384})}catch{}return p}():"";return j().createHash("sha256").update(c+b+e).digest("hex").substring(0,16)}},64748:(a,b,c)=>{"use strict";c.d(b,{default:()=>v});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412),i=c(50377),j=c(67960);function k({label:a,url:b,copyId:c,copied:e,onCopy:f,badge:g,actions:i}){return(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:`text-xs font-mono px-1.5 py-0.5 rounded shrink-0 min-w-[88px] text-center ${"CF"===g||"TS"===g?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:a}),(0,d.jsx)(h.pd,{value:b,readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,d.jsx)("button",{onClick:()=>f(b,c),className:"p-2 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary transition-colors shrink-0",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:e===c?"check":"content_copy"})}),i]})}function l({status:a,className:b=""}){return(0,d.jsx)("div",{className:`p-2 rounded text-sm ${b} ${"success"===a.type?"bg-green-500/10 text-green-600 dark:text-green-400":"warning"===a.type?"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400":"info"===a.type?"bg-blue-500/10 text-blue-600 dark:text-blue-400":"bg-red-500/10 text-red-600 dark:text-red-400"}`,children:a.message.split(/(https?:\/\/[^\s]+)/g).map((a,b)=>/^https?:\/\//.test(a)?(0,d.jsx)("a",{href:a,target:"_blank",rel:"noreferrer",className:"underline font-medium",children:a},b):a)})}function m({text:a}){return(0,d.jsxs)("span",{className:"relative group inline-flex items-center",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] text-text-muted cursor-help",children:"help"}),(0,d.jsx)("span",{className:"pointer-events-none absolute left-5 top-1/2 -translate-y-1/2 z-50 w-64 rounded bg-gray-900 dark:bg-gray-800 text-white text-xs px-2.5 py-1.5 opacity-0 group-hover:opacity-100 transition-opacity shadow-lg",children:a})]})}function n({message:a,action:b}){return(0,d.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-amber-500/10 border border-amber-500/20 text-amber-700 dark:text-amber-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px] shrink-0 mt-0.5",children:"warning"}),(0,d.jsx)("p",{className:"text-xs flex-1",children:a}),b&&(0,d.jsx)("a",{href:b.href,className:"text-xs font-medium underline shrink-0 hover:opacity-80",onClick:b.href.startsWith("#")?a=>{a.preventDefault(),document.getElementById(b.href.slice(1))?.scrollIntoView({behavior:"smooth"})}:void 0,children:b.label})]})}var o=c(72738),p=c(92592);function q({value:a,onChange:b}){let[c,f]=(0,e.useState)([]),[g,h]=(0,e.useState)(!0),[i,j]=(0,e.useState)(()=>new Set),k=(0,e.useMemo)(()=>(function(a){let b=new Map;for(let c of a){if(!c?.id||"string"!=typeof c.id||!c.id.includes("/"))continue;let a=c.owned_by||c.id.slice(0,c.id.indexOf("/")),d=c.id.slice(c.id.indexOf("/")+1);b.has(a)||b.set(a,[]),b.get(a).push(d)}return b})(c),[c]),l=(0,e.useMemo)(()=>Array.from(k.keys()).sort((a,b)=>a.localeCompare(b)),[k]),m=null==a,n=(0,e.useMemo)(()=>new Set(a?.providers||[]),[a]);(0,e.useMemo)(()=>new Set(a?.models||[]),[a]);let r=b=>{let c=`${b}/`;return(a?.models||[]).filter(a=>a.startsWith(c))},s=(a,c)=>{0===a.length?b(null):b({providers:a,models:c})},t=a=>{j(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})};return g?(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Loading available providers…"}):(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsxs)("label",{className:"flex items-center gap-2 text-sm",children:[(0,d.jsx)("input",{type:"checkbox",checked:m,onChange:a=>b(a.target.checked?null:{providers:[],models:[]})}),(0,d.jsx)("span",{children:"Unrestricted (key can reach every provider and model)"})]}),!m&&(0,d.jsxs)("div",{className:"flex flex-col gap-1 max-h-80 overflow-y-auto border border-black/[0.06] dark:border-white/[0.06] rounded-lg p-2",children:[0===l.length&&(0,d.jsx)("p",{className:"text-sm text-text-muted px-2 py-1",children:"No providers configured yet."}),l.map(b=>{let c,e=(0,p.rs)(b),f=p.Q2[e],g=k.get(b)||[],h=(c=(0,p.rs)(b),n.has(b)||n.has(c)),j=r(b),l=i.has(b);return(0,d.jsxs)("div",{className:"border-b border-black/[0.03] dark:border-white/[0.03] last:border-b-0 py-1",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("input",{type:"checkbox",checked:h,onChange:()=>{let c,d;return c=new Set(a?.providers||[]),d=(a?.models||[]).slice(),void(c.has(b)?(c.delete(b),d=d.filter(a=>!a.startsWith(`${b}/`))):c.add(b),s(Array.from(c),d))}}),(0,d.jsx)(o.A,{providerId:e,size:16}),(0,d.jsx)("button",{type:"button",className:"flex-1 text-left text-sm font-medium",onClick:()=>t(b),children:f?.name||b}),(0,d.jsx)("span",{className:"text-xs text-text-muted",children:h?0===j.length?`all ${g.length} models`:`${j.length}/${g.length} models`:""}),(0,d.jsx)("button",{type:"button",className:"material-symbols-outlined text-[16px] text-text-muted",onClick:()=>t(b),children:l?"expand_less":"expand_more"})]}),l&&(0,d.jsx)("div",{className:"pl-8 mt-1 flex flex-col gap-1",children:g.map(c=>{let e=`${b}/${c}`,f=h&&(0===j.length||j.includes(e));return(0,d.jsxs)("label",{className:"flex items-center gap-2 text-xs",children:[(0,d.jsx)("input",{type:"checkbox",checked:f,onChange:()=>{let d,e,f,g,h,i;return(e=new Set(a?.providers||[])).add(b),f=`${b}/${c}`,g=r(b),h=k.get(b)||[],i=(a?.models||[]).filter(a=>!a.startsWith(`${b}/`)),void(0===g.length?d=h.filter(a=>a!==c).map(a=>`${b}/${a}`):g.includes(f)?d=g.filter(a=>a!==f):(d=[...g,f]).length===h.length&&(d=[]),s(Array.from(e),[...i,...d]))}}),(0,d.jsx)("span",{className:"font-mono",children:c})]},e)})})]},b)})]})]})}q.propTypes={value:g().shape({providers:g().arrayOf(g().string),models:g().arrayOf(g().string)}),onChange:g().func.isRequired};let r=[{label:"100K",value:"100000"},{label:"500K",value:"500000"},{label:"1M",value:"1000000"},{label:"5M",value:"5000000"},{label:"10M",value:"10000000"}];function s(a){let b=Math.max(0,Number(a)||0);return b>=1e6?`${(b/1e6).toFixed(+(b%1e6!=0))}M`:b>=1e3?`${(b/1e3).toFixed(+(b%1e3!=0))}K`:String(b)}function t({used:a,limit:b}){let c=Math.max(1,Number(b)||1),e=Math.max(0,Number(a)||0),f=Math.min(100,Math.round(e/c*100)),g=Math.max(0,c-e),h=f>=90?{bar:"bg-red-500",text:"text-red-600 dark:text-red-400"}:f>=75?{bar:"bg-amber-500",text:"text-amber-600 dark:text-amber-400"}:{bar:"bg-emerald-500",text:"text-text-muted"};return(0,d.jsxs)("div",{className:"mt-2 max-w-sm",title:`${s(e)} of ${s(c)} tokens used`,children:[(0,d.jsxs)("div",{className:"mb-1 flex items-center justify-between gap-3 text-[11px]",children:[(0,d.jsxs)("span",{className:h.text,children:[f,"% used"]}),(0,d.jsxs)("span",{className:"text-text-muted",children:[s(g)," remaining"]})]}),(0,d.jsx)("div",{className:"h-1.5 overflow-hidden rounded-full bg-black/10 dark:bg-white/10",role:"progressbar","aria-label":`Token usage: ${f}% used, ${s(g)} remaining`,"aria-valuemin":0,"aria-valuemax":c,"aria-valuenow":Math.min(e,c),children:(0,d.jsx)("div",{className:`h-full rounded-full transition-[width] duration-300 ${h.bar}`,style:{width:`${f}%`}})})]})}function u({apiKey:a,activeProviders:b,modelAliases:c,onClose:f,onSave:g}){let[i,j]=(0,e.useState)(a.expiresAt?a.expiresAt.slice(0,16):""),[k,l]=(0,e.useState)(a.allowedModels||[]),[m,n]=(0,e.useState)(""),[o,p]=(0,e.useState)(null==a.tokenLimit?"unlimited":"unchanged"),[q,t]=(0,e.useState)(!1),[v,w]=(0,e.useState)(!1),x=null!=a.tokenLimit,y=async()=>{w(!0),await g({expiresAt:i||null,allowedModels:k,..."unlimited"===o?{tokenLimit:null}:m?{[x?"tokenLimitIncrement":"tokenLimit"]:m}:{}}),w(!1)};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(h.aF,{isOpen:!0,onClose:f,title:`Edit ${a.name}`,children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)(h.pd,{label:"Expires at (optional)",type:"datetime-local",value:i,onChange:a=>j(a.target.value),hint:"Leave blank for no expiry."}),(0,d.jsx)(h.pd,{label:x?"Add tokens":"Set token limit",type:"number",min:"1",step:"1",value:m,onChange:a=>{let b=a.target.value;n(b),p(b?"amount":x?"unchanged":"unlimited")},placeholder:x?"e.g. 500000":"e.g. 1000000",hint:x?`Added to the current ${s(a.tokenLimit)} limit; usage is preserved.`:"Choose Unlimited to remove the limit."}),(0,d.jsxs)("div",{className:"-mt-2 flex flex-wrap gap-1.5","aria-label":"Token limit presets",children:[r.map(a=>{let b="amount"===o&&m===a.value;return(0,d.jsx)("button",{type:"button",onClick:()=>{n(a.value),p("amount")},"aria-pressed":b,className:`rounded-full border px-2.5 py-1 text-xs font-medium transition-colors ${b?"border-primary bg-primary text-white":"border-border bg-surface-2 text-text-muted hover:border-primary/50 hover:text-primary"}`,children:a.label},a.value)}),(0,d.jsx)("button",{type:"button",onClick:()=>{n(""),p("unlimited")},"aria-pressed":"unlimited"===o,className:`rounded-full border px-2.5 py-1 text-xs font-medium transition-colors ${"unlimited"===o?"border-primary bg-primary text-white":"border-border bg-surface-2 text-text-muted hover:border-primary/50 hover:text-primary"}`,children:"Unlimited"})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"mb-1.5 block text-sm font-medium text-text-main",children:"Allowed models"}),(0,d.jsx)("div",{className:"flex min-h-12 flex-wrap gap-1 rounded-lg border border-border bg-surface-2 p-2",children:k.length?k.map(a=>(0,d.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-md bg-primary/10 px-2 py-1 text-xs text-primary",children:[(0,d.jsx)("span",{children:a}),(0,d.jsx)("button",{type:"button",onClick:()=>l(b=>b.filter(b=>b!==a)),"aria-label":`Remove ${a}`,className:"material-symbols-outlined text-[14px]",children:"close"})]},a)):(0,d.jsx)("span",{className:"p-1 text-xs text-text-muted",children:"All models allowed"})}),(0,d.jsxs)("button",{type:"button",onClick:()=>t(!0),className:"mt-2 flex w-full items-center justify-center gap-1 rounded-lg border border-dashed border-black/10 py-2 text-xs font-medium text-primary dark:border-white/10",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"edit"}),"Edit model access"]})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:y,fullWidth:!0,disabled:v,children:v?"Saving...":"Save changes"}),(0,d.jsx)(h.$n,{onClick:f,variant:"ghost",fullWidth:!0,disabled:v,children:"Cancel"})]})]})}),q&&(0,d.jsx)(h.rq,{isOpen:!0,onClose:()=>t(!1),onSelect:a=>l(b=>b.includes(a.value)?b:[...b,a.value]),onDeselect:a=>l(b=>b.filter(b=>b!==a.value)),activeProviders:b,modelAliases:c,addedModelValues:k,closeOnSelect:!1,title:"Edit allowed models"})]})}function v({machineId:a}){let[b,c]=(0,e.useState)([]),[f,g]=(0,e.useState)(!0),[o,p]=(0,e.useState)(!1),[s,w]=(0,e.useState)(""),[x,y]=(0,e.useState)(""),[z,A]=(0,e.useState)(""),[B,C]=(0,e.useState)([]),[D,E]=(0,e.useState)(!1),[F,G]=(0,e.useState)([]),[H,I]=(0,e.useState)({}),[J,K]=(0,e.useState)(null),[L,M]=(0,e.useState)(null),[N,O]=(0,e.useState)(null),[P,Q]=(0,e.useState)(null),[R,S]=(0,e.useState)(null),[T,U]=(0,e.useState)(null),[V,W]=(0,e.useState)(!1),[X,Y]=(0,e.useState)(!0),[Z,$]=(0,e.useState)(!0),[_,aa]=(0,e.useState)(!1),[ab,ac]=(0,e.useState)(!0),[ad,ae]=(0,e.useState)(!1),[af,ag]=(0,e.useState)(!1),[ah,ai]=(0,e.useState)(""),[aj,ak]=(0,e.useState)(""),[al,am]=(0,e.useState)(!1),[an,ao]=(0,e.useState)(""),[ap,aq]=(0,e.useState)(null),[ar,as]=(0,e.useState)(!1),[at,au]=(0,e.useState)(!1),[av,aw]=(0,e.useState)(!1),[ax,ay]=(0,e.useState)(!1),[az,aA]=(0,e.useState)(""),[aB,aC]=(0,e.useState)(!1),[aD,aE]=(0,e.useState)(""),[aF,aG]=(0,e.useState)(null),[aH,aI]=(0,e.useState)(""),[aJ,aK]=(0,e.useState)(""),[aL,aM]=(0,e.useState)(null),[aN,aO]=(0,e.useState)(!1),[aP,aQ]=(0,e.useState)([]),[aR,aS]=(0,e.useState)(""),[aT,aU]=(0,e.useState)(!1),[aV,aW]=(0,e.useState)(!1),[aX,aY]=(0,e.useState)(!1),aZ=(0,e.useRef)(null);(0,e.useRef)(0),(0,e.useRef)(0),(0,e.useRef)(!1),(0,e.useRef)(!1),(0,e.useRef)(!1),(0,e.useRef)(!1);let[a$,a_]=(0,e.useState)(!1),[a0,a1]=(0,e.useState)(!1),[a2,a3]=(0,e.useState)(new Set),[a4,a5]=(0,e.useState)(!1),{copied:a6,copy:a7}=(0,i.C)(),a8=!X||!Z,a9=X?"Change the default dashboard password before activating the tunnel.":'Enable "Require login" and set a custom password before activating the tunnel.';(0,e.useCallback)((a,b,c,d,e,f)=>{b.current?(c.current=0,d(!0),e.current||(e.current=!0,f(!0))):(c.current+=1,c.current>=j.t6&&d(!1))},[]);let ba=async a=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tunnelDashboardAccess:a})})).ok&&aa(a)}catch(a){console.log("Error updating tunnelDashboardAccess:",a)}},bb=async a=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({requireApiKey:a})})).ok&&W(a)}catch(a){console.log("Error updating requireApiKey:",a)}},bc=async()=>{try{let a=await fetch("/api/keys"),b=await a.json();a.ok&&c(b.keys||[])}catch(a){console.log("Error fetching data:",a)}finally{g(!1)}},bd=async(...a)=>{am(!0),ao("Waiting for tunnel ready...");let b=a.filter(Boolean).map(a=>`${a}/api/health`),c=Date.now();for(;Date.now()-c<j.Cp;){if(await new Promise(a=>setTimeout(a,j.Hx)),await Promise.any(b.map(async a=>{if((await fetch(a,{mode:"cors",cache:"no-store"})).ok)return!0;throw Error("not ready")})).catch(()=>!1))return ae(!0),am(!1),ao(""),!0;if((Date.now()-c)%1e4<j.Hx)try{let a=await fetch("/api/tunnel/status");if(a.ok){let b=await a.json();if(!b.tunnel?.enabled)return aq({type:"error",message:"Tunnel process stopped unexpectedly."}),am(!1),ao(""),!1}}catch{}}return aq({type:"error",message:"Tunnel created but not reachable. Please try again."}),am(!1),ao(""),!1},be=async()=>{as(!1),am(!0),aq(null),ao("Creating tunnel...");let a=!0;(async()=>{for(;a;){try{let b=await fetch("/api/tunnel/status");if(b.ok){let c=await b.json();c.download?.downloading?ao(`Downloading cloudflared... ${c.download.progress}%`):a&&ao("Creating tunnel...")}}catch{}await new Promise(a=>setTimeout(a,1e3))}})();try{let b=await fetch("/api/tunnel/enable",{method:"POST"});a=!1;let c=await b.json();if(!b.ok)return void aq({type:"error",message:c.error||"Failed to enable tunnel"});let d=c.tunnelUrl;if(!d)return void aq({type:"error",message:"No tunnel URL returned"});ai(d),ak(c.publicUrl||""),await bd(c.publicUrl,d)}catch(a){aq({type:"error",message:a.message})}finally{a=!1,am(!1),ao("")}},bf=async()=>{am(!0),aq(null);try{let a=await fetch("/api/tunnel/disable",{method:"POST"}),b=await a.json();a.ok?(ae(!1),ai(""),au(!1),aq({type:"success",message:"Tunnel disabled"})):aq({type:"error",message:b.error||"Failed to disable tunnel"})}catch(a){aq({type:"error",message:a.message})}finally{am(!1)}},bg=async()=>{aM(null);try{let a=await fetch("/api/tunnel/tailscale-check");if(a.ok){let b=await a.json();return aM(b.installed),b}}catch{}return aM(!1),{installed:!1}},bh=async()=>{aO(!0),aG(null),aQ([]);try{let a=await fetch("/api/tunnel/tailscale-install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sudoPassword:aR})});aS("");let b=a.body.getReader(),c=new TextDecoder,d="";for(;;){let{done:a,value:e}=await b.read();if(a)break;let f=(d+=c.decode(e,{stream:!0})).split("\n\n");for(let a of(d=f.pop()||"",f)){let b=a.split("\n"),c="progress",d=null;for(let a of b)if(a.startsWith("event: ")&&(c=a.slice(7).trim()),a.startsWith("data: "))try{d=JSON.parse(a.slice(6))}catch{}if(d)if("progress"===c)aQ(a=>[...a.slice(-50),d.message]);else if("done"===c){aM(!0),aO(!1),aW(!1),bl();return}else"error"===c&&aG({type:"error",message:d.error||"Install failed"})}}}catch(a){aG({type:"error",message:a.message})}finally{aO(!1)}},bi=async a=>{aE("Waiting for Tailscale ready...");let b=`${a}/api/health`,c=Date.now();for(;Date.now()-c<j.Cp;){await new Promise(a=>setTimeout(a,j.Hx));try{let a=await fetch(b,{mode:"no-cors",cache:"no-store"});if(a.ok||"opaque"===a.type)return!0}catch{}}return!1},bj=(a,b)=>{aI(a),aK(b)},bk=()=>{aI(""),aK("")},bl=async()=>{aW(!1),aU(!0),aC(!0),aG(null),aE("Connecting..."),bk();try{let a=await fetch("/api/tunnel/tailscale-enable",{method:"POST"}),b=await a.json();if(a.ok&&b.success){aA(b.tunnelUrl||"");let a=await bi(b.tunnelUrl);aw(!0),aG(a?null:{type:"warning",message:"Connected but not reachable yet."});return}if(b.needsLogin&&b.authUrl){bj(b.authUrl,"Open Login Page"),aE('Login required — click "Open Login Page" to continue');for(let a=0;a<40;a++){await new Promise(a=>setTimeout(a,3e3));try{let a=await fetch("/api/tunnel/tailscale-check");if(a.ok&&(await a.json()).loggedIn){bk(),aE("Starting funnel...");let a=await fetch("/api/tunnel/tailscale-enable",{method:"POST"}),b=await a.json();if(a.ok&&b.success){aA(b.tunnelUrl||"");let a=await bi(b.tunnelUrl);aw(!0),aG(a?null:{type:"warning",message:"Connected but not reachable yet."})}else b.funnelNotEnabled&&b.enableUrl?await bm(b.enableUrl):aG({type:"error",message:b.error||"Failed to start funnel"});return}}catch{}}bk(),aG({type:"error",message:"Login timed out. Please try again."});return}if(b.funnelNotEnabled&&b.enableUrl)return void await bm(b.enableUrl);aG({type:"error",message:b.error||"Failed to connect"})}catch(a){aG({type:"error",message:a.message})}finally{aC(!1),aU(!1),aE(""),bk()}},bm=async a=>{bj(a,"Open Funnel Settings"),aE('Click "Open Funnel Settings" to enable Funnel...');for(let a=0;a<40;a++){await new Promise(a=>setTimeout(a,3e3));try{let a=await fetch("/api/tunnel/tailscale-enable",{method:"POST"}),b=await a.json();if(a.ok&&b.success){bk(),aA(b.tunnelUrl||"");let a=await bi(b.tunnelUrl);aw(!0),aG(a?null:{type:"warning",message:"Connected but not reachable yet."});return}if(b.funnelNotEnabled)continue;if(b.error){bk(),aG({type:"error",message:b.error});return}}catch{}}bk(),aG({type:"error",message:"Timed out waiting for Funnel to be enabled."})},bn=async()=>{aC(!0),aG(null);try{let a=await fetch("/api/tunnel/tailscale-disable",{method:"POST"}),b=await a.json();a.ok?(aw(!1),aA(""),aY(!1),aG({type:"success",message:"Tailscale disabled"})):aG({type:"error",message:b.error||"Failed to disable Tailscale"})}catch(a){aG({type:"error",message:a.message})}finally{aC(!1)}},bo=async()=>{aG(null),aQ([]);let a=await bg();a?.installed&&a?.hasCachedPassword?bl():aW(!0)},bp=async()=>{if(s.trim())try{let a=await fetch("/api/keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:s,expiresAt:x||null,tokenLimit:z||null,allowedModels:B,scope:J})}),b=await a.json();a.ok&&(M(b.key),await bc(),w(""),y(""),A(""),C([]),E(!1),K(null),p(!1))}catch(a){console.log("Error creating key:",a)}},bq=async()=>{if(R)try{(await fetch(`/api/keys/${R.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({scope:T})})).ok&&(c(a=>a.map(a=>a.id===R.id?{...a,scope:T}:a)),S(null),U(null))}catch(a){console.log("Error updating key scope:",a)}},br=async a=>{Q({title:"Delete API Key",message:"Delete this API key?",onConfirm:async()=>{Q(null);try{(await fetch(`/api/keys/${a}`,{method:"DELETE"})).ok&&(c(b.filter(b=>b.id!==a)),a3(b=>{let c=new Set(b);return c.delete(a),c}))}catch(a){console.log("Error deleting key:",a)}}})},bs=async(a,b)=>{try{(await fetch(`/api/keys/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:b})})).ok&&c(c=>c.map(c=>c.id===a?{...c,isActive:b}:c))}catch(a){console.log("Error toggling key:",a)}},bt=async(a,b)=>{let c=await fetch(`/api/keys/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!c.ok)throw Error((await c.json()).error||"Failed to update key");await bc(),O(null)},[bu,bv]=(0,e.useState)("/v1");return f?(0,d.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,d.jsx)(h.Qv,{}),(0,d.jsx)(h.Qv,{})]}):(0,d.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,d.jsxs)(h.Zp,{children:[(0,d.jsxs)("h2",{className:"text-lg font-semibold mb-4 flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary",children:"api"}),"API Endpoint"]}),(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsx)(k,{label:"Local",url:bu,copyId:"local_url",copied:a6,onCopy:a7}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:`text-xs font-mono px-1.5 py-0.5 rounded shrink-0 min-w-[88px] text-center ${ad?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:"Tunnel"}),ad&&!al&&af?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(h.pd,{value:`${aj||ah}/v1`,readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,d.jsx)("button",{onClick:()=>a7(`${aj||ah}/v1`,"tunnel_url"),className:"p-2 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary transition-colors shrink-0",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"tunnel_url"===a6?"check":"content_copy"})}),(0,d.jsx)("button",{onClick:()=>au(!0),className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Disable Tunnel",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):!ad||al||af?al?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-border bg-input text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),an||"Creating tunnel..."]}),(0,d.jsx)("button",{onClick:()=>{am(!1),ao("")},className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Stop",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):ap?.type==="error"?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-red-300 dark:border-red-800 bg-red-500/5 text-sm text-red-600 dark:text-red-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"error"}),ap.message]}),(0,d.jsx)(h.$n,{size:"sm",icon:"cloud_upload",onClick:()=>as(!0),children:"Enable"})]}):ab?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-border bg-input text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Checking..."]}),(0,d.jsx)("button",{onClick:()=>ac(!1),className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Stop",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):(0,d.jsx)(h.$n,{size:"sm",icon:"cloud_upload",onClick:()=>{a8?aq({type:"error",message:`Security required: ${a9}`}):V?as(!0):aq({type:"error",message:'Security required: Enable "Require API key" before activating the tunnel.'})},children:"Enable"}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-amber-300 dark:border-amber-800 bg-amber-500/5 text-sm text-amber-600 dark:text-amber-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),a$?"Tunnel reconnecting...":"Tunnel checking..."]}),(0,d.jsx)("button",{onClick:()=>au(!0),className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Disable Tunnel",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:`text-xs font-mono px-1.5 py-0.5 rounded shrink-0 min-w-[88px] text-center ${av?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:"Tailscale"}),av&&!aB&&ax?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(h.pd,{value:`${az}/v1`,readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,d.jsx)("button",{onClick:()=>a7(`${az}/v1`,"ts_url"),className:"p-2 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary transition-colors shrink-0",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"ts_url"===a6?"check":"content_copy"})}),(0,d.jsx)("button",{onClick:()=>aY(!0),className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Disable Tailscale",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):!av||aB||ax?aB||aT?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-border bg-input text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),aD||"Connecting..."]}),aH&&(0,d.jsx)(h.$n,{size:"sm",icon:"open_in_new",onClick:()=>window.open(aH,"tailscale_auth","width=600,height=700,noopener,noreferrer"),children:aJ||"Open"}),(0,d.jsx)("button",{onClick:()=>{aC(!1),aU(!1),aE(""),bk()},className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Stop",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):aF?.type==="error"?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-red-300 dark:border-red-800 bg-red-500/5 text-sm text-red-600 dark:text-red-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"error"}),aF.message]}),(0,d.jsx)(h.$n,{size:"sm",icon:"vpn_lock",onClick:bo,children:"Enable"})]}):(0,d.jsx)(h.$n,{size:"sm",icon:"vpn_lock",onClick:()=>{a8?aG({type:"error",message:`Security required: ${a9}`}):bo()},className:"bg-linear-to-r from-indigo-500 to-purple-500 hover:from-indigo-600 hover:to-purple-600 text-white!",children:"Enable"}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-amber-300 dark:border-amber-800 bg-amber-500/5 text-sm text-amber-600 dark:text-amber-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),a0?"Tailscale reconnecting...":"Tailscale checking..."]}),(0,d.jsx)("button",{onClick:()=>aY(!0),className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Disable Tailscale",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]})]})]}),a8&&!ad&&!av&&(0,d.jsx)("div",{className:"mt-4",children:(0,d.jsx)(n,{message:a9,action:{label:"Open settings",href:"/dashboard/profile"}})}),(ad||av)&&(0,d.jsxs)("div",{className:"mt-4 flex flex-col gap-2",children:[!V&&(0,d.jsx)(n,{message:"Require API key is disabled — your endpoint is publicly accessible without authentication.",action:{label:"Enable",href:"#require-api-key"}}),(!X||!Z)&&(0,d.jsx)(n,{message:X?"Dashboard uses the default password — change it in Profile settings.":"Require login is disabled — anyone can access your dashboard via tunnel.",action:{label:X?"Change password":"Enable",href:"/dashboard/profile"}})]}),(ad||av)&&(0,d.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex items-center gap-3",children:[(0,d.jsx)(h.lM,{checked:_,onChange:()=>ba(!_)}),(0,d.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,d.jsx)("p",{className:"font-medium text-sm",children:"Allow dashboard access via tunnel"}),(0,d.jsx)(m,{text:"When enabled, the dashboard can be accessed through your tunnel or Tailscale URL (login still required). When disabled, dashboard access via tunnel/Tailscale is completely blocked."})]})]})]}),(0,d.jsxs)(h.Zp,{id:"require-api-key",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsxs)("h2",{className:"text-lg font-semibold flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary",children:"vpn_key"}),"API Keys"]}),(0,d.jsx)(h.$n,{icon:"add",onClick:()=>p(!0),children:"Create Key"})]}),(0,d.jsxs)("div",{className:"flex items-center justify-between pb-4 mb-4 border-b border-border",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"font-medium",children:"Require API key"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Requests without a valid key will be rejected"})]}),(0,d.jsx)(h.lM,{checked:V,onChange:()=>bb(!V)})]}),a4&&!V&&(0,d.jsx)("div",{className:"mb-4 -mt-2",children:(0,d.jsx)(n,{message:"Endpoint is exposed without an API key."})}),0===b.length?(0,d.jsxs)("div",{className:"text-center py-12",children:[(0,d.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-full bg-primary/10 text-primary mb-4",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[32px]",children:"vpn_key"})}),(0,d.jsx)("p",{className:"text-text-main font-medium mb-1",children:"No API keys yet"}),(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Create your first API key to get started"}),(0,d.jsx)(h.$n,{icon:"add",onClick:()=>p(!0),children:"Create Key"})]}):(0,d.jsx)("div",{className:"flex flex-col",children:b.map(a=>{var b;return(0,d.jsxs)("div",{className:`group flex items-center justify-between py-3 border-b border-black/[0.03] dark:border-white/[0.03] last:border-b-0 ${!1===a.isActive?"opacity-60":""}`,children:[(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsx)("p",{className:"text-sm font-medium",children:a.name}),(0,d.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[(0,d.jsx)("code",{className:"text-xs text-text-muted font-mono",children:a2.has(a.id)?a.key:(b=a.key)&&!(b.length<=10)?b.slice(0,6)+"•".repeat(b.length-10)+b.slice(-4):b||""}),(0,d.jsx)("button",{onClick:()=>{var b;return b=a.id,void a3(a=>{let c=new Set(a);return c.has(b)?c.delete(b):c.add(b),c})},className:"p-1 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary opacity-100 sm:opacity-0 sm:group-hover:opacity-100 transition-all",title:a2.has(a.id)?"Hide key":"Show key",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:a2.has(a.id)?"visibility_off":"visibility"})}),(0,d.jsx)("button",{onClick:()=>a7(a.key,a.id),className:"p-1 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary opacity-100 sm:opacity-0 sm:group-hover:opacity-100 transition-all",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:a6===a.id?"check":"content_copy"})})]}),(0,d.jsxs)("p",{className:"text-xs text-text-muted mt-1",children:["Created ",new Date(a.createdAt).toLocaleDateString(),a.expiresAt?` \xb7 Expires ${new Date(a.expiresAt).toLocaleString()}`:" \xb7 No expiry",null!=a.tokenLimit?` \xb7 ${a.tokensUsed}/${a.tokenLimit} tokens`:" \xb7 Unlimited tokens"]}),null!=a.tokenLimit&&(0,d.jsx)(t,{used:a.tokensUsed,limit:a.tokenLimit}),Array.isArray(a.allowedModels)&&a.allowedModels.length>0&&(0,d.jsxs)("p",{className:"text-xs text-text-muted mt-1 truncate",title:a.allowedModels.join(", "),children:["Models: ",a.allowedModels.join(", ")]}),!1===a.isActive&&(0,d.jsx)("p",{className:"text-xs text-orange-500 mt-1",children:"Paused"}),a.scope&&(0,d.jsxs)("p",{className:"text-xs text-primary mt-1",children:["Scoped (",(a.scope.providers||[]).length," provider",1===(a.scope.providers||[]).length?"":"s",")"]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("button",{onClick:()=>{S(a),U(a.scope??null)},className:"p-2 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary transition-all",title:"Edit scope",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"tune"})}),(0,d.jsx)(h.lM,{size:"sm",checked:a.isActive??!0,onChange:b=>{a.isActive&&!b?Q({title:"Pause API Key",message:`Pause API key "${a.name}"?
|
|
1
|
+
exports.id=1482,exports.ids=[1482],exports.modules={19165:(a,b,c)=>{Promise.resolve().then(c.bind(c,51747))},51747:(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 \"/Volumes/Files/Projects/EzRouter/EzRouter/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.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.")},"/Volumes/Files/Projects/EzRouter/EzRouter/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js","default")},54603:(a,b,c)=>{"use strict";c.d(b,{Xj:()=>q});var d=c(19713),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c.n(i),k=c(49120);let l=h().join(k.n,"machine-id"),m=h().join(k.n,"auth"),n=h().join(m,"cli-secret"),o=null,p=null;async function q(a=null){let b=a||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt",c=function(){if(o)return o;try{if(o=f().readFileSync(l,"utf8").trim())return o}catch{}try{o=(0,d.machineIdSync)()}catch{o=j().randomUUID()}try{f().mkdirSync(k.n,{recursive:!0}),f().writeFileSync(l,o,{mode:384})}catch{}return o}(),e="9r-cli-auth"===b?function(){if(p)return p;try{if(p=f().readFileSync(n,"utf8").trim())return p}catch{}p=j().randomBytes(32).toString("hex");try{f().mkdirSync(m,{recursive:!0}),f().writeFileSync(n,p,{mode:384})}catch{}return p}():"";return j().createHash("sha256").update(c+b+e).digest("hex").substring(0,16)}},64748:(a,b,c)=>{"use strict";c.d(b,{default:()=>v});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412),i=c(50377),j=c(67960);function k({label:a,url:b,copyId:c,copied:e,onCopy:f,badge:g,actions:i}){return(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:`text-xs font-mono px-1.5 py-0.5 rounded shrink-0 min-w-[88px] text-center ${"CF"===g||"TS"===g?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:a}),(0,d.jsx)(h.pd,{value:b,readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,d.jsx)("button",{onClick:()=>f(b,c),className:"p-2 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary transition-colors shrink-0",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:e===c?"check":"content_copy"})}),i]})}function l({status:a,className:b=""}){return(0,d.jsx)("div",{className:`p-2 rounded text-sm ${b} ${"success"===a.type?"bg-green-500/10 text-green-600 dark:text-green-400":"warning"===a.type?"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400":"info"===a.type?"bg-blue-500/10 text-blue-600 dark:text-blue-400":"bg-red-500/10 text-red-600 dark:text-red-400"}`,children:a.message.split(/(https?:\/\/[^\s]+)/g).map((a,b)=>/^https?:\/\//.test(a)?(0,d.jsx)("a",{href:a,target:"_blank",rel:"noreferrer",className:"underline font-medium",children:a},b):a)})}function m({text:a}){return(0,d.jsxs)("span",{className:"relative group inline-flex items-center",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] text-text-muted cursor-help",children:"help"}),(0,d.jsx)("span",{className:"pointer-events-none absolute left-5 top-1/2 -translate-y-1/2 z-50 w-64 rounded bg-gray-900 dark:bg-gray-800 text-white text-xs px-2.5 py-1.5 opacity-0 group-hover:opacity-100 transition-opacity shadow-lg",children:a})]})}function n({message:a,action:b}){return(0,d.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-amber-500/10 border border-amber-500/20 text-amber-700 dark:text-amber-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px] shrink-0 mt-0.5",children:"warning"}),(0,d.jsx)("p",{className:"text-xs flex-1",children:a}),b&&(0,d.jsx)("a",{href:b.href,className:"text-xs font-medium underline shrink-0 hover:opacity-80",onClick:b.href.startsWith("#")?a=>{a.preventDefault(),document.getElementById(b.href.slice(1))?.scrollIntoView({behavior:"smooth"})}:void 0,children:b.label})]})}var o=c(72738),p=c(92592);function q({value:a,onChange:b}){let[c,f]=(0,e.useState)([]),[g,h]=(0,e.useState)(!0),[i,j]=(0,e.useState)(()=>new Set),k=(0,e.useMemo)(()=>(function(a){let b=new Map;for(let c of a){if(!c?.id||"string"!=typeof c.id||!c.id.includes("/"))continue;let a=c.owned_by||c.id.slice(0,c.id.indexOf("/")),d=c.id.slice(c.id.indexOf("/")+1);b.has(a)||b.set(a,[]),b.get(a).push(d)}return b})(c),[c]),l=(0,e.useMemo)(()=>Array.from(k.keys()).sort((a,b)=>a.localeCompare(b)),[k]),m=null==a,n=(0,e.useMemo)(()=>new Set(a?.providers||[]),[a]);(0,e.useMemo)(()=>new Set(a?.models||[]),[a]);let r=b=>{let c=`${b}/`;return(a?.models||[]).filter(a=>a.startsWith(c))},s=(a,c)=>{0===a.length?b(null):b({providers:a,models:c})},t=a=>{j(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})};return g?(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Loading available providers…"}):(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsxs)("label",{className:"flex items-center gap-2 text-sm",children:[(0,d.jsx)("input",{type:"checkbox",checked:m,onChange:a=>b(a.target.checked?null:{providers:[],models:[]})}),(0,d.jsx)("span",{children:"Unrestricted (key can reach every provider and model)"})]}),!m&&(0,d.jsxs)("div",{className:"flex flex-col gap-1 max-h-80 overflow-y-auto border border-black/[0.06] dark:border-white/[0.06] rounded-lg p-2",children:[0===l.length&&(0,d.jsx)("p",{className:"text-sm text-text-muted px-2 py-1",children:"No providers configured yet."}),l.map(b=>{let c,e=(0,p.rs)(b),f=p.Q2[e],g=k.get(b)||[],h=(c=(0,p.rs)(b),n.has(b)||n.has(c)),j=r(b),l=i.has(b);return(0,d.jsxs)("div",{className:"border-b border-black/[0.03] dark:border-white/[0.03] last:border-b-0 py-1",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("input",{type:"checkbox",checked:h,onChange:()=>{let c,d;return c=new Set(a?.providers||[]),d=(a?.models||[]).slice(),void(c.has(b)?(c.delete(b),d=d.filter(a=>!a.startsWith(`${b}/`))):c.add(b),s(Array.from(c),d))}}),(0,d.jsx)(o.A,{providerId:e,size:16}),(0,d.jsx)("button",{type:"button",className:"flex-1 text-left text-sm font-medium",onClick:()=>t(b),children:f?.name||b}),(0,d.jsx)("span",{className:"text-xs text-text-muted",children:h?0===j.length?`all ${g.length} models`:`${j.length}/${g.length} models`:""}),(0,d.jsx)("button",{type:"button",className:"material-symbols-outlined text-[16px] text-text-muted",onClick:()=>t(b),children:l?"expand_less":"expand_more"})]}),l&&(0,d.jsx)("div",{className:"pl-8 mt-1 flex flex-col gap-1",children:g.map(c=>{let e=`${b}/${c}`,f=h&&(0===j.length||j.includes(e));return(0,d.jsxs)("label",{className:"flex items-center gap-2 text-xs",children:[(0,d.jsx)("input",{type:"checkbox",checked:f,onChange:()=>{let d,e,f,g,h,i;return(e=new Set(a?.providers||[])).add(b),f=`${b}/${c}`,g=r(b),h=k.get(b)||[],i=(a?.models||[]).filter(a=>!a.startsWith(`${b}/`)),void(0===g.length?d=h.filter(a=>a!==c).map(a=>`${b}/${a}`):g.includes(f)?d=g.filter(a=>a!==f):(d=[...g,f]).length===h.length&&(d=[]),s(Array.from(e),[...i,...d]))}}),(0,d.jsx)("span",{className:"font-mono",children:c})]},e)})})]},b)})]})]})}q.propTypes={value:g().shape({providers:g().arrayOf(g().string),models:g().arrayOf(g().string)}),onChange:g().func.isRequired};let r=[{label:"100K",value:"100000"},{label:"500K",value:"500000"},{label:"1M",value:"1000000"},{label:"5M",value:"5000000"},{label:"10M",value:"10000000"}];function s(a){let b=Math.max(0,Number(a)||0);return b>=1e6?`${(b/1e6).toFixed(+(b%1e6!=0))}M`:b>=1e3?`${(b/1e3).toFixed(+(b%1e3!=0))}K`:String(b)}function t({used:a,limit:b}){let c=Math.max(1,Number(b)||1),e=Math.max(0,Number(a)||0),f=Math.min(100,Math.round(e/c*100)),g=Math.max(0,c-e),h=f>=90?{bar:"bg-red-500",text:"text-red-600 dark:text-red-400"}:f>=75?{bar:"bg-amber-500",text:"text-amber-600 dark:text-amber-400"}:{bar:"bg-emerald-500",text:"text-text-muted"};return(0,d.jsxs)("div",{className:"mt-2 max-w-sm",title:`${s(e)} of ${s(c)} tokens used`,children:[(0,d.jsxs)("div",{className:"mb-1 flex items-center justify-between gap-3 text-[11px]",children:[(0,d.jsxs)("span",{className:h.text,children:[f,"% used"]}),(0,d.jsxs)("span",{className:"text-text-muted",children:[s(g)," remaining"]})]}),(0,d.jsx)("div",{className:"h-1.5 overflow-hidden rounded-full bg-black/10 dark:bg-white/10",role:"progressbar","aria-label":`Token usage: ${f}% used, ${s(g)} remaining`,"aria-valuemin":0,"aria-valuemax":c,"aria-valuenow":Math.min(e,c),children:(0,d.jsx)("div",{className:`h-full rounded-full transition-[width] duration-300 ${h.bar}`,style:{width:`${f}%`}})})]})}function u({apiKey:a,activeProviders:b,modelAliases:c,onClose:f,onSave:g}){let[i,j]=(0,e.useState)(a.expiresAt?a.expiresAt.slice(0,16):""),[k,l]=(0,e.useState)(a.allowedModels||[]),[m,n]=(0,e.useState)(""),[o,p]=(0,e.useState)(null==a.tokenLimit?"unlimited":"unchanged"),[q,t]=(0,e.useState)(!1),[v,w]=(0,e.useState)(!1),x=null!=a.tokenLimit,y=async()=>{w(!0),await g({expiresAt:i||null,allowedModels:k,..."unlimited"===o?{tokenLimit:null}:m?{[x?"tokenLimitIncrement":"tokenLimit"]:m}:{}}),w(!1)};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(h.aF,{isOpen:!0,onClose:f,title:`Edit ${a.name}`,children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)(h.pd,{label:"Expires at (optional)",type:"datetime-local",value:i,onChange:a=>j(a.target.value),hint:"Leave blank for no expiry."}),(0,d.jsx)(h.pd,{label:x?"Add tokens":"Set token limit",type:"number",min:"1",step:"1",value:m,onChange:a=>{let b=a.target.value;n(b),p(b?"amount":x?"unchanged":"unlimited")},placeholder:x?"e.g. 500000":"e.g. 1000000",hint:x?`Added to the current ${s(a.tokenLimit)} limit; usage is preserved.`:"Choose Unlimited to remove the limit."}),(0,d.jsxs)("div",{className:"-mt-2 flex flex-wrap gap-1.5","aria-label":"Token limit presets",children:[r.map(a=>{let b="amount"===o&&m===a.value;return(0,d.jsx)("button",{type:"button",onClick:()=>{n(a.value),p("amount")},"aria-pressed":b,className:`rounded-full border px-2.5 py-1 text-xs font-medium transition-colors ${b?"border-primary bg-primary text-white":"border-border bg-surface-2 text-text-muted hover:border-primary/50 hover:text-primary"}`,children:a.label},a.value)}),(0,d.jsx)("button",{type:"button",onClick:()=>{n(""),p("unlimited")},"aria-pressed":"unlimited"===o,className:`rounded-full border px-2.5 py-1 text-xs font-medium transition-colors ${"unlimited"===o?"border-primary bg-primary text-white":"border-border bg-surface-2 text-text-muted hover:border-primary/50 hover:text-primary"}`,children:"Unlimited"})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"mb-1.5 block text-sm font-medium text-text-main",children:"Allowed models"}),(0,d.jsx)("div",{className:"flex min-h-12 flex-wrap gap-1 rounded-lg border border-border bg-surface-2 p-2",children:k.length?k.map(a=>(0,d.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-md bg-primary/10 px-2 py-1 text-xs text-primary",children:[(0,d.jsx)("span",{children:a}),(0,d.jsx)("button",{type:"button",onClick:()=>l(b=>b.filter(b=>b!==a)),"aria-label":`Remove ${a}`,className:"material-symbols-outlined text-[14px]",children:"close"})]},a)):(0,d.jsx)("span",{className:"p-1 text-xs text-text-muted",children:"All models allowed"})}),(0,d.jsxs)("button",{type:"button",onClick:()=>t(!0),className:"mt-2 flex w-full items-center justify-center gap-1 rounded-lg border border-dashed border-black/10 py-2 text-xs font-medium text-primary dark:border-white/10",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"edit"}),"Edit model access"]})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:y,fullWidth:!0,disabled:v,children:v?"Saving...":"Save changes"}),(0,d.jsx)(h.$n,{onClick:f,variant:"ghost",fullWidth:!0,disabled:v,children:"Cancel"})]})]})}),q&&(0,d.jsx)(h.rq,{isOpen:!0,onClose:()=>t(!1),onSelect:a=>l(b=>b.includes(a.value)?b:[...b,a.value]),onDeselect:a=>l(b=>b.filter(b=>b!==a.value)),activeProviders:b,modelAliases:c,addedModelValues:k,closeOnSelect:!1,title:"Edit allowed models"})]})}function v({machineId:a}){let[b,c]=(0,e.useState)([]),[f,g]=(0,e.useState)(!0),[o,p]=(0,e.useState)(!1),[s,w]=(0,e.useState)(""),[x,y]=(0,e.useState)(""),[z,A]=(0,e.useState)(""),[B,C]=(0,e.useState)([]),[D,E]=(0,e.useState)(!1),[F,G]=(0,e.useState)([]),[H,I]=(0,e.useState)({}),[J,K]=(0,e.useState)(null),[L,M]=(0,e.useState)(null),[N,O]=(0,e.useState)(null),[P,Q]=(0,e.useState)(null),[R,S]=(0,e.useState)(null),[T,U]=(0,e.useState)(null),[V,W]=(0,e.useState)(!1),[X,Y]=(0,e.useState)(!0),[Z,$]=(0,e.useState)(!0),[_,aa]=(0,e.useState)(!1),[ab,ac]=(0,e.useState)(!1),[ad,ae]=(0,e.useState)(!1),[af,ag]=(0,e.useState)(!1),[ah,ai]=(0,e.useState)(""),[aj,ak]=(0,e.useState)(""),[al,am]=(0,e.useState)(!1),[an,ao]=(0,e.useState)(""),[ap,aq]=(0,e.useState)(null),[ar,as]=(0,e.useState)(!1),[at,au]=(0,e.useState)(!1),[av,aw]=(0,e.useState)(!1),[ax,ay]=(0,e.useState)(!1),[az,aA]=(0,e.useState)(""),[aB,aC]=(0,e.useState)(!1),[aD,aE]=(0,e.useState)(""),[aF,aG]=(0,e.useState)(null),[aH,aI]=(0,e.useState)(""),[aJ,aK]=(0,e.useState)(""),[aL,aM]=(0,e.useState)(null),[aN,aO]=(0,e.useState)(!1),[aP,aQ]=(0,e.useState)([]),[aR,aS]=(0,e.useState)(""),[aT,aU]=(0,e.useState)(!1),[aV,aW]=(0,e.useState)(!1),[aX,aY]=(0,e.useState)(!1),aZ=(0,e.useRef)(null);(0,e.useRef)(0),(0,e.useRef)(0),(0,e.useRef)(!1),(0,e.useRef)(!1),(0,e.useRef)(!1),(0,e.useRef)(!1);let[a$,a_]=(0,e.useState)(!1),[a0,a1]=(0,e.useState)(!1),[a2,a3]=(0,e.useState)(new Set),[a4,a5]=(0,e.useState)(!1),{copied:a6,copy:a7}=(0,i.C)(),a8=!X||!Z,a9=X?"Change the default dashboard password before activating the tunnel.":'Enable "Require login" and set a custom password before activating the tunnel.';(0,e.useCallback)((a,b,c,d,e,f)=>{b.current?(c.current=0,d(!0),e.current||(e.current=!0,f(!0))):(c.current+=1,c.current>=j.t6&&d(!1))},[]);let ba=async a=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tunnelDashboardAccess:a})})).ok&&aa(a)}catch(a){console.log("Error updating tunnelDashboardAccess:",a)}},bb=async a=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({requireApiKey:a})})).ok&&W(a)}catch(a){console.log("Error updating requireApiKey:",a)}},bc=async()=>{try{let a=await fetch("/api/keys"),b=await a.json();a.ok&&c(b.keys||[])}catch(a){console.log("Error fetching data:",a)}finally{g(!1)}},bd=async(...a)=>{am(!0),ao("Waiting for tunnel ready...");let b=a.filter(Boolean).map(a=>`${a}/api/health`),c=Date.now();for(;Date.now()-c<j.Cp;){if(await new Promise(a=>setTimeout(a,j.Hx)),await Promise.any(b.map(async a=>{if((await fetch(a,{mode:"cors",cache:"no-store"})).ok)return!0;throw Error("not ready")})).catch(()=>!1))return ae(!0),am(!1),ao(""),!0;if((Date.now()-c)%1e4<j.Hx)try{let a=await fetch("/api/tunnel/status");if(a.ok){let b=await a.json();if(!b.tunnel?.enabled)return aq({type:"error",message:"Tunnel process stopped unexpectedly."}),am(!1),ao(""),!1}}catch{}}return aq({type:"error",message:"Tunnel created but not reachable. Please try again."}),am(!1),ao(""),!1},be=async()=>{as(!1),am(!0),aq(null),ao("Creating tunnel...");let a=!0;(async()=>{for(;a;){try{let b=await fetch("/api/tunnel/status");if(b.ok){let c=await b.json();c.download?.downloading?ao(`Downloading cloudflared... ${c.download.progress}%`):a&&ao("Creating tunnel...")}}catch{}await new Promise(a=>setTimeout(a,1e3))}})();try{let b=await fetch("/api/tunnel/enable",{method:"POST"});a=!1;let c=await b.json();if(!b.ok)return void aq({type:"error",message:c.error||"Failed to enable tunnel"});let d=c.tunnelUrl;if(!d)return void aq({type:"error",message:"No tunnel URL returned"});ai(d),ak(c.publicUrl||""),await bd(c.publicUrl,d)}catch(a){aq({type:"error",message:a.message})}finally{a=!1,am(!1),ao("")}},bf=async()=>{am(!0),aq(null);try{let a=await fetch("/api/tunnel/disable",{method:"POST"}),b=await a.json();a.ok?(ae(!1),ai(""),au(!1),aq({type:"success",message:"Tunnel disabled"})):aq({type:"error",message:b.error||"Failed to disable tunnel"})}catch(a){aq({type:"error",message:a.message})}finally{am(!1)}},bg=async()=>{aM(null);try{let a=await fetch("/api/tunnel/tailscale-check");if(a.ok){let b=await a.json();return aM(b.installed),b}}catch{}return aM(!1),{installed:!1}},bh=async()=>{aO(!0),aG(null),aQ([]);try{let a=await fetch("/api/tunnel/tailscale-install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sudoPassword:aR})});aS("");let b=a.body.getReader(),c=new TextDecoder,d="";for(;;){let{done:a,value:e}=await b.read();if(a)break;let f=(d+=c.decode(e,{stream:!0})).split("\n\n");for(let a of(d=f.pop()||"",f)){let b=a.split("\n"),c="progress",d=null;for(let a of b)if(a.startsWith("event: ")&&(c=a.slice(7).trim()),a.startsWith("data: "))try{d=JSON.parse(a.slice(6))}catch{}if(d)if("progress"===c)aQ(a=>[...a.slice(-50),d.message]);else if("done"===c){aM(!0),aO(!1),aW(!1),bl();return}else"error"===c&&aG({type:"error",message:d.error||"Install failed"})}}}catch(a){aG({type:"error",message:a.message})}finally{aO(!1)}},bi=async a=>{aE("Waiting for Tailscale ready...");let b=`${a}/api/health`,c=Date.now();for(;Date.now()-c<j.Cp;){await new Promise(a=>setTimeout(a,j.Hx));try{let a=await fetch(b,{mode:"no-cors",cache:"no-store"});if(a.ok||"opaque"===a.type)return!0}catch{}}return!1},bj=(a,b)=>{aI(a),aK(b)},bk=()=>{aI(""),aK("")},bl=async()=>{aW(!1),aU(!0),aC(!0),aG(null),aE("Connecting..."),bk();try{let a=await fetch("/api/tunnel/tailscale-enable",{method:"POST"}),b=await a.json();if(a.ok&&b.success){aA(b.tunnelUrl||"");let a=await bi(b.tunnelUrl);aw(!0),aG(a?null:{type:"warning",message:"Connected but not reachable yet."});return}if(b.needsLogin&&b.authUrl){bj(b.authUrl,"Open Login Page"),aE('Login required — click "Open Login Page" to continue');for(let a=0;a<40;a++){await new Promise(a=>setTimeout(a,3e3));try{let a=await fetch("/api/tunnel/tailscale-check");if(a.ok&&(await a.json()).loggedIn){bk(),aE("Starting funnel...");let a=await fetch("/api/tunnel/tailscale-enable",{method:"POST"}),b=await a.json();if(a.ok&&b.success){aA(b.tunnelUrl||"");let a=await bi(b.tunnelUrl);aw(!0),aG(a?null:{type:"warning",message:"Connected but not reachable yet."})}else b.funnelNotEnabled&&b.enableUrl?await bm(b.enableUrl):aG({type:"error",message:b.error||"Failed to start funnel"});return}}catch{}}bk(),aG({type:"error",message:"Login timed out. Please try again."});return}if(b.funnelNotEnabled&&b.enableUrl)return void await bm(b.enableUrl);aG({type:"error",message:b.error||"Failed to connect"})}catch(a){aG({type:"error",message:a.message})}finally{aC(!1),aU(!1),aE(""),bk()}},bm=async a=>{bj(a,"Open Funnel Settings"),aE('Click "Open Funnel Settings" to enable Funnel...');for(let a=0;a<40;a++){await new Promise(a=>setTimeout(a,3e3));try{let a=await fetch("/api/tunnel/tailscale-enable",{method:"POST"}),b=await a.json();if(a.ok&&b.success){bk(),aA(b.tunnelUrl||"");let a=await bi(b.tunnelUrl);aw(!0),aG(a?null:{type:"warning",message:"Connected but not reachable yet."});return}if(b.funnelNotEnabled)continue;if(b.error){bk(),aG({type:"error",message:b.error});return}}catch{}}bk(),aG({type:"error",message:"Timed out waiting for Funnel to be enabled."})},bn=async()=>{aC(!0),aG(null);try{let a=await fetch("/api/tunnel/tailscale-disable",{method:"POST"}),b=await a.json();a.ok?(aw(!1),aA(""),aY(!1),aG({type:"success",message:"Tailscale disabled"})):aG({type:"error",message:b.error||"Failed to disable Tailscale"})}catch(a){aG({type:"error",message:a.message})}finally{aC(!1)}},bo=async()=>{aG(null),aQ([]);let a=await bg();a?.installed&&a?.hasCachedPassword?bl():aW(!0)},bp=async()=>{if(s.trim())try{let a=await fetch("/api/keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:s,expiresAt:x||null,tokenLimit:z||null,allowedModels:B,scope:J})}),b=await a.json();a.ok&&(M(b.key),await bc(),w(""),y(""),A(""),C([]),E(!1),K(null),p(!1))}catch(a){console.log("Error creating key:",a)}},bq=async()=>{if(R)try{(await fetch(`/api/keys/${R.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({scope:T})})).ok&&(c(a=>a.map(a=>a.id===R.id?{...a,scope:T}:a)),S(null),U(null))}catch(a){console.log("Error updating key scope:",a)}},br=async a=>{Q({title:"Delete API Key",message:"Delete this API key?",onConfirm:async()=>{Q(null);try{(await fetch(`/api/keys/${a}`,{method:"DELETE"})).ok&&(c(b.filter(b=>b.id!==a)),a3(b=>{let c=new Set(b);return c.delete(a),c}))}catch(a){console.log("Error deleting key:",a)}}})},bs=async(a,b)=>{try{(await fetch(`/api/keys/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:b})})).ok&&c(c=>c.map(c=>c.id===a?{...c,isActive:b}:c))}catch(a){console.log("Error toggling key:",a)}},bt=async(a,b)=>{let c=await fetch(`/api/keys/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!c.ok)throw Error((await c.json()).error||"Failed to update key");await bc(),O(null)},[bu,bv]=(0,e.useState)("/v1");return f?(0,d.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,d.jsx)(h.Qv,{}),(0,d.jsx)(h.Qv,{})]}):(0,d.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,d.jsxs)(h.Zp,{children:[(0,d.jsxs)("h2",{className:"text-lg font-semibold mb-4 flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary",children:"api"}),"API Endpoint"]}),(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsx)(k,{label:"Local",url:bu,copyId:"local_url",copied:a6,onCopy:a7}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:`text-xs font-mono px-1.5 py-0.5 rounded shrink-0 min-w-[88px] text-center ${ad?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:"Tunnel"}),ad&&!al&&af?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(h.pd,{value:`${aj||ah}/v1`,readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,d.jsx)("button",{onClick:()=>a7(`${aj||ah}/v1`,"tunnel_url"),className:"p-2 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary transition-colors shrink-0",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"tunnel_url"===a6?"check":"content_copy"})}),(0,d.jsx)("button",{onClick:()=>au(!0),className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Disable Tunnel",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):!ad||al||af?al?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-border bg-input text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),an||"Creating tunnel..."]}),(0,d.jsx)("button",{onClick:()=>{am(!1),ao("")},className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Stop",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):ap?.type==="error"?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-red-300 dark:border-red-800 bg-red-500/5 text-sm text-red-600 dark:text-red-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"error"}),ap.message]}),(0,d.jsx)(h.$n,{size:"sm",icon:"cloud_upload",onClick:()=>as(!0),children:"Enable"})]}):ab?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-border bg-input text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Checking..."]}),(0,d.jsx)("button",{onClick:()=>ac(!1),className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Stop",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):(0,d.jsx)(h.$n,{size:"sm",icon:"cloud_upload",onClick:()=>{a8?aq({type:"error",message:`Security required: ${a9}`}):V?as(!0):aq({type:"error",message:'Security required: Enable "Require API key" before activating the tunnel.'})},children:"Enable"}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-amber-300 dark:border-amber-800 bg-amber-500/5 text-sm text-amber-600 dark:text-amber-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),a$?"Tunnel reconnecting...":"Tunnel checking..."]}),(0,d.jsx)("button",{onClick:()=>au(!0),className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Disable Tunnel",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:`text-xs font-mono px-1.5 py-0.5 rounded shrink-0 min-w-[88px] text-center ${av?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:"Tailscale"}),av&&!aB&&ax?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(h.pd,{value:`${az}/v1`,readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,d.jsx)("button",{onClick:()=>a7(`${az}/v1`,"ts_url"),className:"p-2 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary transition-colors shrink-0",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"ts_url"===a6?"check":"content_copy"})}),(0,d.jsx)("button",{onClick:()=>aY(!0),className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Disable Tailscale",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):!av||aB||ax?aB||aT?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-border bg-input text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),aD||"Connecting..."]}),aH&&(0,d.jsx)(h.$n,{size:"sm",icon:"open_in_new",onClick:()=>window.open(aH,"tailscale_auth","width=600,height=700,noopener,noreferrer"),children:aJ||"Open"}),(0,d.jsx)("button",{onClick:()=>{aC(!1),aU(!1),aE(""),bk()},className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Stop",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):aF?.type==="error"?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-red-300 dark:border-red-800 bg-red-500/5 text-sm text-red-600 dark:text-red-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"error"}),aF.message]}),(0,d.jsx)(h.$n,{size:"sm",icon:"vpn_lock",onClick:bo,children:"Enable"})]}):(0,d.jsx)(h.$n,{size:"sm",icon:"vpn_lock",onClick:()=>{a8?aG({type:"error",message:`Security required: ${a9}`}):bo()},className:"bg-linear-to-r from-indigo-500 to-purple-500 hover:from-indigo-600 hover:to-purple-600 text-white!",children:"Enable"}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-amber-300 dark:border-amber-800 bg-amber-500/5 text-sm text-amber-600 dark:text-amber-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),a0?"Tailscale reconnecting...":"Tailscale checking..."]}),(0,d.jsx)("button",{onClick:()=>aY(!0),className:"p-2 hover:bg-red-500/10 rounded text-red-500 transition-colors shrink-0",title:"Disable Tailscale",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]})]})]}),a8&&!ad&&!av&&(0,d.jsx)("div",{className:"mt-4",children:(0,d.jsx)(n,{message:a9,action:{label:"Open settings",href:"/dashboard/profile"}})}),(ad||av)&&(0,d.jsxs)("div",{className:"mt-4 flex flex-col gap-2",children:[!V&&(0,d.jsx)(n,{message:"Require API key is disabled — your endpoint is publicly accessible without authentication.",action:{label:"Enable",href:"#require-api-key"}}),(!X||!Z)&&(0,d.jsx)(n,{message:X?"Dashboard uses the default password — change it in Profile settings.":"Require login is disabled — anyone can access your dashboard via tunnel.",action:{label:X?"Change password":"Enable",href:"/dashboard/profile"}})]}),(ad||av)&&(0,d.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex items-center gap-3",children:[(0,d.jsx)(h.lM,{checked:_,onChange:()=>ba(!_)}),(0,d.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,d.jsx)("p",{className:"font-medium text-sm",children:"Allow dashboard access via tunnel"}),(0,d.jsx)(m,{text:"When enabled, the dashboard can be accessed through your tunnel or Tailscale URL (login still required). When disabled, dashboard access via tunnel/Tailscale is completely blocked."})]})]})]}),(0,d.jsxs)(h.Zp,{id:"require-api-key",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsxs)("h2",{className:"text-lg font-semibold flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary",children:"vpn_key"}),"API Keys"]}),(0,d.jsx)(h.$n,{icon:"add",onClick:()=>p(!0),children:"Create Key"})]}),(0,d.jsxs)("div",{className:"flex items-center justify-between pb-4 mb-4 border-b border-border",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"font-medium",children:"Require API key"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Requests without a valid key will be rejected"})]}),(0,d.jsx)(h.lM,{checked:V,onChange:()=>bb(!V)})]}),a4&&!V&&(0,d.jsx)("div",{className:"mb-4 -mt-2",children:(0,d.jsx)(n,{message:"Endpoint is exposed without an API key."})}),0===b.length?(0,d.jsxs)("div",{className:"text-center py-12",children:[(0,d.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-full bg-primary/10 text-primary mb-4",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[32px]",children:"vpn_key"})}),(0,d.jsx)("p",{className:"text-text-main font-medium mb-1",children:"No API keys yet"}),(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Create your first API key to get started"}),(0,d.jsx)(h.$n,{icon:"add",onClick:()=>p(!0),children:"Create Key"})]}):(0,d.jsx)("div",{className:"flex flex-col",children:b.map(a=>{var b;return(0,d.jsxs)("div",{className:`group flex items-center justify-between py-3 border-b border-black/[0.03] dark:border-white/[0.03] last:border-b-0 ${!1===a.isActive?"opacity-60":""}`,children:[(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsx)("p",{className:"text-sm font-medium",children:a.name}),(0,d.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[(0,d.jsx)("code",{className:"text-xs text-text-muted font-mono",children:a2.has(a.id)?a.key:(b=a.key)&&!(b.length<=10)?b.slice(0,6)+"•".repeat(b.length-10)+b.slice(-4):b||""}),(0,d.jsx)("button",{onClick:()=>{var b;return b=a.id,void a3(a=>{let c=new Set(a);return c.has(b)?c.delete(b):c.add(b),c})},className:"p-1 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary opacity-100 sm:opacity-0 sm:group-hover:opacity-100 transition-all",title:a2.has(a.id)?"Hide key":"Show key",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:a2.has(a.id)?"visibility_off":"visibility"})}),(0,d.jsx)("button",{onClick:()=>a7(a.key,a.id),className:"p-1 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary opacity-100 sm:opacity-0 sm:group-hover:opacity-100 transition-all",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:a6===a.id?"check":"content_copy"})})]}),(0,d.jsxs)("p",{className:"text-xs text-text-muted mt-1",children:["Created ",new Date(a.createdAt).toLocaleDateString(),a.expiresAt?` \xb7 Expires ${new Date(a.expiresAt).toLocaleString()}`:" \xb7 No expiry",null!=a.tokenLimit?` \xb7 ${a.tokensUsed}/${a.tokenLimit} tokens`:" \xb7 Unlimited tokens"]}),null!=a.tokenLimit&&(0,d.jsx)(t,{used:a.tokensUsed,limit:a.tokenLimit}),Array.isArray(a.allowedModels)&&a.allowedModels.length>0&&(0,d.jsxs)("p",{className:"text-xs text-text-muted mt-1 truncate",title:a.allowedModels.join(", "),children:["Models: ",a.allowedModels.join(", ")]}),!1===a.isActive&&(0,d.jsx)("p",{className:"text-xs text-orange-500 mt-1",children:"Paused"}),a.scope&&(0,d.jsxs)("p",{className:"text-xs text-primary mt-1",children:["Scoped (",(a.scope.providers||[]).length," provider",1===(a.scope.providers||[]).length?"":"s",")"]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("button",{onClick:()=>{S(a),U(a.scope??null)},className:"p-2 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary transition-all",title:"Edit scope",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"tune"})}),(0,d.jsx)(h.lM,{size:"sm",checked:a.isActive??!0,onChange:b=>{a.isActive&&!b?Q({title:"Pause API Key",message:`Pause API key "${a.name}"?
|
|
2
2
|
|
|
3
|
-
This key will stop working immediately but can be resumed later.`,onConfirm:async()=>{Q(null),bs(a.id,b)}}):bs(a.id,b)},title:a.isActive?"Pause key":"Resume key"}),(0,d.jsx)("button",{onClick:()=>O(a),className:"p-2 hover:bg-primary/10 rounded text-text-muted hover:text-primary opacity-100 sm:opacity-0 sm:group-hover:opacity-100 transition-all",title:"Edit key",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"edit"})}),(0,d.jsx)("button",{onClick:()=>br(a.id),className:"p-2 hover:bg-red-500/10 rounded text-red-500 opacity-100 sm:opacity-0 sm:group-hover:opacity-100 transition-all",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"})})]})]},a.id)})})]}),N&&(0,d.jsx)(u,{apiKey:N,activeProviders:F,modelAliases:H,onClose:()=>O(null),onSave:a=>bt(N.id,a)},N.id),(0,d.jsx)(h.aF,{isOpen:o,title:"Create API Key",onClose:()=>{p(!1),w(""),y(""),A(""),C([]),E(!1),K(null)},children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)(h.pd,{label:"Key Name",value:s,onChange:a=>w(a.target.value),placeholder:"Production Key"}),(0,d.jsx)(h.pd,{label:"Expires at (optional)",type:"datetime-local",value:x,onChange:a=>y(a.target.value),hint:"Leave blank for no expiry."}),(0,d.jsx)(h.pd,{label:"Token limit (optional)",type:"number",min:"1",step:"1",value:z,onChange:a=>A(a.target.value),placeholder:"Unlimited",hint:"Total input and output tokens. Strictly enforced."}),(0,d.jsxs)("div",{className:"-mt-2 flex flex-wrap gap-1.5","aria-label":"Token limit presets",children:[r.map(a=>{let b=z===a.value;return(0,d.jsx)("button",{type:"button",onClick:()=>A(a.value),"aria-pressed":b,className:`rounded-full border px-2.5 py-1 text-xs font-medium transition-colors ${b?"border-primary bg-primary text-white":"border-border bg-surface-2 text-text-muted hover:border-primary/50 hover:text-primary"}`,children:a.label},a.value)}),(0,d.jsx)("button",{type:"button",onClick:()=>A(""),"aria-pressed":!z,className:`rounded-full border px-2.5 py-1 text-xs font-medium transition-colors ${!z?"border-primary bg-primary text-white":"border-border bg-surface-2 text-text-muted hover:border-primary/50 hover:text-primary"}`,children:"Unlimited"})]}),(0,d.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,d.jsx)("label",{className:"text-sm font-medium text-text-main",children:"Allowed models (optional)"}),0===B.length?(0,d.jsxs)("div",{className:"rounded-lg border border-dashed border-black/10 bg-black/[0.01] px-3 py-4 text-center dark:border-white/10 dark:bg-white/[0.01]",children:[(0,d.jsx)("span",{className:"material-symbols-outlined mb-1 text-xl text-text-muted",children:"layers"}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"All models are allowed"})]}):(0,d.jsx)("div",{className:"flex max-h-28 flex-wrap gap-1 overflow-y-auto rounded-lg border border-border bg-surface-2 p-2",children:B.map(a=>(0,d.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-md bg-primary/10 px-2 py-1 text-xs text-primary",children:[(0,d.jsx)("span",{className:"max-w-48 truncate",children:a}),(0,d.jsx)("button",{type:"button",onClick:()=>C(b=>b.filter(b=>b!==a)),"aria-label":`Remove ${a}`,className:"material-symbols-outlined text-[14px] hover:text-red-500",children:"close"})]},a))}),(0,d.jsxs)("button",{type:"button",onClick:()=>E(!0),className:"flex w-full items-center justify-center gap-1 rounded-lg border border-dashed border-black/10 py-2 text-xs font-medium text-primary transition-colors hover:border-primary/50 dark:border-white/10",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"add"}),B.length?"Add another model":"Choose models"]}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"Leave empty to allow every model."})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium mb-2",children:"Access Scope"}),(0,d.jsx)(q,{value:J,onChange:K})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:bp,fullWidth:!0,disabled:!s.trim(),children:"Create"}),(0,d.jsx)(h.$n,{onClick:()=>{p(!1),w(""),y(""),A(""),C([]),E(!1),K(null)},variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),(0,d.jsx)(h.aF,{isOpen:!!R,title:`Edit Scope — ${R?.name||""}`,onClose:()=>{S(null),U(null)},children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)(q,{value:T,onChange:U}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:bq,fullWidth:!0,children:"Save"}),(0,d.jsx)(h.$n,{onClick:()=>{S(null),U(null)},variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),D&&(0,d.jsx)(h.rq,{isOpen:D,onClose:()=>E(!1),onSelect:a=>C(b=>b.includes(a.value)?b:[...b,a.value]),onDeselect:a=>C(b=>b.filter(b=>b!==a.value)),activeProviders:F,modelAliases:H,addedModelValues:B,closeOnSelect:!1,title:"Choose models for this API key"}),(0,d.jsx)(h.aF,{isOpen:!!L,title:"API Key Created",onClose:()=>M(null),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg p-4",children:[(0,d.jsx)("p",{className:"text-sm text-yellow-800 dark:text-yellow-200 mb-2 font-medium",children:"Save this key now!"}),(0,d.jsx)("p",{className:"text-sm text-yellow-700 dark:text-yellow-300",children:"This is the only time you will see this key. Store it securely."})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.pd,{value:L||"",readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,d.jsx)(h.$n,{variant:"secondary",icon:"created_key"===a6?"check":"content_copy",onClick:()=>a7(L,"created_key"),children:"created_key"===a6?"Copied!":"Copy"})]}),(0,d.jsx)(h.$n,{onClick:()=>M(null),fullWidth:!0,children:"Done"})]})}),(0,d.jsx)(h.aF,{isOpen:ar,title:"Enable Tunnel",onClose:()=>as(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("div",{className:"bg-surface-2 border border-border-subtle rounded-lg p-4",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary",children:"cloud_upload"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm text-text-main font-medium mb-1",children:"Cloudflare Tunnel"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Expose your local 9Router to the internet. No port forwarding, no static IP needed. Share endpoint URL with your team or use it in Cursor, Cline, and other AI tools from anywhere."})]})]})}),(0,d.jsx)("div",{className:"grid grid-cols-2 gap-3",children:j.oX.map(a=>(0,d.jsxs)("div",{className:"flex flex-col items-center text-center p-3 rounded-lg bg-sidebar/50",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-xl text-primary mb-1",children:a.icon}),(0,d.jsx)("p",{className:"text-xs font-semibold",children:a.title}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:a.desc})]},a.title))}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"Requires outbound port 7844 (TCP/UDP). Connection may take 10-30s."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:be,fullWidth:!0,children:"Start Tunnel"}),(0,d.jsx)(h.$n,{onClick:()=>as(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),(0,d.jsx)(h.aF,{isOpen:at,title:"Disable Tunnel",onClose:()=>!al&&au(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"The Cloudflare tunnel will be disconnected. Remote access via tunnel URL will stop working."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:bf,fullWidth:!0,disabled:al,variant:"danger",children:al?"Disabling...":"Disable"}),(0,d.jsx)(h.$n,{onClick:()=>au(!1),variant:"ghost",fullWidth:!0,disabled:al,children:"Cancel"})]})]})}),(0,d.jsx)(h.aF,{isOpen:aV,title:"Tailscale Funnel",onClose:()=>{aN||(aW(!1),aS(""),aG(null))},children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[null===aL&&(0,d.jsxs)("p",{className:"text-sm text-text-muted flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Checking..."]}),!1===aL&&!aN&&(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Tailscale is not installed. Install it to enable Funnel."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:bh,fullWidth:!0,children:"Install Tailscale"}),(0,d.jsx)(h.$n,{onClick:()=>aW(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),aN&&(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Installing Tailscale..."]}),aP.length>0&&(0,d.jsx)("div",{ref:aZ,className:"bg-black/5 dark:bg-white/5 rounded p-2 max-h-40 overflow-y-auto font-mono text-xs text-text-muted",children:aP.map((a,b)=>(0,d.jsx)("div",{children:a},b))})]}),!0===aL&&!aN&&(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"check_circle"}),"Tailscale installed"]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:()=>bl(),fullWidth:!0,children:"Connect"}),(0,d.jsx)(h.$n,{onClick:()=>aW(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),aF&&(0,d.jsx)(l,{status:aF})]})}),(0,d.jsx)(h.aF,{isOpen:aX,title:"Disable Tailscale",onClose:()=>!aB&&aY(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Tailscale Funnel will be stopped. Remote access via Tailscale URL will stop working."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:bn,fullWidth:!0,disabled:aB,variant:"danger",children:aB?"Disabling...":"Disable"}),(0,d.jsx)(h.$n,{onClick:()=>aY(!1),variant:"ghost",fullWidth:!0,disabled:aB,children:"Cancel"})]})]})}),(0,d.jsx)(h.uo,{isOpen:!!P,onClose:()=>Q(null),onConfirm:P?.onConfirm,title:P?.title||"Confirm",message:P?.message,variant:"danger"})]})}t.propTypes={used:g().number,limit:g().number.isRequired},u.propTypes={apiKey:g().object.isRequired,activeProviders:g().array.isRequired,modelAliases:g().object.isRequired,onClose:g().func.isRequired,onSave:g().func.isRequired},v.propTypes={machineId:g().string.isRequired}},67960:(a,b,c)=>{"use strict";c.d(b,{Cp:()=>g,Hx:()=>f,Iv:()=>k,Nv:()=>m,RL:()=>j,ev:()=>l,fl:()=>h,hT:()=>d,oX:()=>e,t6:()=>i});let d=["zh-CN","zh-TW"],e=[{icon:"public",title:"Access Anywhere",desc:"Use your API from any network"},{icon:"group",title:"Share Endpoint",desc:"Share URL with team members"},{icon:"code",title:"Use in Cursor/Cline",desc:"Connect AI tools remotely"},{icon:"lock",title:"Encrypted",desc:"End-to-end TLS via Cloudflare"}],f=2e3,g=3e5,h=5e3,i=5,j=1e4,k=5e3,l=[{id:"lite",label:"Lite",desc:"Drop filler, keep grammar"},{id:"full",label:"Full",desc:"Drop articles, fragments OK"},{id:"ultra",label:"Ultra",desc:"Telegraphic, max compression"},{id:"wenyan-lite",label:"文 Lite",desc:"Classical Chinese, light compression",wenyan:!0},{id:"wenyan",label:"文 Full",desc:"Maximum 文言文, 80-90% reduction",wenyan:!0},{id:"wenyan-ultra",label:"文 Ultra",desc:"Extreme classical compression",wenyan:!0}],m=[{id:"lite",label:"Lite",desc:"Build asked, name lazier option"},{id:"full",label:"Full",desc:"Ladder enforced: stdlib/native first"},{id:"ultra",label:"Ultra",desc:"YAGNI extremist, deletion first"}]},87250:(a,b,c)=>{"use strict";c.d(b,{D:()=>e});var d=c(54603);async function e(){return await (0,d.Xj)()}},89309:(a,b,c)=>{Promise.resolve().then(c.bind(c,64748))}};
|
|
3
|
+
This key will stop working immediately but can be resumed later.`,onConfirm:async()=>{Q(null),bs(a.id,b)}}):bs(a.id,b)},title:a.isActive?"Pause key":"Resume key"}),(0,d.jsx)("button",{onClick:()=>O(a),className:"p-2 hover:bg-primary/10 rounded text-text-muted hover:text-primary opacity-100 sm:opacity-0 sm:group-hover:opacity-100 transition-all",title:"Edit key",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"edit"})}),(0,d.jsx)("button",{onClick:()=>br(a.id),className:"p-2 hover:bg-red-500/10 rounded text-red-500 opacity-100 sm:opacity-0 sm:group-hover:opacity-100 transition-all",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"})})]})]},a.id)})})]}),N&&(0,d.jsx)(u,{apiKey:N,activeProviders:F,modelAliases:H,onClose:()=>O(null),onSave:a=>bt(N.id,a)},N.id),(0,d.jsx)(h.aF,{isOpen:o,title:"Create API Key",onClose:()=>{p(!1),w(""),y(""),A(""),C([]),E(!1),K(null)},children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)(h.pd,{label:"Key Name",value:s,onChange:a=>w(a.target.value),placeholder:"Production Key"}),(0,d.jsx)(h.pd,{label:"Expires at (optional)",type:"datetime-local",value:x,onChange:a=>y(a.target.value),hint:"Leave blank for no expiry."}),(0,d.jsx)(h.pd,{label:"Token limit (optional)",type:"number",min:"1",step:"1",value:z,onChange:a=>A(a.target.value),placeholder:"Unlimited",hint:"Total input and output tokens. Strictly enforced."}),(0,d.jsxs)("div",{className:"-mt-2 flex flex-wrap gap-1.5","aria-label":"Token limit presets",children:[r.map(a=>{let b=z===a.value;return(0,d.jsx)("button",{type:"button",onClick:()=>A(a.value),"aria-pressed":b,className:`rounded-full border px-2.5 py-1 text-xs font-medium transition-colors ${b?"border-primary bg-primary text-white":"border-border bg-surface-2 text-text-muted hover:border-primary/50 hover:text-primary"}`,children:a.label},a.value)}),(0,d.jsx)("button",{type:"button",onClick:()=>A(""),"aria-pressed":!z,className:`rounded-full border px-2.5 py-1 text-xs font-medium transition-colors ${!z?"border-primary bg-primary text-white":"border-border bg-surface-2 text-text-muted hover:border-primary/50 hover:text-primary"}`,children:"Unlimited"})]}),(0,d.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,d.jsx)("label",{className:"text-sm font-medium text-text-main",children:"Allowed models (optional)"}),0===B.length?(0,d.jsxs)("div",{className:"rounded-lg border border-dashed border-black/10 bg-black/[0.01] px-3 py-4 text-center dark:border-white/10 dark:bg-white/[0.01]",children:[(0,d.jsx)("span",{className:"material-symbols-outlined mb-1 text-xl text-text-muted",children:"layers"}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"All models are allowed"})]}):(0,d.jsx)("div",{className:"flex max-h-28 flex-wrap gap-1 overflow-y-auto rounded-lg border border-border bg-surface-2 p-2",children:B.map(a=>(0,d.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-md bg-primary/10 px-2 py-1 text-xs text-primary",children:[(0,d.jsx)("span",{className:"max-w-48 truncate",children:a}),(0,d.jsx)("button",{type:"button",onClick:()=>C(b=>b.filter(b=>b!==a)),"aria-label":`Remove ${a}`,className:"material-symbols-outlined text-[14px] hover:text-red-500",children:"close"})]},a))}),(0,d.jsxs)("button",{type:"button",onClick:()=>E(!0),className:"flex w-full items-center justify-center gap-1 rounded-lg border border-dashed border-black/10 py-2 text-xs font-medium text-primary transition-colors hover:border-primary/50 dark:border-white/10",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"add"}),B.length?"Add another model":"Choose models"]}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"Leave empty to allow every model."})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium mb-2",children:"Access Scope"}),(0,d.jsx)(q,{value:J,onChange:K})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:bp,fullWidth:!0,disabled:!s.trim(),children:"Create"}),(0,d.jsx)(h.$n,{onClick:()=>{p(!1),w(""),y(""),A(""),C([]),E(!1),K(null)},variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),(0,d.jsx)(h.aF,{isOpen:!!R,title:`Edit Scope — ${R?.name||""}`,onClose:()=>{S(null),U(null)},children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)(q,{value:T,onChange:U}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:bq,fullWidth:!0,children:"Save"}),(0,d.jsx)(h.$n,{onClick:()=>{S(null),U(null)},variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),D&&(0,d.jsx)(h.rq,{isOpen:D,onClose:()=>E(!1),onSelect:a=>C(b=>b.includes(a.value)?b:[...b,a.value]),onDeselect:a=>C(b=>b.filter(b=>b!==a.value)),activeProviders:F,modelAliases:H,addedModelValues:B,closeOnSelect:!1,title:"Choose models for this API key"}),(0,d.jsx)(h.aF,{isOpen:!!L,title:"API Key Created",onClose:()=>M(null),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg p-4",children:[(0,d.jsx)("p",{className:"text-sm text-yellow-800 dark:text-yellow-200 mb-2 font-medium",children:"Save this key now!"}),(0,d.jsx)("p",{className:"text-sm text-yellow-700 dark:text-yellow-300",children:"This is the only time you will see this key. Store it securely."})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.pd,{value:L||"",readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,d.jsx)(h.$n,{variant:"secondary",icon:"created_key"===a6?"check":"content_copy",onClick:()=>a7(L,"created_key"),children:"created_key"===a6?"Copied!":"Copy"})]}),(0,d.jsx)(h.$n,{onClick:()=>M(null),fullWidth:!0,children:"Done"})]})}),(0,d.jsx)(h.aF,{isOpen:ar,title:"Enable Tunnel",onClose:()=>as(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("div",{className:"bg-surface-2 border border-border-subtle rounded-lg p-4",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary",children:"cloud_upload"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm text-text-main font-medium mb-1",children:"Cloudflare Tunnel"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Expose your local 9Router to the internet. No port forwarding, no static IP needed. Share endpoint URL with your team or use it in Cursor, Cline, and other AI tools from anywhere."})]})]})}),(0,d.jsx)("div",{className:"grid grid-cols-2 gap-3",children:j.oX.map(a=>(0,d.jsxs)("div",{className:"flex flex-col items-center text-center p-3 rounded-lg bg-sidebar/50",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-xl text-primary mb-1",children:a.icon}),(0,d.jsx)("p",{className:"text-xs font-semibold",children:a.title}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:a.desc})]},a.title))}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"Requires outbound port 7844 (TCP/UDP). Connection may take 10-30s."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:be,fullWidth:!0,children:"Start Tunnel"}),(0,d.jsx)(h.$n,{onClick:()=>as(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),(0,d.jsx)(h.aF,{isOpen:at,title:"Disable Tunnel",onClose:()=>!al&&au(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"The Cloudflare tunnel will be disconnected. Remote access via tunnel URL will stop working."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:bf,fullWidth:!0,disabled:al,variant:"danger",children:al?"Disabling...":"Disable"}),(0,d.jsx)(h.$n,{onClick:()=>au(!1),variant:"ghost",fullWidth:!0,disabled:al,children:"Cancel"})]})]})}),(0,d.jsx)(h.aF,{isOpen:aV,title:"Tailscale Funnel",onClose:()=>{aN||(aW(!1),aS(""),aG(null))},children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[null===aL&&(0,d.jsxs)("p",{className:"text-sm text-text-muted flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Checking..."]}),!1===aL&&!aN&&(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Tailscale is not installed. Install it to enable Funnel."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:bh,fullWidth:!0,children:"Install Tailscale"}),(0,d.jsx)(h.$n,{onClick:()=>aW(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),aN&&(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Installing Tailscale..."]}),aP.length>0&&(0,d.jsx)("div",{ref:aZ,className:"bg-black/5 dark:bg-white/5 rounded p-2 max-h-40 overflow-y-auto font-mono text-xs text-text-muted",children:aP.map((a,b)=>(0,d.jsx)("div",{children:a},b))})]}),!0===aL&&!aN&&(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"check_circle"}),"Tailscale installed"]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:()=>bl(),fullWidth:!0,children:"Connect"}),(0,d.jsx)(h.$n,{onClick:()=>aW(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),aF&&(0,d.jsx)(l,{status:aF})]})}),(0,d.jsx)(h.aF,{isOpen:aX,title:"Disable Tailscale",onClose:()=>!aB&&aY(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Tailscale Funnel will be stopped. Remote access via Tailscale URL will stop working."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:bn,fullWidth:!0,disabled:aB,variant:"danger",children:aB?"Disabling...":"Disable"}),(0,d.jsx)(h.$n,{onClick:()=>aY(!1),variant:"ghost",fullWidth:!0,disabled:aB,children:"Cancel"})]})]})}),(0,d.jsx)(h.uo,{isOpen:!!P,onClose:()=>Q(null),onConfirm:P?.onConfirm,title:P?.title||"Confirm",message:P?.message,variant:"danger"})]})}t.propTypes={used:g().number,limit:g().number.isRequired},u.propTypes={apiKey:g().object.isRequired,activeProviders:g().array.isRequired,modelAliases:g().object.isRequired,onClose:g().func.isRequired,onSave:g().func.isRequired},v.propTypes={machineId:g().string.isRequired}},67960:(a,b,c)=>{"use strict";c.d(b,{Cp:()=>g,Hx:()=>f,Iv:()=>m,N9:()=>l,Nv:()=>o,RL:()=>k,YR:()=>i,ev:()=>n,fl:()=>h,hT:()=>d,oX:()=>e,t6:()=>j});let d=["zh-CN","zh-TW"],e=[{icon:"public",title:"Access Anywhere",desc:"Use your API from any network"},{icon:"group",title:"Share Endpoint",desc:"Share URL with team members"},{icon:"code",title:"Use in Cursor/Cline",desc:"Connect AI tools remotely"},{icon:"lock",title:"Encrypted",desc:"End-to-end TLS via Cloudflare"}],f=2e3,g=3e5,h=5e3,i=3e4,j=5,k=1e4,l=6e4,m=5e3,n=[{id:"lite",label:"Lite",desc:"Drop filler, keep grammar"},{id:"full",label:"Full",desc:"Drop articles, fragments OK"},{id:"ultra",label:"Ultra",desc:"Telegraphic, max compression"},{id:"wenyan-lite",label:"文 Lite",desc:"Classical Chinese, light compression",wenyan:!0},{id:"wenyan",label:"文 Full",desc:"Maximum 文言文, 80-90% reduction",wenyan:!0},{id:"wenyan-ultra",label:"文 Ultra",desc:"Extreme classical compression",wenyan:!0}],o=[{id:"lite",label:"Lite",desc:"Build asked, name lazier option"},{id:"full",label:"Full",desc:"Ladder enforced: stdlib/native first"},{id:"ultra",label:"Ultra",desc:"YAGNI extremist, deletion first"}]},87250:(a,b,c)=>{"use strict";c.d(b,{D:()=>e});var d=c(54603);async function e(){return await (0,d.Xj)()}},89309:(a,b,c)=>{Promise.resolve().then(c.bind(c,64748))}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=1531,exports.ids=[1531,3912,6769],exports.modules={89843:(a,b,c)=>{c.d(b,{proxyAwareFetch:()=>
|
|
1
|
+
"use strict";exports.id=1531,exports.ids=[1531,3912,6769],exports.modules={12828:(a,b,c)=>{function d(a,b){}c.d(b,{T:()=>e,s:()=>d});let e=!1},89843:(a,b,c)=>{c.d(b,{proxyAwareFetch:()=>y});var d=c(27910),e=c(60290),f=c(12828);let g=globalThis.fetch,h=new Map;function i(a,b){let c=process.env[a];if(null==c||""===c)return b;let d=parseInt(c,10);return Number.isFinite(d)&&d>0?d:b}let j=i("FETCH_KEEP_ALIVE_TIMEOUT_MS",3e4),k=i("FETCH_KEEP_ALIVE_MAX_TIMEOUT_MS",3e4),l=null;async function m(){if(l)return l;try{let{Agent:a}=await c.e(7774).then(c.t.bind(c,47774,19));l=new a({keepAliveTimeout:j,keepAliveMaxTimeout:k})}catch(a){(0,f.s)("FETCH",`capped direct dispatcher unavailable, using default: ${a?.message||a}`),l=null}return l}let n=new Map,o=["cloudcode-pa.googleapis.com","daily-cloudcode-pa.googleapis.com","api.individual.githubcopilot.com","q.us-east-1.amazonaws.com","codewhisperer.us-east-1.amazonaws.com","api2.cursor.sh"],p=["8.8.8.8","8.8.4.4"];function q(a){return null==a?"":String(a).trim()}function r(a,b){let c=q(process.env[a]);if(!/^[1-9]\d*$/.test(c))return b;let d=Number(c);return Number.isSafeInteger(d)?d:b}async function s(a){let b=n.get(a);if(b&&Date.now()<b.expiry)return b.ip;try{let b=await Promise.resolve().then(c.t.bind(c,14985,19)),{promisify:d}=await Promise.resolve().then(c.t.bind(c,28354,19)),f=new b.Resolver;f.setServers(p);let g=d(f.resolve4.bind(f)),h=await g(a);return n.set(a,{ip:h[0],expiry:Date.now()+e.v1.dnsCacheTtlMs}),h[0]}catch(b){return console.warn(`[ProxyFetch] DNS resolve failed for ${a}:`,b.message),null}}function t(a){let b;try{b=new URL(a).hostname.toLowerCase()}catch{return!1}let c=b.startsWith("[")&&b.endsWith("]")?b.slice(1,-1):b;if("localhost"===c||c.endsWith(".localhost")||"::1"===c||"0:0:0:0:0:0:0:1"===c)return!0;let d=/^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/i.exec(c);if(d)return(parseInt(d[1],16)>>8&255)==127;let e=/^::ffff:(\d{1,3}(?:\.\d{1,3}){3})$/i.exec(c),f=e?e[1]:c;return/^127(?:\.\d{1,3}){3}$/.test(f)}function u(a,b){let c,d=q(b);if(!d)return!1;try{c=new URL(a).hostname.toLowerCase()}catch{return!1}return d.split(",").map(a=>a.trim().toLowerCase()).filter(Boolean).some(a=>"*"===a||(a.startsWith(".")?c.endsWith(a)||c===a.slice(1):c===a||c.endsWith(`.${a}`)))}function v(a){let b=q(a);if(!b)return null;try{return new URL(b),b}catch{return`http://${b}`}}async function w(a){let b=v(a);if(!b)return null;if(!h.has(b)){h.size>=e.v1.proxyDispatchersMaxSize&&h.delete(h.keys().next().value);let{ProxyAgent:a}=await c.e(7774).then(c.t.bind(c,47774,19)),d=r("PROXY_CONNECT_TIMEOUT_MS",9e4),f=r("PROXY_HEADERS_TIMEOUT_MS",3e5);h.set(b,new a({uri:b,connectTimeout:d,headersTimeout:f,bodyTimeout:0}))}return h.get(b)}async function x(a,b,e){let f=await Promise.resolve().then(c.t.bind(c,55591,19)),g=await Promise.resolve().then(c.t.bind(c,91645,19)),h=f.default??f,i=g.default??g;return new Promise((c,f)=>{let g=new i.Socket;g.connect(443,b,()=>{let b={socket:g,servername:a.hostname,path:a.pathname+a.search,method:e.method||"POST",headers:{...e.headers,Host:a.hostname}},i=h.request(b,a=>{let b={ok:a.statusCode>=200&&a.statusCode<300,status:a.statusCode,statusText:a.statusMessage,headers:new Map(Object.entries(a.headers)),body:d.Readable.toWeb(a),text:async()=>{let b=[];for await(let c of a)b.push(c);return Buffer.concat(b).toString()},json:async()=>JSON.parse(await b.text())};c(b)});i.on("error",f),e.body&&i.write("string"==typeof e.body?e.body:JSON.stringify(e.body)),i.end()}),g.on("error",f)})}async function y(a,b={},c=null){let d="string"==typeof a?a:a.toString(),e=q(c?.vercelRelayUrl);if(e){let a=new URL(d),c={...b.headers,"x-relay-target":`${a.protocol}//${a.host}`,"x-relay-path":`${a.pathname}${a.search}`};return g(e,{...b,headers:c})}let h=function(a,b){if(b?.enabled!==!0&&b?.connectionProxyEnabled!==!0||t(a))return null;let c=q(b?.url??b?.connectionProxyUrl);if(!c)return null;let d=q(b?.noProxy??b?.connectionNoProxy);return d&&u(a,d)?null:v(c)}(d,c),i=h?null:v(function(a){let b;if(t(a)||u(a,process.env.NO_PROXY||process.env.no_proxy))return null;try{b=new URL(a).protocol}catch{return null}return"https:"===b?process.env.HTTPS_PROXY||process.env.https_proxy||process.env.ALL_PROXY||process.env.all_proxy:process.env.HTTP_PROXY||process.env.http_proxy||process.env.ALL_PROXY||process.env.all_proxy}(d)),j=h||i;if(function(a){try{let b=new URL(a).hostname;return o.some(a=>b.includes(a))}catch{return!1}}(d)){if(j)try{let c=await w(j);return await g(a,{...b,dispatcher:c})}catch(a){if(c?.strictProxy===!0)throw Error(`[ProxyFetch] Proxy required but failed (strictProxy=true): ${a.message}`);console.warn(`[ProxyFetch] Proxy failed, falling back to direct bypass: ${a.message}`)}try{let a=new URL(d),c=await s(a.hostname);if(c)return await x(a,c,b)}catch(a){console.warn(`[ProxyFetch] MITM bypass failed: ${a.message}`)}}if(j)try{let c=await w(j);return await g(a,{...b,dispatcher:c})}catch(d){if(c?.strictProxy===!0)throw Error(`[ProxyFetch] Proxy required but failed (strictProxy=true): ${d.message}`);return console.warn(`[ProxyFetch] Proxy failed, falling back to direct: ${d.message}`),g(a,b)}let k=await m(),l=k?{...b,dispatcher:k}:{...b};try{return await g(a,l)}catch(e){let b;if(!k||"UND_ERR_SOCKET"!==(b=e?.cause?.code||e?.code)&&"ECONNRESET"!==b&&"EPIPE"!==b)throw e;(0,f.s)("FETCH",`stale keep-alive socket for ${d}, retrying once with Connection: close`);let c={...l.headers||{},Connection:"close"};return await g(a,{...l,headers:c})}}async function z(a,b={}){return y(a,b,null)}globalThis.fetch!==z&&(globalThis.fetch=z)},91531:(a,b,c)=>{c.r(b),c.d(b,{QoderService:()=>j,resolveProfile:()=>d.mC});var d=c(18851),e=c(89843),f=c(55511),g=c.n(f);async function h(a){return a}async function i(a,b,c={}){let d=new AbortController,e=setTimeout(()=>d.abort("timeout"),15e3);try{return await a(b,{...c,signal:d.signal},null)}finally{clearTimeout(e)}}class j{constructor(a={}){this.profile=(0,d.mC)(a.profile??null),this.machineTokenResolver=a.machineTokenResolver||h,this.fetchImpl=a.fetchImpl||e.proxyAwareFetch}generatePkcePair(){let a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~",b=43+Math.floor(86*Math.random()),c=g().randomBytes(b),d="";for(let e=0;e<b;e++)d+=a[c[e]%a.length];let e=g().createHash("sha256").update(d).digest().toString("base64").replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_");return{verifier:d,challenge:e}}async initiateDeviceFlow(){let{verifier:a,challenge:b}=this.generatePkcePair(),c=g().randomUUID(),d=g().randomUUID(),e=await this.machineTokenResolver(d)||d,f=new URLSearchParams;f.set("challenge",b),f.set("challenge_method","S256"),f.set("nonce",c),f.set("machine_id",d);let h=this.profile.deviceClientId||null,i=this.profile.deviceRedirectUri||null;if(h&&f.set("client_id",h),i&&f.set("redirect_uri",i),"cn-work"===this.profile.id&&(!h||!i))throw Error("qoder cn-work device flow requires deviceClientId and deviceRedirectUri on profile");return{verificationUriComplete:`${this.profile.loginUrl}?${f.toString()}`,codeVerifier:a,nonce:c,machineId:d,machineToken:e}}async pollDeviceToken({nonce:a,codeVerifier:b}){let c;if(!a||!b)throw Error("pollDeviceToken: missing nonce or code verifier");let d=`${this.profile.deviceTokenUrl}?nonce=${encodeURIComponent(a)}&verifier=${encodeURIComponent(b)}&challenge_method=S256`,e=await i(this.fetchImpl,d,{method:"GET",headers:{Accept:"application/json","User-Agent":"Go-http-client/2.0"}});if(202===e.status||404===e.status)return{status:"pending"};let f=await e.text();if(!e.ok){let a=`Qoder device token poll failed: HTTP ${e.status}`;try{let b=JSON.parse(f);b.message&&(a=`Qoder device token poll failed: ${b.message}`)}catch{}throw Error(a)}try{c=JSON.parse(f)}catch(a){throw Error(`Qoder device token poll: invalid JSON response (${a.message})`)}if(!c.token)throw Error("Qoder device token poll returned 200 but no token");let g=j.parseExpiry(c.expires_at,c.expires_in);return{status:"ok",accessToken:c.token,refreshToken:c.refresh_token||"",userId:c.user_id||"",expireTime:g,rawResponse:c}}async fetchUserInfo(a){try{let b=await i(this.fetchImpl,this.profile.userInfoUrl,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","User-Agent":"Go-http-client/2.0"}});if(!b.ok)return{name:"",email:""};let c=await b.json();return{name:(c.name||c.username||"").trim(),email:(c.email||"").trim(),organizationId:(c.organization_id||"").trim()}}catch{return{name:"",email:""}}}async refreshDeviceToken(a){if(!a)throw Error("refreshDeviceToken: missing refresh token");let b=this.profile.refreshTokenUrl;if(!b)throw Error("refreshDeviceToken: profile has no refreshTokenUrl");let c=await i(this.fetchImpl,b,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json","User-Agent":"Go-http-client/2.0"},body:JSON.stringify({refresh_token:a})}),d=await c.text(),e=null;try{e=d?JSON.parse(d):null}catch{e=null}if(!c.ok){let a=e&&(e.message||e.error_description||e.error)||`HTTP ${c.status}`,b=Error(`Qoder device token refresh failed: ${a}`);throw b.status=c.status,b.body=e,b}let f=e&&(e.device_token||e.token||e.access_token)||null,g=e&&(e.refresh_token||e.refreshToken)||a;if(!f||"string"!=typeof f)throw Error("Qoder device token refresh: missing device_token/token");let h=j.parseExpiry(e?.expires_at||e?.expiresAt,e?.expires_in??e?.expiresIn);return{accessToken:f,refreshToken:g,expiresIn:Math.max(60,Math.floor((h-Date.now())/1e3)),expireTime:h,rawResponse:e}}static parseExpiry(a,b){if("number"==typeof a&&Number.isFinite(a)&&a>0)return a;let c="string"==typeof a?a.trim():"";if(c){if(/^\d+$/.test(c)){let a=Number.parseInt(c,10);if(Number.isFinite(a)&&a>0)return a}let a=Date.parse(c);if(!Number.isNaN(a))return a}return"number"==typeof b&&Number.isFinite(b)&&b>=0?Date.now()+1e3*b:Date.now()+2592e6}}}};
|