tokenhop 1.0.0 → 1.0.1
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 +7 -7
- package/app/.next-cli-build/build-manifest.json +3 -3
- package/app/.next-cli-build/prerender-manifest.json +3 -3
- package/app/.next-cli-build/react-loadable-manifest.json +43 -43
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/[...missing]/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/[...missing]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/[...missing]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
- 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 +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
- 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 +1 -1
- 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/endpoint/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +1 -1
- 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 +1 -1
- 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 +1 -1
- 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/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
- 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 +1 -1
- 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 +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
- 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 +2 -2
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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/settings/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
- 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 +1 -1
- 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 +1 -1
- 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/ui-kit/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/ui-kit/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/ui-kit/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +1 -1
- 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.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/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found/page.js +1 -1
- 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 +4 -4
- package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +4 -4
- 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.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +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.nft.json +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.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tool-settings/[toolId]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tool-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +4 -4
- 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.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-settings/route.js +2 -2
- 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 +1 -1
- 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 +3 -3
- 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 +1 -1
- 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 +1 -1
- 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 +3 -3
- 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 +1 -1
- 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 +2 -2
- 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/combos/[id]/headroom/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/[id]/headroom/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/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/gateway/status/route.js.nft.json +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.nft.json +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.nft.json +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.nft.json +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/home/live-routes/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/home/quota/route.js +1 -1
- package/app/.next-cli-build/server/app/api/home/quota/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/home/summary/route.js.nft.json +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/keys/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/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.nft.json +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.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/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.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.nft.json +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.nft.json +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.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +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.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/api-key/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-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]/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.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.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.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
- 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.nft.json +1 -1
- 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.nft.json +1 -1
- 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.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/config/export/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/config/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/config/import/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/environment/route.js.nft.json +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.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/shell/savings-milestone/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/shell/summary/route.js +1 -1
- package/app/.next-cli-build/server/app/api/shell/summary/route.js.nft.json +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.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 +1 -1
- 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.nft.json +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.nft.json +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.nft.json +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.nft.json +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.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/last-activity/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/savings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +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/embeddings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/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 +2 -2
- 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/shutdown/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/callback/page.js +1 -1
- 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 +4 -4
- package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
- 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 +4 -4
- package/app/.next-cli-build/server/app/dashboard/basic-chat.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/combos.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +10 -10
- 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/media-providers.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/media-providers.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/__PAGE__.segment.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/media-providers.segments/_full.segment.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/media-providers.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/mitm.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +10 -10
- 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 +9 -9
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +9 -9
- 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 +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +9 -9
- 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 +2 -2
- package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +9 -9
- 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 +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +1 -1
- 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 +4 -4
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
- 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 +4 -4
- package/app/.next-cli-build/server/app/dashboard/settings.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/settings.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings/__PAGE__.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/settings.segments/_full.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/settings.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/skills.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +10 -10
- 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 +2 -2
- package/app/.next-cli-build/server/app/dashboard/translator.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/ui-kit.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/ui-kit.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/ui-kit.segments/!KGRhc2hib2FyZCk/dashboard/ui-kit/__PAGE__.segment.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/ui-kit.segments/_full.segment.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/ui-kit.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 +10 -10
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +10 -10
- 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 +10 -10
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/index.html +1 -1
- package/app/.next-cli-build/server/app/index.rsc +4 -4
- package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/landing/page.js +1 -1
- 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 +5 -5
- package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/login/page.js +1 -1
- 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/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/page.js +1 -1
- 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/skills/[...slug]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app-paths-manifest.json +7 -7
- package/app/.next-cli-build/server/chunks/1152.js +1 -1
- package/app/.next-cli-build/server/chunks/1336.js +1 -1
- package/app/.next-cli-build/server/chunks/1432.js +1 -1
- package/app/.next-cli-build/server/chunks/1533.js +1 -1
- package/app/.next-cli-build/server/chunks/1764.js +1 -1
- package/app/.next-cli-build/server/chunks/1854.js +1 -0
- package/app/.next-cli-build/server/chunks/2380.js +7 -7
- package/app/.next-cli-build/server/chunks/24.js +1 -1
- package/app/.next-cli-build/server/chunks/2460.js +1 -1
- package/app/.next-cli-build/server/chunks/2592.js +1 -1
- package/app/.next-cli-build/server/chunks/318.js +10 -9
- package/app/.next-cli-build/server/chunks/3558.js +1 -1
- package/app/.next-cli-build/server/chunks/3593.js +1 -1
- package/app/.next-cli-build/server/chunks/3676.js +1 -1
- package/app/.next-cli-build/server/chunks/368.js +1 -0
- package/app/.next-cli-build/server/chunks/3919.js +1 -1
- package/app/.next-cli-build/server/chunks/3943.js +1 -1
- package/app/.next-cli-build/server/chunks/4037.js +1 -1
- package/app/.next-cli-build/server/chunks/4123.js +1 -1
- package/app/.next-cli-build/server/chunks/4125.js +1 -1
- package/app/.next-cli-build/server/chunks/4199.js +1 -1
- package/app/.next-cli-build/server/chunks/4334.js +1 -1
- package/app/.next-cli-build/server/chunks/4406.js +2 -2
- package/app/.next-cli-build/server/chunks/4521.js +1 -1
- package/app/.next-cli-build/server/chunks/4730.js +1 -1
- package/app/.next-cli-build/server/chunks/4780.js +1 -1
- package/app/.next-cli-build/server/chunks/4903.js +1 -0
- package/app/.next-cli-build/server/chunks/5055.js +1 -0
- package/app/.next-cli-build/server/chunks/5260.js +1 -0
- package/app/.next-cli-build/server/chunks/5335.js +1 -0
- package/app/.next-cli-build/server/chunks/5765.js +1 -0
- package/app/.next-cli-build/server/chunks/5827.js +1 -0
- package/app/.next-cli-build/server/chunks/6000.js +1 -0
- package/app/.next-cli-build/server/chunks/620.js +1 -0
- package/app/.next-cli-build/server/chunks/6252.js +1 -1
- package/app/.next-cli-build/server/chunks/6328.js +1 -0
- package/app/.next-cli-build/server/chunks/6403.js +1 -0
- package/app/.next-cli-build/server/chunks/6496.js +1 -1
- package/app/.next-cli-build/server/chunks/6565.js +1 -0
- package/app/.next-cli-build/server/chunks/6734.js +1 -1
- package/app/.next-cli-build/server/chunks/7211.js +1 -1
- package/app/.next-cli-build/server/chunks/7616.js +1 -1
- package/app/.next-cli-build/server/chunks/7716.js +1 -1
- package/app/.next-cli-build/server/chunks/7819.js +1 -1
- package/app/.next-cli-build/server/chunks/7828.js +1 -1
- package/app/.next-cli-build/server/chunks/7901.js +1 -1
- package/app/.next-cli-build/server/chunks/8171.js +1 -1
- package/app/.next-cli-build/server/chunks/8255.js +1 -1
- package/app/.next-cli-build/server/chunks/8372.js +1 -1
- package/app/.next-cli-build/server/chunks/8416.js +1 -1
- package/app/.next-cli-build/server/chunks/8895.js +12 -12
- package/app/.next-cli-build/server/chunks/8988.js +1 -0
- package/app/.next-cli-build/server/chunks/9219.js +1 -0
- package/app/.next-cli-build/server/chunks/9243.js +1 -0
- package/app/.next-cli-build/server/chunks/9326.js +1 -0
- package/app/.next-cli-build/server/chunks/9343.js +1 -1
- package/app/.next-cli-build/server/chunks/9489.js +3 -0
- package/app/.next-cli-build/server/chunks/9578.js +1 -1
- package/app/.next-cli-build/server/chunks/9594.js +1 -0
- package/app/.next-cli-build/server/chunks/965.js +1 -1
- package/app/.next-cli-build/server/chunks/9899.js +1 -1
- package/app/.next-cli-build/server/instrumentation.js +1 -1
- package/app/.next-cli-build/server/instrumentation.js.nft.json +1 -1
- package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/app/.next-cli-build/server/middleware-react-loadable-manifest.js +1 -1
- package/app/.next-cli-build/server/middleware.js.nft.json +1 -1
- package/app/.next-cli-build/server/pages/404.html +1 -1
- package/app/.next-cli-build/server/pages/500.html +1 -1
- package/app/.next-cli-build/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/chunks/{198-145d0ed2ec3c54f5.js → 198-0c7f5eadfd257db1.js} +1 -1
- package/app/.next-cli-build/static/chunks/{3670-e7a22341025498f8.js → 3670-90f5cd325f460eb5.js} +1 -1
- package/app/.next-cli-build/static/chunks/5014-a5d960f4c6bc6297.js +1 -0
- package/app/.next-cli-build/static/chunks/{6174.18e2c57e892d721a.js → 6174.f1da2912aec81c15.js} +1 -1
- package/app/.next-cli-build/static/chunks/6448-71a8c2ac8d9ecc09.js +1 -0
- package/app/.next-cli-build/static/chunks/7899-83edd7bbf1a98c4a.js +1 -0
- package/app/.next-cli-build/static/chunks/8105-bdd81b911fed8537.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/{page-8147ae8fa9c04381.js → page-42bfc760fbea3b96.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/console-log/{page-9cbf62f78701882a.js → page-084fc21b1dbae00d.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-5f91e148400a241b.js → page-59ee0b412f972940.js} +3 -3
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/new/{page-dac4ab98fc595054.js → page-de53f51d191eec46.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-463f9fa33be9426a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/translator/{page-06f4e52ee3b63f82.js → page-243d3da0a2c6cbe9.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/ui-kit/{page-6c982cc50b6af101.js → page-998f8c5a36dac961.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-923f864ec0be0fc8.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/{layout-dd9d1e49b2f69197.js → layout-96ebd2b46f1f8d39.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/landing/{page-02b7bfebd65c41f1.js → page-bcaea5febe1c68c0.js} +1 -1
- package/app/.next-cli-build/static/chunks/webpack-8693ccf029e9af63.js +1 -0
- package/app/custom-server.js +0 -37
- package/app/package.json +1 -1
- package/app/src/lib/db/adapters/sqljsAdapter.js +39 -4
- package/app/src/lib/oauth/services/xai.js +19 -12
- package/app/src/shared/services/quotaAutoPing.js +43 -8
- package/app/src/shared/services/quotaSnapshotPoller.js +2 -1
- package/app/src/sse/services/backgroundTokenRefresh.js +13 -1
- package/package.json +1 -1
- package/src/cli/menus/combos.js +3 -1
- package/app/.next-cli-build/server/chunks/1026.js +0 -1
- package/app/.next-cli-build/server/chunks/2384.js +0 -1
- package/app/.next-cli-build/server/chunks/3093.js +0 -1
- package/app/.next-cli-build/server/chunks/331.js +0 -1
- package/app/.next-cli-build/server/chunks/3414.js +0 -1
- package/app/.next-cli-build/server/chunks/3586.js +0 -1
- package/app/.next-cli-build/server/chunks/4278.js +0 -1
- package/app/.next-cli-build/server/chunks/6158.js +0 -1
- package/app/.next-cli-build/server/chunks/6354.js +0 -1
- package/app/.next-cli-build/server/chunks/6769.js +0 -1
- package/app/.next-cli-build/server/chunks/7261.js +0 -1
- package/app/.next-cli-build/server/chunks/8635.js +0 -3
- package/app/.next-cli-build/server/chunks/994.js +0 -1
- package/app/.next-cli-build/static/chunks/5014-a441cde708542153.js +0 -1
- package/app/.next-cli-build/static/chunks/6448-4eabf683083596e6.js +0 -1
- package/app/.next-cli-build/static/chunks/7899-e6a70cb9d3684f7f.js +0 -1
- package/app/.next-cli-build/static/chunks/8105-5c7e7c73b4bd532d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-9fadf2c38665c20c.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-7571538830147099.js +0 -1
- package/app/.next-cli-build/static/chunks/webpack-187fa25c98ba99f3.js +0 -1
- /package/app/.next-cli-build/static/{3Qm_WgU2xvFJ9U_G7SKhT → J4xdfHpBUAMOCO5dsemSj}/_buildManifest.js +0 -0
- /package/app/.next-cli-build/static/{3Qm_WgU2xvFJ9U_G7SKhT → J4xdfHpBUAMOCO5dsemSj}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3528],{1620:(e,t,r)=>{"use strict";r.d(t,{D:()=>l});var n=r(12115),i=r(90085);function a(e){let t=window.matchMedia("(prefers-color-scheme: dark)");return t.addEventListener("change",e),()=>t.removeEventListener("change",e)}function o(){return window.matchMedia("(prefers-color-scheme: dark)").matches}function s(){return!1}function l(){let{theme:e,setTheme:t,toggleTheme:r,initTheme:l}=(0,i.A)(),d=(0,n.useSyncExternalStore)(a,o,s);(0,n.useEffect)(()=>{l()},[l]),(0,n.useEffect)(()=>{if("system"!==e)return;let t=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>l();return t.addEventListener("change",r),()=>t.removeEventListener("change",r)},[e,l]);let c="dark"===e||"system"===e&&d;return{theme:e,setTheme:t,toggleTheme:r,isDark:c}}},4553:(e,t,r)=>{"use strict";r.d(t,{DM:()=>o,Hc:()=>c,qt:()=>l,qx:()=>d});var n=r(35652);let{BRAND_IDS:i,DEFAULT_BRAND_ID:a,ACTIVE_BRAND_ID:o,isActiveBrand:s,BRAND:l,LEGACY:d,ACTIVE:c,UPSTREAM_CLIENT_IDS:u,envName:p,readEnv:m,warnLegacyOnce:g,header:f,legacyHeaderNames:h}=r.n(n)()},4650:(e,t,r)=>{"use strict";async function n(e){if("u">typeof navigator&&navigator?.clipboard?.writeText)try{await navigator.clipboard.writeText(String(e));return}catch{}if("u"<typeof document)throw Error("copyTextToClipboard: clipboard API unavailable");let t=document.createElement("textarea");t.value=String(e),t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();let r=!1;try{r=document.execCommand("copy")}finally{document.body.removeChild(t)}if(!r)throw Error("copyTextToClipboard: execCommand('copy') failed")}function i(e,{min:t,max:r}={}){if(""===e||null==e)return e;let n=Number(e);if(!Number.isFinite(n))return e;let a=n;return Number.isFinite(t)&&(a=Math.max(t,a)),Number.isFinite(r)&&(a=Math.min(r,a)),a}function a(e,{min:t,max:r,step:n=1,direction:o}={}){let s=""===e||null==e?NaN:Number(i(e,{min:t,max:r})),l=Number.isFinite(s)?s:Number.isFinite(t)?t:0,d=Math.max(String(n).split(".")[1]?.length??0,String(l).split(".")[1]?.length??0);return i(Number((l+o*n).toFixed(Math.min(d,10))),{min:t,max:r})}function o(e,t,{length:r,rtl:n=!1}={}){if(!Number.isInteger(r)||r<=0)return e;let i=(e%r+r)%r;switch(t){case"ArrowRight":return(i+(n?-1:1)+r)%r;case"ArrowLeft":return(i+(n?1:-1)+r)%r;case"ArrowDown":return(i+1)%r;case"ArrowUp":return(i-1+r)%r;case"Home":return 0;case"End":return r-1;default:return i}}function s(e){return["ArrowRight","ArrowLeft","ArrowDown","ArrowUp","Home","End"].includes(e)}r.d(t,{CD:()=>a,Ck:()=>l,Ec:()=>c,GO:()=>d,Gc:()=>p,JF:()=>s,N:()=>i,V7:()=>u,eM:()=>n,lZ:()=>o,qM:()=>m});let l={primary:"bg-lime text-on-lime border border-transparent shadow-[inset_0_0_0_1px_rgba(0,0,0,0.14)] hover:brightness-95",secondary:"bg-raised text-text border border-line hover:bg-line/60",ghost:"bg-transparent text-text border border-line hover:bg-raised",danger:"bg-err-bg text-err border border-transparent hover:bg-err/15",outline:"bg-transparent text-muted border border-line hover:bg-raised hover:text-text",success:"bg-ok-bg text-ok border border-transparent hover:bg-ok/15"},d={sm:"h-10 px-3 text-sm rounded-lg",md:"h-11 px-4 text-sm rounded-lg",lg:"h-11 px-6 text-sm rounded-lg"},c={sm:"h-9 text-xs",md:"h-9 text-sm",lg:"h-11 text-sm"};function u(e="primary",t="md"){let r=l[e];if(!r)throw Error(`buttonClasses: unknown variant "${e}"`);let n=d[t];if(!n)throw Error(`buttonClasses: unknown size "${t}"`);return`${r} ${n}`}function p(e,{hint:t,error:r}={}){return r?`${e}-error`:t?`${e}-hint`:void 0}function m(e){return null!=e&&!1!==e&&""!==e}},8247:(e,t,r)=>{"use strict";r.d(t,{HY:()=>l,Kw:()=>d});let n={"perplexity-agent":"perplexity","gitlab-duo":"gitlab","vercel-ai-gateway":"vercel","ollama-search":"ollama"};function i(e){return e.startsWith("openai-compatible")?"oai-cc":e.startsWith("anthropic-compatible")?"anthropic-m":""}let a=new Set;function o(e){return e&&"string"==typeof e?e.trim().toLowerCase():""}let s=new Set(["meta-code"]);function l(e){let t=function(e){let t=o(e);if(!t||a.has(t))return"";let r=n[t]||i(t)||t;return a.has(r)?"":r}(e);return t?`/providers/${t}.${s.has(t)?"svg":"webp"}`:null}function d(e){let t=o(e);t&&a.add(t);let r=n[t]||i(t);r&&a.add(r)}},11059:(e,t,r)=>{"use strict";r.d(t,{C:()=>a});var n=r(12115),i=r(4650);function a(e=2e3){let[t,r]=(0,n.useState)(null),[o,s]=(0,n.useState)(null),l=(0,n.useRef)(null),d=(0,n.useRef)(0);return(0,n.useEffect)(()=>()=>{l.current&&clearTimeout(l.current)},[]),{copied:t,error:o,message:null!=o?"Couldn't copy":null!=t?"Copied":"",copy:(0,n.useCallback)(async(t,n="default")=>{let a=++d.current;l.current&&(clearTimeout(l.current),l.current=null);try{if(await (0,i.eM)(t),a!==d.current)return!0;return r(n),s(null),l.current=setTimeout(()=>{r(null),s(null)},e),!0}catch{if(a!==d.current)return!1;return r(null),s(n),l.current=setTimeout(()=>{r(null),s(null)},e),!1}},[e])}}},19123:(e,t,r)=>{"use strict";r.d(t,{default:()=>s});var n=r(95155),i=r(14051),a=r.n(i),o=r(50770);function s({children:e,variant:t="neutral",size:r="md",dot:i=!1,className:a}){return(0,n.jsxs)("span",{className:`inline-flex items-center gap-1.5 rounded-full font-semibold whitespace-nowrap ${(0,o.S3)(t,r)}${a?` ${a}`:""}`,children:[i&&(0,n.jsx)("span",{"aria-hidden":"true",className:"size-2 rounded-full bg-current"}),e]})}s.propTypes={children:a().node,variant:a().oneOf(o.XY),size:a().oneOf(Object.keys(o.vO)),dot:a().bool,className:a().string}},25086:(e,t,r)=>{"use strict";r.d(t,{CardSkeleton:()=>u,PageLoading:()=>l,Skeleton:()=>d,SkeletonText:()=>c,Spinner:()=>s,default:()=>p});var n=r(95155),i=r(14051),a=r.n(i),o=r(31474);function s({size:e="md",className:t}){return(0,n.jsx)("span",{role:"status","aria-label":"Loading",className:(0,o.cn)("material-symbols-outlined animate-spin text-coral",{sm:"text-[16px]",md:"text-[24px]",lg:"text-[32px]",xl:"text-[48px]"}[e],t),children:"progress_activity"})}function l({message:e="Loading..."}){return(0,n.jsxs)("div",{className:"fixed inset-0 z-50 flex flex-col items-center justify-center bg-bg",children:[(0,n.jsx)(s,{size:"xl"}),(0,n.jsx)("p",{className:"mt-4 text-muted",children:e})]})}function d({className:e,...t}){return(0,n.jsx)("div",{"aria-hidden":"true",className:(0,o.cn)("animate-pulse rounded-[10px] bg-raised",e),...t})}function c({lines:e=3,className:t}){let r=Array.from({length:e},(e,t)=>t);return(0,n.jsx)("div",{className:(0,o.cn)("flex flex-col gap-2",t),"aria-hidden":"true",children:r.map(e=>(0,n.jsx)(d,{className:(0,o.cn)("h-3",e===r.length-1?"w-2/3":"w-full")},`line-${e}`))})}function u(){return(0,n.jsxs)("div",{className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,n.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,n.jsx)(d,{className:"h-4 w-24"}),(0,n.jsx)(d,{className:"size-10 rounded-[10px]"})]}),(0,n.jsx)(d,{className:"mb-2 h-8 w-16"}),(0,n.jsx)(d,{className:"h-3 w-20"})]})}function p({type:e="spinner",...t}){switch(e){case"page":return(0,n.jsx)(l,{...t});case"skeleton":return(0,n.jsx)(d,{...t});case"card":return(0,n.jsx)(u,{...t});default:return(0,n.jsx)(s,{...t})}}d.propTypes={className:a().string},c.propTypes={lines:a().number,className:a().string}},28745:(e,t,r)=>{"use strict";r.d(t,{vQ:()=>a,UY:()=>d,Nu:()=>o,B2:()=>l,h0:()=>s});var n=r(4553),i=r(41463);let a={name:`${n.Hc.name} Proxy`,description:"AI infrastructure management",version:"1.0.0",build:{channel:i.env.NEXT_PUBLIC_BUILD_CHANNEL||"",sha:i.env.NEXT_PUBLIC_BUILD_SHA||""}},o={changelogUrl:"https://raw.githubusercontent.com/tokenhop/tokenhop/refs/heads/master/CHANGELOG.md"},s={appPort:20128},l={storageKey:"theme",defaultTheme:"dark"},d={maxLines:200,pollIntervalMs:1e3}},35652:(e,t,r)=>{"use strict";var n,i=r(41463);let a=Object.freeze(["9router","tokenhop"]),o="tokenhop";function s(e,t){if(a.includes(e))return e;let r=a.map(e=>`"${e}"`).join(", ");throw Error(`${t}: unknown brand ${JSON.stringify(e)}; allowed values: ${r}`)}let l=""==(n="tokenhop")?o:s(n,"NEXT_PUBLIC_BRAND"),d=Object.freeze({name:"tokenhop",slug:"tokenhop",envPrefix:"TOKENHOP_",headerPrefix:"x-tokenhop-",jcodeApiKeyEnv:"JCODE_TOKENHOP_API_KEY",defaultApiKey:"sk_tokenhop",dataDirName:"tokenhop",samlIssuerDefault:"urn:tokenhop:sp",mitmCaCommonName:"tokenhop MITM Root CA",mitmCaOrg:"tokenhop",mitmCertFile:"tokenhop-root-ca.crt",pidFile:"tokenhop.pid",autostartLabel:"dev.tokenhop.autostart",autostartDesktopFile:"tokenhop.desktop",autostartVbsFile:"tokenhop.vbs",clientConfigKey:"tokenhop",customModelIdPrefix:"custom:tokenhop-",storageKeyPrefix:"tokenhop.",eventPrefix:"tokenhop:",backupFilePrefix:"tokenhop-backup-",npmPackage:"tokenhop",appPackage:"tokenhop-app",repoSlug:"tokenhop/tokenhop",repoUrl:"https://github.com/tokenhop/tokenhop",imageName:"ghcr.io/tokenhop/tokenhop",websiteUrl:"https://tokenhop.ai",docsUrl:"https://tokenhop.dev",wordmark:"tokenhop",favicon:"/brand/favicon.svg",faviconIco:"/brand/favicon.ico",appIcon192:"/brand/icons/icon-192.svg",appIcon512:"/brand/icons/icon-512.svg",trayIconName:"icon-tokenhop",trayIconTemplate:!0}),c=Object.freeze({names:Object.freeze(["9Router","9router"]),slug:"9router",envPrefixes:Object.freeze(["NINEROUTER_","NINE_ROUTER_"]),headerPrefix:"x-9router-",jcodeApiKeyEnv:"JCODE_9ROUTER_API_KEY",defaultApiKey:"sk_9router",dataDirName:"9router",samlIssuerDefault:"urn:9router:sp",mitmCaCommonName:"9Router MITM Root CA",mitmCaOrg:"9Router",mitmCertFile:"9router-root-ca.crt",pidFile:"9router.pid",autostartLabel:"com.9router.autostart",autostartDesktopFile:"9router.desktop",autostartVbsFile:"9router.vbs",clientConfigKeys:Object.freeze(["9router","9Router"]),customModelIdPrefix:"custom:9Router-",storageKeyPrefix:"9router.",eventPrefix:"9router:",backupFilePrefix:"9router-backup-",npmPackage:"9router",appPackage:"9router-app",repoSlug:"yandy-r/9router",repoUrl:"https://github.com/yandy-r/9router",imageName:"ghcr.io/yandy-r/9router",wordmark:"router",favicon:"/favicon.svg",faviconIco:"/favicon.ico",appIcon192:"/icons/icon-192.svg",appIcon512:"/icons/icon-512.svg",trayIconName:"icon",trayIconTemplate:!1}),u=Object.freeze({kimiPlatform:"9router",clineUserAgentProduct:"9Router",clineClientType:"9router",devinMcpClientName:"9router",coworkMcpClientName:"9router",cursorMcpProvider:"9router",glmMcpClientName:"9router",xaiUserAgent:"grok-cli/9router",xiaomiKeyNamePrefix:"9router-xmd-",githubUserAgent:"9Router",proxyTestUserAgent:"9Router",denoRelayKind:"9router-relay"}),p=new Set(["repoSlug","repoUrl","imageName","websiteUrl","docsUrl"]),m={name:"names",envPrefix:"envPrefixes",clientConfigKey:"clientConfigKeys"},g="tokenhop"===l?d:Object.freeze(Object.fromEntries(Object.keys(d).map(e=>{let t;return[e,p.has(e)?d[e]:Array.isArray(t=c[m[e]||e])?t[0]:t]}))),f=new Set;function h(e,t,r){if("tokenhop"!==l)return!1;let n=`${e}\u0000${t}`;return!f.has(n)&&(f.add(n),console.warn(`[tokenhop] deprecated ${e} "${t}" → use "${r}" (legacy support ends in v2.0.0)`),!0)}let x=/^[A-Z0-9]+(_[A-Z0-9]+)*$/;function b(e){if("string"!=typeof e||!x.test(e))throw Error(`envName: invalid suffix ${JSON.stringify(e)}; expected e.g. "PEER_TOKEN"`);return d.envPrefix+e}let v=/^(?!x-)[a-z0-9]+(-[a-z0-9]+)*$/;function y(e){return g.headerPrefix+function(e,t){if("string"!=typeof e||!v.test(e))throw Error(`${t}: invalid header name ${JSON.stringify(e)}; expected a bare lowercase name like "connection-id"`);return e}(e,"header")}e.exports={BRAND_IDS:a,DEFAULT_BRAND_ID:o,ACTIVE_BRAND_ID:l,isActiveBrand:function(e){return s(e,"isActiveBrand")===l},BRAND:d,LEGACY:c,ACTIVE:g,UPSTREAM_CLIENT_IDS:u,envName:b,readEnv:function(e,t=i.env){let r=b(e);if(void 0!==t[r])return t[r];for(let n of c.envPrefixes){let i=n+e;if(void 0!==t[i])return h("env var",i,r),t[i]}},warnLegacyOnce:h,header:y,legacyHeaderNames:function(e){let t=y(e);return[c.headerPrefix+e].filter(e=>e!==t)}}},49864:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>O});var n=r(95155),i=r(12115),a=r(92542),o=r(84588),s=r(96975),l=r(19123),d=r(56006),c=r(14051),u=r.n(c),p=r(37206),m=r(1620);function g(e,t){return"function"!=typeof getComputedStyle?t:getComputedStyle(document.documentElement).getPropertyValue(e).trim()||t}let f="signal-dark",h="signal-light";function x(e){e.editor.defineTheme(f,{base:"vs-dark",inherit:!0,rules:[],colors:{"editor.background":g("--signal-panel","#15171D"),"editor.foreground":g("--signal-text","#F3F2EE"),"editor.lineHighlightBackground":g("--signal-raised","#1C1F27"),"editorLineNumber.foreground":g("--signal-subtle","#838898"),"editorLineNumber.activeForeground":g("--signal-text","#F3F2EE"),"editorCursor.foreground":g("--signal-coral","#FF6A48"),"editor.selectionBackground":`${g("--signal-coral","#FF6A48")}33`,"editor.inactiveSelectionBackground":`${g("--signal-coral","#FF6A48")}22`,"editorWidget.background":g("--signal-panel","#15171D"),"editorWidget.border":g("--signal-line","#2A2E39"),"editorHoverWidget.background":g("--signal-raised","#1C1F27"),"editorHoverWidget.border":g("--signal-line","#2A2E39"),"editorSuggestWidget.background":g("--signal-panel","#15171D"),"editorSuggestWidget.border":g("--signal-line","#2A2E39"),"editorGutter.background":g("--signal-panel","#15171D"),"editor.lineHighlightBorder":"#00000000"}}),e.editor.defineTheme(h,{base:"vs",inherit:!0,rules:[],colors:{"editor.background":g("--signal-panel","#FFFFFF"),"editor.foreground":g("--signal-text","#16171C"),"editor.lineHighlightBackground":g("--signal-raised","#F7F5EF"),"editorLineNumber.foreground":g("--signal-subtle","#6C7080"),"editorLineNumber.activeForeground":g("--signal-text","#16171C"),"editorCursor.foreground":g("--signal-coral","#CF4323"),"editor.selectionBackground":`${g("--signal-coral","#CF4323")}33`,"editor.inactiveSelectionBackground":`${g("--signal-coral","#CF4323")}22`,"editorWidget.background":g("--signal-panel","#FFFFFF"),"editorWidget.border":g("--signal-line","#E2DED3"),"editorHoverWidget.background":g("--signal-raised","#F7F5EF"),"editorHoverWidget.border":g("--signal-line","#E2DED3"),"editorSuggestWidget.background":g("--signal-panel","#FFFFFF"),"editorSuggestWidget.border":g("--signal-line","#E2DED3"),"editorGutter.background":g("--signal-panel","#FFFFFF"),"editor.lineHighlightBorder":"#00000000"}})}var b=r(25086),v=r(11059),y=r(58897);let k=(0,p.default)(()=>r.e(8202).then(r.bind(r,28202)),{loadableGenerated:{webpack:()=>[28202]},ssr:!1,loading:()=>(0,n.jsx)(b.Skeleton,{className:"h-[400px] w-full rounded-none border-0"})}),w={minimap:{enabled:!1},fontSize:12,lineNumbers:"on",scrollBeyondLastLine:!1,wordWrap:"on",automaticLayout:!0};function N({step:e,isExpanded:t,content:r,onToggle:i,onContentChange:s,onLoad:d,loadLoading:c,action:u}){let{isDark:p}=(0,m.D)(),{copy:g,copied:b,error:j}=(0,v.C)();return(0,n.jsx)(o.default,{padding:"none",children:(0,n.jsxs)("div",{className:"space-y-3 p-4",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,n.jsxs)("button",{type:"button",onClick:()=>i(e.id),"aria-expanded":t,"aria-controls":`translator-step-${e.id}-editor`,className:"flex min-w-0 flex-1 items-center gap-2 text-start focus-visible:outline-none focus-visible:shadow-focus",children:[(0,n.jsx)("span",{className:`material-symbols-outlined shrink-0 text-[20px] text-muted transition-transform ${t?"rotate-180":""}`,"aria-hidden":"true",children:"expand_more"}),(0,n.jsx)("span",{className:"w-4 shrink-0 font-mono text-xs text-subtle",children:e.id}),(0,n.jsx)("span",{className:"truncate text-sm font-semibold text-text",children:e.label}),(0,n.jsx)("span",{className:"hidden shrink-0 font-mono text-xs text-subtle sm:inline",children:e.file}),r&&(0,n.jsxs)(l.default,{variant:"neutral",size:"sm",className:"shrink-0",children:[r.length," chars"]})]}),!t&&(0,n.jsxs)("div",{className:"flex shrink-0 gap-1",children:[(0,n.jsx)(a.default,{size:"sm",variant:"ghost",icon:"folder_open","aria-label":`Load ${e.label}`,loading:c,onClick:d}),u]})]}),t&&(0,n.jsxs)("div",{id:`translator-step-${e.id}-editor`,children:[(0,n.jsx)("p",{className:"mb-2 text-xs text-muted",children:e.desc}),(0,n.jsx)("div",{className:"overflow-hidden rounded-xl border border-line",children:(0,n.jsx)(k,{height:"400px",defaultLanguage:"text"===e.lang?"plaintext":"json",language:"text"===e.lang?"plaintext":"json",value:r,onChange:t=>s(e.id,t||""),beforeMount:x,theme:p?f:h,options:w})}),(0,n.jsxs)("div",{className:"mt-3 flex flex-wrap gap-2",children:[(0,n.jsx)(a.default,{size:"sm",variant:"secondary",icon:"folder_open",loading:c,onClick:d,children:"Load"}),(0,n.jsx)(a.default,{size:"sm",variant:"secondary",icon:"data_object",onClick:()=>{let t=function(e){try{return JSON.stringify(JSON.parse(e),null,2)}catch{return null}}(r);null!==t&&s(e.id,t)},children:"Format"}),(0,n.jsx)(a.default,{size:"sm",variant:"secondary",icon:b===`translator-step-${e.id}`?"check":j===`translator-step-${e.id}`?"error":"content_copy",onClick:()=>{r&&g(r,`translator-step-${e.id}`)},children:b===`translator-step-${e.id}`?"Copied":j===`translator-step-${e.id}`?"Couldn't copy":"Copy"}),(0,n.jsx)(y.default,{copied:b,error:j,id:`translator-step-${e.id}`}),u]})]})]})})}N.propTypes={step:u().shape({id:u().number.isRequired,label:u().string.isRequired,file:u().string.isRequired,lang:u().string.isRequired,desc:u().string.isRequired}).isRequired,isExpanded:u().bool,content:u().string,onToggle:u().func.isRequired,onContentChange:u().func.isRequired,onLoad:u().func.isRequired,loadLoading:u().bool,action:u().node};let j=[{id:1,label:"Client request",file:"1_req_client.json",lang:"json",desc:"Raw request from client"},{id:2,label:"Source body",file:"2_req_source.json",lang:"json",desc:"After initial conversion"},{id:3,label:"OpenAI intermediate",file:"3_req_openai.json",lang:"json",desc:"source → openai"},{id:4,label:"Target request",file:"4_req_target.json",lang:"json",desc:"openai → target + URL + headers"},{id:5,label:"Provider response",file:"5_res_provider.txt",lang:"text",desc:"Raw SSE from provider"},{id:6,label:"OpenAI response",file:"6_res_openai.txt",lang:"text",desc:"target → openai (response)"},{id:7,label:"Client response",file:"7_res_client.txt",lang:"text",desc:"Final response to client"}],C={sourceFormat:"info",targetFormat:"brand",provider:"live",model:"neutral"};function O(){let[e,t]=(0,i.useState)({}),[r,c]=(0,i.useState)({1:!0}),[u,p]=(0,i.useState)({}),[m,g]=(0,i.useState)(""),[f,h]=(0,i.useState)(null),x=(e,t)=>p(r=>({...r,[e]:t})),b=(0,i.useRef)(0),v=(0,i.useRef)(null),y=(e,r)=>{if(t(t=>({...t,[e]:r})),1===e){b.current+=1;let e=b.current;clearTimeout(v.current),v.current=setTimeout(()=>{_(r,e)},400)}},k=e=>c(t=>({...t,[e]:!t[e]})),w=e=>c(Object.fromEntries(j.map(t=>[t.id,t.id===e]))),O=async e=>{let t=j.find(t=>t.id===e);g(""),x(`load-${e}`,!0);try{let r=await fetch(`/api/translator/load?file=${t.file}`),n=await r.json();n.success?y(e,n.content):g(n.error||"File not found")}catch(e){g(e.message)}x(`load-${e}`,!1)},_=async(e,t)=>{try{let r="string"==typeof e?JSON.parse(e):e,n=await fetch("/api/translator/translate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({step:1,body:r})}),i=await n.json();i.success&&(void 0===t||t===b.current)&&h(i.result)}catch{}},E=(e,t)=>fetch("/api/translator/save",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({file:e,content:t})}).catch(()=>{}),F=async()=>{g(""),x("toOpenAI",!0);try{let t=e[1],r=JSON.parse(t);E("1_req_client.json",t),E("2_req_source.json",JSON.stringify({timestamp:new Date().toISOString(),headers:{},body:r.body||r},null,2));let n=await fetch("/api/translator/translate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({step:2,body:r})}),i=await n.json();if(!i.success)return void g(i.error);let a=JSON.stringify(i.result.body,null,2);y(3,a),w(3)}catch(e){g(e.message)}x("toOpenAI",!1)},S=async()=>{g(""),x("toTarget",!0);try{let t=e[3],r=JSON.parse(t);E("3_req_openai.json",t);let n=await fetch("/api/translator/translate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({step:3,body:{...r,provider:f?.provider,model:f?.model}})}),i=await n.json();if(!i.success)return void g(i.error);let a={...i.result,provider:f?.provider,model:f?.model};y(4,JSON.stringify(a,null,2)),w(4)}catch(e){g(e.message)}x("toTarget",!1)},T=async()=>{g(""),x("send",!0);try{let t=e[4],r=JSON.parse(t);E("4_req_target.json",t);let n=r.provider||f?.provider,i=r.model||f?.model;if(!n||!i)return void g("Missing provider or model. Please run step 1 first to detect them.");let a=await fetch("/api/translator/send",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:n,model:i,body:r.body||r})});if(!a.ok){let e=await a.json().catch(()=>({error:a.statusText}));g(e.error||"Send failed");return}let o=a.body.getReader(),s=new TextDecoder,l="";for(;;){let{done:e,value:t}=await o.read();if(e)break;l+=s.decode(t,{stream:!0})}y(5,l),w(5),await fetch("/api/translator/save",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({file:"5_res_provider.txt",content:l})})}catch(e){g(e.message)}finally{x("send",!1)}};return(0,n.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,n.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{className:"text-xs font-semibold uppercase tracking-[0.08em] text-subtle",children:"Debug"}),(0,n.jsx)("h2",{className:"font-display text-[28px] font-bold tracking-[-0.02em] text-text",children:"Translator debug"}),(0,n.jsx)("p",{className:"mt-1 text-sm text-muted",children:"Replay request flow — matches log files"})]}),f&&(0,n.jsx)(o.default,{padding:"xs",className:"flex flex-wrap items-center gap-2",role:"status",children:["sourceFormat","targetFormat","provider","model"].map(e=>(0,n.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:["provider"===e&&f.provider&&(0,n.jsx)(s.default,{providerId:f.provider,size:"sm"}),(0,n.jsxs)(l.default,{variant:C[e],size:"sm",children:[(0,n.jsxs)("span",{className:"opacity-70",children:[e,":"]})," ",f[e]]})]},e))})]}),m&&(0,n.jsx)(d.default,{variant:"err",title:"Translator step failed",children:m}),j.map(t=>{var i;return(0,n.jsx)(N,{step:t,isExpanded:!!r[t.id],content:e[t.id]||"",onToggle:k,onContentChange:y,onLoad:()=>O(t.id),loadLoading:u[`load-${t.id}`],action:1===(i=t.id)?(0,n.jsx)(a.default,{size:"sm",icon:"arrow_forward",loading:u.toOpenAI,onClick:F,children:"To OpenAI"}):3===i?(0,n.jsx)(a.default,{size:"sm",icon:"arrow_forward",loading:u.toTarget,onClick:S,children:"To target"}):4===i?(0,n.jsx)(a.default,{size:"sm",icon:"send",loading:u.send,onClick:T,children:"Send"}):null},t.id)})]})}},50770:(e,t,r)=>{"use strict";r.d(t,{PK:()=>g,S3:()=>l,XY:()=>s,lN:()=>d,pN:()=>h,pi:()=>m,r4:()=>p,vE:()=>u,vO:()=>a});let n={connected:"ok",healthy:"ok",active:"ok",ok:"ok",success:"ok",cooldown:"warn",warning:"warn",low:"warn",warn:"warn",error:"err",empty:"err",err:"err",oauth:"info",info:"info","api-key":"brand",brand:"brand",live:"live",disabled:"neutral",off:"neutral",neutral:"neutral"},i={ok:"bg-ok-bg text-ok",warn:"bg-warn-bg text-warn",err:"bg-err-bg text-err",info:"bg-sky-bg text-sky-ink",brand:"bg-coral-bg text-coral-ink",live:"bg-lime-bg text-lime-ink",neutral:"bg-raised text-muted shadow-[inset_0_0_0_1px_var(--signal-line)]"},a={xs:"h-5 px-2 text-[11px]",sm:"h-5 px-2 text-[11px]",md:"h-6 px-2.5 text-xs",lg:"h-7 px-3 text-sm"},o={default:"neutral",primary:"brand",success:"ok",warning:"warn",error:"err"},s=[...new Set([...Object.keys(i),...Object.keys(o),...Object.keys(n)])];function l(e="neutral",t="md"){let r=a[t];if(!r)throw Error(`pillClasses: unknown size "${t}"`);return`${i[function(e){if(i[e])return e;let t=o[e]??n[e];if(!t)throw Error(`resolvePillVariant: unknown variant "${e}"`);return t}(e)]} ${r}`}let d={ok:"bg-ok",warn:"bg-warn",err:"bg-err",live:"bg-lime",info:"bg-sky",brand:"bg-coral",neutral:"bg-subtle"},c=new Set(["unlimited","credits"]);function u(e,t){if(void 0!==t&&!c.has(t))throw Error(`meterVariant: unknown kind "${t}"`);if("number"!=typeof e||!Number.isFinite(e))throw Error(`meterVariant: expected a finite number, got ${e}`);return"unlimited"===t?"live":"credits"===t?"info":e<=20?"err":e<=45?"warn":"ok"}function p(e){if("number"!=typeof e||!Number.isFinite(e))throw Error(`meterValue: expected a finite number, got ${e}`);return Math.min(100,Math.max(0,e))}let m="border-b border-line",g="whitespace-nowrap text-xs font-semibold text-muted",f={LOG:"signal-terminal-log",INFO:"signal-terminal-info",WARN:"signal-terminal-warn",ERROR:"signal-terminal-error",DEBUG:"signal-terminal-debug"};function h(e){let t=f[e];if(!t)throw Error(`terminalLevelClass: unknown level "${e}"`);return t}},55429:(e,t,r)=>{Promise.resolve().then(r.bind(r,49864))},56006:(e,t,r)=>{"use strict";r.d(t,{default:()=>s});var n=r(95155),i=r(14051),a=r.n(i);let o={info:{classes:"bg-sky-bg text-sky-ink",icon:"info"},warn:{classes:"bg-warn-bg text-warn",icon:"warning"},err:{classes:"bg-err-bg text-err",icon:"error"},ok:{classes:"bg-ok-bg text-ok",icon:"check_circle"}};function s({variant:e="info",title:t,children:r,icon:i,className:a}){let l=o[e];if(!l)throw Error(`Callout: unknown variant "${e}"`);return(0,n.jsxs)("div",{role:"err"===e?"alert":"status",className:`flex gap-3 rounded-xl p-4 text-sm ${l.classes}${a?` ${a}`:""}`,children:[(0,n.jsx)("span",{className:"material-symbols-outlined shrink-0 text-[20px]","aria-hidden":"true",children:i??l.icon}),(0,n.jsxs)("div",{className:"min-w-0 text-text",children:[t&&(0,n.jsx)("p",{className:"font-semibold",children:t}),r&&(0,n.jsx)("div",{className:"text-muted",children:r})]})]})}s.propTypes={variant:a().oneOf(Object.keys(o)),title:a().node,children:a().node,icon:a().string,className:a().string}},58897:(e,t,r)=>{"use strict";r.d(t,{default:()=>o});var n=r(95155),i=r(14051),a=r.n(i);function o({copied:e,error:t,id:r}){let i=e=>null!=e&&(void 0===r||e===r);return(0,n.jsx)("span",{"aria-live":"polite",className:"sr-only",children:i(t)?"Couldn't copy":i(e)?"Copied":""})}o.propTypes={copied:a().string,error:a().string,id:a().string}},84588:(e,t,r)=>{"use strict";r.d(t,{default:()=>l});var n=r(95155),i=r(14051),a=r.n(i),o=r(31474);let s={none:"",xs:"p-3",sm:"p-4",md:"p-6",lg:"p-8"};function l({children:e,title:t,subtitle:r,icon:i,action:a,as:d="h2",padding:c="md",hover:u=!1,elev:p=!1,className:m,role:g,...f}){if(void 0===s[c])throw Error(`Card: unknown padding "${c}"`);let h=g||(f["aria-label"]||f["aria-labelledby"]?"region":void 0);return(0,n.jsxs)("div",{role:h,className:(0,o.cn)("rounded-2xl border border-line bg-panel shadow-card",u&&"cursor-pointer transition-colors duration-150 hover:border-coral/40",s[c],m),...f,children:[(t||a)&&(0,n.jsx)(l.Header,{title:t,subtitle:r,icon:i,actions:a,as:d,className:"mb-4"}),e]})}l.propTypes={children:a().node,title:a().node,subtitle:a().node,icon:a().string,action:a().node,as:a().oneOf(["h2","h3","h4"]),padding:a().oneOf(Object.keys(s)),hover:a().bool,elev:a().bool,className:a().string,role:a().string},l.Header=function({title:e,subtitle:t,icon:r,actions:i,as:a="h2",className:s}){return(0,n.jsxs)("div",{className:(0,o.cn)("flex flex-wrap items-center justify-between gap-3",s),children:[(0,n.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[r&&(0,n.jsx)("span",{className:"flex size-10 shrink-0 items-center justify-center rounded-[10px] bg-coral-bg text-coral-ink",children:(0,n.jsx)("span",{className:"material-symbols-outlined text-[20px]","aria-hidden":"true",children:r})}),(0,n.jsxs)("div",{className:"min-w-0",children:[e&&(0,n.jsx)(a,{className:"font-display text-lg font-bold text-text",children:e}),t&&(0,n.jsx)("p",{className:"text-sm text-muted",children:t})]})]}),i&&(0,n.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:i})]})},l.Header.propTypes={title:a().node,subtitle:a().node,icon:a().string,actions:a().node,as:a().oneOf(["h2","h3","h4"]),className:a().string},l.Section=function({children:e,className:t,...r}){return(0,n.jsx)("div",{className:(0,o.cn)("rounded-xl border border-line bg-raised p-4",t),...r,children:e})},l.Row=function({children:e,className:t,...r}){return(0,n.jsx)("div",{className:(0,o.cn)("-mx-3 border-b border-line p-3 px-3 transition-colors last:border-b-0 hover:bg-raised",t),...r,children:e})},l.ListItem=function({children:e,actions:t,className:r,...i}){return(0,n.jsxs)("div",{className:(0,o.cn)("group -mx-3 flex items-center justify-between border-b border-line p-3 px-3 transition-colors last:border-b-0 hover:bg-raised",r),...i,children:[(0,n.jsx)("div",{className:"min-w-0 flex-1",children:e}),t&&(0,n.jsx)("div",{className:"flex items-center gap-1 opacity-0 transition-opacity group-focus-within:opacity-100 group-hover:opacity-100",children:t})]})}},90085:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});var n=r(1934),i=r(31692),a=r(28745);function o(e){let t=document.documentElement,r=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";"dark"===("system"===e?r:e)?t.classList.add("dark"):t.classList.remove("dark")}let s=(0,n.v)((0,i.Zr)((e,t)=>({theme:a.B2.defaultTheme,setTheme:t=>{e({theme:t}),o(t)},toggleTheme:()=>{let r="dark"===t().theme?"light":"dark";e({theme:r}),o(r)},initTheme:()=>{o(t().theme)}}),{name:a.B2.storageKey}))},92542:(e,t,r)=>{"use strict";r.d(t,{default:()=>c});var n=r(95155),i=r(98500),a=r.n(i),o=r(14051),s=r.n(o),l=r(31474),d=r(4650);function c({children:e,variant:t="primary",size:r="md",icon:i,iconRight:o,href:s,disabled:u=!1,loading:p=!1,fullWidth:m=!1,className:g,...f}){let h=(0,l.cn)("inline-flex items-center justify-center gap-2 font-semibold transition-all duration-150 ease-out cursor-pointer","active:scale-[0.97] focus-visible:outline-none focus-visible:shadow-focus","disabled:opacity-50 disabled:cursor-not-allowed disabled:active:scale-100","aria-disabled:opacity-50 aria-disabled:cursor-not-allowed aria-disabled:active:scale-100",(0,d.V7)(t,r),m&&"w-full",g),x=(0,n.jsxs)(n.Fragment,{children:[p?(0,n.jsx)("span",{className:"material-symbols-outlined animate-spin text-[18px]","aria-hidden":"true",children:"progress_activity"}):i?(0,n.jsx)("span",{className:"material-symbols-outlined text-[18px]","aria-hidden":"true",children:i}):null,e,o&&!p&&(0,n.jsx)("span",{className:"material-symbols-outlined text-[18px] rtl:-scale-x-100","aria-hidden":"true",children:o})]});if(s&&!(u||p)){let{type:e,...t}=f;return t.className=h,/^(https?:|mailto:|tel:|#)/.test(s)?(0,n.jsx)("a",{href:s,...t,children:x}):(0,n.jsx)(a(),{href:s,...t,children:x})}return(0,n.jsx)("button",{className:h,disabled:u||p,"aria-busy":p||void 0,...f,children:x})}c.propTypes={children:s().node,variant:s().oneOf(Object.keys(d.Ck)),size:s().oneOf(Object.keys(d.GO)),icon:s().string,iconRight:s().string,href:s().string,disabled:s().bool,loading:s().bool,fullWidth:s().bool,className:s().string}},96975:(e,t,r)=>{"use strict";r.d(t,{default:()=>u});var n=r(95155),i=r(14051),a=r.n(i),o=r(12115),s=r(7256),l=r(8247);let d={sm:{tile:"size-6 rounded-md",text:"text-[10px]"},md:{tile:"size-9 rounded-[10px]",text:"text-sm"},lg:{tile:"size-14 rounded-[14px]",text:"text-lg"}},c={ok:"bg-ok",warn:"bg-warn",err:"bg-err",info:"bg-sky",live:"bg-lime",neutral:"bg-line"};function u({providerId:e,size:t="md",status:r,brand:i,iconSrc:a,className:p}){let[m,g]=(0,o.useState)(null),f=d[t];if(!f)throw Error(`ProviderTile: unknown size "${t}"`);if(void 0!==r&&!c[r])throw Error(`ProviderTile: unknown status "${r}"`);let h=(0,s.rs)(e),x=i??(0,s.Do)(h),b=m===h?null:a??(0,l.HY)(h),v=b?{style:{backgroundColor:`color-mix(in srgb, ${x.color} 8%, #ffffff)`},className:""}:{style:{backgroundColor:x.color},className:`font-display font-bold text-white shadow-[inset_0_0_0_1px_rgba(255,255,255,0.14)] ${f.text}`};return(0,n.jsxs)("span",{"aria-hidden":"true",title:e,style:v.style,className:`relative inline-flex shrink-0 items-center justify-center ${f.tile} ${v.className}${p?` ${p}`:""}`,children:[b?(0,n.jsx)("img",{src:b,alt:"",loading:"lazy",decoding:"async",className:"size-full rounded-[inherit] object-contain",onError:()=>{(0,l.Kw)(h),g(h)}}):x.monogram,r&&(0,n.jsx)("span",{className:`absolute -end-0.5 -bottom-0.5 size-2.5 rounded-full shadow-[0_0_0_2px_var(--signal-panel)] ${c[r]}`})]})}u.propTypes={providerId:a().string.isRequired,size:a().oneOf(Object.keys(d)),status:a().oneOf(Object.keys(c)),brand:a().shape({color:a().string.isRequired,monogram:a().string.isRequired}),iconSrc:a().string,className:a().string}}},e=>{e.O(0,[1610,1372,2903,8441,3794,7358],()=>e(e.s=55429)),_N_E=e.O()}]);
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3528],{1620:(e,t,r)=>{"use strict";r.d(t,{D:()=>l});var n=r(12115),i=r(90085);function a(e){let t=window.matchMedia("(prefers-color-scheme: dark)");return t.addEventListener("change",e),()=>t.removeEventListener("change",e)}function o(){return window.matchMedia("(prefers-color-scheme: dark)").matches}function s(){return!1}function l(){let{theme:e,setTheme:t,toggleTheme:r,initTheme:l}=(0,i.A)(),d=(0,n.useSyncExternalStore)(a,o,s);(0,n.useEffect)(()=>{l()},[l]),(0,n.useEffect)(()=>{if("system"!==e)return;let t=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>l();return t.addEventListener("change",r),()=>t.removeEventListener("change",r)},[e,l]);let c="dark"===e||"system"===e&&d;return{theme:e,setTheme:t,toggleTheme:r,isDark:c}}},4553:(e,t,r)=>{"use strict";r.d(t,{DM:()=>o,Hc:()=>c,qt:()=>l,qx:()=>d});var n=r(35652);let{BRAND_IDS:i,DEFAULT_BRAND_ID:a,ACTIVE_BRAND_ID:o,isActiveBrand:s,BRAND:l,LEGACY:d,ACTIVE:c,UPSTREAM_CLIENT_IDS:u,envName:p,readEnv:m,warnLegacyOnce:g,header:f,legacyHeaderNames:h}=r.n(n)()},4650:(e,t,r)=>{"use strict";async function n(e){if("u">typeof navigator&&navigator?.clipboard?.writeText)try{await navigator.clipboard.writeText(String(e));return}catch{}if("u"<typeof document)throw Error("copyTextToClipboard: clipboard API unavailable");let t=document.createElement("textarea");t.value=String(e),t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();let r=!1;try{r=document.execCommand("copy")}finally{document.body.removeChild(t)}if(!r)throw Error("copyTextToClipboard: execCommand('copy') failed")}function i(e,{min:t,max:r}={}){if(""===e||null==e)return e;let n=Number(e);if(!Number.isFinite(n))return e;let a=n;return Number.isFinite(t)&&(a=Math.max(t,a)),Number.isFinite(r)&&(a=Math.min(r,a)),a}function a(e,{min:t,max:r,step:n=1,direction:o}={}){let s=""===e||null==e?NaN:Number(i(e,{min:t,max:r})),l=Number.isFinite(s)?s:Number.isFinite(t)?t:0,d=Math.max(String(n).split(".")[1]?.length??0,String(l).split(".")[1]?.length??0);return i(Number((l+o*n).toFixed(Math.min(d,10))),{min:t,max:r})}function o(e,t,{length:r,rtl:n=!1}={}){if(!Number.isInteger(r)||r<=0)return e;let i=(e%r+r)%r;switch(t){case"ArrowRight":return(i+(n?-1:1)+r)%r;case"ArrowLeft":return(i+(n?1:-1)+r)%r;case"ArrowDown":return(i+1)%r;case"ArrowUp":return(i-1+r)%r;case"Home":return 0;case"End":return r-1;default:return i}}function s(e){return["ArrowRight","ArrowLeft","ArrowDown","ArrowUp","Home","End"].includes(e)}r.d(t,{CD:()=>a,Ck:()=>l,Ec:()=>c,GO:()=>d,Gc:()=>p,JF:()=>s,N:()=>i,V7:()=>u,eM:()=>n,lZ:()=>o,qM:()=>m});let l={primary:"bg-lime text-on-lime border border-transparent shadow-[inset_0_0_0_1px_rgba(0,0,0,0.14)] hover:brightness-95",secondary:"bg-raised text-text border border-line hover:bg-line/60",ghost:"bg-transparent text-text border border-line hover:bg-raised",danger:"bg-err-bg text-err border border-transparent hover:bg-err/15",outline:"bg-transparent text-muted border border-line hover:bg-raised hover:text-text",success:"bg-ok-bg text-ok border border-transparent hover:bg-ok/15"},d={sm:"h-10 px-3 text-sm rounded-lg",md:"h-11 px-4 text-sm rounded-lg",lg:"h-11 px-6 text-sm rounded-lg"},c={sm:"h-9 text-xs",md:"h-9 text-sm",lg:"h-11 text-sm"};function u(e="primary",t="md"){let r=l[e];if(!r)throw Error(`buttonClasses: unknown variant "${e}"`);let n=d[t];if(!n)throw Error(`buttonClasses: unknown size "${t}"`);return`${r} ${n}`}function p(e,{hint:t,error:r}={}){return r?`${e}-error`:t?`${e}-hint`:void 0}function m(e){return null!=e&&!1!==e&&""!==e}},8247:(e,t,r)=>{"use strict";r.d(t,{HY:()=>l,Kw:()=>d});let n={"perplexity-agent":"perplexity","gitlab-duo":"gitlab","vercel-ai-gateway":"vercel","ollama-search":"ollama"};function i(e){return e.startsWith("openai-compatible")?"oai-cc":e.startsWith("anthropic-compatible")?"anthropic-m":""}let a=new Set;function o(e){return e&&"string"==typeof e?e.trim().toLowerCase():""}let s=new Set(["meta-code"]);function l(e){let t=function(e){let t=o(e);if(!t||a.has(t))return"";let r=n[t]||i(t)||t;return a.has(r)?"":r}(e);return t?`/providers/${t}.${s.has(t)?"svg":"webp"}`:null}function d(e){let t=o(e);t&&a.add(t);let r=n[t]||i(t);r&&a.add(r)}},11059:(e,t,r)=>{"use strict";r.d(t,{C:()=>a});var n=r(12115),i=r(4650);function a(e=2e3){let[t,r]=(0,n.useState)(null),[o,s]=(0,n.useState)(null),l=(0,n.useRef)(null),d=(0,n.useRef)(0);return(0,n.useEffect)(()=>()=>{l.current&&clearTimeout(l.current)},[]),{copied:t,error:o,message:null!=o?"Couldn't copy":null!=t?"Copied":"",copy:(0,n.useCallback)(async(t,n="default")=>{let a=++d.current;l.current&&(clearTimeout(l.current),l.current=null);try{if(await (0,i.eM)(t),a!==d.current)return!0;return r(n),s(null),l.current=setTimeout(()=>{r(null),s(null)},e),!0}catch{if(a!==d.current)return!1;return r(null),s(n),l.current=setTimeout(()=>{r(null),s(null)},e),!1}},[e])}}},19123:(e,t,r)=>{"use strict";r.d(t,{default:()=>s});var n=r(95155),i=r(14051),a=r.n(i),o=r(50770);function s({children:e,variant:t="neutral",size:r="md",dot:i=!1,className:a}){return(0,n.jsxs)("span",{className:`inline-flex items-center gap-1.5 rounded-full font-semibold whitespace-nowrap ${(0,o.S3)(t,r)}${a?` ${a}`:""}`,children:[i&&(0,n.jsx)("span",{"aria-hidden":"true",className:"size-2 rounded-full bg-current"}),e]})}s.propTypes={children:a().node,variant:a().oneOf(o.XY),size:a().oneOf(Object.keys(o.vO)),dot:a().bool,className:a().string}},25086:(e,t,r)=>{"use strict";r.d(t,{CardSkeleton:()=>u,PageLoading:()=>l,Skeleton:()=>d,SkeletonText:()=>c,Spinner:()=>s,default:()=>p});var n=r(95155),i=r(14051),a=r.n(i),o=r(31474);function s({size:e="md",className:t}){return(0,n.jsx)("span",{role:"status","aria-label":"Loading",className:(0,o.cn)("material-symbols-outlined animate-spin text-coral",{sm:"text-[16px]",md:"text-[24px]",lg:"text-[32px]",xl:"text-[48px]"}[e],t),children:"progress_activity"})}function l({message:e="Loading..."}){return(0,n.jsxs)("div",{className:"fixed inset-0 z-50 flex flex-col items-center justify-center bg-bg",children:[(0,n.jsx)(s,{size:"xl"}),(0,n.jsx)("p",{className:"mt-4 text-muted",children:e})]})}function d({className:e,...t}){return(0,n.jsx)("div",{"aria-hidden":"true",className:(0,o.cn)("animate-pulse rounded-[10px] bg-raised",e),...t})}function c({lines:e=3,className:t}){let r=Array.from({length:e},(e,t)=>t);return(0,n.jsx)("div",{className:(0,o.cn)("flex flex-col gap-2",t),"aria-hidden":"true",children:r.map(e=>(0,n.jsx)(d,{className:(0,o.cn)("h-3",e===r.length-1?"w-2/3":"w-full")},`line-${e}`))})}function u(){return(0,n.jsxs)("div",{className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,n.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,n.jsx)(d,{className:"h-4 w-24"}),(0,n.jsx)(d,{className:"size-10 rounded-[10px]"})]}),(0,n.jsx)(d,{className:"mb-2 h-8 w-16"}),(0,n.jsx)(d,{className:"h-3 w-20"})]})}function p({type:e="spinner",...t}){switch(e){case"page":return(0,n.jsx)(l,{...t});case"skeleton":return(0,n.jsx)(d,{...t});case"card":return(0,n.jsx)(u,{...t});default:return(0,n.jsx)(s,{...t})}}d.propTypes={className:a().string},c.propTypes={lines:a().number,className:a().string}},28745:(e,t,r)=>{"use strict";r.d(t,{vQ:()=>a,UY:()=>d,Nu:()=>o,B2:()=>l,h0:()=>s});var n=r(4553),i=r(41463);let a={name:`${n.Hc.name} Proxy`,description:"AI infrastructure management",version:"1.0.1",build:{channel:i.env.NEXT_PUBLIC_BUILD_CHANNEL||"",sha:i.env.NEXT_PUBLIC_BUILD_SHA||""}},o={changelogUrl:"https://raw.githubusercontent.com/tokenhop/tokenhop/refs/heads/master/CHANGELOG.md"},s={appPort:20128},l={storageKey:"theme",defaultTheme:"dark"},d={maxLines:200,pollIntervalMs:1e3}},35652:(e,t,r)=>{"use strict";var n,i=r(41463);let a=Object.freeze(["9router","tokenhop"]),o="tokenhop";function s(e,t){if(a.includes(e))return e;let r=a.map(e=>`"${e}"`).join(", ");throw Error(`${t}: unknown brand ${JSON.stringify(e)}; allowed values: ${r}`)}let l=""==(n="tokenhop")?o:s(n,"NEXT_PUBLIC_BRAND"),d=Object.freeze({name:"tokenhop",slug:"tokenhop",envPrefix:"TOKENHOP_",headerPrefix:"x-tokenhop-",jcodeApiKeyEnv:"JCODE_TOKENHOP_API_KEY",defaultApiKey:"sk_tokenhop",dataDirName:"tokenhop",samlIssuerDefault:"urn:tokenhop:sp",mitmCaCommonName:"tokenhop MITM Root CA",mitmCaOrg:"tokenhop",mitmCertFile:"tokenhop-root-ca.crt",pidFile:"tokenhop.pid",autostartLabel:"dev.tokenhop.autostart",autostartDesktopFile:"tokenhop.desktop",autostartVbsFile:"tokenhop.vbs",clientConfigKey:"tokenhop",customModelIdPrefix:"custom:tokenhop-",storageKeyPrefix:"tokenhop.",eventPrefix:"tokenhop:",backupFilePrefix:"tokenhop-backup-",npmPackage:"tokenhop",appPackage:"tokenhop-app",repoSlug:"tokenhop/tokenhop",repoUrl:"https://github.com/tokenhop/tokenhop",imageName:"ghcr.io/tokenhop/tokenhop",websiteUrl:"https://tokenhop.ai",docsUrl:"https://tokenhop.dev",wordmark:"tokenhop",favicon:"/brand/favicon.svg",faviconIco:"/brand/favicon.ico",appIcon192:"/brand/icons/icon-192.svg",appIcon512:"/brand/icons/icon-512.svg",trayIconName:"icon-tokenhop",trayIconTemplate:!0}),c=Object.freeze({names:Object.freeze(["9Router","9router"]),slug:"9router",envPrefixes:Object.freeze(["NINEROUTER_","NINE_ROUTER_"]),headerPrefix:"x-9router-",jcodeApiKeyEnv:"JCODE_9ROUTER_API_KEY",defaultApiKey:"sk_9router",dataDirName:"9router",samlIssuerDefault:"urn:9router:sp",mitmCaCommonName:"9Router MITM Root CA",mitmCaOrg:"9Router",mitmCertFile:"9router-root-ca.crt",pidFile:"9router.pid",autostartLabel:"com.9router.autostart",autostartDesktopFile:"9router.desktop",autostartVbsFile:"9router.vbs",clientConfigKeys:Object.freeze(["9router","9Router"]),customModelIdPrefix:"custom:9Router-",storageKeyPrefix:"9router.",eventPrefix:"9router:",backupFilePrefix:"9router-backup-",npmPackage:"9router",appPackage:"9router-app",repoSlug:"yandy-r/9router",repoUrl:"https://github.com/yandy-r/9router",imageName:"ghcr.io/yandy-r/9router",wordmark:"router",favicon:"/favicon.svg",faviconIco:"/favicon.ico",appIcon192:"/icons/icon-192.svg",appIcon512:"/icons/icon-512.svg",trayIconName:"icon",trayIconTemplate:!1}),u=Object.freeze({kimiPlatform:"9router",clineUserAgentProduct:"9Router",clineClientType:"9router",devinMcpClientName:"9router",coworkMcpClientName:"9router",cursorMcpProvider:"9router",glmMcpClientName:"9router",xaiUserAgent:"grok-cli/9router",xiaomiKeyNamePrefix:"9router-xmd-",githubUserAgent:"9Router",proxyTestUserAgent:"9Router",denoRelayKind:"9router-relay"}),p=new Set(["repoSlug","repoUrl","imageName","websiteUrl","docsUrl"]),m={name:"names",envPrefix:"envPrefixes",clientConfigKey:"clientConfigKeys"},g="tokenhop"===l?d:Object.freeze(Object.fromEntries(Object.keys(d).map(e=>{let t;return[e,p.has(e)?d[e]:Array.isArray(t=c[m[e]||e])?t[0]:t]}))),f=new Set;function h(e,t,r){if("tokenhop"!==l)return!1;let n=`${e}\u0000${t}`;return!f.has(n)&&(f.add(n),console.warn(`[tokenhop] deprecated ${e} "${t}" → use "${r}" (legacy support ends in v2.0.0)`),!0)}let x=/^[A-Z0-9]+(_[A-Z0-9]+)*$/;function b(e){if("string"!=typeof e||!x.test(e))throw Error(`envName: invalid suffix ${JSON.stringify(e)}; expected e.g. "PEER_TOKEN"`);return d.envPrefix+e}let v=/^(?!x-)[a-z0-9]+(-[a-z0-9]+)*$/;function y(e){return g.headerPrefix+function(e,t){if("string"!=typeof e||!v.test(e))throw Error(`${t}: invalid header name ${JSON.stringify(e)}; expected a bare lowercase name like "connection-id"`);return e}(e,"header")}e.exports={BRAND_IDS:a,DEFAULT_BRAND_ID:o,ACTIVE_BRAND_ID:l,isActiveBrand:function(e){return s(e,"isActiveBrand")===l},BRAND:d,LEGACY:c,ACTIVE:g,UPSTREAM_CLIENT_IDS:u,envName:b,readEnv:function(e,t=i.env){let r=b(e);if(void 0!==t[r])return t[r];for(let n of c.envPrefixes){let i=n+e;if(void 0!==t[i])return h("env var",i,r),t[i]}},warnLegacyOnce:h,header:y,legacyHeaderNames:function(e){let t=y(e);return[c.headerPrefix+e].filter(e=>e!==t)}}},49864:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>O});var n=r(95155),i=r(12115),a=r(92542),o=r(84588),s=r(96975),l=r(19123),d=r(56006),c=r(14051),u=r.n(c),p=r(37206),m=r(1620);function g(e,t){return"function"!=typeof getComputedStyle?t:getComputedStyle(document.documentElement).getPropertyValue(e).trim()||t}let f="signal-dark",h="signal-light";function x(e){e.editor.defineTheme(f,{base:"vs-dark",inherit:!0,rules:[],colors:{"editor.background":g("--signal-panel","#15171D"),"editor.foreground":g("--signal-text","#F3F2EE"),"editor.lineHighlightBackground":g("--signal-raised","#1C1F27"),"editorLineNumber.foreground":g("--signal-subtle","#838898"),"editorLineNumber.activeForeground":g("--signal-text","#F3F2EE"),"editorCursor.foreground":g("--signal-coral","#FF6A48"),"editor.selectionBackground":`${g("--signal-coral","#FF6A48")}33`,"editor.inactiveSelectionBackground":`${g("--signal-coral","#FF6A48")}22`,"editorWidget.background":g("--signal-panel","#15171D"),"editorWidget.border":g("--signal-line","#2A2E39"),"editorHoverWidget.background":g("--signal-raised","#1C1F27"),"editorHoverWidget.border":g("--signal-line","#2A2E39"),"editorSuggestWidget.background":g("--signal-panel","#15171D"),"editorSuggestWidget.border":g("--signal-line","#2A2E39"),"editorGutter.background":g("--signal-panel","#15171D"),"editor.lineHighlightBorder":"#00000000"}}),e.editor.defineTheme(h,{base:"vs",inherit:!0,rules:[],colors:{"editor.background":g("--signal-panel","#FFFFFF"),"editor.foreground":g("--signal-text","#16171C"),"editor.lineHighlightBackground":g("--signal-raised","#F7F5EF"),"editorLineNumber.foreground":g("--signal-subtle","#6C7080"),"editorLineNumber.activeForeground":g("--signal-text","#16171C"),"editorCursor.foreground":g("--signal-coral","#CF4323"),"editor.selectionBackground":`${g("--signal-coral","#CF4323")}33`,"editor.inactiveSelectionBackground":`${g("--signal-coral","#CF4323")}22`,"editorWidget.background":g("--signal-panel","#FFFFFF"),"editorWidget.border":g("--signal-line","#E2DED3"),"editorHoverWidget.background":g("--signal-raised","#F7F5EF"),"editorHoverWidget.border":g("--signal-line","#E2DED3"),"editorSuggestWidget.background":g("--signal-panel","#FFFFFF"),"editorSuggestWidget.border":g("--signal-line","#E2DED3"),"editorGutter.background":g("--signal-panel","#FFFFFF"),"editor.lineHighlightBorder":"#00000000"}})}var b=r(25086),v=r(11059),y=r(58897);let k=(0,p.default)(()=>r.e(8202).then(r.bind(r,28202)),{loadableGenerated:{webpack:()=>[28202]},ssr:!1,loading:()=>(0,n.jsx)(b.Skeleton,{className:"h-[400px] w-full rounded-none border-0"})}),w={minimap:{enabled:!1},fontSize:12,lineNumbers:"on",scrollBeyondLastLine:!1,wordWrap:"on",automaticLayout:!0};function N({step:e,isExpanded:t,content:r,onToggle:i,onContentChange:s,onLoad:d,loadLoading:c,action:u}){let{isDark:p}=(0,m.D)(),{copy:g,copied:b,error:j}=(0,v.C)();return(0,n.jsx)(o.default,{padding:"none",children:(0,n.jsxs)("div",{className:"space-y-3 p-4",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,n.jsxs)("button",{type:"button",onClick:()=>i(e.id),"aria-expanded":t,"aria-controls":`translator-step-${e.id}-editor`,className:"flex min-w-0 flex-1 items-center gap-2 text-start focus-visible:outline-none focus-visible:shadow-focus",children:[(0,n.jsx)("span",{className:`material-symbols-outlined shrink-0 text-[20px] text-muted transition-transform ${t?"rotate-180":""}`,"aria-hidden":"true",children:"expand_more"}),(0,n.jsx)("span",{className:"w-4 shrink-0 font-mono text-xs text-subtle",children:e.id}),(0,n.jsx)("span",{className:"truncate text-sm font-semibold text-text",children:e.label}),(0,n.jsx)("span",{className:"hidden shrink-0 font-mono text-xs text-subtle sm:inline",children:e.file}),r&&(0,n.jsxs)(l.default,{variant:"neutral",size:"sm",className:"shrink-0",children:[r.length," chars"]})]}),!t&&(0,n.jsxs)("div",{className:"flex shrink-0 gap-1",children:[(0,n.jsx)(a.default,{size:"sm",variant:"ghost",icon:"folder_open","aria-label":`Load ${e.label}`,loading:c,onClick:d}),u]})]}),t&&(0,n.jsxs)("div",{id:`translator-step-${e.id}-editor`,children:[(0,n.jsx)("p",{className:"mb-2 text-xs text-muted",children:e.desc}),(0,n.jsx)("div",{className:"overflow-hidden rounded-xl border border-line",children:(0,n.jsx)(k,{height:"400px",defaultLanguage:"text"===e.lang?"plaintext":"json",language:"text"===e.lang?"plaintext":"json",value:r,onChange:t=>s(e.id,t||""),beforeMount:x,theme:p?f:h,options:w})}),(0,n.jsxs)("div",{className:"mt-3 flex flex-wrap gap-2",children:[(0,n.jsx)(a.default,{size:"sm",variant:"secondary",icon:"folder_open",loading:c,onClick:d,children:"Load"}),(0,n.jsx)(a.default,{size:"sm",variant:"secondary",icon:"data_object",onClick:()=>{let t=function(e){try{return JSON.stringify(JSON.parse(e),null,2)}catch{return null}}(r);null!==t&&s(e.id,t)},children:"Format"}),(0,n.jsx)(a.default,{size:"sm",variant:"secondary",icon:b===`translator-step-${e.id}`?"check":j===`translator-step-${e.id}`?"error":"content_copy",onClick:()=>{r&&g(r,`translator-step-${e.id}`)},children:b===`translator-step-${e.id}`?"Copied":j===`translator-step-${e.id}`?"Couldn't copy":"Copy"}),(0,n.jsx)(y.default,{copied:b,error:j,id:`translator-step-${e.id}`}),u]})]})]})})}N.propTypes={step:u().shape({id:u().number.isRequired,label:u().string.isRequired,file:u().string.isRequired,lang:u().string.isRequired,desc:u().string.isRequired}).isRequired,isExpanded:u().bool,content:u().string,onToggle:u().func.isRequired,onContentChange:u().func.isRequired,onLoad:u().func.isRequired,loadLoading:u().bool,action:u().node};let j=[{id:1,label:"Client request",file:"1_req_client.json",lang:"json",desc:"Raw request from client"},{id:2,label:"Source body",file:"2_req_source.json",lang:"json",desc:"After initial conversion"},{id:3,label:"OpenAI intermediate",file:"3_req_openai.json",lang:"json",desc:"source → openai"},{id:4,label:"Target request",file:"4_req_target.json",lang:"json",desc:"openai → target + URL + headers"},{id:5,label:"Provider response",file:"5_res_provider.txt",lang:"text",desc:"Raw SSE from provider"},{id:6,label:"OpenAI response",file:"6_res_openai.txt",lang:"text",desc:"target → openai (response)"},{id:7,label:"Client response",file:"7_res_client.txt",lang:"text",desc:"Final response to client"}],C={sourceFormat:"info",targetFormat:"brand",provider:"live",model:"neutral"};function O(){let[e,t]=(0,i.useState)({}),[r,c]=(0,i.useState)({1:!0}),[u,p]=(0,i.useState)({}),[m,g]=(0,i.useState)(""),[f,h]=(0,i.useState)(null),x=(e,t)=>p(r=>({...r,[e]:t})),b=(0,i.useRef)(0),v=(0,i.useRef)(null),y=(e,r)=>{if(t(t=>({...t,[e]:r})),1===e){b.current+=1;let e=b.current;clearTimeout(v.current),v.current=setTimeout(()=>{_(r,e)},400)}},k=e=>c(t=>({...t,[e]:!t[e]})),w=e=>c(Object.fromEntries(j.map(t=>[t.id,t.id===e]))),O=async e=>{let t=j.find(t=>t.id===e);g(""),x(`load-${e}`,!0);try{let r=await fetch(`/api/translator/load?file=${t.file}`),n=await r.json();n.success?y(e,n.content):g(n.error||"File not found")}catch(e){g(e.message)}x(`load-${e}`,!1)},_=async(e,t)=>{try{let r="string"==typeof e?JSON.parse(e):e,n=await fetch("/api/translator/translate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({step:1,body:r})}),i=await n.json();i.success&&(void 0===t||t===b.current)&&h(i.result)}catch{}},E=(e,t)=>fetch("/api/translator/save",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({file:e,content:t})}).catch(()=>{}),F=async()=>{g(""),x("toOpenAI",!0);try{let t=e[1],r=JSON.parse(t);E("1_req_client.json",t),E("2_req_source.json",JSON.stringify({timestamp:new Date().toISOString(),headers:{},body:r.body||r},null,2));let n=await fetch("/api/translator/translate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({step:2,body:r})}),i=await n.json();if(!i.success)return void g(i.error);let a=JSON.stringify(i.result.body,null,2);y(3,a),w(3)}catch(e){g(e.message)}x("toOpenAI",!1)},S=async()=>{g(""),x("toTarget",!0);try{let t=e[3],r=JSON.parse(t);E("3_req_openai.json",t);let n=await fetch("/api/translator/translate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({step:3,body:{...r,provider:f?.provider,model:f?.model}})}),i=await n.json();if(!i.success)return void g(i.error);let a={...i.result,provider:f?.provider,model:f?.model};y(4,JSON.stringify(a,null,2)),w(4)}catch(e){g(e.message)}x("toTarget",!1)},T=async()=>{g(""),x("send",!0);try{let t=e[4],r=JSON.parse(t);E("4_req_target.json",t);let n=r.provider||f?.provider,i=r.model||f?.model;if(!n||!i)return void g("Missing provider or model. Please run step 1 first to detect them.");let a=await fetch("/api/translator/send",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:n,model:i,body:r.body||r})});if(!a.ok){let e=await a.json().catch(()=>({error:a.statusText}));g(e.error||"Send failed");return}let o=a.body.getReader(),s=new TextDecoder,l="";for(;;){let{done:e,value:t}=await o.read();if(e)break;l+=s.decode(t,{stream:!0})}y(5,l),w(5),await fetch("/api/translator/save",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({file:"5_res_provider.txt",content:l})})}catch(e){g(e.message)}finally{x("send",!1)}};return(0,n.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,n.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{className:"text-xs font-semibold uppercase tracking-[0.08em] text-subtle",children:"Debug"}),(0,n.jsx)("h2",{className:"font-display text-[28px] font-bold tracking-[-0.02em] text-text",children:"Translator debug"}),(0,n.jsx)("p",{className:"mt-1 text-sm text-muted",children:"Replay request flow — matches log files"})]}),f&&(0,n.jsx)(o.default,{padding:"xs",className:"flex flex-wrap items-center gap-2",role:"status",children:["sourceFormat","targetFormat","provider","model"].map(e=>(0,n.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:["provider"===e&&f.provider&&(0,n.jsx)(s.default,{providerId:f.provider,size:"sm"}),(0,n.jsxs)(l.default,{variant:C[e],size:"sm",children:[(0,n.jsxs)("span",{className:"opacity-70",children:[e,":"]})," ",f[e]]})]},e))})]}),m&&(0,n.jsx)(d.default,{variant:"err",title:"Translator step failed",children:m}),j.map(t=>{var i;return(0,n.jsx)(N,{step:t,isExpanded:!!r[t.id],content:e[t.id]||"",onToggle:k,onContentChange:y,onLoad:()=>O(t.id),loadLoading:u[`load-${t.id}`],action:1===(i=t.id)?(0,n.jsx)(a.default,{size:"sm",icon:"arrow_forward",loading:u.toOpenAI,onClick:F,children:"To OpenAI"}):3===i?(0,n.jsx)(a.default,{size:"sm",icon:"arrow_forward",loading:u.toTarget,onClick:S,children:"To target"}):4===i?(0,n.jsx)(a.default,{size:"sm",icon:"send",loading:u.send,onClick:T,children:"Send"}):null},t.id)})]})}},50770:(e,t,r)=>{"use strict";r.d(t,{PK:()=>g,S3:()=>l,XY:()=>s,lN:()=>d,pN:()=>h,pi:()=>m,r4:()=>p,vE:()=>u,vO:()=>a});let n={connected:"ok",healthy:"ok",active:"ok",ok:"ok",success:"ok",cooldown:"warn",warning:"warn",low:"warn",warn:"warn",error:"err",empty:"err",err:"err",oauth:"info",info:"info","api-key":"brand",brand:"brand",live:"live",disabled:"neutral",off:"neutral",neutral:"neutral"},i={ok:"bg-ok-bg text-ok",warn:"bg-warn-bg text-warn",err:"bg-err-bg text-err",info:"bg-sky-bg text-sky-ink",brand:"bg-coral-bg text-coral-ink",live:"bg-lime-bg text-lime-ink",neutral:"bg-raised text-muted shadow-[inset_0_0_0_1px_var(--signal-line)]"},a={xs:"h-5 px-2 text-[11px]",sm:"h-5 px-2 text-[11px]",md:"h-6 px-2.5 text-xs",lg:"h-7 px-3 text-sm"},o={default:"neutral",primary:"brand",success:"ok",warning:"warn",error:"err"},s=[...new Set([...Object.keys(i),...Object.keys(o),...Object.keys(n)])];function l(e="neutral",t="md"){let r=a[t];if(!r)throw Error(`pillClasses: unknown size "${t}"`);return`${i[function(e){if(i[e])return e;let t=o[e]??n[e];if(!t)throw Error(`resolvePillVariant: unknown variant "${e}"`);return t}(e)]} ${r}`}let d={ok:"bg-ok",warn:"bg-warn",err:"bg-err",live:"bg-lime",info:"bg-sky",brand:"bg-coral",neutral:"bg-subtle"},c=new Set(["unlimited","credits"]);function u(e,t){if(void 0!==t&&!c.has(t))throw Error(`meterVariant: unknown kind "${t}"`);if("number"!=typeof e||!Number.isFinite(e))throw Error(`meterVariant: expected a finite number, got ${e}`);return"unlimited"===t?"live":"credits"===t?"info":e<=20?"err":e<=45?"warn":"ok"}function p(e){if("number"!=typeof e||!Number.isFinite(e))throw Error(`meterValue: expected a finite number, got ${e}`);return Math.min(100,Math.max(0,e))}let m="border-b border-line",g="whitespace-nowrap text-xs font-semibold text-muted",f={LOG:"signal-terminal-log",INFO:"signal-terminal-info",WARN:"signal-terminal-warn",ERROR:"signal-terminal-error",DEBUG:"signal-terminal-debug"};function h(e){let t=f[e];if(!t)throw Error(`terminalLevelClass: unknown level "${e}"`);return t}},55429:(e,t,r)=>{Promise.resolve().then(r.bind(r,49864))},56006:(e,t,r)=>{"use strict";r.d(t,{default:()=>s});var n=r(95155),i=r(14051),a=r.n(i);let o={info:{classes:"bg-sky-bg text-sky-ink",icon:"info"},warn:{classes:"bg-warn-bg text-warn",icon:"warning"},err:{classes:"bg-err-bg text-err",icon:"error"},ok:{classes:"bg-ok-bg text-ok",icon:"check_circle"}};function s({variant:e="info",title:t,children:r,icon:i,className:a}){let l=o[e];if(!l)throw Error(`Callout: unknown variant "${e}"`);return(0,n.jsxs)("div",{role:"err"===e?"alert":"status",className:`flex gap-3 rounded-xl p-4 text-sm ${l.classes}${a?` ${a}`:""}`,children:[(0,n.jsx)("span",{className:"material-symbols-outlined shrink-0 text-[20px]","aria-hidden":"true",children:i??l.icon}),(0,n.jsxs)("div",{className:"min-w-0 text-text",children:[t&&(0,n.jsx)("p",{className:"font-semibold",children:t}),r&&(0,n.jsx)("div",{className:"text-muted",children:r})]})]})}s.propTypes={variant:a().oneOf(Object.keys(o)),title:a().node,children:a().node,icon:a().string,className:a().string}},58897:(e,t,r)=>{"use strict";r.d(t,{default:()=>o});var n=r(95155),i=r(14051),a=r.n(i);function o({copied:e,error:t,id:r}){let i=e=>null!=e&&(void 0===r||e===r);return(0,n.jsx)("span",{"aria-live":"polite",className:"sr-only",children:i(t)?"Couldn't copy":i(e)?"Copied":""})}o.propTypes={copied:a().string,error:a().string,id:a().string}},84588:(e,t,r)=>{"use strict";r.d(t,{default:()=>l});var n=r(95155),i=r(14051),a=r.n(i),o=r(31474);let s={none:"",xs:"p-3",sm:"p-4",md:"p-6",lg:"p-8"};function l({children:e,title:t,subtitle:r,icon:i,action:a,as:d="h2",padding:c="md",hover:u=!1,elev:p=!1,className:m,role:g,...f}){if(void 0===s[c])throw Error(`Card: unknown padding "${c}"`);let h=g||(f["aria-label"]||f["aria-labelledby"]?"region":void 0);return(0,n.jsxs)("div",{role:h,className:(0,o.cn)("rounded-2xl border border-line bg-panel shadow-card",u&&"cursor-pointer transition-colors duration-150 hover:border-coral/40",s[c],m),...f,children:[(t||a)&&(0,n.jsx)(l.Header,{title:t,subtitle:r,icon:i,actions:a,as:d,className:"mb-4"}),e]})}l.propTypes={children:a().node,title:a().node,subtitle:a().node,icon:a().string,action:a().node,as:a().oneOf(["h2","h3","h4"]),padding:a().oneOf(Object.keys(s)),hover:a().bool,elev:a().bool,className:a().string,role:a().string},l.Header=function({title:e,subtitle:t,icon:r,actions:i,as:a="h2",className:s}){return(0,n.jsxs)("div",{className:(0,o.cn)("flex flex-wrap items-center justify-between gap-3",s),children:[(0,n.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[r&&(0,n.jsx)("span",{className:"flex size-10 shrink-0 items-center justify-center rounded-[10px] bg-coral-bg text-coral-ink",children:(0,n.jsx)("span",{className:"material-symbols-outlined text-[20px]","aria-hidden":"true",children:r})}),(0,n.jsxs)("div",{className:"min-w-0",children:[e&&(0,n.jsx)(a,{className:"font-display text-lg font-bold text-text",children:e}),t&&(0,n.jsx)("p",{className:"text-sm text-muted",children:t})]})]}),i&&(0,n.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:i})]})},l.Header.propTypes={title:a().node,subtitle:a().node,icon:a().string,actions:a().node,as:a().oneOf(["h2","h3","h4"]),className:a().string},l.Section=function({children:e,className:t,...r}){return(0,n.jsx)("div",{className:(0,o.cn)("rounded-xl border border-line bg-raised p-4",t),...r,children:e})},l.Row=function({children:e,className:t,...r}){return(0,n.jsx)("div",{className:(0,o.cn)("-mx-3 border-b border-line p-3 px-3 transition-colors last:border-b-0 hover:bg-raised",t),...r,children:e})},l.ListItem=function({children:e,actions:t,className:r,...i}){return(0,n.jsxs)("div",{className:(0,o.cn)("group -mx-3 flex items-center justify-between border-b border-line p-3 px-3 transition-colors last:border-b-0 hover:bg-raised",r),...i,children:[(0,n.jsx)("div",{className:"min-w-0 flex-1",children:e}),t&&(0,n.jsx)("div",{className:"flex items-center gap-1 opacity-0 transition-opacity group-focus-within:opacity-100 group-hover:opacity-100",children:t})]})}},90085:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});var n=r(1934),i=r(31692),a=r(28745);function o(e){let t=document.documentElement,r=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";"dark"===("system"===e?r:e)?t.classList.add("dark"):t.classList.remove("dark")}let s=(0,n.v)((0,i.Zr)((e,t)=>({theme:a.B2.defaultTheme,setTheme:t=>{e({theme:t}),o(t)},toggleTheme:()=>{let r="dark"===t().theme?"light":"dark";e({theme:r}),o(r)},initTheme:()=>{o(t().theme)}}),{name:a.B2.storageKey}))},92542:(e,t,r)=>{"use strict";r.d(t,{default:()=>c});var n=r(95155),i=r(98500),a=r.n(i),o=r(14051),s=r.n(o),l=r(31474),d=r(4650);function c({children:e,variant:t="primary",size:r="md",icon:i,iconRight:o,href:s,disabled:u=!1,loading:p=!1,fullWidth:m=!1,className:g,...f}){let h=(0,l.cn)("inline-flex items-center justify-center gap-2 font-semibold transition-all duration-150 ease-out cursor-pointer","active:scale-[0.97] focus-visible:outline-none focus-visible:shadow-focus","disabled:opacity-50 disabled:cursor-not-allowed disabled:active:scale-100","aria-disabled:opacity-50 aria-disabled:cursor-not-allowed aria-disabled:active:scale-100",(0,d.V7)(t,r),m&&"w-full",g),x=(0,n.jsxs)(n.Fragment,{children:[p?(0,n.jsx)("span",{className:"material-symbols-outlined animate-spin text-[18px]","aria-hidden":"true",children:"progress_activity"}):i?(0,n.jsx)("span",{className:"material-symbols-outlined text-[18px]","aria-hidden":"true",children:i}):null,e,o&&!p&&(0,n.jsx)("span",{className:"material-symbols-outlined text-[18px] rtl:-scale-x-100","aria-hidden":"true",children:o})]});if(s&&!(u||p)){let{type:e,...t}=f;return t.className=h,/^(https?:|mailto:|tel:|#)/.test(s)?(0,n.jsx)("a",{href:s,...t,children:x}):(0,n.jsx)(a(),{href:s,...t,children:x})}return(0,n.jsx)("button",{className:h,disabled:u||p,"aria-busy":p||void 0,...f,children:x})}c.propTypes={children:s().node,variant:s().oneOf(Object.keys(d.Ck)),size:s().oneOf(Object.keys(d.GO)),icon:s().string,iconRight:s().string,href:s().string,disabled:s().bool,loading:s().bool,fullWidth:s().bool,className:s().string}},96975:(e,t,r)=>{"use strict";r.d(t,{default:()=>u});var n=r(95155),i=r(14051),a=r.n(i),o=r(12115),s=r(7256),l=r(8247);let d={sm:{tile:"size-6 rounded-md",text:"text-[10px]"},md:{tile:"size-9 rounded-[10px]",text:"text-sm"},lg:{tile:"size-14 rounded-[14px]",text:"text-lg"}},c={ok:"bg-ok",warn:"bg-warn",err:"bg-err",info:"bg-sky",live:"bg-lime",neutral:"bg-line"};function u({providerId:e,size:t="md",status:r,brand:i,iconSrc:a,className:p}){let[m,g]=(0,o.useState)(null),f=d[t];if(!f)throw Error(`ProviderTile: unknown size "${t}"`);if(void 0!==r&&!c[r])throw Error(`ProviderTile: unknown status "${r}"`);let h=(0,s.rs)(e),x=i??(0,s.Do)(h),b=m===h?null:a??(0,l.HY)(h),v=b?{style:{backgroundColor:`color-mix(in srgb, ${x.color} 8%, #ffffff)`},className:""}:{style:{backgroundColor:x.color},className:`font-display font-bold text-white shadow-[inset_0_0_0_1px_rgba(255,255,255,0.14)] ${f.text}`};return(0,n.jsxs)("span",{"aria-hidden":"true",title:e,style:v.style,className:`relative inline-flex shrink-0 items-center justify-center ${f.tile} ${v.className}${p?` ${p}`:""}`,children:[b?(0,n.jsx)("img",{src:b,alt:"",loading:"lazy",decoding:"async",className:"size-full rounded-[inherit] object-contain",onError:()=>{(0,l.Kw)(h),g(h)}}):x.monogram,r&&(0,n.jsx)("span",{className:`absolute -end-0.5 -bottom-0.5 size-2.5 rounded-full shadow-[0_0_0_2px_var(--signal-panel)] ${c[r]}`})]})}u.propTypes={providerId:a().string.isRequired,size:a().oneOf(Object.keys(d)),status:a().oneOf(Object.keys(c)),brand:a().shape({color:a().string.isRequired,monogram:a().string.isRequired}),iconSrc:a().string,className:a().string}}},e=>{e.O(0,[1610,1372,2903,8441,3794,7358],()=>e(e.s=55429)),_N_E=e.O()}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1665,9499],{1934:(e,t,n)=>{"use strict";n.d(t,{v:()=>s});var r=n(12115);let a=e=>{let t,n=new Set,r=(e,r)=>{let a="function"==typeof e?e(t):e;if(!Object.is(a,t)){let e=t;t=(null!=r?r:"object"!=typeof a||null===a)?a:Object.assign({},t,a),n.forEach(n=>n(t,e))}},a=()=>t,l={setState:r,getState:a,getInitialState:()=>s,subscribe:e=>(n.add(e),()=>n.delete(e))},s=t=e(r,a,l);return l},l=e=>{let t=e?a(e):a,n=e=>(function(e,t=e=>e){let n=r.useSyncExternalStore(e.subscribe,r.useCallback(()=>t(e.getState()),[e,t]),r.useCallback(()=>t(e.getInitialState()),[e,t]));return r.useDebugValue(n),n})(t,e);return Object.assign(n,t),n},s=e=>e?l(e):l},4553:(e,t,n)=>{"use strict";n.d(t,{DM:()=>s,Hc:()=>c,qt:()=>o,qx:()=>d});var r=n(35652);let{BRAND_IDS:a,DEFAULT_BRAND_ID:l,ACTIVE_BRAND_ID:s,isActiveBrand:i,BRAND:o,LEGACY:d,ACTIVE:c,UPSTREAM_CLIENT_IDS:u,envName:m,readEnv:p,warnLegacyOnce:x,header:f,legacyHeaderNames:h}=n.n(r)()},9911:(e,t,n)=>{"use strict";n.d(t,{default:()=>o});var r=n(95155),a=n(14051),l=n.n(a),s=n(12115),i=n(31474);function o({checked:e=!1,indeterminate:t=!1,onChange:n,label:a,description:l,disabled:d=!1,className:c,id:u,...m}){let p=(0,s.useId)(),x=u||p,f=(0,s.useRef)(null);return(0,s.useEffect)(()=>{f.current&&(f.current.indeterminate=t)},[t]),(0,r.jsxs)("div",{className:(0,i.cn)("flex items-start gap-3",d&&"opacity-50",c),children:[(0,r.jsxs)("span",{className:"relative inline-flex size-11 shrink-0 items-center justify-center -ms-2.5",children:[(0,r.jsx)("input",{...m,ref:f,id:x,type:"checkbox",checked:e,"aria-checked":t?"mixed":e,onChange:e=>n?.(e.target.checked),disabled:d,className:"peer absolute inset-0 m-0 size-full cursor-pointer opacity-0 disabled:cursor-not-allowed"}),(0,r.jsx)("span",{"aria-hidden":"true",className:(0,i.cn)("pointer-events-none flex size-[22px] items-center justify-center rounded-xs border border-line bg-raised","text-transparent transition-colors duration-150","peer-checked:border-transparent peer-checked:bg-coral peer-checked:text-on-coral","peer-focus-visible:shadow-focus peer-disabled:cursor-not-allowed",t&&"border-transparent bg-coral text-on-coral"),children:(0,r.jsx)("span",{className:"material-symbols-outlined text-[16px] font-bold",children:t?"remove":"check"})})]}),(a||l)&&(0,r.jsxs)("label",{htmlFor:x,className:"flex cursor-pointer flex-col pt-2",children:[a&&(0,r.jsx)("span",{className:"text-sm font-medium text-text",children:a}),l&&(0,r.jsx)("span",{className:"text-xs text-muted",children:l})]})]})}o.propTypes={checked:l().bool,indeterminate:l().bool,onChange:l().func,label:l().node,description:l().node,disabled:l().bool,className:l().string,id:l().string}},20446:(e,t,n)=>{"use strict";n.d(t,{default:()=>c});var r=n(95155),a=n(14051),l=n.n(a),s=n(12115),i=n(31474),o=n(4650);let d=["ArrowLeft","ArrowRight","Home","End"];function c({tabs:e=[],value:t,defaultValue:n,onChange:a,className:l,id:u,"aria-label":m,"aria-labelledby":p,...x}){let f=(0,s.useId)(),h=u||f,b=(0,s.useRef)([]),[g,v]=(0,s.useState)(n??e[0]?.value),j=void 0!==t?t:g,y=Math.max(0,e.findIndex(e=>e.value===j)),k=e=>{void 0===t&&v(e),a?.(e)};return(0,r.jsxs)("div",{...x,className:(0,i.cn)("flex flex-col",l),children:[(0,r.jsx)("div",{role:"tablist","aria-label":m,"aria-labelledby":p,"aria-orientation":"horizontal",className:"flex items-center gap-1 border-b border-line overflow-x-auto",children:e.map((t,n)=>{let a=n===y;return(0,r.jsxs)("button",{ref:e=>{b.current[n]=e},type:"button",role:"tab",id:`${h}-tab-${t.value}`,"aria-selected":a,"aria-controls":`${h}-panel-${t.value}`,tabIndex:a?0:-1,onClick:()=>k(t.value),onKeyDown:t=>((t,n)=>{if(!d.includes(t.key)||0===e.length)return;t.preventDefault();let r=(0,o.lZ)(n,t.key,{length:e.length,rtl:t.currentTarget.closest("[dir]")?.getAttribute("dir")==="rtl"});b.current[r]?.focus(),k(e[r].value)})(t,n),className:(0,i.cn)("relative inline-flex h-11 shrink-0 items-center px-3 text-sm font-semibold transition-colors focus-visible:shadow-focus",a?"text-text":"text-muted hover:text-text"),children:[t.label,null!=t.count&&(0,r.jsx)("span",{className:"ms-1.5 font-mono text-xs text-muted",children:t.count}),(0,r.jsx)("span",{"aria-hidden":"true",className:(0,i.cn)("absolute inset-x-2 -bottom-px h-0.5 rounded-full bg-coral transition-opacity",a?"opacity-100":"opacity-0")})]},t.value)})}),e.map((e,t)=>(0,r.jsx)("div",{role:"tabpanel",id:`${h}-panel-${e.value}`,"aria-labelledby":`${h}-tab-${e.value}`,hidden:t!==y,tabIndex:(0,o.qM)(e.content)?0:void 0,children:e.content},e.value))]})}c.propTypes={tabs:l().arrayOf(l().shape({value:l().oneOfType([l().string,l().number]).isRequired,label:l().node.isRequired,count:l().oneOfType([l().string,l().number]),content:l().node})),value:l().oneOfType([l().string,l().number]),defaultValue:l().oneOfType([l().string,l().number]),onChange:l().func,className:l().string,id:l().string,"aria-label":function(e,t,n){return e["aria-label"]||e["aria-labelledby"]?null:Error(`${n}: provide "aria-label" or "aria-labelledby".`)},"aria-labelledby":l().string}},21341:(e,t,n)=>{"use strict";n.d(t,{default:()=>W});var r=n(95155),a=n(12115),l=n(4553),s=n(92542),i=n(9911),o=n(10185),d=n(6587),c=n(11910),u=n(15729),m=n(61640),p=n(28067),x=n(99380),f=n(20446),h=n(52024),b=n(98542),g=n(50744),v=n(38587),j=n(19123),y=n(56061),k=n(86465);function N(){return(0,r.jsxs)("section",{"aria-labelledby":"kit-pills",className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,r.jsx)("h2",{id:"kit-pills",className:"font-display text-xl font-bold",children:"Pills, badges, chips"}),(0,r.jsxs)("div",{className:"mt-4 flex flex-wrap gap-2",children:[(0,r.jsx)(j.default,{variant:"ok",dot:!0,children:"Connected"}),(0,r.jsx)(j.default,{variant:"warn",children:"Cooldown 2m"}),(0,r.jsx)(j.default,{variant:"err",children:"Auth error"}),(0,r.jsx)(j.default,{variant:"info",children:"OAuth"}),(0,r.jsx)(j.default,{variant:"live",children:"Free tier"}),(0,r.jsx)(j.default,{variant:"brand",children:"API key"}),(0,r.jsx)(j.default,{variant:"neutral",children:"Off"}),(0,r.jsx)(j.default,{variant:"ok",size:"sm",dot:!0,children:"Compact"})]}),(0,r.jsxs)("div",{className:"mt-4 flex flex-wrap gap-2",children:[(0,r.jsx)(y.default,{variant:"success",dot:!0,size:"sm",children:"Ready"}),(0,r.jsx)(y.default,{variant:"error",size:"sm",children:"Failed"}),(0,r.jsx)(y.default,{variant:"primary",icon:"key",size:"sm",children:"API key"}),(0,r.jsx)(y.default,{variant:"default",size:"sm",children:"Total: 42"})]}),(0,r.jsxs)("div",{className:"mt-4 flex flex-wrap gap-2",children:[(0,r.jsx)(k.default,{model:"cc/claude-sonnet-4-6"}),(0,r.jsx)(k.default,{model:"cx/gpt-5.1-codex"}),(0,r.jsx)(k.default,{model:"openrouter/qwen3-coder"})]})]})}let w=[{bg:"bg-bg",token:"--signal-bg",label:"Ground"},{bg:"bg-panel",token:"--signal-panel",label:"Panel"},{bg:"bg-raised",token:"--signal-raised",label:"Raised"},{bg:"bg-line",token:"--signal-line",label:"Line"},{bg:"bg-text",token:"--signal-text",label:"Text"},{bg:"bg-muted",token:"--signal-muted",label:"Muted"},{bg:"bg-coral",token:"--signal-coral",label:"Coral \xb7 brand"},{bg:"bg-lime",token:"--signal-lime",label:"Lime \xb7 live"},{bg:"bg-sky",token:"--signal-sky",label:"Sky \xb7 info"},{bg:"bg-ok",token:"--signal-ok",label:"OK"},{bg:"bg-warn",token:"--signal-warn",label:"Warn"},{bg:"bg-err",token:"--signal-err",label:"Error"}];function C(){return(0,r.jsxs)("section",{"aria-labelledby":"kit-swatches",className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,r.jsx)("h2",{id:"kit-swatches",className:"font-display text-xl font-bold",children:"Tokens"}),(0,r.jsx)("div",{className:"mt-4 grid grid-cols-3 gap-3 sm:grid-cols-4 lg:grid-cols-6",children:w.map(e=>(0,r.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,r.jsx)("span",{className:`${e.bg} h-[52px] rounded-lg shadow-[inset_0_0_0_1px_var(--signal-line)]`}),(0,r.jsx)("span",{className:"text-xs font-semibold",children:e.label}),(0,r.jsx)("span",{className:"font-mono text-[11px] text-muted",children:e.token})]},e.label))})]})}function E(){return(0,r.jsxs)("section",{"aria-labelledby":"kit-type",className:"flex flex-col gap-3 rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,r.jsx)("h2",{id:"kit-type",className:"font-display text-xl font-bold",children:"Type"}),(0,r.jsxs)("div",{className:"flex flex-wrap items-baseline gap-x-4 gap-y-1",children:[(0,r.jsx)("span",{className:"font-display text-[40px] leading-[1.05] font-bold",children:"Command center"}),(0,r.jsx)("span",{className:"font-mono text-[11px] text-muted",children:"Bricolage Grotesque 700"})]}),(0,r.jsxs)("div",{className:"flex flex-wrap items-baseline gap-x-4 gap-y-1",children:[(0,r.jsx)("span",{dir:"auto",className:"flex-1 text-[15px] leading-[1.5]",children:"One endpoint, 40+ providers, automatic fallback."}),(0,r.jsx)("span",{className:"font-mono text-[11px] text-muted",children:"Geist 400/600"})]}),(0,r.jsxs)("div",{className:"flex flex-wrap items-baseline gap-x-4 gap-y-1",children:[(0,r.jsx)("span",{className:"min-w-0 flex-1 break-all font-mono text-sm",children:"cc/claude-sonnet-4-6 → cx/gpt-5.1-codex"}),(0,r.jsx)("span",{className:"font-mono text-[11px] text-muted",children:"Geist Mono 500"})]})]})}var S=n(96975),O=n(25908);function T(){return(0,r.jsxs)("section",{"aria-labelledby":"kit-tiles",className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,r.jsx)("h2",{id:"kit-tiles",className:"font-display text-xl font-bold",children:"Tiles"}),(0,r.jsxs)("div",{className:"mt-4 flex items-center gap-2.5",children:[(0,r.jsx)(S.default,{providerId:"claude",size:"md",status:"live"}),(0,r.jsx)(S.default,{providerId:"codex",size:"md",status:"warn"}),(0,r.jsx)(S.default,{providerId:"openrouter",size:"md",status:"ok"})]}),(0,r.jsxs)("div",{className:"mt-4 flex items-end gap-3",children:[(0,r.jsx)(S.default,{providerId:"claude",size:"sm"}),(0,r.jsx)(S.default,{providerId:"codex",size:"md"}),(0,r.jsx)(S.default,{providerId:"cursor",size:"lg"})]}),(0,r.jsxs)("div",{className:"mt-6 grid gap-4 sm:grid-cols-2 lg:grid-cols-3",children:[(0,r.jsx)(O.default,{eyebrow:"Requests",value:"2,481",delta:"+12% vs yesterday",sparkline:[3,5,4,7,6,9,8]}),(0,r.jsx)(O.default,{eyebrow:"Tokens in / out",value:"4.2M / 612K",delta:"38% cached",sparkline:[8,6,9,5,7,6,8]}),(0,r.jsx)(O.default,{hero:!0,eyebrow:"Saved by token saver",value:"1.31M",delta:"31% lighter",sparkline:[2,4,3,5,6,7,9]})]})]})}var R=n(44863);function I(){return(0,r.jsxs)("section",{"aria-labelledby":"kit-meters",className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,r.jsx)("h2",{id:"kit-meters",className:"font-display text-xl font-bold",children:"Meters"}),(0,r.jsxs)("div",{className:"mt-4 flex flex-col gap-4",children:[(0,r.jsx)(R.default,{value:76,label:"Healthy account",valueText:"76 percent remaining"}),(0,r.jsx)(R.default,{value:41,label:"Cooling account",valueText:"41 percent remaining"}),(0,r.jsx)(R.default,{value:18,label:"Low account",valueText:"18 percent remaining"}),(0,r.jsx)(R.default,{value:100,kind:"unlimited",label:"Unlimited plan",valueText:"Unlimited"}),(0,r.jsx)(R.default,{value:64,kind:"credits",label:"Credit balance",valueText:"64 percent remaining"}),(0,r.jsx)(R.SegmentedHealthBar,{segments:[{value:82,label:"Work account"},{value:41,label:"Personal account"},{value:100,kind:"unlimited",label:"Backup account"}]})]})]})}var $=n(84588),P=n(56071),L=n(61002);function A(){let[e,t]=(0,a.useState)(!0);return(0,r.jsxs)("section",{"aria-labelledby":"kit-cards",className:"flex flex-col gap-4",children:[(0,r.jsx)("h2",{id:"kit-cards",className:"font-display text-xl font-bold",children:"Cards and settings"}),(0,r.jsx)(P.default,{icon:"shield",title:"Security & access",subtitle:(0,r.jsx)("span",{dir:"auto",children:"Who can reach the dashboard and the API."}),status:"ok",statusLabel:"Protected"}),(0,r.jsxs)($.default,{children:[(0,r.jsx)($.default.Header,{title:"Combos",subtitle:"Fallback chains",actions:(0,r.jsx)(s.default,{variant:"ghost",size:"sm",children:"All combos"})}),(0,r.jsxs)("div",{className:"mt-4 divide-y divide-line",children:[(0,r.jsx)(L.default,{label:"Require API key",description:(0,r.jsx)("span",{dir:"auto",children:"Requests without a valid key get a 401. Needed for the tunnel."}),settingKey:"requireApiKey",control:(0,r.jsx)(b.default,{checked:e,onChange:t,"aria-label":"Require API key"})}),(0,r.jsx)(L.default,{label:"Outbound proxy",description:(0,r.jsx)("span",{dir:"auto",children:"Send OAuth and provider calls through a proxy."}),settingKey:"outboundProxyEnabled",control:(0,r.jsx)(s.default,{variant:"secondary",size:"sm",children:"Test proxy"})})]})]})]})}var z=n(56006),_=n(99312),D=n(25086),K=n(77671),F=n(38794),M=n(65921);let U=[{id:"kit-log-1",time:"14:02:11",level:"LOG",message:"Gateway listening on :20128"},{id:"kit-log-2",time:"14:02:12",level:"INFO",message:"Loaded 14 provider connections"},{id:"kit-log-3",time:"14:03:40",level:"WARN",message:"gemini-cli rate limited, cooling down 2m 14s"},{id:"kit-log-4",time:"14:03:41",level:"ERROR",message:"kimi token refresh failed (401)"},{id:"kit-log-5",time:"14:03:42",level:"DEBUG",message:"combo coder -> openrouter/qwen3-coder"}];function q(){let e=(0,M.i)(),[t,n]=(0,a.useState)(0);return(0,r.jsxs)("section",{"aria-labelledby":"kit-feedback",className:"flex flex-col gap-4",children:[(0,r.jsx)("h2",{id:"kit-feedback",className:"font-display text-xl font-bold",children:"Feedback"}),(0,r.jsxs)("div",{className:"grid gap-3 md:grid-cols-2",children:[(0,r.jsx)(z.default,{variant:"info",title:"Info",children:(0,r.jsx)("span",{dir:"auto",children:"Point any client at your endpoint."})}),(0,r.jsx)(z.default,{variant:"warn",title:"Cooling down",children:(0,r.jsx)("span",{dir:"auto",children:"Gemini CLI hit a rate limit."})}),(0,r.jsx)(z.default,{variant:"err",title:"Sign-in expired",children:(0,r.jsx)("span",{dir:"auto",children:"Requests are skipping this provider."})}),(0,r.jsx)(z.default,{variant:"ok",title:"Saved",children:(0,r.jsx)("span",{dir:"auto",children:"All changes saved."})})]}),(0,r.jsx)("div",{className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,r.jsx)(s.default,{variant:"secondary",size:"sm",icon:"undo",onClick:()=>{e.error("Couldn't save the combo. Your previous version is still active.",{action:{label:"Undo",onSelect:()=>{n(e=>e+1),e.success("Undone")}}})},children:"Error toast with undo"}),(0,r.jsx)("p",{"aria-live":"polite",className:"text-xs text-muted",children:t>0?`Undo pressed ${t} time${1===t?"":"s"}.`:""})]})}),(0,r.jsx)("div",{className:"rounded-2xl border border-line bg-panel shadow-card",children:(0,r.jsx)(_.default,{icon:"hub",title:"No providers yet",body:(0,r.jsx)("span",{dir:"auto",children:"Connect a provider to start routing traffic through your endpoint."}),action:(0,r.jsx)(s.default,{icon:"add",children:"Add provider"})})}),(0,r.jsxs)("div",{className:"grid gap-4 md:grid-cols-3",children:[(0,r.jsx)(D.CardSkeleton,{}),(0,r.jsxs)("div",{className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,r.jsx)(D.Skeleton,{className:"mb-3 h-5 w-32"}),(0,r.jsx)(D.SkeletonText,{lines:3})]}),(0,r.jsx)("div",{className:"flex items-center justify-center rounded-2xl border border-line bg-panel p-6 shadow-card",children:(0,r.jsx)(D.Spinner,{size:"lg"})})]}),(0,r.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[(0,r.jsxs)("div",{className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,r.jsx)("p",{"data-i18n-skip":"true",className:"mb-3 text-xs font-semibold uppercase tracking-[0.08em] text-muted",children:"LoadingState"}),(0,r.jsx)(K.LoadingState,{lines:3,label:"Loading demo widget"})]}),(0,r.jsxs)("div",{className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,r.jsx)("p",{"data-i18n-skip":"true",className:"mb-3 text-xs font-semibold uppercase tracking-[0.08em] text-muted",children:"ErrorState"}),(0,r.jsx)(K.ErrorState,{title:"Could not load this widget",message:"The backend did not answer in time.",onRetry:()=>e.info("Retry demo pressed")})]})]}),(0,r.jsx)(F.default,{lines:U})]})}var H=n(81127),B=n(29499),G=n(93921),J=n(50611),V=n(97677);function Z(){let[e,t]=(0,a.useState)(!1),[n,l]=(0,a.useState)(!1),[i,o]=(0,a.useState)(!1),[d,c]=(0,a.useState)(!1);return(0,r.jsxs)("section",{"aria-labelledby":"kit-overlays",className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,r.jsx)("h2",{id:"kit-overlays",className:"font-display text-xl font-bold",children:"Overlays"}),(0,r.jsxs)("div",{className:"mt-4 flex flex-wrap items-center gap-2",children:[(0,r.jsx)(s.default,{variant:"secondary",onClick:()=>t(!0),children:"Open modal"}),(0,r.jsx)(s.default,{variant:"danger",onClick:()=>l(!0),children:"Open danger confirm"}),(0,r.jsx)(s.default,{variant:"ghost",onClick:()=>c(!0),children:"Open confirm with error"}),(0,r.jsx)(s.default,{variant:"secondary",onClick:()=>o(!0),children:"Open drawer"}),(0,r.jsxs)(G.default,{trigger:(0,r.jsx)(s.default,{variant:"secondary",children:"Open menu"}),align:"start",children:[(0,r.jsx)(G.MenuItem,{icon:"history",label:"Change log",onSelect:()=>{},children:"Change log"}),(0,r.jsx)(G.MenuItem,{icon:"dark_mode",label:"Theme",selected:!0,onSelect:()=>{},children:"Theme"}),(0,r.jsx)(G.MenuItem,{icon:"lock",label:"Settings",disabled:!0,onSelect:()=>{},children:"Settings"}),(0,r.jsx)(G.MenuItem,{icon:"power_settings_new",label:"Shutdown",danger:!0,onSelect:()=>{},children:"Shutdown"}),(0,r.jsx)(G.MenuItem,{icon:"logout",label:"Logout",danger:!0,onSelect:()=>{},children:"Logout"})]}),(0,r.jsx)(J.default,{trigger:(0,r.jsx)(s.default,{variant:"secondary",children:"Open popover"}),"aria-label":"Kit popover",children:(0,r.jsx)("p",{className:"text-sm text-muted",children:"Non-modal panel. Esc closes, focus returns."})}),(0,r.jsx)(V.default,{text:"Shows on hover and focus",position:"top",children:(0,r.jsx)(s.default,{variant:"ghost",children:"Hover me"})}),(0,r.jsx)(V.default,{text:"Error-tinted tip",variant:"err",children:(0,r.jsx)(s.default,{variant:"ghost",children:"Error tip"})})]}),(0,r.jsx)(H.default,{isOpen:e,onClose:()=>t(!1),title:"Kit modal",description:"Composed dialog: focus trap, Esc/backdrop close, scroll lock.",footer:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.default,{variant:"ghost",onClick:()=>t(!1),children:"Cancel"}),(0,r.jsx)(s.default,{onClick:()=>t(!1),children:"Save"})]}),children:(0,r.jsx)("p",{className:"text-sm text-muted",children:"Modal body content goes here."})}),(0,r.jsx)(H.ConfirmDialog,{isOpen:n,onClose:()=>l(!1),onConfirm:()=>l(!1),title:"Delete provider?",message:"This removes the connection. The request logs stay.",confirmText:"Delete",variant:"danger"}),(0,r.jsx)(H.ConfirmDialog,{isOpen:d,onClose:()=>c(!1),onConfirm:()=>{throw Error("Refresh failed (401). Sign in again and retry.")},title:"Refresh token?",message:"Async failure stays inline under role=alert.",confirmText:"Retry",variant:"default"}),(0,r.jsx)(B.default,{isOpen:i,onClose:()=>o(!1),title:"Kit drawer",children:(0,r.jsx)("p",{className:"text-sm text-muted",children:"Full-height inline-end panel. Esc closes."})})]})}function W(){let[e,t]=(0,a.useState)("today"),[n,j]=(0,a.useState)("forms"),[y,k]=(0,a.useState)(!0),[w,S]=(0,a.useState)(3),[O,R]=(0,a.useState)("60"),[$,P]=(0,a.useState)(!0);return(0,r.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,r.jsxs)("header",{className:"flex flex-wrap items-start justify-between gap-4",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"text-xs font-semibold uppercase tracking-[0.08em] text-muted",children:`${l.Hc.slug} UI kit`}),(0,r.jsx)("h1",{className:"font-display text-[68px] leading-none font-extrabold",children:"Signal"}),(0,r.jsx)("p",{dir:"auto",className:"mt-1 max-w-[72ch] text-[15px] text-muted",children:"Warm ink surfaces. Coral is the brand and your selection. Lime means traffic is live, or it is the one thing to press."})]}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(d.default,{icon:"search",label:"Search"}),(0,r.jsx)(v.default,{})]})]}),(0,r.jsxs)("section",{"aria-labelledby":"kit-actions",className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,r.jsx)("h2",{id:"kit-actions",className:"font-display text-xl font-bold",children:"Buttons"}),(0,r.jsxs)("div",{className:"mt-4 flex flex-wrap items-center gap-2",children:[(0,r.jsx)(s.default,{children:"Copy endpoint"}),(0,r.jsx)(s.default,{variant:"secondary",children:"Test all"}),(0,r.jsx)(s.default,{variant:"ghost",children:"Cancel"}),(0,r.jsx)(s.default,{variant:"danger",children:"Delete"}),(0,r.jsx)(s.default,{variant:"secondary",size:"sm",loading:!0,children:"Testing"}),(0,r.jsx)(u.default,{children:"⌘K"})]}),(0,r.jsxs)("div",{className:"mt-4 flex flex-wrap items-center gap-4",children:[(0,r.jsx)(b.default,{checked:y,onChange:k,"aria-label":"Sample toggle on"}),(0,r.jsx)(b.default,{checked:!1,"aria-label":"Sample toggle off"}),(0,r.jsx)(p.default,{"aria-label":"Period",options:[{value:"today",label:"Today"},{value:"7d",label:"7d"},{value:"30d",label:"30d"}],value:e,onChange:t}),(0,r.jsx)(f.default,{tabs:[{value:"forms",label:"Forms"},{value:"display",label:"Display"}],value:n,onChange:j,"aria-label":"Kit tabs"})]})]}),(0,r.jsxs)("section",{"aria-labelledby":"kit-forms",className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,r.jsx)("h2",{id:"kit-forms",className:"font-display text-xl font-bold",children:"Forms"}),(0,r.jsxs)("div",{className:"mt-4 grid gap-4 md:grid-cols-2",children:[(0,r.jsx)(c.default,{label:"Provider name",hint:(0,r.jsx)("span",{dir:"auto",children:"Shown in lists and logs."}),placeholder:"claude-work"}),(0,r.jsx)(c.default,{label:"API key",error:(0,r.jsx)("span",{dir:"auto",children:"Key is required."}),placeholder:"sk-..."}),(0,r.jsx)(h.default,{label:"Notes",placeholder:"Anything the team should know."}),(0,r.jsx)(x.default,{label:"Auto-refresh",value:O,onChange:e=>R(e.target.value),options:[{value:"60",label:"Every 60s"},{value:"0",label:"Off"}]}),(0,r.jsx)(m.default,{label:"Sticky limit",value:w,min:1,max:10,onChange:S}),(0,r.jsx)(g.default,{label:"Cache TTL",value:O,unit:"s",onChange:e=>R(e.target.value)}),(0,r.jsx)(c.default,{label:"Disabled",value:"read only",disabled:!0,readOnly:!0}),(0,r.jsx)(i.default,{checked:$,onChange:P,label:"Enable provider"})]}),(0,r.jsx)("div",{className:"mt-4",children:(0,r.jsx)(o.default,{value:"http://localhost:20128/v1",label:"Endpoint URL"})})]}),(0,r.jsx)(C,{}),(0,r.jsx)(E,{}),(0,r.jsx)(N,{}),(0,r.jsx)(T,{}),(0,r.jsx)(I,{}),(0,r.jsx)(A,{}),(0,r.jsx)(q,{}),(0,r.jsx)(Z,{})]})}},25086:(e,t,n)=>{"use strict";n.d(t,{CardSkeleton:()=>u,PageLoading:()=>o,Skeleton:()=>d,SkeletonText:()=>c,Spinner:()=>i,default:()=>m});var r=n(95155),a=n(14051),l=n.n(a),s=n(31474);function i({size:e="md",className:t}){return(0,r.jsx)("span",{role:"status","aria-label":"Loading",className:(0,s.cn)("material-symbols-outlined animate-spin text-coral",{sm:"text-[16px]",md:"text-[24px]",lg:"text-[32px]",xl:"text-[48px]"}[e],t),children:"progress_activity"})}function o({message:e="Loading..."}){return(0,r.jsxs)("div",{className:"fixed inset-0 z-50 flex flex-col items-center justify-center bg-bg",children:[(0,r.jsx)(i,{size:"xl"}),(0,r.jsx)("p",{className:"mt-4 text-muted",children:e})]})}function d({className:e,...t}){return(0,r.jsx)("div",{"aria-hidden":"true",className:(0,s.cn)("animate-pulse rounded-[10px] bg-raised",e),...t})}function c({lines:e=3,className:t}){let n=Array.from({length:e},(e,t)=>t);return(0,r.jsx)("div",{className:(0,s.cn)("flex flex-col gap-2",t),"aria-hidden":"true",children:n.map(e=>(0,r.jsx)(d,{className:(0,s.cn)("h-3",e===n.length-1?"w-2/3":"w-full")},`line-${e}`))})}function u(){return(0,r.jsxs)("div",{className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,r.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,r.jsx)(d,{className:"h-4 w-24"}),(0,r.jsx)(d,{className:"size-10 rounded-[10px]"})]}),(0,r.jsx)(d,{className:"mb-2 h-8 w-16"}),(0,r.jsx)(d,{className:"h-3 w-20"})]})}function m({type:e="spinner",...t}){switch(e){case"page":return(0,r.jsx)(o,{...t});case"skeleton":return(0,r.jsx)(d,{...t});case"card":return(0,r.jsx)(u,{...t});default:return(0,r.jsx)(i,{...t})}}d.propTypes={className:l().string},c.propTypes={lines:l().number,className:l().string}},28745:(e,t,n)=>{"use strict";n.d(t,{vQ:()=>l,UY:()=>d,Nu:()=>s,B2:()=>o,h0:()=>i});var r=n(4553),a=n(41463);let l={name:`${r.Hc.name} Proxy`,description:"AI infrastructure management",version:"1.0.0",build:{channel:a.env.NEXT_PUBLIC_BUILD_CHANNEL||"",sha:a.env.NEXT_PUBLIC_BUILD_SHA||""}},s={changelogUrl:"https://raw.githubusercontent.com/tokenhop/tokenhop/refs/heads/master/CHANGELOG.md"},i={appPort:20128},o={storageKey:"theme",defaultTheme:"dark"},d={maxLines:200,pollIntervalMs:1e3}},29499:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var r=n(95155),a=n(12115),l=n(14051),s=n.n(l),i=n(31474),o=n(19844),d=n(47929),c=n(6587);function u({isOpen:e,onClose:t,title:n,children:l,width:s="md",size:m,side:p="end",closeOnOverlay:x=!0,closeOnEscape:f=!0,initialFocusRef:h,className:b,id:g,bare:v=!1}){let j=(0,a.useRef)(null),[y,k]=(0,d.lk)(j),{overlayId:N,titleId:w}=(0,d.uf)("signal-drawer"),C=!!e;if((0,d.K$)(C),(0,d.rM)({container:y,active:C,initialFocusRef:h}),(0,d.s9)({onClose:t,containerRef:j,enabled:C,closeOnEscape:f,closeOnOutside:x}),!C)return null;let E=!v&&n;return(0,r.jsx)(d.ZL,{children:(0,r.jsxs)("div",{className:"fixed inset-0 z-50",children:[(0,r.jsx)("div",{className:"signal-backdrop absolute inset-0","aria-hidden":"true"}),(0,r.jsx)("div",{ref:k,id:g||N,role:"dialog","aria-modal":"true","aria-labelledby":E?w:void 0,"aria-label":v&&"string"==typeof n?n:void 0,tabIndex:-1,className:(0,i.cn)("signal-overlay-drawer absolute inset-y-0 flex max-w-full flex-col bg-panel text-text shadow-card outline-none",(0,o.PT)(p),(0,o.IN)(m??s),b),children:v?l:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"flex shrink-0 items-center justify-between gap-3 border-b border-line px-6 py-4",children:[n?(0,r.jsx)("h2",{id:w,className:"min-w-0 font-display text-lg font-bold",children:n}):(0,r.jsx)("span",{}),t?(0,r.jsx)(c.default,{icon:"close",label:"Close",onClick:t}):null]}),(0,r.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto p-6 custom-scrollbar",children:l})]})})]})})}u.propTypes={isOpen:s().bool,onClose:s().func,title:s().node,children:s().node,width:s().oneOf(Object.keys(o.gD)),size:s().oneOf(Object.keys(o.gD)),side:s().oneOf(["start","end"]),closeOnOverlay:s().bool,closeOnEscape:s().bool,initialFocusRef:s().shape({current:s().any}),className:s().string,id:s().string,bare:s().bool}},30225:(e,t,n)=>{Promise.resolve().then(n.bind(n,21341))},31692:(e,t,n)=>{"use strict";n.d(t,{Zr:()=>a});let r=e=>t=>{try{let n=e(t);if(n instanceof Promise)return n;return{then:e=>r(e)(n),catch(e){return this}}}catch(e){return{then(e){return this},catch:t=>r(t)(e)}}},a=(e,t)=>(n,a,l)=>{let s,i={storage:function(e){let t;try{t=e()}catch(e){return}return{getItem:e=>{var n;let r=e=>null===e?null:JSON.parse(e,void 0),a=null!=(n=t.getItem(e))?n:null;return a instanceof Promise?a.then(r):r(a)},setItem:(e,n)=>t.setItem(e,JSON.stringify(n,void 0)),removeItem:e=>t.removeItem(e)}}(()=>window.localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},o=!1,d=0,c=new Set,u=new Set,m=i.storage;if(!m)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${i.name}', the given storage is currently unavailable.`),n(...e)},a,l);let p=()=>{let e=i.partialize({...a()});return m.setItem(i.name,{state:e,version:i.version})},x=l.setState;l.setState=(e,t)=>(x(e,t),p());let f=e((...e)=>(n(...e),p()),a,l);l.getInitialState=()=>f;let h=()=>{var e,t;if(!m)return;let l=++d;o=!1,c.forEach(e=>{var t;return e(null!=(t=a())?t:f)});let x=(null==(t=i.onRehydrateStorage)?void 0:t.call(i,null!=(e=a())?e:f))||void 0;return r(m.getItem.bind(m))(i.name).then(e=>{if(e)if("number"!=typeof e.version||e.version===i.version)return[!1,e.state];else{if(i.migrate){let t=i.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}return[!1,void 0]}).then(e=>{var t;if(l!==d)return;let[r,o]=e;if(n(s=i.merge(o,null!=(t=a())?t:f),!0),r)return p()}).then(()=>{l===d&&(null==x||x(a(),void 0),s=a(),o=!0,u.forEach(e=>e(s)))}).catch(e=>{l===d&&(null==x||x(void 0,e))})};return l.persist={setOptions:e=>{i={...i,...e},e.storage&&(m=e.storage)},clearStorage:()=>{++d,null==m||m.removeItem(i.name)},getOptions:()=>i,rehydrate:()=>h(),hasHydrated:()=>o,onHydrate:e=>(c.add(e),()=>{c.delete(e)}),onFinishHydration:e=>(u.add(e),()=>{u.delete(e)})},i.skipHydration||h(),s||f}},35652:(e,t,n)=>{"use strict";var r,a=n(41463);let l=Object.freeze(["9router","tokenhop"]),s="tokenhop";function i(e,t){if(l.includes(e))return e;let n=l.map(e=>`"${e}"`).join(", ");throw Error(`${t}: unknown brand ${JSON.stringify(e)}; allowed values: ${n}`)}let o=""==(r="tokenhop")?s:i(r,"NEXT_PUBLIC_BRAND"),d=Object.freeze({name:"tokenhop",slug:"tokenhop",envPrefix:"TOKENHOP_",headerPrefix:"x-tokenhop-",jcodeApiKeyEnv:"JCODE_TOKENHOP_API_KEY",defaultApiKey:"sk_tokenhop",dataDirName:"tokenhop",samlIssuerDefault:"urn:tokenhop:sp",mitmCaCommonName:"tokenhop MITM Root CA",mitmCaOrg:"tokenhop",mitmCertFile:"tokenhop-root-ca.crt",pidFile:"tokenhop.pid",autostartLabel:"dev.tokenhop.autostart",autostartDesktopFile:"tokenhop.desktop",autostartVbsFile:"tokenhop.vbs",clientConfigKey:"tokenhop",customModelIdPrefix:"custom:tokenhop-",storageKeyPrefix:"tokenhop.",eventPrefix:"tokenhop:",backupFilePrefix:"tokenhop-backup-",npmPackage:"tokenhop",appPackage:"tokenhop-app",repoSlug:"tokenhop/tokenhop",repoUrl:"https://github.com/tokenhop/tokenhop",imageName:"ghcr.io/tokenhop/tokenhop",websiteUrl:"https://tokenhop.ai",docsUrl:"https://tokenhop.dev",wordmark:"tokenhop",favicon:"/brand/favicon.svg",faviconIco:"/brand/favicon.ico",appIcon192:"/brand/icons/icon-192.svg",appIcon512:"/brand/icons/icon-512.svg",trayIconName:"icon-tokenhop",trayIconTemplate:!0}),c=Object.freeze({names:Object.freeze(["9Router","9router"]),slug:"9router",envPrefixes:Object.freeze(["NINEROUTER_","NINE_ROUTER_"]),headerPrefix:"x-9router-",jcodeApiKeyEnv:"JCODE_9ROUTER_API_KEY",defaultApiKey:"sk_9router",dataDirName:"9router",samlIssuerDefault:"urn:9router:sp",mitmCaCommonName:"9Router MITM Root CA",mitmCaOrg:"9Router",mitmCertFile:"9router-root-ca.crt",pidFile:"9router.pid",autostartLabel:"com.9router.autostart",autostartDesktopFile:"9router.desktop",autostartVbsFile:"9router.vbs",clientConfigKeys:Object.freeze(["9router","9Router"]),customModelIdPrefix:"custom:9Router-",storageKeyPrefix:"9router.",eventPrefix:"9router:",backupFilePrefix:"9router-backup-",npmPackage:"9router",appPackage:"9router-app",repoSlug:"yandy-r/9router",repoUrl:"https://github.com/yandy-r/9router",imageName:"ghcr.io/yandy-r/9router",wordmark:"router",favicon:"/favicon.svg",faviconIco:"/favicon.ico",appIcon192:"/icons/icon-192.svg",appIcon512:"/icons/icon-512.svg",trayIconName:"icon",trayIconTemplate:!1}),u=Object.freeze({kimiPlatform:"9router",clineUserAgentProduct:"9Router",clineClientType:"9router",devinMcpClientName:"9router",coworkMcpClientName:"9router",cursorMcpProvider:"9router",glmMcpClientName:"9router",xaiUserAgent:"grok-cli/9router",xiaomiKeyNamePrefix:"9router-xmd-",githubUserAgent:"9Router",proxyTestUserAgent:"9Router",denoRelayKind:"9router-relay"}),m=new Set(["repoSlug","repoUrl","imageName","websiteUrl","docsUrl"]),p={name:"names",envPrefix:"envPrefixes",clientConfigKey:"clientConfigKeys"},x="tokenhop"===o?d:Object.freeze(Object.fromEntries(Object.keys(d).map(e=>{let t;return[e,m.has(e)?d[e]:Array.isArray(t=c[p[e]||e])?t[0]:t]}))),f=new Set;function h(e,t,n){if("tokenhop"!==o)return!1;let r=`${e}\u0000${t}`;return!f.has(r)&&(f.add(r),console.warn(`[tokenhop] deprecated ${e} "${t}" → use "${n}" (legacy support ends in v2.0.0)`),!0)}let b=/^[A-Z0-9]+(_[A-Z0-9]+)*$/;function g(e){if("string"!=typeof e||!b.test(e))throw Error(`envName: invalid suffix ${JSON.stringify(e)}; expected e.g. "PEER_TOKEN"`);return d.envPrefix+e}let v=/^(?!x-)[a-z0-9]+(-[a-z0-9]+)*$/;function j(e){return x.headerPrefix+function(e,t){if("string"!=typeof e||!v.test(e))throw Error(`${t}: invalid header name ${JSON.stringify(e)}; expected a bare lowercase name like "connection-id"`);return e}(e,"header")}e.exports={BRAND_IDS:l,DEFAULT_BRAND_ID:s,ACTIVE_BRAND_ID:o,isActiveBrand:function(e){return i(e,"isActiveBrand")===o},BRAND:d,LEGACY:c,ACTIVE:x,UPSTREAM_CLIENT_IDS:u,envName:g,readEnv:function(e,t=a.env){let n=g(e);if(void 0!==t[n])return t[n];for(let r of c.envPrefixes){let a=r+e;if(void 0!==t[a])return h("env var",a,n),t[a]}},warnLegacyOnce:h,header:j,legacyHeaderNames:function(e){let t=j(e);return[c.headerPrefix+e].filter(e=>e!==t)}}},38587:(e,t,n)=>{"use strict";n.d(t,{default:()=>s});var r=n(95155),a=n(1620),l=n(31474);function s({className:e,variant:t="default"}){let{isDark:n,toggleTheme:i}=(0,a.D)(),o={default:(0,l.cn)("flex items-center justify-center size-10 rounded-full","text-muted hover:text-text","hover:bg-raised transition-colors"),card:(0,l.cn)("flex items-center justify-center size-11 rounded-full","bg-panel/60 hover:bg-panel","border border-line","backdrop-blur-md shadow-sm hover:shadow-card","text-muted hover:text-coral-ink","transition-all group")};return(0,r.jsx)("button",{onClick:i,className:(0,l.cn)(o[t],e),"aria-label":`Switch to ${n?"light":"dark"} mode`,title:`Switch to ${n?"light":"dark"} mode`,children:(0,r.jsx)("span",{className:(0,l.cn)("material-symbols-outlined text-[22px]","card"===t&&"transition-transform duration-300 group-hover:rotate-12"),children:n?"light_mode":"dark_mode"})})}},38794:(e,t,n)=>{"use strict";n.d(t,{default:()=>o});var r=n(95155),a=n(14051),l=n.n(a),s=n(12115),i=n(50770);function o({lines:e,label:t="Console output",className:n,live:a="off",onScroll:l,scrollRef:d,cursor:c=!1,row:u}){return(0,r.jsx)("div",{ref:d,role:"log","aria-label":t,"aria-live":a,dir:"ltr",onScroll:l,tabIndex:0,className:`signal-terminal custom-scrollbar m-0 overflow-auto rounded-2xl p-[18px_22px] text-start font-mono text-[13px] leading-[1.75] focus-visible:shadow-focus${n?` ${n}`:""}`,children:(0,r.jsxs)("ol",{className:"m-0 list-none p-0",children:[u?e.map((e,t)=>(0,r.jsx)(s.Fragment,{children:u(e,t)},e.key??e.id??`${e.time}-${t}`)):e.map((e,t)=>(0,r.jsxs)("li",{className:"flex gap-4 whitespace-nowrap",children:[(0,r.jsx)("span",{className:"signal-terminal-time shrink-0",children:e.time||"--:--:--"}),(0,r.jsx)("span",{className:`w-[52px] shrink-0 font-semibold ${(0,i.pN)(e.level)}`,children:e.level}),(0,r.jsx)("span",{className:"min-w-0 flex-1 whitespace-pre",children:e.message})]},e.id??`${e.time}-${t}`)),c&&(0,r.jsxs)("li",{className:"mt-0.5 flex gap-4 whitespace-nowrap","aria-hidden":"true",children:[(0,r.jsx)("span",{className:"signal-terminal-time shrink-0",children:"--:--:--"}),(0,r.jsx)("span",{className:"signal-terminal-cursor w-[52px] shrink-0 animate-pulse font-semibold",children:"▍"})]})]})})}o.propTypes={lines:l().arrayOf(l().shape({id:l().oneOfType([l().string,l().number]),time:l().string,level:l().oneOf(["LOG","INFO","WARN","ERROR","DEBUG"]).isRequired,message:l().string.isRequired})).isRequired,label:l().string,className:l().string,live:l().oneOf(["off","polite"]),onScroll:l().func,scrollRef:l().shape({current:l().object}),cursor:l().bool,row:l().func}},44863:(e,t,n)=>{"use strict";n.d(t,{SegmentedHealthBar:()=>o,default:()=>i});var r=n(95155),a=n(14051),l=n.n(a),s=n(50770);function i({value:e,kind:t,variant:n,label:a,valueText:l,className:o}){if(!a)throw Error("Meter: `label` is required for the meter accessible name");let d=(0,s.r4)(e),c=n??(0,s.vE)(d,t),u=s.lN[c];if(!u)throw Error(`Meter: unknown variant "${c}"`);return(0,r.jsx)("div",{role:"meter","aria-valuenow":d,"aria-valuemin":0,"aria-valuemax":100,"aria-valuetext":l,"aria-label":a,className:`h-2 w-full overflow-hidden rounded-pill bg-raised shadow-[inset_0_0_0_1px_var(--signal-line)]${o?` ${o}`:""}`,children:(0,r.jsx)("div",{className:`h-full rounded-pill ${u}`,style:{width:`${d}%`}})})}function o({segments:e,className:t}){if(!Array.isArray(e)||0===e.length)throw Error("SegmentedHealthBar: needs at least one segment");return(0,r.jsx)("fieldset",{"aria-label":"Account health",className:`m-0 grid min-w-0 auto-cols-fr grid-flow-col gap-1 border-0 p-0${t?` ${t}`:""}`,children:e.map((e,t)=>(0,r.jsx)(i,{value:e.value,kind:e.kind,label:e.label,className:"rounded-sm shadow-none"},`${e.label??"segment"}-${t}`))})}i.propTypes={value:l().number.isRequired,kind:l().oneOf(["unlimited","credits"]),variant:l().oneOf(["brand","neutral"]),label:l().string.isRequired,valueText:l().string,className:l().string},o.propTypes={segments:l().arrayOf(l().shape({value:l().number.isRequired,kind:l().oneOf(["unlimited","credits"]),label:l().string.isRequired})).isRequired,className:l().string}},50611:(e,t,n)=>{"use strict";n.d(t,{default:()=>u,p:()=>c});var r=n(95155),a=n(12115),l=n(14051),s=n.n(l),i=n(31474),o=n(19844),d=n(47929);function c(e,t,n,r){let[l,s]=(0,a.useState)({top:0,left:0,visibility:"hidden"});return(0,a.useEffect)(()=>{if(!n||"u"<typeof document)return;let a=0,l=()=>{let n=e.current,i=t.current;if(!n||!i){a=requestAnimationFrame(l);return}let d="rtl"===getComputedStyle(n).direction,c=(0,o.mI)(n.getBoundingClientRect(),{width:i.offsetWidth,height:i.offsetHeight},r,d);s({top:c.top,left:c.left})};return l(),window.addEventListener("resize",l),window.addEventListener("scroll",l,!0),()=>{cancelAnimationFrame(a),window.removeEventListener("resize",l),window.removeEventListener("scroll",l,!0)}},[e,t,n,r]),l}function u({trigger:e,children:t,open:n,onOpenChange:l,placement:s="bottom","aria-label":o,className:m}){let p=(0,a.useRef)(null),x=(0,a.useRef)(null),{overlayId:f}=(0,d.uf)("signal-popover"),[h,b]=(0,a.useState)(!1),g="boolean"==typeof n,v=g?n:h,j=(0,a.useCallback)(e=>g?l?.(e):b(e),[g,l]),y=c(p,x,v,s),k=(0,a.useCallback)(()=>{let e=x.current?.contains(document.activeElement)??!1;j(!1),e&&p.current?.focus?.()},[j]);if((0,d.s9)({onClose:k,containerRef:x,enabled:v,closeOnOutside:!1}),(0,a.useEffect)(()=>{if(!v)return;let e=e=>{x.current?.contains(e.target)||p.current?.contains(e.target)||j(!1)};return document.addEventListener("pointerdown",e),()=>document.removeEventListener("pointerdown",e)},[v,j]),!(0,a.isValidElement)(e))throw Error("Popover: `trigger` must be a React element");return(0,r.jsxs)(r.Fragment,{children:[(0,a.cloneElement)(e,{ref:p,"aria-haspopup":"dialog","aria-expanded":v,"aria-controls":v?f:void 0,onClick:t=>{e.props.onClick?.(t),t.defaultPrevented||j(!v)}}),v?(0,r.jsx)(d.ZL,{children:(0,r.jsx)("div",{ref:x,id:f,role:"dialog","aria-label":o,style:y,className:(0,i.cn)("signal-overlay-pop fixed z-50 min-w-48 max-w-[min(24rem,calc(100vw-16px))] rounded-xl border border-line bg-panel p-4 text-text shadow-card",m),children:t})}):null]})}u.propTypes={trigger:s().element.isRequired,children:s().node,open:s().bool,onOpenChange:s().func,placement:s().oneOf(["top","bottom","start","end"]),"aria-label":s().string,className:s().string}},56006:(e,t,n)=>{"use strict";n.d(t,{default:()=>i});var r=n(95155),a=n(14051),l=n.n(a);let s={info:{classes:"bg-sky-bg text-sky-ink",icon:"info"},warn:{classes:"bg-warn-bg text-warn",icon:"warning"},err:{classes:"bg-err-bg text-err",icon:"error"},ok:{classes:"bg-ok-bg text-ok",icon:"check_circle"}};function i({variant:e="info",title:t,children:n,icon:a,className:l}){let o=s[e];if(!o)throw Error(`Callout: unknown variant "${e}"`);return(0,r.jsxs)("div",{role:"err"===e?"alert":"status",className:`flex gap-3 rounded-xl p-4 text-sm ${o.classes}${l?` ${l}`:""}`,children:[(0,r.jsx)("span",{className:"material-symbols-outlined shrink-0 text-[20px]","aria-hidden":"true",children:a??o.icon}),(0,r.jsxs)("div",{className:"min-w-0 text-text",children:[t&&(0,r.jsx)("p",{className:"font-semibold",children:t}),n&&(0,r.jsx)("div",{className:"text-muted",children:n})]})]})}i.propTypes={variant:l().oneOf(Object.keys(s)),title:l().node,children:l().node,icon:l().string,className:l().string}},65921:(e,t,n)=>{"use strict";n.d(t,{i:()=>l});var r=n(1934);let a=0,l=(0,r.v)((e,t)=>({notifications:[],addNotification:n=>{let r=++a,l={id:r,type:n.type||"info",message:n.message,title:n.title||null,action:n.action??null,accent:n.accent??null,duration:n.duration??5e3,dismissible:n.dismissible??!0,createdAt:Date.now()};return e(e=>({notifications:[...e.notifications,l]})),l.duration>0&&setTimeout(()=>t().removeNotification(r),l.duration),r},removeNotification:t=>{e(e=>({notifications:e.notifications.filter(e=>e.id!==t)}))},clearAll:()=>e({notifications:[]}),success:(e,n)=>t().addNotification(s("success",e,n)),error:(e,n)=>t().addNotification({duration:8e3,...s("error",e,n)}),warning:(e,n)=>t().addNotification(s("warning",e,n)),info:(e,n)=>t().addNotification(s("info",e,n))}));function s(e,t,n){if("string"==typeof n)return{type:e,message:t,title:n};let r={type:e,message:t,...n||{}},{action:a}=r;if(null!=a&&("string"!=typeof a.label||!a.label||"function"!=typeof a.onSelect))throw TypeError("notification action needs a label and onSelect function");return r}},77671:(e,t,n)=>{"use strict";n.d(t,{ErrorState:()=>c,LoadingState:()=>d});var r=n(95155),a=n(14051),l=n.n(a),s=n(92542),i=n(56006),o=n(25086);function d({lines:e=4,label:t="Loading",className:n=""}){return(0,r.jsxs)("div",{role:"status","aria-label":t,className:`flex min-w-0 flex-col gap-3 ${n}`,children:[(0,r.jsx)(o.Skeleton,{className:"h-5 w-24"}),(0,r.jsx)(o.Skeleton,{className:"h-9 w-2/3"}),Array.from({length:e},(e,t)=>`line-${t}`).map(e=>(0,r.jsx)(o.Skeleton,{className:"h-4 w-full"},e))]})}function c({message:e,onRetry:t,title:n="Could not load this view",children:a}){return(0,r.jsxs)("div",{className:"flex min-w-0 flex-col gap-3",children:[(0,r.jsx)(i.default,{variant:"err",title:n,children:e||"Something went wrong while loading."}),(0,r.jsxs)("div",{className:"flex flex-wrap gap-2",children:[t&&(0,r.jsx)(s.default,{variant:"secondary",size:"sm",icon:"refresh",onClick:t,children:"Retry"}),a]})]})}d.propTypes={lines:l().number,label:l().string,className:l().string},c.propTypes={message:l().string,onRetry:l().func,title:l().string,children:l().node}},84588:(e,t,n)=>{"use strict";n.d(t,{default:()=>o});var r=n(95155),a=n(14051),l=n.n(a),s=n(31474);let i={none:"",xs:"p-3",sm:"p-4",md:"p-6",lg:"p-8"};function o({children:e,title:t,subtitle:n,icon:a,action:l,as:d="h2",padding:c="md",hover:u=!1,elev:m=!1,className:p,role:x,...f}){if(void 0===i[c])throw Error(`Card: unknown padding "${c}"`);let h=x||(f["aria-label"]||f["aria-labelledby"]?"region":void 0);return(0,r.jsxs)("div",{role:h,className:(0,s.cn)("rounded-2xl border border-line bg-panel shadow-card",u&&"cursor-pointer transition-colors duration-150 hover:border-coral/40",i[c],p),...f,children:[(t||l)&&(0,r.jsx)(o.Header,{title:t,subtitle:n,icon:a,actions:l,as:d,className:"mb-4"}),e]})}o.propTypes={children:l().node,title:l().node,subtitle:l().node,icon:l().string,action:l().node,as:l().oneOf(["h2","h3","h4"]),padding:l().oneOf(Object.keys(i)),hover:l().bool,elev:l().bool,className:l().string,role:l().string},o.Header=function({title:e,subtitle:t,icon:n,actions:a,as:l="h2",className:i}){return(0,r.jsxs)("div",{className:(0,s.cn)("flex flex-wrap items-center justify-between gap-3",i),children:[(0,r.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[n&&(0,r.jsx)("span",{className:"flex size-10 shrink-0 items-center justify-center rounded-[10px] bg-coral-bg text-coral-ink",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-[20px]","aria-hidden":"true",children:n})}),(0,r.jsxs)("div",{className:"min-w-0",children:[e&&(0,r.jsx)(l,{className:"font-display text-lg font-bold text-text",children:e}),t&&(0,r.jsx)("p",{className:"text-sm text-muted",children:t})]})]}),a&&(0,r.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:a})]})},o.Header.propTypes={title:l().node,subtitle:l().node,icon:l().string,actions:l().node,as:l().oneOf(["h2","h3","h4"]),className:l().string},o.Section=function({children:e,className:t,...n}){return(0,r.jsx)("div",{className:(0,s.cn)("rounded-xl border border-line bg-raised p-4",t),...n,children:e})},o.Row=function({children:e,className:t,...n}){return(0,r.jsx)("div",{className:(0,s.cn)("-mx-3 border-b border-line p-3 px-3 transition-colors last:border-b-0 hover:bg-raised",t),...n,children:e})},o.ListItem=function({children:e,actions:t,className:n,...a}){return(0,r.jsxs)("div",{className:(0,s.cn)("group -mx-3 flex items-center justify-between border-b border-line p-3 px-3 transition-colors last:border-b-0 hover:bg-raised",n),...a,children:[(0,r.jsx)("div",{className:"min-w-0 flex-1",children:e}),t&&(0,r.jsx)("div",{className:"flex items-center gap-1 opacity-0 transition-opacity group-focus-within:opacity-100 group-hover:opacity-100",children:t})]})}},86465:(e,t,n)=>{"use strict";n.d(t,{default:()=>s});var r=n(95155),a=n(14051),l=n.n(a);function s({model:e,className:t}){return(0,r.jsx)("code",{className:`inline-flex max-w-full items-center truncate rounded-md border border-line bg-raised px-2 py-0.5 font-mono text-xs text-muted${t?` ${t}`:""}`,children:e})}s.propTypes={model:l().string.isRequired,className:l().string}},93921:(e,t,n)=>{"use strict";n.d(t,{MenuItem:()=>x,default:()=>p});var r=n(95155),a=n(12115),l=n(14051),s=n.n(l),i=n(31474),o=n(4650),d=n(19844),c=n(47929);let u=a.useLayoutEffect,m=e=>"string"==typeof e?.props?.label?e.props.label:e?.props?.children;function p({trigger:e,children:t,open:n,onOpenChange:l,align:s="end",className:x}){let f=(0,a.useRef)(null),h=(0,a.useRef)(null),b=(0,a.useRef)([]),g=(0,a.useRef)({session:null}),{overlayId:v}=(0,c.uf)("signal-menu"),[j,y]=(0,a.useState)(!1),[k,N]=(0,a.useState)(-1),[w,C]=(0,a.useState)(null),[E,S]=(0,a.useState)(null),O=(0,a.useCallback)(e=>{h.current=e,S(e)},[]),T="boolean"==typeof n,R=T?n:j,I=(0,a.useCallback)(e=>{T?l?.(e):y(e),e||(N(-1),g.current.session=null)},[T,l]),$=(0,a.useCallback)(()=>{let e=f.current;e&&"function"==typeof e.focus&&e.focus()},[]),P=(0,a.useCallback)(()=>I(!1),[I]),L=(0,a.useCallback)(()=>{P(),$()},[P,$]);(0,a.useEffect)(()=>{R&&E&&w&&b.current[Math.max(k,0)]?.focus?.()},[R,E,w,k]),(0,c.s9)({onClose:L,containerRef:h,enabled:R,closeOnOutside:!1}),(0,a.useEffect)(()=>{if(!R)return;let e=e=>{h.current?.contains(e.target)||f.current?.contains(e.target)||P()};return document.addEventListener("pointerdown",e),()=>document.removeEventListener("pointerdown",e)},[R,P]);let A=a.Children.toArray(t).filter(a.isValidElement),z=A.map(m),_=A.map(e=>!!e.props.disabled),D=(0,a.useRef)(_);D.current=_;let K=(0,a.useCallback)((e=0)=>{I(!0);let t=(0,d.oQ)(D.current,e<0?0:e);N(t<0?e:t)},[I]);u(()=>{if(!R||!E)return void C(null);let e=()=>{let e=f.current;if(!e)return;let t=e.getBoundingClientRect(),n={width:E.offsetWidth,height:E.offsetHeight},r="rtl"===getComputedStyle(e).direction,a=(0,d.Rg)(t,n,s,r);C({top:a.top,left:a.left})};return e(),window.addEventListener("resize",e),window.addEventListener("scroll",e,!0),()=>{window.removeEventListener("resize",e),window.removeEventListener("scroll",e,!0)}},[R,E,s]);let F=e=>{if("Tab"===e.key){R&&P();return}if("ArrowDown"===e.key)e.preventDefault(),K(0);else if("ArrowUp"===e.key){e.preventDefault(),I(!0);let t=(0,d.oQ)(_,A.length-1,!0);N(t<0?A.length-1:t)}else("Enter"===e.key||" "===e.key)&&(e.preventDefault(),R?P():K(0))},M=(0,a.isValidElement)(e)?e.props["aria-label"]??e.props.label??("string"==typeof e.props.children?e.props.children:void 0):void 0,U={ref:f,"aria-haspopup":"menu","aria-expanded":R,"aria-controls":R?v:void 0,onClick:()=>{R?P():K(0)},onKeyDown:F};return(0,r.jsxs)(r.Fragment,{children:[(0,a.isValidElement)(e)?(0,a.cloneElement)(e,{...U,onClick:t=>{e.props.onClick?.(t),t.defaultPrevented||U.onClick(t)},onKeyDown:t=>{e.props.onKeyDown?.(t),t.defaultPrevented||F(t)}}):(0,r.jsx)("button",{type:"button",...U,className:"inline-flex h-11 items-center justify-center gap-2 rounded-lg border border-line bg-raised px-4 text-sm font-semibold text-text transition-colors duration-150 hover:bg-line/60 focus-visible:outline-none focus-visible:shadow-focus",children:e}),R?(0,r.jsx)(c.ZL,{children:(0,r.jsx)("div",{ref:O,id:v,role:"menu","aria-label":M,"aria-orientation":"vertical",style:w??{visibility:"hidden"},className:(0,i.cn)("signal-overlay-menu fixed z-50 w-60 overflow-hidden rounded-xl border border-line bg-panel py-1 text-text shadow-card",x),children:A.map((e,t)=>(0,a.cloneElement)(e,{key:e.key??t,ref:e=>{b.current[t]=e},tabIndex:t===Math.max(k,0)?0:-1,"data-active":t===Math.max(k,0),onKeyDown:e=>((e,t)=>{if("Tab"===e.key)return void P();if((0,o.JF)(e.key)){e.preventDefault();let n="u">typeof document&&"rtl"===document.dir,r=(0,d.jg)(t,e.key,_,o.lZ,{rtl:n});N(r),b.current[r]?.focus?.();return}if(1===e.key.length&&!e.ctrlKey&&!e.metaKey&&!e.altKey){let n=g.current,{session:r,index:a}=(0,d.sF)(n.session,e.key,e.timeStamp,z.map(e=>String(e??"")),t,_);n.session=r,a!==t&&(N(a),b.current[a]?.focus?.())}})(e,t),onSelect:()=>{e.props.onSelect?.(),L()}}))})}):null]})}p.propTypes={trigger:s().node.isRequired,children:s().node,open:s().bool,onOpenChange:s().func,align:s().oneOf(["start","end"]),className:s().string};let x=function({icon:e,label:t,children:n,trailing:a,danger:l=!1,selected:s=!1,disabled:o=!1,onSelect:d,...c}){return(0,r.jsxs)("button",{type:"button",role:"menuitem","aria-current":s||void 0,disabled:o,onClick:e=>{o?e.preventDefault():d?.(e)},className:(0,i.cn)("flex min-h-11 w-full items-center gap-3 px-4 py-2.5 text-sm transition-colors duration-150","focus-visible:outline-none focus-visible:shadow-focus","disabled:cursor-not-allowed disabled:opacity-50",l?"text-err hover:bg-err-bg":"text-text hover:bg-raised",s&&"bg-coral-bg font-semibold text-coral-ink"),...c,children:[e?(0,r.jsx)("span",{className:"material-symbols-outlined text-[20px] text-muted","aria-hidden":"true",children:e}):null,(0,r.jsx)("span",{className:"min-w-0 flex-1 text-start",children:n??t}),s?(0,r.jsx)("span",{className:"material-symbols-outlined text-[18px]","aria-hidden":"true",children:"check"}):null,a?(0,r.jsx)("span",{className:"shrink-0 text-sm text-muted",children:a}):null]})};x.propTypes={icon:s().string,label:s().string,children:s().node,trailing:s().node,danger:s().bool,selected:s().bool,disabled:s().bool,onSelect:s().func}},97677:(e,t,n)=>{"use strict";n.d(t,{default:()=>u});var r=n(95155),a=n(12115),l=n(14051),s=n.n(l),i=n(31474),o=n(19844),d=n(50611),c=n(47929);function u({text:e,children:t,position:n="top",variant:l="neutral",disabled:s=!1,className:m}){let p=(0,a.useRef)(null),x=(0,a.useRef)(null),f=(0,a.useRef)(null),h=(0,a.useRef)(null),{overlayId:b}=(0,c.uf)("signal-tooltip"),[g,v]=(0,a.useState)(!1),j=(0,o.eJ)(g,s,e),y=(0,d.p)(p,x,j,n);(0,a.useEffect)(()=>()=>{clearTimeout(f.current),clearTimeout(h.current)},[]),(0,a.useEffect)(()=>{!j&&g&&(clearTimeout(f.current),v(!1))},[j,g]),(0,a.useEffect)(()=>j?(0,c.r2)(window,()=>v(!1)):void 0,[j]);let k=(0,a.useCallback)(()=>{(0,o.eJ)(!0,s,e)&&(clearTimeout(h.current),clearTimeout(f.current),f.current=setTimeout(()=>v(!0),150))},[s,e]),N=(0,a.useCallback)(()=>{clearTimeout(f.current),clearTimeout(h.current),h.current=setTimeout(()=>v(!1),100)},[]);if((0,a.useEffect)(()=>{let e=p.current;if(e)return e.addEventListener("mouseenter",k),e.addEventListener("mouseleave",N),e.addEventListener("focusin",k),e.addEventListener("focusout",N),()=>{e.removeEventListener("mouseenter",k),e.removeEventListener("mouseleave",N),e.removeEventListener("focusin",k),e.removeEventListener("focusout",N)}},[k,N]),!(0,a.isValidElement)(t))throw Error("Tooltip: `children` must be a React element");let w="string"==typeof t.type,C=w&&!["button","a","input","select","textarea"].includes(t.type)&&void 0===t.props.tabIndex,E=(0,a.cloneElement)(t,{"aria-describedby":j?b:t.props["aria-describedby"],tabIndex:w&&C?0:t.props.tabIndex});return(0,r.jsxs)("span",{ref:p,className:"inline-flex",children:[E,j?(0,r.jsx)(c.ZL,{children:(0,r.jsx)("div",{ref:x,id:b,role:"tooltip",style:y,className:(0,i.cn)("signal-overlay-tip pointer-events-none fixed z-50 w-max max-w-56 whitespace-normal rounded-lg px-2 py-1 text-[11px] leading-snug",(0,o.lH)(l),m),children:e})}):null]})}u.propTypes={text:s().node,children:s().element.isRequired,position:s().oneOf(["top","bottom","start","end","left","right"]),variant:s().oneOf(Object.keys(o.h1)),disabled:s().bool,className:s().string}},98542:(e,t,n)=>{"use strict";n.d(t,{default:()=>d});var r=n(95155),a=n(14051),l=n.n(a),s=n(12115),i=n(31474);let o={sm:"h-[26px] w-11",md:"h-[26px] w-11",lg:"h-7 w-12"};function d({checked:e=!1,onChange:t,label:n,description:a,disabled:l=!1,size:c="md",className:u,id:m,...p}){let x=(0,s.useId)(),f=m||x,h=`${f}-label`,b=`${f}-description`;if(!o[c])throw Error(`Toggle: unknown size "${c}"`);return(0,r.jsxs)("div",{className:(0,i.cn)("flex items-center gap-3",l&&"opacity-50",u),children:[(0,r.jsx)("button",{...p,id:f,type:"button",role:"switch","aria-checked":e,"aria-labelledby":n?h:p["aria-labelledby"],"aria-describedby":a?b:p["aria-describedby"],"aria-label":n?void 0:p["aria-label"]||p.title,disabled:l,onClick:()=>t?.(!e),className:(0,i.cn)("relative inline-flex shrink-0 rounded-full border border-line transition-colors duration-200","focus-visible:outline-none focus-visible:shadow-focus disabled:cursor-not-allowed","motion-reduce:transition-none",e?"bg-toggle-on":"bg-line",o[c]),children:(0,r.jsx)("span",{"aria-hidden":"true",className:(0,i.cn)("pointer-events-none absolute top-0.5 size-5 rounded-full shadow-sm transition-transform duration-200 motion-reduce:transition-none",e?"bg-toggle-knob-on translate-x-5 rtl:-translate-x-5":"bg-muted translate-x-0.5 rtl:-translate-x-0.5","start-0")})}),(n||a)&&(0,r.jsxs)("div",{className:"flex flex-col",children:[n&&(0,r.jsx)("label",{id:h,htmlFor:f,className:"text-sm font-medium text-text cursor-pointer",children:n}),a&&(0,r.jsx)("span",{id:b,className:"text-xs text-muted",children:a})]})]})}d.propTypes={checked:l().bool,onChange:l().func,label:l().node,description:l().node,disabled:l().bool,size:l().oneOf(Object.keys(o)),className:l().string,id:l().string,title:l().string,"aria-label":l().string}}},e=>{e.O(0,[1610,9671,4685,2903,4321,8441,3794,7358],()=>e(e.s=30225)),_N_E=e.O()}]);
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1665,9499],{1934:(e,t,n)=>{"use strict";n.d(t,{v:()=>s});var r=n(12115);let a=e=>{let t,n=new Set,r=(e,r)=>{let a="function"==typeof e?e(t):e;if(!Object.is(a,t)){let e=t;t=(null!=r?r:"object"!=typeof a||null===a)?a:Object.assign({},t,a),n.forEach(n=>n(t,e))}},a=()=>t,l={setState:r,getState:a,getInitialState:()=>s,subscribe:e=>(n.add(e),()=>n.delete(e))},s=t=e(r,a,l);return l},l=e=>{let t=e?a(e):a,n=e=>(function(e,t=e=>e){let n=r.useSyncExternalStore(e.subscribe,r.useCallback(()=>t(e.getState()),[e,t]),r.useCallback(()=>t(e.getInitialState()),[e,t]));return r.useDebugValue(n),n})(t,e);return Object.assign(n,t),n},s=e=>e?l(e):l},4553:(e,t,n)=>{"use strict";n.d(t,{DM:()=>s,Hc:()=>c,qt:()=>o,qx:()=>d});var r=n(35652);let{BRAND_IDS:a,DEFAULT_BRAND_ID:l,ACTIVE_BRAND_ID:s,isActiveBrand:i,BRAND:o,LEGACY:d,ACTIVE:c,UPSTREAM_CLIENT_IDS:u,envName:m,readEnv:p,warnLegacyOnce:x,header:f,legacyHeaderNames:h}=n.n(r)()},9911:(e,t,n)=>{"use strict";n.d(t,{default:()=>o});var r=n(95155),a=n(14051),l=n.n(a),s=n(12115),i=n(31474);function o({checked:e=!1,indeterminate:t=!1,onChange:n,label:a,description:l,disabled:d=!1,className:c,id:u,...m}){let p=(0,s.useId)(),x=u||p,f=(0,s.useRef)(null);return(0,s.useEffect)(()=>{f.current&&(f.current.indeterminate=t)},[t]),(0,r.jsxs)("div",{className:(0,i.cn)("flex items-start gap-3",d&&"opacity-50",c),children:[(0,r.jsxs)("span",{className:"relative inline-flex size-11 shrink-0 items-center justify-center -ms-2.5",children:[(0,r.jsx)("input",{...m,ref:f,id:x,type:"checkbox",checked:e,"aria-checked":t?"mixed":e,onChange:e=>n?.(e.target.checked),disabled:d,className:"peer absolute inset-0 m-0 size-full cursor-pointer opacity-0 disabled:cursor-not-allowed"}),(0,r.jsx)("span",{"aria-hidden":"true",className:(0,i.cn)("pointer-events-none flex size-[22px] items-center justify-center rounded-xs border border-line bg-raised","text-transparent transition-colors duration-150","peer-checked:border-transparent peer-checked:bg-coral peer-checked:text-on-coral","peer-focus-visible:shadow-focus peer-disabled:cursor-not-allowed",t&&"border-transparent bg-coral text-on-coral"),children:(0,r.jsx)("span",{className:"material-symbols-outlined text-[16px] font-bold",children:t?"remove":"check"})})]}),(a||l)&&(0,r.jsxs)("label",{htmlFor:x,className:"flex cursor-pointer flex-col pt-2",children:[a&&(0,r.jsx)("span",{className:"text-sm font-medium text-text",children:a}),l&&(0,r.jsx)("span",{className:"text-xs text-muted",children:l})]})]})}o.propTypes={checked:l().bool,indeterminate:l().bool,onChange:l().func,label:l().node,description:l().node,disabled:l().bool,className:l().string,id:l().string}},20446:(e,t,n)=>{"use strict";n.d(t,{default:()=>c});var r=n(95155),a=n(14051),l=n.n(a),s=n(12115),i=n(31474),o=n(4650);let d=["ArrowLeft","ArrowRight","Home","End"];function c({tabs:e=[],value:t,defaultValue:n,onChange:a,className:l,id:u,"aria-label":m,"aria-labelledby":p,...x}){let f=(0,s.useId)(),h=u||f,b=(0,s.useRef)([]),[g,v]=(0,s.useState)(n??e[0]?.value),j=void 0!==t?t:g,y=Math.max(0,e.findIndex(e=>e.value===j)),k=e=>{void 0===t&&v(e),a?.(e)};return(0,r.jsxs)("div",{...x,className:(0,i.cn)("flex flex-col",l),children:[(0,r.jsx)("div",{role:"tablist","aria-label":m,"aria-labelledby":p,"aria-orientation":"horizontal",className:"flex items-center gap-1 border-b border-line overflow-x-auto",children:e.map((t,n)=>{let a=n===y;return(0,r.jsxs)("button",{ref:e=>{b.current[n]=e},type:"button",role:"tab",id:`${h}-tab-${t.value}`,"aria-selected":a,"aria-controls":`${h}-panel-${t.value}`,tabIndex:a?0:-1,onClick:()=>k(t.value),onKeyDown:t=>((t,n)=>{if(!d.includes(t.key)||0===e.length)return;t.preventDefault();let r=(0,o.lZ)(n,t.key,{length:e.length,rtl:t.currentTarget.closest("[dir]")?.getAttribute("dir")==="rtl"});b.current[r]?.focus(),k(e[r].value)})(t,n),className:(0,i.cn)("relative inline-flex h-11 shrink-0 items-center px-3 text-sm font-semibold transition-colors focus-visible:shadow-focus",a?"text-text":"text-muted hover:text-text"),children:[t.label,null!=t.count&&(0,r.jsx)("span",{className:"ms-1.5 font-mono text-xs text-muted",children:t.count}),(0,r.jsx)("span",{"aria-hidden":"true",className:(0,i.cn)("absolute inset-x-2 -bottom-px h-0.5 rounded-full bg-coral transition-opacity",a?"opacity-100":"opacity-0")})]},t.value)})}),e.map((e,t)=>(0,r.jsx)("div",{role:"tabpanel",id:`${h}-panel-${e.value}`,"aria-labelledby":`${h}-tab-${e.value}`,hidden:t!==y,tabIndex:(0,o.qM)(e.content)?0:void 0,children:e.content},e.value))]})}c.propTypes={tabs:l().arrayOf(l().shape({value:l().oneOfType([l().string,l().number]).isRequired,label:l().node.isRequired,count:l().oneOfType([l().string,l().number]),content:l().node})),value:l().oneOfType([l().string,l().number]),defaultValue:l().oneOfType([l().string,l().number]),onChange:l().func,className:l().string,id:l().string,"aria-label":function(e,t,n){return e["aria-label"]||e["aria-labelledby"]?null:Error(`${n}: provide "aria-label" or "aria-labelledby".`)},"aria-labelledby":l().string}},21341:(e,t,n)=>{"use strict";n.d(t,{default:()=>W});var r=n(95155),a=n(12115),l=n(4553),s=n(92542),i=n(9911),o=n(10185),d=n(6587),c=n(11910),u=n(15729),m=n(61640),p=n(28067),x=n(99380),f=n(20446),h=n(52024),b=n(98542),g=n(50744),v=n(38587),j=n(19123),y=n(56061),k=n(86465);function N(){return(0,r.jsxs)("section",{"aria-labelledby":"kit-pills",className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,r.jsx)("h2",{id:"kit-pills",className:"font-display text-xl font-bold",children:"Pills, badges, chips"}),(0,r.jsxs)("div",{className:"mt-4 flex flex-wrap gap-2",children:[(0,r.jsx)(j.default,{variant:"ok",dot:!0,children:"Connected"}),(0,r.jsx)(j.default,{variant:"warn",children:"Cooldown 2m"}),(0,r.jsx)(j.default,{variant:"err",children:"Auth error"}),(0,r.jsx)(j.default,{variant:"info",children:"OAuth"}),(0,r.jsx)(j.default,{variant:"live",children:"Free tier"}),(0,r.jsx)(j.default,{variant:"brand",children:"API key"}),(0,r.jsx)(j.default,{variant:"neutral",children:"Off"}),(0,r.jsx)(j.default,{variant:"ok",size:"sm",dot:!0,children:"Compact"})]}),(0,r.jsxs)("div",{className:"mt-4 flex flex-wrap gap-2",children:[(0,r.jsx)(y.default,{variant:"success",dot:!0,size:"sm",children:"Ready"}),(0,r.jsx)(y.default,{variant:"error",size:"sm",children:"Failed"}),(0,r.jsx)(y.default,{variant:"primary",icon:"key",size:"sm",children:"API key"}),(0,r.jsx)(y.default,{variant:"default",size:"sm",children:"Total: 42"})]}),(0,r.jsxs)("div",{className:"mt-4 flex flex-wrap gap-2",children:[(0,r.jsx)(k.default,{model:"cc/claude-sonnet-4-6"}),(0,r.jsx)(k.default,{model:"cx/gpt-5.1-codex"}),(0,r.jsx)(k.default,{model:"openrouter/qwen3-coder"})]})]})}let w=[{bg:"bg-bg",token:"--signal-bg",label:"Ground"},{bg:"bg-panel",token:"--signal-panel",label:"Panel"},{bg:"bg-raised",token:"--signal-raised",label:"Raised"},{bg:"bg-line",token:"--signal-line",label:"Line"},{bg:"bg-text",token:"--signal-text",label:"Text"},{bg:"bg-muted",token:"--signal-muted",label:"Muted"},{bg:"bg-coral",token:"--signal-coral",label:"Coral \xb7 brand"},{bg:"bg-lime",token:"--signal-lime",label:"Lime \xb7 live"},{bg:"bg-sky",token:"--signal-sky",label:"Sky \xb7 info"},{bg:"bg-ok",token:"--signal-ok",label:"OK"},{bg:"bg-warn",token:"--signal-warn",label:"Warn"},{bg:"bg-err",token:"--signal-err",label:"Error"}];function C(){return(0,r.jsxs)("section",{"aria-labelledby":"kit-swatches",className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,r.jsx)("h2",{id:"kit-swatches",className:"font-display text-xl font-bold",children:"Tokens"}),(0,r.jsx)("div",{className:"mt-4 grid grid-cols-3 gap-3 sm:grid-cols-4 lg:grid-cols-6",children:w.map(e=>(0,r.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,r.jsx)("span",{className:`${e.bg} h-[52px] rounded-lg shadow-[inset_0_0_0_1px_var(--signal-line)]`}),(0,r.jsx)("span",{className:"text-xs font-semibold",children:e.label}),(0,r.jsx)("span",{className:"font-mono text-[11px] text-muted",children:e.token})]},e.label))})]})}function E(){return(0,r.jsxs)("section",{"aria-labelledby":"kit-type",className:"flex flex-col gap-3 rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,r.jsx)("h2",{id:"kit-type",className:"font-display text-xl font-bold",children:"Type"}),(0,r.jsxs)("div",{className:"flex flex-wrap items-baseline gap-x-4 gap-y-1",children:[(0,r.jsx)("span",{className:"font-display text-[40px] leading-[1.05] font-bold",children:"Command center"}),(0,r.jsx)("span",{className:"font-mono text-[11px] text-muted",children:"Bricolage Grotesque 700"})]}),(0,r.jsxs)("div",{className:"flex flex-wrap items-baseline gap-x-4 gap-y-1",children:[(0,r.jsx)("span",{dir:"auto",className:"flex-1 text-[15px] leading-[1.5]",children:"One endpoint, 40+ providers, automatic fallback."}),(0,r.jsx)("span",{className:"font-mono text-[11px] text-muted",children:"Geist 400/600"})]}),(0,r.jsxs)("div",{className:"flex flex-wrap items-baseline gap-x-4 gap-y-1",children:[(0,r.jsx)("span",{className:"min-w-0 flex-1 break-all font-mono text-sm",children:"cc/claude-sonnet-4-6 → cx/gpt-5.1-codex"}),(0,r.jsx)("span",{className:"font-mono text-[11px] text-muted",children:"Geist Mono 500"})]})]})}var S=n(96975),O=n(25908);function T(){return(0,r.jsxs)("section",{"aria-labelledby":"kit-tiles",className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,r.jsx)("h2",{id:"kit-tiles",className:"font-display text-xl font-bold",children:"Tiles"}),(0,r.jsxs)("div",{className:"mt-4 flex items-center gap-2.5",children:[(0,r.jsx)(S.default,{providerId:"claude",size:"md",status:"live"}),(0,r.jsx)(S.default,{providerId:"codex",size:"md",status:"warn"}),(0,r.jsx)(S.default,{providerId:"openrouter",size:"md",status:"ok"})]}),(0,r.jsxs)("div",{className:"mt-4 flex items-end gap-3",children:[(0,r.jsx)(S.default,{providerId:"claude",size:"sm"}),(0,r.jsx)(S.default,{providerId:"codex",size:"md"}),(0,r.jsx)(S.default,{providerId:"cursor",size:"lg"})]}),(0,r.jsxs)("div",{className:"mt-6 grid gap-4 sm:grid-cols-2 lg:grid-cols-3",children:[(0,r.jsx)(O.default,{eyebrow:"Requests",value:"2,481",delta:"+12% vs yesterday",sparkline:[3,5,4,7,6,9,8]}),(0,r.jsx)(O.default,{eyebrow:"Tokens in / out",value:"4.2M / 612K",delta:"38% cached",sparkline:[8,6,9,5,7,6,8]}),(0,r.jsx)(O.default,{hero:!0,eyebrow:"Saved by token saver",value:"1.31M",delta:"31% lighter",sparkline:[2,4,3,5,6,7,9]})]})]})}var R=n(44863);function I(){return(0,r.jsxs)("section",{"aria-labelledby":"kit-meters",className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,r.jsx)("h2",{id:"kit-meters",className:"font-display text-xl font-bold",children:"Meters"}),(0,r.jsxs)("div",{className:"mt-4 flex flex-col gap-4",children:[(0,r.jsx)(R.default,{value:76,label:"Healthy account",valueText:"76 percent remaining"}),(0,r.jsx)(R.default,{value:41,label:"Cooling account",valueText:"41 percent remaining"}),(0,r.jsx)(R.default,{value:18,label:"Low account",valueText:"18 percent remaining"}),(0,r.jsx)(R.default,{value:100,kind:"unlimited",label:"Unlimited plan",valueText:"Unlimited"}),(0,r.jsx)(R.default,{value:64,kind:"credits",label:"Credit balance",valueText:"64 percent remaining"}),(0,r.jsx)(R.SegmentedHealthBar,{segments:[{value:82,label:"Work account"},{value:41,label:"Personal account"},{value:100,kind:"unlimited",label:"Backup account"}]})]})]})}var $=n(84588),P=n(56071),L=n(61002);function A(){let[e,t]=(0,a.useState)(!0);return(0,r.jsxs)("section",{"aria-labelledby":"kit-cards",className:"flex flex-col gap-4",children:[(0,r.jsx)("h2",{id:"kit-cards",className:"font-display text-xl font-bold",children:"Cards and settings"}),(0,r.jsx)(P.default,{icon:"shield",title:"Security & access",subtitle:(0,r.jsx)("span",{dir:"auto",children:"Who can reach the dashboard and the API."}),status:"ok",statusLabel:"Protected"}),(0,r.jsxs)($.default,{children:[(0,r.jsx)($.default.Header,{title:"Combos",subtitle:"Fallback chains",actions:(0,r.jsx)(s.default,{variant:"ghost",size:"sm",children:"All combos"})}),(0,r.jsxs)("div",{className:"mt-4 divide-y divide-line",children:[(0,r.jsx)(L.default,{label:"Require API key",description:(0,r.jsx)("span",{dir:"auto",children:"Requests without a valid key get a 401. Needed for the tunnel."}),settingKey:"requireApiKey",control:(0,r.jsx)(b.default,{checked:e,onChange:t,"aria-label":"Require API key"})}),(0,r.jsx)(L.default,{label:"Outbound proxy",description:(0,r.jsx)("span",{dir:"auto",children:"Send OAuth and provider calls through a proxy."}),settingKey:"outboundProxyEnabled",control:(0,r.jsx)(s.default,{variant:"secondary",size:"sm",children:"Test proxy"})})]})]})]})}var z=n(56006),_=n(99312),D=n(25086),K=n(77671),F=n(38794),M=n(65921);let U=[{id:"kit-log-1",time:"14:02:11",level:"LOG",message:"Gateway listening on :20128"},{id:"kit-log-2",time:"14:02:12",level:"INFO",message:"Loaded 14 provider connections"},{id:"kit-log-3",time:"14:03:40",level:"WARN",message:"gemini-cli rate limited, cooling down 2m 14s"},{id:"kit-log-4",time:"14:03:41",level:"ERROR",message:"kimi token refresh failed (401)"},{id:"kit-log-5",time:"14:03:42",level:"DEBUG",message:"combo coder -> openrouter/qwen3-coder"}];function q(){let e=(0,M.i)(),[t,n]=(0,a.useState)(0);return(0,r.jsxs)("section",{"aria-labelledby":"kit-feedback",className:"flex flex-col gap-4",children:[(0,r.jsx)("h2",{id:"kit-feedback",className:"font-display text-xl font-bold",children:"Feedback"}),(0,r.jsxs)("div",{className:"grid gap-3 md:grid-cols-2",children:[(0,r.jsx)(z.default,{variant:"info",title:"Info",children:(0,r.jsx)("span",{dir:"auto",children:"Point any client at your endpoint."})}),(0,r.jsx)(z.default,{variant:"warn",title:"Cooling down",children:(0,r.jsx)("span",{dir:"auto",children:"Gemini CLI hit a rate limit."})}),(0,r.jsx)(z.default,{variant:"err",title:"Sign-in expired",children:(0,r.jsx)("span",{dir:"auto",children:"Requests are skipping this provider."})}),(0,r.jsx)(z.default,{variant:"ok",title:"Saved",children:(0,r.jsx)("span",{dir:"auto",children:"All changes saved."})})]}),(0,r.jsx)("div",{className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,r.jsx)(s.default,{variant:"secondary",size:"sm",icon:"undo",onClick:()=>{e.error("Couldn't save the combo. Your previous version is still active.",{action:{label:"Undo",onSelect:()=>{n(e=>e+1),e.success("Undone")}}})},children:"Error toast with undo"}),(0,r.jsx)("p",{"aria-live":"polite",className:"text-xs text-muted",children:t>0?`Undo pressed ${t} time${1===t?"":"s"}.`:""})]})}),(0,r.jsx)("div",{className:"rounded-2xl border border-line bg-panel shadow-card",children:(0,r.jsx)(_.default,{icon:"hub",title:"No providers yet",body:(0,r.jsx)("span",{dir:"auto",children:"Connect a provider to start routing traffic through your endpoint."}),action:(0,r.jsx)(s.default,{icon:"add",children:"Add provider"})})}),(0,r.jsxs)("div",{className:"grid gap-4 md:grid-cols-3",children:[(0,r.jsx)(D.CardSkeleton,{}),(0,r.jsxs)("div",{className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,r.jsx)(D.Skeleton,{className:"mb-3 h-5 w-32"}),(0,r.jsx)(D.SkeletonText,{lines:3})]}),(0,r.jsx)("div",{className:"flex items-center justify-center rounded-2xl border border-line bg-panel p-6 shadow-card",children:(0,r.jsx)(D.Spinner,{size:"lg"})})]}),(0,r.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[(0,r.jsxs)("div",{className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,r.jsx)("p",{"data-i18n-skip":"true",className:"mb-3 text-xs font-semibold uppercase tracking-[0.08em] text-muted",children:"LoadingState"}),(0,r.jsx)(K.LoadingState,{lines:3,label:"Loading demo widget"})]}),(0,r.jsxs)("div",{className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,r.jsx)("p",{"data-i18n-skip":"true",className:"mb-3 text-xs font-semibold uppercase tracking-[0.08em] text-muted",children:"ErrorState"}),(0,r.jsx)(K.ErrorState,{title:"Could not load this widget",message:"The backend did not answer in time.",onRetry:()=>e.info("Retry demo pressed")})]})]}),(0,r.jsx)(F.default,{lines:U})]})}var H=n(81127),B=n(29499),G=n(93921),J=n(50611),V=n(97677);function Z(){let[e,t]=(0,a.useState)(!1),[n,l]=(0,a.useState)(!1),[i,o]=(0,a.useState)(!1),[d,c]=(0,a.useState)(!1);return(0,r.jsxs)("section",{"aria-labelledby":"kit-overlays",className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,r.jsx)("h2",{id:"kit-overlays",className:"font-display text-xl font-bold",children:"Overlays"}),(0,r.jsxs)("div",{className:"mt-4 flex flex-wrap items-center gap-2",children:[(0,r.jsx)(s.default,{variant:"secondary",onClick:()=>t(!0),children:"Open modal"}),(0,r.jsx)(s.default,{variant:"danger",onClick:()=>l(!0),children:"Open danger confirm"}),(0,r.jsx)(s.default,{variant:"ghost",onClick:()=>c(!0),children:"Open confirm with error"}),(0,r.jsx)(s.default,{variant:"secondary",onClick:()=>o(!0),children:"Open drawer"}),(0,r.jsxs)(G.default,{trigger:(0,r.jsx)(s.default,{variant:"secondary",children:"Open menu"}),align:"start",children:[(0,r.jsx)(G.MenuItem,{icon:"history",label:"Change log",onSelect:()=>{},children:"Change log"}),(0,r.jsx)(G.MenuItem,{icon:"dark_mode",label:"Theme",selected:!0,onSelect:()=>{},children:"Theme"}),(0,r.jsx)(G.MenuItem,{icon:"lock",label:"Settings",disabled:!0,onSelect:()=>{},children:"Settings"}),(0,r.jsx)(G.MenuItem,{icon:"power_settings_new",label:"Shutdown",danger:!0,onSelect:()=>{},children:"Shutdown"}),(0,r.jsx)(G.MenuItem,{icon:"logout",label:"Logout",danger:!0,onSelect:()=>{},children:"Logout"})]}),(0,r.jsx)(J.default,{trigger:(0,r.jsx)(s.default,{variant:"secondary",children:"Open popover"}),"aria-label":"Kit popover",children:(0,r.jsx)("p",{className:"text-sm text-muted",children:"Non-modal panel. Esc closes, focus returns."})}),(0,r.jsx)(V.default,{text:"Shows on hover and focus",position:"top",children:(0,r.jsx)(s.default,{variant:"ghost",children:"Hover me"})}),(0,r.jsx)(V.default,{text:"Error-tinted tip",variant:"err",children:(0,r.jsx)(s.default,{variant:"ghost",children:"Error tip"})})]}),(0,r.jsx)(H.default,{isOpen:e,onClose:()=>t(!1),title:"Kit modal",description:"Composed dialog: focus trap, Esc/backdrop close, scroll lock.",footer:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.default,{variant:"ghost",onClick:()=>t(!1),children:"Cancel"}),(0,r.jsx)(s.default,{onClick:()=>t(!1),children:"Save"})]}),children:(0,r.jsx)("p",{className:"text-sm text-muted",children:"Modal body content goes here."})}),(0,r.jsx)(H.ConfirmDialog,{isOpen:n,onClose:()=>l(!1),onConfirm:()=>l(!1),title:"Delete provider?",message:"This removes the connection. The request logs stay.",confirmText:"Delete",variant:"danger"}),(0,r.jsx)(H.ConfirmDialog,{isOpen:d,onClose:()=>c(!1),onConfirm:()=>{throw Error("Refresh failed (401). Sign in again and retry.")},title:"Refresh token?",message:"Async failure stays inline under role=alert.",confirmText:"Retry",variant:"default"}),(0,r.jsx)(B.default,{isOpen:i,onClose:()=>o(!1),title:"Kit drawer",children:(0,r.jsx)("p",{className:"text-sm text-muted",children:"Full-height inline-end panel. Esc closes."})})]})}function W(){let[e,t]=(0,a.useState)("today"),[n,j]=(0,a.useState)("forms"),[y,k]=(0,a.useState)(!0),[w,S]=(0,a.useState)(3),[O,R]=(0,a.useState)("60"),[$,P]=(0,a.useState)(!0);return(0,r.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,r.jsxs)("header",{className:"flex flex-wrap items-start justify-between gap-4",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"text-xs font-semibold uppercase tracking-[0.08em] text-muted",children:`${l.Hc.slug} UI kit`}),(0,r.jsx)("h1",{className:"font-display text-[68px] leading-none font-extrabold",children:"Signal"}),(0,r.jsx)("p",{dir:"auto",className:"mt-1 max-w-[72ch] text-[15px] text-muted",children:"Warm ink surfaces. Coral is the brand and your selection. Lime means traffic is live, or it is the one thing to press."})]}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(d.default,{icon:"search",label:"Search"}),(0,r.jsx)(v.default,{})]})]}),(0,r.jsxs)("section",{"aria-labelledby":"kit-actions",className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,r.jsx)("h2",{id:"kit-actions",className:"font-display text-xl font-bold",children:"Buttons"}),(0,r.jsxs)("div",{className:"mt-4 flex flex-wrap items-center gap-2",children:[(0,r.jsx)(s.default,{children:"Copy endpoint"}),(0,r.jsx)(s.default,{variant:"secondary",children:"Test all"}),(0,r.jsx)(s.default,{variant:"ghost",children:"Cancel"}),(0,r.jsx)(s.default,{variant:"danger",children:"Delete"}),(0,r.jsx)(s.default,{variant:"secondary",size:"sm",loading:!0,children:"Testing"}),(0,r.jsx)(u.default,{children:"⌘K"})]}),(0,r.jsxs)("div",{className:"mt-4 flex flex-wrap items-center gap-4",children:[(0,r.jsx)(b.default,{checked:y,onChange:k,"aria-label":"Sample toggle on"}),(0,r.jsx)(b.default,{checked:!1,"aria-label":"Sample toggle off"}),(0,r.jsx)(p.default,{"aria-label":"Period",options:[{value:"today",label:"Today"},{value:"7d",label:"7d"},{value:"30d",label:"30d"}],value:e,onChange:t}),(0,r.jsx)(f.default,{tabs:[{value:"forms",label:"Forms"},{value:"display",label:"Display"}],value:n,onChange:j,"aria-label":"Kit tabs"})]})]}),(0,r.jsxs)("section",{"aria-labelledby":"kit-forms",className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,r.jsx)("h2",{id:"kit-forms",className:"font-display text-xl font-bold",children:"Forms"}),(0,r.jsxs)("div",{className:"mt-4 grid gap-4 md:grid-cols-2",children:[(0,r.jsx)(c.default,{label:"Provider name",hint:(0,r.jsx)("span",{dir:"auto",children:"Shown in lists and logs."}),placeholder:"claude-work"}),(0,r.jsx)(c.default,{label:"API key",error:(0,r.jsx)("span",{dir:"auto",children:"Key is required."}),placeholder:"sk-..."}),(0,r.jsx)(h.default,{label:"Notes",placeholder:"Anything the team should know."}),(0,r.jsx)(x.default,{label:"Auto-refresh",value:O,onChange:e=>R(e.target.value),options:[{value:"60",label:"Every 60s"},{value:"0",label:"Off"}]}),(0,r.jsx)(m.default,{label:"Sticky limit",value:w,min:1,max:10,onChange:S}),(0,r.jsx)(g.default,{label:"Cache TTL",value:O,unit:"s",onChange:e=>R(e.target.value)}),(0,r.jsx)(c.default,{label:"Disabled",value:"read only",disabled:!0,readOnly:!0}),(0,r.jsx)(i.default,{checked:$,onChange:P,label:"Enable provider"})]}),(0,r.jsx)("div",{className:"mt-4",children:(0,r.jsx)(o.default,{value:"http://localhost:20128/v1",label:"Endpoint URL"})})]}),(0,r.jsx)(C,{}),(0,r.jsx)(E,{}),(0,r.jsx)(N,{}),(0,r.jsx)(T,{}),(0,r.jsx)(I,{}),(0,r.jsx)(A,{}),(0,r.jsx)(q,{}),(0,r.jsx)(Z,{})]})}},25086:(e,t,n)=>{"use strict";n.d(t,{CardSkeleton:()=>u,PageLoading:()=>o,Skeleton:()=>d,SkeletonText:()=>c,Spinner:()=>i,default:()=>m});var r=n(95155),a=n(14051),l=n.n(a),s=n(31474);function i({size:e="md",className:t}){return(0,r.jsx)("span",{role:"status","aria-label":"Loading",className:(0,s.cn)("material-symbols-outlined animate-spin text-coral",{sm:"text-[16px]",md:"text-[24px]",lg:"text-[32px]",xl:"text-[48px]"}[e],t),children:"progress_activity"})}function o({message:e="Loading..."}){return(0,r.jsxs)("div",{className:"fixed inset-0 z-50 flex flex-col items-center justify-center bg-bg",children:[(0,r.jsx)(i,{size:"xl"}),(0,r.jsx)("p",{className:"mt-4 text-muted",children:e})]})}function d({className:e,...t}){return(0,r.jsx)("div",{"aria-hidden":"true",className:(0,s.cn)("animate-pulse rounded-[10px] bg-raised",e),...t})}function c({lines:e=3,className:t}){let n=Array.from({length:e},(e,t)=>t);return(0,r.jsx)("div",{className:(0,s.cn)("flex flex-col gap-2",t),"aria-hidden":"true",children:n.map(e=>(0,r.jsx)(d,{className:(0,s.cn)("h-3",e===n.length-1?"w-2/3":"w-full")},`line-${e}`))})}function u(){return(0,r.jsxs)("div",{className:"rounded-2xl border border-line bg-panel p-6 shadow-card",children:[(0,r.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,r.jsx)(d,{className:"h-4 w-24"}),(0,r.jsx)(d,{className:"size-10 rounded-[10px]"})]}),(0,r.jsx)(d,{className:"mb-2 h-8 w-16"}),(0,r.jsx)(d,{className:"h-3 w-20"})]})}function m({type:e="spinner",...t}){switch(e){case"page":return(0,r.jsx)(o,{...t});case"skeleton":return(0,r.jsx)(d,{...t});case"card":return(0,r.jsx)(u,{...t});default:return(0,r.jsx)(i,{...t})}}d.propTypes={className:l().string},c.propTypes={lines:l().number,className:l().string}},28745:(e,t,n)=>{"use strict";n.d(t,{vQ:()=>l,UY:()=>d,Nu:()=>s,B2:()=>o,h0:()=>i});var r=n(4553),a=n(41463);let l={name:`${r.Hc.name} Proxy`,description:"AI infrastructure management",version:"1.0.1",build:{channel:a.env.NEXT_PUBLIC_BUILD_CHANNEL||"",sha:a.env.NEXT_PUBLIC_BUILD_SHA||""}},s={changelogUrl:"https://raw.githubusercontent.com/tokenhop/tokenhop/refs/heads/master/CHANGELOG.md"},i={appPort:20128},o={storageKey:"theme",defaultTheme:"dark"},d={maxLines:200,pollIntervalMs:1e3}},29499:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var r=n(95155),a=n(12115),l=n(14051),s=n.n(l),i=n(31474),o=n(19844),d=n(47929),c=n(6587);function u({isOpen:e,onClose:t,title:n,children:l,width:s="md",size:m,side:p="end",closeOnOverlay:x=!0,closeOnEscape:f=!0,initialFocusRef:h,className:b,id:g,bare:v=!1}){let j=(0,a.useRef)(null),[y,k]=(0,d.lk)(j),{overlayId:N,titleId:w}=(0,d.uf)("signal-drawer"),C=!!e;if((0,d.K$)(C),(0,d.rM)({container:y,active:C,initialFocusRef:h}),(0,d.s9)({onClose:t,containerRef:j,enabled:C,closeOnEscape:f,closeOnOutside:x}),!C)return null;let E=!v&&n;return(0,r.jsx)(d.ZL,{children:(0,r.jsxs)("div",{className:"fixed inset-0 z-50",children:[(0,r.jsx)("div",{className:"signal-backdrop absolute inset-0","aria-hidden":"true"}),(0,r.jsx)("div",{ref:k,id:g||N,role:"dialog","aria-modal":"true","aria-labelledby":E?w:void 0,"aria-label":v&&"string"==typeof n?n:void 0,tabIndex:-1,className:(0,i.cn)("signal-overlay-drawer absolute inset-y-0 flex max-w-full flex-col bg-panel text-text shadow-card outline-none",(0,o.PT)(p),(0,o.IN)(m??s),b),children:v?l:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"flex shrink-0 items-center justify-between gap-3 border-b border-line px-6 py-4",children:[n?(0,r.jsx)("h2",{id:w,className:"min-w-0 font-display text-lg font-bold",children:n}):(0,r.jsx)("span",{}),t?(0,r.jsx)(c.default,{icon:"close",label:"Close",onClick:t}):null]}),(0,r.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto p-6 custom-scrollbar",children:l})]})})]})})}u.propTypes={isOpen:s().bool,onClose:s().func,title:s().node,children:s().node,width:s().oneOf(Object.keys(o.gD)),size:s().oneOf(Object.keys(o.gD)),side:s().oneOf(["start","end"]),closeOnOverlay:s().bool,closeOnEscape:s().bool,initialFocusRef:s().shape({current:s().any}),className:s().string,id:s().string,bare:s().bool}},30225:(e,t,n)=>{Promise.resolve().then(n.bind(n,21341))},31692:(e,t,n)=>{"use strict";n.d(t,{Zr:()=>a});let r=e=>t=>{try{let n=e(t);if(n instanceof Promise)return n;return{then:e=>r(e)(n),catch(e){return this}}}catch(e){return{then(e){return this},catch:t=>r(t)(e)}}},a=(e,t)=>(n,a,l)=>{let s,i={storage:function(e){let t;try{t=e()}catch(e){return}return{getItem:e=>{var n;let r=e=>null===e?null:JSON.parse(e,void 0),a=null!=(n=t.getItem(e))?n:null;return a instanceof Promise?a.then(r):r(a)},setItem:(e,n)=>t.setItem(e,JSON.stringify(n,void 0)),removeItem:e=>t.removeItem(e)}}(()=>window.localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},o=!1,d=0,c=new Set,u=new Set,m=i.storage;if(!m)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${i.name}', the given storage is currently unavailable.`),n(...e)},a,l);let p=()=>{let e=i.partialize({...a()});return m.setItem(i.name,{state:e,version:i.version})},x=l.setState;l.setState=(e,t)=>(x(e,t),p());let f=e((...e)=>(n(...e),p()),a,l);l.getInitialState=()=>f;let h=()=>{var e,t;if(!m)return;let l=++d;o=!1,c.forEach(e=>{var t;return e(null!=(t=a())?t:f)});let x=(null==(t=i.onRehydrateStorage)?void 0:t.call(i,null!=(e=a())?e:f))||void 0;return r(m.getItem.bind(m))(i.name).then(e=>{if(e)if("number"!=typeof e.version||e.version===i.version)return[!1,e.state];else{if(i.migrate){let t=i.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}return[!1,void 0]}).then(e=>{var t;if(l!==d)return;let[r,o]=e;if(n(s=i.merge(o,null!=(t=a())?t:f),!0),r)return p()}).then(()=>{l===d&&(null==x||x(a(),void 0),s=a(),o=!0,u.forEach(e=>e(s)))}).catch(e=>{l===d&&(null==x||x(void 0,e))})};return l.persist={setOptions:e=>{i={...i,...e},e.storage&&(m=e.storage)},clearStorage:()=>{++d,null==m||m.removeItem(i.name)},getOptions:()=>i,rehydrate:()=>h(),hasHydrated:()=>o,onHydrate:e=>(c.add(e),()=>{c.delete(e)}),onFinishHydration:e=>(u.add(e),()=>{u.delete(e)})},i.skipHydration||h(),s||f}},35652:(e,t,n)=>{"use strict";var r,a=n(41463);let l=Object.freeze(["9router","tokenhop"]),s="tokenhop";function i(e,t){if(l.includes(e))return e;let n=l.map(e=>`"${e}"`).join(", ");throw Error(`${t}: unknown brand ${JSON.stringify(e)}; allowed values: ${n}`)}let o=""==(r="tokenhop")?s:i(r,"NEXT_PUBLIC_BRAND"),d=Object.freeze({name:"tokenhop",slug:"tokenhop",envPrefix:"TOKENHOP_",headerPrefix:"x-tokenhop-",jcodeApiKeyEnv:"JCODE_TOKENHOP_API_KEY",defaultApiKey:"sk_tokenhop",dataDirName:"tokenhop",samlIssuerDefault:"urn:tokenhop:sp",mitmCaCommonName:"tokenhop MITM Root CA",mitmCaOrg:"tokenhop",mitmCertFile:"tokenhop-root-ca.crt",pidFile:"tokenhop.pid",autostartLabel:"dev.tokenhop.autostart",autostartDesktopFile:"tokenhop.desktop",autostartVbsFile:"tokenhop.vbs",clientConfigKey:"tokenhop",customModelIdPrefix:"custom:tokenhop-",storageKeyPrefix:"tokenhop.",eventPrefix:"tokenhop:",backupFilePrefix:"tokenhop-backup-",npmPackage:"tokenhop",appPackage:"tokenhop-app",repoSlug:"tokenhop/tokenhop",repoUrl:"https://github.com/tokenhop/tokenhop",imageName:"ghcr.io/tokenhop/tokenhop",websiteUrl:"https://tokenhop.ai",docsUrl:"https://tokenhop.dev",wordmark:"tokenhop",favicon:"/brand/favicon.svg",faviconIco:"/brand/favicon.ico",appIcon192:"/brand/icons/icon-192.svg",appIcon512:"/brand/icons/icon-512.svg",trayIconName:"icon-tokenhop",trayIconTemplate:!0}),c=Object.freeze({names:Object.freeze(["9Router","9router"]),slug:"9router",envPrefixes:Object.freeze(["NINEROUTER_","NINE_ROUTER_"]),headerPrefix:"x-9router-",jcodeApiKeyEnv:"JCODE_9ROUTER_API_KEY",defaultApiKey:"sk_9router",dataDirName:"9router",samlIssuerDefault:"urn:9router:sp",mitmCaCommonName:"9Router MITM Root CA",mitmCaOrg:"9Router",mitmCertFile:"9router-root-ca.crt",pidFile:"9router.pid",autostartLabel:"com.9router.autostart",autostartDesktopFile:"9router.desktop",autostartVbsFile:"9router.vbs",clientConfigKeys:Object.freeze(["9router","9Router"]),customModelIdPrefix:"custom:9Router-",storageKeyPrefix:"9router.",eventPrefix:"9router:",backupFilePrefix:"9router-backup-",npmPackage:"9router",appPackage:"9router-app",repoSlug:"yandy-r/9router",repoUrl:"https://github.com/yandy-r/9router",imageName:"ghcr.io/yandy-r/9router",wordmark:"router",favicon:"/favicon.svg",faviconIco:"/favicon.ico",appIcon192:"/icons/icon-192.svg",appIcon512:"/icons/icon-512.svg",trayIconName:"icon",trayIconTemplate:!1}),u=Object.freeze({kimiPlatform:"9router",clineUserAgentProduct:"9Router",clineClientType:"9router",devinMcpClientName:"9router",coworkMcpClientName:"9router",cursorMcpProvider:"9router",glmMcpClientName:"9router",xaiUserAgent:"grok-cli/9router",xiaomiKeyNamePrefix:"9router-xmd-",githubUserAgent:"9Router",proxyTestUserAgent:"9Router",denoRelayKind:"9router-relay"}),m=new Set(["repoSlug","repoUrl","imageName","websiteUrl","docsUrl"]),p={name:"names",envPrefix:"envPrefixes",clientConfigKey:"clientConfigKeys"},x="tokenhop"===o?d:Object.freeze(Object.fromEntries(Object.keys(d).map(e=>{let t;return[e,m.has(e)?d[e]:Array.isArray(t=c[p[e]||e])?t[0]:t]}))),f=new Set;function h(e,t,n){if("tokenhop"!==o)return!1;let r=`${e}\u0000${t}`;return!f.has(r)&&(f.add(r),console.warn(`[tokenhop] deprecated ${e} "${t}" → use "${n}" (legacy support ends in v2.0.0)`),!0)}let b=/^[A-Z0-9]+(_[A-Z0-9]+)*$/;function g(e){if("string"!=typeof e||!b.test(e))throw Error(`envName: invalid suffix ${JSON.stringify(e)}; expected e.g. "PEER_TOKEN"`);return d.envPrefix+e}let v=/^(?!x-)[a-z0-9]+(-[a-z0-9]+)*$/;function j(e){return x.headerPrefix+function(e,t){if("string"!=typeof e||!v.test(e))throw Error(`${t}: invalid header name ${JSON.stringify(e)}; expected a bare lowercase name like "connection-id"`);return e}(e,"header")}e.exports={BRAND_IDS:l,DEFAULT_BRAND_ID:s,ACTIVE_BRAND_ID:o,isActiveBrand:function(e){return i(e,"isActiveBrand")===o},BRAND:d,LEGACY:c,ACTIVE:x,UPSTREAM_CLIENT_IDS:u,envName:g,readEnv:function(e,t=a.env){let n=g(e);if(void 0!==t[n])return t[n];for(let r of c.envPrefixes){let a=r+e;if(void 0!==t[a])return h("env var",a,n),t[a]}},warnLegacyOnce:h,header:j,legacyHeaderNames:function(e){let t=j(e);return[c.headerPrefix+e].filter(e=>e!==t)}}},38587:(e,t,n)=>{"use strict";n.d(t,{default:()=>s});var r=n(95155),a=n(1620),l=n(31474);function s({className:e,variant:t="default"}){let{isDark:n,toggleTheme:i}=(0,a.D)(),o={default:(0,l.cn)("flex items-center justify-center size-10 rounded-full","text-muted hover:text-text","hover:bg-raised transition-colors"),card:(0,l.cn)("flex items-center justify-center size-11 rounded-full","bg-panel/60 hover:bg-panel","border border-line","backdrop-blur-md shadow-sm hover:shadow-card","text-muted hover:text-coral-ink","transition-all group")};return(0,r.jsx)("button",{onClick:i,className:(0,l.cn)(o[t],e),"aria-label":`Switch to ${n?"light":"dark"} mode`,title:`Switch to ${n?"light":"dark"} mode`,children:(0,r.jsx)("span",{className:(0,l.cn)("material-symbols-outlined text-[22px]","card"===t&&"transition-transform duration-300 group-hover:rotate-12"),children:n?"light_mode":"dark_mode"})})}},38794:(e,t,n)=>{"use strict";n.d(t,{default:()=>o});var r=n(95155),a=n(14051),l=n.n(a),s=n(12115),i=n(50770);function o({lines:e,label:t="Console output",className:n,live:a="off",onScroll:l,scrollRef:d,cursor:c=!1,row:u}){return(0,r.jsx)("div",{ref:d,role:"log","aria-label":t,"aria-live":a,dir:"ltr",onScroll:l,tabIndex:0,className:`signal-terminal custom-scrollbar m-0 overflow-auto rounded-2xl p-[18px_22px] text-start font-mono text-[13px] leading-[1.75] focus-visible:shadow-focus${n?` ${n}`:""}`,children:(0,r.jsxs)("ol",{className:"m-0 list-none p-0",children:[u?e.map((e,t)=>(0,r.jsx)(s.Fragment,{children:u(e,t)},e.key??e.id??`${e.time}-${t}`)):e.map((e,t)=>(0,r.jsxs)("li",{className:"flex gap-4 whitespace-nowrap",children:[(0,r.jsx)("span",{className:"signal-terminal-time shrink-0",children:e.time||"--:--:--"}),(0,r.jsx)("span",{className:`w-[52px] shrink-0 font-semibold ${(0,i.pN)(e.level)}`,children:e.level}),(0,r.jsx)("span",{className:"min-w-0 flex-1 whitespace-pre",children:e.message})]},e.id??`${e.time}-${t}`)),c&&(0,r.jsxs)("li",{className:"mt-0.5 flex gap-4 whitespace-nowrap","aria-hidden":"true",children:[(0,r.jsx)("span",{className:"signal-terminal-time shrink-0",children:"--:--:--"}),(0,r.jsx)("span",{className:"signal-terminal-cursor w-[52px] shrink-0 animate-pulse font-semibold",children:"▍"})]})]})})}o.propTypes={lines:l().arrayOf(l().shape({id:l().oneOfType([l().string,l().number]),time:l().string,level:l().oneOf(["LOG","INFO","WARN","ERROR","DEBUG"]).isRequired,message:l().string.isRequired})).isRequired,label:l().string,className:l().string,live:l().oneOf(["off","polite"]),onScroll:l().func,scrollRef:l().shape({current:l().object}),cursor:l().bool,row:l().func}},44863:(e,t,n)=>{"use strict";n.d(t,{SegmentedHealthBar:()=>o,default:()=>i});var r=n(95155),a=n(14051),l=n.n(a),s=n(50770);function i({value:e,kind:t,variant:n,label:a,valueText:l,className:o}){if(!a)throw Error("Meter: `label` is required for the meter accessible name");let d=(0,s.r4)(e),c=n??(0,s.vE)(d,t),u=s.lN[c];if(!u)throw Error(`Meter: unknown variant "${c}"`);return(0,r.jsx)("div",{role:"meter","aria-valuenow":d,"aria-valuemin":0,"aria-valuemax":100,"aria-valuetext":l,"aria-label":a,className:`h-2 w-full overflow-hidden rounded-pill bg-raised shadow-[inset_0_0_0_1px_var(--signal-line)]${o?` ${o}`:""}`,children:(0,r.jsx)("div",{className:`h-full rounded-pill ${u}`,style:{width:`${d}%`}})})}function o({segments:e,className:t}){if(!Array.isArray(e)||0===e.length)throw Error("SegmentedHealthBar: needs at least one segment");return(0,r.jsx)("fieldset",{"aria-label":"Account health",className:`m-0 grid min-w-0 auto-cols-fr grid-flow-col gap-1 border-0 p-0${t?` ${t}`:""}`,children:e.map((e,t)=>(0,r.jsx)(i,{value:e.value,kind:e.kind,label:e.label,className:"rounded-sm shadow-none"},`${e.label??"segment"}-${t}`))})}i.propTypes={value:l().number.isRequired,kind:l().oneOf(["unlimited","credits"]),variant:l().oneOf(["brand","neutral"]),label:l().string.isRequired,valueText:l().string,className:l().string},o.propTypes={segments:l().arrayOf(l().shape({value:l().number.isRequired,kind:l().oneOf(["unlimited","credits"]),label:l().string.isRequired})).isRequired,className:l().string}},50611:(e,t,n)=>{"use strict";n.d(t,{default:()=>u,p:()=>c});var r=n(95155),a=n(12115),l=n(14051),s=n.n(l),i=n(31474),o=n(19844),d=n(47929);function c(e,t,n,r){let[l,s]=(0,a.useState)({top:0,left:0,visibility:"hidden"});return(0,a.useEffect)(()=>{if(!n||"u"<typeof document)return;let a=0,l=()=>{let n=e.current,i=t.current;if(!n||!i){a=requestAnimationFrame(l);return}let d="rtl"===getComputedStyle(n).direction,c=(0,o.mI)(n.getBoundingClientRect(),{width:i.offsetWidth,height:i.offsetHeight},r,d);s({top:c.top,left:c.left})};return l(),window.addEventListener("resize",l),window.addEventListener("scroll",l,!0),()=>{cancelAnimationFrame(a),window.removeEventListener("resize",l),window.removeEventListener("scroll",l,!0)}},[e,t,n,r]),l}function u({trigger:e,children:t,open:n,onOpenChange:l,placement:s="bottom","aria-label":o,className:m}){let p=(0,a.useRef)(null),x=(0,a.useRef)(null),{overlayId:f}=(0,d.uf)("signal-popover"),[h,b]=(0,a.useState)(!1),g="boolean"==typeof n,v=g?n:h,j=(0,a.useCallback)(e=>g?l?.(e):b(e),[g,l]),y=c(p,x,v,s),k=(0,a.useCallback)(()=>{let e=x.current?.contains(document.activeElement)??!1;j(!1),e&&p.current?.focus?.()},[j]);if((0,d.s9)({onClose:k,containerRef:x,enabled:v,closeOnOutside:!1}),(0,a.useEffect)(()=>{if(!v)return;let e=e=>{x.current?.contains(e.target)||p.current?.contains(e.target)||j(!1)};return document.addEventListener("pointerdown",e),()=>document.removeEventListener("pointerdown",e)},[v,j]),!(0,a.isValidElement)(e))throw Error("Popover: `trigger` must be a React element");return(0,r.jsxs)(r.Fragment,{children:[(0,a.cloneElement)(e,{ref:p,"aria-haspopup":"dialog","aria-expanded":v,"aria-controls":v?f:void 0,onClick:t=>{e.props.onClick?.(t),t.defaultPrevented||j(!v)}}),v?(0,r.jsx)(d.ZL,{children:(0,r.jsx)("div",{ref:x,id:f,role:"dialog","aria-label":o,style:y,className:(0,i.cn)("signal-overlay-pop fixed z-50 min-w-48 max-w-[min(24rem,calc(100vw-16px))] rounded-xl border border-line bg-panel p-4 text-text shadow-card",m),children:t})}):null]})}u.propTypes={trigger:s().element.isRequired,children:s().node,open:s().bool,onOpenChange:s().func,placement:s().oneOf(["top","bottom","start","end"]),"aria-label":s().string,className:s().string}},56006:(e,t,n)=>{"use strict";n.d(t,{default:()=>i});var r=n(95155),a=n(14051),l=n.n(a);let s={info:{classes:"bg-sky-bg text-sky-ink",icon:"info"},warn:{classes:"bg-warn-bg text-warn",icon:"warning"},err:{classes:"bg-err-bg text-err",icon:"error"},ok:{classes:"bg-ok-bg text-ok",icon:"check_circle"}};function i({variant:e="info",title:t,children:n,icon:a,className:l}){let o=s[e];if(!o)throw Error(`Callout: unknown variant "${e}"`);return(0,r.jsxs)("div",{role:"err"===e?"alert":"status",className:`flex gap-3 rounded-xl p-4 text-sm ${o.classes}${l?` ${l}`:""}`,children:[(0,r.jsx)("span",{className:"material-symbols-outlined shrink-0 text-[20px]","aria-hidden":"true",children:a??o.icon}),(0,r.jsxs)("div",{className:"min-w-0 text-text",children:[t&&(0,r.jsx)("p",{className:"font-semibold",children:t}),n&&(0,r.jsx)("div",{className:"text-muted",children:n})]})]})}i.propTypes={variant:l().oneOf(Object.keys(s)),title:l().node,children:l().node,icon:l().string,className:l().string}},65921:(e,t,n)=>{"use strict";n.d(t,{i:()=>l});var r=n(1934);let a=0,l=(0,r.v)((e,t)=>({notifications:[],addNotification:n=>{let r=++a,l={id:r,type:n.type||"info",message:n.message,title:n.title||null,action:n.action??null,accent:n.accent??null,duration:n.duration??5e3,dismissible:n.dismissible??!0,createdAt:Date.now()};return e(e=>({notifications:[...e.notifications,l]})),l.duration>0&&setTimeout(()=>t().removeNotification(r),l.duration),r},removeNotification:t=>{e(e=>({notifications:e.notifications.filter(e=>e.id!==t)}))},clearAll:()=>e({notifications:[]}),success:(e,n)=>t().addNotification(s("success",e,n)),error:(e,n)=>t().addNotification({duration:8e3,...s("error",e,n)}),warning:(e,n)=>t().addNotification(s("warning",e,n)),info:(e,n)=>t().addNotification(s("info",e,n))}));function s(e,t,n){if("string"==typeof n)return{type:e,message:t,title:n};let r={type:e,message:t,...n||{}},{action:a}=r;if(null!=a&&("string"!=typeof a.label||!a.label||"function"!=typeof a.onSelect))throw TypeError("notification action needs a label and onSelect function");return r}},77671:(e,t,n)=>{"use strict";n.d(t,{ErrorState:()=>c,LoadingState:()=>d});var r=n(95155),a=n(14051),l=n.n(a),s=n(92542),i=n(56006),o=n(25086);function d({lines:e=4,label:t="Loading",className:n=""}){return(0,r.jsxs)("div",{role:"status","aria-label":t,className:`flex min-w-0 flex-col gap-3 ${n}`,children:[(0,r.jsx)(o.Skeleton,{className:"h-5 w-24"}),(0,r.jsx)(o.Skeleton,{className:"h-9 w-2/3"}),Array.from({length:e},(e,t)=>`line-${t}`).map(e=>(0,r.jsx)(o.Skeleton,{className:"h-4 w-full"},e))]})}function c({message:e,onRetry:t,title:n="Could not load this view",children:a}){return(0,r.jsxs)("div",{className:"flex min-w-0 flex-col gap-3",children:[(0,r.jsx)(i.default,{variant:"err",title:n,children:e||"Something went wrong while loading."}),(0,r.jsxs)("div",{className:"flex flex-wrap gap-2",children:[t&&(0,r.jsx)(s.default,{variant:"secondary",size:"sm",icon:"refresh",onClick:t,children:"Retry"}),a]})]})}d.propTypes={lines:l().number,label:l().string,className:l().string},c.propTypes={message:l().string,onRetry:l().func,title:l().string,children:l().node}},84588:(e,t,n)=>{"use strict";n.d(t,{default:()=>o});var r=n(95155),a=n(14051),l=n.n(a),s=n(31474);let i={none:"",xs:"p-3",sm:"p-4",md:"p-6",lg:"p-8"};function o({children:e,title:t,subtitle:n,icon:a,action:l,as:d="h2",padding:c="md",hover:u=!1,elev:m=!1,className:p,role:x,...f}){if(void 0===i[c])throw Error(`Card: unknown padding "${c}"`);let h=x||(f["aria-label"]||f["aria-labelledby"]?"region":void 0);return(0,r.jsxs)("div",{role:h,className:(0,s.cn)("rounded-2xl border border-line bg-panel shadow-card",u&&"cursor-pointer transition-colors duration-150 hover:border-coral/40",i[c],p),...f,children:[(t||l)&&(0,r.jsx)(o.Header,{title:t,subtitle:n,icon:a,actions:l,as:d,className:"mb-4"}),e]})}o.propTypes={children:l().node,title:l().node,subtitle:l().node,icon:l().string,action:l().node,as:l().oneOf(["h2","h3","h4"]),padding:l().oneOf(Object.keys(i)),hover:l().bool,elev:l().bool,className:l().string,role:l().string},o.Header=function({title:e,subtitle:t,icon:n,actions:a,as:l="h2",className:i}){return(0,r.jsxs)("div",{className:(0,s.cn)("flex flex-wrap items-center justify-between gap-3",i),children:[(0,r.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[n&&(0,r.jsx)("span",{className:"flex size-10 shrink-0 items-center justify-center rounded-[10px] bg-coral-bg text-coral-ink",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-[20px]","aria-hidden":"true",children:n})}),(0,r.jsxs)("div",{className:"min-w-0",children:[e&&(0,r.jsx)(l,{className:"font-display text-lg font-bold text-text",children:e}),t&&(0,r.jsx)("p",{className:"text-sm text-muted",children:t})]})]}),a&&(0,r.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:a})]})},o.Header.propTypes={title:l().node,subtitle:l().node,icon:l().string,actions:l().node,as:l().oneOf(["h2","h3","h4"]),className:l().string},o.Section=function({children:e,className:t,...n}){return(0,r.jsx)("div",{className:(0,s.cn)("rounded-xl border border-line bg-raised p-4",t),...n,children:e})},o.Row=function({children:e,className:t,...n}){return(0,r.jsx)("div",{className:(0,s.cn)("-mx-3 border-b border-line p-3 px-3 transition-colors last:border-b-0 hover:bg-raised",t),...n,children:e})},o.ListItem=function({children:e,actions:t,className:n,...a}){return(0,r.jsxs)("div",{className:(0,s.cn)("group -mx-3 flex items-center justify-between border-b border-line p-3 px-3 transition-colors last:border-b-0 hover:bg-raised",n),...a,children:[(0,r.jsx)("div",{className:"min-w-0 flex-1",children:e}),t&&(0,r.jsx)("div",{className:"flex items-center gap-1 opacity-0 transition-opacity group-focus-within:opacity-100 group-hover:opacity-100",children:t})]})}},86465:(e,t,n)=>{"use strict";n.d(t,{default:()=>s});var r=n(95155),a=n(14051),l=n.n(a);function s({model:e,className:t}){return(0,r.jsx)("code",{className:`inline-flex max-w-full items-center truncate rounded-md border border-line bg-raised px-2 py-0.5 font-mono text-xs text-muted${t?` ${t}`:""}`,children:e})}s.propTypes={model:l().string.isRequired,className:l().string}},93921:(e,t,n)=>{"use strict";n.d(t,{MenuItem:()=>x,default:()=>p});var r=n(95155),a=n(12115),l=n(14051),s=n.n(l),i=n(31474),o=n(4650),d=n(19844),c=n(47929);let u=a.useLayoutEffect,m=e=>"string"==typeof e?.props?.label?e.props.label:e?.props?.children;function p({trigger:e,children:t,open:n,onOpenChange:l,align:s="end",className:x}){let f=(0,a.useRef)(null),h=(0,a.useRef)(null),b=(0,a.useRef)([]),g=(0,a.useRef)({session:null}),{overlayId:v}=(0,c.uf)("signal-menu"),[j,y]=(0,a.useState)(!1),[k,N]=(0,a.useState)(-1),[w,C]=(0,a.useState)(null),[E,S]=(0,a.useState)(null),O=(0,a.useCallback)(e=>{h.current=e,S(e)},[]),T="boolean"==typeof n,R=T?n:j,I=(0,a.useCallback)(e=>{T?l?.(e):y(e),e||(N(-1),g.current.session=null)},[T,l]),$=(0,a.useCallback)(()=>{let e=f.current;e&&"function"==typeof e.focus&&e.focus()},[]),P=(0,a.useCallback)(()=>I(!1),[I]),L=(0,a.useCallback)(()=>{P(),$()},[P,$]);(0,a.useEffect)(()=>{R&&E&&w&&b.current[Math.max(k,0)]?.focus?.()},[R,E,w,k]),(0,c.s9)({onClose:L,containerRef:h,enabled:R,closeOnOutside:!1}),(0,a.useEffect)(()=>{if(!R)return;let e=e=>{h.current?.contains(e.target)||f.current?.contains(e.target)||P()};return document.addEventListener("pointerdown",e),()=>document.removeEventListener("pointerdown",e)},[R,P]);let A=a.Children.toArray(t).filter(a.isValidElement),z=A.map(m),_=A.map(e=>!!e.props.disabled),D=(0,a.useRef)(_);D.current=_;let K=(0,a.useCallback)((e=0)=>{I(!0);let t=(0,d.oQ)(D.current,e<0?0:e);N(t<0?e:t)},[I]);u(()=>{if(!R||!E)return void C(null);let e=()=>{let e=f.current;if(!e)return;let t=e.getBoundingClientRect(),n={width:E.offsetWidth,height:E.offsetHeight},r="rtl"===getComputedStyle(e).direction,a=(0,d.Rg)(t,n,s,r);C({top:a.top,left:a.left})};return e(),window.addEventListener("resize",e),window.addEventListener("scroll",e,!0),()=>{window.removeEventListener("resize",e),window.removeEventListener("scroll",e,!0)}},[R,E,s]);let F=e=>{if("Tab"===e.key){R&&P();return}if("ArrowDown"===e.key)e.preventDefault(),K(0);else if("ArrowUp"===e.key){e.preventDefault(),I(!0);let t=(0,d.oQ)(_,A.length-1,!0);N(t<0?A.length-1:t)}else("Enter"===e.key||" "===e.key)&&(e.preventDefault(),R?P():K(0))},M=(0,a.isValidElement)(e)?e.props["aria-label"]??e.props.label??("string"==typeof e.props.children?e.props.children:void 0):void 0,U={ref:f,"aria-haspopup":"menu","aria-expanded":R,"aria-controls":R?v:void 0,onClick:()=>{R?P():K(0)},onKeyDown:F};return(0,r.jsxs)(r.Fragment,{children:[(0,a.isValidElement)(e)?(0,a.cloneElement)(e,{...U,onClick:t=>{e.props.onClick?.(t),t.defaultPrevented||U.onClick(t)},onKeyDown:t=>{e.props.onKeyDown?.(t),t.defaultPrevented||F(t)}}):(0,r.jsx)("button",{type:"button",...U,className:"inline-flex h-11 items-center justify-center gap-2 rounded-lg border border-line bg-raised px-4 text-sm font-semibold text-text transition-colors duration-150 hover:bg-line/60 focus-visible:outline-none focus-visible:shadow-focus",children:e}),R?(0,r.jsx)(c.ZL,{children:(0,r.jsx)("div",{ref:O,id:v,role:"menu","aria-label":M,"aria-orientation":"vertical",style:w??{visibility:"hidden"},className:(0,i.cn)("signal-overlay-menu fixed z-50 w-60 overflow-hidden rounded-xl border border-line bg-panel py-1 text-text shadow-card",x),children:A.map((e,t)=>(0,a.cloneElement)(e,{key:e.key??t,ref:e=>{b.current[t]=e},tabIndex:t===Math.max(k,0)?0:-1,"data-active":t===Math.max(k,0),onKeyDown:e=>((e,t)=>{if("Tab"===e.key)return void P();if((0,o.JF)(e.key)){e.preventDefault();let n="u">typeof document&&"rtl"===document.dir,r=(0,d.jg)(t,e.key,_,o.lZ,{rtl:n});N(r),b.current[r]?.focus?.();return}if(1===e.key.length&&!e.ctrlKey&&!e.metaKey&&!e.altKey){let n=g.current,{session:r,index:a}=(0,d.sF)(n.session,e.key,e.timeStamp,z.map(e=>String(e??"")),t,_);n.session=r,a!==t&&(N(a),b.current[a]?.focus?.())}})(e,t),onSelect:()=>{e.props.onSelect?.(),L()}}))})}):null]})}p.propTypes={trigger:s().node.isRequired,children:s().node,open:s().bool,onOpenChange:s().func,align:s().oneOf(["start","end"]),className:s().string};let x=function({icon:e,label:t,children:n,trailing:a,danger:l=!1,selected:s=!1,disabled:o=!1,onSelect:d,...c}){return(0,r.jsxs)("button",{type:"button",role:"menuitem","aria-current":s||void 0,disabled:o,onClick:e=>{o?e.preventDefault():d?.(e)},className:(0,i.cn)("flex min-h-11 w-full items-center gap-3 px-4 py-2.5 text-sm transition-colors duration-150","focus-visible:outline-none focus-visible:shadow-focus","disabled:cursor-not-allowed disabled:opacity-50",l?"text-err hover:bg-err-bg":"text-text hover:bg-raised",s&&"bg-coral-bg font-semibold text-coral-ink"),...c,children:[e?(0,r.jsx)("span",{className:"material-symbols-outlined text-[20px] text-muted","aria-hidden":"true",children:e}):null,(0,r.jsx)("span",{className:"min-w-0 flex-1 text-start",children:n??t}),s?(0,r.jsx)("span",{className:"material-symbols-outlined text-[18px]","aria-hidden":"true",children:"check"}):null,a?(0,r.jsx)("span",{className:"shrink-0 text-sm text-muted",children:a}):null]})};x.propTypes={icon:s().string,label:s().string,children:s().node,trailing:s().node,danger:s().bool,selected:s().bool,disabled:s().bool,onSelect:s().func}},97677:(e,t,n)=>{"use strict";n.d(t,{default:()=>u});var r=n(95155),a=n(12115),l=n(14051),s=n.n(l),i=n(31474),o=n(19844),d=n(50611),c=n(47929);function u({text:e,children:t,position:n="top",variant:l="neutral",disabled:s=!1,className:m}){let p=(0,a.useRef)(null),x=(0,a.useRef)(null),f=(0,a.useRef)(null),h=(0,a.useRef)(null),{overlayId:b}=(0,c.uf)("signal-tooltip"),[g,v]=(0,a.useState)(!1),j=(0,o.eJ)(g,s,e),y=(0,d.p)(p,x,j,n);(0,a.useEffect)(()=>()=>{clearTimeout(f.current),clearTimeout(h.current)},[]),(0,a.useEffect)(()=>{!j&&g&&(clearTimeout(f.current),v(!1))},[j,g]),(0,a.useEffect)(()=>j?(0,c.r2)(window,()=>v(!1)):void 0,[j]);let k=(0,a.useCallback)(()=>{(0,o.eJ)(!0,s,e)&&(clearTimeout(h.current),clearTimeout(f.current),f.current=setTimeout(()=>v(!0),150))},[s,e]),N=(0,a.useCallback)(()=>{clearTimeout(f.current),clearTimeout(h.current),h.current=setTimeout(()=>v(!1),100)},[]);if((0,a.useEffect)(()=>{let e=p.current;if(e)return e.addEventListener("mouseenter",k),e.addEventListener("mouseleave",N),e.addEventListener("focusin",k),e.addEventListener("focusout",N),()=>{e.removeEventListener("mouseenter",k),e.removeEventListener("mouseleave",N),e.removeEventListener("focusin",k),e.removeEventListener("focusout",N)}},[k,N]),!(0,a.isValidElement)(t))throw Error("Tooltip: `children` must be a React element");let w="string"==typeof t.type,C=w&&!["button","a","input","select","textarea"].includes(t.type)&&void 0===t.props.tabIndex,E=(0,a.cloneElement)(t,{"aria-describedby":j?b:t.props["aria-describedby"],tabIndex:w&&C?0:t.props.tabIndex});return(0,r.jsxs)("span",{ref:p,className:"inline-flex",children:[E,j?(0,r.jsx)(c.ZL,{children:(0,r.jsx)("div",{ref:x,id:b,role:"tooltip",style:y,className:(0,i.cn)("signal-overlay-tip pointer-events-none fixed z-50 w-max max-w-56 whitespace-normal rounded-lg px-2 py-1 text-[11px] leading-snug",(0,o.lH)(l),m),children:e})}):null]})}u.propTypes={text:s().node,children:s().element.isRequired,position:s().oneOf(["top","bottom","start","end","left","right"]),variant:s().oneOf(Object.keys(o.h1)),disabled:s().bool,className:s().string}},98542:(e,t,n)=>{"use strict";n.d(t,{default:()=>d});var r=n(95155),a=n(14051),l=n.n(a),s=n(12115),i=n(31474);let o={sm:"h-[26px] w-11",md:"h-[26px] w-11",lg:"h-7 w-12"};function d({checked:e=!1,onChange:t,label:n,description:a,disabled:l=!1,size:c="md",className:u,id:m,...p}){let x=(0,s.useId)(),f=m||x,h=`${f}-label`,b=`${f}-description`;if(!o[c])throw Error(`Toggle: unknown size "${c}"`);return(0,r.jsxs)("div",{className:(0,i.cn)("flex items-center gap-3",l&&"opacity-50",u),children:[(0,r.jsx)("button",{...p,id:f,type:"button",role:"switch","aria-checked":e,"aria-labelledby":n?h:p["aria-labelledby"],"aria-describedby":a?b:p["aria-describedby"],"aria-label":n?void 0:p["aria-label"]||p.title,disabled:l,onClick:()=>t?.(!e),className:(0,i.cn)("relative inline-flex shrink-0 rounded-full border border-line transition-colors duration-200","focus-visible:outline-none focus-visible:shadow-focus disabled:cursor-not-allowed","motion-reduce:transition-none",e?"bg-toggle-on":"bg-line",o[c]),children:(0,r.jsx)("span",{"aria-hidden":"true",className:(0,i.cn)("pointer-events-none absolute top-0.5 size-5 rounded-full shadow-sm transition-transform duration-200 motion-reduce:transition-none",e?"bg-toggle-knob-on translate-x-5 rtl:-translate-x-5":"bg-muted translate-x-0.5 rtl:-translate-x-0.5","start-0")})}),(n||a)&&(0,r.jsxs)("div",{className:"flex flex-col",children:[n&&(0,r.jsx)("label",{id:h,htmlFor:f,className:"text-sm font-medium text-text cursor-pointer",children:n}),a&&(0,r.jsx)("span",{id:b,className:"text-xs text-muted",children:a})]})]})}d.propTypes={checked:l().bool,onChange:l().func,label:l().node,description:l().node,disabled:l().bool,size:l().oneOf(Object.keys(o)),className:l().string,id:l().string,title:l().string,"aria-label":l().string}}},e=>{e.O(0,[1610,9671,4685,2903,4321,8441,3794,7358],()=>e(e.s=30225)),_N_E=e.O()}]);
|