@jheavenknows/bluerouter 5.4.5 → 5.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/.next-cli-build/BUILD_ID +1 -1
- package/app/.next-cli-build/app-path-routes-manifest.json +6 -6
- package/app/.next-cli-build/build-manifest.json +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/ai-power-index/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/ai-power-index/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/audit-proxy/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/audit-proxy/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/audit-proxy/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/model-profiles/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/model-profiles/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cluster/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cluster/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/logs/console/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/logs/console/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/logs/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personal/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personal/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovider/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovider/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovidermonitor/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovidermonitor/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalquota/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalquota/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/stt/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/stt/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/tts/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/tts/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/resource-monitor/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/resource-monitor/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error.html +1 -1
- package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_not-found.html +1 -1
- package/app/.next-cli-build/server/app/_not-found.rsc +5 -5
- package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/api/audit-proxy/ca/route.js +1 -1
- package/app/.next-cli-build/server/app/api/audit-proxy/ca/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/audit-proxy/me/route.js +1 -1
- package/app/.next-cli-build/server/app/api/audit-proxy/me/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/audit-proxy/route.js +2 -2
- package/app/.next-cli-build/server/app/api/audit-proxy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/audit-proxy/users/route.js +1 -1
- package/app/.next-cli-build/server/app/api/audit-proxy/users/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/ldap/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/ldap/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/ldap/users/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/ldap/users/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/login/route.js +3 -3
- package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/view-mode/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/view-mode/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/branding/[asset]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/branding/[asset]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/branding/route.js +1 -1
- package/app/.next-cli-build/server/app/api/branding/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/branding/upload/route.js +1 -1
- package/app/.next-cli-build/server/app/api/branding/upload/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-model-profiles/cloud-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-model-profiles/cloud-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-model-profiles/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-model-profiles/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/autostart/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/autostart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/root-ca/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/root-ca/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/qwen-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/config/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/config/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/heartbeat/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/heartbeat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/peers/[id]/command/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/peers/[id]/command/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/peers/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/peers/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/peers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/peers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/snapshot/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/snapshot/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/sync/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/sync/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cluster/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cluster/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/ai-power-index/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/ai-power-index/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/analytics/ai-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/analytics/ai-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/analytics/analyze/route.js +2 -2
- package/app/.next-cli-build/server/app/api/dashboard/analytics/analyze/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/analytics/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/analytics/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/combos/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/combos/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/endpoint/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/endpoint/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/options/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/token-saver/route.js +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/token-saver/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/caveman-test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/caveman-test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/route.js +2 -2
- package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/grok-cli/device-code/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/grok-cli/device-code/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/grok-cli/poll/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/grok-cli/poll/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/api-key-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/api-key-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/import-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/import-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/models/[...routeModel]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/models/[...routeModel]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/move/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/move/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/usage/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/usage/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/client/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/client/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/monitor/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/monitor/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/permissions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/permissions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/routing/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/routing/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/shares/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/shares/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/visibility/route.js +1 -1
- package/app/.next-cli-build/server/app/api/personal-cloud-providers/visibility/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pricing/catalog/route.js +1 -1
- package/app/.next-cli-build/server/app/api/pricing/catalog/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pricing/recalculate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
- package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-health/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/openai-compatible/manage/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/openai-compatible/manage/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/[id]/route.js +2 -2
- package/app/.next-cli-build/server/app/api/resource-monitor/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/ai-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/ai-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/analyze/route.js +2 -2
- package/app/.next-cli-build/server/app/api/resource-monitor/analyze/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/history/route.js +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/history/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/resource-monitor/route.js +2 -2
- package/app/.next-cli-build/server/app/api/resource-monitor/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +3 -3
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js +2 -2
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stream/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/restart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/callback.html +1 -1
- package/app/.next-cli-build/server/app/callback.rsc +5 -5
- package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/!KGRhc2hib2FyZCk/dashboard/ai-power-index/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/ai-power-index.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/api-keys.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/api-keys.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys/__PAGE__.segment.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_full.segment.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/model-profiles/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/cli-tools/model-profiles.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cluster.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cluster.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/cluster.segments/!KGRhc2hib2FyZCk/dashboard/cluster/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/cluster.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/cluster.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/logs.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/logs.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/logs.segments/!KGRhc2hib2FyZCk/dashboard/logs/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/logs.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/logs.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/personal.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/personal.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/personal.segments/!KGRhc2hib2FyZCk/dashboard/personal/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/personal.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/personal.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/provider-health.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/provider-health.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/stt.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/stt.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/stt.segments/!KGRhc2hib2FyZCk/dashboard/providers/stt/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/stt.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/stt.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/tts.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/tts.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/tts.segments/!KGRhc2hib2FyZCk/dashboard/providers/tts/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/tts.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers/tts.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/!KGRhc2hib2FyZCk/dashboard/resource-monitor/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/resource-monitor.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard.html +1 -1
- package/app/.next-cli-build/server/app/dashboard.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/index.html +1 -1
- package/app/.next-cli-build/server/app/index.rsc +5 -5
- package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/landing.html +1 -1
- package/app/.next-cli-build/server/app/landing.rsc +5 -5
- package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/login.html +1 -1
- package/app/.next-cli-build/server/app/login.rsc +6 -6
- package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app-paths-manifest.json +6 -6
- package/app/.next-cli-build/server/chunks/1370.js +1 -0
- package/app/.next-cli-build/server/chunks/1470.js +1 -1
- package/app/.next-cli-build/server/chunks/1998.js +1 -1
- package/app/.next-cli-build/server/chunks/2507.js +1 -0
- package/app/.next-cli-build/server/chunks/2611.js +1 -1
- package/app/.next-cli-build/server/chunks/2731.js +3 -3
- package/app/.next-cli-build/server/chunks/2763.js +1 -0
- package/app/.next-cli-build/server/chunks/{3801.js → 2971.js} +1 -1
- package/app/.next-cli-build/server/chunks/3096.js +2 -0
- package/app/.next-cli-build/server/chunks/3399.js +1 -1
- package/app/.next-cli-build/server/chunks/3503.js +1 -0
- package/app/.next-cli-build/server/chunks/3958.js +6 -6
- package/app/.next-cli-build/server/chunks/{4432.js → 4013.js} +1 -1
- package/app/.next-cli-build/server/chunks/402.js +7 -7
- package/app/.next-cli-build/server/chunks/4123.js +1 -0
- package/app/.next-cli-build/server/chunks/427.js +40 -0
- package/app/.next-cli-build/server/chunks/4350.js +2 -2
- package/app/.next-cli-build/server/chunks/436.js +1 -0
- package/app/.next-cli-build/server/chunks/4746.js +1 -1
- package/app/.next-cli-build/server/chunks/4778.js +1 -1
- package/app/.next-cli-build/server/chunks/5210.js +1 -1
- package/app/.next-cli-build/server/chunks/5296.js +1 -0
- package/app/.next-cli-build/server/chunks/5870.js +1 -0
- package/app/.next-cli-build/server/chunks/5915.js +1 -0
- package/app/.next-cli-build/server/chunks/6053.js +2 -0
- package/app/.next-cli-build/server/chunks/607.js +1 -1
- package/app/.next-cli-build/server/chunks/6118.js +1 -1
- package/app/.next-cli-build/server/chunks/6328.js +1 -1
- package/app/.next-cli-build/server/chunks/6404.js +1 -1
- package/app/.next-cli-build/server/chunks/6684.js +1 -1
- package/app/.next-cli-build/server/chunks/6811.js +1 -0
- package/app/.next-cli-build/server/chunks/689.js +20 -6
- package/app/.next-cli-build/server/chunks/6977.js +2 -2
- package/app/.next-cli-build/server/chunks/6992.js +1 -1
- package/app/.next-cli-build/server/chunks/7478.js +2 -2
- package/app/.next-cli-build/server/chunks/7753.js +1 -1
- package/app/.next-cli-build/server/chunks/7812.js +1 -1
- package/app/.next-cli-build/server/chunks/8023.js +1 -1
- package/app/.next-cli-build/server/chunks/8049.js +2 -2
- package/app/.next-cli-build/server/chunks/8255.js +1 -0
- package/app/.next-cli-build/server/chunks/8347.js +1 -0
- package/app/.next-cli-build/server/chunks/9.js +1 -1
- package/app/.next-cli-build/server/chunks/9012.js +1 -1
- package/app/.next-cli-build/server/chunks/9083.js +2 -2
- package/app/.next-cli-build/server/chunks/9471.js +1 -0
- package/app/.next-cli-build/server/chunks/9483.js +1 -1
- package/app/.next-cli-build/server/chunks/9489.js +1 -1
- package/app/.next-cli-build/server/chunks/9760.js +1 -0
- package/app/.next-cli-build/server/chunks/9841.js +1 -0
- package/app/.next-cli-build/server/instrumentation.js +1 -1
- package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/app/.next-cli-build/server/pages/404.html +1 -1
- package/app/.next-cli-build/server/pages/500.html +1 -1
- package/app/.next-cli-build/static/chunks/{5263-b89232068b3f9372.js → 5263-d090963f39b70ff1.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/audit-proxy/page-7e36c7d76547e65b.js +21 -0
- package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-shm +0 -0
- package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-wal +0 -0
- package/app/package.json +1 -1
- package/package.json +1 -1
- package/app/.next-cli-build/server/chunks/2574.js +0 -1
- package/app/.next-cli-build/server/chunks/3522.js +0 -1
- package/app/.next-cli-build/server/chunks/4064.js +0 -40
- package/app/.next-cli-build/server/chunks/595.js +0 -1
- package/app/.next-cli-build/server/chunks/6487.js +0 -1
- package/app/.next-cli-build/server/chunks/6986.js +0 -1
- package/app/.next-cli-build/server/chunks/7007.js +0 -2
- package/app/.next-cli-build/server/chunks/7669.js +0 -1
- package/app/.next-cli-build/server/chunks/8178.js +0 -1
- package/app/.next-cli-build/server/chunks/8376.js +0 -2
- package/app/.next-cli-build/server/chunks/8833.js +0 -1
- package/app/.next-cli-build/server/chunks/9434.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/audit-proxy/page-43c2a844d20db416.js +0 -21
- /package/app/.next-cli-build/static/{0Dv6zNbjXmmBjIsBPEnA4 → WQv-4DqskV8QOExP__lHq}/_buildManifest.js +0 -0
- /package/app/.next-cli-build/static/{0Dv6zNbjXmmBjIsBPEnA4 → WQv-4DqskV8QOExP__lHq}/_ssgManifest.js +0 -0
- /package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/{upgrade-5.3.87-to-5.4.0-5.4.0-20260823-220512 → upgrade-5.4.3-to-5.4.4-5.4.4-20260823-231626}/data.sqlite +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=5870,exports.ids=[5870],exports.modules={53859:(a,b,c)=>{c.d(b,{n:()=>l});var d=c(73024),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);let j="bluerouter";function k(){return"win32"===process.platform?g().join(process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming"),j):g().join(i().homedir(),`.${j}`)}let l=function(){let a=process.env.DATA_DIR;if(!a)return k();try{return e().mkdirSync(a,{recursive:!0}),a}catch(b){if(b?.code==="EACCES"||b?.code==="EPERM")return console.warn(`[DATA_DIR] '${a}' not writable → fallback ~/.${j}`),k();throw b}}()},75870:(a,b,c)=>{c.d(b,{Jc:()=>r,Q1:()=>s,X_:()=>t,isClusterStandby:()=>u});var d=c(77598),e=c.n(d),f=c(51455),g=c.n(f),h=c(76760),i=c.n(h),j=c(53859);let k=i().join(j.n,"cluster-config.json"),l=new Set(["standalone","master","slave"]),m="__blueRouterClusterConfigMutation",n={version:1,nodeId:"",role:"standalone",enabled:!1,masterUrl:"",syncToken:"",intervalMinutes:5,lastAttemptAt:null,lastSyncAt:null,lastSnapshotHash:"",lastError:"",lastResult:null,commandAck:null};function o(a={}){let b=l.has(a.role)?a.role:"standalone";return{...n,...a,version:1,nodeId:String(a.nodeId||"").trim()||e().randomUUID(),role:b,enabled:!0===a.enabled,masterUrl:function(a){let b=String(a||"").trim().replace(/\/+$/,"");if(!b)return"";let c=new URL(b);if(!["http:","https:"].includes(c.protocol))throw Error("Master URL must use http:// or https://");if(c.username||c.password)throw Error("Master URL must not contain credentials");return c.toString().replace(/\/+$/,"")}(a.masterUrl),syncToken:String(a.syncToken||"").trim(),intervalMinutes:Math.min(1440,Math.max(1,Number(a.intervalMinutes)||5))}}async function p(a){await g().mkdir(j.n,{recursive:!0});let b=`${k}.${process.pid}.${e().randomUUID()}.tmp`;try{await g().writeFile(b,JSON.stringify(a,null,2),{mode:384}),await g().rename(b,k)}catch(a){throw await g().unlink(b).catch(()=>{}),a}}function q(a){let b=(globalThis[m]||Promise.resolve()).then(a,a);return globalThis[m]=b.catch(()=>{}),b}async function r({includeSecrets:a=!1}={}){let b={};try{b=JSON.parse(await g().readFile(k,"utf8"))}catch(a){a?.code!=="ENOENT"&&console.warn("[cluster] failed to read config:",a?.message||a)}let c=o(b);if(b.nodeId||await p(c),a)return c;let{syncToken:d,...e}=c;return{...e,hasSyncToken:!!c.syncToken}}async function s(a={}){if(!a||"object"!=typeof a||Array.isArray(a))throw Error("Invalid cluster config payload");return q(async()=>{let b=await r({includeSecrets:!0}),c={};for(let b of["role","enabled","masterUrl","syncToken","intervalMinutes"])Object.prototype.hasOwnProperty.call(a,b)&&(c[b]=a[b]);let d=o({...b,...c});if("master"!==d.role||d.syncToken||(d.syncToken=e().randomBytes(32).toString("base64url")),d.enabled&&"slave"===d.role){if(!d.masterUrl)throw Error("Master URL is required for Standby mode");if(!d.syncToken)throw Error("Sync token is required for Standby mode")}return await p(d),d})}async function t(a={}){return q(async()=>{let b=await r({includeSecrets:!0}),c=o({...b,...a,nodeId:b.nodeId,role:b.role,enabled:b.enabled,masterUrl:b.masterUrl,syncToken:b.syncToken,intervalMinutes:b.intervalMinutes});return await p(c),c})}async function u(){return"slave"===(await r({includeSecrets:!0})).role}}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=5915,exports.ids=[1998,5915],exports.modules={19225:(a,b,c)=>{a.exports=c(44870)},35024:(a,b,c)=>{c.d(b,{Ak:()=>i,Yg:()=>k,xq:()=>h});var d=c(21820);let e={"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},f={"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,context-management-2025-06-27,prompt-caching-scope-2026-01-05,advanced-tool-use-2025-11-20,effort-2025-11-24,structured-outputs-2025-12-15,fast-mode-2026-02-01,redact-thinking-2026-02-12,token-efficient-tools-2026-03-28","Anthropic-Dangerous-Direct-Browser-Access":"true","User-Agent":"claude-cli/2.1.92 (external, sdk-cli)","X-App":"cli","X-Stainless-Helper-Method":"stream","X-Stainless-Retry-Count":"0","X-Stainless-Runtime-Version":"v24.14.0","X-Stainless-Package-Version":"0.80.0","X-Stainless-Runtime":"node","X-Stainless-Lang":"js","X-Stainless-Arch":function(){switch((0,d.arch)()){case"x64":return"x64";case"arm64":return"arm64";case"ia32":return"x86";default:return`other::${(0,d.arch)()}`}}(),"X-Stainless-Os":function(){switch((0,d.platform)()){case"darwin":return"MacOS";case"win32":return"Windows";case"linux":return"Linux";case"freebsd":return"FreeBSD";default:return`Other::${(0,d.platform)()}`}}(),"X-Stainless-Timeout":"600"},g="https://api.kimi.com/coding/v1/messages",h={claude:{baseUrl:"https://api.anthropic.com/v1/messages",format:"claude",headers:{...f},clientId:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",tokenUrl:"https://api.anthropic.com/v1/oauth/token"},gemini:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",format:"gemini",clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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"},"gemini-cli":{baseUrl:"https://cloudcode-pa.googleapis.com/v1internal",format:"gemini-cli",clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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"},codex:{baseUrl:"https://chatgpt.com/backend-api/codex/responses",format:"openai-responses",headers:{originator:"codex_cli_rs","User-Agent":"codex-cli/1.0.18 (macOS; arm64)"},clientId:"app_EMoamEEZ73f0CkXaXp7hrann",tokenUrl:"https://auth.openai.com/oauth/token"},qwen:{baseUrl:"https://portal.qwen.ai/v1/chat/completions",format:"openai",clientId:"f0304373b74a44d2b584a3fb70ca9e56",tokenUrl:"https://chat.qwen.ai/api/v1/oauth2/token",authUrl:"https://chat.qwen.ai/api/v1/oauth2/device/code"},iflow:{baseUrl:"https://apis.iflow.cn/v1/chat/completions",format:"openai",headers:{"User-Agent":"iFlow-Cli"},clientId:"10009311001",clientSecret:"4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",tokenUrl:"https://iflow.cn/oauth/token",authUrl:"https://iflow.cn/oauth"},qoder:{baseUrl:"https://api.qoder.com/v1/chat/completions",format:"openai",headers:{"User-Agent":"Qoder-Cli"},clientId:process.env.QODER_OAUTH_CLIENT_ID||"10009311001",clientSecret:process.env.QODER_OAUTH_CLIENT_SECRET||"4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",tokenUrl:"https://api.qoder.com/oauth/token",authUrl:"https://qoder.com/oauth/authorize"},antigravity:{baseUrls:["https://daily-cloudcode-pa.googleapis.com","https://daily-cloudcode-pa.sandbox.googleapis.com"],format:"antigravity",headers:{"User-Agent":`antigravity/1.107.0 ${(0,d.platform)()}/${(0,d.arch)()}`},clientId:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecret:"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"},openrouter:{baseUrl:"https://openrouter.ai/api/v1/chat/completions",format:"openai",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"}},openai:{baseUrl:"https://api.openai.com/v1/chat/completions",format:"openai"},"vercel-ai-gateway":{baseUrl:"https://ai-gateway.vercel.sh/v1/chat/completions",format:"openai"},glm:{baseUrl:"https://api.z.ai/api/anthropic/v1/messages",format:"claude",headers:{...e}},"glm-cn":{baseUrl:"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",format:"openai",headers:{}},kimi:{baseUrl:g,format:"claude",headers:{...e}},minimax:{baseUrl:"https://api.minimax.io/anthropic/v1/messages",format:"claude",headers:{...e}},"minimax-cn":{baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",format:"claude",headers:{...e}},alicode:{baseUrl:"https://coding.dashscope.aliyuncs.com/v1/chat/completions",format:"openai",headers:{}},"alicode-intl":{baseUrl:"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions",format:"openai",headers:{}},"alims-intl":{baseUrl:"https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions",format:"openai",headers:{}},"volcengine-ark":{baseUrl:"https://ark.cn-beijing.volces.com/api/coding/v3/chat/completions",format:"openai",headers:{}},byteplus:{baseUrl:"https://ark.ap-southeast.bytepluses.com/api/coding/v3/chat/completions",format:"openai",headers:{}},github:{baseUrl:"https://api.githubcopilot.com/chat/completions",responsesUrl:"https://api.githubcopilot.com/responses",format:"openai",headers:{"copilot-integration-id":"vscode-chat","editor-version":"vscode/1.110.0","editor-plugin-version":"copilot-chat/0.38.0","user-agent":"GitHubCopilotChat/0.38.0","openai-intent":"conversation-panel","x-github-api-version":"2025-04-01","x-vscode-user-agent-library-version":"electron-fetch","X-Initiator":"user",Accept:"application/json","Content-Type":"application/json"},clientId:"Iv1.b507a08c87ecfe98"},kiro:{baseUrl:"https://codewhisperer.us-east-1.amazonaws.com/generateAssistantResponse",format:"kiro",retry:{429:2},headers:{"Content-Type":"application/json",Accept:"application/vnd.amazon.eventstream","X-Amz-Target":"AmazonCodeWhispererStreamingService.GenerateAssistantResponse","User-Agent":"AWS-SDK-JS/3.0.0 kiro-ide/1.0.0","X-Amz-User-Agent":"aws-sdk-js/3.0.0 kiro-ide/1.0.0"},tokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authUrl:"https://prod.us-east-1.auth.desktop.kiro.dev"},cursor:{baseUrl:"https://api2.cursor.sh",chatPath:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",format:"cursor",headers:{"connect-accept-encoding":"gzip","connect-protocol-version":"1","Content-Type":"application/connect+proto","User-Agent":"connect-es/1.6.1"},clientVersion:"3.1.0"},"kimi-coding":{baseUrl:g,format:"claude",headers:{...e},clientId:"17e5f671-d194-4dfb-9706-5516cb48c098",tokenUrl:"https://auth.kimi.com/api/oauth/token",refreshUrl:"https://auth.kimi.com/api/oauth/token"},kilocode:{baseUrl:"https://api.kilo.ai/api/openrouter/chat/completions",format:"openai",headers:{}},opencode:{baseUrl:"http://localhost:4096/v1/chat/completions",format:"openai",headers:{}},cline:{baseUrl:"https://api.cline.bot/api/v1/chat/completions",format:"openai",headers:{"HTTP-Referer":"https://cline.bot","X-Title":"Cline"},tokenUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh"},nvidia:{baseUrl:"https://integrate.api.nvidia.com/v1/chat/completions",format:"openai"},anthropic:{baseUrl:"https://api.anthropic.com/v1/messages",format:"claude",headers:{...e}},deepseek:{baseUrl:"https://api.deepseek.com/chat/completions",format:"openai"},commandcode:{baseUrl:"https://api.commandcode.ai/alpha/generate",format:"commandcode",headers:{"x-command-code-version":"0.25.7","x-cli-environment":"cli"}},groq:{baseUrl:"https://api.groq.com/openai/v1/chat/completions",format:"openai"},xai:{baseUrl:"https://api.x.ai/v1/chat/completions",responsesUrl:"https://api.x.ai/v1/responses",format:"openai",clientId:"b1a00492-073a-47ea-816f-4c329264a828",tokenUrl:"https://auth.x.ai/oauth2/token",refreshUrl:"https://auth.x.ai/oauth2/token"},mistral:{baseUrl:"https://api.mistral.ai/v1/chat/completions",format:"openai"},perplexity:{baseUrl:"https://api.perplexity.ai/chat/completions",format:"openai"},together:{baseUrl:"https://api.together.xyz/v1/chat/completions",format:"openai"},fireworks:{baseUrl:"https://api.fireworks.ai/inference/v1/chat/completions",format:"openai"},cerebras:{baseUrl:"https://api.cerebras.ai/v1/chat/completions",format:"openai"},cohere:{baseUrl:"https://api.cohere.ai/v1/chat/completions",format:"openai"},nebius:{baseUrl:"https://api.studio.nebius.ai/v1/chat/completions",format:"openai"},siliconflow:{baseUrl:"https://api.siliconflow.cn/v1/chat/completions",format:"openai"},hyperbolic:{baseUrl:"https://api.hyperbolic.xyz/v1/chat/completions",format:"openai"},deepgram:{baseUrl:"https://api.deepgram.com/v1/listen",format:"openai"},assemblyai:{baseUrl:"https://api.assemblyai.com/v1/audio/transcriptions",format:"openai"},nanobanana:{baseUrl:"https://api.nanobananaapi.ai/v1/chat/completions",format:"openai"},chutes:{baseUrl:"https://llm.chutes.ai/v1/chat/completions",format:"openai"},ollama:{baseUrl:"https://ollama.com/api/chat",format:"ollama"},"ollama-local":{baseUrl:"http://localhost:11434/api/chat",format:"ollama"},vertex:{baseUrl:"https://aiplatform.googleapis.com",format:"vertex"},"vertex-partner":{baseUrl:"https://aiplatform.googleapis.com",format:"openai"},gitlab:{baseUrl:"https://gitlab.com/api/v4/chat/completions",format:"openai"},codebuddy:{baseUrl:"https://copilot.tencent.com/v1/chat/completions",format:"openai"},opencode:{baseUrl:"https://opencode.ai",format:"openai",headers:{"x-opencode-client":"desktop"},noAuth:!0},"opencode-go":{baseUrl:"https://opencode.ai/zen/go/v1/chat/completions",format:"openai",headers:{}},"grok-web":{baseUrl:"https://grok.com/rest/app-chat/conversations/new",format:"grok-web",authType:"cookie"},"perplexity-web":{baseUrl:"https://www.perplexity.ai/rest/sse/perplexity_ask",format:"perplexity-web",authType:"cookie"},azure:{baseUrl:"",format:"openai",headers:{}},"cloudflare-ai":{baseUrl:"https://api.cloudflare.com/client/v4/accounts/{accountId}/ai/v1/chat/completions",format:"openai"},"xiaomi-mimo":{baseUrl:"https://api.xiaomimimo.com/v1/chat/completions",format:"openai"},"xiaomi-tokenplan":{baseUrl:"https://token-plan-sgp.xiaomimimo.com/v1/chat/completions",format:"openai"},agentrouter:{baseUrl:"https://agentrouter.org/v1/messages",format:"claude",headers:{...f}},aimlapi:{baseUrl:"https://api.aimlapi.com/v1/chat/completions",format:"openai"},novita:{baseUrl:"https://api.novita.ai/v3/openai/chat/completions",format:"openai"},modal:{baseUrl:"https://api.modal.com/v1/chat/completions",format:"openai"},reka:{baseUrl:"https://api.reka.ai/v1/chat/completions",format:"openai"},nlpcloud:{baseUrl:"https://api.nlpcloud.io/v1/gpu/chatbot",format:"openai"},bazaarlink:{baseUrl:"https://bazaarlink.ai/api/v1/chat/completions",format:"openai"},completions:{baseUrl:"https://completions.me/api/v1/chat/completions",format:"openai"},enally:{baseUrl:"https://ai.enally.in/v1/chat/completions",format:"openai",authHeader:"x-api-key"},freetheai:{baseUrl:"https://api.freetheai.xyz/v1/chat/completions",format:"openai"},llm7:{baseUrl:"https://api.llm7.io/v1/chat/completions",format:"openai"},lepton:{baseUrl:"https://api.lepton.ai/api/v1/chat/completions",format:"openai"},kluster:{baseUrl:"https://api.kluster.ai/v1/chat/completions",format:"openai"},ai21:{baseUrl:"https://api.ai21.com/studio/v1/chat/completions",format:"openai"},"inference-net":{baseUrl:"https://api.inference.net/v1/chat/completions",format:"openai"},predibase:{baseUrl:"https://serving.app.predibase.com/v1/chat/completions",format:"openai"},bytez:{baseUrl:"https://api.bytez.com/models/v2",format:"openai"},morph:{baseUrl:"https://api.morphllm.com/v1/chat/completions",format:"openai"},longcat:{baseUrl:"https://api.longcat.chat/openai/v1/chat/completions",format:"openai"},puter:{baseUrl:"https://api.puter.com/puterai/openai/v1/chat/completions",format:"openai"},uncloseai:{baseUrl:"https://hermes.ai.unturf.com/v1/chat/completions",format:"openai",noAuth:!0},scaleway:{baseUrl:"https://api.scaleway.ai/v1/chat/completions",format:"openai"},deepinfra:{baseUrl:"https://api.deepinfra.com/v1/openai/chat/completions",format:"openai"},sambanova:{baseUrl:"https://api.sambanova.ai/v1/chat/completions",format:"openai"},nscale:{baseUrl:"https://inference.api.nscale.com/v1/chat/completions",format:"openai"},baseten:{baseUrl:"https://inference.baseten.co/v1/chat/completions",format:"openai"},publicai:{baseUrl:"https://api.publicai.co/v1/chat/completions",format:"openai"},"nous-research":{baseUrl:"https://inference-api.nousresearch.com/v1/chat/completions",format:"openai"},glhf:{baseUrl:"https://glhf.chat/api/openai/v1/chat/completions",format:"openai"},blackbox:{baseUrl:"https://api.blackbox.ai/chat/completions",format:"openai"}};function i(a){return(a?.providerSpecificData?.baseUrl?.trim()||"http://localhost:11434").replace(/\/$/,"")}let j={sgp:"https://token-plan-sgp.xiaomimimo.com/v1",cn:"https://token-plan-cn.xiaomimimo.com/v1",ams:"https://token-plan-ams.xiaomimimo.com/v1"};function k(a){return j[a?.providerSpecificData?.region]||j.sgp}},38709:(a,b,c)=>{c.d(b,{Ab:()=>h,Md:()=>i});var d=c(90737),e=c(38113),f=c(39609);let g=`${d.Nr}/models`;function h(a,b={}){let c={Authorization:`Bearer ${a}`,Accept:"application/json","User-Agent":d.fZ,"x-xai-token-auth":"xai-grok-cli","x-grok-client-version":d.uG,"x-grok-client-identifier":d.rK,"x-grok-client-mode":"headless"},e=b?.email,f=b?.userId||b?.principalId;return e&&(c["x-email"]=e),f&&(c["x-userid"]=f),c}async function i(a,b={}){let{fetchFn:c=f.proxyAwareFetch,log:j=console,proxyOptions:k=null,onCredentialsRefreshed:l}=b,m=a?.accessToken;if(!m)return{models:[],warning:"Grok CLI access token is missing."};let n=b=>c(g,{method:"GET",headers:h(b,a?.providerSpecificData)},k);try{let b=await n(m);if((401===b.status||403===b.status)&&a?.refreshToken){let c=await (0,e.f)(a,j,k);if(c?.accessToken){m=c.accessToken;try{await l?.(c)}catch(a){j?.warn?.("Grok CLI credential persistence failed",a)}b=await n(m)}}if(!b.ok){let a=await b.text().catch(()=>"");return{models:[],warning:`Grok CLI model discovery failed (${b.status})${a?`: ${a.slice(0,160)}`:""}`}}let c=function(a){let b,c=new Set,e=[];for(let[f,g]of(b=Array.isArray(a)?a:a?.data??a?.models??a?.results??[],Array.isArray(b)?b.map(a=>[null,a]):b&&"object"==typeof b?Object.entries(b):[])){let a="string"==typeof g?{id:g}:g;if(!a||"object"!=typeof a||Array.isArray(a))continue;let b=String(a.id??a.model_id??a.modelId??a.model??a.slug??f??a.name??"").trim();if(!b||c.has(b))continue;c.add(b);let h={...a,id:b,name:a.display_name??a.displayName??a.name??b,targetFormat:"openai-responses"},i=Number(a.context_length??a.contextLength??a.context_window??a.contextWindow),j=Number(a.max_output_tokens??a.maxOutputTokens);Number.isFinite(i)&&i>0&&(h.contextLength=i),Number.isFinite(j)&&j>0&&(h.maxOutputTokens=j),b===d.to&&(h.contextLength||=5e5,h.maxOutputTokens||=64e3),e.push(h)}return e}(await b.json());return c.length?{models:c}:{models:[],warning:"Grok CLI returned no selectable models."}}catch(a){return{models:[],warning:`Grok CLI model discovery failed: ${a.message}`}}}},39326:(a,b,c)=>{c.d(b,{B:()=>g});var d=c(71998);let e=new Set(["vercel","cloudflare","deno"]);function f(a){return null==a?"":String(a).trim()}async function g(a={}){try{let b=f(a?.proxyPoolId),c="__none__"===b?"":b,g=function(a={}){let b=a?.connectionProxyEnabled===!0,c=f(a?.connectionProxyUrl);return{connectionProxyEnabled:b,connectionProxyUrl:c,connectionNoProxy:f(a?.connectionNoProxy)}}(a);if(c){let a=await (0,d.hr)(c),b=f(a?.proxyUrl),g=f(a?.noProxy);if(a&&!0===a.isActive&&b){if(e.has(a.type))return{source:a.type,proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:g,strictProxy:!0===a.strictProxy,vercelRelayUrl:b};return{source:"pool",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!0,connectionProxyUrl:b,connectionNoProxy:g,strictProxy:!0===a.strictProxy}}}if(g.connectionProxyEnabled&&g.connectionProxyUrl)return{source:"legacy",proxyPoolId:c||null,proxyPool:null,...g};return{source:"none",proxyPoolId:c||null,proxyPool:null,...g}}catch(a){return console.error("[resolveConnectionProxyConfig] Failed to resolve proxy config:",a),{source:"error",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:"",strictProxy:!1}}}},46266:(a,b,c)=>{c.d(b,{m:()=>X});var d=c(75924),e=c(39609);let f={international:"https://api.z.ai/api/monitor/usage/quota/limit",china:"https://open.bigmodel.cn/api/monitor/usage/quota/limit"},g={minimax:["https://www.minimax.io/v1/token_plan/remains","https://api.minimax.io/v1/api/openplatform/coding_plan/remains"],"minimax-cn":["https://www.minimaxi.com/v1/api/openplatform/coding_plan/remains","https://api.minimaxi.com/v1/api/openplatform/coding_plan/remains"]},h={quotaApiUrl:"https://cloudcode-pa.googleapis.com/v1internal:fetchAvailableModels",loadProjectApiUrl:"https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",tokenUrl:"https://oauth2.googleapis.com/token",clientId:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecret:"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",userAgent:(0,d.A9)()},i="2023-06-01";async function j(a,b=null){let{provider:c,accessToken:d,apiKey:e,providerSpecificData:f}=a;switch(c){case"github":return await l(d,f,b);case"gemini-cli":return await n(d,f,b);case"antigravity":return await p(d,f,b);case"claude":return await r(d,b);case"codex":return await w(d,b);case"kiro":return await x(d,f,b);case"qwen":return await y(d,f);case"iflow":return await z(d);case"ollama":return await A(d);case"glm":case"glm-cn":return await B(e,c,b);case"minimax":case"minimax-cn":return await H(e,c,b);default:return{message:`Usage API not implemented for ${c}`}}}function k(a){if(!a)return null;try{if(a instanceof Date)return a.toISOString();if("number"==typeof a)return new Date(a<1e12?1e3*a:a).toISOString();if("string"==typeof a){if(/^\d+$/.test(a)){let b=Number(a);return new Date(b<1e12?1e3*b:b).toISOString()}return new Date(a).toISOString()}return null}catch(b){return console.warn(`Failed to parse reset time: ${a}`,b),null}}async function l(a,b,c=null){try{if(!a)throw Error("No GitHub access token available. Please re-authorize the connection.");let b=await (0,e.proxyAwareFetch)("https://api.github.com/copilot_internal/user",{headers:{Authorization:`token ${a}`,Accept:"application/json","X-GitHub-Api-Version":"2022-11-28","User-Agent":"GitHubCopilotChat/0.26.7","Editor-Version":"vscode/1.100.0","Editor-Plugin-Version":"copilot-chat/0.26.7"}},c);if(!b.ok){let a=await b.text();throw Error(`GitHub API error: ${a}`)}let d=await b.json();if(d.quota_snapshots){let a=d.quota_snapshots,b=k(d.quota_reset_date);return{plan:d.copilot_plan,resetDate:d.quota_reset_date,quotas:{chat:{...m(a.chat),resetAt:b},completions:{...m(a.completions),resetAt:b},premium_interactions:{...m(a.premium_interactions),resetAt:b}}}}if(d.monthly_quotas||d.limited_user_quotas){let a=d.monthly_quotas||{},b=d.limited_user_quotas||{},c=k(d.limited_user_reset_date);return{plan:d.copilot_plan||d.access_type_sku,resetDate:d.limited_user_reset_date,quotas:{chat:{used:b.chat||0,total:a.chat||0,unlimited:!1,resetAt:c},completions:{used:b.completions||0,total:a.completions||0,unlimited:!1,resetAt:c}}}}return{message:"GitHub Copilot connected. Unable to parse quota data."}}catch(a){throw Error(`Failed to fetch GitHub usage: ${a.message}`)}}function m(a){return a?{used:a.entitlement-a.remaining,total:a.entitlement,remaining:a.remaining,unlimited:a.unlimited||!1}:{used:0,total:0,unlimited:!0}}async function n(a,b,c=null){if(!a)return{plan:"Free",message:"Gemini CLI access token not available."};try{let d,f=b?.projectId||null,g="Free";if(!f){let b=await o(a,c);f=b?.cloudaicompanionProject||null,g=b?.currentTier?.name||g}if(!f)return{plan:g,message:"Gemini CLI project ID not available."};let h=new AbortController,i=setTimeout(()=>h.abort(),1e4);try{d=await (0,e.proxyAwareFetch)("https://cloudcode-pa.googleapis.com/v1internal:retrieveUserQuota",{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify({project:f}),signal:h.signal},c)}finally{clearTimeout(i)}if(!d.ok)return{plan:g,message:`Gemini CLI quota error (${d.status}).`};let j=await d.json(),l={};if(Array.isArray(j.buckets))for(let a of j.buckets){if(!a.modelId||null==a.remainingFraction)continue;let b=Number(a.remainingFraction)||0,c=Math.round(1e3*b),d=Math.max(0,1e3-c);l[a.modelId]={used:d,total:1e3,resetAt:k(a.resetTime),remainingPercentage:100*b,unlimited:!1}}return{plan:g,quotas:l}}catch(a){return{message:`Gemini CLI error: ${a.message}`}}}async function o(a,b=null){let c=new AbortController,f=setTimeout(()=>c.abort(),1e4);try{let f=await (0,e.proxyAwareFetch)("https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify({metadata:d.Cn}),signal:c.signal},b);if(!f.ok)return null;return await f.json()}catch{return null}finally{clearTimeout(f)}}async function p(a,b,c=null){try{let b,d=await q(a,c),f=d?.cloudaicompanionProject||null,g=new AbortController,i=setTimeout(()=>g.abort(),1e4);try{b=await (0,e.proxyAwareFetch)(h.quotaApiUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"User-Agent":h.userAgent,"Content-Type":"application/json","X-Client-Name":"antigravity","X-Client-Version":"1.107.0","x-request-source":"local"},body:JSON.stringify({...f?{project:f}:{}}),signal:g.signal},c)}finally{clearTimeout(i)}if(403===b.status)return{message:"Antigravity quota API access forbidden. Chat may still work.",quotas:{}};if(401===b.status)return{message:"Antigravity quota API authentication expired. Chat may still work.",quotas:{}};if(!b.ok)throw Error(`Antigravity API error: ${b.status}`);let j=await b.json(),l={};if(j.models){let a=["gemini-3.7-flash","gemini-3.6-flash-high","gemini-3.6-flash-medium","gemini-3.6-flash-low","gemini-3-flash-agent","gemini-3.5-flash-medium","gemini-3.5-flash-low","gemini-pro-agent","gemini-3.1-pro-low","claude-sonnet-4-6","claude-opus-4-6-thinking","gpt-oss-120b-medium","gemini-3-flash"];for(let[b,c]of Object.entries(j.models)){if(!c.quotaInfo||c.isInternal||!a.includes(b))continue;let d=c.quotaInfo.remainingFraction||0,e=100*d,f=Math.round(1e3*d),g=1e3-f;l[b]={used:g,total:1e3,resetAt:k(c.quotaInfo.resetTime),remainingPercentage:e,unlimited:!1,displayName:c.displayName||b}}}return{plan:d?.currentTier?.name||"Unknown",quotas:l,subscriptionInfo:d}}catch(a){return console.error("[Antigravity Usage] Error:",a.message,a.cause),{message:`Antigravity error: ${a.message}`}}}async function q(a,b=null){let c=new AbortController,f=setTimeout(()=>c.abort(),1e4);try{let f=await (0,e.proxyAwareFetch)(h.loadProjectApiUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"User-Agent":h.userAgent,"Content-Type":"application/json","x-request-source":"local"},body:JSON.stringify({metadata:d.Cn,mode:1}),signal:c.signal},b);if(!f.ok)return null;return await f.json()}catch(a){return console.error("[Antigravity Subscription] Error:",a.message),null}finally{clearTimeout(f)}}async function r(a,b=null){try{let c=await (0,e.proxyAwareFetch)("https://api.anthropic.com/api/oauth/usage",{method:"GET",headers:{Authorization:`Bearer ${a}`,"anthropic-beta":"oauth-2025-04-20","anthropic-version":i}},b);if(c.ok){let a=await c.json(),b={},d=a=>a&&"object"==typeof a&&"number"==typeof a.utilization,e=a=>{let b=a.utilization,c=Math.max(0,100-b);return{used:b,total:100,remaining:c,remainingPercentage:c,resetAt:k(a.resets_at),unlimited:!1}},f={fable_5:"Fable 5",fable:"Fable 5",sonnet_5:"Sonnet 5",sonnet:"Sonnet",opus:"Opus",haiku:"Haiku"},g=a=>f[a]||a.replace(/_/g," ");d(a.five_hour)&&(b["session (5h)"]=e(a.five_hour)),d(a.seven_day)&&(b["weekly (7d)"]=e(a.seven_day));let h=new Set;for(let[c,f]of Object.entries(a))if(c.startsWith("seven_day_")&&"seven_day"!==c&&d(f)){let a=c.replace("seven_day_","");h.add(a),b[`weekly ${g(a)} (7d)`]=e(f)}return h.has("fable_5")||h.has("fable")||(b["weekly Fable 5 (7d)"]={used:0,total:100,remaining:100,remainingPercentage:100,resetAt:null,unlimited:!1}),{plan:"Claude Code",extraUsage:a.extra_usage??null,quotas:b}}return console.warn(`[Claude Usage] OAuth endpoint returned ${c.status}, falling back to legacy`),await s(a,b)}catch(a){return{message:`Claude connected. Unable to fetch usage: ${a.message}`}}}async function s(a,b=null){try{let c=await (0,e.proxyAwareFetch)("https://api.anthropic.com/v1/settings",{method:"GET",headers:{Authorization:`Bearer ${a}`,"anthropic-version":i}},b);if(c.ok){let d=await c.json();if(d.organization_id){let c=await (0,e.proxyAwareFetch)("https://api.anthropic.com/v1/organizations/{org_id}/usage".replace("{org_id}",d.organization_id),{method:"GET",headers:{Authorization:`Bearer ${a}`,"anthropic-version":i}},b);if(c.ok){let a=await c.json();return{plan:d.plan||"Unknown",organization:d.organization_name,quotas:a}}}return{plan:d.plan||"Unknown",organization:d.organization_name,message:"Claude connected. Usage details require admin access."}}return{message:"Claude connected. Usage API requires admin permissions."}}catch(a){return{message:`Claude connected. Unable to fetch usage: ${a.message}`}}}function t(a){return!a||"object"!=typeof a||Array.isArray(a)?null:a.rate_limit&&"object"==typeof a.rate_limit?a.rate_limit:a}function u(a){let b=Math.max(0,Math.min(100,function(a,b=0){if("number"==typeof a&&Number.isFinite(a))return a;if("string"==typeof a&&a.trim()){let b=Number(a);if(Number.isFinite(b))return b}return b}(a?.used_percent??a?.percent_used,0)));return{used:b,total:100,remaining:Math.max(0,100-b),resetAt:k(a?.reset_at??a?.resets_at??a?.resetAt??null),unlimited:!1}}function v(a,b,c){let d=t(c);if(!d)return!1;let e=d.primary_window||d.primary||c.primary_window||c.primary,f=d.secondary_window||d.secondary||c.secondary_window||c.secondary,g=!1;return e&&(a[b?`${b}_session`:"session"]=u(e),g=!0),f&&(a[b?`${b}_weekly`:"weekly"]=u(f),g=!0),g}async function w(a,b=null){try{let c=await (0,e.proxyAwareFetch)("https://chatgpt.com/backend-api/wham/usage",{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},b);if(!c.ok)return{message:`Codex connected. Usage API temporarily unavailable (${c.status}).`};let d=await c.json(),f=d.rate_limit||d.rate_limits||d.rate_limits_by_limit_id?.codex||{},g=function(a){if(a.code_review_rate_limit||a.review_rate_limit)return a.code_review_rate_limit||a.review_rate_limit;let b=a.rate_limits_by_limit_id;return b&&"object"==typeof b&&!Array.isArray(b)?b.code_review||b.codex_review||b.review||null:(Array.isArray(a.additional_rate_limits)?a.additional_rate_limits:[]).find(a=>{let b=String(a?.limit_name||a?.metered_feature||a?.id||"").toLowerCase();return"code_review"===b||"codex_review"===b||"review"===b||b.includes("review")})||null}(d),h={};return v(h,"",f),v(h,"review",g),{plan:d.plan_type||d.summary?.plan||"unknown",limitReached:t(f)?.limit_reached||!1,reviewLimitReached:t(g)?.limit_reached||!1,quotas:h}}catch(a){throw Error(`Failed to fetch Codex usage: ${a.message}`)}}async function x(a,b,c=null){let d=b?.profileArn||"arn:aws:codewhisperer:us-east-1:638616132270:profile/AAAACCCCXXXX",f=b?.authMethod||"builder-id",g=new URLSearchParams({isEmailRequired:"true",origin:"AI_EDITOR",resourceType:"AGENTIC_REQUEST"}),h=!1,i=[];for(let b of[{name:"codewhisperer-get",run:async()=>(0,e.proxyAwareFetch)(`https://codewhisperer.us-east-1.amazonaws.com/getUsageLimits?${g.toString()}`,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","x-amz-user-agent":"aws-sdk-js/1.0.0 KiroIDE","user-agent":"aws-sdk-js/1.0.0 KiroIDE"}},c)},{name:"codewhisperer-post",run:async()=>(0,e.proxyAwareFetch)("https://codewhisperer.us-east-1.amazonaws.com",{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/x-amz-json-1.0","x-amz-target":"AmazonCodeWhispererService.GetUsageLimits",Accept:"application/json"},body:JSON.stringify({origin:"AI_EDITOR",profileArn:d,resourceType:"AGENTIC_REQUEST"})},c)},{name:"q-get",run:async()=>{let b=new URLSearchParams({origin:"AI_EDITOR",profileArn:d,resourceType:"AGENTIC_REQUEST"});return(0,e.proxyAwareFetch)(`https://q.us-east-1.amazonaws.com/getUsageLimits?${b}`,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},c)}}])try{let a=await b.run();if(!a.ok){let c=await a.text().catch(()=>"");(401===a.status||403===a.status)&&(h=!0),i.push(`${b.name}:${a.status}${c?`:${c}`:""}`);continue}let c=await a.json();return function(a){let b=a.usageBreakdownList||[],c={},d=k(a.nextDateReset||a.resetDate);return b.forEach(a=>{let b=a.resourceType?.toLowerCase()||"unknown",e=a.currentUsageWithPrecision||0,f=a.usageLimitWithPrecision||0;if(c[b]={used:e,total:f,remaining:f-e,resetAt:d,unlimited:!1},a.freeTrialInfo){let e=a.freeTrialInfo.currentUsageWithPrecision||0,f=a.freeTrialInfo.usageLimitWithPrecision||0;c[`${b}_freetrial`]={used:e,total:f,remaining:f-e,resetAt:k(a.freeTrialInfo.freeTrialExpiry||d),unlimited:!1}}}),{plan:a.subscriptionInfo?.subscriptionTitle||"Kiro",quotas:c}}(c)}catch(a){i.push(`${b.name}:${a.message}`)}return h&&"idc"===f?{message:"Kiro quota API is unavailable for the current AWS IAM Identity Center session. Chat may still work. If this persists after renewing your session, reconnect Kiro.",quotas:{}}:h&&("google"===f||"github"===f)?{message:"Kiro quota API authentication expired. Chat may still work.",quotas:{}}:h?{message:"Kiro quota API rejected the current token. Chat may still work.",quotas:{}}:{message:i.length>0?`Unable to fetch Kiro usage right now. (${i[i.length-1]})`:"Unable to fetch Kiro usage right now.",quotas:{}}}async function y(a,b){try{if(!b?.resourceUrl)return{message:"Qwen connected. No resource URL available."};return{message:"Qwen connected. Usage tracked per request."}}catch(a){return{message:"Unable to fetch Qwen usage."}}}async function z(a){try{return{message:"iFlow connected. Usage tracked per request."}}catch(a){return{message:"Unable to fetch iFlow usage."}}}async function A(a,b){try{return{plan:b?.plan||"Free",message:"Ollama Cloud uses a free tier with light usage limits (resets every 5h & 7d). For detailed usage tracking, visit ollama.com/settings/keys.",quotas:[]}}catch(a){return{message:"Unable to fetch Ollama Cloud usage."}}}async function B(a,b,c=null){if(!a)return{message:"GLM API key not available."};let d=f["glm-cn"===b?"china":"international"];try{let b=await (0,e.proxyAwareFetch)(d,{headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},c);if(!b.ok){if(401===b.status)return{message:"GLM API key invalid or expired."};return{message:`GLM quota API error (${b.status}).`}}let f=await b.json(),g=f?.data&&"object"==typeof f.data?f.data:{},h=Array.isArray(g.limits)?g.limits:[],i={};for(let a of h){if(!a||"TOKENS_LIMIT"!==a.type)continue;let b=Number(a.percentage)||0,c=Number(a.nextResetTime)||0,d=Math.max(0,100-b);i.session={used:b,total:100,remaining:d,remainingPercentage:d,resetAt:c>0?new Date(c).toISOString():null,unlimited:!1}}let j="string"==typeof g.level?g.level:"";return{plan:j?j.charAt(0).toUpperCase()+j.slice(1).toLowerCase():"Unknown",quotas:i}}catch(a){return{message:`GLM error: ${a.message}`}}}function C(a,b,c){return a&&"object"==typeof a?a[b]??a[c]??null:null}function D(a){return Math.max(0,Number(C(a,"current_interval_total_count","currentIntervalTotalCount"))||0)}function E(a){return Math.max(0,Number(C(a,"current_weekly_total_count","currentWeeklyTotalCount"))||0)}function F(a){return D(a)>0||E(a)>0}function G(a,b,c,d,e,f,g,h){var i;let j,l,m,n=d(c);if(n<=0)return;let o=Math.max(0,Number(C(c,e,f))||0);a[b]=(i=function(a,b,c,d,e,f){let g=Number(C(a,c,d))||0;return g>0?new Date(b+g).toISOString():k(C(a,e,f))}(c,...g),j=Math.max(0,n),l=h?Math.max(j-o,0):Math.min(Math.max(0,o),j),m=Math.max(j-l,0),{used:l,total:j,remaining:m,remainingPercentage:j>0?Math.max(0,Math.min(100,m/j*100)):0,resetAt:i,unlimited:!1})}async function H(a,b,c=null){if(!a)return{message:"MiniMax API key not available."};let d=g[b]||[],f="";for(let b=0;b<d.length;b+=1){let g=d[b],h=b<d.length-1;try{let b=await (0,e.proxyAwareFetch)(g,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","Content-Type":"application/json"}},c),d=await b.text(),i={};if(d)try{i=JSON.parse(d)}catch{i={}}let j=(i?.base_resp??i?.baseResp)||{},k=Number(j.status_code??j.statusCode)||0,l=String(j.status_msg??j.statusMsg??"").trim(),m=`${l} ${d}`.trim(),n=/token plan|coding plan|invalid api key|invalid key|unauthorized|inactive/i;if(401===b.status||403===b.status||1004===k||n.test(m))return{message:"MiniMax API key invalid or inactive. Use an active Token/Coding Plan key."};if(!b.ok){if(f=`MiniMax usage endpoint error (${b.status})`,(404===b.status||405===b.status||b.status>=500)&&h)continue;return{message:`MiniMax connected. ${f}`}}if(0!==k)return{message:`MiniMax connected. ${l||"Upstream quota API error"}`};let o=i?.model_remains??i?.modelRemains,p=(Array.isArray(o)?o:[]).filter(F);if(0===p.length)return{message:"MiniMax connected. No quota data was returned."};let q=Date.now(),r=g.includes("/coding_plan/remains"),s={};for(let a of p){let b=function(a){let b=String(C(a,"model_name","modelName")||"").trim();return b?b.replace(/[_-]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,a=>a.toUpperCase()).replace(/\bTo\b/g,"to").replace(/\bTts\b/g,"TTS").replace(/\bHd\b/g,"HD"):"MiniMax"}(a);G(s,`${b} (5h)`,a,D,"current_interval_usage_count","currentIntervalUsageCount",[q,"remains_time","remainsTime","end_time","endTime"],r),G(s,`${b} (7d)`,a,E,"current_weekly_usage_count","currentWeeklyUsageCount",[q,"weekly_remains_time","weeklyRemainsTime","weekly_end_time","weeklyEndTime"],r)}if(0===Object.keys(s).length)return{message:"MiniMax connected. Unable to extract quota usage."};return{quotas:s}}catch(a){if(f=a.message,!h)break}}return{message:f?`MiniMax connected. Unable to fetch usage: ${f}`:"MiniMax connected. Unable to fetch usage."}}var I=c(90737),J=c(38709);function K(a,b=0){if(!Buffer.isBuffer(a)||b<0||a.length-b<5)return null;let c=a[b];if(0!==c&&1!==c&&128!==c&&129!==c)return null;let d=b+5,e=a.readUInt32BE(b+1);return e>a.length-d?null:{flag:c,payloadStart:d,payloadLength:e}}function L(a,b){let c=0n,d=0n,e=b;for(;;){if(e>=a.length)return null;let b=a[e];if(c|=BigInt(127&b)<<d,e+=1,(128&b)==0)break;if((d+=7n)>70n)return null}return{value:Number(c),next:e}}function M(a){let b=new Map,c=0;for(;c<a.length;){let d=function(a,b){let c=L(a,b);if(!c)return null;let d=c.value>>>3,e=7&c.value;if(!d)return null;if(0===e){let b=L(a,c.next);return b?{fieldNumber:d,field:{wireType:e,value:b.value},next:b.next}:null}if(2===e){let b=L(a,c.next);return!b||b.value<0||b.next+b.value>a.length?null:{fieldNumber:d,field:{wireType:e,bytes:a.subarray(b.next,b.next+b.value)},next:b.next+b.value}}let f=1===e?8:4*(5===e);return!f||c.next+f>a.length?null:{fieldNumber:d,field:{wireType:e,bytes:a.subarray(c.next,c.next+f)},next:c.next+f}}(a,c);if(!d)return null;b.set(d.fieldNumber,d.field),c=d.next}return b}let N=`${I.Nr}/billing?format=credits`,O=`${I.Nr}/user?include=subscription`,P=Buffer.from([0,0,0,0,0]);function Q(a,b=NaN){a&&"object"==typeof a&&!Array.isArray(a)&&"val"in a&&(a=a.val);let c=Number(a);return Number.isFinite(c)?c:b}function R(a,b){let c=a?.subscriptionTier??a?.subscription_tier??a?.subscription?.tier??b?.subscriptionTier??b?.subscription_tier;return"string"==typeof c?c.trim():""}function S(a,b,c=null){let d=Math.max(0,Q(b,0)),e=Math.max(0,Q(a,0));return d<=0?{used:e,total:0,remainingPercentage:0,resetAt:c,unlimited:!1}:{used:e,total:d,remainingPercentage:Math.max(0,(d-e)/d*100),resetAt:c,unlimited:!1}}async function T(a,b=null){try{let c=await (0,e.proxyAwareFetch)("https://grok.com/grok_api_v2.GrokBuildBilling/GetGrokCreditsConfig",{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/grpc-web+proto","X-Grpc-Web":"1",Accept:"application/grpc-web+proto"},body:P},b);if(!c?.ok)return null;let d=await c.arrayBuffer().catch(()=>null);if(!d)return null;return function(a){if(!Buffer.isBuffer(a)||0===a.length)return null;try{let b=K(a,0)?function(a){let b=0;for(;b<a.length;){let c=K(a,b);if(!c)break;let d=c.payloadStart+c.payloadLength;if((128&c.flag)==0)return a.subarray(c.payloadStart,d);b=d}return null}(a):a;if(!b)return null;let c=M(b),d=c?.get(1);if(!d||2!==d.wireType)return null;let e=M(d.bytes);if(!e)return null;let f=e.get(1),g=0;if(f?.wireType===5)g=f.bytes.readFloatLE(0);else if(f?.wireType===1)g=f.bytes.readDoubleLE(0);else if(f)return null;if(!Number.isFinite(g)||g<0)return null;return{percentUsed:Math.min(100,100*g),resetAt:function(a){if(!a||2!==a.wireType)return null;let b=M(a.bytes);if(!b)return null;let c=b.get(1),d=b.get(2),e=c?.wireType===0?c.value:0,f=new Date(1e3*e+Math.round((d?.wireType===0?d.value:0)/1e6));return Number.isNaN(f.getTime())?null:f.toISOString()}(e.get(5))}}catch{return null}}(Buffer.from(d))}catch{return null}}async function U(a,b=null,c=null){if(!a)return{message:"Grok CLI access token not available."};let d=(0,J.Ab)(a,b||{}),[f,g]=await Promise.all([(0,e.proxyAwareFetch)(N,{method:"GET",headers:d},c),(0,e.proxyAwareFetch)(O,{method:"GET",headers:d},c).catch(()=>null)]);if(401===f.status||403===f.status)return{message:"Grok CLI authentication expired. Please re-authorize."};if(!f.ok){let a=await f.text().catch(()=>"");return{message:`Grok CLI billing API error (${f.status})${a?`: ${a.slice(0,200)}`:""}`}}let h=await f.json().catch(()=>null);if(!h||"object"!=typeof h)return{message:"Grok CLI billing response was not JSON."};let i=function(a,b=null,c=""){let d=a&&"object"==typeof a?a:{},e=d.config&&"object"==typeof d.config&&!Array.isArray(d.config)?d.config:d,f=function(a){if(!a)return null;try{let b="string"==typeof a&&/^\d+$/.test(a)?Number(a):a;if("number"==typeof b)return new Date(b<1e12?1e3*b:b).toISOString();return new Date(a).toISOString()}catch{return null}}(e.billingPeriodEnd??e.billing_period_end??e.currentPeriod?.end??e.resetAt??e.resetsAt??e.periodEnd??d.billingPeriodEnd??d.billing_period_end??d.resetAt??d.resetsAt??d.periodEnd),g={},h=R(b,e),i=!!h&&!/^(free|none|null)$/i.test(h),j=Q(e.monthlyLimit??e.monthly_limit??d.monthlyLimit??d.monthly_limit),k=Q(e.includedUsed??e.included_used??d.includedUsed??d.included_used),l=Q(e.totalUsed??e.total_used??d.totalUsed??d.total_used);j>0&&(g["Monthly included"]=S(Number.isFinite(k)?k:Number.isFinite(l)?l:0,j,f));let m=Q(e.onDemandCap??d.onDemandCap),n=Q(e.onDemandUsed??d.onDemandUsed);m>0?g["On-demand"]=S(Number.isFinite(n)?n:0,m,f):!i&&0===m&&Number.isFinite(n)&&(g["On-demand"]={used:1,total:1,remainingPercentage:0,resetAt:f,unlimited:!1});let o=Q(e.prepaidBalance??d.prepaidBalance);o>0&&(g.Prepaid={used:0,total:o,remainingPercentage:100,resetAt:null,unlimited:!1});let p=Q(e.creditUsagePercent??e.credit_usage_percent??d.creditUsagePercent??d.credit_usage_percent);return Number.isFinite(p)&&p>=0&&(g["Weekly SuperGrok"]=S(Math.min(100,p),100,f)),{plan:function(a,b,c){let d=function(a){try{return({0:"Free",1:"SuperGrok",2:"X Basic",3:"X Premium",4:"X Premium Plus",5:"SuperGrok Heavy",6:"SuperGrok Lite"})[JSON.parse(Buffer.from(a.split(".")[1],"base64url")).tier]||""}catch{return""}}(c);if(d)return d;let e=R(a,b);return e?e.replace(/[_-]+/g," ").replace(/\b\w/g,a=>a.toUpperCase()):a?.hasGrokCodeAccess===!0?"Grok Code":"Grok Build"}(b,e,c),quotas:g,subscriptionAccess:i}}(h,g?.ok?await g.json().catch(()=>null):null,a);if(!i.quotas["Weekly SuperGrok"]&&i.subscriptionAccess){let b=await T(a,c);b&&Number.isFinite(b.percentUsed)&&(i.quotas["Weekly SuperGrok"]=S(Math.round(Math.max(0,Math.min(100,b.percentUsed))),100,b.resetAt||null))}return 0===Object.keys(i.quotas).length?{plan:i.plan,message:i.subscriptionAccess?"Subscription access is active; Grok does not expose a numeric included quota.":"Grok Build has no numeric quota available for this account."}:{plan:i.plan,quotas:i.quotas}}function V(a){return String(a||"").trim().toLowerCase()}async function W(a,b,c){if(!a?.accessToken)return b;let f=b?.subscriptionInfo?.cloudaicompanionProject||a?.providerSpecificData?.projectId||null;try{var g;let h,i,j=await (0,e.proxyAwareFetch)("https://cloudcode-pa.googleapis.com/v1internal:fetchAvailableModels",{method:"POST",headers:{Authorization:`Bearer ${a.accessToken}`,"User-Agent":(0,d.A9)(),"Content-Type":"application/json","X-Client-Name":"antigravity","X-Client-Version":"1.107.0","x-request-source":"local"},body:JSON.stringify(f?{project:f}:{})},c);if(!j.ok)return b;let k=await j.json(),l=(g=k?.models,h=Object.entries(g||{}).filter(([,a])=>!a?.isInternal&&a?.quotaInfo),i="gemini 3.7 flash",h.find(([,a])=>V(a?.displayName)===i)||h.find(([,a])=>{let b=V(a?.displayName);return b.startsWith(i)&&b.includes("high")})||h.find(([,a])=>V(a?.displayName).startsWith(i))||h.find(([a])=>{let b=V(a);return b.includes("gemini")&&b.includes("3.7")&&b.includes("flash")})||null);if(!l)return b;let[,m]=l,n=Number(m.quotaInfo?.remainingFraction)||0,o=Math.round(1e3*n);return{...b,quotas:{...b?.quotas||{},"gemini-3.7-flash":{used:1e3-o,total:1e3,resetAt:function(a){if(!a)return null;try{if("number"==typeof a)return new Date(a<1e12?1e3*a:a).toISOString();if("string"==typeof a&&/^\d+$/.test(a)){let b=Number(a);return new Date(b<1e12?1e3*b:b).toISOString()}return new Date(a).toISOString()}catch{return null}}(m.quotaInfo?.resetTime),remainingPercentage:100*n,unlimited:!1,displayName:"Gemini 3.7 Flash"}}}}catch(a){return console.warn("[Antigravity Usage] Unable to merge Gemini 3.7 Flash quota:",a.message),b}}async function X(a,b=null){if(a?.provider==="grok-cli")return await U(a.accessToken,a.providerSpecificData,b);let c=await j(a,b);return a?.provider!=="antigravity"?c:await W(a,c,b)}},50122:(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()}},71998:(a,b,c)=>{c.d(b,{Fh:()=>d.getProviderNodes,L9:()=>d.setMitmAliasAll,Mc:()=>d.getProviderConnectionById,OM:()=>d.getModelAliases,P:()=>d.getProviderConnections,Pc:()=>d.deleteProviderNode,Q_:()=>d.updateProxyPool,Qu:()=>d.getProviderNodeById,S8:()=>d.addCustomModel,Uv:()=>d.getCombos,Yd:()=>d.deleteProxyPool,ZO:()=>d.createProxyPool,c:()=>d.getMitmAlias,createProviderConnection:()=>d.createProviderConnection,fK:()=>d.deleteProviderConnection,fv:()=>d.deleteModelAlias,ho:()=>d.updateProviderNode,hr:()=>d.getProxyPoolById,i0:()=>d.createProviderNode,nv:()=>d.getPersonalConnectionSummary,o5:()=>d.setModelAlias,op:()=>d.deleteProviderConnectionsByProvider,uL:()=>d.deleteCustomModel,ui:()=>d.getProxyPools,updateProviderConnection:()=>d.updateProviderConnection,uv:()=>d.getCustomModels,yg:()=>d.getApiKeyById});var d=c(89718)},92280:(a,b,c)=>{Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(28208),e=c(47617),f=c(62018);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},94755:(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(50122);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)}}};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";exports.id=6053,exports.ids=[6053],exports.modules={19225:(a,b,c)=>{a.exports=c(44870)},25060:(a,b,c)=>{c.d(b,{Kj:()=>aX});var d=c(34589),e=c(57975),f=c(77598),g=c(77030),h=c(41692),i=c(78474),j=class extends Error{constructor(a){super(a),this.name="InvalidAsn1Error"}},k=class{size;currentLength=0;currentOffset=0;buffer;constructor(a){if(!Buffer.isBuffer(a))throw TypeError("data must be a Buffer");this.buffer=a,this.size=a.length}get length(){return this.currentLength}get offset(){return this.currentOffset}set offset(a){this.currentOffset=a}get remain(){return this.size-this.currentOffset}get remainingBuffer(){return this.buffer.subarray(this.currentOffset)}setBufferSize(a){this.size=a}readByte(a=!1){if(this.size-this.currentOffset<1)return null;let b=this.buffer.readUInt8(this.currentOffset);return a||(this.currentOffset+=1),b}peek(){return this.readByte(!0)}readLength(a){let b=a??this.currentOffset;if(b>=this.size)return null;let c=this.buffer.readUInt8(b);if(b+=1,(128&c)==128){let a=127&c;if(0===a)throw new j("Indefinite length not supported");if(a>4)throw new j("Encoding too long");if(this.size-b<a)return null;this.currentLength=0;for(let c=0;c<a;c++)this.currentLength=(this.currentLength<<8)+this.buffer.readUInt8(b),b+=1}else this.currentLength=c;return b}readSequence(a){let b=this.peek();if(null===b)return null;if(void 0!==a&&a!==b)throw new j(`Expected 0x${a.toString(16)}: got 0x${b.toString(16)}`);let c=this.readLength(this.currentOffset+1);return null===c?null:(this.currentOffset=c,b)}readInt(){return this.readTag(2)}readBoolean(){let a=this.readTag(1);return null===a?null:0!==a}readEnumeration(){return this.readTag(10)}readString(a=4,b=!1){let c=this.peek();if(null===c)return null;if(c!==a)throw new j(`Expected 0x${a.toString(16)}: got 0x${c.toString(16)}`);let d=this.readLength(this.currentOffset+1);if(null===d||this.currentLength>this.size-d)return null;if(this.currentOffset=d,0===this.currentLength)return b?Buffer.alloc(0):"";let e=this.buffer.subarray(this.currentOffset,this.currentOffset+this.currentLength);return this.currentOffset+=this.currentLength,b?e:e.toString("utf8")}readOID(a=6){let b=this.readString(a,!0);if(null===b)return null;let c=[],d=0;for(let a of b)d=(d<<7)+(127&a),(128&a)==0&&(c.push(d),d=0);let e=c[0]??0;return[Math.trunc(e/40),e%40,...c.slice(1)].join(".")}readTag(a){let b=this.peek();if(null===b)return null;if(b!==a)throw new j(`Expected 0x${a.toString(16)}: got 0x${b.toString(16)}`);let c=this.readLength(this.currentOffset+1);if(null===c)return null;if(this.currentLength>4)throw new j(`Integer too long: ${this.currentLength}`);if(this.currentLength>this.size-c)return null;this.currentOffset=c;let d=this.buffer.readUInt8(this.currentOffset),e=0;for(let a=0;a<this.currentLength;a++)e=e<<8|this.buffer.readUInt8(this.currentOffset),this.currentOffset+=1;return(128&d)==128&&this.currentLength<4&&(e-=1<<8*this.currentLength),0|e}},l=class{data;size;currentOffset=0;growthFactor;sequenceOffsets=[];constructor(a={}){const b=a.size??1024;this.growthFactor=a.growthFactor??8,this.data=Buffer.alloc(b),this.size=b}get buffer(){if(this.sequenceOffsets.length>0)throw new j(`${this.sequenceOffsets.length} unended sequence(s)`);return this.data.subarray(0,this.currentOffset)}writeByte(a){this.ensureCapacity(1),this.data[this.currentOffset++]=a}writeInt(a,b=2){let c=a,d=4;for(;((0xff800000&c)==0||(0xff800000&c)==-8388608)&&d>1;)d--,c<<=8;if(d>4)throw new j("BER integers cannot be > 0xffffffff");for(this.ensureCapacity(2+d),this.data[this.currentOffset++]=b,this.data[this.currentOffset++]=d;d>0;)d--,this.data[this.currentOffset++]=(0xff000000&c)>>>24,c<<=8}writeNull(){this.writeByte(5),this.writeByte(0)}writeEnumeration(a,b=10){this.writeInt(a,b)}writeBoolean(a,b=1){this.ensureCapacity(3),this.data[this.currentOffset++]=b,this.data[this.currentOffset++]=1,this.data[this.currentOffset++]=255*!!a}writeString(a,b=4){let c=Buffer.byteLength(a);this.writeByte(b),this.writeLength(c),c>0&&(this.ensureCapacity(c),this.data.write(a,this.currentOffset),this.currentOffset+=c)}writeBuffer(a,b){this.writeByte(b),this.writeLength(a.length),this.ensureCapacity(a.length),a.copy(this.data,this.currentOffset,0,a.length),this.currentOffset+=a.length}writeStringArray(a){for(let b of a)this.writeString(b)}writeOID(a,b=6){if(!/^(\d+\.){3,}\d+$/.test(a))throw Error("Argument is not a valid OID string");let c=a.split("."),d=[],e=c[0]??"0",f=c[1]??"0";for(let a of(d.push(40*Number(e)+Number(f)),c.slice(2)))this.encodeOidOctet(d,Number(a));for(let a of(this.ensureCapacity(2+d.length),this.writeByte(b),this.writeLength(d.length),d))this.writeByte(a)}writeLength(a){if(this.ensureCapacity(4),a<=127)this.data[this.currentOffset++]=a;else if(a<=255)this.data[this.currentOffset++]=129,this.data[this.currentOffset++]=a;else if(a<=65535)this.data[this.currentOffset++]=130,this.data[this.currentOffset++]=a>>8,this.data[this.currentOffset++]=a;else if(a<=0xffffff)this.data[this.currentOffset++]=131,this.data[this.currentOffset++]=a>>16,this.data[this.currentOffset++]=a>>8,this.data[this.currentOffset++]=a;else throw new j("Length too long (> 4 bytes)")}startSequence(a=48){this.writeByte(a),this.sequenceOffsets.push(this.currentOffset),this.ensureCapacity(3),this.currentOffset+=3}endSequence(){let a=this.sequenceOffsets.pop();if(void 0===a)throw new j("No sequence to end");let b=a+3,c=this.currentOffset-b;if(c<=127)this.shiftContent(b,c,-2),this.data[a]=c;else if(c<=255)this.shiftContent(b,c,-1),this.data[a]=129,this.data[a+1]=c;else if(c<=65535)this.data[a]=130,this.data[a+1]=c>>8,this.data[a+2]=c;else if(c<=0xffffff)this.shiftContent(b,c,1),this.data[a]=131,this.data[a+1]=c>>16,this.data[a+2]=c>>8,this.data[a+3]=c;else throw new j("Sequence too long")}encodeOidOctet(a,b){b<128?a.push(b):(b<16384?a.push(b>>>7|128):(b<2097152?a.push(b>>>14|128):(b<0x10000000?a.push(b>>>21|128):(a.push((b>>>28|128)&255),a.push((b>>>21|128)&255)),a.push((b>>>14|128)&255)),a.push((b>>>7|128)&255)),a.push(127&b))}shiftContent(a,b,c){this.data.copy(this.data,a+c,a,a+b),this.currentOffset+=c}ensureCapacity(a){if(this.size-this.currentOffset<a){let b=this.size*this.growthFactor;b-this.currentOffset<a&&(b+=a);let c=Buffer.alloc(b);this.data.copy(c,0,0,this.currentOffset),this.data=c,this.size=b}}},m=class{type;critical;constructor(a,b={}){this.type=a,this.critical=!0===b.critical}write(a){a.startSequence(),a.writeString(this.type),a.writeBoolean(this.critical),this.writeControl(a),a.endSequence()}parse(a){this.parseControl(a)}writeControl(a){}parseControl(a){}},n=class a extends m{static type="2.16.840.1.113730.3.4.7";value;constructor(b={}){super(a.type,b),this.value=b.value}parseControl(a){if(a.readSequence()){let b,c=a.readInt()??0;8===c&&(b=a.readString());let d=a.readInt()??0;this.value={changeType:c,previousDN:b,changeNumber:d}}}writeControl(a){if(!this.value)return;let b=new l;b.startSequence(),b.writeInt(this.value.changeType),this.value.previousDN&&b.writeString(this.value.previousDN),b.writeInt(this.value.changeNumber),b.endSequence(),a.writeBuffer(b.buffer,4)}},o=class a extends m{static type="1.2.840.113556.1.4.319";value;constructor(b={}){super(a.type,b),this.value=b.value}parseControl(a){if(a.readSequence()){let b=a.readInt()??0,c=a.readString(4,!0)??Buffer.alloc(0);this.value={size:b,cookie:c}}}writeControl(a){if(!this.value)return;let b=new l;b.startSequence(),b.writeInt(this.value.size),this.value.cookie?.length?b.writeBuffer(this.value.cookie,4):b.writeString(""),b.endSequence(),a.writeBuffer(b.buffer,4)}},p=class a extends m{static type="2.16.840.1.113730.3.4.3";value;constructor(b={}){super(a.type,b),this.value=b.value}parseControl(a){if(a.readSequence()){let b=a.readInt()??0,c=a.readBoolean()??!1,d=a.readBoolean()??!1;this.value={changeTypes:b,changesOnly:c,returnECs:d}}}writeControl(a){if(!this.value)return;let b=new l;b.startSequence(),b.writeInt(this.value.changeTypes),b.writeBoolean(this.value.changesOnly),b.writeBoolean(this.value.returnECs),b.endSequence(),a.writeBuffer(b.buffer,4)}},q=class a extends m{static type="1.2.840.113556.1.4.473";values;constructor(b={}){super(a.type,b),Array.isArray(b.value)?this.values=b.value:"object"==typeof b.value?this.values=[b.value]:this.values=[]}parseControl(a){if(a.readSequence(48))for(;a.readSequence(48);){let b=a.readString()??"",c="",d=!1;128===a.peek()&&(c=a.readString(128)??""),129===a.peek()&&(d=0!==a.readTag(129)),this.values.push({attributeType:b,orderingRule:c,reverseOrder:d})}}writeControl(a){if(!this.values.length)return;let b=new l;for(let a of(b.startSequence(48),this.values))b.startSequence(48),b.writeString(a.attributeType,4),a.orderingRule&&b.writeString(a.orderingRule,128),void 0!==a.reverseOrder&&b.writeBoolean(a.reverseOrder,129),b.endSequence();b.endSequence(),a.writeBuffer(b.buffer,4)}},r=class a extends Error{messageDetails;constructor(b){super(b),this.name="MessageParserError",Object.setPrototypeOf(this,a.prototype)}},s=class a extends Error{code;constructor(b,c){super(`${c} Code: 0x${b.toString(16)}`),this.name="ResultCodeError",this.code=b,Object.setPrototypeOf(this,a.prototype)}},t=class a extends s{constructor(b){super(11,b??"An LDAP server limit set by an administrative authority has been exceeded."),this.name="AdminLimitExceededError",Object.setPrototypeOf(this,a.prototype)}},u=class a extends s{constructor(b){super(71,b??"The modify DN operation moves the entry from one LDAP server to another and thus requires more than one LDAP server."),this.name="AffectsMultipleDSAsError",Object.setPrototypeOf(this,a.prototype)}},v=class a extends s{constructor(b){super(36,b??"Either the client does not have access rights to read the aliased object's name or dereferencing is not allowed."),this.name="AliasDerefProblemError",Object.setPrototypeOf(this,a.prototype)}},w=class a extends s{constructor(b){super(33,b??"An error occurred when an alias was dereferenced."),this.name="AliasProblemError",Object.setPrototypeOf(this,a.prototype)}},x=class a extends s{constructor(b){super(68,b??"The add operation attempted to add an entry that already exists, or that the modify operation attempted to rename an entry to the name of an entry that already exists."),this.name="AlreadyExistsError",Object.setPrototypeOf(this,a.prototype)}},y=class a extends s{constructor(b){super(7,b??"The Directory Server does not support the requested Authentication Method."),this.name="AuthMethodNotSupportedError",Object.setPrototypeOf(this,a.prototype)}},z=class a extends s{constructor(b){super(51,b??"The LDAP server is too busy to process the client request at this time."),this.name="BusyError",Object.setPrototypeOf(this,a.prototype)}},A=class a extends s{constructor(b){super(13,b??"The session is not protected by a protocol such as Transport Layer Security (TLS), which provides session confidentiality and the request will not be handled without confidentiality enabled."),this.name="ConfidentialityRequiredError",Object.setPrototypeOf(this,a.prototype)}},B=class a extends s{constructor(b){super(19,b??"The attribute value specified in a Add Request, Modify Request or ModifyDNRequest operation violates constraints placed on the attribute. The constraint can be one of size or content (string only, no binary)."),this.name="ConstraintViolationError",Object.setPrototypeOf(this,a.prototype)}},C=class a extends s{constructor(b){super(48,b??"The client is attempting to use an authentication method incorrectly."),this.name="InappropriateAuthError",Object.setPrototypeOf(this,a.prototype)}},D=class a extends s{constructor(b){super(18,b??"The matching rule specified in the search filter does not match a rule defined for the attribute's syntax."),this.name="InappropriateMatchingError",Object.setPrototypeOf(this,a.prototype)}},E=class a extends s{constructor(b){super(50,b??"The caller does not have sufficient rights to perform the requested operation."),this.name="InsufficientAccessError",Object.setPrototypeOf(this,a.prototype)}},F=class a extends s{constructor(b){super(49,b??"Invalid credentials during a bind operation."),this.name="InvalidCredentialsError",Object.setPrototypeOf(this,a.prototype)}},G=class a extends s{constructor(b){super(34,b??"The syntax of the DN is incorrect."),this.name="InvalidDNSyntaxError",Object.setPrototypeOf(this,a.prototype)}},H=class a extends s{constructor(b){super(21,b??"The attribute value specified in an Add Request, Compare Request, or Modify Request operation is an unrecognized or invalid syntax for the attribute."),this.name="InvalidSyntaxError",Object.setPrototypeOf(this,a.prototype)}},I=class a extends s{constructor(b){super(35,b??"The specified operation cannot be performed on a leaf entry."),this.name="IsLeafError",Object.setPrototypeOf(this,a.prototype)}},J=class a extends s{constructor(b){super(54,b??"The client discovered an alias or LDAP Referral loop, and is thus unable to complete this request."),this.name="LoopDetectError",Object.setPrototypeOf(this,a.prototype)}},K=class a extends s{constructor(b){super(95,b),this.name="MoreResultsToReturnError",Object.setPrototypeOf(this,a.prototype)}},L=class a extends s{constructor(b){super(64,b??"The Add Request or Modify DN Request operation violates the schema's structure rules."),this.name="NamingViolationError",Object.setPrototypeOf(this,a.prototype)}},M=class a extends s{constructor(b){super(69,b??"The modify operation attempted to modify the structure rules of an object class."),this.name="NoObjectClassModsError",Object.setPrototypeOf(this,a.prototype)}},N=class a extends s{constructor(b){super(16,b??"The attribute specified in the Modify Request or Compare Request operation does not exist in the entry."),this.name="NoSuchAttributeError",Object.setPrototypeOf(this,a.prototype)}},O=class a extends s{constructor(b){super(32,b??"The target object cannot be found."),this.name="NoSuchObjectError",Object.setPrototypeOf(this,a.prototype)}},P=class a extends s{constructor(b){super(66,b??"The requested operation is permitted only on leaf entries."),this.name="NotAllowedOnNonLeafError",Object.setPrototypeOf(this,a.prototype)}},Q=class a extends s{constructor(b){super(67,b??"The modify operation attempted to remove an attribute value that forms the entry's relative distinguished name."),this.name="NotAllowedOnRDNError",Object.setPrototypeOf(this,a.prototype)}},R=class a extends s{constructor(b){super(248,b??"No result message for the request."),this.name="NoResultError",Object.setPrototypeOf(this,a.prototype)}},S=class a extends s{constructor(b){super(65,b??"The Add Request, Modify Request, or modify DN operation violates the object class rules for the entry."),this.name="ObjectClassViolationError",Object.setPrototypeOf(this,a.prototype)}},T=class a extends s{constructor(b){super(1,b??"Request was out of sequence with another operation in progress."),this.name="OperationsError",Object.setPrototypeOf(this,a.prototype)}},U=class a extends s{constructor(b){super(2,b??"Client sent data to the server that did not comprise a valid LDAP request."),this.name="ProtocolError",Object.setPrototypeOf(this,a.prototype)}},V=class a extends s{constructor(b){super(70,b??"Results are too large."),this.name="ResultsTooLargeError",Object.setPrototypeOf(this,a.prototype)}},W=class a extends s{response;constructor(b){super(14,b.errorMessage||"The server is ready for the next step in the SASL authentication process. The client must send the server the same SASL Mechanism to continue the process."),this.response=b,this.name="SaslBindInProgressError",Object.setPrototypeOf(this,a.prototype)}},X=class a extends s{constructor(b){super(4,b??"There were more entries matching the criteria contained in a SearchRequest operation than were allowed to be returned by the size limit configuration."),this.name="SizeLimitExceededError",Object.setPrototypeOf(this,a.prototype)}},Y=class a extends s{constructor(b){super(8,b??"Client requested an operation that requires strong authentication."),this.name="StrongAuthRequiredError",Object.setPrototypeOf(this,a.prototype)}},Z=class a extends s{constructor(b){super(3,b??"Processing on the associated request Timeout limit specified by either the client request or the server administration limits has been exceeded and has been terminated because it took too long to complete."),this.name="TimeLimitExceededError",Object.setPrototypeOf(this,a.prototype)}},$=class a extends s{constructor(b){super(112,b??"TLS is not supported on the server."),this.name="TLSNotSupportedError",Object.setPrototypeOf(this,a.prototype)}},_=class a extends s{constructor(b){super(20,b??"The attribute value specified in a Add Request or Modify Request operation already exists as a value for that attribute."),this.name="TypeOrValueExistsError",Object.setPrototypeOf(this,a.prototype)}},aa=class a extends s{constructor(b){super(12,b??"One or more critical extensions were not available by the LDAP server. Either the server does not support the control or the control is not appropriate for the operation type."),this.name="UnavailableCriticalExtensionError",Object.setPrototypeOf(this,a.prototype)}},ab=class a extends s{constructor(b){super(52,b??"The LDAP server cannot process the client's bind request."),this.name="UnavailableError",Object.setPrototypeOf(this,a.prototype)}},ac=class a extends s{constructor(b){super(17,b??"The attribute specified in the modify or add operation does not exist in the LDAP server's schema."),this.name="UndefinedTypeError",Object.setPrototypeOf(this,a.prototype)}},ad=class a extends s{constructor(b,c){super(b,c??"Unknown error."),this.name="UnknownStatusCodeError",Object.setPrototypeOf(this,a.prototype)}},ae=class a extends s{constructor(b){super(53,b??"The LDAP server cannot process the request because of server-defined restrictions."),this.name="UnwillingToPerformError",Object.setPrototypeOf(this,a.prototype)}},af=class a{write(a){a.startSequence(this.type),this.writeFilter(a),a.endSequence()}parse(a){this.parseFilter(a)}matches(a={},b){return!0}static escape(a){let b="";if(Buffer.isBuffer(a))for(let c of a)c<16?b+=`\\0${c.toString(16)}`:b+=`\\${c.toString(16)}`;else for(let c of a)switch(c){case"*":b+="\\2a";break;case"(":b+="\\28";break;case")":b+="\\29";break;case"\\":b+="\\5c";break;case"\0":b+="\\00";break;default:b+=c}return b}escape(b){return a.escape(b)}parseFilter(a){}writeFilter(a){}getObjectValue(a,b,c){let d;if(void 0!==a[b])d=b;else if(!c&&"objectclass"===b.toLowerCase()){for(let c of Object.keys(a))if(c.toLowerCase()===b.toLowerCase()){d=c;break}}if(d)return a[d]}},ag=class extends af{type=160;filters;constructor(a){super(),this.filters=a.filters}writeFilter(a){for(let b of this.filters)b.write(a)}matches(a={},b){if(!this.filters.length)return!0;for(let c of this.filters)if(!c.matches(a,b))return!1;return!0}toString(){let a="(&";for(let b of this.filters)a+=b.toString();return a+")"}},ah=class extends af{type=168;attribute;value;constructor(a={}){super(),this.attribute=a.attribute??"",this.value=a.value??""}parseFilter(a){this.attribute=(a.readString()??"").toLowerCase(),this.value=a.readString()??""}writeFilter(a){a.writeString(this.attribute),a.writeString(this.value)}matches(a={},b){throw Error("Approximate match implementation unknown")}toString(){return`(${af.escape(this.attribute)}~=${af.escape(this.value)})`}},ai=class extends af{type=163;attribute;value;constructor(a={}){super(),this.attribute=a.attribute??"",this.value=a.value??""}parseFilter(a){this.attribute=(a.readString()??"").toLowerCase(),this.value=a.readString()??"","objectclass"===this.attribute&&(this.value=this.value.toLowerCase())}writeFilter(a){a.writeString(this.attribute),Buffer.isBuffer(this.value)?a.writeBuffer(this.value,4):a.writeString(this.value)}matches(a={},b){let c=this.getObjectValue(a,this.attribute,b);if(void 0!==c){if(Buffer.isBuffer(this.value)&&Buffer.isBuffer(c))return this.value===c;let a=Buffer.isBuffer(this.value)?this.value.toString("utf8"):this.value;return b?a===c:a.toLowerCase()===c.toLowerCase()}return!1}toString(){return`(${af.escape(this.attribute)}=${af.escape(this.value)})`}},aj=class extends af{type=169;value;rule;matchType;dnAttributes;constructor(a={}){super(),this.matchType=a.matchType??"",this.rule=a.rule??"",this.dnAttributes=!0===a.dnAttributes,this.value=a.value??""}parseFilter(a){let b=a.offset+a.length;for(;a.offset<b;){let b=a.peek();switch(b){case 129:this.rule=a.readString(b)??"";break;case 130:this.matchType=a.readString(b)??"";break;case 131:this.value=a.readString(b)??"";break;case 132:this.dnAttributes=a.readBoolean()??!1;break;default:{let a="<null>";throw b&&(a=`0x${b.toString(16)}`),Error(`Invalid ext_match filter type: ${a}`)}}}}writeFilter(a){this.rule&&a.writeString(this.rule,129),this.matchType&&a.writeString(this.matchType,130),a.writeString(this.value,131),this.dnAttributes&&a.writeBoolean(this.dnAttributes,132)}matches(a={},b){throw Error("Approximate match implementation unknown")}toString(){let a=`(${af.escape(this.matchType)}:`;return this.dnAttributes&&(a+="dn:"),this.rule&&(a+=`${af.escape(this.rule)}:`),a+=`=${af.escape(this.value)})`}},ak=class extends af{type=165;attribute;value;constructor(a={}){super(),this.attribute=a.attribute??"",this.value=a.value??""}parseFilter(a){this.attribute=a.readString()?.toLowerCase()??"",this.value=a.readString()??""}writeFilter(a){a.writeString(this.attribute),a.writeString(this.value)}matches(a={},b){let c=this.getObjectValue(a,this.attribute,b);return void 0!==c&&(b?c>=this.value:c.toLowerCase()>=this.value.toLowerCase())}toString(){return`(${af.escape(this.attribute)}>=${af.escape(this.value)})`}},al=class extends af{type=166;attribute;value;constructor(a={}){super(),this.attribute=a.attribute??"",this.value=a.value??""}parseFilter(a){this.attribute=a.readString()?.toLowerCase()??"",this.value=a.readString()??""}writeFilter(a){a.writeString(this.attribute),a.writeString(this.value)}matches(a={},b){let c=this.getObjectValue(a,this.attribute,b);return void 0!==c&&(b?c<=this.value:c.toLowerCase()<=this.value.toLowerCase())}toString(){return`(${af.escape(this.attribute)}<=${af.escape(this.value)})`}},am=class extends af{type=162;filter;constructor(a){super(),this.filter=a.filter}writeFilter(a){this.filter.write(a)}matches(a={},b){return!this.filter.matches(a,b)}toString(){return`(!${this.filter.toString()})`}},an=class extends af{type=161;filters;constructor(a){super(),this.filters=a.filters}writeFilter(a){for(let b of this.filters)b.write(a)}matches(a={},b){if(!this.filters.length)return!0;for(let c of this.filters)if(c.matches(a,b))return!0;return!1}toString(){let a="(|";for(let b of this.filters)a+=b.toString();return a+")"}},ao=class extends af{type=135;attribute;constructor(a={}){super(),this.attribute=a.attribute??""}parseFilter(a){this.attribute=a.buffer.subarray(0,a.length).toString("utf8").toLowerCase(),a.offset+=a.length}writeFilter(a){for(let b=0;b<this.attribute.length;b+=1)a.writeByte(this.attribute.charCodeAt(b))}matches(a={},b){return void 0!==this.getObjectValue(a,this.attribute,b)}toString(){return`(${af.escape(this.attribute)}=*)`}},ap=class a extends af{type=164;attribute;initial;any;final;constructor(a={}){super(),this.attribute=a.attribute??"",this.initial=a.initial??"",this.any=a.any??[],this.final=a.final??""}parseFilter(a){this.attribute=a.readString()?.toLowerCase()??"",a.readSequence();let b=a.offset+a.length;for(;a.offset<b;){let b=a.peek();switch(b){case 128:this.initial=a.readString(b)??"","objectclass"===this.attribute&&(this.initial=this.initial.toLowerCase());break;case 129:{let c=a.readString(b)??"";"objectclass"===this.attribute&&(c=c.toLowerCase()),this.any.push(c);break}case 130:this.final=a.readString(b)??"","objectclass"===this.attribute&&(this.final=this.final.toLowerCase());break;default:{let a="<null>";throw b&&(a=`0x${b.toString(16)}`),Error(`Invalid substring filter type: ${a}`)}}}}writeFilter(a){for(let b of(a.writeString(this.attribute),a.startSequence(),this.initial&&a.writeString(this.initial,128),this.any))a.writeString(b,129);this.final&&a.writeString(this.final,130),a.endSequence()}matches(b={},c){let d=this.getObjectValue(b,this.attribute,c);if(void 0!==d){let b="";for(let c of(this.initial&&(b+=`^${a._escapeRegExp(this.initial)}.*`),this.any))b+=`${a._escapeRegExp(c)}.*`;return this.final&&(b+=`${a._escapeRegExp(this.final)}$`),new RegExp(b,c?"gmu":"igmu").test(d)}return!1}toString(){let a=`(${af.escape(this.attribute)}=${af.escape(this.initial)}*`;for(let b of this.any)a+=`${af.escape(b)}*`;return a+`${af.escape(this.final)})`}static _escapeRegExp(a){return a.replace(/[$()*+./?[\\\]^{|}-]/g,"\\$&")}},aq=class{static parse(a,b){let c;if(null===a.readSequence())return null;let d="",e=!1,f=Buffer.alloc(0);if(a.length){let b=a.offset+a.length;d=a.readString()??"",a.offset<b&&1===a.peek()&&(e=a.readBoolean()??!1),a.offset<b&&(f=a.readString(4,!0)??Buffer.alloc(0))}switch(d){case n.type:c=new n({critical:e});break;case o.type:c=new o({critical:e});break;case p.type:c=new p({critical:e});break;case q.type:c=new q({critical:e});break;default:c=b.find(a=>a.type===d)}if(!c)return null;let g=new k(f);return c.parse(g),c}},ar=class{version=3;messageId=0;controls;constructor(a){this.messageId=a.messageId,this.controls=a.controls}write(){let a=new l;if(a.startSequence(),a.writeInt(this.messageId),a.startSequence(this.protocolOperation),this.writeMessage(a),a.endSequence(),this.controls?.length){for(let b of(a.startSequence(160),this.controls))b.write(a);a.endSequence()}return a.endSequence(),a.buffer}parse(a,b){if(this.controls=[],this.parseMessage(a),160===a.peek()){a.readSequence();let c=a.offset+a.length;for(;a.offset<c;){let c=aq.parse(a,b);c&&this.controls.push(c)}}}toString(){return JSON.stringify({messageId:this.messageId,messageType:this.constructor.name},null,2)}parseMessage(a){}writeMessage(a){}},as=class extends ar{protocolOperation;abandonId;constructor(a){super(a),this.protocolOperation=80,this.abandonId=a.abandonId??0}writeMessage(a){let b=this.abandonId,c=4;for(;((0xff800000&b)==0||(0xff800000&b)==0xff800000)&&c>1;)c-=1,b<<=8;for(d.ok(c<=4);c-- >0;)a.writeByte((0xff000000&b)>>24),b<<=8}parseMessage(a){let{length:b}=a;if(b){let c,d=1,e=a.buffer[d]??0;c=127&e;for(let e=1;e<b;e+=1)c<<=8,d+=1,c|=255&(a.buffer[d]??0);(128&e)==128&&(c=-c),a.offset+=b,this.abandonId=c}else this.abandonId=0}};let at=new e.TextDecoder("utf8",{fatal:!0});var au=class{buffers=[];type;values;constructor(a={}){this.type=a.type??"",this.values=a.values??[]}get parsedBuffers(){return this.buffers}write(a){a.startSequence();let{type:b}=this;if(a.writeString(b),a.startSequence(49),this.values.length)for(let b of this.values)Buffer.isBuffer(b)?a.writeBuffer(b,4):a.writeString(b);else a.writeStringArray([]);a.endSequence(),a.endSequence()}parse(a){a.readSequence(),this.type=a.readString()??"";let b=this._isBinaryType();if(49===a.peek()&&a.readSequence(49)){let c=a.offset+a.length;for(;a.offset<c;){let c=a.readString(4,!0)??Buffer.alloc(0);if(this.buffers.push(c),b)this.values.push(c);else try{let a=at.decode(c);this.values.push(a)}catch{this.values.push(c)}}}}_isBinaryType(){return/;binary$/i.test(this.type||"")}},av=class extends ar{protocolOperation;dn;attributes;constructor(a){super(a),this.protocolOperation=104,this.dn=a.dn,this.attributes=a.attributes??[]}writeMessage(a){for(let b of(a.writeString(this.dn),a.startSequence(),this.attributes))b.write(a);a.endSequence()}parseMessage(a){this.dn=a.readString()??"",a.readSequence();let b=a.offset+a.length;for(;a.offset<b;){let b=new au;b.parse(a),this.attributes.push(b)}}},aw=class extends ar{status;matchedDN;errorMessage;constructor(a){super(a),this.status=a.status??0,this.matchedDN=a.matchedDN??"",this.errorMessage=a.errorMessage??""}parseMessage(a){this.status=a.readEnumeration()??0,this.matchedDN=a.readString()??"",this.errorMessage=a.readString()??""}},ax=class extends aw{protocolOperation;constructor(a){super(a),this.protocolOperation=105}};let ay=["EXTERNAL","PLAIN","DIGEST-MD5","SCRAM-SHA-1"];var az=class extends ar{protocolOperation;dn;password;mechanism;constructor(a){super(a),this.protocolOperation=96,this.dn=a.dn??"",this.password=a.password??"",this.mechanism=a.mechanism}writeMessage(a){a.writeInt(this.version),a.writeString(this.dn),this.mechanism?(a.startSequence(163),a.writeString(this.mechanism),a.writeString(this.password),a.endSequence()):a.writeString(this.password,128)}parseMessage(a){this.version=a.readInt()??3,this.dn=a.readString()??"";let b=a.peek();if(128!==b){let a="<null>";throw b&&(a=`0x${b.toString(16)}`),Error(`Authentication type not supported: ${a}`)}this.password=a.readString(128)??""}},aA=class extends aw{protocolOperation;data=[];constructor(a){super(a),this.protocolOperation=97}parseMessage(a){for(super.parseMessage(a);a.remain>0;){let b=a.peek();if(160===b)break;this.data.push(a.readString("number"==typeof b?b:void 0)??"")}}},aB=class extends ar{protocolOperation;dn;attribute;value;constructor(a){super(a),this.protocolOperation=110,this.attribute=a.attribute??"",this.value=a.value??"",this.dn=a.dn??""}writeMessage(a){a.writeString(this.dn),a.startSequence(),a.writeString(this.attribute),a.writeString(this.value),a.endSequence()}parseMessage(a){this.dn=a.readString()??"",a.readSequence(),this.attribute=(a.readString()??"").toLowerCase(),this.value=a.readString()??""}},aC=class extends aw{protocolOperation;constructor(a){super(a),this.protocolOperation=111}},aD=class extends ar{protocolOperation;dn;constructor(a){super(a),this.protocolOperation=74,this.dn=a.dn??""}writeMessage(a){for(let b of Buffer.from(this.dn))a.writeByte(b)}parseMessage(a){let{length:b}=a;this.dn=a.buffer.subarray(0,b).toString("utf8"),a.offset+=a.length}},aE=class extends aw{protocolOperation;constructor(a){super(a),this.protocolOperation=107}},aF=class extends ar{protocolOperation;oid;value;constructor(a){super(a),this.protocolOperation=119,this.oid=a.oid??"",this.value=a.value??""}writeMessage(a){a.writeString(this.oid,128),Buffer.isBuffer(this.value)?a.writeBuffer(this.value,129):this.value&&a.writeString(this.value,129)}parseMessage(a){if(this.oid=a.readString(128)??"",129===a.peek())try{this.value=a.readString(129)??""}catch{this.value=a.readString(129,!0)??Buffer.alloc(0)}}},aG=class extends aw{protocolOperation;oid;value;constructor(a){super(a),this.protocolOperation=120,this.oid=a.oid,this.value=a.value}parseMessage(a){super.parseMessage(a),138===a.peek()&&(this.oid=a.readString(138)??""),139===a.peek()&&(this.value=a.readString(139)??void 0)}},aH=class extends ar{protocolOperation;deleteOldRdn;dn;newRdn;newSuperior;constructor(a){super(a),this.protocolOperation=108,this.deleteOldRdn=!1!==a.deleteOldRdn,this.dn=a.dn??"",this.newRdn=a.newRdn??"",this.newSuperior=a.newSuperior??""}writeMessage(a){a.writeString(this.dn),a.writeString(this.newRdn),a.writeBoolean(this.deleteOldRdn),this.newSuperior&&a.writeString(this.newSuperior,128)}parseMessage(a){this.dn=a.readString()??"",this.newRdn=a.readString()??"",this.deleteOldRdn=a.readBoolean()??!1,128===a.peek()&&(this.newSuperior=a.readString(128)??"")}},aI=class extends aw{protocolOperation;constructor(a){super(a),this.protocolOperation=109}},aJ=class{operation;modification;constructor(a={modification:new au}){this.operation=a.operation??"add",this.modification=a.modification}write(a){switch(a.startSequence(),this.operation){case"add":a.writeEnumeration(0);break;case"delete":a.writeEnumeration(1);break;case"replace":a.writeEnumeration(2);break;default:throw Error(`Unknown change operation: ${this.operation}`)}this.modification.write(a),a.endSequence()}parse(a){a.readSequence();let b=a.readEnumeration();switch(b){case 0:this.operation="add";break;case 1:this.operation="delete";break;case 2:this.operation="replace";break;case null:throw Error("Unknown change operation - <null> operation value");default:throw Error(`Unknown change operation: 0x${b.toString(16)}`)}this.modification=new au,this.modification.parse(a)}},aK=class extends ar{protocolOperation;dn;changes;constructor(a){super(a),this.protocolOperation=102,this.dn=a.dn??"",this.changes=a.changes??[]}writeMessage(a){for(let b of(a.writeString(this.dn),a.startSequence(),this.changes))b.write(a);a.endSequence()}parseMessage(a){this.dn=a.readString()??"",a.readSequence();let b=a.offset+a.length;for(;a.offset<b;){let b=new aJ;b.parse(a),this.changes.push(b)}}},aL=class extends aw{protocolOperation;constructor(a){super(a),this.protocolOperation=103}},aM=class extends aw{protocolOperation;name;attributes;constructor(a){super(a),this.protocolOperation=100,this.name=a.name??"",this.attributes=a.attributes??[]}parseMessage(a){this.name=a.readString()??"",a.readSequence();let b=a.offset+a.length;for(;a.offset<b;){let b=new au;b.parse(a),this.attributes.push(b)}}toObject(a,b){let c={dn:this.name},d=new Set;for(let a of this.attributes){d.add(a.type.toLocaleLowerCase());let{values:e}=a;(b.includes(a.type)||e.some(a=>Buffer.isBuffer(a)))&&(e=a.parsedBuffers),e.length?1===e.length?c[a.type]=e[0]??[]:c[a.type]=e:c[a.type]=[]}for(let b of a)void 0!==c[b]||d.has(b.toLocaleLowerCase())||(c[b]=[]);return c}},aN=class extends aw{protocolOperation;uris;constructor(a){super(a),this.protocolOperation=115,this.uris=a.uris??[]}parseMessage(a){let b=a.offset+a.length;for(;a.offset<b;){let b=a.readString()??"";this.uris.push(b)}}},aO=class a{static parseString(b){if(!b)throw Error("Filter cannot be empty");b.startsWith("(")||(b=`(${b})`);let c=a._parseString(b,0,b),d=b.length-1;if(c.end<d)throw Error(`Unbalanced parens in filter string: ${b}`);return c.filter}static parse(b){let c,d=b.readSequence();switch(d){case 160:c=new ag({filters:a._parseSet(b)});break;case 168:(c=new ah).parse(b);break;case 163:(c=new ai).parse(b);break;case 169:(c=new aj).parse(b);break;case 165:(c=new ak).parse(b);break;case 166:(c=new al).parse(b);break;case 162:c=new am({filter:a.parse(b)});break;case 161:c=new an({filters:a._parseSet(b)});break;case 135:(c=new ao).parse(b);break;case 164:(c=new ap).parse(b);break;default:throw Error(`Invalid search filter type: 0x${d??"<null>"}`)}return c}static _parseString(b,c,d){let e,f=c,{length:g}=b;if("("!==b[f])throw Error(`Missing paren: ${b}. Full string: ${d}`);switch(b[f+=1]){case"&":{f+=1;let c=[];do{let e=a._parseString(b,f,d);c.push(e.filter),f=e.end+1}while(f<g&&")"!==b[f]);e=new ag({filters:c});break}case"|":{f+=1;let c=[];do{let e=a._parseString(b,f,d);c.push(e.filter),f=e.end+1}while(f<g&&")"!==b[f]);e=new an({filters:c});break}case"!":{let c=a._parseString(b,f+1,d);e=new am({filter:c.filter}),f=c.end+1;break}default:{let c=b.indexOf(")",f);if(-1===c)throw Error(`Unbalanced parens: ${b}. Full string: ${d}`);e=a._parseExpressionFilterFromString(b.substring(f,c)),f=c}}return{end:f,filter:e}}static _parseExpressionFilterFromString(b){let c,d;if(b.startsWith(":"))c="",d=b;else{let a=/^[\w-]+/.exec(b);if(a?.length)[c]=a,d=b.slice(c.length);else throw Error(`Invalid attribute name: ${b}`)}if("=*"===d)return new ao({attribute:c});if(d.startsWith("=")){if((d=d.slice(1)).includes("*")){let b=a._unescapeSubstring(d);return new ap({attribute:c,initial:b.initial,any:b.any,final:b.final})}return new ai({attribute:c,value:a._unescapeHexValues(d)})}if(d.startsWith(">")&&"="===d[1])return new ak({attribute:c,value:a._unescapeHexValues(d.slice(2))});if(d.startsWith("<")&&"="===d[1])return new al({attribute:c,value:a._unescapeHexValues(d.slice(2))});if(d.startsWith("~")&&"="===d[1])return new ah({attribute:c,value:a._unescapeHexValues(d.slice(2))});if(d.startsWith(":"))return a._parseExtensibleFilterFromString(c,d);throw Error(`Invalid expression: ${b}`)}static _parseExtensibleFilterFromString(b,c){let d,e=!1,f=c.split(":");if(f.length<=1)throw Error(`Invalid extensible filter: ${c}`);if(f.shift(),f[0]?.toLowerCase()==="dn"&&(e=!0,f.shift()),f.length&&!f[0]?.startsWith("=")&&(d=f.shift()),f.length&&!f[0]?.startsWith("="))throw Error(`Missing := in extensible filter: ${c}`);let g=f.join(":").slice(1);return new aj({matchType:b,dnAttributes:e,rule:d,value:a._unescapeHexValues(g)})}static _unescapeHexValues(a){let b=0,c=a.length,d="";for(;b<c;){let c=a[b];switch(c){case"(":throw Error(`Illegal unescaped character: ${c} in value: ${a}`);case"\\":{let c=a.slice(b+1,b+3);if(null===/^[\dA-Fa-f]{2}$/.exec(c))throw Error(`Invalid escaped hex character: ${c} in value: ${a}`);d+=String.fromCharCode(Number.parseInt(c,16)),b+=3;break}default:c&&(d+=c),b+=1}}return d}static _unescapeSubstring(b){let c=b.split("*");if(c.length<2)throw Error(`Wildcard missing: ${b}`);return{initial:a._unescapeHexValues(c.shift()??""),final:a._unescapeHexValues(c.pop()??""),any:c.map(b=>a._unescapeHexValues(b))}}static _parseSet(b){let c=[],d=b.offset+b.length;for(;b.offset<d;)c.push(a.parse(b));return c}},aP=class extends ar{protocolOperation;baseDN;scope;derefAliases;sizeLimit;timeLimit;returnAttributeValues;filter;attributes;explicitBufferAttributes;constructor(a){super(a),this.protocolOperation=99,this.baseDN=a.baseDN??"",this.scope=a.scope??"sub",this.derefAliases=a.derefAliases??"never",this.sizeLimit=a.sizeLimit??0,this.timeLimit=a.timeLimit??10,this.returnAttributeValues=!1!==a.returnAttributeValues,this.filter=a.filter,this.attributes=a.attributes??[],this.explicitBufferAttributes=a.explicitBufferAttributes??[]}writeMessage(a){switch(a.writeString(this.baseDN),this.scope){case"base":a.writeEnumeration(0);break;case"one":a.writeEnumeration(1);break;case"sub":a.writeEnumeration(2);break;case"children":case"subordinates":a.writeEnumeration(3);break;default:throw Error(`Invalid search scope: ${this.scope}`)}switch(this.derefAliases){case"never":a.writeEnumeration(0);break;case"search":a.writeEnumeration(1);break;case"find":a.writeEnumeration(2);break;case"always":a.writeEnumeration(3);break;default:throw Error(`Invalid deref alias: ${this.derefAliases}`)}for(let b of(a.writeInt(this.sizeLimit),a.writeInt(this.timeLimit),a.writeBoolean(!this.returnAttributeValues),this.filter.write(a),a.startSequence(),this.attributes))a.writeString(b);a.endSequence()}parseMessage(a){this.baseDN=a.readString()??"";let b=a.readEnumeration();switch(b){case 0:this.scope="base";break;case 1:this.scope="one";break;case 2:this.scope="sub";break;case 3:this.scope="children";break;default:throw Error(`Invalid search scope: ${b??"<null>"}`)}let c=a.readEnumeration();switch(b){case 0:this.derefAliases="never";break;case 1:this.derefAliases="search";break;case 2:this.derefAliases="find";break;case 3:this.derefAliases="always";break;default:throw Error(`Invalid deref alias: ${c??"<null>"}`)}if(this.sizeLimit=a.readInt()??0,this.timeLimit=a.readInt()??0,this.returnAttributeValues=!a.readBoolean(),this.filter=aO.parse(a),48===a.peek()){a.readSequence();let b=a.offset+a.length;for(;a.offset<b;)this.attributes.push((a.readString()??"").toLowerCase())}}},aQ=class extends aw{protocolOperation;searchEntries;searchReferences;constructor(a){super(a),this.protocolOperation=101,this.searchEntries=a.searchEntries??[],this.searchReferences=a.searchReferences??[]}},aR=class extends ar{protocolOperation;constructor(a){super(a),this.protocolOperation=66}};let aS=i.EventEmitter;var aT=class extends aS{buffer;read(a,b){let c,d,e;this.buffer?this.buffer=Buffer.concat([this.buffer,a]):this.buffer=a;let f=new k(this.buffer),g=null;try{g=f.readSequence()}catch(a){this.emit("error",a)}if(g&&!(f.remain<f.length)){f.remain>f.length&&(c=this.buffer.subarray(f.offset+f.length),f.setBufferSize(f.offset+f.length)),delete this.buffer;try{if(d=f.readInt(),null==d)throw Error("Unable to read message id");if(e=f.readSequence(),null==e)throw Error(`Unable to read protocol operation sequence for message: ${d}`);let a=b.get(`${d}`),c=this._getMessageFromProtocolOperation(d,e,f,a?.message);this.emit("message",c)}catch(a){if(d){a.messageDetails={messageId:d},e&&(a.messageDetails.protocolOperation=e),this.emit("error",a);return}this.emit("error",a);return}c&&this.read(c,b)}}_getMessageFromProtocolOperation(a,b,c,d){let e;switch(b){case 97:e=new aA({messageId:a});break;case 105:e=new ax({messageId:a});break;case 111:e=new aC({messageId:a});break;case 107:e=new aE({messageId:a});break;case 120:e=new aG({messageId:a});break;case 109:e=new aI({messageId:a});break;case 103:e=new aL({messageId:a});break;case 101:e=new aQ({messageId:a});break;case 100:e=new aM({messageId:a});break;case 115:e=new aN({messageId:a});break;default:{let c=new r(`Protocol Operation not supported: 0x${b.toString(16)}`);throw c.messageDetails={messageId:a,protocolOperation:b},c}}return e.parse(c,d?.controls??[]),e}},aU=class{static parse(a){if(!a)return new R;switch(a.status){case 1:return new T(a.errorMessage);case 2:return new U(a.errorMessage);case 3:return new Z(a.errorMessage);case 4:return new X(a.errorMessage);case 7:return new y(a.errorMessage);case 8:return new Y(a.errorMessage);case 11:return new t(a.errorMessage);case 12:return new aa(a.errorMessage);case 13:return new A(a.errorMessage);case 14:return new W(a);case 16:return new N(a.errorMessage);case 17:return new ac(a.errorMessage);case 18:return new D(a.errorMessage);case 19:return new B(a.errorMessage);case 20:return new _(a.errorMessage);case 21:return new H(a.errorMessage);case 32:return new O(a.errorMessage);case 33:return new w(a.errorMessage);case 34:return new G(a.errorMessage);case 35:return new I(a.errorMessage);case 36:return new v(a.errorMessage);case 48:return new C(a.errorMessage);case 49:return new F(a.errorMessage);case 50:return new E(a.errorMessage);case 51:return new z(a.errorMessage);case 52:return new ab(a.errorMessage);case 53:return new ae(a.errorMessage);case 54:return new J(a.errorMessage);case 64:return new L(a.errorMessage);case 65:return new S(a.errorMessage);case 66:return new P(a.errorMessage);case 67:return new Q(a.errorMessage);case 68:return new x(a.errorMessage);case 69:return new M(a.errorMessage);case 70:return new V(a.errorMessage);case 71:return new u(a.errorMessage);case 95:return new K(a.errorMessage);case 112:return new $(a.errorMessage);case 248:return new R(a.errorMessage);default:return new ad(a.status,a.errorMessage)}}};let aV=0x80000000-1,aW=(0,e.debuglog)("ldapts");Symbol.asyncDispose??=Symbol("Symbol.asyncDispose");var aX=class{clientOptions;messageId=1;host;port;secure;connected=!1;bound=!1;startTLSUpgraded=!1;rebind;socket;connectTimer;messageParser=new aT;messageDetailsByMessageId=new Map;constructor(a){let b;this.clientOptions=a,this.clientOptions.timeout??=0,this.clientOptions.connectTimeout??=0,this.clientOptions.strictDN=!1!==this.clientOptions.strictDN;try{b=new URL(a.url)}catch{throw Error(`${a.url} is an invalid LDAP URL (protocol)`)}const c=b.protocol.replace(/:$/,"");if("ldap"!==c&&"ldaps"!==c)throw Error(`${a.url} is an invalid LDAP URL (protocol)`);const d="ldaps"===c,e=!!this.clientOptions.tlsOptions&&Object.values(this.clientOptions.tlsOptions).some(a=>void 0!==a);this.secure=d||e;let f=b.hostname;f.startsWith("[")&&f.endsWith("]")&&(f=f.slice(1,-1)),this.host=f||"localhost",b.port?this.port=Number(b.port):d?this.port=636:this.port=389,this.messageParser.on("error",a=>{if(a.messageDetails?.messageId){let b=this.messageDetailsByMessageId.get(a.messageDetails.messageId.toString());if(b){this.messageDetailsByMessageId.delete(a.messageDetails.messageId.toString()),b.reject(a);return}}a.stack&&aW(a.stack)}),this.messageParser.on("message",this._handleSendResponse.bind(this))}get isConnected(){return!!this.socket&&this.connected}get isBound(){return this.isConnected&&this.bound}async startTLS(a={},b){this.isConnected||await this._connect(),await this.exop("1.3.6.1.4.1.1466.20037",void 0,b);let c=this.socket;c&&(c.removeListener("data",this.socketDataHandler),a.socket=c),this.socket=await new Promise((b,d)=>{let e=(this.clientOptions.createSecureConnection??h.connect)(a);e.once("secureConnect",()=>{e.removeAllListeners("error"),e.on("data",this.socketDataHandler),e.on("error",()=>{c&&c.destroy()}),b(e)}),e.once("error",a=>{e.removeAllListeners(),d(a)})}),c&&(this.socket.id=c.id),this.startTLSUpgraded=!0}async bind(a,b,c){if(c&&!Array.isArray(c)&&(c=[c]),"string"==typeof a&&ay.includes(a))return void await this.bindSASL(a,b,c);let d=new az({messageId:this._nextMessageId(),dn:"string"==typeof a?a:a.toString(),password:b,controls:c});await this._sendBind(d),this._onBindSuccess(()=>this.bind(a,b,c))}async bindSASL(a,b,c){c&&!Array.isArray(c)&&(c=[c]);let d=new az({messageId:this._nextMessageId(),mechanism:a,password:b,controls:c});await this._sendBind(d),this._onBindSuccess(()=>this.bindSASL(a,b,c))}async add(a,b,c){let d;if(await this._ensureConnected(),c&&!Array.isArray(c)&&(c=[c]),Array.isArray(b))d=b;else for(let[a,c]of(d=[],Object.entries(b))){let b;b=Array.isArray(c)?c:null==c?[]:[c],d.push(new au({type:a,values:b}))}let e=new av({messageId:this._nextMessageId(),dn:"string"==typeof a?a:a.toString(),attributes:d,controls:c}),f=await this._send(e);if(f?.status!==0)throw aU.parse(f)}async compare(a,b,c,d){await this._ensureConnected(),d&&!Array.isArray(d)&&(d=[d]);let e=new aB({messageId:this._nextMessageId(),dn:"string"==typeof a?a:a.toString(),attribute:b,value:c,controls:d}),f=await this._send(e);switch(f?.status){case 6:return!0;case 5:return!1;default:throw aU.parse(f)}}async del(a,b){await this._ensureConnected(),b&&!Array.isArray(b)&&(b=[b]);let c=new aD({messageId:this._nextMessageId(),dn:"string"==typeof a?a:a.toString(),controls:b}),d=await this._send(c);if(d?.status!==0)throw aU.parse(d)}async exop(a,b,c){await this._ensureConnected(),c&&!Array.isArray(c)&&(c=[c]);let d=new aF({messageId:this._nextMessageId(),oid:a,value:b,controls:c}),e=await this._send(d);if(e?.status!==0)throw aU.parse(e);return{oid:e.oid,value:e.value}}async modify(a,b,c){await this._ensureConnected(),Array.isArray(b)||(b=[b]),c&&!Array.isArray(c)&&(c=[c]);let d=new aK({messageId:this._nextMessageId(),dn:"string"==typeof a?a:a.toString(),changes:b,controls:c}),e=await this._send(d);if(e?.status!==0)throw aU.parse(e)}async modifyDN(a,b,c){let d;if(await this._ensureConnected(),c&&!Array.isArray(c)&&(c=[c]),"string"==typeof b&&/[^\\],/.test(b)){let a=b.search(/[^\\],/);d=b.slice(a+2),b=b.slice(0,a+1)}let e=new aH({messageId:this._nextMessageId(),dn:"string"==typeof a?a:a.toString(),deleteOldRdn:!0,newRdn:"string"==typeof b?b:b.toString(),newSuperior:d,controls:c}),f=await this._send(e);if(f?.status!==0)throw aU.parse(f)}async search(a,b={},c){let d,e;if(await this._ensureConnected(),c){for(let a of c=Array.isArray(c)?c.slice(0):[c])if(a instanceof o)throw Error("Should not specify PagedResultsControl")}else c=[];let f=100;"object"==typeof b.paged&&b.paged.pageSize?f=b.paged.pageSize:b.sizeLimit&&b.sizeLimit>1&&(f=b.sizeLimit-1);let g=!!b.paged;g&&(d=new o({value:{size:f}}),c.push(d)),e=b.filter?"string"==typeof b.filter?aO.parseString(b.filter):b.filter:new ao({attribute:"objectclass"});let h=new aP({messageId:-1,baseDN:"string"==typeof a?a:a.toString(),scope:b.scope,filter:e,attributes:b.attributes,explicitBufferAttributes:b.explicitBufferAttributes,returnAttributeValues:b.returnAttributeValues,sizeLimit:b.sizeLimit,timeLimit:b.timeLimit,controls:c}),i={searchEntries:[],searchReferences:[]};return await this._sendSearch(h,i,g,f,d),i}async *searchPaginated(a,b={},c){let d,e;if(await this._ensureConnected(),c){for(let a of c=Array.isArray(c)?c.slice(0):[c])if(a instanceof o)throw Error("Should not specify PagedResultsControl")}else c=[];let f=100;"object"==typeof b.paged&&b.paged.pageSize?f=b.paged.pageSize:b.sizeLimit&&b.sizeLimit>1&&(f=b.sizeLimit-1),d=new o({value:{size:f}}),c.push(d),e=b.filter?"string"==typeof b.filter?aO.parseString(b.filter):b.filter:new ao({attribute:"objectclass"});let g=new aP({messageId:-1,baseDN:"string"==typeof a?a:a.toString(),scope:b.scope,filter:e,attributes:b.attributes,explicitBufferAttributes:b.explicitBufferAttributes,returnAttributeValues:b.returnAttributeValues,sizeLimit:b.sizeLimit,timeLimit:b.timeLimit,controls:c});do{let a={searchEntries:[],searchReferences:[]};d=await this._sendSearch(g,a,!0,f,d,!1),yield a}while(d)}async unbind(){try{if(this.rebind=void 0,!this.connected||!this.socket)return;let a=new aR({messageId:this._nextMessageId()});await this._send(a)}finally{this._destroySocket(this.socket)}}[Symbol.asyncDispose](){return this.unbind()}async _sendBind(a){this.isConnected||await this._connect();let b=await this._send(a);if(b?.status!==0)throw aU.parse(b)}async _sendSearch(a,b,c,d,e,f=!0){a.messageId=this._nextMessageId();let g=await this._send(a);if(g?.status!==0&&!(g?.status===4&&a.sizeLimit))throw aU.parse(g);for(let c of g.searchEntries)b.searchEntries.push(c.toObject(a.attributes,a.explicitBufferAttributes));for(let a of g.searchReferences)b.searchReferences.push(...a.uris);if(c&&(g.searchEntries.length||g.searchReferences.length)&&e){let h;for(let a of g.controls??[])if(a instanceof o){h=a;break}if(h?.value?.cookie?.length){if(e.value=e.value??{size:d},e.value.cookie=h.value.cookie,!f)return e;await this._sendSearch(a,b,c,d,e,!0)}}}socketDataHandler=a=>{this.messageParser&&this.messageParser.read(a,this.messageDetailsByMessageId)};_nextMessageId(){return this.messageId+=1,this.messageId>=aV&&(this.messageId=1),this.messageId}_onBindSuccess(a){this.bound=!0,this.clientOptions.autoRebind&&!this.startTLSUpgraded&&(this.rebind=a)}async _ensureConnected(){this.isConnected||(await this._connect(),this.rebind&&!this.bound&&await this.rebind())}_connect(){if(!this.isConnected)return new Promise((a,b)=>{if(this.secure){let b=this.clientOptions.createSecureConnection??h.connect;this.socket=b(this.port,this.host,this.clientOptions.tlsOptions),this.socket.id=f.randomUUID(),this.socket.once("secureConnect",()=>{this._onConnect(a)})}else{let b=this.clientOptions.createConnection??g.connect;this.socket=b(this.port,this.host),this.socket.id=f.randomUUID(),this.socket.once("connect",()=>{this._onConnect(a)})}(this.socket.once("error",a=>{this._destroySocket(this.socket),b(a)}),this.socket.connecting||"open"!==this.socket.readyState)?this.clientOptions.connectTimeout&&(this.connectTimer=setTimeout(()=>{this._destroySocket(this.socket),b(Error("Connection timeout"))},this.clientOptions.connectTimeout)):this._onConnect(a)})}_onConnect(a){this.connectTimer&&(clearTimeout(this.connectTimer),this.connectTimer=void 0),this.socket&&(this.socket.removeAllListeners("error"),this.socket.removeAllListeners("connect"),this.socket.removeAllListeners("secureConnect")),this.connected=!0;let b=a=>{for(let[b,c]of this.messageDetailsByMessageId.entries())c.message instanceof aR?c.resolve():c.reject(Error(`Socket error. Message type: ${c.message.constructor.name} (0x${c.message.protocolOperation.toString(16)})
|
|
2
|
+
${a.message||(a.stack??"Unknown socket error")}`)),this.messageDetailsByMessageId.delete(b);this.socket&&this.socket.destroy()};function c(){this&&this.end()}function d(){this&&this.end()}let e=this;this.socket&&(this.socket.on("error",b),this.socket.on("close",function a(){for(let[f,g]of(this&&(this.removeListener("error",b),this.removeListener("close",a),this.removeListener("data",e.socketDataHandler),this.removeListener("end",c),this.removeListener("timeout",d)),this===e.socket&&(e.connected=!1,e.bound=!1,e.startTLSUpgraded=!1,delete e.socket,e.connectTimer&&(clearTimeout(e.connectTimer),e.connectTimer=void 0)),e.messageDetailsByMessageId.entries()))g.socket.id===this.id&&(g.message instanceof aR?g.resolve():g.reject(Error(`Connection closed before message response was received. Message type: ${g.message.constructor.name} (0x${g.message.protocolOperation.toString(16)})`)),e.messageDetailsByMessageId.delete(f))}),this.socket.on("data",this.socketDataHandler),this.socket.on("end",c),this.socket.on("timeout",d)),a()}_destroySocket(a){a&&(this.connectTimer&&(clearTimeout(this.connectTimer),this.connectTimer=void 0),a.removeAllListeners("error"),a.on("error",()=>{}),a.end(),a.destroy(),a===this.socket&&(this.connected=!1,this.bound=!1,this.startTLSUpgraded=!1,this.socket=void 0))}_send(a){if(!this.connected||!this.socket)throw Error("Socket connection not established");let b=a.write(),c=()=>{},d=()=>{},e=this.clientOptions.timeout?setTimeout(()=>{let b=this.messageDetailsByMessageId.get(a.messageId.toString());b&&(this._destroySocket(b.socket),d(Error(`${a.constructor.name}: Operation timed out`)))},this.clientOptions.timeout):null,f=new Promise((a,b)=>{c=a,d=b}).finally(()=>{e&&clearTimeout(e)});return this.messageDetailsByMessageId.set(a.messageId.toString(),{message:a,resolve:c,reject:d,timeoutTimer:e,socket:this.socket}),a.password?aW(`Sending message: ${JSON.stringify({...a,password:"__redacted__"})}`):aW(`Sending message: ${JSON.stringify(a)}`),this.socket.write(b,()=>{a instanceof as?(aW(`Abandoned message: ${a.messageId}`),this.messageDetailsByMessageId.delete(a.messageId.toString()),c()):a instanceof aR?(aW("Unbind success. Ending socket"),this.socket&&this._destroySocket(this.socket)):aW("Message sent successfully.")}),f}_handleSendResponse(a){let b=this.messageDetailsByMessageId.get(a.messageId.toString());b?a instanceof aM?(b.searchEntries=b.searchEntries??[],b.searchEntries.push(a)):a instanceof aN?(b.searchReferences=b.searchReferences??[],b.searchReferences.push(a)):(a instanceof aQ&&(b.searchEntries&&a.searchEntries.push(...b.searchEntries),b.searchReferences&&a.searchReferences.push(...b.searchReferences)),this.messageDetailsByMessageId.delete(a.messageId.toString()),b.resolve(a)):aW(`Unable to find details related to message response: ${JSON.stringify(a)}`)}}},50122:(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()}},92280:(a,b,c)=>{Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(28208),e=c(47617),f=c(62018);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},94755:(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(50122);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)}}};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=607,exports.ids=[607],exports.modules={9588:(a,b,c)=>{c.d(b,{Cy:()=>i,Gk:()=>l,I8:()=>k,Tv:()=>v,UX:()=>p,aV:()=>o,bz:()=>r,hH:()=>u,ny:()=>s,oW:()=>t,s0:()=>m,ub:()=>n,vZ:()=>q});var d=c(65573),e=c(23211),f=c(89718),g=c(33792),h=c(90389);let i="dashboard_view_mode";function j(a){return String(a||"").trim().toLowerCase()}function k(a){return j(a)}function l(a={}){return[a.ldapUsername,a.ldapEmail,a.ldapName,a.oidcEmail,a.oidcName,a.localUsername,a.username,a.email].map(j).filter(Boolean)}function m(a={}){let b=l(a),c=b[0]||"local",d=a.ldapName||a.ldapEmail||a.oidcName||a.oidcEmail||a.localUsername||c;return{userId:c,displayName:d,loginMethod:a.oidc?"OIDC":a.ldap?"LDAP":"Local",candidates:b}}function n(a={},b={}){var c;if(!b?.authenticated)return!1;if(b.local||!b.ldap&&!b.oidc||b.role===h.hS.ADMIN||!0===b.ldapIsAdmin)return!0;let d=Array.isArray(c=a.ldapAllowedUsers)?c.map(j).filter(Boolean):String(c||"").split(/[,\n]/).map(j).filter(Boolean);return 0!==d.length&&l(b).some(a=>d.includes(a))}function o(a={},b={}){return!(!b?.authenticated||n(a,b))&&(b.role===h.hS.MONITOR_ADMIN||!0===b.ldapIsMonitorAdmin)}function p(a={},b={}){return!(!b?.authenticated||n(a,b)||o(a,b))&&(b.role===h.hS.AI_GATEWAYS_MONITOR||!0===b.ldapIsAiGatewaysMonitor)}function q(a={},b={}){return b?.authenticated?n(a,b)?h.hS.ADMIN:o(a,b)?h.hS.MONITOR_ADMIN:p(a,b)?h.hS.AI_GATEWAYS_MONITOR:h.hS.USER:h.hS.GUEST}function r(a={}){return!0===a.isAdmin||!0===a.isMonitorAdmin}async function s(){let a=await (0,f.mt)(),b=await (0,d.UL)(),c=await (0,g.dY)(b.get("auth_token")?.value);if(!c?.authenticated)return{authenticated:!1,isAdmin:!1,actualIsAdmin:!1,showAsUser:!1,canToggleUserMode:!1,isMonitorAdmin:!1,isAiGatewaysMonitor:!1,role:h.hS.GUEST,actualRole:h.hS.GUEST,userId:"",displayName:"Guest",loginMethod:"None",settings:{...a,requireLogin:!0},session:null};let e=m(c||{}),j=q(a,c||{}),k=j===h.hS.ADMIN,l=k&&b.get(i)?.value==="user",n=l?h.hS.USER:j,o=n===h.hS.ADMIN,p=n===h.hS.MONITOR_ADMIN,r=n===h.hS.AI_GATEWAYS_MONITOR;return{authenticated:!0,isAdmin:o,actualIsAdmin:k,showAsUser:l,canToggleUserMode:k,isMonitorAdmin:p,isAiGatewaysMonitor:r,role:n,actualRole:j,canManageApiKeys:o||p,canUseMonitorAdminTabs:o||p,canViewAllAnalytics:o||p||r,...e,settings:{...a,requireLogin:!0},session:c}}async function t(){let a=await s();return a.authenticated?{access:a,response:null}:{access:a,response:e.NextResponse.json({error:"Authentication required"},{status:401})}}async function u(a={}){let{allowMonitorAdmin:b=!1}=a||{},{access:c,response:d}=await t();return d?{access:c,response:d}:c.isAdmin||b&&c.isMonitorAdmin?{access:c,response:null}:{access:c,response:e.NextResponse.json({error:"Admin access required"},{status:403})}}function v(a,b){if(!a?.authenticated||!b)return!1;if(r(a))return!0;let c=j(a.userId),d=j(b.ownerUser),e=j(b.createdByUser);return!!c&&(d===c||e===c)}},17509:(a,b,c)=>{c.d(b,{V:()=>o});var d=c(91356),e=c(80700),f=c(99129),g=c(73575),h=c(41570),i=c(19035),j=c(44893),k=c(69052);async function l(a,b,c){let l,{protected:m,header:n,payload:o}=a,p={};if(m&&(p=(0,h.OX)(m,f.Ye,"JWS Protected Header is invalid")),void 0!==n){if(!(0,i.fz)(p,n))throw new f.Ye("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");l={...p,...n}}else l=p;let q=(0,j.nI)(f.Ye,j.qc,b[1],p,l),r=!0;if(q.includes("b64")&&"boolean"!=typeof(r=p.b64))throw new f.Ye('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:s}=l;if("string"!=typeof s||!s)throw new f.Ye('JWS "alg" (Algorithm) Header Parameter missing or invalid');if(b[0]&&!b[0].has(s))throw new f.Rb('"alg" (Algorithm) Header Parameter value not allowed');if(r){if("string"!=typeof o)throw new f.Ye("JWS Payload must be a string")}else if("string"!=typeof o&&!(o instanceof Uint8Array))throw new f.Ye("JWS Payload must be a string or an Uint8Array instance");let t=!1;"function"==typeof c&&(c=await c(p,a),t=!0);let u=(0,e.q)(s),v=(0,g.xW)(void 0!==m?(0,g.lF)(m):new Uint8Array,(0,g.lF)("."),"string"==typeof o?r?b[2]??=(0,h.Fo)(o,"payload",f.Ye):g.Rd.encode(o):o),w=(0,h.h2)(a.signature,"signature",f.Ye),x=await (0,k.d)(u,c,"verify");if(!await (0,d.M)(u,x,w,v))throw new f.h2;return[r?(0,h.h2)(o,"payload",f.Ye):"string"==typeof o?g.Rd.encode(o):o,p,r,x,t]}async function m(a,b,c){if(a instanceof Uint8Array&&(a=g.D0.decode(a)),"string"!=typeof a)throw new f.Ye("Compact JWS must be a string or Uint8Array");let{0:d,1:e,2:h,length:i}=a.split(".");if(3!==i)throw new f.Ye("Invalid Compact JWS");return l({payload:e,protected:d,signature:h},b,c)}var n=c(17347);async function o(a,b,c){let d=await m(a,[c&&(0,j.Fw)("algorithms",c.algorithms),c?.crit],b);if(!d[2])throw new f.Dp("JWTs MUST NOT use unencoded payload");let e={payload:(0,n.k6)(d[1],d[0],c),protectedHeader:d[1]};return"function"==typeof b?{...e,key:d[3]}:e}},19225:(a,b,c)=>{a.exports=c(44870)},21978:(a,b,c)=>{c.d(b,{I:()=>j,s:()=>i});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f);let h=null;function i(){if(h)return h;try{let a=g().join(process.cwd(),"package.json");h=JSON.parse(e().readFileSync(a,"utf-8")).version||"0.0.0"}catch{h="0.0.0"}return h}function j(a=new Date){let b=a=>String(a).padStart(2,"0");return`${a.getFullYear()}${b(a.getMonth()+1)}${b(a.getDate())}-${b(a.getHours())}${b(a.getMinutes())}${b(a.getSeconds())}`}},25334:(a,b,c)=>{function d(a){return null==a?"":String(a).trim()}function e({outboundProxyEnabled:a,outboundProxyUrl:b,outboundNoProxy:c}={}){if("u"<typeof process||!process.env)return;let f=d(b),g=d(c);if(!a){"1"===process.env.NINE_ROUTER_PROXY_MANAGED&&(delete process.env.HTTP_PROXY,delete process.env.HTTPS_PROXY,delete process.env.ALL_PROXY,delete process.env.NO_PROXY,delete process.env.NINE_ROUTER_PROXY_MANAGED,delete process.env.NINE_ROUTER_PROXY_URL,delete process.env.NINE_ROUTER_NO_PROXY);return}let h="1"===process.env.NINE_ROUTER_PROXY_MANAGED,i=!1;h&&(f||(delete process.env.HTTP_PROXY,delete process.env.HTTPS_PROXY,delete process.env.ALL_PROXY,delete process.env.NINE_ROUTER_PROXY_URL),g||(delete process.env.NO_PROXY,delete process.env.NINE_ROUTER_NO_PROXY)),f&&(process.env.HTTP_PROXY=f,process.env.HTTPS_PROXY=f,process.env.ALL_PROXY=f,process.env.NINE_ROUTER_PROXY_URL=f,i=!0),g&&(process.env.NO_PROXY=g,process.env.NINE_ROUTER_NO_PROXY=g,i=!0),i?process.env.NINE_ROUTER_PROXY_MANAGED="1":h&&delete process.env.NINE_ROUTER_PROXY_MANAGED}c.d(b,{k:()=>e})},33792:(a,b,c)=>{c.d(b,{Dc:()=>p,OZ:()=>s,YK:()=>n,dY:()=>q,tm:()=>r});var d=c(84433),e=c(17509),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(77598),k=c.n(j),l=c(49120);let m=new TextEncoder().encode(function(){if(process.env.JWT_SECRET)return process.env.JWT_SECRET;let a=i().join(l.DATA_DIR,"jwt-secret");try{return g().readFileSync(a,"utf8").trim()}catch{}g().mkdirSync(l.DATA_DIR,{recursive:!0});let b=k().randomBytes(32).toString("hex");return g().writeFileSync(a,b,{mode:384}),b}());function n(a){let b="true"===process.env.AUTH_COOKIE_SECURE,c=a?.headers?.get?.("x-forwarded-proto");return b||"https"===c}async function o(a={}){return new d.P({authenticated:!0,...a}).setProtectedHeader({alg:"HS256"}).setIssuedAt().setExpirationTime("86400s").sign(m)}async function p(a){if(!a)return!1;try{return await (0,e.V)(a,m),!0}catch{return!1}}async function q(a){if(!a)return null;try{let{payload:b}=await (0,e.V)(a,m);return b}catch{return null}}async function r(a,b,c={}){let d=await o(c);a.set("auth_token",d,{httpOnly:!0,secure:n(b),sameSite:"lax",path:"/",maxAge:86400})}function s(a){a.delete("auth_token")}},34231:(a,b,c)=>{c.d(b,{VE:()=>l,qs:()=>m});var d=c(77598),e=c.n(d);c(48161);var f=c(89718),g=c(25334),h=c(92225);c(21978);var i=c(62763);let j="__blueRouterClusterSync";async function k(a=null){var b,c;let d=a||await (0,i.Jc)({includeSecrets:!0});if("slave"!==d.role)throw Error("Node is not in Standby mode");if(!d.masterUrl)throw Error("Master URL is not configured");if(!d.syncToken)throw Error("Sync token is not configured");let f=await fetch((b=d.masterUrl,`${String(b||"").replace(/\/+$/,"")}/api/cluster/snapshot`),{headers:{Authorization:`Bearer ${d.syncToken}`,"X-BlueRouter-Node-Id":d.nodeId},cache:"no-store",signal:AbortSignal.timeout(12e4)});if(!f.ok)throw Error((await f.json().catch(()=>({}))).error||`Master returned HTTP ${f.status}`);if((Number(f.headers.get("content-length"))||0)>0x10000000)throw Error("Cluster snapshot exceeds the 256 MB limit");let g=await f.text();if(Buffer.byteLength(g,"utf8")>0x10000000)throw Error("Cluster snapshot exceeds the 256 MB limit");let j=JSON.parse(g);if(!j||"object"!=typeof j||!j.manifest||!j.payload)throw Error("Invalid cluster snapshot response");if(c=j.payload,e().createHash("sha256").update(JSON.stringify(c)).digest("hex")!==j.manifest.sha256)throw Error("Cluster snapshot checksum mismatch");if(2!==Number(j.payload?.backup?.formatVersion))throw Error("Unsupported cluster backup format");if(Number(j.manifest.schemaVersion)!==(0,h.q)())throw Error(`Schema version mismatch: Master=${j.manifest.schemaVersion}, Standby=${(0,h.q)()}`);return j}async function l(a=null){let b=await k(a);return{ok:!0,manifest:b.manifest,serverCount:b.payload.resourceMonitor?.servers?.length||0,historyCount:b.payload.resourceMonitor?.history?.length||0}}async function m({force:a=!1,allowDisabled:b=!1}={}){let c=(globalThis[j]||(globalThis[j]={timer:null,running:null,started:!1,heartbeatSucceeded:!1}),globalThis[j]);return c.running||(c.running=(async()=>{let c=await (0,i.Jc)({includeSecrets:!0});if("slave"!==c.role||!c.enabled&&!b)throw Error("Standby sync is not enabled");let d=new Date().toISOString();await (0,i.X_)({lastAttemptAt:d});try{let b=await k(c);if(!a&&b.manifest.sha256===c.lastSnapshotHash){let a={status:"unchanged",snapshotHash:b.manifest.sha256,masterCreatedAt:b.manifest.createdAt};return await (0,i.X_)({lastSyncAt:new Date().toISOString(),lastError:"",lastResult:a}),a}let d=await (0,f.K1)(b.payload,{returnExport:!1});try{(0,g.k)(await (0,f.mt)())}catch(a){console.warn("[cluster] failed to apply restored outbound proxy settings:",a?.message||a)}let e={status:"synced",snapshotHash:b.manifest.sha256,masterCreatedAt:b.manifest.createdAt,serverCount:d.resourceMonitorServerCount||0,historyCount:d.resourceMonitorHistoryCount||0,brandingAssetCount:d.brandingAssetCount||0};return await (0,i.X_)({lastSyncAt:new Date().toISOString(),lastSnapshotHash:b.manifest.sha256,lastError:"",lastResult:e}),e}catch(a){throw await (0,i.X_)({lastError:a?.message||"Cluster sync failed",lastResult:{status:"error"}}),a}})().finally(()=>{c.running=null})),c.running}},50122:(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()}},62763:(a,b,c)=>{c.d(b,{Jc:()=>r,NY:()=>w,Q1:()=>s,WR:()=>v,X_:()=>u,gX:()=>t});var d=c(77598),e=c.n(d),f=c(51455),g=c.n(f),h=c(76760),i=c.n(h),j=c(49120);let k=i().join(j.DATA_DIR,"cluster-config.json"),l=new Set(["standalone","master","slave"]),m="__blueRouterClusterConfigMutation",n={version:1,nodeId:"",role:"standalone",enabled:!1,masterUrl:"",syncToken:"",intervalMinutes:5,lastAttemptAt:null,lastSyncAt:null,lastSnapshotHash:"",lastError:"",lastResult:null,commandAck:null};function o(a={}){let b=l.has(a.role)?a.role:"standalone";return{...n,...a,version:1,nodeId:String(a.nodeId||"").trim()||e().randomUUID(),role:b,enabled:!0===a.enabled,masterUrl:function(a){let b=String(a||"").trim().replace(/\/+$/,"");if(!b)return"";let c=new URL(b);if(!["http:","https:"].includes(c.protocol))throw Error("Master URL must use http:// or https://");if(c.username||c.password)throw Error("Master URL must not contain credentials");return c.toString().replace(/\/+$/,"")}(a.masterUrl),syncToken:String(a.syncToken||"").trim(),intervalMinutes:Math.min(1440,Math.max(1,Number(a.intervalMinutes)||5))}}async function p(a){await g().mkdir(j.DATA_DIR,{recursive:!0});let b=`${k}.${process.pid}.${e().randomUUID()}.tmp`;try{await g().writeFile(b,JSON.stringify(a,null,2),{mode:384}),await g().rename(b,k)}catch(a){throw await g().unlink(b).catch(()=>{}),a}}function q(a){let b=(globalThis[m]||Promise.resolve()).then(a,a);return globalThis[m]=b.catch(()=>{}),b}async function r({includeSecrets:a=!1}={}){let b={};try{b=JSON.parse(await g().readFile(k,"utf8"))}catch(a){a?.code!=="ENOENT"&&console.warn("[cluster] failed to read config:",a?.message||a)}let c=o(b);if(b.nodeId||await p(c),a)return c;let{syncToken:d,...e}=c;return{...e,hasSyncToken:!!c.syncToken}}async function s(a={}){if(!a||"object"!=typeof a||Array.isArray(a))throw Error("Invalid cluster config payload");return q(async()=>{let b=await r({includeSecrets:!0}),c={};for(let b of["role","enabled","masterUrl","syncToken","intervalMinutes"])Object.prototype.hasOwnProperty.call(a,b)&&(c[b]=a[b]);let d=o({...b,...c});if("master"!==d.role||d.syncToken||(d.syncToken=e().randomBytes(32).toString("base64url")),d.enabled&&"slave"===d.role){if(!d.masterUrl)throw Error("Master URL is required for Standby mode");if(!d.syncToken)throw Error("Sync token is required for Standby mode")}return await p(d),d})}async function t(){return q(async()=>{let a={...await r({includeSecrets:!0}),syncToken:e().randomBytes(32).toString("base64url")};return await p(a),a})}async function u(a={}){return q(async()=>{let b=await r({includeSecrets:!0}),c=o({...b,...a,nodeId:b.nodeId,role:b.role,enabled:b.enabled,masterUrl:b.masterUrl,syncToken:b.syncToken,intervalMinutes:b.intervalMinutes});return await p(c),c})}async function v(){return"slave"===(await r({includeSecrets:!0})).role}function w(a,b){let c=Buffer.from(String(a||"")),d=Buffer.from(String(b||""));return c.length>0&&c.length===d.length&&e().timingSafeEqual(c,d)}},63775:(a,b,c)=>{c.d(b,{CG:()=>e,oG:()=>d,zE:()=>f});let d=`
|
|
1
|
+
"use strict";exports.id=607,exports.ids=[607,2763],exports.modules={9588:(a,b,c)=>{c.d(b,{Cy:()=>i,Gk:()=>l,I8:()=>k,Tv:()=>v,UX:()=>p,aV:()=>o,bz:()=>r,hH:()=>u,ny:()=>s,oW:()=>t,s0:()=>m,ub:()=>n,vZ:()=>q});var d=c(65573),e=c(23211),f=c(89718),g=c(33792),h=c(90389);let i="dashboard_view_mode";function j(a){return String(a||"").trim().toLowerCase()}function k(a){return j(a)}function l(a={}){return[a.ldapUsername,a.ldapEmail,a.ldapName,a.oidcEmail,a.oidcName,a.localUsername,a.username,a.email].map(j).filter(Boolean)}function m(a={}){let b=l(a),c=b[0]||"local",d=a.ldapName||a.ldapEmail||a.oidcName||a.oidcEmail||a.localUsername||c;return{userId:c,displayName:d,loginMethod:a.oidc?"OIDC":a.ldap?"LDAP":"Local",candidates:b}}function n(a={},b={}){var c;if(!b?.authenticated)return!1;if(b.local||!b.ldap&&!b.oidc||b.role===h.hS.ADMIN||!0===b.ldapIsAdmin)return!0;let d=Array.isArray(c=a.ldapAllowedUsers)?c.map(j).filter(Boolean):String(c||"").split(/[,\n]/).map(j).filter(Boolean);return 0!==d.length&&l(b).some(a=>d.includes(a))}function o(a={},b={}){return!(!b?.authenticated||n(a,b))&&(b.role===h.hS.MONITOR_ADMIN||!0===b.ldapIsMonitorAdmin)}function p(a={},b={}){return!(!b?.authenticated||n(a,b)||o(a,b))&&(b.role===h.hS.AI_GATEWAYS_MONITOR||!0===b.ldapIsAiGatewaysMonitor)}function q(a={},b={}){return b?.authenticated?n(a,b)?h.hS.ADMIN:o(a,b)?h.hS.MONITOR_ADMIN:p(a,b)?h.hS.AI_GATEWAYS_MONITOR:h.hS.USER:h.hS.GUEST}function r(a={}){return!0===a.isAdmin||!0===a.isMonitorAdmin}async function s(){let a=await (0,f.getSettings)(),b=await (0,d.UL)(),c=await (0,g.dY)(b.get("auth_token")?.value);if(!c?.authenticated)return{authenticated:!1,isAdmin:!1,actualIsAdmin:!1,showAsUser:!1,canToggleUserMode:!1,isMonitorAdmin:!1,isAiGatewaysMonitor:!1,role:h.hS.GUEST,actualRole:h.hS.GUEST,userId:"",displayName:"Guest",loginMethod:"None",settings:{...a,requireLogin:!0},session:null};let e=m(c||{}),j=q(a,c||{}),k=j===h.hS.ADMIN,l=k&&b.get(i)?.value==="user",n=l?h.hS.USER:j,o=n===h.hS.ADMIN,p=n===h.hS.MONITOR_ADMIN,r=n===h.hS.AI_GATEWAYS_MONITOR;return{authenticated:!0,isAdmin:o,actualIsAdmin:k,showAsUser:l,canToggleUserMode:k,isMonitorAdmin:p,isAiGatewaysMonitor:r,role:n,actualRole:j,canManageApiKeys:o||p,canUseMonitorAdminTabs:o||p,canViewAllAnalytics:o||p||r,...e,settings:{...a,requireLogin:!0},session:c}}async function t(){let a=await s();return a.authenticated?{access:a,response:null}:{access:a,response:e.NextResponse.json({error:"Authentication required"},{status:401})}}async function u(a={}){let{allowMonitorAdmin:b=!1}=a||{},{access:c,response:d}=await t();return d?{access:c,response:d}:c.isAdmin||b&&c.isMonitorAdmin?{access:c,response:null}:{access:c,response:e.NextResponse.json({error:"Admin access required"},{status:403})}}function v(a,b){if(!a?.authenticated||!b)return!1;if(r(a))return!0;let c=j(a.userId),d=j(b.ownerUser),e=j(b.createdByUser);return!!c&&(d===c||e===c)}},17509:(a,b,c)=>{c.d(b,{V:()=>o});var d=c(91356),e=c(80700),f=c(99129),g=c(73575),h=c(41570),i=c(19035),j=c(44893),k=c(69052);async function l(a,b,c){let l,{protected:m,header:n,payload:o}=a,p={};if(m&&(p=(0,h.OX)(m,f.Ye,"JWS Protected Header is invalid")),void 0!==n){if(!(0,i.fz)(p,n))throw new f.Ye("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");l={...p,...n}}else l=p;let q=(0,j.nI)(f.Ye,j.qc,b[1],p,l),r=!0;if(q.includes("b64")&&"boolean"!=typeof(r=p.b64))throw new f.Ye('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:s}=l;if("string"!=typeof s||!s)throw new f.Ye('JWS "alg" (Algorithm) Header Parameter missing or invalid');if(b[0]&&!b[0].has(s))throw new f.Rb('"alg" (Algorithm) Header Parameter value not allowed');if(r){if("string"!=typeof o)throw new f.Ye("JWS Payload must be a string")}else if("string"!=typeof o&&!(o instanceof Uint8Array))throw new f.Ye("JWS Payload must be a string or an Uint8Array instance");let t=!1;"function"==typeof c&&(c=await c(p,a),t=!0);let u=(0,e.q)(s),v=(0,g.xW)(void 0!==m?(0,g.lF)(m):new Uint8Array,(0,g.lF)("."),"string"==typeof o?r?b[2]??=(0,h.Fo)(o,"payload",f.Ye):g.Rd.encode(o):o),w=(0,h.h2)(a.signature,"signature",f.Ye),x=await (0,k.d)(u,c,"verify");if(!await (0,d.M)(u,x,w,v))throw new f.h2;return[r?(0,h.h2)(o,"payload",f.Ye):"string"==typeof o?g.Rd.encode(o):o,p,r,x,t]}async function m(a,b,c){if(a instanceof Uint8Array&&(a=g.D0.decode(a)),"string"!=typeof a)throw new f.Ye("Compact JWS must be a string or Uint8Array");let{0:d,1:e,2:h,length:i}=a.split(".");if(3!==i)throw new f.Ye("Invalid Compact JWS");return l({payload:e,protected:d,signature:h},b,c)}var n=c(17347);async function o(a,b,c){let d=await m(a,[c&&(0,j.Fw)("algorithms",c.algorithms),c?.crit],b);if(!d[2])throw new f.Dp("JWTs MUST NOT use unencoded payload");let e={payload:(0,n.k6)(d[1],d[0],c),protectedHeader:d[1]};return"function"==typeof b?{...e,key:d[3]}:e}},19225:(a,b,c)=>{a.exports=c(44870)},21978:(a,b,c)=>{c.d(b,{I:()=>j,s:()=>i});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f);let h=null;function i(){if(h)return h;try{let a=g().join(process.cwd(),"package.json");h=JSON.parse(e().readFileSync(a,"utf-8")).version||"0.0.0"}catch{h="0.0.0"}return h}function j(a=new Date){let b=a=>String(a).padStart(2,"0");return`${a.getFullYear()}${b(a.getMonth()+1)}${b(a.getDate())}-${b(a.getHours())}${b(a.getMinutes())}${b(a.getSeconds())}`}},25334:(a,b,c)=>{function d(a){return null==a?"":String(a).trim()}function e({outboundProxyEnabled:a,outboundProxyUrl:b,outboundNoProxy:c}={}){if("u"<typeof process||!process.env)return;let f=d(b),g=d(c);if(!a){"1"===process.env.NINE_ROUTER_PROXY_MANAGED&&(delete process.env.HTTP_PROXY,delete process.env.HTTPS_PROXY,delete process.env.ALL_PROXY,delete process.env.NO_PROXY,delete process.env.NINE_ROUTER_PROXY_MANAGED,delete process.env.NINE_ROUTER_PROXY_URL,delete process.env.NINE_ROUTER_NO_PROXY);return}let h="1"===process.env.NINE_ROUTER_PROXY_MANAGED,i=!1;h&&(f||(delete process.env.HTTP_PROXY,delete process.env.HTTPS_PROXY,delete process.env.ALL_PROXY,delete process.env.NINE_ROUTER_PROXY_URL),g||(delete process.env.NO_PROXY,delete process.env.NINE_ROUTER_NO_PROXY)),f&&(process.env.HTTP_PROXY=f,process.env.HTTPS_PROXY=f,process.env.ALL_PROXY=f,process.env.NINE_ROUTER_PROXY_URL=f,i=!0),g&&(process.env.NO_PROXY=g,process.env.NINE_ROUTER_NO_PROXY=g,i=!0),i?process.env.NINE_ROUTER_PROXY_MANAGED="1":h&&delete process.env.NINE_ROUTER_PROXY_MANAGED}c.d(b,{k:()=>e})},33792:(a,b,c)=>{c.d(b,{Dc:()=>p,OZ:()=>s,YK:()=>n,dY:()=>q,tm:()=>r});var d=c(84433),e=c(17509),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(77598),k=c.n(j),l=c(49120);let m=new TextEncoder().encode(function(){if(process.env.JWT_SECRET)return process.env.JWT_SECRET;let a=i().join(l.DATA_DIR,"jwt-secret");try{return g().readFileSync(a,"utf8").trim()}catch{}g().mkdirSync(l.DATA_DIR,{recursive:!0});let b=k().randomBytes(32).toString("hex");return g().writeFileSync(a,b,{mode:384}),b}());function n(a){let b="true"===process.env.AUTH_COOKIE_SECURE,c=a?.headers?.get?.("x-forwarded-proto");return b||"https"===c}async function o(a={}){return new d.P({authenticated:!0,...a}).setProtectedHeader({alg:"HS256"}).setIssuedAt().setExpirationTime("86400s").sign(m)}async function p(a){if(!a)return!1;try{return await (0,e.V)(a,m),!0}catch{return!1}}async function q(a){if(!a)return null;try{let{payload:b}=await (0,e.V)(a,m);return b}catch{return null}}async function r(a,b,c={}){let d=await o(c);a.set("auth_token",d,{httpOnly:!0,secure:n(b),sameSite:"lax",path:"/",maxAge:86400})}function s(a){a.delete("auth_token")}},34231:(a,b,c)=>{c.d(b,{VE:()=>l,qs:()=>m});var d=c(77598),e=c.n(d);c(48161);var f=c(89718),g=c(25334),h=c(92225);c(21978);var i=c(62763);let j="__blueRouterClusterSync";async function k(a=null){var b,c;let d=a||await (0,i.Jc)({includeSecrets:!0});if("slave"!==d.role)throw Error("Node is not in Standby mode");if(!d.masterUrl)throw Error("Master URL is not configured");if(!d.syncToken)throw Error("Sync token is not configured");let f=await fetch((b=d.masterUrl,`${String(b||"").replace(/\/+$/,"")}/api/cluster/snapshot`),{headers:{Authorization:`Bearer ${d.syncToken}`,"X-BlueRouter-Node-Id":d.nodeId},cache:"no-store",signal:AbortSignal.timeout(12e4)});if(!f.ok)throw Error((await f.json().catch(()=>({}))).error||`Master returned HTTP ${f.status}`);if((Number(f.headers.get("content-length"))||0)>0x10000000)throw Error("Cluster snapshot exceeds the 256 MB limit");let g=await f.text();if(Buffer.byteLength(g,"utf8")>0x10000000)throw Error("Cluster snapshot exceeds the 256 MB limit");let j=JSON.parse(g);if(!j||"object"!=typeof j||!j.manifest||!j.payload)throw Error("Invalid cluster snapshot response");if(c=j.payload,e().createHash("sha256").update(JSON.stringify(c)).digest("hex")!==j.manifest.sha256)throw Error("Cluster snapshot checksum mismatch");if(2!==Number(j.payload?.backup?.formatVersion))throw Error("Unsupported cluster backup format");if(Number(j.manifest.schemaVersion)!==(0,h.q)())throw Error(`Schema version mismatch: Master=${j.manifest.schemaVersion}, Standby=${(0,h.q)()}`);return j}async function l(a=null){let b=await k(a);return{ok:!0,manifest:b.manifest,serverCount:b.payload.resourceMonitor?.servers?.length||0,historyCount:b.payload.resourceMonitor?.history?.length||0}}async function m({force:a=!1,allowDisabled:b=!1}={}){let d=(globalThis[j]||(globalThis[j]={timer:null,running:null,started:!1,heartbeatSucceeded:!1}),globalThis[j]);return d.running||(d.running=(async()=>{let d=await (0,i.Jc)({includeSecrets:!0});if("slave"!==d.role||!d.enabled&&!b)throw Error("Standby sync is not enabled");let e=new Date().toISOString();await (0,i.X_)({lastAttemptAt:e});try{let b=await k(d);if(!a&&b.manifest.sha256===d.lastSnapshotHash){let a={status:"unchanged",snapshotHash:b.manifest.sha256,masterCreatedAt:b.manifest.createdAt};return await (0,i.X_)({lastSyncAt:new Date().toISOString(),lastError:"",lastResult:a}),a}let e=await (0,f.importDb)(b.payload,{returnExport:!1});try{(0,g.k)(await (0,f.getSettings)())}catch(a){console.warn("[cluster] failed to apply restored outbound proxy settings:",a?.message||a)}let h=null;try{let{applyAuditPolicyFromSettings:a}=await Promise.all([c.e(5296),c.e(1370),c.e(3096),c.e(5074),c.e(9083)]).then(c.t.bind(c,49083,23));h=await a()}catch(a){console.warn("[cluster] failed to apply Audit Proxy policy from snapshot:",a?.message||a)}let j={status:"synced",snapshotHash:b.manifest.sha256,masterCreatedAt:b.manifest.createdAt,serverCount:e.resourceMonitorServerCount||0,historyCount:e.resourceMonitorHistoryCount||0,brandingAssetCount:e.brandingAssetCount||0,auditProxyPolicyApplied:h?.applied===!0};return await (0,i.X_)({lastSyncAt:new Date().toISOString(),lastSnapshotHash:b.manifest.sha256,lastError:"",lastResult:j}),j}catch(a){throw await (0,i.X_)({lastError:a?.message||"Cluster sync failed",lastResult:{status:"error"}}),a}})().finally(()=>{d.running=null})),d.running}},50122:(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()}},62763:(a,b,c)=>{c.d(b,{Jc:()=>r,NY:()=>w,Q1:()=>s,X_:()=>u,gX:()=>t,isClusterStandby:()=>v});var d=c(77598),e=c.n(d),f=c(51455),g=c.n(f),h=c(76760),i=c.n(h),j=c(49120);let k=i().join(j.DATA_DIR,"cluster-config.json"),l=new Set(["standalone","master","slave"]),m="__blueRouterClusterConfigMutation",n={version:1,nodeId:"",role:"standalone",enabled:!1,masterUrl:"",syncToken:"",intervalMinutes:5,lastAttemptAt:null,lastSyncAt:null,lastSnapshotHash:"",lastError:"",lastResult:null,commandAck:null};function o(a={}){let b=l.has(a.role)?a.role:"standalone";return{...n,...a,version:1,nodeId:String(a.nodeId||"").trim()||e().randomUUID(),role:b,enabled:!0===a.enabled,masterUrl:function(a){let b=String(a||"").trim().replace(/\/+$/,"");if(!b)return"";let c=new URL(b);if(!["http:","https:"].includes(c.protocol))throw Error("Master URL must use http:// or https://");if(c.username||c.password)throw Error("Master URL must not contain credentials");return c.toString().replace(/\/+$/,"")}(a.masterUrl),syncToken:String(a.syncToken||"").trim(),intervalMinutes:Math.min(1440,Math.max(1,Number(a.intervalMinutes)||5))}}async function p(a){await g().mkdir(j.DATA_DIR,{recursive:!0});let b=`${k}.${process.pid}.${e().randomUUID()}.tmp`;try{await g().writeFile(b,JSON.stringify(a,null,2),{mode:384}),await g().rename(b,k)}catch(a){throw await g().unlink(b).catch(()=>{}),a}}function q(a){let b=(globalThis[m]||Promise.resolve()).then(a,a);return globalThis[m]=b.catch(()=>{}),b}async function r({includeSecrets:a=!1}={}){let b={};try{b=JSON.parse(await g().readFile(k,"utf8"))}catch(a){a?.code!=="ENOENT"&&console.warn("[cluster] failed to read config:",a?.message||a)}let c=o(b);if(b.nodeId||await p(c),a)return c;let{syncToken:d,...e}=c;return{...e,hasSyncToken:!!c.syncToken}}async function s(a={}){if(!a||"object"!=typeof a||Array.isArray(a))throw Error("Invalid cluster config payload");return q(async()=>{let b=await r({includeSecrets:!0}),c={};for(let b of["role","enabled","masterUrl","syncToken","intervalMinutes"])Object.prototype.hasOwnProperty.call(a,b)&&(c[b]=a[b]);let d=o({...b,...c});if("master"!==d.role||d.syncToken||(d.syncToken=e().randomBytes(32).toString("base64url")),d.enabled&&"slave"===d.role){if(!d.masterUrl)throw Error("Master URL is required for Standby mode");if(!d.syncToken)throw Error("Sync token is required for Standby mode")}return await p(d),d})}async function t(){return q(async()=>{let a={...await r({includeSecrets:!0}),syncToken:e().randomBytes(32).toString("base64url")};return await p(a),a})}async function u(a={}){return q(async()=>{let b=await r({includeSecrets:!0}),c=o({...b,...a,nodeId:b.nodeId,role:b.role,enabled:b.enabled,masterUrl:b.masterUrl,syncToken:b.syncToken,intervalMinutes:b.intervalMinutes});return await p(c),c})}async function v(){return"slave"===(await r({includeSecrets:!0})).role}function w(a,b){let c=Buffer.from(String(a||"")),d=Buffer.from(String(b||""));return c.length>0&&c.length===d.length&&e().timingSafeEqual(c,d)}},63775:(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;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=6118,exports.ids=[3960,6118,7753],exports.modules={13073:(a,b,c)=>{c.d(b,{DI:()=>g,Hp:()=>i,LT:()=>h,MZ:()=>r,Nl:()=>u,Nu:()=>n,OV:()=>f,Tx:()=>o,WN:()=>p,Ww:()=>v,YT:()=>l,ZL:()=>k,cD:()=>m,f7:()=>t,hF:()=>j,lB:()=>s,t:()=>q});var d=c(21820);function e(){let a=(0,d.platform)(),b=(0,d.arch)();return"darwin"===a?"arm64"===b?2:1:"linux"===a?"arm64"===b?4:3:5*("win32"===a)}let f={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"},g={clientId:"app_EMoamEEZ73f0CkXaXp7hrann",authorizeUrl:"https://auth.openai.com/oauth/authorize",tokenUrl:"https://auth.openai.com/oauth/token",revocationUrl:"https://auth.openai.com/api/accounts/oauth/revoke",scope:"openid profile email offline_access",codeChallengeMethod:"S256",extraParams:{id_token_add_organizations:"true",codex_cli_simplified_flow:"true",originator:"codex_cli_rs"}},h={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"]},i={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"},j={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"},k={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"}},l={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",revocationUrl:"https://oauth2.googleapis.com/revoke",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:9,platform:e(),pluginType:2})};function m(){return{ideType:9,platform:e(),pluginType:2}}let n={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"},o={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"]},p={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"}},q={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"},r={apiBaseUrl:"https://api.kilo.ai",initiateUrl:"https://api.kilo.ai/api/device-auth/codes",pollUrlBase:"https://api.kilo.ai/api/device-auth/codes"},s={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"},t={defaultBaseUrl:"https://gitlab.com",authorizeUrlPath:"/oauth/authorize",tokenUrlPath:"/oauth/token",userInfoUrlPath:"/api/v4/user",scope:"api read_user",codeChallengeMethod:"S256"},u={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},v=3e5},48595:(a,b,c)=>{c.d(b,{X3:()=>h,h0:()=>g});var d=c(90053),e=c(23740),f=c(14372);Object.entries(e.Q2).filter(([,a])=>a.passthroughModels).map(([a])=>a),Object.entries(f.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name}))),d.rE;let g={npmPackageName:"@jheavenknows/bluerouter",installCmd:"npm i -g @jheavenknows/bluerouter",installCmdLatest:"npm install -g @jheavenknows/bluerouter@latest",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={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","alims-intl":"https://dashscope-intl.aliyuncs.com/compatible-mode/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","vercel-ai-gateway":"https://ai-gateway.vercel.sh/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"}},59479:(a,b,c)=>{c.d(b,{ensureProviderHealthMonitor:()=>O});var d=c(70321),e=c(97753);let f=new Set(["vercel","cloudflare","deno"]);function g(a){return null==a?"":String(a).trim()}async function h(a={}){try{let b=g(a?.proxyPoolId),c="__none__"===b?"":b,d=function(a={}){let b=a?.connectionProxyEnabled===!0,c=g(a?.connectionProxyUrl);return{connectionProxyEnabled:b,connectionProxyUrl:c,connectionNoProxy:g(a?.connectionNoProxy)}}(a);if(c){let a=await (0,e.hr)(c),b=g(a?.proxyUrl),d=g(a?.noProxy);if(a&&!0===a.isActive&&b){if(f.has(a.type))return{source:a.type,proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:d,strictProxy:!0===a.strictProxy,vercelRelayUrl:b};return{source:"pool",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!0,connectionProxyUrl:b,connectionNoProxy:d,strictProxy:!0===a.strictProxy}}}if(d.connectionProxyEnabled&&d.connectionProxyUrl)return{source:"legacy",proxyPoolId:c||null,proxyPool:null,...d};return{source:"none",proxyPoolId:c||null,proxyPool:null,...d}}catch(a){return console.error("[resolveConnectionProxyConfig] Failed to resolve proxy config:",a),{source:"error",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:"",strictProxy:!1}}}var i=c(3433);function j(a){return null==a?"":String(a).trim()}async function k({proxyUrl:a,testUrl:b,timeoutMs:c}={}){let d,e=j(a);if(!e)return{ok:!1,status:400,error:"proxyUrl is required"};let f=j(b)||"https://google.com/",g=Number(c),h=Number.isFinite(g)&&g>0?Math.min(g,3e4):8e3;try{try{d=new i.ProxyAgent({uri:e})}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(),h);try{let c=await (0,i.hd)(f,{method:"HEAD",dispatcher:d,signal:a.signal,headers:{"User-Agent":"Bluerouter"}});return{ok:c.ok,status:c.status,statusText:c.statusText,url:f,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 d?.close?.()}catch{}}}var l=c(23740),m=c(48595),n=c(14372),o=c(30395),p=c(13073),q=c(43469);let r={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":"Bluerouter",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:`${p.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 s(a){return await fetch("https://api.cline.bot/api/v1/users/me",{method:"GET",headers:(0,q.w$)(a,{Accept:"application/json"})})}async function t(a){let b=a.provider,c=a.refreshToken;if(!c)return null;try{if("gemini-cli"===b||"antigravity"===b){let a="gemini-cli"===b?p.LT:p.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(p.DI.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"refresh_token",client_id:p.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(p.OV.tokenUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"refresh_token",refresh_token:c,client_id:p.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(p.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(p.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:p.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(p.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 u(a,b=null){var c;let d=r[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 t(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 s(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 t(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 v(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 t(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 v(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 v(a,b={},d=null){if(d?.vercelRelayUrl){let{proxyAwareFetch:e}=await c.e(6956).then(c.bind(c,46956));return e(a,b,{vercelRelayUrl:d.vercelRelayUrl})}if(!d?.connectionProxyEnabled||!d?.connectionProxyUrl)return fetch(a,b);let{proxyAwareFetch:e}=await c.e(6956).then(c.bind(c,46956));return e(a,b,{connectionProxyEnabled:!0,connectionProxyUrl:d.connectionProxyUrl,connectionNoProxy:d.connectionNoProxy||""})}async function w(a,b=null){if((0,l.mq)(a.provider)){let c=a.providerSpecificData?.baseUrl;if(!c)return{valid:!1,error:"Missing base URL"};try{let d=await v(`${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,l.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 v(`${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 v(d,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify({model:(0,n.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 v(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 v("https://api.openai.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"vercel-ai-gateway":{let c=await v("https://ai-gateway.vercel.sh/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"anthropic":{let c=await v("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 v(`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 v("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 v("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 v("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 v({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 v("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":case"alims-intl":{let c="alicode-intl"===a.provider?"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions":"alims-intl"===a.provider?"https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions":"https://coding.dashscope.aliyuncs.com/v1/chat/completions",d=await v(c,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:(0,n.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 v(m.X3[a.provider],{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:(0,n.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 v("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 v("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 v("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 v("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 v("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 v("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 v("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 v("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 v("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 v("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 v("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 v("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 v("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,o.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 v("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 v("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 v("https://api.nanobananaapi.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"fal-ai":{let c=await v("https://api.fal.ai/v1/models?limit=1",{headers:{Authorization:`Key ${a.apiKey}`}},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"chutes":{let c=await v("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 v("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 v("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 x(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 e=await h(c.providerSpecificData||{});if(e.connectionProxyEnabled&&e.connectionProxyUrl&&!e.vercelRelayUrl){let b=await k({proxyUrl:e.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 f=Date.now();b="apikey"===c.authType||"cookie"===c.authType?await w(c,e):await u(c,e);let g=Date.now()-f,i={testStatus:b.valid?"active":"error",lastError:b.valid?null:b.error,lastErrorAt:b.valid?null:new Date().toISOString()};return b.refreshed&&b.newTokens&&(i.accessToken=b.newTokens.accessToken,b.newTokens.refreshToken&&(i.refreshToken=b.newTokens.refreshToken),b.newTokens.expiresIn&&(i.expiresAt=new Date(Date.now()+1e3*b.newTokens.expiresIn).toISOString())),await (0,d.updateProviderConnection)(a,i),{valid:b.valid,error:b.error,latencyMs:g,testedAt:new Date().toISOString()}}function y(a,b,c=1,d=3600){let e=Number.parseInt(a,10);return!Number.isFinite(e)||e<c?b:Math.min(e,d)}function z(a={}){var b;let c=a&&"object"==typeof a?a:{};return{enabled:!0===c.enabled,intervalSec:y(c.intervalSec,60,10,86400),failureThreshold:y(c.failureThreshold,3,1,20),timeoutMs:y(c.timeoutMs,15e3,1e3,12e4),prompt:"string"==typeof c.prompt&&c.prompt.trim()?c.prompt.trim():"Say hi",disableThinking:!1!==c.disableThinking,model:"string"==typeof(b=c.model||c.healthModel||c.testModel)?b.trim():""}}let A=Number.parseInt(process.env.PROVIDER_HEALTHCHECK_TICK_MS||"5000",10),B="__bluerouterProviderHealthMonitorV2";function C(){return globalThis[B]||(globalThis[B]={timer:null,running:!1,startedAt:null,lastTickAt:null,tickCount:0,lastMonitorError:null}),globalThis[B]}function D(){return new Date().toISOString()}function E(a,b={}){return function(a={},b={},c=""){let d=function(a={},b=""){return function(a={}){let b=a&&"object"==typeof a?a:{};return{overrideConnections:!0===b.overrideConnections,healthCheck:z(b.healthCheck||b)}}((a.providerHealthChecks||{})[b]||{})}(b,c||a.provider||"");return d.overrideConnections?{healthCheck:d.healthCheck,source:"provider",providerOverride:!0}:{healthCheck:z(a.healthCheck||{}),source:"connection",providerOverride:!1}}(a,b,a.provider||"")}function F(a=""){return String(a||"").trim().replace(/\/+$/,"")}function G(a={}){return a.apiKey||a.accessToken||a.providerSpecificData?.apiKey||""}async function H(a){let b=await a.text().catch(()=>"");return b?b.slice(0,500):""}async function I(a,b){var c;let d="string"==typeof(c=b.model)?c.trim():"";if(!d)return x(a.id);let e=Date.now(),f=b.prompt||"Say hi",g=function(a=""){if((0,l.gb)(a))return"anthropic";if((0,l.mq)(a)||"cloudflare-ai"===a)return"openai";if("gemini"===a)return"gemini";if("github"===a)return"openai";let b=m.X3?.[a]||"";return b.includes("/messages")?"anthropic":b.includes("/chat/completions")||b.includes("/responses")?"openai":null}(a.provider||""),h=function(a,b){let c=a.provider||"",d=a.providerSpecificData?.baseUrl||"";if("cloudflare-ai"===c){let b=a.providerSpecificData?.accountId||a.accountId;return b?`https://api.cloudflare.com/client/v4/accounts/${encodeURIComponent(b)}/ai/v1/chat/completions`:""}if("github"===c)return"https://api.githubcopilot.com/chat/completions";if("gemini"===c)return"https://generativelanguage.googleapis.com/v1beta";if((0,l.gb)(c)){let a=function(a=""){let b=F(a);return b?(b.endsWith("/messages")&&(b=F(b.slice(0,-9))),b.endsWith("/v1")||(b=`${b}/v1`),b):""}(d);return a?`${a}/messages`:""}if((0,l.mq)(c))return function(a=""){let b=F(a);return b?b.endsWith("/chat/completions")||b.endsWith("/responses")?b:`${b}/chat/completions`:""}(d);let e=m.X3?.[c]||"";return e?F(e):"anthropic"===b&&"anthropic"===c?"https://api.anthropic.com/v1/messages":"openai"===b&&"openai"===c?"https://api.openai.com/v1/chat/completions":""}(a,g);if(!g||!h)return x(a.id);try{let c=function(a,b,c,d,e,f){let g=a.provider||"",h=G(a);if("gemini"===b){let b=G(a);if(!b)return{error:"Missing Gemini API key"};let c=function(a=""){return String(a||"").split("/").filter(Boolean).map(a=>encodeURIComponent(a)).join("/")}(e.startsWith("models/")?e:`models/${e}`);return{url:`https://generativelanguage.googleapis.com/v1beta/${c}:generateContent?key=${encodeURIComponent(b)}`,headers:{"Content-Type":"application/json"},body:{contents:[{role:"user",parts:[{text:f}]}],generationConfig:{maxOutputTokens:1}}}}if(!h)return{error:"Missing API key or access token"};if("anthropic"===b)return{url:c,headers:{"Content-Type":"application/json","x-api-key":h,"anthropic-version":"2023-06-01",Authorization:`Bearer ${h}`},body:{model:e,max_tokens:1,messages:[{role:"user",content:f}]}};if("openai"===b){let a={model:e,max_tokens:1,stream:!1,messages:[{role:"user",content:f}]};!1!==d.disableThinking&&(0,l.mq)(g)&&(a.chat_template_kwargs={enable_thinking:!1});let b={"Content-Type":"application/json",Authorization:`Bearer ${h}`};return"github"===g&&(b["Copilot-Integration-Id"]="vscode-chat",b["editor-version"]="vscode/1.107.1",b["editor-plugin-version"]="copilot-chat/0.26.7",b["user-agent"]="GitHubCopilotChat/0.26.7"),{url:c,headers:b,body:a}}return{error:"Direct chat healthcheck is not supported for this provider"}}(a,g,h,b,d,f);if(c.error)return{valid:!1,error:c.error,latencyMs:Date.now()-e,testedAt:D()};let i=await fetch(c.url,{method:"POST",headers:c.headers,body:JSON.stringify(c.body),signal:AbortSignal.timeout(b.timeoutMs||15e3)}),j=Date.now()-e;if(i.ok)return{valid:!0,error:null,latencyMs:j,testedAt:D()};let k=await H(i);return{valid:!1,error:`Health chat returned ${i.status}${k?`: ${k}`:""}`,latencyMs:j,testedAt:D()}}catch(a){return{valid:!1,error:a.message||String(a),latencyMs:Date.now()-e,testedAt:D()}}}async function J(a,b={}){let c="dead"===a.healthStatus,e=b.testedAt||D(),f={healthStatus:"alive",healthConsecutiveFailures:0,healthConsecutiveSuccesses:Number(a.healthConsecutiveSuccesses||0)+1,healthLastCheckedAt:e,healthLastOkAt:e,healthLastError:null,healthLastLatencyMs:Number(b.latencyMs||0),testStatus:"active",lastError:null,lastErrorAt:null};return c&&(f.healthLastRecoveredAt=e),await (0,d.updateProviderConnection)(a.id,f),f}async function K(a,b={},c=null){let e=(c||z(a.healthCheck||{})).failureThreshold||3,f=Number(a.healthConsecutiveFailures||0)+1,g=b.testedAt||D(),h=b.error||"Health check failed",i=f>=e,j={healthStatus:i?"dead":"degraded",healthConsecutiveFailures:f,healthConsecutiveSuccesses:0,healthLastCheckedAt:g,healthLastError:h,healthLastLatencyMs:Number(b.latencyMs||0)};return i&&(j.testStatus="error",j.lastError=h,j.lastErrorAt=g),await (0,d.updateProviderConnection)(a.id,j),j}async function L(a,b={}){let c,{healthCheck:d,source:e,providerOverride:f}=E(a,b),g=z(d||{}),h=g.timeoutMs||15e3;try{let b=new Promise(a=>{c=setTimeout(()=>a({valid:!1,error:`Health check timeout after ${h}ms`,latencyMs:h,testedAt:D()}),h)}),d=await Promise.race([I(a,{...g,healthSource:e,providerOverride:f}),b]);if(c&&clearTimeout(c),d?.valid){let b=await J(a,d);return{connectionId:a.id,provider:a.provider,ok:!0,patch:b}}let i=await K(a,d||{},g);return{connectionId:a.id,provider:a.provider,ok:!1,error:d?.error||"Health check failed",patch:i}}catch(d){c&&clearTimeout(c);let b=await K(a,{error:d.message||String(d),testedAt:D()},g);return{connectionId:a.id,provider:a.provider,ok:!1,error:d.message||String(d),patch:b}}}async function M({force:a=!1,connectionId:b=null}={}){let c=await (0,d.mt)(),e=(await (0,d.getProviderConnections)({isActive:!0})).filter(d=>(!b||d.id===b)&&function(a,{settings:b={},force:c=!1}={}){if(!a||!1===a.isActive)return!1;let d=z(E(a,b).healthCheck||{});return!!c||!!d.enabled&&function(a){if(!a)return 1/0;let b=new Date(a).getTime();return Number.isFinite(b)?Date.now()-b:1/0}(a.healthLastCheckedAt)>=1e3*d.intervalSec}(d,{settings:c,force:a})),f=[];for(let a of e)f.push(await L(a,c));return{checked:f.length,results:f,checkedAt:D()}}async function N(){let a=C();if(!a.running){a.running=!0,a.lastTickAt=D(),a.tickCount+=1;try{await M(),a.lastMonitorError=null}catch(b){a.lastMonitorError=b.message||String(b),console.log("Provider health monitor error:",a.lastMonitorError)}finally{a.running=!1}}}function O(){let a=C();return!!a.timer||(a.startedAt=D(),a.timer=setInterval(N,Number.isFinite(A)&&A>=1e3?A:5e3),N().catch(()=>{}),!0)}},63960:(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(82009);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)}},82009:(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()}},97753:(a,b,c)=>{c.d(b,{Fh:()=>d.Fh,P:()=>d.getProviderConnections,Uv:()=>d.Uv,createProviderConnection:()=>d.iE,hr:()=>d.hr,updateProviderConnection:()=>d.updateProviderConnection});var d=c(70321)}};
|
|
1
|
+
"use strict";exports.id=6118,exports.ids=[3960,6118,7753],exports.modules={13073:(a,b,c)=>{c.d(b,{DI:()=>g,Hp:()=>i,LT:()=>h,MZ:()=>r,Nl:()=>u,Nu:()=>n,OV:()=>f,Tx:()=>o,WN:()=>p,Ww:()=>v,YT:()=>l,ZL:()=>k,cD:()=>m,f7:()=>t,hF:()=>j,lB:()=>s,t:()=>q});var d=c(21820);function e(){let a=(0,d.platform)(),b=(0,d.arch)();return"darwin"===a?"arm64"===b?2:1:"linux"===a?"arm64"===b?4:3:5*("win32"===a)}let f={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"},g={clientId:"app_EMoamEEZ73f0CkXaXp7hrann",authorizeUrl:"https://auth.openai.com/oauth/authorize",tokenUrl:"https://auth.openai.com/oauth/token",revocationUrl:"https://auth.openai.com/api/accounts/oauth/revoke",scope:"openid profile email offline_access",codeChallengeMethod:"S256",extraParams:{id_token_add_organizations:"true",codex_cli_simplified_flow:"true",originator:"codex_cli_rs"}},h={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"]},i={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"},j={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"},k={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"}},l={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",revocationUrl:"https://oauth2.googleapis.com/revoke",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:9,platform:e(),pluginType:2})};function m(){return{ideType:9,platform:e(),pluginType:2}}let n={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"},o={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"]},p={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"}},q={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"},r={apiBaseUrl:"https://api.kilo.ai",initiateUrl:"https://api.kilo.ai/api/device-auth/codes",pollUrlBase:"https://api.kilo.ai/api/device-auth/codes"},s={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"},t={defaultBaseUrl:"https://gitlab.com",authorizeUrlPath:"/oauth/authorize",tokenUrlPath:"/oauth/token",userInfoUrlPath:"/api/v4/user",scope:"api read_user",codeChallengeMethod:"S256"},u={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},v=3e5},48595:(a,b,c)=>{c.d(b,{X3:()=>h,h0:()=>g});var d=c(90053),e=c(23740),f=c(14372);Object.entries(e.Q2).filter(([,a])=>a.passthroughModels).map(([a])=>a),Object.entries(f.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name}))),d.rE;let g={npmPackageName:"@jheavenknows/bluerouter",installCmd:"npm i -g @jheavenknows/bluerouter",installCmdLatest:"npm install -g @jheavenknows/bluerouter@latest",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={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","alims-intl":"https://dashscope-intl.aliyuncs.com/compatible-mode/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","vercel-ai-gateway":"https://ai-gateway.vercel.sh/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"}},59479:(a,b,c)=>{c.d(b,{ensureProviderHealthMonitor:()=>O});var d=c(70321),e=c(97753);let f=new Set(["vercel","cloudflare","deno"]);function g(a){return null==a?"":String(a).trim()}async function h(a={}){try{let b=g(a?.proxyPoolId),c="__none__"===b?"":b,d=function(a={}){let b=a?.connectionProxyEnabled===!0,c=g(a?.connectionProxyUrl);return{connectionProxyEnabled:b,connectionProxyUrl:c,connectionNoProxy:g(a?.connectionNoProxy)}}(a);if(c){let a=await (0,e.hr)(c),b=g(a?.proxyUrl),d=g(a?.noProxy);if(a&&!0===a.isActive&&b){if(f.has(a.type))return{source:a.type,proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:d,strictProxy:!0===a.strictProxy,vercelRelayUrl:b};return{source:"pool",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!0,connectionProxyUrl:b,connectionNoProxy:d,strictProxy:!0===a.strictProxy}}}if(d.connectionProxyEnabled&&d.connectionProxyUrl)return{source:"legacy",proxyPoolId:c||null,proxyPool:null,...d};return{source:"none",proxyPoolId:c||null,proxyPool:null,...d}}catch(a){return console.error("[resolveConnectionProxyConfig] Failed to resolve proxy config:",a),{source:"error",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:"",strictProxy:!1}}}var i=c(3433);function j(a){return null==a?"":String(a).trim()}async function k({proxyUrl:a,testUrl:b,timeoutMs:c}={}){let d,e=j(a);if(!e)return{ok:!1,status:400,error:"proxyUrl is required"};let f=j(b)||"https://google.com/",g=Number(c),h=Number.isFinite(g)&&g>0?Math.min(g,3e4):8e3;try{try{d=new i.ProxyAgent({uri:e})}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(),h);try{let c=await (0,i.hd)(f,{method:"HEAD",dispatcher:d,signal:a.signal,headers:{"User-Agent":"Bluerouter"}});return{ok:c.ok,status:c.status,statusText:c.statusText,url:f,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 d?.close?.()}catch{}}}var l=c(23740),m=c(48595),n=c(14372),o=c(30395),p=c(13073),q=c(43469);let r={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":"Bluerouter",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:`${p.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 s(a){return await fetch("https://api.cline.bot/api/v1/users/me",{method:"GET",headers:(0,q.w$)(a,{Accept:"application/json"})})}async function t(a){let b=a.provider,c=a.refreshToken;if(!c)return null;try{if("gemini-cli"===b||"antigravity"===b){let a="gemini-cli"===b?p.LT:p.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(p.DI.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"refresh_token",client_id:p.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(p.OV.tokenUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"refresh_token",refresh_token:c,client_id:p.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(p.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(p.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:p.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(p.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 u(a,b=null){var c;let d=r[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 t(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 s(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 t(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 v(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 t(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 v(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 v(a,b={},d=null){if(d?.vercelRelayUrl){let{proxyAwareFetch:e}=await c.e(6956).then(c.bind(c,46956));return e(a,b,{vercelRelayUrl:d.vercelRelayUrl})}if(!d?.connectionProxyEnabled||!d?.connectionProxyUrl)return fetch(a,b);let{proxyAwareFetch:e}=await c.e(6956).then(c.bind(c,46956));return e(a,b,{connectionProxyEnabled:!0,connectionProxyUrl:d.connectionProxyUrl,connectionNoProxy:d.connectionNoProxy||""})}async function w(a,b=null){if((0,l.mq)(a.provider)){let c=a.providerSpecificData?.baseUrl;if(!c)return{valid:!1,error:"Missing base URL"};try{let d=await v(`${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,l.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 v(`${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 v(d,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify({model:(0,n.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 v(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 v("https://api.openai.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"vercel-ai-gateway":{let c=await v("https://ai-gateway.vercel.sh/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"anthropic":{let c=await v("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 v(`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 v("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 v("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 v("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 v({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 v("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":case"alims-intl":{let c="alicode-intl"===a.provider?"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions":"alims-intl"===a.provider?"https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions":"https://coding.dashscope.aliyuncs.com/v1/chat/completions",d=await v(c,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:(0,n.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 v(m.X3[a.provider],{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:(0,n.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 v("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 v("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 v("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 v("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 v("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 v("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 v("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 v("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 v("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 v("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 v("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 v("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 v("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,o.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 v("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 v("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 v("https://api.nanobananaapi.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"fal-ai":{let c=await v("https://api.fal.ai/v1/models?limit=1",{headers:{Authorization:`Key ${a.apiKey}`}},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"chutes":{let c=await v("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 v("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 v("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 x(a){let b,c=await (0,d.getProviderConnectionById)(a);if(!c)return{valid:!1,error:"Connection not found",latencyMs:0,testedAt:new Date().toISOString()};let e=await h(c.providerSpecificData||{});if(e.connectionProxyEnabled&&e.connectionProxyUrl&&!e.vercelRelayUrl){let b=await k({proxyUrl:e.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 f=Date.now();b="apikey"===c.authType||"cookie"===c.authType?await w(c,e):await u(c,e);let g=Date.now()-f,i={testStatus:b.valid?"active":"error",lastError:b.valid?null:b.error,lastErrorAt:b.valid?null:new Date().toISOString()};return b.refreshed&&b.newTokens&&(i.accessToken=b.newTokens.accessToken,b.newTokens.refreshToken&&(i.refreshToken=b.newTokens.refreshToken),b.newTokens.expiresIn&&(i.expiresAt=new Date(Date.now()+1e3*b.newTokens.expiresIn).toISOString())),await (0,d.updateProviderConnection)(a,i),{valid:b.valid,error:b.error,latencyMs:g,testedAt:new Date().toISOString()}}function y(a,b,c=1,d=3600){let e=Number.parseInt(a,10);return!Number.isFinite(e)||e<c?b:Math.min(e,d)}function z(a={}){var b;let c=a&&"object"==typeof a?a:{};return{enabled:!0===c.enabled,intervalSec:y(c.intervalSec,60,10,86400),failureThreshold:y(c.failureThreshold,3,1,20),timeoutMs:y(c.timeoutMs,15e3,1e3,12e4),prompt:"string"==typeof c.prompt&&c.prompt.trim()?c.prompt.trim():"Say hi",disableThinking:!1!==c.disableThinking,model:"string"==typeof(b=c.model||c.healthModel||c.testModel)?b.trim():""}}let A=Number.parseInt(process.env.PROVIDER_HEALTHCHECK_TICK_MS||"5000",10),B="__bluerouterProviderHealthMonitorV2";function C(){return globalThis[B]||(globalThis[B]={timer:null,running:!1,startedAt:null,lastTickAt:null,tickCount:0,lastMonitorError:null}),globalThis[B]}function D(){return new Date().toISOString()}function E(a,b={}){return function(a={},b={},c=""){let d=function(a={},b=""){return function(a={}){let b=a&&"object"==typeof a?a:{};return{overrideConnections:!0===b.overrideConnections,healthCheck:z(b.healthCheck||b)}}((a.providerHealthChecks||{})[b]||{})}(b,c||a.provider||"");return d.overrideConnections?{healthCheck:d.healthCheck,source:"provider",providerOverride:!0}:{healthCheck:z(a.healthCheck||{}),source:"connection",providerOverride:!1}}(a,b,a.provider||"")}function F(a=""){return String(a||"").trim().replace(/\/+$/,"")}function G(a={}){return a.apiKey||a.accessToken||a.providerSpecificData?.apiKey||""}async function H(a){let b=await a.text().catch(()=>"");return b?b.slice(0,500):""}async function I(a,b){var c;let d="string"==typeof(c=b.model)?c.trim():"";if(!d)return x(a.id);let e=Date.now(),f=b.prompt||"Say hi",g=function(a=""){if((0,l.gb)(a))return"anthropic";if((0,l.mq)(a)||"cloudflare-ai"===a)return"openai";if("gemini"===a)return"gemini";if("github"===a)return"openai";let b=m.X3?.[a]||"";return b.includes("/messages")?"anthropic":b.includes("/chat/completions")||b.includes("/responses")?"openai":null}(a.provider||""),h=function(a,b){let c=a.provider||"",d=a.providerSpecificData?.baseUrl||"";if("cloudflare-ai"===c){let b=a.providerSpecificData?.accountId||a.accountId;return b?`https://api.cloudflare.com/client/v4/accounts/${encodeURIComponent(b)}/ai/v1/chat/completions`:""}if("github"===c)return"https://api.githubcopilot.com/chat/completions";if("gemini"===c)return"https://generativelanguage.googleapis.com/v1beta";if((0,l.gb)(c)){let a=function(a=""){let b=F(a);return b?(b.endsWith("/messages")&&(b=F(b.slice(0,-9))),b.endsWith("/v1")||(b=`${b}/v1`),b):""}(d);return a?`${a}/messages`:""}if((0,l.mq)(c))return function(a=""){let b=F(a);return b?b.endsWith("/chat/completions")||b.endsWith("/responses")?b:`${b}/chat/completions`:""}(d);let e=m.X3?.[c]||"";return e?F(e):"anthropic"===b&&"anthropic"===c?"https://api.anthropic.com/v1/messages":"openai"===b&&"openai"===c?"https://api.openai.com/v1/chat/completions":""}(a,g);if(!g||!h)return x(a.id);try{let c=function(a,b,c,d,e,f){let g=a.provider||"",h=G(a);if("gemini"===b){let b=G(a);if(!b)return{error:"Missing Gemini API key"};let c=function(a=""){return String(a||"").split("/").filter(Boolean).map(a=>encodeURIComponent(a)).join("/")}(e.startsWith("models/")?e:`models/${e}`);return{url:`https://generativelanguage.googleapis.com/v1beta/${c}:generateContent?key=${encodeURIComponent(b)}`,headers:{"Content-Type":"application/json"},body:{contents:[{role:"user",parts:[{text:f}]}],generationConfig:{maxOutputTokens:1}}}}if(!h)return{error:"Missing API key or access token"};if("anthropic"===b)return{url:c,headers:{"Content-Type":"application/json","x-api-key":h,"anthropic-version":"2023-06-01",Authorization:`Bearer ${h}`},body:{model:e,max_tokens:1,messages:[{role:"user",content:f}]}};if("openai"===b){let a={model:e,max_tokens:1,stream:!1,messages:[{role:"user",content:f}]};!1!==d.disableThinking&&(0,l.mq)(g)&&(a.chat_template_kwargs={enable_thinking:!1});let b={"Content-Type":"application/json",Authorization:`Bearer ${h}`};return"github"===g&&(b["Copilot-Integration-Id"]="vscode-chat",b["editor-version"]="vscode/1.107.1",b["editor-plugin-version"]="copilot-chat/0.26.7",b["user-agent"]="GitHubCopilotChat/0.26.7"),{url:c,headers:b,body:a}}return{error:"Direct chat healthcheck is not supported for this provider"}}(a,g,h,b,d,f);if(c.error)return{valid:!1,error:c.error,latencyMs:Date.now()-e,testedAt:D()};let i=await fetch(c.url,{method:"POST",headers:c.headers,body:JSON.stringify(c.body),signal:AbortSignal.timeout(b.timeoutMs||15e3)}),j=Date.now()-e;if(i.ok)return{valid:!0,error:null,latencyMs:j,testedAt:D()};let k=await H(i);return{valid:!1,error:`Health chat returned ${i.status}${k?`: ${k}`:""}`,latencyMs:j,testedAt:D()}}catch(a){return{valid:!1,error:a.message||String(a),latencyMs:Date.now()-e,testedAt:D()}}}async function J(a,b={}){let c="dead"===a.healthStatus,e=b.testedAt||D(),f={healthStatus:"alive",healthConsecutiveFailures:0,healthConsecutiveSuccesses:Number(a.healthConsecutiveSuccesses||0)+1,healthLastCheckedAt:e,healthLastOkAt:e,healthLastError:null,healthLastLatencyMs:Number(b.latencyMs||0),testStatus:"active",lastError:null,lastErrorAt:null};return c&&(f.healthLastRecoveredAt=e),await (0,d.updateProviderConnection)(a.id,f),f}async function K(a,b={},c=null){let e=(c||z(a.healthCheck||{})).failureThreshold||3,f=Number(a.healthConsecutiveFailures||0)+1,g=b.testedAt||D(),h=b.error||"Health check failed",i=f>=e,j={healthStatus:i?"dead":"degraded",healthConsecutiveFailures:f,healthConsecutiveSuccesses:0,healthLastCheckedAt:g,healthLastError:h,healthLastLatencyMs:Number(b.latencyMs||0)};return i&&(j.testStatus="error",j.lastError=h,j.lastErrorAt=g),await (0,d.updateProviderConnection)(a.id,j),j}async function L(a,b={}){let c,{healthCheck:d,source:e,providerOverride:f}=E(a,b),g=z(d||{}),h=g.timeoutMs||15e3;try{let b=new Promise(a=>{c=setTimeout(()=>a({valid:!1,error:`Health check timeout after ${h}ms`,latencyMs:h,testedAt:D()}),h)}),d=await Promise.race([I(a,{...g,healthSource:e,providerOverride:f}),b]);if(c&&clearTimeout(c),d?.valid){let b=await J(a,d);return{connectionId:a.id,provider:a.provider,ok:!0,patch:b}}let i=await K(a,d||{},g);return{connectionId:a.id,provider:a.provider,ok:!1,error:d?.error||"Health check failed",patch:i}}catch(d){c&&clearTimeout(c);let b=await K(a,{error:d.message||String(d),testedAt:D()},g);return{connectionId:a.id,provider:a.provider,ok:!1,error:d.message||String(d),patch:b}}}async function M({force:a=!1,connectionId:b=null}={}){let c=await (0,d.getSettings)(),e=(await (0,d.getProviderConnections)({isActive:!0})).filter(d=>(!b||d.id===b)&&function(a,{settings:b={},force:c=!1}={}){if(!a||!1===a.isActive)return!1;let d=z(E(a,b).healthCheck||{});return!!c||!!d.enabled&&function(a){if(!a)return 1/0;let b=new Date(a).getTime();return Number.isFinite(b)?Date.now()-b:1/0}(a.healthLastCheckedAt)>=1e3*d.intervalSec}(d,{settings:c,force:a})),f=[];for(let a of e)f.push(await L(a,c));return{checked:f.length,results:f,checkedAt:D()}}async function N(){let a=C();if(!a.running){a.running=!0,a.lastTickAt=D(),a.tickCount+=1;try{await M(),a.lastMonitorError=null}catch(b){a.lastMonitorError=b.message||String(b),console.log("Provider health monitor error:",a.lastMonitorError)}finally{a.running=!1}}}function O(){let a=C();return!!a.timer||(a.startedAt=D(),a.timer=setInterval(N,Number.isFinite(A)&&A>=1e3?A:5e3),N().catch(()=>{}),!0)}},63960:(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(82009);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)}},82009:(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()}},97753:(a,b,c)=>{c.d(b,{Fh:()=>d.getProviderNodes,P:()=>d.getProviderConnections,Uv:()=>d.getCombos,createProviderConnection:()=>d.createProviderConnection,hr:()=>d.getProxyPoolById,updateProviderConnection:()=>d.updateProviderConnection});var d=c(70321)}};
|