9router 0.4.26 → 0.4.28
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/BUILD_ID +1 -1
- package/app/.next/app-path-routes-manifest.json +5 -4
- package/app/.next/build-manifest.json +2 -2
- package/app/.next/required-server-files.json +4 -1
- package/app/.next/routes-manifest.json +6 -0
- package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +4 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/quota/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/skills/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error/page.js +2 -2
- package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error.html +1 -1
- package/app/.next/server/app/_global-error.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/_not-found/page.js +2 -2
- package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_not-found.html +1 -1
- package/app/.next/server/app/_not-found.rsc +4 -4
- package/app/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/api/auth/login/route.js +1 -1
- package/app/.next/server/app/api/auth/login/route.js.nft.json +1 -1
- package/app/.next/server/app/api/auth/logout/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/all-statuses/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/copilot-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/cowork-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/droid-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/hermes-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/opencode-settings/route.js +1 -1
- package/app/.next/server/app/api/cloud/auth/route.js +1 -1
- package/app/.next/server/app/api/cloud/auth/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route.js +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route.js +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route.js +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/[id]/route.js +1 -1
- package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/route.js +1 -1
- package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
- package/app/.next/server/app/api/health/route.js +1 -1
- package/app/.next/server/app/api/init/route.js +1 -1
- package/app/.next/server/app/api/init/route.js.nft.json +1 -1
- package/app/.next/server/app/api/keys/[id]/route.js +1 -1
- package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/keys/route.js +1 -1
- package/app/.next/server/app/api/keys/route.js.nft.json +1 -1
- package/app/.next/server/app/api/locale/route.js +1 -1
- package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
- package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
- package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
- package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
- package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
- package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
- package/app/.next/server/app/api/media-providers/tts/voices/route.js +1 -1
- package/app/.next/server/app/api/models/alias/route.js +1 -1
- package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/availability/route.js +1 -1
- package/app/.next/server/app/api/models/availability/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/custom/route.js +1 -1
- package/app/.next/server/app/api/models/custom/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/disabled/route.js +1 -1
- package/app/.next/server/app/api/models/disabled/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/route.js +1 -1
- package/app/.next/server/app/api/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/test/route.js +1 -1
- package/app/.next/server/app/api/models/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +2 -2
- package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +2 -2
- package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/gitlab/pat/route.js +1 -1
- package/app/.next/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/iflow/cookie/route.js +1 -1
- package/app/.next/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/app/.next/server/app/api/pricing/route.js +1 -1
- package/app/.next/server/app/api/pricing/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-nodes/route.js +1 -1
- package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-nodes/validate/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/test-models/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/client/route.js +1 -1
- package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/kilo/free-models/route.js +1 -1
- package/app/.next/server/app/api/providers/route.js +1 -1
- package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/suggested-models/route.js +1 -1
- package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
- package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/validate/route.js +1 -1
- package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/app/.next/server/app/api/proxy-pools/[id]/route.js +1 -1
- package/app/.next/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/proxy-pools/[id]/test/route.js +1 -1
- package/app/.next/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/proxy-pools/route.js +1 -1
- package/app/.next/server/app/api/proxy-pools/route.js.nft.json +1 -1
- package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
- package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/database/route.js +1 -1
- package/app/.next/server/app/api/settings/database/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/proxy-test/route.js +1 -1
- package/app/.next/server/app/api/settings/require-login/route.js +1 -1
- package/app/.next/server/app/api/settings/require-login/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/route.js +1 -1
- package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/shutdown/route.js +1 -1
- package/app/.next/server/app/api/tags/route.js +1 -1
- package/app/.next/server/app/api/translator/console-logs/route.js +1 -1
- package/app/.next/server/app/api/translator/console-logs/stream/route.js +2 -2
- package/app/.next/server/app/api/translator/load/route.js +1 -1
- package/app/.next/server/app/api/translator/save/route.js +1 -1
- package/app/.next/server/app/api/translator/send/route.js +1 -1
- package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/translate/route.js +1 -1
- package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnel/disable/route.js +1 -1
- package/app/.next/server/app/api/tunnel/disable/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnel/enable/route.js +1 -1
- package/app/.next/server/app/api/tunnel/enable/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnel/status/route.js +1 -1
- package/app/.next/server/app/api/tunnel/status/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnel/tailscale-check/route.js +2 -2
- package/app/.next/server/app/api/tunnel/tailscale-disable/route.js +1 -1
- package/app/.next/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnel/tailscale-enable/route.js +1 -1
- package/app/.next/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnel/tailscale-install/route.js +2 -2
- package/app/.next/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnel/tailscale-login/route.js +2 -2
- package/app/.next/server/app/api/tunnel/tailscale-start-daemon/route.js +2 -2
- package/app/.next/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/chart/route.js +1 -1
- package/app/.next/server/app/api/usage/chart/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/history/route.js +1 -1
- package/app/.next/server/app/api/usage/history/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/providers/route.js +1 -1
- package/app/.next/server/app/api/usage/providers/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/request-details/route.js +1 -1
- package/app/.next/server/app/api/usage/request-details/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/request-logs/route.js +1 -1
- package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/stats/route.js +1 -1
- package/app/.next/server/app/api/usage/stats/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/stream/route.js +2 -2
- package/app/.next/server/app/api/usage/stream/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
- package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
- package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/audio/voices/route.js +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
- package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/images/generations/route.js +2 -2
- package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
- package/app/.next/server/app/api/v1/messages/route.js +1 -1
- package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/models/[kind]/route.js +1 -1
- package/app/.next/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/models/info/route.js +1 -1
- package/app/.next/server/app/api/v1/models/route.js +1 -1
- package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/responses/compact/route.js +1 -1
- package/app/.next/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/responses/route.js +1 -1
- package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/route.js +1 -1
- package/app/.next/server/app/api/v1/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/search/route.js +1 -1
- package/app/.next/server/app/api/v1/search/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/web/fetch/route.js +1 -1
- package/app/.next/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1beta/models/route.js +1 -1
- package/app/.next/server/app/api/version/route.js +1 -1
- package/app/.next/server/app/api/version/shutdown/route.js +1 -0
- package/app/.next/server/app/api/version/shutdown/route.js.nft.json +1 -0
- package/app/.next/server/app/api/version/shutdown/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/version/update/route.js +1 -1
- package/app/.next/server/app/callback/page.js +2 -2
- package/app/.next/server/app/callback/page.js.nft.json +1 -1
- package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/callback.html +1 -1
- package/app/.next/server/app/callback.rsc +4 -4
- package/app/.next/server/app/callback.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/basic-chat.html +1 -1
- package/app/.next/server/app/dashboard/basic-chat.rsc +6 -6
- package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
- package/app/.next/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/cli-tools.html +1 -1
- package/app/.next/server/app/dashboard/cli-tools.rsc +6 -6
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
- package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/combos.html +1 -1
- package/app/.next/server/app/dashboard/combos.rsc +6 -6
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
- package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/endpoint.html +1 -1
- package/app/.next/server/app/dashboard/endpoint.rsc +6 -6
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
- package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/media-providers/web.html +1 -1
- package/app/.next/server/app/dashboard/media-providers/web.rsc +6 -6
- package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
- package/app/.next/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/mitm.html +1 -1
- package/app/.next/server/app/dashboard/mitm.rsc +6 -6
- package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
- package/app/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/profile.html +1 -1
- package/app/.next/server/app/dashboard/profile.rsc +6 -6
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
- package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers/new.html +1 -1
- package/app/.next/server/app/dashboard/providers/new.rsc +6 -6
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
- package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers.html +1 -1
- package/app/.next/server/app/dashboard/providers.rsc +6 -6
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
- package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/proxy-pools.html +1 -1
- package/app/.next/server/app/dashboard/proxy-pools.rsc +6 -6
- package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
- package/app/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/quota.html +2 -2
- package/app/.next/server/app/dashboard/quota.rsc +7 -7
- package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
- package/app/.next/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings/pricing/page.js +2 -2
- package/app/.next/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
- package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.rsc +4 -4
- package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/skills.html +1 -1
- package/app/.next/server/app/dashboard/skills.rsc +6 -6
- package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/skills.segments/_full.segment.rsc +6 -6
- package/app/.next/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/skills.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/translator.html +1 -1
- package/app/.next/server/app/dashboard/translator.rsc +6 -6
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
- package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/usage.html +1 -1
- package/app/.next/server/app/dashboard/usage.rsc +6 -6
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
- package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard.html +1 -1
- package/app/.next/server/app/dashboard.rsc +6 -6
- package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard.segments/_full.segment.rsc +6 -6
- package/app/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/favicon.ico/route.js +1 -1
- package/app/.next/server/app/index.html +1 -1
- package/app/.next/server/app/index.rsc +4 -4
- package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/landing/page.js +2 -2
- package/app/.next/server/app/landing/page.js.nft.json +1 -1
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/landing.html +1 -1
- package/app/.next/server/app/landing.rsc +5 -5
- package/app/.next/server/app/landing.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/landing.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
- package/app/.next/server/app/login/page.js +2 -2
- package/app/.next/server/app/login/page.js.nft.json +1 -1
- package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login.html +1 -1
- package/app/.next/server/app/login.rsc +5 -5
- package/app/.next/server/app/login.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/login.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/app/.next/server/app/manifest.webmanifest/route.js +2 -2
- package/app/.next/server/app/page.js +2 -2
- package/app/.next/server/app/page.js.nft.json +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app-paths-manifest.json +5 -4
- package/app/.next/server/chunks/1444.js +9 -0
- package/app/.next/server/chunks/1574.js +2 -2
- package/app/.next/server/chunks/2049.js +1 -1
- package/app/.next/server/chunks/3774.js +3 -3
- package/app/.next/server/chunks/450.js +1 -1
- package/app/.next/server/chunks/4892.js +2 -2
- package/app/.next/server/chunks/499.js +9 -0
- package/app/.next/server/chunks/6263.js +1 -1
- package/app/.next/server/chunks/6283.js +1 -1
- package/app/.next/server/chunks/6502.js +2 -2
- package/app/.next/server/chunks/6890.js +1 -1
- package/app/.next/server/chunks/7061.js +2 -2
- package/app/.next/server/chunks/7292.js +9 -0
- package/app/.next/server/chunks/7810.js +1 -1
- package/app/.next/server/chunks/8035.js +1 -1
- package/app/.next/server/chunks/8367.js +2 -2
- package/app/.next/server/chunks/8495.js +9 -0
- package/app/.next/server/middleware-build-manifest.js +1 -1
- package/app/.next/server/middleware.js +3 -3
- package/app/.next/server/pages/404.html +1 -1
- package/app/.next/server/pages/500.html +1 -1
- package/app/.next/static/chunks/{1939-5f1c000b260c0698.js → 1939-d9b80a9e484ae21d.js} +1 -1
- package/app/.next/static/chunks/{4156-773921135dfe2c75.js → 4156-3a7b60c65001de9a.js} +3 -3
- package/app/.next/static/chunks/505-34993b83fbc3f56a.js +1 -0
- package/app/.next/static/chunks/8035-b43a2fdebf8069b1.js +3 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/{page-7890b74e481f9d92.js → page-29ce6662637d64e4.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-597b5dde6cf827f1.js +3 -0
- package/app/.next/static/chunks/app/_global-error/page-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/auth/login/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/auth/logout/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/auth/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/credentials/update/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/model/resolve/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/models/alias/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/combos/[id]/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/combos/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/health/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/init/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/keys/[id]/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/keys/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/locale/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/models/alias/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/models/availability/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/models/custom/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/models/disabled/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/models/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/models/test/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/import/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/import/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/pricing/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/validate/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/models/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/test/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/providers/client/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/providers/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/providers/suggested-models/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/providers/test-batch/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/providers/validate/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/proxy-pools/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/settings/database/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/settings/proxy-test/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/settings/require-login/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/settings/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/shutdown/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/tags/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/translator/console-logs/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/translator/load/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/translator/save/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/translator/send/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/translator/translate/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/disable/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/enable/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/status/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-login/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/usage/[connectionId]/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/usage/chart/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/usage/history/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/usage/providers/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/usage/request-details/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/usage/request-logs/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/usage/stats/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/usage/stream/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/v1/api/chat/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/speech/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/voices/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/v1/chat/completions/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/v1/embeddings/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/v1/images/generations/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/[kind]/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/info/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/v1/responses/compact/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/v1/responses/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/v1/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/v1/search/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/v1/web/fetch/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/version/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/version/shutdown/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/api/version/update/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/landing/{page-34e119eac6b7e1a4.js → page-0084367666bd9046.js} +1 -1
- package/app/.next/static/chunks/app/manifest.webmanifest/route-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/app/page-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-5ea305bd1a1dc348.js +1 -0
- package/app/.next/static/css/8c050f20c62e3425.css +1 -0
- package/app/.next/static/zRbzYKfSwZoKLIJvdVXO-/_buildManifest.js +1 -0
- package/app/node_modules/sql.js/dist/sql-wasm.js +185 -0
- package/app/node_modules/sql.js/package.json +58 -0
- package/app/package.json +2 -2
- package/app/server.js +1 -1
- package/app/src/lib/db/adapters/bunSqliteAdapter.js +63 -0
- package/app/src/lib/db/adapters/nodeSqliteAdapter.js +84 -0
- package/app/src/lib/db/adapters/sqljsAdapter.js +4 -3
- package/app/src/lib/updater/updater.js +25 -0
- package/app/src/mitm/server.js +1 -1
- package/cli.js +15 -13
- package/hooks/sqliteRuntime.js +14 -27
- package/package.json +1 -1
- package/app/.next/static/chunks/505-47d92a147b3d6af5.js +0 -1
- package/app/.next/static/chunks/8035-c87b74c7e1a7cf78.js +0 -3
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-b150970e241c5c7b.js +0 -1
- package/app/.next/static/chunks/app/_global-error/page-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/auth/login/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/auth/logout/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/auth/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/credentials/update/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/model/resolve/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/models/alias/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/combos/[id]/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/combos/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/health/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/init/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/keys/[id]/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/keys/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/locale/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/models/alias/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/models/availability/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/models/custom/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/models/disabled/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/models/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/models/test/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/cursor/import/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/import/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/pricing/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/validate/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/models/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/test/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/providers/client/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/providers/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/providers/suggested-models/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/providers/test-batch/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/providers/validate/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/proxy-pools/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/settings/database/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/settings/proxy-test/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/settings/require-login/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/settings/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/shutdown/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/tags/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/translator/console-logs/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/translator/load/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/translator/save/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/translator/send/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/translator/translate/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/disable/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/enable/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/status/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-login/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/usage/[connectionId]/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/usage/chart/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/usage/history/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/usage/providers/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/usage/request-details/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/usage/request-logs/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/usage/stats/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/usage/stream/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/v1/api/chat/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/v1/audio/speech/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/v1/audio/voices/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/v1/chat/completions/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/v1/embeddings/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/v1/images/generations/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/v1/messages/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/v1/models/[kind]/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/v1/models/info/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/v1/models/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/v1/responses/compact/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/v1/responses/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/v1/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/v1/search/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/v1/web/fetch/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/v1beta/models/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/version/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/api/version/update/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/manifest.webmanifest/route-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/app/page-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-20fa0affdf8859be.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-20fa0affdf8859be.js +0 -1
- package/app/.next/static/css/5d8cd780e73c8876.css +0 -1
- package/app/.next/static/gkZl0mznmfSjxMQgK_CRr/_buildManifest.js +0 -1
- /package/app/.next/static/{gkZl0mznmfSjxMQgK_CRr → zRbzYKfSwZoKLIJvdVXO-}/_ssgManifest.js +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
exports.id=4892,exports.ids=[4892],exports.modules={20819:(a,b,c)=>{"use strict";c.d(b,{Xx:()=>j,exportSettings:()=>k,getSettings:()=>i});var d=c(90602),e=c(25456);let f={cloudEnabled:!1,tunnelEnabled:!1,tunnelUrl:"",tunnelProvider:"cloudflare",tailscaleEnabled:!1,tailscaleUrl:"",stickyRoundRobinLimit:3,providerStrategies:{},comboStrategy:"fallback",comboStickyRoundRobinLimit:1,comboStrategies:{},requireLogin:!0,tunnelDashboardAccess:!0,enableObservability:!0,observabilityMaxRecords:1e3,observabilityBatchSize:20,observabilityFlushIntervalMs:5e3,observabilityMaxJsonSize:5,outboundProxyEnabled:!1,outboundProxyUrl:"",outboundNoProxy:"",mitmRouterBaseUrl:"http://
|
|
1
|
+
exports.id=4892,exports.ids=[4892],exports.modules={20819:(a,b,c)=>{"use strict";c.d(b,{Xx:()=>j,exportSettings:()=>k,getSettings:()=>i});var d=c(90602),e=c(25456);let f={cloudEnabled:!1,tunnelEnabled:!1,tunnelUrl:"",tunnelProvider:"cloudflare",tailscaleEnabled:!1,tailscaleUrl:"",stickyRoundRobinLimit:3,providerStrategies:{},comboStrategy:"fallback",comboStickyRoundRobinLimit:1,comboStrategies:{},requireLogin:!0,tunnelDashboardAccess:!0,enableObservability:!0,observabilityMaxRecords:1e3,observabilityBatchSize:20,observabilityFlushIntervalMs:5e3,observabilityMaxJsonSize:5,outboundProxyEnabled:!1,outboundProxyUrl:"",outboundNoProxy:"",mitmRouterBaseUrl:"http://localhost:20128",dnsToolEnabled:{},rtkEnabled:!0,cavemanEnabled:!1,cavemanLevel:"full"};async function g(){let a=(await (0,d.c)()).get("SELECT data FROM settings WHERE id = 1");return a?(0,e.q)(a.data,{}):{}}function h(a){let b={...f,...a||{}};for(let[a,c]of Object.entries(f))void 0===b[a]&&("outboundProxyEnabled"===a&&"string"==typeof b.outboundProxyUrl&&b.outboundProxyUrl.trim()?b[a]=!0:b[a]=c);return b}async function i(){return h(await g())}async function j(a){let b,c=await (0,d.c)();return c.transaction(()=>{let d=c.get("SELECT data FROM settings WHERE id = 1");b={...d?(0,e.q)(d.data,{}):{},...a},c.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,e.s)(b)])}),h(b)}async function k(){return await g()}},24429:()=>{},25456:(a,b,c)=>{"use strict";function d(a,b=null){if(null==a)return b;if("string"!=typeof a)return a;try{return JSON.parse(a)}catch{return b}}function e(a){return JSON.stringify(a??null)}c.d(b,{q:()=>d,s:()=>e})},42928:(a,b,c)=>{"use strict";c.r(b),c.d(b,{createApiKey:()=>i,deleteApiKey:()=>k,getApiKeyById:()=>h,getApiKeys:()=>g,updateApiKey:()=>j,validateApiKey:()=>l});var d=c(37873),e=c(90602);function f(a){return a?{id:a.id,key:a.key,name:a.name,machineId:a.machineId,isActive:1===a.isActive||!0===a.isActive,createdAt:a.createdAt}:null}async function g(){return(await (0,e.c)()).all("SELECT * FROM apiKeys ORDER BY createdAt ASC").map(f)}async function h(a){return f((await (0,e.c)()).get("SELECT * FROM apiKeys WHERE id = ?",[a]))}async function i(a,b){if(!b)throw Error("machineId is required");let f=await (0,e.c)(),{generateApiKeyWithMachine:g}=await c.e(64).then(c.bind(c,50064)),h=g(b),i={id:(0,d.A)(),name:a,key:h.key,machineId:b,isActive:!0,createdAt:new Date().toISOString()};return f.run("INSERT INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)",[i.id,i.key,i.name,i.machineId,1,i.createdAt]),i}async function j(a,b){let c=await (0,e.c)(),d=null;return c.transaction(()=>{let e=c.get("SELECT * FROM apiKeys WHERE id = ?",[a]);if(!e)return;let g={...f(e),...b};c.run("UPDATE apiKeys SET key = ?, name = ?, machineId = ?, isActive = ? WHERE id = ?",[g.key,g.name,g.machineId,+!!g.isActive,a]),d=g}),d}async function k(a){let b=(await (0,e.c)()).run("DELETE FROM apiKeys WHERE id = ?",[a]);return(b?.changes??0)>0}async function l(a){let b=(await (0,e.c)()).get("SELECT isActive FROM apiKeys WHERE key = ?",[a]);return!!b&&(1===b.isActive||!0===b.isActive)}},51412:(a,b,c)=>{"use strict";c.d(b,{S8:()=>H,E5:()=>af,bI:()=>g.cleanupProviderConnections,Iq:()=>q.createApiKey,jd:()=>v,iE:()=>g.createProviderConnection,i0:()=>h.createProviderNode,ZO:()=>n,Lh:()=>q.deleteApiKey,CG:()=>x,uL:()=>I,fv:()=>E,fK:()=>g.deleteProviderConnection,op:()=>g.deleteProviderConnectionsByProvider,Pc:()=>h.deleteProviderNode,Yd:()=>p,tm:()=>O,oF:()=>P,zP:()=>as,rg:()=>aa,yg:()=>q.getApiKeyById,PX:()=>q.getApiKeys,j$:()=>ae,L:()=>t,Dj:()=>u,Uv:()=>s,uv:()=>G,vF:()=>N,c:()=>J,OM:()=>C,r4:()=>L.r4,Mc:()=>g.getProviderConnectionById,P:()=>g.getProviderConnections,Qu:()=>h.getProviderNodeById,Fh:()=>h.getProviderNodes,hr:()=>m,ui:()=>l,Zx:()=>ag,SL:()=>aq,mt:()=>f.getSettings,BY:()=>ad,K1:()=>at,VT:()=>L.VT,yF:()=>L.yF,ox:()=>ap,sZ:()=>ab,L9:()=>K,o5:()=>D,_V:()=>W,uw:()=>_,XW:()=>q.updateApiKey,oG:()=>w,KJ:()=>L.KJ,rj:()=>g.updateProviderConnection,ho:()=>h.updateProviderNode,Q_:()=>o,Xx:()=>f.Xx,ek:()=>q.validateApiKey});var d=c(90602),e=c(25456),f=c(20819),g=c(98673),h=c(85885),i=c(37873);function j(a){return a?{...(0,e.q)(a.data,{}),id:a.id,isActive:1===a.isActive||!0===a.isActive,testStatus:a.testStatus,createdAt:a.createdAt,updatedAt:a.updatedAt}:null}function k(a,b){let c=function(a){let{id:b,isActive:c,testStatus:d,createdAt:f,updatedAt:g,...h}=a;return{id:b,isActive:+(!1!==c),testStatus:d??null,data:(0,e.s)(h),createdAt:f,updatedAt:g}}(b);a.run(`INSERT INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt)
|
|
2
2
|
VALUES(?, ?, ?, ?, ?, ?)
|
|
3
3
|
ON CONFLICT(id) DO UPDATE SET
|
|
4
4
|
isActive=excluded.isActive, testStatus=excluded.testStatus,
|
|
5
5
|
data=excluded.data, updatedAt=excluded.updatedAt`,[c.id,c.isActive,c.testStatus,c.data,c.createdAt,c.updatedAt])}async function l(a={}){let b=await (0,d.c)(),c=[],e=[];void 0!==a.isActive&&(c.push("isActive = ?"),e.push(+!!a.isActive)),a.testStatus&&(c.push("testStatus = ?"),e.push(a.testStatus));let f=`SELECT * FROM proxyPools${c.length?` WHERE ${c.join(" AND ")}`:""}`,g=b.all(f,e).map(j);return g.sort((a,b)=>new Date(b.updatedAt||0)-new Date(a.updatedAt||0)),g}async function m(a){return j((await (0,d.c)()).get("SELECT * FROM proxyPools WHERE id = ?",[a]))}async function n(a){let b=await (0,d.c)(),c=new Date().toISOString(),e={id:a.id||(0,i.A)(),name:a.name,proxyUrl:a.proxyUrl,noProxy:a.noProxy||"",type:a.type||"http",isActive:void 0===a.isActive||a.isActive,strictProxy:!0===a.strictProxy,testStatus:a.testStatus||"unknown",lastTestedAt:a.lastTestedAt||null,lastError:a.lastError||null,createdAt:c,updatedAt:c};return k(b,e),e}async function o(a,b){let c=await (0,d.c)(),e=null;return c.transaction(()=>{let d=c.get("SELECT * FROM proxyPools WHERE id = ?",[a]);if(!d)return;let f={...j(d),...b,updatedAt:new Date().toISOString()};k(c,f),e=f}),e}async function p(a){let b=await (0,d.c)(),c=null;return b.transaction(()=>{let d=b.get("SELECT * FROM proxyPools WHERE id = ?",[a]);d&&(c=j(d),b.run("DELETE FROM proxyPools WHERE id = ?",[a]))}),c}var q=c(42928);function r(a){return a?{id:a.id,name:a.name,kind:a.kind,models:(0,e.q)(a.models,[]),createdAt:a.createdAt,updatedAt:a.updatedAt}:null}async function s(){return(await (0,d.c)()).all("SELECT * FROM combos ORDER BY createdAt ASC").map(r)}async function t(a){return r((await (0,d.c)()).get("SELECT * FROM combos WHERE id = ?",[a]))}async function u(a){return r((await (0,d.c)()).get("SELECT * FROM combos WHERE name = ?",[a]))}async function v(a){let b=await (0,d.c)(),c=new Date().toISOString(),f={id:(0,i.A)(),name:a.name,kind:a.kind||null,models:a.models||[],createdAt:c,updatedAt:c};return b.run("INSERT INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[f.id,f.name,f.kind,(0,e.s)(f.models),f.createdAt,f.updatedAt]),f}async function w(a,b){let c=await (0,d.c)(),f=null;return c.transaction(()=>{let d=c.get("SELECT * FROM combos WHERE id = ?",[a]);if(!d)return;let g={...r(d),...b,updatedAt:new Date().toISOString()};c.run("UPDATE combos SET name = ?, kind = ?, models = ?, updatedAt = ? WHERE id = ?",[g.name,g.kind,(0,e.s)(g.models||[]),g.updatedAt,a]),f=g}),f}async function x(a){let b=(await (0,d.c)()).run("DELETE FROM combos WHERE id = ?",[a]);return(b?.changes??0)>0}var y=c(61034);let z=(0,y.U)("modelAliases"),A=(0,y.U)("customModels"),B=(0,y.U)("mitmAlias");async function C(){return await z.getAll()}async function D(a,b){await z.set(a,b)}async function E(a){await z.remove(a)}function F(a,b,c){return`${a}|${b}|${c}`}async function G(){return Object.values(await A.getAll())}async function H({providerAlias:a,id:b,type:c="llm",name:f}){let g=F(a,b,c),h=await (0,d.c)(),i=!1;return h.transaction(()=>{if(h.get("SELECT 1 FROM kv WHERE scope = 'customModels' AND key = ?",[g]))return;let d=(0,e.s)({providerAlias:a,id:b,type:c,name:f||b});h.run("INSERT INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[g,d]),i=!0}),i}async function I({providerAlias:a,id:b,type:c="llm"}){await A.remove(F(a,b,c))}async function J(a){return a?await B.get(a)||{}:await B.getAll()}async function K(a,b){await B.set(a,b||{})}var L=c(98366);let M="disabledModels";async function N(){let a=(await (0,d.c)()).all("SELECT key, value FROM kv WHERE scope = ?",[M]),b={};for(let c of a)b[c.key]=(0,e.q)(c.value,[]);return b}async function O(a,b){if(!a||!Array.isArray(b))return;let c=await (0,d.c)();c.transaction(()=>{let d=c.get("SELECT value FROM kv WHERE scope = ? AND key = ?",[M,a]),f=[...new Set([...d&&(0,e.q)(d.value,[])||[],...b])];c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[M,a,(0,e.s)(f)])})}async function P(a,b){if(!a)return;let c=await (0,d.c)();c.transaction(()=>{if(!Array.isArray(b)||0===b.length)return void c.run("DELETE FROM kv WHERE scope = ? AND key = ?",[M,a]);let d=c.get("SELECT value FROM kv WHERE scope = ? AND key = ?",[M,a]),f=d&&(0,e.q)(d.value,[])||[],g=new Set(b),h=f.filter(a=>!g.has(a));0===h.length?c.run("DELETE FROM kv WHERE scope = ? AND key = ?",[M,a]):c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[M,a,(0,e.s)(h)])})}var Q=c(94735);c(75582);global._pendingRequests||(global._pendingRequests={byModel:{},byAccount:{}}),global._lastErrorProvider||(global._lastErrorProvider={provider:"",ts:0}),global._statsEmitter||(global._statsEmitter=new Q.EventEmitter,global._statsEmitter.setMaxListeners(50)),global._pendingTimers||(global._pendingTimers={}),global._recentRing||(global._recentRing={items:[],initialized:!1}),global._connectionMapCache||(global._connectionMapCache={map:{},ts:0});let R=global._pendingRequests,S=global._lastErrorProvider,T=global._pendingTimers,U=global._recentRing,V=global._connectionMapCache,W=global._statsEmitter;function X(a,b,c){a[b]||(a[b]={requests:0,promptTokens:0,completionTokens:0,cost:0}),a[b].requests+=c.requests||1,a[b].promptTokens+=c.promptTokens||0,a[b].completionTokens+=c.completionTokens||0,a[b].cost+=c.cost||0,c.meta&&Object.assign(a[b],c.meta)}async function Y(){if(Date.now()-V.ts<3e4)return V.map;try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,98673)),b=await a(),d={};for(let a of b)d[a.id]=a.name||a.email||a.id;V.map=d,V.ts=Date.now()}catch{}return V.map}async function Z(){if(!U.initialized){U.initialized=!0;try{U.items=(await (0,d.c)()).all("SELECT timestamp, provider, model, connectionId, apiKey, endpoint, cost, status, tokens FROM usageHistory ORDER BY id DESC LIMIT ?",[50]).reverse().map(a=>({timestamp:a.timestamp,provider:a.provider,model:a.model,connectionId:a.connectionId,apiKey:a.apiKey,endpoint:a.endpoint,cost:a.cost,status:a.status,tokens:(0,e.q)(a.tokens,{})}))}catch{}}}async function $(a,b,d){if(!d||!a||!b)return 0;try{let{getPricingForModel:e}=await Promise.resolve().then(c.bind(c,98366)),f=await e(a,b);if(!f)return 0;let g=0,h=d.prompt_tokens||d.input_tokens||0,i=d.cached_tokens||d.cache_read_input_tokens||0,j=Math.max(0,h-i);if(g+=j*(f.input/1e6),i>0){let a=f.cached||f.input;g+=a/1e6*i}let k=d.completion_tokens||d.output_tokens||0;g+=k*(f.output/1e6);let l=d.reasoning_tokens||0;if(l>0){let a=f.reasoning||f.output;g+=a/1e6*l}let m=d.cache_creation_input_tokens||0;if(m>0){let a=f.cache_creation||f.input;g+=a/1e6*m}return g}catch(a){return console.error("Error calculating cost:",a),0}}function _(a,b,c,d,e=!1){let f=b?`${a} (${b})`:a,g=`${c}|${f}`;R.byModel[f]||(R.byModel[f]=0),R.byModel[f]=Math.max(0,R.byModel[f]+(d?1:-1)),0===R.byModel[f]&&delete R.byModel[f],c&&(R.byAccount[c]||(R.byAccount[c]={}),R.byAccount[c][f]||(R.byAccount[c][f]=0),R.byAccount[c][f]=Math.max(0,R.byAccount[c][f]+(d?1:-1)),0===R.byAccount[c][f]&&(delete R.byAccount[c][f],0===Object.keys(R.byAccount[c]).length&&delete R.byAccount[c])),d?(clearTimeout(T[g]),T[g]=setTimeout(()=>{delete T[g],R.byModel[f]>0&&(R.byModel[f]=0),c&&R.byAccount[c]?.[f]>0&&(R.byAccount[c][f]=0),W.emit("pending")},6e4)):(clearTimeout(T[g]),delete T[g]),!d&&e&&b&&(S.provider=b.toLowerCase(),S.ts=Date.now());let h=new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"});console.log(`[${h}] [PENDING] ${d?"START":"END"}${e?" (ERROR)":""} | provider=${b} | model=${a}`),W.emit("pending")}async function aa(){let a=[],b=await Y();for(let[c,d]of Object.entries(R.byAccount))for(let[e,f]of Object.entries(d))if(f>0){let d=b[c]||`Account ${c.slice(0,8)}...`,g=e.match(/^(.*) \((.*)\)$/);a.push({model:g?g[1]:e,provider:g?g[2]:"unknown",account:d,count:f})}await Z();let c=new Set;return{activeRequests:a,recentRequests:[...U.items].sort((a,b)=>new Date(b.timestamp)-new Date(a.timestamp)).map(a=>{let b=a.tokens||{};return{timestamp:a.timestamp,model:a.model,provider:a.provider||"",promptTokens:b.prompt_tokens||b.input_tokens||0,completionTokens:b.completion_tokens||b.output_tokens||0,status:a.status||"ok"}}).filter(a=>{if(0===a.promptTokens&&0===a.completionTokens)return!1;let b=a.timestamp?a.timestamp.slice(0,16):"",d=`${a.model}|${a.provider}|${a.promptTokens}|${a.completionTokens}|${b}`;return!c.has(d)&&(c.add(d),!0)}).slice(0,20),errorProvider:Date.now()-S.ts<1e4?S.provider:""}}async function ab(a){try{let b=await (0,d.c)();a.timestamp||(a.timestamp=new Date().toISOString()),a.cost=await $(a.provider,a.model,a.tokens);let c=a.tokens||{},f=c.prompt_tokens||c.input_tokens||0,g=c.completion_tokens||c.output_tokens||0;b.transaction(()=>{var d;let h,i,j,k,l,m,n,o,p,q;b.run("INSERT INTO usageHistory(timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, status, tokens, meta) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[a.timestamp,a.provider||null,a.model||null,a.connectionId||null,a.apiKey||null,a.endpoint||null,f,g,a.cost||0,a.status||"ok",(0,e.s)(c),(0,e.s)({})]);let r=(h=(d=a.timestamp)?new Date(d):new Date,`${h.getFullYear()}-${String(h.getMonth()+1).padStart(2,"0")}-${String(h.getDate()).padStart(2,"0")}`),s=b.get("SELECT data FROM usageDaily WHERE dateKey = ?",[r]),t=s?(0,e.q)(s.data,{}):{requests:0,promptTokens:0,completionTokens:0,cost:0,byProvider:{},byModel:{},byAccount:{},byApiKey:{},byEndpoint:{}};i=a.tokens?.prompt_tokens||a.tokens?.input_tokens||0,j=a.tokens?.completion_tokens||a.tokens?.output_tokens||0,k=a.cost||0,l={promptTokens:i,completionTokens:j,cost:k},t.requests=(t.requests||0)+1,t.promptTokens=(t.promptTokens||0)+i,t.completionTokens=(t.completionTokens||0)+j,t.cost=(t.cost||0)+k,t.byProvider||={},t.byModel||={},t.byAccount||={},t.byApiKey||={},t.byEndpoint||={},a.provider&&X(t.byProvider,a.provider,l),m=a.provider?`${a.model}|${a.provider}`:a.model,X(t.byModel,m,{...l,meta:{rawModel:a.model,provider:a.provider}}),a.connectionId&&X(t.byAccount,a.connectionId,{...l,meta:{rawModel:a.model,provider:a.provider}}),n=a.apiKey&&"string"==typeof a.apiKey?a.apiKey:"local-no-key",o=`${n}|${a.model}|${a.provider||"unknown"}`,X(t.byApiKey,o,{...l,meta:{rawModel:a.model,provider:a.provider,apiKey:a.apiKey||null}}),p=a.endpoint||"Unknown",q=`${p}|${a.model}|${a.provider||"unknown"}`,X(t.byEndpoint,q,{...l,meta:{endpoint:p,rawModel:a.model,provider:a.provider}}),b.run("INSERT INTO usageDaily(dateKey, data) VALUES(?, ?) ON CONFLICT(dateKey) DO UPDATE SET data = excluded.data",[r,(0,e.s)(t)]);let u=b.get("SELECT value FROM _meta WHERE key = 'totalRequestsLifetime'"),v=(u?parseInt(u.value,10):0)+1;b.run("INSERT INTO _meta(key, value) VALUES('totalRequestsLifetime', ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",[String(v)])}),U.items.push(a),U.items.length>50&&(U.items=U.items.slice(-50)),W.emit("update")}catch(a){console.error("Failed to save usage stats:",a)}}function ac(a,b){if(null==b)return a.all("SELECT dateKey, data FROM usageDaily");let c=new Date,d=new Date(c.getFullYear(),c.getMonth(),c.getDate()-b+1),e=`${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,"0")}-${String(d.getDate()).padStart(2,"0")}`;return a.all("SELECT dateKey, data FROM usageDaily WHERE dateKey >= ?",[e])}async function ad(a="all"){let b=await (0,d.c)(),[{getProviderConnections:f},{getApiKeys:g},{getProviderNodes:h}]=await Promise.all([Promise.resolve().then(c.bind(c,98673)),Promise.resolve().then(c.bind(c,42928)),Promise.resolve().then(c.bind(c,85885))]),i=[];try{i=await f()}catch{}let j={};for(let a of i)j[a.id]=a.name||a.email||a.id;let k={};try{for(let a of(await h()))a.id&&a.name&&(k[a.id]=a.name)}catch{}let l=[];try{l=await g()}catch{}let m={};for(let a of l)m[a.key]={name:a.name,id:a.id,createdAt:a.createdAt};let n=b.all("SELECT timestamp, provider, model, tokens, status FROM usageHistory ORDER BY id DESC LIMIT 100"),o=new Set,p={totalRequests:0,totalPromptTokens:0,totalCompletionTokens:0,totalCost:0,byProvider:{},byModel:{},byAccount:{},byApiKey:{},byEndpoint:{},last10Minutes:[],pending:R,activeRequests:[],recentRequests:n.map(a=>{let b=(0,e.q)(a.tokens,{})||{};return{timestamp:a.timestamp,model:a.model,provider:a.provider||"",promptTokens:b.prompt_tokens||b.input_tokens||0,completionTokens:b.completion_tokens||b.output_tokens||0,status:a.status||"ok"}}).filter(a=>{if(0===a.promptTokens&&0===a.completionTokens)return!1;let b=a.timestamp?a.timestamp.slice(0,16):"",c=`${a.model}|${a.provider}|${a.promptTokens}|${a.completionTokens}|${b}`;return!o.has(c)&&(o.add(c),!0)}).slice(0,20),errorProvider:Date.now()-S.ts<1e4?S.provider:""};for(let[a,b]of Object.entries(R.byAccount))for(let[c,d]of Object.entries(b))if(d>0){let b=j[a]||`Account ${a.slice(0,8)}...`,e=c.match(/^(.*) \((.*)\)$/);p.activeRequests.push({model:e?e[1]:c,provider:e?e[2]:"unknown",account:b,count:d})}let q=new Date,r=new Date(6e4*Math.floor(q.getTime()/6e4)),s=new Date(r.getTime()-54e4),t={};for(let a=0;a<10;a++){let b=r.getTime()-(9-a)*6e4;t[b]={requests:0,promptTokens:0,completionTokens:0,cost:0},p.last10Minutes.push(t[b])}for(let a of b.all("SELECT timestamp, promptTokens, completionTokens, cost FROM usageHistory WHERE timestamp >= ? AND timestamp <= ?",[s.toISOString(),q.toISOString()])){let b=6e4*Math.floor(new Date(a.timestamp).getTime()/6e4);t[b]&&(t[b].requests++,t[b].promptTokens+=a.promptTokens||0,t[b].completionTokens+=a.completionTokens||0,t[b].cost+=a.cost||0)}if("24h"!==a){let c={"7d":7,"30d":30,"60d":60}[a]||null;for(let a of ac(b,c)){let b=a.dateKey,c=(0,e.q)(a.data,{});for(let[a,b]of(p.totalPromptTokens+=c.promptTokens||0,p.totalCompletionTokens+=c.completionTokens||0,p.totalCost+=c.cost||0,Object.entries(c.byProvider||{})))p.byProvider[a]||(p.byProvider[a]={requests:0,promptTokens:0,completionTokens:0,cost:0}),p.byProvider[a].requests+=b.requests||0,p.byProvider[a].promptTokens+=b.promptTokens||0,p.byProvider[a].completionTokens+=b.completionTokens||0,p.byProvider[a].cost+=b.cost||0;for(let[a,d]of Object.entries(c.byModel||{})){let c=d.rawModel||a.split("|")[0],e=d.provider||a.split("|")[1]||"",f=e?`${c} (${e})`:c,g=k[e]||e;p.byModel[f]||(p.byModel[f]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:c,provider:g,lastUsed:b}),p.byModel[f].requests+=d.requests||0,p.byModel[f].promptTokens+=d.promptTokens||0,p.byModel[f].completionTokens+=d.completionTokens||0,p.byModel[f].cost+=d.cost||0,b>(p.byModel[f].lastUsed||"")&&(p.byModel[f].lastUsed=b)}for(let[a,d]of Object.entries(c.byAccount||{})){let c=j[a]||`Account ${a.slice(0,8)}...`,e=d.rawModel||"",f=d.provider||"",g=k[f]||f,h=`${e} (${f} - ${c})`;p.byAccount[h]||(p.byAccount[h]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:e,provider:g,connectionId:a,accountName:c,lastUsed:b}),p.byAccount[h].requests+=d.requests||0,p.byAccount[h].promptTokens+=d.promptTokens||0,p.byAccount[h].completionTokens+=d.completionTokens||0,p.byAccount[h].cost+=d.cost||0,b>(p.byAccount[h].lastUsed||"")&&(p.byAccount[h].lastUsed=b)}for(let[a,d]of Object.entries(c.byApiKey||{})){let c=d.rawModel||"",e=d.provider||"",f=k[e]||e,g=d.apiKey,h=g?m[g]:null,i=h?.name||(g?g.slice(0,8)+"...":"Local (No API Key)"),j=g||"local-no-key";p.byApiKey[a]||(p.byApiKey[a]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:c,provider:f,apiKey:g,keyName:i,apiKeyKey:j,lastUsed:b}),p.byApiKey[a].requests+=d.requests||0,p.byApiKey[a].promptTokens+=d.promptTokens||0,p.byApiKey[a].completionTokens+=d.completionTokens||0,p.byApiKey[a].cost+=d.cost||0,b>(p.byApiKey[a].lastUsed||"")&&(p.byApiKey[a].lastUsed=b)}for(let[a,d]of Object.entries(c.byEndpoint||{})){let c=d.endpoint||a.split("|")[0]||"Unknown",e=d.rawModel||"",f=d.provider||"",g=k[f]||f;p.byEndpoint[a]||(p.byEndpoint[a]={requests:0,promptTokens:0,completionTokens:0,cost:0,endpoint:c,rawModel:e,provider:g,lastUsed:b}),p.byEndpoint[a].requests+=d.requests||0,p.byEndpoint[a].promptTokens+=d.promptTokens||0,p.byEndpoint[a].completionTokens+=d.completionTokens||0,p.byEndpoint[a].cost+=d.cost||0,b>(p.byEndpoint[a].lastUsed||"")&&(p.byEndpoint[a].lastUsed=b)}}let d=c?Date.now()-864e5*c:0;for(let a of b.all("SELECT timestamp, provider, model, connectionId, apiKey, endpoint FROM usageHistory WHERE timestamp >= ?",[new Date(d).toISOString()])){let b=a.timestamp,c=a.provider?`${a.model} (${a.provider})`:a.model;if(p.byModel[c]&&new Date(b)>new Date(p.byModel[c].lastUsed)&&(p.byModel[c].lastUsed=b),a.connectionId){let c=j[a.connectionId]||`Account ${a.connectionId.slice(0,8)}...`,d=`${a.model} (${a.provider} - ${c})`;p.byAccount[d]&&new Date(b)>new Date(p.byAccount[d].lastUsed)&&(p.byAccount[d].lastUsed=b)}let d=a.apiKey&&"string"==typeof a.apiKey?`${a.apiKey}|${a.model}|${a.provider||"unknown"}`:"local-no-key";p.byApiKey[d]&&new Date(b)>new Date(p.byApiKey[d].lastUsed)&&(p.byApiKey[d].lastUsed=b);let e=a.endpoint||"Unknown",f=`${e}|${a.model}|${a.provider||"unknown"}`;p.byEndpoint[f]&&new Date(b)>new Date(p.byEndpoint[f].lastUsed)&&(p.byEndpoint[f].lastUsed=b)}}else{let a=new Date(Date.now()-864e5).toISOString();for(let c of b.all("SELECT timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, tokens FROM usageHistory WHERE timestamp >= ?",[a])){let a=(0,e.q)(c.tokens,{})||{},b=a.prompt_tokens||0,d=a.completion_tokens||0,f=c.cost||0,g=k[c.provider]||c.provider;p.totalPromptTokens+=b,p.totalCompletionTokens+=d,p.totalCost+=f,p.byProvider[c.provider]||(p.byProvider[c.provider]={requests:0,promptTokens:0,completionTokens:0,cost:0}),p.byProvider[c.provider].requests++,p.byProvider[c.provider].promptTokens+=b,p.byProvider[c.provider].completionTokens+=d,p.byProvider[c.provider].cost+=f;let h=c.provider?`${c.model} (${c.provider})`:c.model;if(p.byModel[h]||(p.byModel[h]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:c.model,provider:g,lastUsed:c.timestamp}),p.byModel[h].requests++,p.byModel[h].promptTokens+=b,p.byModel[h].completionTokens+=d,p.byModel[h].cost+=f,new Date(c.timestamp)>new Date(p.byModel[h].lastUsed)&&(p.byModel[h].lastUsed=c.timestamp),c.connectionId){let a=j[c.connectionId]||`Account ${c.connectionId.slice(0,8)}...`,e=`${c.model} (${c.provider} - ${a})`;p.byAccount[e]||(p.byAccount[e]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:c.model,provider:g,connectionId:c.connectionId,accountName:a,lastUsed:c.timestamp}),p.byAccount[e].requests++,p.byAccount[e].promptTokens+=b,p.byAccount[e].completionTokens+=d,p.byAccount[e].cost+=f,new Date(c.timestamp)>new Date(p.byAccount[e].lastUsed)&&(p.byAccount[e].lastUsed=c.timestamp)}if(c.apiKey&&"string"==typeof c.apiKey){let a=m[c.apiKey],e=a?.name||c.apiKey.slice(0,8)+"...",h=`${c.apiKey}|${c.model}|${c.provider||"unknown"}`;p.byApiKey[h]||(p.byApiKey[h]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:c.model,provider:g,apiKey:c.apiKey,keyName:e,apiKeyKey:c.apiKey,lastUsed:c.timestamp});let i=p.byApiKey[h];i.requests++,i.promptTokens+=b,i.completionTokens+=d,i.cost+=f,new Date(c.timestamp)>new Date(i.lastUsed)&&(i.lastUsed=c.timestamp)}else{p.byApiKey["local-no-key"]||(p.byApiKey["local-no-key"]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:c.model,provider:g,apiKey:null,keyName:"Local (No API Key)",apiKeyKey:"local-no-key",lastUsed:c.timestamp});let a=p.byApiKey["local-no-key"];a.requests++,a.promptTokens+=b,a.completionTokens+=d,a.cost+=f,new Date(c.timestamp)>new Date(a.lastUsed)&&(a.lastUsed=c.timestamp)}let i=c.endpoint||"Unknown",l=`${i}|${c.model}|${c.provider||"unknown"}`;p.byEndpoint[l]||(p.byEndpoint[l]={requests:0,promptTokens:0,completionTokens:0,cost:0,endpoint:i,rawModel:c.model,provider:g,lastUsed:c.timestamp});let n=p.byEndpoint[l];n.requests++,n.promptTokens+=b,n.completionTokens+=d,n.cost+=f,new Date(c.timestamp)>new Date(n.lastUsed)&&(n.lastUsed=c.timestamp)}}return p.totalRequests=Object.values(p.byProvider).reduce((a,b)=>a+(b.requests||0),0),p}async function ae(a="7d"){let b=await (0,d.c)(),c=Date.now();if("24h"===a){let a=c-864e5,d=Array.from({length:24},(b,c)=>({label:new Date(a+36e5*c).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1}),tokens:0,cost:0}));for(let e of b.all("SELECT timestamp, promptTokens, completionTokens, cost FROM usageHistory WHERE timestamp >= ?",[new Date(a).toISOString()])){let b=new Date(e.timestamp).getTime();if(b<a||b>c)continue;let f=Math.min(Math.floor((b-a)/36e5),23);d[f].tokens+=(e.promptTokens||0)+(e.completionTokens||0),d[f].cost+=e.cost||0}return d}let f="7d"===a?7:"30d"===a?30:60,g=new Date,h=ac(b,f),i={};for(let a of h)i[a.dateKey]=(0,e.q)(a.data,{});return Array.from({length:f},(a,b)=>{let c=new Date(g);c.setDate(c.getDate()-(f-1-b));let d=i[`${c.getFullYear()}-${String(c.getMonth()+1).padStart(2,"0")}-${String(c.getDate()).padStart(2,"0")}`];return{label:c.toLocaleDateString("en-US",{month:"short",day:"numeric"}),tokens:d?(d.promptTokens||0)+(d.completionTokens||0):0,cost:d&&d.cost||0}})}async function af(){}async function ag(a=200){try{let b=(0,d.c)().all("SELECT timestamp, provider, model, connectionId, promptTokens, completionTokens, status, tokens FROM usageHistory ORDER BY id DESC LIMIT ?",[a]);if(!b.length)return[];let f={};try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,98673));for(let b of(await a()))f[b.id]=b.name||b.email||""}catch{}return b.map(a=>{let b=function(a=new Date){let b=a=>String(a).padStart(2,"0");return`${b(a.getDate())}-${b(a.getMonth()+1)}-${a.getFullYear()} ${b(a.getHours())}:${b(a.getMinutes())}:${b(a.getSeconds())}`}(new Date(a.timestamp)),c=a.provider?.toUpperCase()||"-",d=a.model||"-",g=f[a.connectionId]||(a.connectionId?a.connectionId.slice(0,8):"-"),h=a.tokens?(0,e.q)(a.tokens,{}):{},i=a.promptTokens??h.prompt_tokens??"-",j=a.completionTokens??h.completion_tokens??"-";return`${b} | ${d} | ${c} | ${g} | ${i} | ${j} | ${a.status||"-"}`})}catch(a){return console.error("[usageRepo] getRecentLogs failed:",a.message),[]}}let ah=null,ai=0;async function aj(){if(ah&&Date.now()-ai<5e3)return ah;try{let{getSettings:a}=await Promise.resolve().then(c.bind(c,20819)),b=await a(),d="false"!==process.env.OBSERVABILITY_ENABLED;ah={enabled:"boolean"==typeof b.enableObservability?b.enableObservability:d,maxRecords:b.observabilityMaxRecords||parseInt(process.env.OBSERVABILITY_MAX_RECORDS||String(200),10),batchSize:b.observabilityBatchSize||parseInt(process.env.OBSERVABILITY_BATCH_SIZE||String(20),10),flushIntervalMs:b.observabilityFlushIntervalMs||parseInt(process.env.OBSERVABILITY_FLUSH_INTERVAL_MS||String(5e3),10),maxJsonSize:1024*(b.observabilityMaxJsonSize||parseInt(process.env.OBSERVABILITY_MAX_JSON_SIZE||"5",10))}}catch{ah={enabled:!1,maxRecords:200,batchSize:20,flushIntervalMs:5e3,maxJsonSize:5120}}return ai=Date.now(),ah}let ak=[],al=null,am=!1;function an(a,b){let c=JSON.stringify(a||{});return c.length>b?{_truncated:!0,_originalSize:c.length,_preview:c.substring(0,200)}:a||{}}async function ao(){if(!am&&0!==ak.length){am=!0;try{for(;ak.length>0;){let a=ak.splice(0,ak.length),b=await (0,d.c)(),c=await aj();b.transaction(()=>{for(let d of a){d.id||(d.id=function(a){let b=new Date().toISOString(),c=Math.random().toString(36).substring(2,8),d=a?a.replace(/[^a-zA-Z0-9-]/g,"-"):"unknown";return`${b}-${c}-${d}`}(d.model)),d.timestamp||(d.timestamp=new Date().toISOString()),d.request?.headers&&(d.request.headers=function(a){if(!a||"object"!=typeof a)return{};let b=["authorization","x-api-key","cookie","token","api-key"],c={...a};for(let a of Object.keys(c))b.some(b=>a.toLowerCase().includes(b))&&delete c[a];return c}(d.request.headers));let a={id:d.id,provider:d.provider||null,model:d.model||null,connectionId:d.connectionId||null,timestamp:d.timestamp,status:d.status||null,latency:d.latency||{},tokens:d.tokens||{},request:an(d.request,c.maxJsonSize),providerRequest:an(d.providerRequest,c.maxJsonSize),providerResponse:an(d.providerResponse,c.maxJsonSize),response:an(d.response,c.maxJsonSize)};b.run("INSERT INTO requestDetails(id, timestamp, provider, model, connectionId, status, data) VALUES(?, ?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET timestamp = excluded.timestamp, provider = excluded.provider, model = excluded.model, connectionId = excluded.connectionId, status = excluded.status, data = excluded.data",[a.id,a.timestamp,a.provider,a.model,a.connectionId,a.status,(0,e.s)(a)])}let d=b.get("SELECT COUNT(*) as c FROM requestDetails");d&&d.c>c.maxRecords&&b.run("DELETE FROM requestDetails WHERE id IN (SELECT id FROM requestDetails ORDER BY timestamp ASC LIMIT ?)",[d.c-c.maxRecords])})}}catch(a){console.error("[requestDetailsRepo] Batch write failed:",a)}finally{am=!1}}}async function ap(a){let b=await aj();b.enabled&&(ak.push(a),ak.length>=b.batchSize?(al&&(clearTimeout(al),al=null),ao().catch(a=>console.error("[requestDetailsRepo] flush err:",a))):al||(al=setTimeout(()=>{al=null,ao().catch(()=>{})},b.flushIntervalMs)))}async function aq(a={}){let b=await (0,d.c)(),c=[],f=[];a.provider&&(c.push("provider = ?"),f.push(a.provider)),a.model&&(c.push("model = ?"),f.push(a.model)),a.connectionId&&(c.push("connectionId = ?"),f.push(a.connectionId)),a.status&&(c.push("status = ?"),f.push(a.status)),a.startDate&&(c.push("timestamp >= ?"),f.push(new Date(a.startDate).toISOString())),a.endDate&&(c.push("timestamp <= ?"),f.push(new Date(a.endDate).toISOString()));let g=c.length?`WHERE ${c.join(" AND ")}`:"",h=b.get(`SELECT COUNT(*) as c FROM requestDetails ${g}`,f),i=h?h.c:0,j=a.page||1,k=a.pageSize||50,l=Math.ceil(i/k);return{details:b.all(`SELECT data FROM requestDetails ${g} ORDER BY timestamp DESC LIMIT ? OFFSET ?`,[...f,k,(j-1)*k]).map(a=>(0,e.q)(a.data,{})),pagination:{page:j,pageSize:k,totalItems:i,totalPages:l,hasNext:j<l,hasPrev:j>1}}}let ar=async()=>{al&&(clearTimeout(al),al=null),ak.length>0&&await ao()};async function as(){let a=await (0,d.c)(),{exportSettings:b}=await Promise.resolve().then(c.bind(c,20819)),f={settings:await b(),providerConnections:a.all("SELECT * FROM providerConnections").map(a=>({...(0,e.q)(a.data,{}),id:a.id,provider:a.provider,authType:a.authType,name:a.name,email:a.email,priority:a.priority,isActive:1===a.isActive,createdAt:a.createdAt,updatedAt:a.updatedAt})),providerNodes:a.all("SELECT * FROM providerNodes").map(a=>({...(0,e.q)(a.data,{}),id:a.id,type:a.type,name:a.name,createdAt:a.createdAt,updatedAt:a.updatedAt})),proxyPools:a.all("SELECT * FROM proxyPools").map(a=>({...(0,e.q)(a.data,{}),id:a.id,isActive:1===a.isActive,testStatus:a.testStatus,createdAt:a.createdAt,updatedAt:a.updatedAt})),apiKeys:a.all("SELECT * FROM apiKeys").map(a=>({id:a.id,key:a.key,name:a.name,machineId:a.machineId,isActive:1===a.isActive,createdAt:a.createdAt})),combos:a.all("SELECT * FROM combos").map(a=>({id:a.id,name:a.name,kind:a.kind,models:(0,e.q)(a.models,[]),createdAt:a.createdAt,updatedAt:a.updatedAt})),modelAliases:{},customModels:[],mitmAlias:{},pricing:{}};for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'modelAliases'"))f.modelAliases[b.key]=(0,e.q)(b.value);for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'customModels'"))f.customModels.push((0,e.q)(b.value));for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'mitmAlias'"))f.mitmAlias[b.key]=(0,e.q)(b.value);for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'pricing'"))f.pricing[b.key]=(0,e.q)(b.value);return f}async function at(a){if(!a||"object"!=typeof a||Array.isArray(a))throw Error("Invalid database payload");let b=await (0,d.c)();return b.transaction(()=>{for(let c of(b.run("DELETE FROM settings"),b.run("DELETE FROM providerConnections"),b.run("DELETE FROM providerNodes"),b.run("DELETE FROM proxyPools"),b.run("DELETE FROM apiKeys"),b.run("DELETE FROM combos"),b.run("DELETE FROM kv WHERE scope IN ('modelAliases', 'customModels', 'mitmAlias', 'pricing')"),a.settings&&b.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,e.s)(a.settings)]),a.providerConnections||[])){let{id:a,provider:d,authType:f,name:g,email:h,priority:i,isActive:j,createdAt:k,updatedAt:l,...m}=c;b.run("INSERT OR REPLACE INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[a,d,f||"oauth",g||null,h||null,i||null,+(!1!==j),(0,e.s)(m),k||new Date().toISOString(),l||new Date().toISOString()])}for(let c of a.providerNodes||[]){let{id:a,type:d,name:f,createdAt:g,updatedAt:h,...i}=c;b.run("INSERT OR REPLACE INTO providerNodes(id, type, name, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[a,d||null,f||null,(0,e.s)(i),g||new Date().toISOString(),h||new Date().toISOString()])}for(let c of a.proxyPools||[]){let{id:a,isActive:d,testStatus:f,createdAt:g,updatedAt:h,...i}=c;b.run("INSERT OR REPLACE INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[a,+(!1!==d),f||"unknown",(0,e.s)(i),g||new Date().toISOString(),h||new Date().toISOString()])}for(let c of a.apiKeys||[])b.run("INSERT OR REPLACE INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)",[c.id,c.key,c.name||null,c.machineId||null,+(!1!==c.isActive),c.createdAt||new Date().toISOString()]);for(let c of a.combos||[])b.run("INSERT OR REPLACE INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c.id,c.name,c.kind||null,(0,e.s)(c.models||[]),c.createdAt||new Date().toISOString(),c.updatedAt||new Date().toISOString()]);for(let[c,d]of Object.entries(a.modelAliases||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('modelAliases', ?, ?)",[c,(0,e.s)(d)]);for(let c of a.customModels||[]){let a=`${c.providerAlias}|${c.id}|${c.type||"llm"}`;b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[a,(0,e.s)(c)])}for(let[c,d]of Object.entries(a.mitmAlias||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('mitmAlias', ?, ?)",[c,(0,e.s)(d||{})]);for(let[c,d]of Object.entries(a.pricing||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('pricing', ?, ?)",[c,(0,e.s)(d||{})])}),await as()}process.off("beforeExit",ar),process.off("SIGINT",ar),process.off("SIGTERM",ar),process.off("exit",ar),process.on("beforeExit",ar),process.on("SIGINT",ar),process.on("SIGTERM",ar),process.on("exit",ar)},59278:(a,b,c)=>{"use strict";c.d(b,{AL:()=>j,HG:()=>i,Jh:()=>m,KQ:()=>k,Or:()=>l});var d=c(76760),e=c.n(d),f=c(73024),g=c.n(f),h=c(81372);let i=e().join(h.n,"db"),j=e().join(i,"data.sqlite"),k=e().join(i,"backups"),l={main:e().join(h.n,"db.json"),usage:e().join(h.n,"usage.json"),disabled:e().join(h.n,"disabledModels.json"),details:e().join(h.n,"request-details.json")};function m(){for(let a of[h.n,i,k])g().existsSync(a)||g().mkdirSync(a,{recursive:!0})}},61034:(a,b,c)=>{"use strict";c.d(b,{U:()=>f});var d=c(90602),e=c(25456);function f(a){return{async get(b,c=null){let f=(await (0,d.c)()).get("SELECT value FROM kv WHERE scope = ? AND key = ?",[a,b]);return f?(0,e.q)(f.value,c):c},async getAll(){let b=(await (0,d.c)()).all("SELECT key, value FROM kv WHERE scope = ?",[a]),c={};for(let a of b)c[a.key]=(0,e.q)(a.value);return c},async set(b,c){(await (0,d.c)()).run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,b,(0,e.s)(c)])},async setMany(b){let c=await (0,d.c)();c.transaction(()=>{for(let[d,f]of Object.entries(b))c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,d,(0,e.s)(f)])})},async remove(b){(await (0,d.c)()).run("DELETE FROM kv WHERE scope = ? AND key = ?",[a,b])},async clear(){(await (0,d.c)()).run("DELETE FROM kv WHERE scope = ?",[a])}}}},64749:()=>{},75582:(a,b,c)=>{"use strict";function d(a,b,c=null){let e=a.get("SELECT value FROM _meta WHERE key = ?",[b]);return e?e.value:c}function e(a,b,c){a.run("INSERT INTO _meta(key, value) VALUES(?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",[b,String(c)])}c.d(b,{dy:()=>d,np:()=>e}),c(90602)},81372:(a,b,c)=>{"use strict";c.d(b,{n:()=>i});var d=c(33873),e=c.n(d),f=c(21820),g=c.n(f);let h="9router",i=process.env.DATA_DIR?process.env.DATA_DIR:"win32"===process.platform?e().join(process.env.APPDATA||e().join(g().homedir(),"AppData","Roaming"),h):e().join(g().homedir(),`.${h}`)},85885:(a,b,c)=>{"use strict";c.r(b),c.d(b,{createProviderNode:()=>k,deleteProviderNode:()=>m,getProviderNodeById:()=>j,getProviderNodes:()=>i,updateProviderNode:()=>l});var d=c(37873),e=c(90602),f=c(25456);function g(a){return a?{...(0,f.q)(a.data,{}),id:a.id,type:a.type,name:a.name,createdAt:a.createdAt,updatedAt:a.updatedAt}:null}function h(a,b){let c=function(a){let{id:b,type:c,name:d,createdAt:e,updatedAt:g,...h}=a;return{id:b,type:c??null,name:d??null,data:(0,f.s)(h),createdAt:e,updatedAt:g}}(b);a.run(`INSERT INTO providerNodes(id, type, name, data, createdAt, updatedAt)
|
|
6
6
|
VALUES(?, ?, ?, ?, ?, ?)
|
|
7
7
|
ON CONFLICT(id) DO UPDATE SET
|
|
8
|
-
type=excluded.type, name=excluded.name, data=excluded.data, updatedAt=excluded.updatedAt`,[c.id,c.type,c.name,c.data,c.createdAt,c.updatedAt])}async function i(a={}){let b=await (0,e.c)(),c=[],d=[];a.type&&(c.push("type = ?"),d.push(a.type));let f=`SELECT * FROM providerNodes${c.length?` WHERE ${c.join(" AND ")}`:""}`;return b.all(f,d).map(g)}async function j(a){return g((await (0,e.c)()).get("SELECT * FROM providerNodes WHERE id = ?",[a]))}async function k(a){let b=await (0,e.c)(),c=new Date().toISOString(),f={id:a.id||(0,d.A)(),type:a.type,name:a.name,prefix:a.prefix,apiType:a.apiType,baseUrl:a.baseUrl,createdAt:c,updatedAt:c};return h(b,f),f}async function l(a,b){let c=await (0,e.c)(),d=null;return c.transaction(()=>{let e=c.get("SELECT * FROM providerNodes WHERE id = ?",[a]);if(!e)return;let f={...g(e),...b,updatedAt:new Date().toISOString()};h(c,f),d=f}),d}async function m(a){let b=await (0,e.c)(),c=null;return b.transaction(()=>{let d=b.get("SELECT * FROM providerNodes WHERE id = ?",[a]);d&&(c=g(d),b.run("DELETE FROM providerNodes WHERE id = ?",[a]))}),c}},90602:(a,b,c)=>{"use strict";c.d(b,{c:()=>
|
|
8
|
+
type=excluded.type, name=excluded.name, data=excluded.data, updatedAt=excluded.updatedAt`,[c.id,c.type,c.name,c.data,c.createdAt,c.updatedAt])}async function i(a={}){let b=await (0,e.c)(),c=[],d=[];a.type&&(c.push("type = ?"),d.push(a.type));let f=`SELECT * FROM providerNodes${c.length?` WHERE ${c.join(" AND ")}`:""}`;return b.all(f,d).map(g)}async function j(a){return g((await (0,e.c)()).get("SELECT * FROM providerNodes WHERE id = ?",[a]))}async function k(a){let b=await (0,e.c)(),c=new Date().toISOString(),f={id:a.id||(0,d.A)(),type:a.type,name:a.name,prefix:a.prefix,apiType:a.apiType,baseUrl:a.baseUrl,createdAt:c,updatedAt:c};return h(b,f),f}async function l(a,b){let c=await (0,e.c)(),d=null;return c.transaction(()=>{let e=c.get("SELECT * FROM providerNodes WHERE id = ?",[a]);if(!e)return;let f={...g(e),...b,updatedAt:new Date().toISOString()};h(c,f),d=f}),d}async function m(a){let b=await (0,e.c)(),c=null;return b.transaction(()=>{let d=b.get("SELECT * FROM providerNodes WHERE id = ?",[a]);d&&(c=g(d),b.run("DELETE FROM providerNodes WHERE id = ?",[a]))}),c}},90602:(a,b,c)=>{"use strict";c.d(b,{c:()=>k});var d=c(59278);global._dbAdapter||(global._dbAdapter={instance:null,initPromise:null,logged:!1});let e=global._dbAdapter;async function f(){if(!process.versions.bun)return null;try{let{createBunSqliteAdapter:a}=await c.e(8495).then(c.bind(c,18495));return await a(d.AL)}catch(a){return console.warn(`[DB] bun:sqlite unavailable: ${a.message}`),null}}async function g(){if(process.versions.bun)return null;try{let{createBetterSqliteAdapter:a}=await c.e(3630).then(c.bind(c,3630));return a(d.AL)}catch(a){return console.warn(`[DB] better-sqlite3 unavailable: ${a.message}`),null}}async function h(){if(process.versions.bun)return null;let[a,b]=process.versions.node.split(".").map(Number);if(a<22||22===a&&b<5)return null;try{let{createNodeSqliteAdapter:a}=await c.e(7292).then(c.bind(c,37292));return await a(d.AL)}catch(a){return console.warn(`[DB] node:sqlite unavailable: ${a.message}`),null}}async function i(){try{let{createSqlJsAdapter:a}=await c.e(7061).then(c.bind(c,87061));return await a(d.AL)}catch(a){return console.warn(`[DB] sql.js unavailable: ${a.message}`),null}}async function j(){(0,d.Jh)();let a=await f();if(a||(a=await g()),a||(a=await h()),a||(a=await i()),!a)throw Error("[DB] No SQLite driver available (bun/better/node/sql.js all failed)");e.logged||(console.log(`[DB] Driver: ${a.driver} | file: ${d.AL}`),e.logged=!0);let{runMigrationOnce:b}=await c.e(7171).then(c.bind(c,47171));return await b(a),a}async function k(){return e.instance?e.instance:(e.initPromise||(e.initPromise=j().then(a=>(e.instance=a,a))),e.initPromise)}},98366:(a,b,c)=>{"use strict";c.d(b,{KJ:()=>l,VT:()=>n,getPricingForModel:()=>k,r4:()=>j,yF:()=>m});var d=c(90602),e=c(25456);let f=(0,c(61034).U)("pricing"),g={value:null,expiresAt:0};function h(){g={value:null,expiresAt:0}}async function i(){return await f.getAll()}async function j(){let a=Date.now();if(g.value&&g.expiresAt>a)return g.value;let b=await i(),{PROVIDER_PRICING:d}=await c.e(1249).then(c.bind(c,61249)),e={};for(let[a,c]of Object.entries(d))if(e[a]={...c},b[a])for(let[c,d]of Object.entries(b[a]))e[a][c]=e[a][c]?{...e[a][c],...d}:d;for(let[a,c]of Object.entries(b))if(e[a])for(let[b,d]of Object.entries(c))e[a][b]||(e[a][b]=d);else e[a]={...c};return g={value:e,expiresAt:a+5e3},e}async function k(a,b){if(!b)return null;let d=await i();if(a&&d[a]?.[b])return d[a][b];let{getPricingForModel:e}=await c.e(1249).then(c.bind(c,61249));return e(a,b)}async function l(a){let b=await (0,d.c)();return b.transaction(()=>{for(let[c,d]of Object.entries(a)){let a=b.get("SELECT value FROM kv WHERE scope = 'pricing' AND key = ?",[c]),f={...a&&(0,e.q)(a.value,{})||{}};for(let[a,b]of Object.entries(d))f[a]=b;b.run("INSERT INTO kv(scope, key, value) VALUES('pricing', ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[c,(0,e.s)(f)])}}),h(),await i()}async function m(a,b){if(!a)return await i();let c=await (0,d.c)();return c.transaction(()=>{if(!b)return void c.run("DELETE FROM kv WHERE scope = 'pricing' AND key = ?",[a]);let d=c.get("SELECT value FROM kv WHERE scope = 'pricing' AND key = ?",[a]),f=d&&(0,e.q)(d.value,{})||{};delete f[b],0===Object.keys(f).length?c.run("DELETE FROM kv WHERE scope = 'pricing' AND key = ?",[a]):c.run("INSERT INTO kv(scope, key, value) VALUES('pricing', ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,(0,e.s)(f)])}),h(),await i()}async function n(){return await f.clear(),h(),{}}},98673:(a,b,c)=>{"use strict";c.r(b),c.d(b,{cleanupProviderConnections:()=>r,createProviderConnection:()=>m,deleteProviderConnection:()=>o,deleteProviderConnectionsByProvider:()=>p,getProviderConnectionById:()=>k,getProviderConnections:()=>j,reorderProviderConnections:()=>q,updateProviderConnection:()=>n});var d=c(37873),e=c(90602),f=c(25456);let g=["displayName","email","globalPriority","defaultModel","accessToken","refreshToken","expiresAt","tokenType","scope","projectId","apiKey","testStatus","lastTested","lastError","lastErrorAt","rateLimitedUntil","expiresIn","errorCode","consecutiveUseCount"];function h(a){return a?{...(0,f.q)(a.data,{}),id:a.id,provider:a.provider,authType:a.authType,name:a.name,email:a.email,priority:a.priority,isActive:1===a.isActive||!0===a.isActive,createdAt:a.createdAt,updatedAt:a.updatedAt}:null}function i(a,b){let c=function(a){let{id:b,provider:c,authType:d,name:e,email:g,priority:h,isActive:i,createdAt:j,updatedAt:k,...l}=a;return{id:b,provider:c,authType:d,name:e??null,email:g??null,priority:h??null,isActive:+(!1!==i),data:(0,f.s)(l),createdAt:j,updatedAt:k}}(b);a.run(`INSERT INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt)
|
|
9
9
|
VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
10
10
|
ON CONFLICT(id) DO UPDATE SET
|
|
11
11
|
provider=excluded.provider, authType=excluded.authType, name=excluded.name,
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";exports.id=499,exports.ids=[499],exports.modules={24730:(a,b,c)=>{c.d(b,{CG:()=>e,oG:()=>d,zE:()=>f});let d=`
|
|
2
|
+
PRAGMA journal_mode = WAL;
|
|
3
|
+
PRAGMA synchronous = NORMAL;
|
|
4
|
+
PRAGMA temp_store = MEMORY;
|
|
5
|
+
PRAGMA mmap_size = 30000000;
|
|
6
|
+
PRAGMA cache_size = -64000;
|
|
7
|
+
PRAGMA foreign_keys = ON;
|
|
8
|
+
PRAGMA busy_timeout = 5000;
|
|
9
|
+
`,e={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",createdAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)"]},combos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_combo_name ON combos(name)"]},kv:{columns:{scope:"TEXT NOT NULL",key:"TEXT NOT NULL",value:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (scope, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_kv_scope ON kv(scope)"]},usageHistory:{columns:{id:"INTEGER PRIMARY KEY AUTOINCREMENT",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",apiKey:"TEXT",endpoint:"TEXT",promptTokens:"INTEGER DEFAULT 0",completionTokens:"INTEGER DEFAULT 0",cost:"REAL DEFAULT 0",status:"TEXT",tokens:"TEXT",meta:"TEXT"},indexes:["CREATE INDEX IF NOT EXISTS idx_uh_ts ON usageHistory(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_provider ON usageHistory(provider)","CREATE INDEX IF NOT EXISTS idx_uh_model ON usageHistory(model)","CREATE INDEX IF NOT EXISTS idx_uh_conn ON usageHistory(connectionId)"]},usageDaily:{columns:{dateKey:"TEXT PRIMARY KEY",data:"TEXT NOT NULL"}},requestDetails:{columns:{id:"TEXT PRIMARY KEY",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",status:"TEXT",data:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_rd_ts ON requestDetails(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_rd_provider ON requestDetails(provider)","CREATE INDEX IF NOT EXISTS idx_rd_model ON requestDetails(model)","CREATE INDEX IF NOT EXISTS idx_rd_conn ON requestDetails(connectionId)"]}};function f(a,b){let c=Object.entries(b.columns).map(([a,b])=>`${a} ${b}`);return b.primaryKey&&c.push(b.primaryKey),`CREATE TABLE IF NOT EXISTS ${a} (${c.join(", ")})`}},30499:(a,b,c)=>{c.d(b,{createNodeSqliteAdapter:()=>e});var d=c(24730);async function e(a){let b=process.emit;process.emit=function(a,c,...d){return!("warning"===a&&c?.name==="ExperimentalWarning"&&/SQLite/i.test(c.message||""))&&b.call(process,a,c,...d)};let e=new(await Promise.resolve().then(c.t.bind(c,80099,23))).DatabaseSync(a);e.exec(d.oG);let f=new Map;function g(a){let b=f.get(a);return b||(b=e.prepare(a),f.set(a,b)),b}let h=setInterval(()=>{try{e.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}},6e4);function i(){try{e.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}try{f.clear()}catch{}try{e.close()}catch{}}"function"==typeof h.unref&&h.unref();let j=()=>i();return process.once("beforeExit",j),process.once("SIGINT",()=>{j(),process.exit(0)}),process.once("SIGTERM",()=>{j(),process.exit(0)}),{driver:"node:sqlite",run(a,b=[]){let c=g(a).run(...b);return{changes:Number(c.changes??0),lastInsertRowid:Number(c.lastInsertRowid??0)}},get:(a,b=[])=>g(a).get(...b),all:(a,b=[])=>g(a).all(...b),exec:a=>e.exec(a),transaction(a){let b=`sp_${Math.random().toString(36).slice(2)}`;e.exec(`SAVEPOINT ${b}`);try{let c=a();return e.exec(`RELEASE ${b}`),c}catch(a){try{e.exec(`ROLLBACK TO ${b}`),e.exec(`RELEASE ${b}`)}catch{}throw a}},checkpoint(){try{e.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}},close(){clearInterval(h),i()},raw:e}}}};
|
|
@@ -5,7 +5,7 @@ ${m}`;let o={conversationState:{chatTriggerType:"MANUAL",conversationId:(0,f.A)(
|
|
|
5
5
|
<tool_call_id>${g(b||"")}</tool_call_id>
|
|
6
6
|
<result>${g(d)}</result>
|
|
7
7
|
</tool_result>`}function i(a){return"string"==typeof a?a.split("\n")[0]:""}function j(a,b,c,d){let e=function(a){let b=[],c=new Map,d=(a,b)=>{if(!a)return;let d=b||"tool";c.set(a,{name:d});let e=i(a);e&&e!==a&&c.set(e,{name:d})};for(let b of a){if("assistant"===b.role&&b.tool_calls)for(let a of b.tool_calls)d(a.id||"",a.function?.name||"tool");if("assistant"===b.role&&Array.isArray(b.content))for(let a of b.content)a?.type==="tool_use"&&d(a.id||"",a.name||"tool")}for(let d=0;d<a.length;d++){let e=a[d];if("system"===e.role){b.push({role:"user",content:`[System Instructions]
|
|
8
|
-
${f(e.content)}`});continue}if("tool"===e.role){let a=f(e.content),d=e.tool_call_id||"",g=c.get(d)||{},i=e.name||g.name||"tool";b.push({role:"user",content:h(i,d,a)});continue}if("user"===e.role||"assistant"===e.role){if("user"===e.role&&Array.isArray(e.content)){let a=[];for(let b of e.content)if(b&&"object"==typeof b){if("text"===b.type){"string"==typeof b.text&&a.push(b.text||"");continue}if("tool_result"===b.type){let d=b.tool_use_id||"",e=c.get(d)||c.get(i(d)),g=e?.name||"tool",j=f(b.content);a.push(h(g,d,j))}}let d=a.filter(Boolean).join("\n");d&&b.push({role:"user",content:d});continue}let a=f(e.content);if("assistant"===e.role&&e.tool_calls&&e.tool_calls.length>0){let c={role:"assistant",content:a||""};c.tool_calls=e.tool_calls.map(a=>{let{index:b,...c}=a||{};return c}),b.push(c)}else if("assistant"===e.role&&Array.isArray(e.content)){let c=e.content.filter(a=>a?.type==="tool_use").map(a=>({id:a.id||"",type:"function",function:{name:a.name||"tool",arguments:JSON.stringify(a.input||{})}})).filter(a=>a.id);c.length>0?b.push({role:"assistant",content:a||"",tool_calls:c}):a&&b.push({role:"assistant",content:a})}else a&&b.push({role:e.role,content:a})}}return b}(b.messages||[]),{user:g,metadata:j,tool_choice:k,stream_options:l,system:m,...n}=b;return{...n,messages:e,max_tokens:32e3}}(0,d.kz)(e.h.OPENAI,e.h.CURSOR,j,null)},39006:a=>{a.exports={rE:"0.4.
|
|
8
|
+
${f(e.content)}`});continue}if("tool"===e.role){let a=f(e.content),d=e.tool_call_id||"",g=c.get(d)||{},i=e.name||g.name||"tool";b.push({role:"user",content:h(i,d,a)});continue}if("user"===e.role||"assistant"===e.role){if("user"===e.role&&Array.isArray(e.content)){let a=[];for(let b of e.content)if(b&&"object"==typeof b){if("text"===b.type){"string"==typeof b.text&&a.push(b.text||"");continue}if("tool_result"===b.type){let d=b.tool_use_id||"",e=c.get(d)||c.get(i(d)),g=e?.name||"tool",j=f(b.content);a.push(h(g,d,j))}}let d=a.filter(Boolean).join("\n");d&&b.push({role:"user",content:d});continue}let a=f(e.content);if("assistant"===e.role&&e.tool_calls&&e.tool_calls.length>0){let c={role:"assistant",content:a||""};c.tool_calls=e.tool_calls.map(a=>{let{index:b,...c}=a||{};return c}),b.push(c)}else if("assistant"===e.role&&Array.isArray(e.content)){let c=e.content.filter(a=>a?.type==="tool_use").map(a=>({id:a.id||"",type:"function",function:{name:a.name||"tool",arguments:JSON.stringify(a.input||{})}})).filter(a=>a.id);c.length>0?b.push({role:"assistant",content:a||"",tool_calls:c}):a&&b.push({role:"assistant",content:a})}else a&&b.push({role:e.role,content:a})}}return b}(b.messages||[]),{user:g,metadata:j,tool_choice:k,stream_options:l,system:m,...n}=b;return{...n,messages:e,max_tokens:32e3}}(0,d.kz)(e.h.OPENAI,e.h.CURSOR,j,null)},39006:a=>{a.exports={rE:"0.4.28"}},39359:(a,b,c)=>{c.r(b),c.d(b,{openaiToClaudeRequest:()=>h,openaiToClaudeRequestForAntigravity:()=>j});var d=c(26263),e=c(56790),f=c(43528),g=c(19312);function h(a,b,c){var d;let e=new Map,h={model:a,max_tokens:(0,g.M)(b),stream:c};void 0!==b.temperature&&(h.temperature=b.temperature),h.messages=[];let j=[];if(b.messages&&Array.isArray(b.messages)){let a;for(let a of b.messages)"system"===a.role&&j.push("string"==typeof a.content?a.content:i(a.content));let c=b.messages.filter(a=>"system"!==a.role),d=[],f=()=>{a&&d.length>0&&(h.messages.push({role:a,content:d}),d=[])};for(let b of c){let c="user"===b.role||"tool"===b.role?"user":"assistant",g=function(a,b=new Map){let c=[];if("tool"===a.role)c.push({type:"tool_result",tool_use_id:a.tool_call_id,content:a.content});else if("user"===a.role){if("string"==typeof a.content)a.content&&c.push({type:"text",text:a.content});else if(Array.isArray(a.content))for(let b of a.content)if("text"===b.type&&b.text)c.push({type:"text",text:b.text});else if("tool_result"===b.type)c.push({type:"tool_result",tool_use_id:b.tool_use_id,content:b.content,...b.is_error&&{is_error:b.is_error}});else if("image_url"===b.type){let a=b.image_url.url,d=a.match(/^data:([^;]+);base64,(.+)$/);d?c.push({type:"image",source:{type:"base64",media_type:d[1],data:d[2]}}):(a.startsWith("http://")||a.startsWith("https://"))&&c.push({type:"image",source:{type:"url",url:a}})}else"image"===b.type&&b.source&&c.push({type:"image",source:b.source})}else if("assistant"===a.role){if(Array.isArray(a.content)){for(let b of a.content)if("text"===b.type&&b.text)c.push({type:"text",text:b.text});else if("tool_use"===b.type)c.push({type:"tool_use",id:b.id,name:b.name,input:b.input});else if("thinking"===b.type){let{cache_control:a,...d}=b;c.push(d)}}else if(a.content){let b="string"==typeof a.content?a.content:i(a.content);b&&c.push({type:"text",text:b})}if(a.tool_calls&&Array.isArray(a.tool_calls)){for(let b of a.tool_calls)if("function"===b.type){let a=""+b.function.name;c.push({type:"tool_use",id:b.id,name:a,input:function(a){if("string"!=typeof a)return a;try{return JSON.parse(a)}catch{return a}}(b.function.arguments)})}}}return c}(b,e),j=g.some(a=>"tool_use"===a.type);if(g.some(a=>"tool_result"===a.type)){let b=g.filter(a=>"tool_result"===a.type),e=g.filter(a=>"tool_result"!==a.type);f(),b.length>0&&h.messages.push({role:"user",content:b}),e.length>0&&(a=c,d.push(...e));continue}a!==c&&(f(),a=c),d.push(...g),j&&f()}f();for(let a=h.messages.length-1;a>=0;a--){let b=h.messages[a];if("assistant"===b.role&&Array.isArray(b.content)&&b.content.length>0){let a=["text","tool_use","tool_result","image"];for(let c=b.content.length-1;c>=0;c--){let d=b.content[c];if(a.includes(d.type)){d.cache_control={type:"ephemeral"};break}}break}}}if(b.response_format){let a=b.response_format;if("json_schema"===a.type&&a.json_schema?.schema){let b=JSON.stringify(a.json_schema.schema,null,2);j.push(`You must respond with valid JSON that strictly follows this JSON schema:
|
|
9
9
|
\`\`\`json
|
|
10
10
|
${b}
|
|
11
11
|
\`\`\`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=6283,exports.ids=[6283],exports.modules={7468:(a,b,c)=>{c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}},24709:(a,b,c)=>{c.d(b,{Xg:()=>d.Xg,eh:()=>e,vq:()=>d.vq});var d=c(29737);Object.entries(c(50021).AI_PROVIDERS).filter(([,a])=>a.passthroughModels).map(([a])=>a);let e=Object.entries(d.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name})))},37770:(a,b,c)=>{c.d(b,{CG:()=>d.CG,Dj:()=>d.Dj,Fh:()=>d.Fh,Iq:()=>d.Iq,K1:()=>d.K1,KJ:()=>d.KJ,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,Mc:()=>d.Mc,OM:()=>d.OM,PX:()=>d.PX,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Uv:()=>d.Uv,VT:()=>d.VT,XW:()=>d.XW,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,bI:()=>d.bI,c:()=>d.c,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,getProviderConnections:()=>d.P,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,jd:()=>d.jd,mt:()=>d.mt,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,r4:()=>d.r4,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,uv:()=>d.uv,yF:()=>d.yF,yg:()=>d.yg,zP:()=>d.zP});var d=c(51412)},37873:(a,b,c)=>{c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length;var h=c(7468);let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return(0,h.k)(k)}},39006:a=>{a.exports={rE:"0.4.26"}},47978:(a,b,c)=>{c.d(b,{DI:()=>e,Hp:()=>g,LT:()=>f,MZ:()=>o,Nl:()=>r,Nu:()=>k,OV:()=>d,Tx:()=>l,WN:()=>m,YT:()=>j,ZL:()=>i,f7:()=>q,hF:()=>h,lB:()=>p,t:()=>n}),c(21820);let d={clientId:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",authorizeUrl:"https://claude.ai/oauth/authorize",tokenUrl:"https://api.anthropic.com/v1/oauth/token",scopes:["org:create_api_key","user:profile","user:inference"],codeChallengeMethod:"S256"},e={clientId:"app_EMoamEEZ73f0CkXaXp7hrann",authorizeUrl:"https://auth.openai.com/oauth/authorize",tokenUrl:"https://auth.openai.com/oauth/token",scope:"openid profile email offline_access",codeChallengeMethod:"S256",extraParams:{id_token_add_organizations:"true",codex_cli_simplified_flow:"true",originator:"codex_cli_rs"}},f={clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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",authorizeUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",userInfoUrl:"https://www.googleapis.com/oauth2/v1/userinfo",scopes:["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile"]},g={clientId:"f0304373b74a44d2b584a3fb70ca9e56",deviceCodeUrl:"https://chat.qwen.ai/api/v1/oauth2/device/code",tokenUrl:"https://chat.qwen.ai/api/v1/oauth2/token",scope:"openid profile email model.completion",codeChallengeMethod:"S256"},h={apiBaseUrl:"https://api2.qoder.sh",deviceTokenUrl:"https://api2.qoder.sh/api/v1/deviceToken/poll",deviceRefreshUrl:"https://api2.qoder.sh/api/v1/deviceToken/refresh",refreshUrl:"https://api2.qoder.sh/api/v3/user/refresh_token",userInfoUrl:"https://api2.qoder.sh/api/v1/userinfo",statusUrl:"https://api2.qoder.sh/api/v3/user/status",loginUrl:"https://qoder.com/login"},i={clientId:"10009311001",clientSecret:"4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",authorizeUrl:"https://iflow.cn/oauth",tokenUrl:"https://iflow.cn/oauth/token",userInfoUrl:"https://iflow.cn/api/oauth/getUserInfo",extraParams:{loginMethod:"phone",type:"phone"}},j={clientId:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecret:"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",authorizeUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",userInfoUrl:"https://www.googleapis.com/oauth2/v1/userinfo",scopes:["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile","https://www.googleapis.com/auth/cclog","https://www.googleapis.com/auth/experimentsandconfigs"],apiEndpoint:"https://cloudcode-pa.googleapis.com",apiVersion:"v1internal",loadCodeAssistEndpoint:"https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",onboardUserEndpoint:"https://cloudcode-pa.googleapis.com/v1internal:onboardUser",loadCodeAssistUserAgent:"google-api-nodejs-client/9.15.1",loadCodeAssistApiClient:"google-cloud-sdk vscode_cloudshelleditor/0.1",loadCodeAssistClientMetadata:JSON.stringify({ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"})},k={clientId:"Iv1.b507a08c87ecfe98",deviceCodeUrl:"https://github.com/login/device/code",tokenUrl:"https://github.com/login/oauth/access_token",userInfoUrl:"https://api.github.com/user",scopes:"read:user",apiVersion:"2022-11-28",copilotTokenUrl:"https://api.github.com/copilot_internal/v2/token",userAgent:"GitHubCopilotChat/0.26.7",editorVersion:"vscode/1.85.0",editorPluginVersion:"copilot-chat/0.26.7"},l={ssoOidcEndpoint:"https://oidc.us-east-1.amazonaws.com",registerClientUrl:"https://oidc.us-east-1.amazonaws.com/client/register",deviceAuthUrl:"https://oidc.us-east-1.amazonaws.com/device_authorization",tokenUrl:"https://oidc.us-east-1.amazonaws.com/token",startUrl:"https://view.awsapps.com/start",clientName:"kiro-oauth-client",clientType:"public",scopes:["codewhisperer:completions","codewhisperer:analysis","codewhisperer:conversations"],grantTypes:["urn:ietf:params:oauth:grant-type:device_code","refresh_token"],issuerUrl:"https://identitycenter.amazonaws.com/ssoins-722374e8c3c8e6c6",socialAuthEndpoint:"https://prod.us-east-1.auth.desktop.kiro.dev",socialLoginUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/login",socialTokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/oauth/token",socialRefreshUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authMethods:["builder-id","idc","google","github","import"]},m={apiEndpoint:"https://api2.cursor.sh",chatEndpoint:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",modelsEndpoint:"/aiserver.v1.AiService/GetDefaultModelNudgeData",api3Endpoint:"https://api3.cursor.sh",agentEndpoint:"https://agent.api5.cursor.sh",agentNonPrivacyEndpoint:"https://agentn.api5.cursor.sh",clientVersion:"3.1.0",clientType:"ide",tokenStoragePaths:{linux:"~/.config/Cursor/User/globalStorage/state.vscdb",macos:"/Users/<user>/Library/Application Support/Cursor/User/globalStorage/state.vscdb",windows:"%APPDATA%\\Cursor\\User\\globalStorage\\state.vscdb"},dbKeys:{accessToken:"cursorAuth/accessToken",machineId:"storage.serviceMachineId"}},n={clientId:process.env.KIMI_CODING_OAUTH_CLIENT_ID||"17e5f671-d194-4dfb-9706-5516cb48c098",deviceCodeUrl:"https://auth.kimi.com/api/oauth/device_authorization",tokenUrl:"https://auth.kimi.com/api/oauth/token"},o={apiBaseUrl:"https://api.kilo.ai",initiateUrl:"https://api.kilo.ai/api/device-auth/codes",pollUrlBase:"https://api.kilo.ai/api/device-auth/codes"},p={appBaseUrl:"https://app.cline.bot",apiBaseUrl:"https://api.cline.bot",authorizeUrl:"https://api.cline.bot/api/v1/auth/authorize",tokenExchangeUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh"},q={defaultBaseUrl:"https://gitlab.com",authorizeUrlPath:"/oauth/authorize",tokenUrlPath:"/oauth/token",userInfoUrlPath:"/api/v4/user",scope:"api read_user",codeChallengeMethod:"S256"},r={baseUrl:"https://copilot.tencent.com",stateUrl:"https://copilot.tencent.com/v2/plugin/auth/state",tokenUrl:"https://copilot.tencent.com/v2/plugin/auth/token",refreshUrl:"https://copilot.tencent.com/v2/plugin/auth/token/refresh",userAgent:"CLI/2.63.2 CodeBuddy/2.63.2",platform:"CLI",pollInterval:5e3}},56066:(a,b,c)=>{c.d(b,{C:()=>f});var d=c(16288);function e(a){return null==a?"":String(a).trim()}async function f({proxyUrl:a,testUrl:b,timeoutMs:c}={}){let g,h=e(a);if(!h)return{ok:!1,status:400,error:"proxyUrl is required"};let i=e(b)||"https://google.com/",j=Number(c),k=Number.isFinite(j)&&j>0?Math.min(j,3e4):8e3;try{try{g=new d.ProxyAgent({uri:h})}catch(a){return{ok:!1,status:400,error:`Invalid proxy URL: ${a?.message||String(a)}`}}let a=new AbortController,b=Date.now(),c=setTimeout(()=>a.abort(),k);try{let c=await (0,d.hd)(i,{method:"HEAD",dispatcher:g,signal:a.signal,headers:{"User-Agent":"9Router"}});return{ok:c.ok,status:c.status,statusText:c.statusText,url:i,elapsedMs:Date.now()-b}}catch(b){let a=b?.name==="AbortError"?"Proxy test timed out":function(a){if(!a)return"Unknown error";let b=a?.message||String(a),c=a?.cause?.code||a?.code,d=a?.cause?.message;return d&&d!==b?c?`${b}: ${d} (${c})`:`${b}: ${d}`:c&&!b.includes(c)?`${b} (${c})`:b}(b);return{ok:!1,status:500,error:a}}finally{clearTimeout(c)}}finally{try{await g?.close?.()}catch{}}}},71679:(a,b,c)=>{c.d(b,{F:()=>s});var d=c(37770),e=c(93250),f=c(56066),g=c(50021),h=c(89489),i=c(29737),j=c(62276),k=c(47978),l=c(98774);let m={claude:{checkExpiry:!0,refreshable:!0},codex:{url:"https://chatgpt.com/backend-api/codex/responses",method:"POST",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{"Content-Type":"application/json",originator:"codex-cli","User-Agent":"codex-cli/1.0.18 (macOS; arm64)"},body:JSON.stringify({model:"gpt-5.3-codex",input:[],stream:!1,store:!1}),acceptStatuses:[400],refreshable:!0},"gemini-cli":{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},antigravity:{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},github:{url:"https://api.github.com/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{"User-Agent":"9Router",Accept:"application/vnd.github+json"}},iflow:{buildUrl:a=>`https://iflow.cn/api/oauth/getUserInfo?accessToken=${encodeURIComponent(a)}`,method:"GET",noAuth:!0},qwen:{checkExpiry:!0,refreshable:!0},kiro:{checkExpiry:!0,refreshable:!0},"kimi-coding":{checkExpiry:!0,refreshable:!1},cursor:{tokenExists:!0},kilocode:{url:`${k.MZ.apiBaseUrl}/api/profile`,method:"GET",authHeader:"Authorization",authPrefix:"Bearer "},cline:{refreshable:!0},gitlab:{url:"https://gitlab.com/api/v4/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer "},codebuddy:{tokenExists:!0}};async function n(a){return await fetch("https://api.cline.bot/api/v1/users/me",{method:"GET",headers:(0,l.w$)(a,{Accept:"application/json"})})}async function o(a){let b=a.provider,c=a.refreshToken;if(!c)return null;try{if("gemini-cli"===b||"antigravity"===b){let a="gemini-cli"===b?k.LT:k.YT,d=await fetch("https://oauth2.googleapis.com/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:a.clientId,client_secret:a.clientSecret,grant_type:"refresh_token",refresh_token:c})});if(!d.ok)return null;let e=await d.json();return{accessToken:e.access_token,expiresIn:e.expires_in,refreshToken:e.refresh_token||c}}if("codex"===b){let a=await fetch(k.DI.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"refresh_token",client_id:k.DI.clientId,refresh_token:c})});if(!a.ok)return null;let b=await a.json();return{accessToken:b.access_token,expiresIn:b.expires_in,refreshToken:b.refresh_token||c}}if("claude"===b){let a=await fetch(k.OV.tokenUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"refresh_token",refresh_token:c,client_id:k.OV.clientId})});if(!a.ok)return null;let b=await a.json();return{accessToken:b.access_token,expiresIn:b.expires_in,refreshToken:b.refresh_token||c}}if("kiro"===b){let b=a.providerSpecificData||{},d=b.clientId||a.clientId,e=b.clientSecret||a.clientSecret,f=b.region||a.region;if(d&&e){let a=`https://oidc.${f||"us-east-1"}.amazonaws.com/token`,b=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:d,clientSecret:e,refreshToken:c,grantType:"refresh_token"})});if(!b.ok)return null;let g=await b.json();return{accessToken:g.accessToken,expiresIn:g.expiresIn||3600,refreshToken:g.refreshToken||c}}let g=await fetch(k.Tx.socialRefreshUrl,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":"kiro-cli/1.0.0"},body:JSON.stringify({refreshToken:c})});if(!g.ok)return null;let h=await g.json();return{accessToken:h.accessToken,expiresIn:h.expiresIn||3600,refreshToken:h.refreshToken||c}}if("qwen"===b){let a=await fetch(k.Hp.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:c,client_id:k.Hp.clientId})});if(!a.ok)return null;let b=await a.json();return{accessToken:b.access_token,expiresIn:b.expires_in,refreshToken:b.refresh_token||c}}if("cline"===b){let a=await fetch(k.lB.refreshUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({refreshToken:c,grantType:"refresh_token",clientType:"extension"})});if(!a.ok)return null;let b=await a.json(),d=b?.data||b,e=d?.expiresAt?Math.max(1,Math.floor((new Date(d.expiresAt).getTime()-Date.now())/1e3)):3600;return{accessToken:d?.accessToken,expiresIn:e,refreshToken:d?.refreshToken||c}}return null}catch(a){return console.log(`Error refreshing ${b} token:`,a.message),null}}async function p(a,b=null){var c;let d=m[a.provider];if(!d)return{valid:!1,error:"Provider test not supported",refreshed:!1};if(!a.accessToken)return{valid:!1,error:"No access token",refreshed:!1};if(d.tokenExists)return{valid:!0,error:null,refreshed:!1,newTokens:null};let e=a.accessToken,f=!1,g=null,h=!!(c=a).expiresAt&&new Date(c.expiresAt).getTime()<=Date.now()+3e5;if(d.refreshable&&h&&a.refreshToken){let b=await o(a);if(!b)return{valid:!1,error:"Token expired and refresh failed",refreshed:!1};e=b.accessToken,f=!0,g=b}if(d.checkExpiry)return f?{valid:!0,error:null,refreshed:f,newTokens:g}:h?{valid:!1,error:"Token expired",refreshed:!1}:{valid:!0,error:null,refreshed:!1,newTokens:null};if("cline"===a.provider){let b=async a=>{let b=await n(a);return b.ok?{valid:!0,error:null,refreshed:f,newTokens:g}:401===b.status?{valid:!1,error:"Token invalid or revoked",refreshed:f}:403===b.status?{valid:!1,error:"Access denied",refreshed:f}:{valid:!1,error:`API returned ${b.status}`,refreshed:f}},c=await b(e);if(c.valid||"Token invalid or revoked"!==c.error||!a.refreshToken)return c;let d=await o(a);return d?.accessToken?(f=!0,g=d,e=d.accessToken,await b(e)):{valid:!1,error:"Token invalid or revoked",refreshed:!1}}try{let c=d.buildUrl?d.buildUrl(e):d.url,h=d.noAuth?{...d.extraHeaders}:{[d.authHeader]:`${d.authPrefix}${e}`,...d.extraHeaders},i={method:d.method,headers:h};d.body&&(i.body=d.body);let j=await q(c,i,b);if(j.ok||d.acceptStatuses&&d.acceptStatuses.includes(j.status))return{valid:!0,error:null,refreshed:f,newTokens:g};if(401===j.status&&d.refreshable&&!f&&a.refreshToken){let e=await o(a);if(e){let a=d.buildUrl?d.buildUrl(e.accessToken):c,f=d.noAuth?{...d.extraHeaders}:{[d.authHeader]:`${d.authPrefix}${e.accessToken}`,...d.extraHeaders},g={method:d.method,headers:f};d.body&&(g.body=d.body);let h=await q(a,g,b);if(h.ok||d.acceptStatuses&&d.acceptStatuses.includes(h.status))return{valid:!0,error:null,refreshed:!0,newTokens:e}}return{valid:!1,error:"Token invalid or revoked",refreshed:!1}}if(401===j.status)return{valid:!1,error:"Token invalid or revoked",refreshed:f};if(403===j.status)return{valid:!1,error:"Access denied",refreshed:f};return{valid:!1,error:`API returned ${j.status}`,refreshed:f}}catch(a){return{valid:!1,error:a.message,refreshed:f}}}async function q(a,b={},d=null){if(d?.vercelRelayUrl){let{proxyAwareFetch:e}=await c.e(7973).then(c.bind(c,37973));return e(a,b,{vercelRelayUrl:d.vercelRelayUrl})}if(!d?.connectionProxyEnabled||!d?.connectionProxyUrl)return fetch(a,b);let{proxyAwareFetch:e}=await c.e(7973).then(c.bind(c,37973));return e(a,b,{connectionProxyEnabled:!0,connectionProxyUrl:d.connectionProxyUrl,connectionNoProxy:d.connectionNoProxy||""})}async function r(a,b=null){if((0,g.mq)(a.provider)){let c=a.providerSpecificData?.baseUrl;if(!c)return{valid:!1,error:"Missing base URL"};try{let d=await q(`${c.replace(/\/$/,"")}/models`,{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:d.ok,error:d.ok?null:"Invalid API key or base URL"}}catch(a){return{valid:!1,error:a.message}}}if((0,g.gb)(a.provider)){let c=a.providerSpecificData?.baseUrl;if(!c)return{valid:!1,error:"Missing base URL"};try{(c=c.replace(/\/$/,"")).endsWith("/messages")&&(c=c.slice(0,-9));let d=await q(`${c}/models`,{headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01",Authorization:`Bearer ${a.apiKey}`}},b);return{valid:d.ok,error:d.ok?null:"Invalid API key or base URL"}}catch(a){return{valid:!1,error:a.message}}}try{switch(a.provider){case"cloudflare-ai":{let c=(a.providerSpecificData||{}).accountId;if(!c)return{valid:!1,error:"Missing Account ID"};let d=`https://api.cloudflare.com/client/v4/accounts/${c}/ai/v1/chat/completions`,e=await q(d,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify({model:(0,i.fZ)("cloudflare-ai"),messages:[{role:"user",content:"test"}],max_tokens:1})},b),f=401!==e.status&&403!==e.status&&404!==e.status;return{valid:f,error:f?null:"Invalid API token or Account ID"}}case"azure":{let c=a.providerSpecificData||{},d=(c.azureEndpoint||"").replace(/\/$/,""),e=c.deployment||"gpt-4",f=c.apiVersion||"2024-10-01-preview",g=`${d}/openai/deployments/${e}/chat/completions?api-version=${f}`,h={"api-key":a.apiKey,"Content-Type":"application/json"};c.organization&&(h["OpenAI-Organization"]=c.organization);let i=await q(g,{method:"POST",headers:h,body:JSON.stringify({messages:[{role:"user",content:"test"}],max_completion_tokens:1})},b),j=401!==i.status&&403!==i.status;return{valid:j,error:j?null:"Invalid API key or Azure configuration"}}case"openai":{let c=await q("https://api.openai.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"anthropic":{let c=await q("https://api.anthropic.com/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"claude-3-haiku-20240307",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"gemini":{let c=await q(`https://generativelanguage.googleapis.com/v1/models?key=${a.apiKey}`,{},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"openrouter":{let c=await q("https://openrouter.ai/api/v1/auth/key",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"glm":{let c=await q("https://api.z.ai/api/anthropic/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"glm-4.7",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"glm-cn":{let c=await q("https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:"glm-4.7",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"minimax":case"minimax-cn":{let c=await q({minimax:"https://api.minimax.io/anthropic/v1/messages","minimax-cn":"https://api.minimaxi.com/anthropic/v1/messages"}[a.provider],{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"minimax-m2",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"kimi":{let c=await q("https://api.kimi.com/coding/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"kimi-latest",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"alicode":case"alicode-intl":{let c="alicode-intl"===a.provider?"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions":"https://coding.dashscope.aliyuncs.com/v1/chat/completions",d=await q(c,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:(0,i.fZ)(a.provider),max_tokens:1,messages:[{role:"user",content:"test"}]})},b),e=401!==d.status&&403!==d.status;return{valid:e,error:e?null:"Invalid API key"}}case"volcengine-ark":case"byteplus":{let c=await q(h.X3[a.provider],{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:(0,i.fZ)(a.provider),max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"deepseek":{let c=await q("https://api.deepseek.com/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"groq":{let c=await q("https://api.groq.com/openai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"mistral":{let c=await q("https://api.mistral.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"xai":{let c=await q("https://api.x.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nvidia":{let c=await q("https://integrate.api.nvidia.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"perplexity":{let c=await q("https://api.perplexity.ai/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"together":{let c=await q("https://api.together.xyz/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"fireworks":{let c=await q("https://api.fireworks.ai/inference/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"cerebras":{let c=await q("https://api.cerebras.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"cohere":{let c=await q("https://api.cohere.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nebius":{let c=await q("https://api.studio.nebius.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"siliconflow":{let c=await q("https://api.siliconflow.cn/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"hyperbolic":{let c=await q("https://api.hyperbolic.xyz/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"ollama":{let b=await fetch("https://ollama.com/api/tags",{headers:{Authorization:`Bearer ${a.apiKey}`}});return{valid:b.ok,error:b.ok?null:"Invalid API key"}}case"ollama-local":{let b=(0,j.Ak)(a),c=await fetch(`${b}/api/tags`);return{valid:c.ok,error:c.ok?null:`Ollama not reachable at ${b}`}}case"deepgram":{let c=await q("https://api.deepgram.com/v1/projects",{headers:{Authorization:`Token ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"assemblyai":{let c=await q("https://api.assemblyai.com/v1/account",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nanobanana":{let c=await q("https://api.nanobananaapi.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"chutes":{let c=await q("https://llm.chutes.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"grok-web":{let c=a.apiKey.startsWith("sso=")?a.apiKey.slice(4):a.apiKey,d=a=>Array.from(crypto.getRandomValues(new Uint8Array(a)),a=>a.toString(16).padStart(2,"0")).join(""),e=Buffer.from("e:TypeError: Cannot read properties of null (reading 'children')").toString("base64"),f=await q("https://grok.com/rest/app-chat/conversations/new",{method:"POST",headers:{Accept:"*/*","Content-Type":"application/json",Cookie:`sso=${c}`,Origin:"https://grok.com",Referer:"https://grok.com/","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36","x-statsig-id":e,"x-xai-request-id":crypto.randomUUID(),traceparent:`00-${d(16)}-${d(8)}-00`},body:JSON.stringify({temporary:!0,modelName:"grok-4",message:"ping",fileAttachments:[],imageAttachments:[],disableSearch:!1,enableImageGeneration:!1,sendFinalMetadata:!0})},b),g=401!==f.status&&403!==f.status;return{valid:g,error:g?null:"Invalid SSO cookie"}}case"perplexity-web":{let c=a.apiKey;c.startsWith("__Secure-next-auth.session-token=")&&(c=c.slice(33));let d=await q("https://www.perplexity.ai/api/auth/session",{method:"GET",headers:{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36",Cookie:`__Secure-next-auth.session-token=${c}`}},b);if(!d.ok)return{valid:!1,error:"Invalid session cookie"};let e=await d.json().catch(()=>null),f=!!(e&&e.user);return{valid:f,error:f?null:"Session expired — re-paste cookie"}}default:return{valid:!1,error:"Provider test not supported"}}}catch(a){return{valid:!1,error:a.message}}}async function s(a){let b,c=await (0,d.Mc)(a);if(!c)return{valid:!1,error:"Connection not found",latencyMs:0,testedAt:new Date().toISOString()};let g=await (0,e.B)(c.providerSpecificData||{});if(g.connectionProxyEnabled&&g.connectionProxyUrl&&!g.vercelRelayUrl){let b=await (0,f.C)({proxyUrl:g.connectionProxyUrl});if(!b.ok){let c=b.error||`Proxy test failed with status ${b.status}`;return await (0,d.updateProviderConnection)(a,{testStatus:"error",lastError:c,lastErrorAt:new Date().toISOString()}),{valid:!1,error:c,latencyMs:0,testedAt:new Date().toISOString()}}}let h=Date.now();b="apikey"===c.authType||"cookie"===c.authType?await r(c,g):await p(c,g);let i=Date.now()-h,j={testStatus:b.valid?"active":"error",lastError:b.valid?null:b.error,lastErrorAt:b.valid?null:new Date().toISOString()};return b.refreshed&&b.newTokens&&(j.accessToken=b.newTokens.accessToken,b.newTokens.refreshToken&&(j.refreshToken=b.newTokens.refreshToken),b.newTokens.expiresIn&&(j.expiresAt=new Date(Date.now()+1e3*b.newTokens.expiresIn).toISOString())),await (0,d.updateProviderConnection)(a,j),{valid:b.valid,error:b.error,latencyMs:i,testedAt:new Date().toISOString()}}},89442:(a,b,c)=>{c.d(b,{Fh:()=>d.Fh,L9:()=>d.L9,Mc:()=>d.Mc,OM:()=>d.OM,P:()=>d.getProviderConnections,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,createProviderConnection:()=>d.iE,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,o5:()=>d.o5,op:()=>d.op,rj:()=>d.updateProviderConnection,uL:()=>d.uL,ui:()=>d.ui,uv:()=>d.uv});var d=c(37770)},89489:(a,b,c)=>{c.d(b,{UY:()=>h,X3:()=>i,eh:()=>f.eh,fg:()=>e.fg,h0:()=>g});var d=c(39006),e=c(50021),f=c(24709);d.rE;let g={npmPackageName:"9router",installCmd:"npm i -g 9router",exitDelayMs:500,statusPort:20129,statusPollIntervalMs:1e3,statusLogTailLines:8,installRetries:3,installRetryDelayMs:5e3,lingerAfterDoneMs:3e4,waitForExitMinMs:3e3,waitForExitMaxMs:15e3,waitForExitCheckMs:500,appPort:20128},h={maxLines:200,pollIntervalMs:1e3},i={openrouter:"https://openrouter.ai/api/v1/chat/completions",glm:"https://api.z.ai/api/anthropic/v1/messages","glm-cn":"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",kimi:"https://api.kimi.com/coding/v1/messages",minimax:"https://api.minimax.io/anthropic/v1/messages","minimax-cn":"https://api.minimaxi.com/anthropic/v1/messages",alicode:"https://coding.dashscope.aliyuncs.com/v1/chat/completions","alicode-intl":"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions","volcengine-ark":"https://ark.cn-beijing.volces.com/api/coding/v3/chat/completions",byteplus:"https://ark.ap-southeast.bytepluses.com/api/coding/v3/chat/completions",openai:"https://api.openai.com/v1/chat/completions",anthropic:"https://api.anthropic.com/v1/messages",gemini:"https://generativelanguage.googleapis.com/v1beta/models",ollama:"https://ollama.com/api/chat","ollama-local":"http://localhost:11434/api/chat"}},93250:(a,b,c)=>{c.d(b,{B:()=>f});var d=c(89442);function e(a){return null==a?"":String(a).trim()}async function f(a={}){try{let b=e(a?.proxyPoolId),c="__none__"===b?"":b,f=function(a={}){let b=a?.connectionProxyEnabled===!0,c=e(a?.connectionProxyUrl);return{connectionProxyEnabled:b,connectionProxyUrl:c,connectionNoProxy:e(a?.connectionNoProxy)}}(a);if(c){let a=await (0,d.hr)(c),b=e(a?.proxyUrl),f=e(a?.noProxy);if(a&&!0===a.isActive&&b){if("vercel"===a.type)return{source:"vercel",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:f,strictProxy:!0===a.strictProxy,vercelRelayUrl:b};return{source:"pool",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!0,connectionProxyUrl:b,connectionNoProxy:f,strictProxy:!0===a.strictProxy}}}if(f.connectionProxyEnabled&&f.connectionProxyUrl)return{source:"legacy",proxyPoolId:c||null,proxyPool:null,...f};return{source:"none",proxyPoolId:c||null,proxyPool:null,...f}}catch(a){return console.error("[resolveConnectionProxyConfig] Failed to resolve proxy config:",a),{source:"error",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:"",strictProxy:!1}}}},98774:(a,b,c)=>{c.d(b,{w$:()=>e});let d=c(39006).rE||"0.0.0";function e(a,b={}){let c,f=(c=function(a){if("string"!=typeof a)return"";let b=a.trim();return b?b.startsWith("workos:")?b:`workos:${b}`:""}(a))?`Bearer ${c}`:"",g={"HTTP-Referer":"https://cline.bot","X-Title":"Cline","User-Agent":`9Router/${d}`,"X-PLATFORM":process.platform||"unknown","X-PLATFORM-VERSION":process.version||"unknown","X-CLIENT-TYPE":"9router","X-CLIENT-VERSION":d,"X-CORE-VERSION":d,"X-IS-MULTIROOT":"false",...b};return f&&(g.Authorization=f),g}}};
|
|
1
|
+
"use strict";exports.id=6283,exports.ids=[6283],exports.modules={7468:(a,b,c)=>{c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}},24709:(a,b,c)=>{c.d(b,{Xg:()=>d.Xg,eh:()=>e,vq:()=>d.vq});var d=c(29737);Object.entries(c(50021).AI_PROVIDERS).filter(([,a])=>a.passthroughModels).map(([a])=>a);let e=Object.entries(d.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name})))},37770:(a,b,c)=>{c.d(b,{CG:()=>d.CG,Dj:()=>d.Dj,Fh:()=>d.Fh,Iq:()=>d.Iq,K1:()=>d.K1,KJ:()=>d.KJ,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,Mc:()=>d.Mc,OM:()=>d.OM,PX:()=>d.PX,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Uv:()=>d.Uv,VT:()=>d.VT,XW:()=>d.XW,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,bI:()=>d.bI,c:()=>d.c,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,getProviderConnections:()=>d.P,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,jd:()=>d.jd,mt:()=>d.mt,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,r4:()=>d.r4,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,uv:()=>d.uv,yF:()=>d.yF,yg:()=>d.yg,zP:()=>d.zP});var d=c(51412)},37873:(a,b,c)=>{c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length;var h=c(7468);let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return(0,h.k)(k)}},39006:a=>{a.exports={rE:"0.4.28"}},47978:(a,b,c)=>{c.d(b,{DI:()=>e,Hp:()=>g,LT:()=>f,MZ:()=>o,Nl:()=>r,Nu:()=>k,OV:()=>d,Tx:()=>l,WN:()=>m,YT:()=>j,ZL:()=>i,f7:()=>q,hF:()=>h,lB:()=>p,t:()=>n}),c(21820);let d={clientId:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",authorizeUrl:"https://claude.ai/oauth/authorize",tokenUrl:"https://api.anthropic.com/v1/oauth/token",scopes:["org:create_api_key","user:profile","user:inference"],codeChallengeMethod:"S256"},e={clientId:"app_EMoamEEZ73f0CkXaXp7hrann",authorizeUrl:"https://auth.openai.com/oauth/authorize",tokenUrl:"https://auth.openai.com/oauth/token",scope:"openid profile email offline_access",codeChallengeMethod:"S256",extraParams:{id_token_add_organizations:"true",codex_cli_simplified_flow:"true",originator:"codex_cli_rs"}},f={clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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",authorizeUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",userInfoUrl:"https://www.googleapis.com/oauth2/v1/userinfo",scopes:["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile"]},g={clientId:"f0304373b74a44d2b584a3fb70ca9e56",deviceCodeUrl:"https://chat.qwen.ai/api/v1/oauth2/device/code",tokenUrl:"https://chat.qwen.ai/api/v1/oauth2/token",scope:"openid profile email model.completion",codeChallengeMethod:"S256"},h={apiBaseUrl:"https://api2.qoder.sh",deviceTokenUrl:"https://api2.qoder.sh/api/v1/deviceToken/poll",deviceRefreshUrl:"https://api2.qoder.sh/api/v1/deviceToken/refresh",refreshUrl:"https://api2.qoder.sh/api/v3/user/refresh_token",userInfoUrl:"https://api2.qoder.sh/api/v1/userinfo",statusUrl:"https://api2.qoder.sh/api/v3/user/status",loginUrl:"https://qoder.com/login"},i={clientId:"10009311001",clientSecret:"4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",authorizeUrl:"https://iflow.cn/oauth",tokenUrl:"https://iflow.cn/oauth/token",userInfoUrl:"https://iflow.cn/api/oauth/getUserInfo",extraParams:{loginMethod:"phone",type:"phone"}},j={clientId:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecret:"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",authorizeUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",userInfoUrl:"https://www.googleapis.com/oauth2/v1/userinfo",scopes:["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile","https://www.googleapis.com/auth/cclog","https://www.googleapis.com/auth/experimentsandconfigs"],apiEndpoint:"https://cloudcode-pa.googleapis.com",apiVersion:"v1internal",loadCodeAssistEndpoint:"https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",onboardUserEndpoint:"https://cloudcode-pa.googleapis.com/v1internal:onboardUser",loadCodeAssistUserAgent:"google-api-nodejs-client/9.15.1",loadCodeAssistApiClient:"google-cloud-sdk vscode_cloudshelleditor/0.1",loadCodeAssistClientMetadata:JSON.stringify({ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"})},k={clientId:"Iv1.b507a08c87ecfe98",deviceCodeUrl:"https://github.com/login/device/code",tokenUrl:"https://github.com/login/oauth/access_token",userInfoUrl:"https://api.github.com/user",scopes:"read:user",apiVersion:"2022-11-28",copilotTokenUrl:"https://api.github.com/copilot_internal/v2/token",userAgent:"GitHubCopilotChat/0.26.7",editorVersion:"vscode/1.85.0",editorPluginVersion:"copilot-chat/0.26.7"},l={ssoOidcEndpoint:"https://oidc.us-east-1.amazonaws.com",registerClientUrl:"https://oidc.us-east-1.amazonaws.com/client/register",deviceAuthUrl:"https://oidc.us-east-1.amazonaws.com/device_authorization",tokenUrl:"https://oidc.us-east-1.amazonaws.com/token",startUrl:"https://view.awsapps.com/start",clientName:"kiro-oauth-client",clientType:"public",scopes:["codewhisperer:completions","codewhisperer:analysis","codewhisperer:conversations"],grantTypes:["urn:ietf:params:oauth:grant-type:device_code","refresh_token"],issuerUrl:"https://identitycenter.amazonaws.com/ssoins-722374e8c3c8e6c6",socialAuthEndpoint:"https://prod.us-east-1.auth.desktop.kiro.dev",socialLoginUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/login",socialTokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/oauth/token",socialRefreshUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authMethods:["builder-id","idc","google","github","import"]},m={apiEndpoint:"https://api2.cursor.sh",chatEndpoint:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",modelsEndpoint:"/aiserver.v1.AiService/GetDefaultModelNudgeData",api3Endpoint:"https://api3.cursor.sh",agentEndpoint:"https://agent.api5.cursor.sh",agentNonPrivacyEndpoint:"https://agentn.api5.cursor.sh",clientVersion:"3.1.0",clientType:"ide",tokenStoragePaths:{linux:"~/.config/Cursor/User/globalStorage/state.vscdb",macos:"/Users/<user>/Library/Application Support/Cursor/User/globalStorage/state.vscdb",windows:"%APPDATA%\\Cursor\\User\\globalStorage\\state.vscdb"},dbKeys:{accessToken:"cursorAuth/accessToken",machineId:"storage.serviceMachineId"}},n={clientId:process.env.KIMI_CODING_OAUTH_CLIENT_ID||"17e5f671-d194-4dfb-9706-5516cb48c098",deviceCodeUrl:"https://auth.kimi.com/api/oauth/device_authorization",tokenUrl:"https://auth.kimi.com/api/oauth/token"},o={apiBaseUrl:"https://api.kilo.ai",initiateUrl:"https://api.kilo.ai/api/device-auth/codes",pollUrlBase:"https://api.kilo.ai/api/device-auth/codes"},p={appBaseUrl:"https://app.cline.bot",apiBaseUrl:"https://api.cline.bot",authorizeUrl:"https://api.cline.bot/api/v1/auth/authorize",tokenExchangeUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh"},q={defaultBaseUrl:"https://gitlab.com",authorizeUrlPath:"/oauth/authorize",tokenUrlPath:"/oauth/token",userInfoUrlPath:"/api/v4/user",scope:"api read_user",codeChallengeMethod:"S256"},r={baseUrl:"https://copilot.tencent.com",stateUrl:"https://copilot.tencent.com/v2/plugin/auth/state",tokenUrl:"https://copilot.tencent.com/v2/plugin/auth/token",refreshUrl:"https://copilot.tencent.com/v2/plugin/auth/token/refresh",userAgent:"CLI/2.63.2 CodeBuddy/2.63.2",platform:"CLI",pollInterval:5e3}},56066:(a,b,c)=>{c.d(b,{C:()=>f});var d=c(16288);function e(a){return null==a?"":String(a).trim()}async function f({proxyUrl:a,testUrl:b,timeoutMs:c}={}){let g,h=e(a);if(!h)return{ok:!1,status:400,error:"proxyUrl is required"};let i=e(b)||"https://google.com/",j=Number(c),k=Number.isFinite(j)&&j>0?Math.min(j,3e4):8e3;try{try{g=new d.ProxyAgent({uri:h})}catch(a){return{ok:!1,status:400,error:`Invalid proxy URL: ${a?.message||String(a)}`}}let a=new AbortController,b=Date.now(),c=setTimeout(()=>a.abort(),k);try{let c=await (0,d.hd)(i,{method:"HEAD",dispatcher:g,signal:a.signal,headers:{"User-Agent":"9Router"}});return{ok:c.ok,status:c.status,statusText:c.statusText,url:i,elapsedMs:Date.now()-b}}catch(b){let a=b?.name==="AbortError"?"Proxy test timed out":function(a){if(!a)return"Unknown error";let b=a?.message||String(a),c=a?.cause?.code||a?.code,d=a?.cause?.message;return d&&d!==b?c?`${b}: ${d} (${c})`:`${b}: ${d}`:c&&!b.includes(c)?`${b} (${c})`:b}(b);return{ok:!1,status:500,error:a}}finally{clearTimeout(c)}}finally{try{await g?.close?.()}catch{}}}},71679:(a,b,c)=>{c.d(b,{F:()=>s});var d=c(37770),e=c(93250),f=c(56066),g=c(50021),h=c(89489),i=c(29737),j=c(62276),k=c(47978),l=c(98774);let m={claude:{checkExpiry:!0,refreshable:!0},codex:{url:"https://chatgpt.com/backend-api/codex/responses",method:"POST",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{"Content-Type":"application/json",originator:"codex-cli","User-Agent":"codex-cli/1.0.18 (macOS; arm64)"},body:JSON.stringify({model:"gpt-5.3-codex",input:[],stream:!1,store:!1}),acceptStatuses:[400],refreshable:!0},"gemini-cli":{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},antigravity:{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},github:{url:"https://api.github.com/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{"User-Agent":"9Router",Accept:"application/vnd.github+json"}},iflow:{buildUrl:a=>`https://iflow.cn/api/oauth/getUserInfo?accessToken=${encodeURIComponent(a)}`,method:"GET",noAuth:!0},qwen:{checkExpiry:!0,refreshable:!0},kiro:{checkExpiry:!0,refreshable:!0},"kimi-coding":{checkExpiry:!0,refreshable:!1},cursor:{tokenExists:!0},kilocode:{url:`${k.MZ.apiBaseUrl}/api/profile`,method:"GET",authHeader:"Authorization",authPrefix:"Bearer "},cline:{refreshable:!0},gitlab:{url:"https://gitlab.com/api/v4/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer "},codebuddy:{tokenExists:!0}};async function n(a){return await fetch("https://api.cline.bot/api/v1/users/me",{method:"GET",headers:(0,l.w$)(a,{Accept:"application/json"})})}async function o(a){let b=a.provider,c=a.refreshToken;if(!c)return null;try{if("gemini-cli"===b||"antigravity"===b){let a="gemini-cli"===b?k.LT:k.YT,d=await fetch("https://oauth2.googleapis.com/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:a.clientId,client_secret:a.clientSecret,grant_type:"refresh_token",refresh_token:c})});if(!d.ok)return null;let e=await d.json();return{accessToken:e.access_token,expiresIn:e.expires_in,refreshToken:e.refresh_token||c}}if("codex"===b){let a=await fetch(k.DI.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"refresh_token",client_id:k.DI.clientId,refresh_token:c})});if(!a.ok)return null;let b=await a.json();return{accessToken:b.access_token,expiresIn:b.expires_in,refreshToken:b.refresh_token||c}}if("claude"===b){let a=await fetch(k.OV.tokenUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"refresh_token",refresh_token:c,client_id:k.OV.clientId})});if(!a.ok)return null;let b=await a.json();return{accessToken:b.access_token,expiresIn:b.expires_in,refreshToken:b.refresh_token||c}}if("kiro"===b){let b=a.providerSpecificData||{},d=b.clientId||a.clientId,e=b.clientSecret||a.clientSecret,f=b.region||a.region;if(d&&e){let a=`https://oidc.${f||"us-east-1"}.amazonaws.com/token`,b=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:d,clientSecret:e,refreshToken:c,grantType:"refresh_token"})});if(!b.ok)return null;let g=await b.json();return{accessToken:g.accessToken,expiresIn:g.expiresIn||3600,refreshToken:g.refreshToken||c}}let g=await fetch(k.Tx.socialRefreshUrl,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":"kiro-cli/1.0.0"},body:JSON.stringify({refreshToken:c})});if(!g.ok)return null;let h=await g.json();return{accessToken:h.accessToken,expiresIn:h.expiresIn||3600,refreshToken:h.refreshToken||c}}if("qwen"===b){let a=await fetch(k.Hp.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:c,client_id:k.Hp.clientId})});if(!a.ok)return null;let b=await a.json();return{accessToken:b.access_token,expiresIn:b.expires_in,refreshToken:b.refresh_token||c}}if("cline"===b){let a=await fetch(k.lB.refreshUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({refreshToken:c,grantType:"refresh_token",clientType:"extension"})});if(!a.ok)return null;let b=await a.json(),d=b?.data||b,e=d?.expiresAt?Math.max(1,Math.floor((new Date(d.expiresAt).getTime()-Date.now())/1e3)):3600;return{accessToken:d?.accessToken,expiresIn:e,refreshToken:d?.refreshToken||c}}return null}catch(a){return console.log(`Error refreshing ${b} token:`,a.message),null}}async function p(a,b=null){var c;let d=m[a.provider];if(!d)return{valid:!1,error:"Provider test not supported",refreshed:!1};if(!a.accessToken)return{valid:!1,error:"No access token",refreshed:!1};if(d.tokenExists)return{valid:!0,error:null,refreshed:!1,newTokens:null};let e=a.accessToken,f=!1,g=null,h=!!(c=a).expiresAt&&new Date(c.expiresAt).getTime()<=Date.now()+3e5;if(d.refreshable&&h&&a.refreshToken){let b=await o(a);if(!b)return{valid:!1,error:"Token expired and refresh failed",refreshed:!1};e=b.accessToken,f=!0,g=b}if(d.checkExpiry)return f?{valid:!0,error:null,refreshed:f,newTokens:g}:h?{valid:!1,error:"Token expired",refreshed:!1}:{valid:!0,error:null,refreshed:!1,newTokens:null};if("cline"===a.provider){let b=async a=>{let b=await n(a);return b.ok?{valid:!0,error:null,refreshed:f,newTokens:g}:401===b.status?{valid:!1,error:"Token invalid or revoked",refreshed:f}:403===b.status?{valid:!1,error:"Access denied",refreshed:f}:{valid:!1,error:`API returned ${b.status}`,refreshed:f}},c=await b(e);if(c.valid||"Token invalid or revoked"!==c.error||!a.refreshToken)return c;let d=await o(a);return d?.accessToken?(f=!0,g=d,e=d.accessToken,await b(e)):{valid:!1,error:"Token invalid or revoked",refreshed:!1}}try{let c=d.buildUrl?d.buildUrl(e):d.url,h=d.noAuth?{...d.extraHeaders}:{[d.authHeader]:`${d.authPrefix}${e}`,...d.extraHeaders},i={method:d.method,headers:h};d.body&&(i.body=d.body);let j=await q(c,i,b);if(j.ok||d.acceptStatuses&&d.acceptStatuses.includes(j.status))return{valid:!0,error:null,refreshed:f,newTokens:g};if(401===j.status&&d.refreshable&&!f&&a.refreshToken){let e=await o(a);if(e){let a=d.buildUrl?d.buildUrl(e.accessToken):c,f=d.noAuth?{...d.extraHeaders}:{[d.authHeader]:`${d.authPrefix}${e.accessToken}`,...d.extraHeaders},g={method:d.method,headers:f};d.body&&(g.body=d.body);let h=await q(a,g,b);if(h.ok||d.acceptStatuses&&d.acceptStatuses.includes(h.status))return{valid:!0,error:null,refreshed:!0,newTokens:e}}return{valid:!1,error:"Token invalid or revoked",refreshed:!1}}if(401===j.status)return{valid:!1,error:"Token invalid or revoked",refreshed:f};if(403===j.status)return{valid:!1,error:"Access denied",refreshed:f};return{valid:!1,error:`API returned ${j.status}`,refreshed:f}}catch(a){return{valid:!1,error:a.message,refreshed:f}}}async function q(a,b={},d=null){if(d?.vercelRelayUrl){let{proxyAwareFetch:e}=await c.e(7973).then(c.bind(c,37973));return e(a,b,{vercelRelayUrl:d.vercelRelayUrl})}if(!d?.connectionProxyEnabled||!d?.connectionProxyUrl)return fetch(a,b);let{proxyAwareFetch:e}=await c.e(7973).then(c.bind(c,37973));return e(a,b,{connectionProxyEnabled:!0,connectionProxyUrl:d.connectionProxyUrl,connectionNoProxy:d.connectionNoProxy||""})}async function r(a,b=null){if((0,g.mq)(a.provider)){let c=a.providerSpecificData?.baseUrl;if(!c)return{valid:!1,error:"Missing base URL"};try{let d=await q(`${c.replace(/\/$/,"")}/models`,{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:d.ok,error:d.ok?null:"Invalid API key or base URL"}}catch(a){return{valid:!1,error:a.message}}}if((0,g.gb)(a.provider)){let c=a.providerSpecificData?.baseUrl;if(!c)return{valid:!1,error:"Missing base URL"};try{(c=c.replace(/\/$/,"")).endsWith("/messages")&&(c=c.slice(0,-9));let d=await q(`${c}/models`,{headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01",Authorization:`Bearer ${a.apiKey}`}},b);return{valid:d.ok,error:d.ok?null:"Invalid API key or base URL"}}catch(a){return{valid:!1,error:a.message}}}try{switch(a.provider){case"cloudflare-ai":{let c=(a.providerSpecificData||{}).accountId;if(!c)return{valid:!1,error:"Missing Account ID"};let d=`https://api.cloudflare.com/client/v4/accounts/${c}/ai/v1/chat/completions`,e=await q(d,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify({model:(0,i.fZ)("cloudflare-ai"),messages:[{role:"user",content:"test"}],max_tokens:1})},b),f=401!==e.status&&403!==e.status&&404!==e.status;return{valid:f,error:f?null:"Invalid API token or Account ID"}}case"azure":{let c=a.providerSpecificData||{},d=(c.azureEndpoint||"").replace(/\/$/,""),e=c.deployment||"gpt-4",f=c.apiVersion||"2024-10-01-preview",g=`${d}/openai/deployments/${e}/chat/completions?api-version=${f}`,h={"api-key":a.apiKey,"Content-Type":"application/json"};c.organization&&(h["OpenAI-Organization"]=c.organization);let i=await q(g,{method:"POST",headers:h,body:JSON.stringify({messages:[{role:"user",content:"test"}],max_completion_tokens:1})},b),j=401!==i.status&&403!==i.status;return{valid:j,error:j?null:"Invalid API key or Azure configuration"}}case"openai":{let c=await q("https://api.openai.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"anthropic":{let c=await q("https://api.anthropic.com/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"claude-3-haiku-20240307",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"gemini":{let c=await q(`https://generativelanguage.googleapis.com/v1/models?key=${a.apiKey}`,{},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"openrouter":{let c=await q("https://openrouter.ai/api/v1/auth/key",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"glm":{let c=await q("https://api.z.ai/api/anthropic/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"glm-4.7",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"glm-cn":{let c=await q("https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:"glm-4.7",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"minimax":case"minimax-cn":{let c=await q({minimax:"https://api.minimax.io/anthropic/v1/messages","minimax-cn":"https://api.minimaxi.com/anthropic/v1/messages"}[a.provider],{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"minimax-m2",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"kimi":{let c=await q("https://api.kimi.com/coding/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"kimi-latest",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"alicode":case"alicode-intl":{let c="alicode-intl"===a.provider?"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions":"https://coding.dashscope.aliyuncs.com/v1/chat/completions",d=await q(c,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:(0,i.fZ)(a.provider),max_tokens:1,messages:[{role:"user",content:"test"}]})},b),e=401!==d.status&&403!==d.status;return{valid:e,error:e?null:"Invalid API key"}}case"volcengine-ark":case"byteplus":{let c=await q(h.X3[a.provider],{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:(0,i.fZ)(a.provider),max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"deepseek":{let c=await q("https://api.deepseek.com/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"groq":{let c=await q("https://api.groq.com/openai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"mistral":{let c=await q("https://api.mistral.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"xai":{let c=await q("https://api.x.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nvidia":{let c=await q("https://integrate.api.nvidia.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"perplexity":{let c=await q("https://api.perplexity.ai/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"together":{let c=await q("https://api.together.xyz/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"fireworks":{let c=await q("https://api.fireworks.ai/inference/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"cerebras":{let c=await q("https://api.cerebras.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"cohere":{let c=await q("https://api.cohere.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nebius":{let c=await q("https://api.studio.nebius.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"siliconflow":{let c=await q("https://api.siliconflow.cn/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"hyperbolic":{let c=await q("https://api.hyperbolic.xyz/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"ollama":{let b=await fetch("https://ollama.com/api/tags",{headers:{Authorization:`Bearer ${a.apiKey}`}});return{valid:b.ok,error:b.ok?null:"Invalid API key"}}case"ollama-local":{let b=(0,j.Ak)(a),c=await fetch(`${b}/api/tags`);return{valid:c.ok,error:c.ok?null:`Ollama not reachable at ${b}`}}case"deepgram":{let c=await q("https://api.deepgram.com/v1/projects",{headers:{Authorization:`Token ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"assemblyai":{let c=await q("https://api.assemblyai.com/v1/account",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nanobanana":{let c=await q("https://api.nanobananaapi.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"chutes":{let c=await q("https://llm.chutes.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"grok-web":{let c=a.apiKey.startsWith("sso=")?a.apiKey.slice(4):a.apiKey,d=a=>Array.from(crypto.getRandomValues(new Uint8Array(a)),a=>a.toString(16).padStart(2,"0")).join(""),e=Buffer.from("e:TypeError: Cannot read properties of null (reading 'children')").toString("base64"),f=await q("https://grok.com/rest/app-chat/conversations/new",{method:"POST",headers:{Accept:"*/*","Content-Type":"application/json",Cookie:`sso=${c}`,Origin:"https://grok.com",Referer:"https://grok.com/","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36","x-statsig-id":e,"x-xai-request-id":crypto.randomUUID(),traceparent:`00-${d(16)}-${d(8)}-00`},body:JSON.stringify({temporary:!0,modelName:"grok-4",message:"ping",fileAttachments:[],imageAttachments:[],disableSearch:!1,enableImageGeneration:!1,sendFinalMetadata:!0})},b),g=401!==f.status&&403!==f.status;return{valid:g,error:g?null:"Invalid SSO cookie"}}case"perplexity-web":{let c=a.apiKey;c.startsWith("__Secure-next-auth.session-token=")&&(c=c.slice(33));let d=await q("https://www.perplexity.ai/api/auth/session",{method:"GET",headers:{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36",Cookie:`__Secure-next-auth.session-token=${c}`}},b);if(!d.ok)return{valid:!1,error:"Invalid session cookie"};let e=await d.json().catch(()=>null),f=!!(e&&e.user);return{valid:f,error:f?null:"Session expired — re-paste cookie"}}default:return{valid:!1,error:"Provider test not supported"}}}catch(a){return{valid:!1,error:a.message}}}async function s(a){let b,c=await (0,d.Mc)(a);if(!c)return{valid:!1,error:"Connection not found",latencyMs:0,testedAt:new Date().toISOString()};let g=await (0,e.B)(c.providerSpecificData||{});if(g.connectionProxyEnabled&&g.connectionProxyUrl&&!g.vercelRelayUrl){let b=await (0,f.C)({proxyUrl:g.connectionProxyUrl});if(!b.ok){let c=b.error||`Proxy test failed with status ${b.status}`;return await (0,d.updateProviderConnection)(a,{testStatus:"error",lastError:c,lastErrorAt:new Date().toISOString()}),{valid:!1,error:c,latencyMs:0,testedAt:new Date().toISOString()}}}let h=Date.now();b="apikey"===c.authType||"cookie"===c.authType?await r(c,g):await p(c,g);let i=Date.now()-h,j={testStatus:b.valid?"active":"error",lastError:b.valid?null:b.error,lastErrorAt:b.valid?null:new Date().toISOString()};return b.refreshed&&b.newTokens&&(j.accessToken=b.newTokens.accessToken,b.newTokens.refreshToken&&(j.refreshToken=b.newTokens.refreshToken),b.newTokens.expiresIn&&(j.expiresAt=new Date(Date.now()+1e3*b.newTokens.expiresIn).toISOString())),await (0,d.updateProviderConnection)(a,j),{valid:b.valid,error:b.error,latencyMs:i,testedAt:new Date().toISOString()}}},89442:(a,b,c)=>{c.d(b,{Fh:()=>d.Fh,L9:()=>d.L9,Mc:()=>d.Mc,OM:()=>d.OM,P:()=>d.getProviderConnections,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,createProviderConnection:()=>d.iE,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,o5:()=>d.o5,op:()=>d.op,rj:()=>d.updateProviderConnection,uL:()=>d.uL,ui:()=>d.ui,uv:()=>d.uv});var d=c(37770)},89489:(a,b,c)=>{c.d(b,{UY:()=>h,X3:()=>i,eh:()=>f.eh,fg:()=>e.fg,h0:()=>g});var d=c(39006),e=c(50021),f=c(24709);d.rE;let g={npmPackageName:"9router",installCmd:"npm i -g 9router",installCmdLatest:"npm i -g 9router@latest --prefer-online",shutdownCountdownSec:3,exitDelayMs:500,statusPort:20129,statusPollIntervalMs:1e3,statusLogTailLines:8,installRetries:3,installRetryDelayMs:5e3,lingerAfterDoneMs:3e4,waitForExitMinMs:5e3,waitForExitMaxMs:2e4,waitForExitCheckMs:500,appPort:20128},h={maxLines:200,pollIntervalMs:1e3},i={openrouter:"https://openrouter.ai/api/v1/chat/completions",glm:"https://api.z.ai/api/anthropic/v1/messages","glm-cn":"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",kimi:"https://api.kimi.com/coding/v1/messages",minimax:"https://api.minimax.io/anthropic/v1/messages","minimax-cn":"https://api.minimaxi.com/anthropic/v1/messages",alicode:"https://coding.dashscope.aliyuncs.com/v1/chat/completions","alicode-intl":"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions","volcengine-ark":"https://ark.cn-beijing.volces.com/api/coding/v3/chat/completions",byteplus:"https://ark.ap-southeast.bytepluses.com/api/coding/v3/chat/completions",openai:"https://api.openai.com/v1/chat/completions",anthropic:"https://api.anthropic.com/v1/messages",gemini:"https://generativelanguage.googleapis.com/v1beta/models",ollama:"https://ollama.com/api/chat","ollama-local":"http://localhost:11434/api/chat"}},93250:(a,b,c)=>{c.d(b,{B:()=>f});var d=c(89442);function e(a){return null==a?"":String(a).trim()}async function f(a={}){try{let b=e(a?.proxyPoolId),c="__none__"===b?"":b,f=function(a={}){let b=a?.connectionProxyEnabled===!0,c=e(a?.connectionProxyUrl);return{connectionProxyEnabled:b,connectionProxyUrl:c,connectionNoProxy:e(a?.connectionNoProxy)}}(a);if(c){let a=await (0,d.hr)(c),b=e(a?.proxyUrl),f=e(a?.noProxy);if(a&&!0===a.isActive&&b){if("vercel"===a.type)return{source:"vercel",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:f,strictProxy:!0===a.strictProxy,vercelRelayUrl:b};return{source:"pool",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!0,connectionProxyUrl:b,connectionNoProxy:f,strictProxy:!0===a.strictProxy}}}if(f.connectionProxyEnabled&&f.connectionProxyUrl)return{source:"legacy",proxyPoolId:c||null,proxyPool:null,...f};return{source:"none",proxyPoolId:c||null,proxyPool:null,...f}}catch(a){return console.error("[resolveConnectionProxyConfig] Failed to resolve proxy config:",a),{source:"error",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:"",strictProxy:!1}}}},98774:(a,b,c)=>{c.d(b,{w$:()=>e});let d=c(39006).rE||"0.0.0";function e(a,b={}){let c,f=(c=function(a){if("string"!=typeof a)return"";let b=a.trim();return b?b.startsWith("workos:")?b:`workos:${b}`:""}(a))?`Bearer ${c}`:"",g={"HTTP-Referer":"https://cline.bot","X-Title":"Cline","User-Agent":`9Router/${d}`,"X-PLATFORM":process.platform||"unknown","X-PLATFORM-VERSION":process.version||"unknown","X-CLIENT-TYPE":"9router","X-CLIENT-VERSION":d,"X-CORE-VERSION":d,"X-IS-MULTIROOT":"false",...b};return f&&(g.Authorization=f),g}}};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
exports.id=6502,exports.ids=[6502],exports.modules={24730:(a,b,c)=>{
|
|
1
|
+
"use strict";exports.id=6502,exports.ids=[6502],exports.modules={24730:(a,b,c)=>{c.d(b,{CG:()=>e,oG:()=>d,zE:()=>f});let d=`
|
|
2
2
|
PRAGMA journal_mode = WAL;
|
|
3
3
|
PRAGMA synchronous = NORMAL;
|
|
4
4
|
PRAGMA temp_store = MEMORY;
|
|
@@ -6,4 +6,4 @@ PRAGMA mmap_size = 30000000;
|
|
|
6
6
|
PRAGMA cache_size = -64000;
|
|
7
7
|
PRAGMA foreign_keys = ON;
|
|
8
8
|
PRAGMA busy_timeout = 5000;
|
|
9
|
-
`,e={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",createdAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)"]},combos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_combo_name ON combos(name)"]},kv:{columns:{scope:"TEXT NOT NULL",key:"TEXT NOT NULL",value:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (scope, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_kv_scope ON kv(scope)"]},usageHistory:{columns:{id:"INTEGER PRIMARY KEY AUTOINCREMENT",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",apiKey:"TEXT",endpoint:"TEXT",promptTokens:"INTEGER DEFAULT 0",completionTokens:"INTEGER DEFAULT 0",cost:"REAL DEFAULT 0",status:"TEXT",tokens:"TEXT",meta:"TEXT"},indexes:["CREATE INDEX IF NOT EXISTS idx_uh_ts ON usageHistory(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_provider ON usageHistory(provider)","CREATE INDEX IF NOT EXISTS idx_uh_model ON usageHistory(model)","CREATE INDEX IF NOT EXISTS idx_uh_conn ON usageHistory(connectionId)"]},usageDaily:{columns:{dateKey:"TEXT PRIMARY KEY",data:"TEXT NOT NULL"}},requestDetails:{columns:{id:"TEXT PRIMARY KEY",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",status:"TEXT",data:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_rd_ts ON requestDetails(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_rd_provider ON requestDetails(provider)","CREATE INDEX IF NOT EXISTS idx_rd_model ON requestDetails(model)","CREATE INDEX IF NOT EXISTS idx_rd_conn ON requestDetails(connectionId)"]}};function f(a,b){let c=Object.entries(b.columns).map(([a,b])=>`${a} ${b}`);return b.primaryKey&&c.push(b.primaryKey),`CREATE TABLE IF NOT EXISTS ${a} (${c.join(", ")})`}},86502:(a,b,c)=>{"use strict";c.d(b,{createSqlJsAdapter:()=>k});var d=c(73024),e=c.n(d),f=c(97472),g=c.n(f),h=c(24730);let i=null;async function j(){return i||(i=await g()())}async function k(a){let b=await j(),c=e().existsSync(a)?e().readFileSync(a):null,d=new b.Database(c);d.exec(h.oG);let f=!1,g=null;function i(){let b=d.export();e().writeFileSync(a,Buffer.from(b)),f=!1}function k(){f=!0,g&&clearTimeout(g),g=setTimeout(()=>{if(g=null,f)try{i()}catch(a){console.error("[sqljs] save failed:",a)}},100)}function l(a){if(!(!a||Array.isArray(a)&&0===a.length))return a}let m=()=>{if(f)try{i()}catch{}};return process.on("beforeExit",m),process.on("SIGINT",m),process.on("SIGTERM",m),{driver:"sql.js",run:function(a,b=[]){let c=d.prepare(a);try{c.bind(l(b)),c.step();let a=d.getRowsModified(),e=d.exec("SELECT last_insert_rowid() as id")[0]?.values?.[0]?.[0]??null;return k(),{changes:a,lastInsertRowid:e}}finally{c.free()}},get:function(a,b=[]){let c=d.prepare(a);try{if(c.bind(l(b)),c.step())return c.getAsObject();return}finally{c.free()}},all:function(a,b=[]){let c=d.prepare(a);try{c.bind(l(b));let a=[];for(;c.step();)a.push(c.getAsObject());return a}finally{c.free()}},exec:function(a){d.exec(a),k()},transaction:function(a){d.exec("BEGIN");try{let b=a();return d.exec("COMMIT"),k(),b}catch(a){throw d.exec("ROLLBACK"),a}},close:function(){g&&clearTimeout(g),f&&i(),d.close()},raw:d}}},97472:(a,b,c)=>{a=c.nmd(a);var d=void 0,e=function(b){return d||(d=new Promise(function(d,e){var f,g=void 0!==b?b:{},h=g.onAbort;g.onAbort=function(a){e(Error(a)),h&&h(a)},g.postRun=g.postRun||[],g.postRun.push(function(){d(g)}),a=void 0,o||=void 0!==g?g:{};var i=!!globalThis.window,j=!!globalThis.WorkerGlobalScope,k=globalThis.process?.versions?.node&&"renderer"!=globalThis.process?.type;o.onRuntimeInitialized=function(){function a(a,b){switch(typeof b){case"boolean":U(a,+!!b);break;case"number":P(a,b);break;case"string":R(a,b,-1,-1);break;case"object":if(null===b)Q(a);else if(null!=b.length){var c=bq(b.length);v.set(b,c),S(a,c,b.length,-1),br(c)}else W(a,"Wrong API use : tried to return a value of an unknown type ("+b+").",-1);break;default:Q(a)}}function b(a,b){for(var c=[],d=0;d<a;d+=1){var e=T(b+4*d,"i32"),f=K(e);if(1===f||2===f)e=O(e);else if(3===f)e=M(e);else if(4===f){e=L(f=e),f=N(f);for(var g=new Uint8Array(e),h=0;h<e;h+=1)g[h]=v[f+h];e=g}else e=null;c.push(e)}return c}function c(a,b){this.Qa=a,this.db=b,this.Oa=1,this.mb=[]}function d(a,b){if(this.db=b,this.fb=bf(a),null===this.fb)throw Error("Unable to allocate memory for the SQL string");this.lb=this.fb,this.$a=this.sb=null}function e(a){if(this.filename="dbfile_"+(0xffffffff*Math.random()>>>0),null!=a){var b=this.filename,c="/",d=b;if(c&&(c="string"==typeof c?c:aw(c),d=b?$(c+"/"+b):c),d=function(a,b=438){return aM(a,4095&b|32768,0)}(d,b=ak(!0,!0)),a){if("string"==typeof a){c=Array(a.length);for(var e=0,g=a.length;e<g;++e)c[e]=a.charCodeAt(e);a=c}aU(d,146|b),a$(c=aW(d,577),a,0,a.length,0),aX(c),aU(d,b)}}this.handleError(h(this.filename,f)),this.db=T(f,"i32"),Z(this.db),this.gb={},this.Sa={}}var f=bv(4),g=o.cwrap,h=g("sqlite3_open","number",["string","number"]),i=g("sqlite3_close_v2","number",["number"]),j=g("sqlite3_exec","number",["number","string","number","number","number"]),k=g("sqlite3_changes","number",["number"]),l=g("sqlite3_prepare_v2","number",["number","string","number","number","number"]),m=g("sqlite3_sql","string",["number"]),n=g("sqlite3_normalized_sql","string",["number"]),p=g("sqlite3_prepare_v2","number",["number","number","number","number","number"]),q=g("sqlite3_bind_text","number",["number","number","number","number","number"]),r=g("sqlite3_bind_blob","number",["number","number","number","number","number"]),s=g("sqlite3_bind_double","number",["number","number","number"]),t=g("sqlite3_bind_int","number",["number","number","number"]),u=g("sqlite3_bind_parameter_index","number",["number","string"]),w=g("sqlite3_step","number",["number"]),x=g("sqlite3_errmsg","string",["number"]),y=g("sqlite3_column_count","number",["number"]),z=g("sqlite3_data_count","number",["number"]),A=g("sqlite3_column_double","number",["number","number"]),B=g("sqlite3_column_text","string",["number","number"]),C=g("sqlite3_column_blob","number",["number","number"]),D=g("sqlite3_column_bytes","number",["number","number"]),E=g("sqlite3_column_type","number",["number","number"]),F=g("sqlite3_column_name","string",["number","number"]),G=g("sqlite3_reset","number",["number"]),H=g("sqlite3_clear_bindings","number",["number"]),I=g("sqlite3_finalize","number",["number"]),J=g("sqlite3_create_function_v2","number","number string number number number number number number number".split(" ")),K=g("sqlite3_value_type","number",["number"]),L=g("sqlite3_value_bytes","number",["number"]),M=g("sqlite3_value_text","string",["number"]),N=g("sqlite3_value_blob","number",["number"]),O=g("sqlite3_value_double","number",["number"]),P=g("sqlite3_result_double","",["number","number"]),Q=g("sqlite3_result_null","",["number"]),R=g("sqlite3_result_text","",["number","string","number","number"]),S=g("sqlite3_result_blob","",["number","number","number","number"]),U=g("sqlite3_result_int","",["number","number"]),W=g("sqlite3_result_error","",["number","string","number"]),X=g("sqlite3_aggregate_context","number",["number","number"]),Z=g("RegisterExtensionFunctions","number",["number"]),_=g("sqlite3_update_hook","number",["number","number","number"]);c.prototype.bind=function(a){if(!this.Qa)throw"Statement closed";return this.reset(),Array.isArray(a)?this.Gb(a):null==a||"object"!=typeof a||this.Hb(a)},c.prototype.step=function(){if(!this.Qa)throw"Statement closed";this.Oa=1;var a=w(this.Qa);switch(a){case 100:return!0;case 101:return!1;default:throw this.db.handleError(a)}},c.prototype.Ab=function(a){return null==a&&(a=this.Oa,this.Oa+=1),A(this.Qa,a)},c.prototype.Ob=function(a){if(null==a&&(a=this.Oa,this.Oa+=1),a=B(this.Qa,a),"function"!=typeof BigInt)throw Error("BigInt is not supported");return BigInt(a)},c.prototype.Tb=function(a){return null==a&&(a=this.Oa,this.Oa+=1),B(this.Qa,a)},c.prototype.getBlob=function(a){null==a&&(a=this.Oa,this.Oa+=1);var b=D(this.Qa,a);a=C(this.Qa,a);for(var c=new Uint8Array(b),d=0;d<b;d+=1)c[d]=v[a+d];return c},c.prototype.get=function(a,b){b=b||{},null!=a&&this.bind(a)&&this.step(),a=[];for(var c=z(this.Qa),d=0;d<c;d+=1)switch(E(this.Qa,d)){case 1:var e=b.useBigInt?this.Ob(d):this.Ab(d);a.push(e);break;case 2:a.push(this.Ab(d));break;case 3:a.push(this.Tb(d));break;case 4:a.push(this.getBlob(d));break;default:a.push(null)}return a},c.prototype.qb=function(){for(var a=[],b=y(this.Qa),c=0;c<b;c+=1)a.push(F(this.Qa,c));return a},c.prototype.zb=function(a,b){a=this.get(a,b),b=this.qb();for(var c={},d=0;d<b.length;d+=1)c[b[d]]=a[d];return c},c.prototype.Sb=function(){return m(this.Qa)},c.prototype.Pb=function(){return n(this.Qa)},c.prototype.run=function(a){return null!=a&&this.bind(a),this.step(),this.reset()},c.prototype.wb=function(a,b){null==b&&(b=this.Oa,this.Oa+=1),a=bf(a),this.mb.push(a),this.db.handleError(q(this.Qa,b,a,-1,0))},c.prototype.Fb=function(a,b){null==b&&(b=this.Oa,this.Oa+=1);var c=bq(a.length);v.set(a,c),this.mb.push(c),this.db.handleError(r(this.Qa,b,c,a.length,0))},c.prototype.vb=function(a,b){null==b&&(b=this.Oa,this.Oa+=1),this.db.handleError((a===(0|a)?t:s)(this.Qa,b,a))},c.prototype.Ib=function(a){null==a&&(a=this.Oa,this.Oa+=1),r(this.Qa,a,0,0,0)},c.prototype.xb=function(a,b){switch(null==b&&(b=this.Oa,this.Oa+=1),typeof a){case"string":this.wb(a,b);return;case"number":this.vb(a,b);return;case"bigint":this.wb(a.toString(),b);return;case"boolean":this.vb(a+0,b);return;case"object":if(null===a)return void this.Ib(b);if(null!=a.length)return void this.Fb(a,b)}throw"Wrong API use : tried to bind a value of an unknown type ("+a+")."},c.prototype.Hb=function(a){var b=this;return Object.keys(a).forEach(function(c){var d=u(b.Qa,c);0!==d&&b.xb(a[c],d)}),!0},c.prototype.Gb=function(a){for(var b=0;b<a.length;b+=1)this.xb(a[b],b+1);return!0},c.prototype.reset=function(){return this.freemem(),0===H(this.Qa)&&0===G(this.Qa)},c.prototype.freemem=function(){for(var a;void 0!==(a=this.mb.pop());)br(a)},c.prototype.Ya=function(){this.freemem();var a=0===I(this.Qa);return delete this.db.gb[this.Qa],this.Qa=0,a},d.prototype.next=function(){if(null===this.fb)return{done:!0};if(null!==this.$a&&(this.$a.Ya(),this.$a=null),!this.db.db)throw this.ob(),Error("Database closed");var a=bw(),b=bv(4);V(f),V(b);try{this.db.handleError(p(this.db.db,this.lb,-1,f,b)),this.lb=T(b,"i32");var d=T(f,"i32");if(0===d)return this.ob(),{done:!0};return this.$a=new c(d,this.db),this.db.gb[d]=this.$a,{value:this.$a,done:!1}}catch(a){throw this.sb=Y(this.lb),this.ob(),a}finally{bu(a)}},d.prototype.ob=function(){br(this.fb),this.fb=null},d.prototype.Qb=function(){return null!==this.sb?this.sb:Y(this.lb)},"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator&&(d.prototype[Symbol.iterator]=function(){return this}),e.prototype.run=function(a,b){if(!this.db)throw"Database closed";if(b){a=this.tb(a,b);try{a.step()}finally{a.Ya()}}else this.handleError(j(this.db,a,0,0,f));return this},e.prototype.exec=function(a,b,d){if(!this.db)throw"Database closed";var e=null,g=null,h=null;try{h=g=bf(a);var i=bv(4);for(a=[];0!==T(h,"i8");){V(f),V(i),this.handleError(p(this.db,h,-1,f,i));var j=T(f,"i32");if(h=T(i,"i32"),0!==j){var k=null;for(e=new c(j,this),null!=b&&e.bind(b);e.step();)null===k&&(k={columns:e.qb(),values:[]},a.push(k)),k.values.push(e.get(null,d));e.Ya()}}return a}catch(a){throw e&&e.Ya(),a}finally{g&&br(g)}},e.prototype.Mb=function(a,b,c,d,e){"function"==typeof b&&(d=c,c=b,b=void 0),a=this.tb(a,b);try{for(;a.step();)c(a.zb(null,e))}finally{a.Ya()}if("function"==typeof d)return d()},e.prototype.tb=function(a,b){if(V(f),this.handleError(l(this.db,a,-1,f,0)),0===(a=T(f,"i32")))throw"Nothing to prepare";var d=new c(a,this);return null!=b&&d.bind(b),this.gb[a]=d},e.prototype.Ub=function(a){return new d(a,this)},e.prototype.Nb=function(){Object.values(this.gb).forEach(function(a){a.Ya()}),Object.values(this.Sa).forEach(bh),this.Sa={},this.handleError(i(this.db));var a,b,c,d=(a=this.filename,b=aW(a,b=b||0),aZ(b,c=new Uint8Array(a=aS(a).size),0,a,0),aX(b),c);return this.handleError(h(this.filename,f)),this.db=T(f,"i32"),Z(this.db),d},e.prototype.close=function(){null!==this.db&&(Object.values(this.gb).forEach(function(a){a.Ya()}),Object.values(this.Sa).forEach(bh),this.Sa={},this.Za&&(bh(this.Za),this.Za=void 0),this.handleError(i(this.db)),aR("/"+this.filename),this.db=null)},e.prototype.handleError=function(a){if(0===a)return null;throw Error(a=x(this.db))},e.prototype.Rb=function(){return k(this.db)},e.prototype.Kb=function(c,d){Object.prototype.hasOwnProperty.call(this.Sa,c)&&(bh(this.Sa[c]),delete this.Sa[c]);var e=bl(function(c,e,f){e=b(e,f);try{var g=d.apply(null,e)}catch(a){W(c,a,-1);return}a(c,g)},"viii");return this.Sa[c]=e,this.handleError(J(this.db,c,d.length,1,0,e,0,0,0)),this},e.prototype.Jb=function(c,d){var e=d.init||function(){return null},f=d.finalize||function(a){return a},g=d.step;if(!g)throw"An aggregate function must have a step function in "+c;var h={};Object.hasOwnProperty.call(this.Sa,c)&&(bh(this.Sa[c]),delete this.Sa[c]),d=c+"__finalize",Object.hasOwnProperty.call(this.Sa,d)&&(bh(this.Sa[d]),delete this.Sa[d]);var i=bl(function(a,c,d){var f=X(a,1);Object.hasOwnProperty.call(h,f)||(h[f]=e()),c=b(c,d),c=[h[f]].concat(c);try{h[f]=g.apply(null,c)}catch(b){delete h[f],W(a,b,-1)}},"viii"),j=bl(function(b){var c=X(b,1);try{var d=f(h[c])}catch(a){delete h[c],W(b,a,-1);return}a(b,d),delete h[c]},"vi");return this.Sa[c]=i,this.Sa[d]=j,this.handleError(J(this.db,c,g.length-1,1,0,0,i,j,0)),this},e.prototype.Zb=function(a){return this.Za&&(_(this.db,0,0),bh(this.Za),this.Za=void 0),a&&(this.Za=bl(function(b,c,d,e,f){switch(c){case 18:b="insert";break;case 23:b="update";break;case 9:b="delete";break;default:throw"unknown operationCode in updateHook callback: "+c}if(d=Y(d),e=Y(e),f>Number.MAX_SAFE_INTEGER)throw"rowId too big to fit inside a Number";a(b,d,e,Number(f))},"viiiij"),_(this.db,this.Za,0)),this},c.prototype.bind=c.prototype.bind,c.prototype.step=c.prototype.step,c.prototype.get=c.prototype.get,c.prototype.getColumnNames=c.prototype.qb,c.prototype.getAsObject=c.prototype.zb,c.prototype.getSQL=c.prototype.Sb,c.prototype.getNormalizedSQL=c.prototype.Pb,c.prototype.run=c.prototype.run,c.prototype.reset=c.prototype.reset,c.prototype.freemem=c.prototype.freemem,c.prototype.free=c.prototype.Ya,d.prototype.next=d.prototype.next,d.prototype.getRemainingSQL=d.prototype.Qb,e.prototype.run=e.prototype.run,e.prototype.exec=e.prototype.exec,e.prototype.each=e.prototype.Mb,e.prototype.prepare=e.prototype.tb,e.prototype.iterateStatements=e.prototype.Ub,e.prototype.export=e.prototype.Nb,e.prototype.close=e.prototype.close,e.prototype.handleError=e.prototype.handleError,e.prototype.getRowsModified=e.prototype.Rb,e.prototype.create_function=e.prototype.Kb,e.prototype.create_aggregate=e.prototype.Jb,e.prototype.updateHook=e.prototype.Zb,o.Database=e};var l="./this.program",m=(a,b)=>{throw b},n=globalThis.document?.currentScript?.src;n=__filename;var o,p,q,r="";if(k){var s=c(73024);r=__dirname+"/",q=a=>(a=G(a)?new URL(a):a,s.readFileSync(a)),p=async a=>(a=G(a)?new URL(a):a,s.readFileSync(a,void 0)),1<process.argv.length&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),a.exports=o,m=(a,b)=>{throw process.exitCode=a,b}}else if(i||j){try{r=new URL(".",n).href}catch{}j&&(q=a=>{var b=new XMLHttpRequest;return b.open("GET",a,!1),b.responseType="arraybuffer",b.send(null),new Uint8Array(b.response)}),p=async a=>{if(G(a))return new Promise((b,c)=>{var d=new XMLHttpRequest;d.open("GET",a,!0),d.responseType="arraybuffer",d.onload=()=>{200==d.status||0==d.status&&d.response?b(d.response):c(d.status)},d.onerror=c,d.send(null)});var b=await fetch(a,{credentials:"same-origin"});if(b.ok)return b.arrayBuffer();throw Error(b.status+" : "+b.url)}}var t,u,v,w,x,y,z,A,B,C,D=console.log.bind(console),E=console.error.bind(console),F=!1,G=a=>a.startsWith("file://");function H(){var a=bx.buffer;v=new Int8Array(a),x=new Int16Array(a),w=new Uint8Array(a),new Uint16Array(a),y=new Int32Array(a),z=new Uint32Array(a),A=new Float32Array(a),B=new Float64Array(a),C=new BigInt64Array(a),new BigUint64Array(a)}function I(a){throw o.onAbort?.(a),E(a="Aborted("+a+")"),F=!0,new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.")}async function J(a){if(!t)try{var b=await p(a);return new Uint8Array(b)}catch{}if(a==a3&&t)a=new Uint8Array(t);else if(q)a=q(a);else throw"both async and sync fetching of the wasm failed";return a}async function K(a,b){try{var c=await J(a);return await WebAssembly.instantiate(c,b)}catch(a){E(`failed to asynchronously prepare wasm: ${a}`),I(a)}}async function L(a){if(!t&&!G(a3)&&!k)try{var b=fetch(a3,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(b,a)}catch(a){E(`wasm streaming compile failed: ${a}`),E("falling back to ArrayBuffer instantiation")}return K(a3,a)}class M{name="ExitStatus";constructor(a){this.message=`Program terminated with exit(${a})`,this.status=a}}var N=a=>{for(;0<a.length;)a.shift()(o)},O=[],P=[],Q=()=>{var a=o.preRun.shift();P.push(a)},R=0,S=null;function T(a,b="i8"){switch(b.endsWith("*")&&(b="*"),b){case"i1":case"i8":return v[a];case"i16":return x[a>>1];case"i32":return y[a>>2];case"i64":return C[a>>3];case"float":return A[a>>2];case"double":return B[a>>3];case"*":return z[a>>2];default:I(`invalid type for getValue: ${b}`)}}var U=!0;function V(a){var b="i32";switch(b.endsWith("*")&&(b="*"),b){case"i1":case"i8":v[a]=0;break;case"i16":x[a>>1]=0;break;case"i32":y[a>>2]=0;break;case"i64":C[a>>3]=BigInt(0);break;case"float":A[a>>2]=0;break;case"double":B[a>>3]=0;break;case"*":z[a>>2]=0;break;default:I(`invalid type for setValue: ${b}`)}}var W=new TextDecoder,X=(a,b,c,d)=>{if(c=b+c,d)return c;for(;a[b]&&!(b>=c);)++b;return b},Y=(a,b,c)=>a?W.decode(w.subarray(a,X(w,a,b,c))):"",Z=(a,b)=>{for(var c=0,d=a.length-1;0<=d;d--){var e=a[d];"."===e?a.splice(d,1):".."===e?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c;c--)a.unshift("..");return a},$=a=>{var b="/"===a.charAt(0),c="/"===a.slice(-1);return(a=Z(a.split("/").filter(a=>!!a),!b).join("/"))||b||(a="."),a&&c&&(a+="/"),(b?"/":"")+a},_=a=>{var b=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1);return(a=b[0],b=b[1],a||b)?a+(b&&=b.slice(0,-1)):"."},aa=a=>a&&a.match(/([^\/]+|\/)\/*$/)[1],ab=a=>{(ab=(()=>{if(k){var a=c(77598);return b=>a.randomFillSync(b)}return a=>crypto.getRandomValues(a)})())(a)},ac=a=>{var b=X(a,0);return W.decode(a.buffer?a.subarray(0,b):new Uint8Array(a.slice(0,b)))},ad=[],ae=a=>{for(var b=0,c=0;c<a.length;++c){var d=a.charCodeAt(c);127>=d?b++:2047>=d?b+=2:55296<=d&&57343>=d?(b+=4,++c):b+=3}return b},af=(a,b,c,d)=>{if(!(0<d))return 0;var e=c;d=c+d-1;for(var f=0;f<a.length;++f){var g=a.codePointAt(f);if(127>=g){if(c>=d)break;b[c++]=g}else if(2047>=g){if(c+1>=d)break;b[c++]=192|g>>6,b[c++]=128|63&g}else if(65535>=g){if(c+2>=d)break;b[c++]=224|g>>12,b[c++]=128|g>>6&63,b[c++]=128|63&g}else{if(c+3>=d)break;b[c++]=240|g>>18,b[c++]=128|g>>12&63,b[c++]=128|g>>6&63,b[c++]=128|63&g,f++}}return b[c]=0,c-e},ag=[];function ah(a,b){ag[a]={input:[],output:[],eb:b},aK(a,ai)}var ai={open(a){var b=ag[a.node.rdev];if(!b)throw new as(43);a.tty=b,a.seekable=!1},close(a){a.tty.eb.fsync(a.tty)},fsync(a){a.tty.eb.fsync(a.tty)},read(a,b,c,d){if(!a.tty||!a.tty.eb.Bb)throw new as(60);for(var e=0,f=0;f<d;f++){try{var g=a.tty.eb.Bb(a.tty)}catch(a){throw new as(29)}if(void 0===g&&0===e)throw new as(6);if(null==g)break;e++,b[c+f]=g}return e&&(a.node.atime=Date.now()),e},write(a,b,c,d){if(!a.tty||!a.tty.eb.ub)throw new as(60);try{for(var e=0;e<d;e++)a.tty.eb.ub(a.tty,b[c+e])}catch(a){throw new as(29)}return d&&(a.node.mtime=a.node.ctime=Date.now()),e}},aj={Wa:null,Xa:()=>aj.createNode(null,"/",16895,0),createNode(a,b,c,d){if(24576==(61440&c)||4096==(61440&c))throw new as(63);return aj.Wa||(aj.Wa={dir:{node:{Ta:aj.La.Ta,Ua:aj.La.Ua,lookup:aj.La.lookup,ib:aj.La.ib,rename:aj.La.rename,unlink:aj.La.unlink,rmdir:aj.La.rmdir,readdir:aj.La.readdir,symlink:aj.La.symlink},stream:{Va:aj.Ma.Va}},file:{node:{Ta:aj.La.Ta,Ua:aj.La.Ua},stream:{Va:aj.Ma.Va,read:aj.Ma.read,write:aj.Ma.write,jb:aj.Ma.jb,kb:aj.Ma.kb}},link:{node:{Ta:aj.La.Ta,Ua:aj.La.Ua,readlink:aj.La.readlink},stream:{}},yb:{node:{Ta:aj.La.Ta,Ua:aj.La.Ua},stream:aJ}}),aB((c=aA(a,b,c,d)).mode)?(c.La=aj.Wa.dir.node,c.Ma=aj.Wa.dir.stream,c.Na={}):32768==(61440&c.mode)?(c.La=aj.Wa.file.node,c.Ma=aj.Wa.file.stream,c.Ra=0,c.Na=null):40960==(61440&c.mode)?(c.La=aj.Wa.link.node,c.Ma=aj.Wa.link.stream):8192==(61440&c.mode)&&(c.La=aj.Wa.yb.node,c.Ma=aj.Wa.yb.stream),c.atime=c.mtime=c.ctime=Date.now(),a&&(a.Na[b]=c,a.atime=a.mtime=a.ctime=c.atime),c},fc:a=>a.Na?a.Na.subarray?a.Na.subarray(0,a.Ra):new Uint8Array(a.Na):new Uint8Array(0),La:{Ta(a){var b={};return b.dev=8192==(61440&a.mode)?a.id:1,b.ino=a.id,b.mode=a.mode,b.nlink=1,b.uid=0,b.gid=0,b.rdev=a.rdev,aB(a.mode)?b.size=4096:32768==(61440&a.mode)?b.size=a.Ra:40960==(61440&a.mode)?b.size=a.link.length:b.size=0,b.atime=new Date(a.atime),b.mtime=new Date(a.mtime),b.ctime=new Date(a.ctime),b.blksize=4096,b.blocks=Math.ceil(b.size/b.blksize),b},Ua(a,b){for(var c of["mode","atime","mtime","ctime"])null!=b[c]&&(a[c]=b[c]);void 0!==b.size&&(b=b.size,a.Ra!=b&&(0==b?(a.Na=null,a.Ra=0):(c=a.Na,a.Na=new Uint8Array(b),c&&a.Na.set(c.subarray(0,Math.min(b,a.Ra))),a.Ra=b)))},lookup(){throw aj.nb||(aj.nb=new as(44),aj.nb.stack="<generic error, no stack>"),aj.nb},ib:(a,b,c,d)=>aj.createNode(a,b,c,d),rename(a,b,c){try{var d=az(b,c)}catch(a){}if(d){if(aB(a.mode))for(var e in d.Na)throw new as(55);ay(d)}delete a.parent.Na[a.name],b.Na[c]=a,a.name=c,b.ctime=b.mtime=a.parent.ctime=a.parent.mtime=Date.now()},unlink(a,b){delete a.Na[b],a.ctime=a.mtime=Date.now()},rmdir(a,b){var c,d=az(a,b);for(c in d.Na)throw new as(55);delete a.Na[b],a.ctime=a.mtime=Date.now()},readdir:a=>[".","..",...Object.keys(a.Na)],symlink:(a,b,c)=>((a=aj.createNode(a,b,41471,0)).link=c,a),readlink(a){if(40960!=(61440&a.mode))throw new as(28);return a.link}},Ma:{read(a,b,c,d,e){var f=a.node.Na;if(e>=a.node.Ra)return 0;if(8<(a=Math.min(a.node.Ra-e,d))&&f.subarray)b.set(f.subarray(e,e+a),c);else for(d=0;d<a;d++)b[c+d]=f[e+d];return a},write(a,b,c,d,e,f){if(b.buffer===v.buffer&&(f=!1),!d)return 0;if((a=a.node).mtime=a.ctime=Date.now(),b.subarray&&(!a.Na||a.Na.subarray)){if(f)return a.Na=b.subarray(c,c+d),a.Ra=d;if(0===a.Ra&&0===e)return a.Na=b.slice(c,c+d),a.Ra=d;if(e+d<=a.Ra)return a.Na.set(b.subarray(c,c+d),e),d}f=e+d;var g=a.Na?a.Na.length:0;if(g>=f||(f=Math.max(f,g*(1048576>g?2:1.125)>>>0),0!=g&&(f=Math.max(f,256)),g=a.Na,a.Na=new Uint8Array(f),0<a.Ra&&a.Na.set(g.subarray(0,a.Ra),0)),a.Na.subarray&&b.subarray)a.Na.set(b.subarray(c,c+d),e);else for(f=0;f<d;f++)a.Na[e+f]=b[c+f];return a.Ra=Math.max(a.Ra,e+d),d},Va(a,b,c){if(1===c?b+=a.position:2===c&&32768==(61440&a.node.mode)&&(b+=a.node.Ra),0>b)throw new as(28);return b},jb(a,b,c,d,e){if(32768!=(61440&a.node.mode))throw new as(43);if(a=a.node.Na,2&e||!a||a.buffer!==v.buffer){e=!0;var f=bs(65536,d=65536*Math.ceil(b/65536));if(f&&w.fill(0,f,f+d),!(d=f))throw new as(48);a&&((0<c||c+b<a.length)&&(a=a.subarray?a.subarray(c,c+b):Array.prototype.slice.call(a,c,c+b)),v.set(a,d))}else e=!1,d=a.byteOffset;return{Xb:d,Eb:e}},kb:(a,b,c,d)=>(aj.Ma.write(a,b,0,d,c,!1),0)}},ak=(a,b)=>{var c=0;return a&&(c|=365),b&&(c|=146),c},al=null,am={},an=[],ao=1,ap=null,aq=!1,ar=!0,as=class{name="ErrnoError";constructor(a){this.Pa=a}},at=class{hb={};node=null;get flags(){return this.hb.flags}set flags(a){this.hb.flags=a}get position(){return this.hb.position}set position(a){this.hb.position=a}},au=class{La={};Ma={};bb=null;constructor(a,b,c,d){a||=this,this.parent=a,this.Xa=a.Xa,this.id=ao++,this.name=b,this.mode=c,this.rdev=d,this.atime=this.mtime=this.ctime=Date.now()}get read(){return 365==(365&this.mode)}set read(a){a?this.mode|=365:this.mode&=-366}get write(){return 146==(146&this.mode)}set write(a){a?this.mode|=146:this.mode&=-147}};function av(a,b={}){if(!a)throw new as(44);b.pb??(b.pb=!0),"/"===a.charAt(0)||(a="//"+a);var c=0;a:for(;40>c;c++){a=a.split("/").filter(a=>!!a);for(var d=al,e="/",f=0;f<a.length;f++){var g=f===a.length-1;if(g&&b.parent)break;if("."!==a[f])if(".."===a[f])if(e=_(e),d===d.parent){a=e+"/"+a.slice(f+1).join("/"),c--;continue a}else d=d.parent;else{e=$(e+"/"+a[f]);try{d=az(d,a[f])}catch(a){if(44===a?.Pa&&g&&b.Wb)return{path:e};throw a}if(d.bb&&(!g||b.pb)&&(d=d.bb.root),40960==(61440&d.mode)&&(!g||b.ab)){if(!d.La.readlink)throw new as(52);"/"===(d=d.La.readlink(d)).charAt(0)||(d=_(e)+"/"+d),a=d+"/"+a.slice(f+1).join("/");continue a}}}return{path:e,node:d}}throw new as(32)}function aw(a){for(var b;;){if(a===a.parent)return a=a.Xa.Db,b?"/"!==a[a.length-1]?`${a}/${b}`:a+b:a;b=b?`${a.name}/${b}`:a.name,a=a.parent}}function ax(a,b){for(var c=0,d=0;d<b.length;d++)c=(c<<5)-c+b.charCodeAt(d)|0;return(a+c>>>0)%ap.length}function ay(a){var b=ax(a.parent.id,a.name);if(ap[b]===a)ap[b]=a.cb;else for(b=ap[b];b;){if(b.cb===a){b.cb=a.cb;break}b=b.cb}}function az(a,b){var c=aB(a.mode)?(c=aC(a,"x"))?c:2*!a.La.lookup:54;if(c)throw new as(c);for(c=ap[ax(a.id,b)];c;c=c.cb){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return a.La.lookup(a,b)}function aA(a,b,c,d){return b=ax((a=new au(a,b,c,d)).parent.id,a.name),a.cb=ap[b],ap[b]=a}function aB(a){return 16384==(61440&a)}function aC(a,b){return ar?0:b.includes("r")&&!(292&a.mode)||b.includes("w")&&!(146&a.mode)||b.includes("x")&&!(73&a.mode)?2:0}function aD(a,b){if(!aB(a.mode))return 54;try{return az(a,b),20}catch(a){}return aC(a,"wx")}function aE(a,b,c){try{var d=az(a,b)}catch(a){return a.Pa}if(a=aC(a,"wx"))return a;if(c){if(!aB(d.mode))return 54;if(d===d.parent||"/"===aw(d))return 10}else if(aB(d.mode))return 31;return 0}function aF(a){if(!a)throw new as(63);return a}function aG(a){if(!(a=an[a]))throw new as(8);return a}function aH(a,b=-1){if(a=Object.assign(new at,a),-1==b)a:{for(b=0;4096>=b;b++)if(!an[b])break a;throw new as(33)}return a.fd=b,an[b]=a}function aI(a,b,c){var d=a?.Ma.Ua;a=d?a:b,aF(d??=b.La.Ua),d(a,c)}var aJ={open(a){a.Ma=am[a.node.rdev].Ma,a.Ma.open?.(a)},Va(){throw new as(70)}};function aK(a,b){am[a]={Ma:b}}function aL(a,b){var c="/"===b;if(c&&al)throw new as(10);if(!c&&b){var d=av(b,{pb:!1});if(b=d.path,(d=d.node).bb)throw new as(10);if(!aB(d.mode))throw new as(54)}b={type:a,kc:{},Db:b,Vb:[]},(a=a.Xa(b)).Xa=b,b.root=a,c?al=a:d&&(d.bb=b,d.Xa&&d.Xa.Vb.push(b))}function aM(a,b,c){var d=av(a,{parent:!0}).node;if(!(a=aa(a)))throw new as(28);if("."===a||".."===a)throw new as(20);var e=aD(d,a);if(e)throw new as(e);if(!d.La.ib)throw new as(63);return d.La.ib(d,a,b,c)}function aN(a,b=511){return aM(a,1023&b|16384,0)}function aO(a,b,c){void 0===c&&(c=b,b=438),aM(a,8192|b,c)}function aP(a,b){if(!((...a)=>{for(var b="",c=!1,d=a.length-1;-1<=d&&!c;d--){if("string"!=typeof(c=0<=d?a[d]:"/"))throw TypeError("Arguments to path.resolve must be strings");if(!c)return"";b=c+"/"+b,c="/"===c.charAt(0)}return b=Z(b.split("/").filter(a=>!!a),!c).join("/"),(c?"/":"")+b||"."})(a))throw new as(44);var c=av(b,{parent:!0}).node;if(!c)throw new as(44);var d=aD(c,b=aa(b));if(d)throw new as(d);if(!c.La.symlink)throw new as(63);c.La.symlink(c,b,a)}function aQ(a){var b=av(a,{parent:!0}).node,c=az(b,a=aa(a)),d=aE(b,a,!0);if(d)throw new as(d);if(!b.La.rmdir)throw new as(63);if(c.bb)throw new as(10);b.La.rmdir(b,a),ay(c)}function aR(a){var b=av(a,{parent:!0}).node;if(!b)throw new as(44);var c=az(b,a=aa(a)),d=aE(b,a,!1);if(d)throw new as(d);if(!b.La.unlink)throw new as(63);if(c.bb)throw new as(10);b.La.unlink(b,a),ay(c)}function aS(a,b){return aF((a=av(a,{ab:!b}).node).La.Ta)(a)}function aT(a,b,c,d){aI(a,b,{mode:4095&c|-4096&b.mode,ctime:Date.now(),Lb:d})}function aU(a,b){aT(null,a="string"==typeof a?av(a,{ab:!0}).node:a,b)}function aV(a,b,c){if(aB(b.mode))throw new as(31);if(32768!=(61440&b.mode))throw new as(28);var d=aC(b,"w");if(d)throw new as(d);aI(a,b,{size:c,timestamp:Date.now()})}function aW(a,b,c=438){if(""===a)throw new as(44);if("string"==typeof b){var d={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[b];if(void 0===d)throw Error(`Unknown file open mode: ${b}`);b=d}if(c=64&b?4095&c|32768:0,"object"==typeof a)d=a;else{var e=a.endsWith("/"),f=av(a,{ab:!(131072&b),Wb:!0});d=f.node,a=f.path}if(f=!1,64&b)if(d){if(128&b)throw new as(20)}else{if(e)throw new as(31);d=aM(a,511|c,0),f=!0}if(!d)throw new as(44);if(8192==(61440&d.mode)&&(b&=-513),65536&b&&!aB(d.mode))throw new as(54);if(!f&&(d?40960==(61440&d.mode)?e=32:(e=["r","w","rw"][3&b],512&b&&(e+="w"),e=aB(d.mode)&&("r"!==e||576&b)?31:aC(d,e)):e=44,e))throw new as(e);return 512&b&&!f&&aV(null,e="string"==typeof(e=d)?av(e,{ab:!0}).node:e,0),(b=aH({node:d,path:aw(d),flags:-131713&b,seekable:!0,position:0,Ma:d.Ma,Yb:[],error:!1})).Ma.open&&b.Ma.open(b),f&&aU(d,511&c),b}function aX(a){if(null===a.fd)throw new as(8);a.rb&&(a.rb=null);try{a.Ma.close&&a.Ma.close(a)}catch(a){throw a}finally{an[a.fd]=null}a.fd=null}function aY(a,b,c){if(null===a.fd)throw new as(8);if(!a.seekable||!a.Ma.Va)throw new as(70);if(0!=c&&1!=c&&2!=c)throw new as(28);a.position=a.Ma.Va(a,b,c),a.Yb=[]}function aZ(a,b,c,d,e){if(0>d||0>e)throw new as(28);if(null===a.fd||1==(2097155&a.flags))throw new as(8);if(aB(a.node.mode))throw new as(31);if(!a.Ma.read)throw new as(28);var f=void 0!==e;if(f){if(!a.seekable)throw new as(70)}else e=a.position;return b=a.Ma.read(a,b,c,d,e),f||(a.position+=b),b}function a$(a,b,c,d,e){if(0>d||0>e)throw new as(28);if(null===a.fd||0==(2097155&a.flags))throw new as(8);if(aB(a.node.mode))throw new as(31);if(!a.Ma.write)throw new as(28);a.seekable&&1024&a.flags&&aY(a,0,2);var f=void 0!==e;if(f){if(!a.seekable)throw new as(70)}else e=a.position;return b=a.Ma.write(a,b,c,d,e,void 0),f||(a.position+=b),b}function a_(a,b,c){a=$("/dev/"+a);var d=ak(!!b,!!c);a_.Cb??(a_.Cb=64);var e=a_.Cb++<<8;aK(e,{open(a){a.seekable=!1},close(){c?.buffer?.length&&c(10)},read(a,c,d,e){for(var f=0,g=0;g<e;g++){try{var h=b()}catch(a){throw new as(29)}if(void 0===h&&0===f)throw new as(6);if(null==h)break;f++,c[d+g]=h}return f&&(a.node.atime=Date.now()),f},write(a,b,d,e){for(var f=0;f<e;f++)try{c(b[d+f])}catch(a){throw new as(29)}return e&&(a.node.mtime=a.node.ctime=Date.now()),f}}),aO(a,d,e)}var a0={};function a1(a,b,c){if("/"===b.charAt(0))return b;if(a=-100===a?"/":aG(a).path,0==b.length){if(!c)throw new as(44);return a}return a+"/"+b}function a2(a,b){z[a>>2]=b.dev,z[a+4>>2]=b.mode,z[a+8>>2]=b.nlink,z[a+12>>2]=b.uid,z[a+16>>2]=b.gid,z[a+20>>2]=b.rdev,C[a+24>>3]=BigInt(b.size),y[a+32>>2]=4096,y[a+36>>2]=b.blocks;var c=b.atime.getTime(),d=b.mtime.getTime(),e=b.ctime.getTime();return C[a+40>>3]=BigInt(Math.floor(c/1e3)),z[a+48>>2]=c%1e3*1e6,C[a+56>>3]=BigInt(Math.floor(d/1e3)),z[a+64>>2]=d%1e3*1e6,C[a+72>>3]=BigInt(Math.floor(e/1e3)),z[a+80>>2]=e%1e3*1e6,C[a+88>>3]=BigInt(b.ino),0}var a3,a4,a5,a6=void 0,a7=()=>{var a=y[a6>>2];return a6+=4,a},a8=0,a9=[0,31,60,91,121,152,182,213,244,274,305,335],ba=[0,31,59,90,120,151,181,212,243,273,304,334],bb={},bc=a=>{u=a,U||0<a8||(o.onExit?.(a),F=!0),m(a,new M(a))},bd={},be=()=>{if(!a4){var a,b={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8",_:l||"./this.program"};for(a in bd)void 0===bd[a]?delete b[a]:b[a]=bd[a];var c=[];for(a in b)c.push(`${a}=${b[a]}`);a4=c}return a4},bf=a=>{var b=ae(a)+1,c=bq(b);return c&&af(a,w,c,b),c},bg=[],bh=a=>{a5.delete(by.get(a)),by.set(a,null),bg.push(a)},bi=a=>{let b=a.length;return[b%128|128,b>>7,...a]},bj={i:127,p:127,j:126,f:125,d:124,e:111},bk=a=>bi(Array.from(a,a=>bj[a])),bl=(a,b)=>{if(!a5){a5=new WeakMap;var c=by.length;if(a5)for(var d=0;d<0+c;d++){var e=by.get(d);e&&a5.set(e,d)}}if(c=a5.get(a)||0)return c;c=bg.length?bg.pop():by.grow(1);try{by.set(c,a)}catch(d){if(!(d instanceof TypeError))throw d;b=Uint8Array.of(0,97,115,109,1,0,0,0,1,...bi([1,96,...bk(b.slice(1)),...bk("v"===b[0]?"":b[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0),b=new WebAssembly.Module(b),b=new WebAssembly.Instance(b,{e:{f:a}}).exports.f,by.set(c,b)}return a5.set(a,c),c};if(ap=Array(4096),aL(aj,"/"),aN("/tmp"),aN("/home"),aN("/home/web_user"),aN("/dev"),aK(259,{read:()=>0,write:(a,b,c,d)=>d,Va:()=>0}),aO("/dev/null",259),ah(1280,{Bb(){a:{if(!ad.length){var a=null;if(k){var b=Buffer.alloc(256),c=0,d=process.stdin.fd;try{c=s.readSync(d,b,0,256)}catch(a){if(a.toString().includes("EOF"))c=0;else throw a}0<c&&(a=b.slice(0,c).toString("utf-8"))}else globalThis.window?.prompt&&null!==(a=window.prompt("Input: "))&&(a+="\n");if(!a){a=null;break a}b=Array(ae(a)+1),a=af(a,b,0,b.length),b.length=a,ad=b}a=ad.shift()}return a},ub(a,b){null===b||10===b?(D(ac(a.output)),a.output=[]):0!=b&&a.output.push(b)},fsync(a){0<a.output?.length&&(D(ac(a.output)),a.output=[])},hc:()=>({bc:25856,dc:5,ac:191,cc:35387,$b:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ic:()=>0,jc:()=>[24,80]}),ah(1536,{ub(a,b){null===b||10===b?(E(ac(a.output)),a.output=[]):0!=b&&a.output.push(b)},fsync(a){0<a.output?.length&&(E(ac(a.output)),a.output=[])}}),aO("/dev/tty",1280),aO("/dev/tty1",1536),bm=new Uint8Array(1024),bn=0,a_("random",bo=()=>(0===bn&&(ab(bm),bn=bm.byteLength),bm[--bn])),a_("urandom",bo),aN("/dev/shm"),aN("/dev/shm/tmp"),aN("/proc"),bp=aN("/proc/self"),aN("/proc/self/fd"),aL({Xa(){var a=aA(bp,"fd",16895,73);return a.Ma={Va:aj.Ma.Va},a.La={lookup(a,b){var c=aG(a=+b);return(a={parent:null,Xa:{Db:"fake"},La:{readlink:()=>c.path},id:a+1}).parent=a},readdir:()=>Array.from(an.entries()).filter(([,a])=>a).map(([a])=>a.toString())},a}},"/proc/self/fd"),o.noExitRuntime&&(U=o.noExitRuntime),o.print&&(D=o.print),o.printErr&&(E=o.printErr),o.wasmBinary&&(t=o.wasmBinary),o.thisProgram&&(l=o.thisProgram),o.preInit)for("function"==typeof o.preInit&&(o.preInit=[o.preInit]);0<o.preInit.length;)o.preInit.shift()();o.stackSave=()=>bw(),o.stackRestore=a=>bu(a),o.stackAlloc=a=>bv(a),o.cwrap=(a,b,c,d)=>{var e=!c||c.every(a=>"number"===a||"boolean"===a);return"string"!==b&&e&&!d?o["_"+a]:(...d)=>((a,b,c,d)=>{var e,f={string:a=>{var b=0;if(null!=a&&0!==a){b=ae(a)+1;var c=bv(b);af(a,w,c,b),b=c}return b},array:a=>{var b=bv(a.length);return v.set(a,b),b}};a=o["_"+a];var g=[],h=0;if(d)for(var i=0;i<d.length;i++){var j=f[c[i]];j?(0===h&&(h=bw()),g[i]=j(d[i])):g[i]=d[i]}return e=c=a(...g),0!==h&&bu(h),c="string"===b?Y(e):"boolean"===b?!!e:e})(a,b,c,d)},o.addFunction=bl,o.removeFunction=bh,o.UTF8ToString=Y,o.stringToNewUTF8=bf,o.writeArrayToMemory=(a,b)=>{v.set(a,b)};var bm,bn,bo,bp,bq,br,bs,bt,bu,bv,bw,bx,by,bz={a:(a,b,c,d)=>I(`Assertion failed: ${Y(a)}, at: `+[b?Y(b):"unknown filename",c,d?Y(d):"unknown function"]),i:function(a,b){try{return a=Y(a),aU(a,b),0}catch(a){if(void 0===a0||"ErrnoError"!==a.name)throw a;return-a.Pa}},L:function(a,b,c){try{if(b=Y(b),b=a1(a,b),-8&c)return -28;var d=av(b,{ab:!0}).node;if(!d)return -44;return a="",4&c&&(a+="r"),2&c&&(a+="w"),1&c&&(a+="x"),a&&aC(d,a)?-2:0}catch(a){if(void 0===a0||"ErrnoError"!==a.name)throw a;return-a.Pa}},j:function(a,b){try{var c=aG(a);return aT(c,c.node,b,!1),0}catch(a){if(void 0===a0||"ErrnoError"!==a.name)throw a;return-a.Pa}},h:function(a){try{var b=aG(a);return aI(b,b.node,{timestamp:Date.now(),Lb:!1}),0}catch(a){if(void 0===a0||"ErrnoError"!==a.name)throw a;return-a.Pa}},b:function(a,b,c){a6=c;try{var d=aG(a);switch(b){case 0:var e=a7();if(0>e)break;for(;an[e];)e++;return function(a,b=-1){return a=aH(a,b),a.Ma?.ec?.(a),a}(d,e).fd;case 1:case 2:case 13:case 14:return 0;case 3:return d.flags;case 4:return e=a7(),d.flags|=e,0;case 12:return x[(e=a7())+0>>1]=2,0}return -28}catch(a){if(void 0===a0||"ErrnoError"!==a.name)throw a;return-a.Pa}},g:function(a,b){try{var c=aG(a),d=c.node,e=c.Ma.Ta;a=e?c:d,e??=d.La.Ta,aF(e);var f=e(a);return a2(b,f)}catch(a){if(void 0===a0||"ErrnoError"!==a.name)throw a;return-a.Pa}},H:function(a,b){b=-0x20000000000000>b||0x20000000000000<b?NaN:Number(b);try{if(isNaN(b))return -61;var c=aG(a);if(0>b||0==(2097155&c.flags))throw new as(28);return aV(c,c.node,b),0}catch(a){if(void 0===a0||"ErrnoError"!==a.name)throw a;return-a.Pa}},G:function(a,b){try{if(0===b)return -28;var c=ae("/")+1;if(b<c)return -68;return af("/",w,a,b),c}catch(a){if(void 0===a0||"ErrnoError"!==a.name)throw a;return-a.Pa}},K:function(a,b){try{return a=Y(a),a2(b,aS(a,!0))}catch(a){if(void 0===a0||"ErrnoError"!==a.name)throw a;return-a.Pa}},C:function(a,b,c){try{return b=Y(b),b=a1(a,b),aN(b,c),0}catch(a){if(void 0===a0||"ErrnoError"!==a.name)throw a;return-a.Pa}},J:function(a,b,c,d){try{return b=Y(b),b=a1(a,b,4096&d),a2(c,256&d?aS(b,!0):aS(b))}catch(a){if(void 0===a0||"ErrnoError"!==a.name)throw a;return-a.Pa}},x:function(a,b,c,d){a6=d;try{b=Y(b),b=a1(a,b);var e=d?a7():0;return aW(b,c,e).fd}catch(a){if(void 0===a0||"ErrnoError"!==a.name)throw a;return-a.Pa}},v:function(a,b,c,d){try{if(b=Y(b),b=a1(a,b),0>=d)return -28;var e=av(b).node;if(!e)throw new as(44);if(!e.La.readlink)throw new as(28);var f=e.La.readlink(e),g=Math.min(d,ae(f)),h=v[c+g];return af(f,w,c,d+1),v[c+g]=h,g}catch(a){if(void 0===a0||"ErrnoError"!==a.name)throw a;return-a.Pa}},u:function(a){try{return a=Y(a),aQ(a),0}catch(a){if(void 0===a0||"ErrnoError"!==a.name)throw a;return-a.Pa}},f:function(a,b){try{return a=Y(a),a2(b,aS(a))}catch(a){if(void 0===a0||"ErrnoError"!==a.name)throw a;return-a.Pa}},r:function(a,b,c){try{if(b=Y(b),b=a1(a,b),c)if(512!==c)return -28;else aQ(b);else aR(b);return 0}catch(a){if(void 0===a0||"ErrnoError"!==a.name)throw a;return-a.Pa}},q:function(a,b,c){try{b=Y(b),b=a1(a,b,!0);var d,e,f=Date.now();if(c){var g=z[c>>2]+0x100000000*y[c+4>>2],h=y[c+8>>2];d=0x3fffffff==h?f:0x3ffffffe==h?null:1e3*g+h/1e6,c+=16,g=z[c>>2]+0x100000000*y[c+4>>2],h=y[c+8>>2],e=0x3fffffff==h?f:0x3ffffffe==h?null:1e3*g+h/1e6}else e=d=f;if(null!==(e??d)){a=d;var i=av(b,{ab:!0}).node;aF(i.La.Ua)(i,{atime:a,mtime:e})}return 0}catch(a){if(void 0===a0||"ErrnoError"!==a.name)throw a;return-a.Pa}},m:()=>I(""),l:()=>{U=!1,a8=0},A:function(a,b){a=new Date(1e3*(a=-0x20000000000000>a||0x20000000000000<a?NaN:Number(a))),y[b>>2]=a.getSeconds(),y[b+4>>2]=a.getMinutes(),y[b+8>>2]=a.getHours(),y[b+12>>2]=a.getDate(),y[b+16>>2]=a.getMonth(),y[b+20>>2]=a.getFullYear()-1900,y[b+24>>2]=a.getDay();var c=a.getFullYear();y[b+28>>2]=(0!=c%4||0==c%100&&0!=c%400?ba:a9)[a.getMonth()]+a.getDate()-1|0,y[b+36>>2]=-(60*a.getTimezoneOffset()),c=new Date(a.getFullYear(),6,1).getTimezoneOffset();var d=new Date(a.getFullYear(),0,1).getTimezoneOffset();y[b+32>>2]=0|(c!=d&&a.getTimezoneOffset()==Math.min(d,c))},y:function(a,b,c,d,e,f,g){e=-0x20000000000000>e||0x20000000000000<e?NaN:Number(e);try{var h=aG(d);if(0!=(2&b)&&0==(2&c)&&2!=(2097155&h.flags)||1==(2097155&h.flags))throw new as(2);if(!h.Ma.jb)throw new as(43);if(!a)throw new as(28);var i=h.Ma.jb(h,a,e,b,c),j=i.Xb;return y[f>>2]=i.Eb,z[g>>2]=j,0}catch(a){if(void 0===a0||"ErrnoError"!==a.name)throw a;return-a.Pa}},z:function(a,b,c,d,e,f){f=-0x20000000000000>f||0x20000000000000<f?NaN:Number(f);try{var g=aG(e);if(2&c){if(c=f,32768!=(61440&g.node.mode))throw new as(43);if(!(2&d)){var h=w.slice(a,a+b);g.Ma.kb&&g.Ma.kb(g,h,c,b,d)}}}catch(a){if(void 0===a0||"ErrnoError"!==a.name)throw a;return-a.Pa}},n:(a,b)=>{if(bb[a]&&(clearTimeout(bb[a].id),delete bb[a]),!b)return 0;var c=setTimeout(()=>{delete bb[a];var b=()=>bt(a,performance.now());if(!F)try{b()}catch(a){a instanceof M||"unwind"==a||m(1,a)}finally{if(!(U||0<a8))try{u=b=u,bc(b)}catch(a){a instanceof M||"unwind"==a||m(1,a)}}},b);return bb[a]={id:c,lc:b},0},B:(a,b,c,d)=>{var e=(new Date).getFullYear(),f=new Date(e,0,1).getTimezoneOffset();e=new Date(e,6,1).getTimezoneOffset(),z[a>>2]=60*Math.max(f,e),y[b>>2]=Number(f!=e),a=(b=a=>{var b=Math.abs(a);return`UTC${0<=a?"-":"+"}${String(Math.floor(b/60)).padStart(2,"0")}${String(b%60).padStart(2,"0")}`})(f),b=b(e),e<f?(af(a,w,c,17),af(b,w,d,17)):(af(a,w,d,17),af(b,w,c,17))},d:()=>Date.now(),s:()=>0x80000000,c:()=>performance.now(),o:a=>{var b=w.length;if(0x80000000<(a>>>=0))return!1;for(var c=1;4>=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+0x6000000);a:{d=(Math.min(0x80000000,65536*Math.ceil(Math.max(a,d)/65536))-bx.buffer.byteLength+65535)/65536|0;try{bx.grow(d),H();var e=1;break a}catch(a){}e=void 0}if(e)return!0}return!1},E:(a,b)=>{var c,d=0,e=0;for(c of be()){var f=b+d;z[a+e>>2]=f,d+=af(c,w,f,1/0)+1,e+=4}return 0},F:(a,b)=>{var c=be();for(var d of(z[a>>2]=c.length,a=0,c))a+=ae(d)+1;return z[b>>2]=a,0},e:function(a){try{var b=aG(a);return aX(b),0}catch(a){if(void 0===a0||"ErrnoError"!==a.name)throw a;return a.Pa}},p:function(a,b){try{var c=aG(a);return v[b]=c.tty?2:aB(c.mode)?3:40960==(61440&c.mode)?7:4,x[b+2>>1]=0,C[b+8>>3]=BigInt(0),C[b+16>>3]=BigInt(0),0}catch(a){if(void 0===a0||"ErrnoError"!==a.name)throw a;return a.Pa}},w:function(a,b,c,d){try{a:{var e=aG(a);a=b;for(var f,g=b=0;g<c;g++){var h=z[a>>2],i=z[a+4>>2];a+=8;var j=aZ(e,v,h,i,f);if(0>j){var k=-1;break a}if(b+=j,j<i)break;void 0!==f&&(f+=j)}k=b}return z[d>>2]=k,0}catch(a){if(void 0===a0||"ErrnoError"!==a.name)throw a;return a.Pa}},D:function(a,b,c,d){b=-0x20000000000000>b||0x20000000000000<b?NaN:Number(b);try{if(isNaN(b))return 61;var e=aG(a);return aY(e,b,c),C[d>>3]=BigInt(e.position),e.rb&&0===b&&0===c&&(e.rb=null),0}catch(a){if(void 0===a0||"ErrnoError"!==a.name)throw a;return a.Pa}},I:function(a){try{var b=aG(a);return b.Ma?.fsync?.(b)}catch(a){if(void 0===a0||"ErrnoError"!==a.name)throw a;return a.Pa}},t:function(a,b,c,d){try{a:{var e=aG(a);a=b;for(var f,g=b=0;g<c;g++){var h=z[a>>2],i=z[a+4>>2];a+=8;var j=a$(e,v,h,i,f);if(0>j){var k=-1;break a}if(b+=j,j<i)break;void 0!==f&&(f+=j)}k=b}return z[d>>2]=k,0}catch(a){if(void 0===a0||"ErrnoError"!==a.name)throw a;return a.Pa}},k:bc};return!async function(){function a(a){return o._sqlite3_free=(a=f=a.exports).P,o._sqlite3_value_text=a.Q,o._sqlite3_prepare_v2=a.R,o._sqlite3_step=a.S,o._sqlite3_reset=a.T,o._sqlite3_exec=a.U,o._sqlite3_finalize=a.V,o._sqlite3_column_name=a.W,o._sqlite3_column_text=a.X,o._sqlite3_column_type=a.Y,o._sqlite3_errmsg=a.Z,o._sqlite3_clear_bindings=a._,o._sqlite3_value_blob=a.$,o._sqlite3_value_bytes=a.aa,o._sqlite3_value_double=a.ba,o._sqlite3_value_int=a.ca,o._sqlite3_value_type=a.da,o._sqlite3_result_blob=a.ea,o._sqlite3_result_double=a.fa,o._sqlite3_result_error=a.ga,o._sqlite3_result_int=a.ha,o._sqlite3_result_int64=a.ia,o._sqlite3_result_null=a.ja,o._sqlite3_result_text=a.ka,o._sqlite3_aggregate_context=a.la,o._sqlite3_column_count=a.ma,o._sqlite3_data_count=a.na,o._sqlite3_column_blob=a.oa,o._sqlite3_column_bytes=a.pa,o._sqlite3_column_double=a.qa,o._sqlite3_bind_blob=a.ra,o._sqlite3_bind_double=a.sa,o._sqlite3_bind_int=a.ta,o._sqlite3_bind_text=a.ua,o._sqlite3_bind_parameter_index=a.va,o._sqlite3_sql=a.wa,o._sqlite3_normalized_sql=a.xa,o._sqlite3_changes=a.ya,o._sqlite3_close_v2=a.za,o._sqlite3_create_function_v2=a.Aa,o._sqlite3_update_hook=a.Ba,o._sqlite3_open=a.Ca,bq=o._malloc=a.Da,br=o._free=a.Ea,o._RegisterExtensionFunctions=a.Fa,bs=a.Ga,bt=a.Ha,bu=a.Ia,bv=a.Ja,bw=a.Ka,bx=a.M,by=a.O,H(),R--,o.monitorRunDependencies?.(R),0==R&&S&&(a=S,S=null,a()),f}R++,o.monitorRunDependencies?.(R);var b={a:bz};if(o.instantiateWasm)return new Promise(c=>{o.instantiateWasm(b,(b,d)=>{c(a(b,d))})});a3??=o.locateFile?o.locateFile("sql-wasm.wasm",r):r+"sql-wasm.wasm",a((await L(b)).instance)}(),!function a(){function b(){if(o.calledRun=!0,!F){if(!o.noFSInit&&!aq){var a,b;aq=!0,a??=o.stdin,b??=o.stdout,c??=o.stderr,a?a_("stdin",a):aP("/dev/tty","/dev/stdin"),b?a_("stdout",null,b):aP("/dev/tty","/dev/stdout"),c?a_("stderr",null,c):aP("/dev/tty1","/dev/stderr"),aW("/dev/stdin",0),aW("/dev/stdout",1),aW("/dev/stderr",1)}if(f.N(),ar=!1,o.onRuntimeInitialized?.(),o.postRun)for("function"==typeof o.postRun&&(o.postRun=[o.postRun]);o.postRun.length;){var c=o.postRun.shift();O.push(c)}N(O)}}if(0<R)S=a;else{if(o.preRun)for("function"==typeof o.preRun&&(o.preRun=[o.preRun]);o.preRun.length;)Q();N(P),0<R?S=a:o.setStatus?(o.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>o.setStatus(""),1),b()},1)):b()}}(),g}))};a.exports=e,a.exports.default=e}};
|
|
9
|
+
`,e={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",createdAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)"]},combos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_combo_name ON combos(name)"]},kv:{columns:{scope:"TEXT NOT NULL",key:"TEXT NOT NULL",value:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (scope, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_kv_scope ON kv(scope)"]},usageHistory:{columns:{id:"INTEGER PRIMARY KEY AUTOINCREMENT",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",apiKey:"TEXT",endpoint:"TEXT",promptTokens:"INTEGER DEFAULT 0",completionTokens:"INTEGER DEFAULT 0",cost:"REAL DEFAULT 0",status:"TEXT",tokens:"TEXT",meta:"TEXT"},indexes:["CREATE INDEX IF NOT EXISTS idx_uh_ts ON usageHistory(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_provider ON usageHistory(provider)","CREATE INDEX IF NOT EXISTS idx_uh_model ON usageHistory(model)","CREATE INDEX IF NOT EXISTS idx_uh_conn ON usageHistory(connectionId)"]},usageDaily:{columns:{dateKey:"TEXT PRIMARY KEY",data:"TEXT NOT NULL"}},requestDetails:{columns:{id:"TEXT PRIMARY KEY",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",status:"TEXT",data:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_rd_ts ON requestDetails(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_rd_provider ON requestDetails(provider)","CREATE INDEX IF NOT EXISTS idx_rd_model ON requestDetails(model)","CREATE INDEX IF NOT EXISTS idx_rd_conn ON requestDetails(connectionId)"]}};function f(a,b){let c=Object.entries(b.columns).map(([a,b])=>`${a} ${b}`);return b.primaryKey&&c.push(b.primaryKey),`CREATE TABLE IF NOT EXISTS ${a} (${c.join(", ")})`}},86502:(a,b,c)=>{c.d(b,{createSqlJsAdapter:()=>k});var d=c(73024),e=c.n(d),f=c(46293),g=c.n(f),h=c(24730);let i=null;async function j(){return i||(i=await g()())}async function k(a){let b=await j(),c=e().existsSync(a)?e().readFileSync(a):null,d=new b.Database(c);d.exec(h.oG);let f=!1,g=null;function i(){let b=d.export();e().writeFileSync(a,Buffer.from(b)),f=!1}function k(){f=!0,g&&clearTimeout(g),g=setTimeout(()=>{if(g=null,f)try{i()}catch(a){console.error("[sqljs] save failed:",a)}},100)}function l(a){if(!(!a||Array.isArray(a)&&0===a.length))return a}let m=()=>{if(f)try{i()}catch{}};return process.on("beforeExit",m),process.on("SIGINT",m),process.on("SIGTERM",m),{driver:"sql.js",run:function(a,b=[]){let c=d.prepare(a);try{c.bind(l(b)),c.step();let a=d.getRowsModified(),e=d.exec("SELECT last_insert_rowid() as id")[0]?.values?.[0]?.[0]??null;return k(),{changes:a,lastInsertRowid:e}}finally{c.free()}},get:function(a,b=[]){let c=d.prepare(a);try{if(c.bind(l(b)),c.step())return c.getAsObject();return}finally{c.free()}},all:function(a,b=[]){let c=d.prepare(a);try{c.bind(l(b));let a=[];for(;c.step();)a.push(c.getAsObject());return a}finally{c.free()}},exec:function(a){d.exec(a),k()},transaction:function(a){let b=`sp_${Math.random().toString(36).slice(2)}`;d.exec(`SAVEPOINT ${b}`);try{let c=a();return d.exec(`RELEASE ${b}`),k(),c}catch(a){try{d.exec(`ROLLBACK TO ${b}`),d.exec(`RELEASE ${b}`)}catch{}throw a}},close:function(){g&&clearTimeout(g),f&&i(),d.close()},raw:d}}}};
|