9router 0.3.55 → 0.3.57
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/.next/BUILD_ID +1 -1
- package/app/.next/app-path-routes-manifest.json +40 -40
- package/app/.next/build-manifest.json +5 -5
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error.html +2 -2
- package/app/.next/server/app/_global-error.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_not-found.html +1 -1
- package/app/.next/server/app/_not-found.rsc +4 -4
- package/app/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/copilot-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/opencode-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/locale/route.js +1 -1
- package/app/.next/server/app/api/locale/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/route.js +1 -1
- package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/iflow/cookie/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test-models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/route.js +1 -1
- package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/proxy-pools/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/proxy-pools/[id]/test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/proxy-pools/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/database/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/proxy-test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/console-logs/route.js +1 -1
- package/app/.next/server/app/api/translator/console-logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/console-logs/stream/route.js +1 -1
- package/app/.next/server/app/api/translator/console-logs/stream/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/load/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/save/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/translate/route.js +1 -1
- package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/tunnel/disable/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/tunnel/enable/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/tunnel/status/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/chart/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/providers/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/request-details/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/stats/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/stream/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/version/route.js +1 -1
- package/app/.next/server/app/api/version/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/callback.html +1 -1
- package/app/.next/server/app/callback.rsc +4 -4
- package/app/.next/server/app/callback.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.html +1 -1
- package/app/.next/server/app/dashboard/cli-tools.rsc +6 -6
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
- package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/combos.html +1 -1
- package/app/.next/server/app/dashboard/combos.rsc +6 -6
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
- package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/endpoint.html +1 -1
- package/app/.next/server/app/dashboard/endpoint.rsc +6 -6
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
- package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/mitm.html +1 -1
- package/app/.next/server/app/dashboard/mitm.rsc +6 -6
- package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
- package/app/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/profile.html +1 -1
- package/app/.next/server/app/dashboard/profile.rsc +6 -6
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
- package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers/new.html +1 -1
- package/app/.next/server/app/dashboard/providers/new.rsc +6 -6
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
- package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers.html +1 -1
- package/app/.next/server/app/dashboard/providers.rsc +6 -6
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
- package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/proxy-pools.html +1 -1
- package/app/.next/server/app/dashboard/proxy-pools.rsc +6 -6
- package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
- package/app/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/quota.html +2 -2
- package/app/.next/server/app/dashboard/quota.rsc +7 -7
- package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
- package/app/.next/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings/pricing/page.js +1 -1
- package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.rsc +5 -5
- package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.html +1 -1
- package/app/.next/server/app/dashboard/translator.rsc +6 -6
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
- package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/usage.html +1 -1
- package/app/.next/server/app/dashboard/usage.rsc +6 -6
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
- package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/dashboard.html +1 -1
- package/app/.next/server/app/dashboard.rsc +6 -6
- package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard.segments/_full.segment.rsc +6 -6
- package/app/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/index.html +1 -1
- package/app/.next/server/app/index.rsc +4 -4
- package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/landing.html +1 -1
- package/app/.next/server/app/landing.rsc +5 -5
- package/app/.next/server/app/landing.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/landing.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
- package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login.html +1 -1
- package/app/.next/server/app/login.rsc +5 -5
- package/app/.next/server/app/login.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/login.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/app/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/app/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app-paths-manifest.json +40 -40
- package/app/.next/server/chunks/1114.js +1 -1
- package/app/.next/server/chunks/1424.js +1 -1
- package/app/.next/server/chunks/318.js +1 -1
- package/app/.next/server/chunks/3832.js +1 -1
- package/app/.next/server/chunks/412.js +1 -1
- package/app/.next/server/chunks/6182.js +1 -1
- package/app/.next/server/chunks/649.js +1 -1
- package/app/.next/server/chunks/7341.js +1 -1
- package/app/.next/server/chunks/8590.js +1 -1
- package/app/.next/server/chunks/9201.js +1 -1
- package/app/.next/server/chunks/9718.js +1 -1
- package/app/.next/server/middleware-build-manifest.js +1 -1
- package/app/.next/server/pages/404.html +1 -1
- package/app/.next/server/pages/500.html +2 -2
- package/app/.next/server/server-reference-manifest.js +1 -1
- package/app/.next/server/server-reference-manifest.json +1 -1
- package/app/.next/static/chunks/2652-51aca5cd32bd186f.js +1 -0
- package/app/.next/static/chunks/3794-23858078d298f399.js +2 -0
- package/app/.next/static/chunks/{4bd1b696-e5d7c65570c947b7.js → 4bd1b696-84e33c69f320f6a0.js} +1 -1
- package/app/.next/static/chunks/{5497-9933573cfe960e0c.js → 5497-ea854c092fddeb4d.js} +3 -3
- package/app/.next/static/chunks/{619-c4c101a6a78feeb4.js → 619-bfe7e89fff6eb942.js} +1 -1
- package/app/.next/static/chunks/{9242-3e0fdad972d9b35d.js → 9242-a85bb5812b359227.js} +3 -3
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-d973cbda9e65d6ae.js → page-15fc16f73981b9be.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/mitm/page-fb6736d76c7a3b6a.js +1 -0
- package/app/.next/static/chunks/app/dashboard/settings/pricing/{page-4b7305b3e5d6e57b.js → page-e097c892258ad1fd.js} +1 -1
- package/app/.next/static/chunks/app/landing/{page-106f74afc6f71a31.js → page-cb9f1320605eaafc.js} +1 -1
- package/app/.next/static/chunks/app/{layout-08e56eacc7acf9e1.js → layout-095f249fd620f9cf.js} +1 -1
- package/app/.next/static/chunks/{framework-9f63a52f5ba18ac8.js → framework-6854168261815bb6.js} +1 -1
- package/app/.next/static/chunks/{main-aab9e1b069a77e0f.js → main-5b78d3de83609121.js} +2 -2
- package/app/.next/static/chunks/webpack-9bef9bba7ebc0551.js +1 -0
- package/app/.next/static/css/9dff3edaebe94c91.css +3 -0
- package/app/package.json +3 -1
- package/app/public/i18n/literals/ar.json +196 -0
- package/app/public/i18n/literals/bn.json +196 -0
- package/app/public/i18n/literals/cs.json +196 -0
- package/app/public/i18n/literals/da.json +196 -0
- package/app/public/i18n/literals/de.json +196 -0
- package/app/public/i18n/literals/el.json +196 -0
- package/app/public/i18n/literals/es.json +196 -0
- package/app/public/i18n/literals/fi.json +196 -0
- package/app/public/i18n/literals/fr.json +196 -0
- package/app/public/i18n/literals/he.json +196 -0
- package/app/public/i18n/literals/hi.json +196 -0
- package/app/public/i18n/literals/hu.json +196 -0
- package/app/public/i18n/literals/id.json +196 -0
- package/app/public/i18n/literals/it.json +196 -0
- package/app/public/i18n/literals/ja.json +196 -0
- package/app/public/i18n/literals/ko.json +196 -0
- package/app/public/i18n/literals/nl.json +196 -0
- package/app/public/i18n/literals/no.json +196 -0
- package/app/public/i18n/literals/pl.json +196 -0
- package/app/public/i18n/literals/pt-BR.json +196 -0
- package/app/public/i18n/literals/pt-PT.json +196 -0
- package/app/public/i18n/literals/ro.json +196 -0
- package/app/public/i18n/literals/ru.json +196 -0
- package/app/public/i18n/literals/sv.json +196 -0
- package/app/public/i18n/literals/th.json +196 -0
- package/app/public/i18n/literals/tl.json +196 -0
- package/app/public/i18n/literals/tr.json +196 -0
- package/app/public/i18n/literals/uk.json +196 -0
- package/app/public/i18n/literals/ur.json +196 -0
- package/app/public/i18n/literals/zh-TW.json +196 -0
- package/app/src/mitm/server.js +1 -297
- package/package.json +1 -1
- package/app/.next/static/chunks/2652-378fd4fa14847021.js +0 -1
- package/app/.next/static/chunks/3794-c67589461d449d62.js +0 -2
- package/app/.next/static/chunks/app/(dashboard)/dashboard/mitm/page-bf88929b2cc595ab.js +0 -1
- package/app/.next/static/chunks/webpack-25c43999146c934e.js +0 -1
- package/app/.next/static/css/4016074f63f34af9.css +0 -3
- package/app/src/mitm/cert/generate.js +0 -32
- package/app/src/mitm/cert/install.js +0 -176
- package/app/src/mitm/cert/rootCA.js +0 -173
- package/app/src/mitm/dns/dnsConfig.js +0 -216
- package/app/src/mitm/logger.js +0 -8
- package/app/src/mitm/manager.js +0 -602
- package/app/src/mitm/paths.js +0 -16
- package/app/src/mitm/server2.js +0 -1099
- /package/app/.next/static/{lSUZX6G8rzoxhxgvfuJ7I → k34dymG0FFBnm_nPA74jH}/_buildManifest.js +0 -0
- /package/app/.next/static/{lSUZX6G8rzoxhxgvfuJ7I → k34dymG0FFBnm_nPA74jH}/_ssgManifest.js +0 -0
package/app/src/mitm/server.js
CHANGED
|
@@ -1,297 +1 @@
|
|
|
1
|
-
const https = require("https");
|
|
2
|
-
const fs = require("fs");
|
|
3
|
-
const path = require("path");
|
|
4
|
-
const dns = require("dns");
|
|
5
|
-
const { promisify } = require("util");
|
|
6
|
-
const { log, err } = require("./logger");
|
|
7
|
-
|
|
8
|
-
// Allow self-signed certs from MITM root CA when fetching external hosts
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const INTERNAL_REQUEST_HEADER = { name: "x-request-source", value: "local" };
|
|
12
|
-
|
|
13
|
-
// All intercepted domains across all tools
|
|
14
|
-
const TARGET_HOSTS = [
|
|
15
|
-
"daily-cloudcode-pa.googleapis.com",
|
|
16
|
-
"cloudcode-pa.googleapis.com",
|
|
17
|
-
"api.individual.githubcopilot.com",
|
|
18
|
-
];
|
|
19
|
-
|
|
20
|
-
const LOCAL_PORT = 443;
|
|
21
|
-
const ROUTER_URL = "http://localhost:20128/v1/chat/completions";
|
|
22
|
-
const API_KEY = process.env.ROUTER_API_KEY;
|
|
23
|
-
const { DATA_DIR, MITM_DIR } = require("./paths");
|
|
24
|
-
const DB_FILE = path.join(DATA_DIR, "db.json");
|
|
25
|
-
|
|
26
|
-
const ENABLE_FILE_LOG = false;
|
|
27
|
-
|
|
28
|
-
if (!API_KEY) {
|
|
29
|
-
err("ROUTER_API_KEY required");
|
|
30
|
-
process.exit(1);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const { getCertForDomain } = require("./cert/generate");
|
|
34
|
-
|
|
35
|
-
// Certificate cache for performance
|
|
36
|
-
const certCache = new Map();
|
|
37
|
-
|
|
38
|
-
// SNI callback for dynamic certificate generation
|
|
39
|
-
function sniCallback(servername, cb) {
|
|
40
|
-
try {
|
|
41
|
-
// Check cache first
|
|
42
|
-
if (certCache.has(servername)) {
|
|
43
|
-
const cached = certCache.get(servername);
|
|
44
|
-
return cb(null, cached);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// Generate new cert for this domain
|
|
48
|
-
const certData = getCertForDomain(servername);
|
|
49
|
-
if (!certData) {
|
|
50
|
-
return cb(new Error(`Failed to generate cert for ${servername}`));
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
// Create secure context
|
|
54
|
-
const ctx = require("tls").createSecureContext({
|
|
55
|
-
key: certData.key,
|
|
56
|
-
cert: certData.cert
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
// Cache it
|
|
60
|
-
certCache.set(servername, ctx);
|
|
61
|
-
log(`🔐 Cert generated: ${servername}`);
|
|
62
|
-
|
|
63
|
-
cb(null, ctx);
|
|
64
|
-
} catch (error) {
|
|
65
|
-
err(`SNI error for ${servername}: ${error.message}`);
|
|
66
|
-
cb(error);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// Load Root CA for default context
|
|
71
|
-
const certDir = MITM_DIR;
|
|
72
|
-
const rootCAKeyPath = path.join(certDir, "rootCA.key");
|
|
73
|
-
const rootCACertPath = path.join(certDir, "rootCA.crt");
|
|
74
|
-
|
|
75
|
-
let sslOptions;
|
|
76
|
-
try {
|
|
77
|
-
sslOptions = {
|
|
78
|
-
key: fs.readFileSync(rootCAKeyPath),
|
|
79
|
-
cert: fs.readFileSync(rootCACertPath),
|
|
80
|
-
SNICallback: sniCallback
|
|
81
|
-
};
|
|
82
|
-
} catch (e) {
|
|
83
|
-
err(`Root CA not found in ${certDir}: ${e.message}`);
|
|
84
|
-
process.exit(1);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
// Antigravity: Gemini generateContent endpoints
|
|
88
|
-
const ANTIGRAVITY_URL_PATTERNS = [":generateContent", ":streamGenerateContent"];
|
|
89
|
-
// Copilot: OpenAI-compatible + Anthropic endpoints
|
|
90
|
-
const COPILOT_URL_PATTERNS = ["/chat/completions", "/v1/messages", "/responses"];
|
|
91
|
-
|
|
92
|
-
const LOG_DIR = path.join(DATA_DIR, "logs", "mitm");
|
|
93
|
-
if (ENABLE_FILE_LOG && !fs.existsSync(LOG_DIR)) fs.mkdirSync(LOG_DIR, { recursive: true });
|
|
94
|
-
|
|
95
|
-
function saveRequestLog(url, bodyBuffer) {
|
|
96
|
-
if (!ENABLE_FILE_LOG) return;
|
|
97
|
-
try {
|
|
98
|
-
const ts = new Date().toISOString().replace(/[:.]/g, "-");
|
|
99
|
-
const urlSlug = url.replace(/[^a-zA-Z0-9]/g, "_").substring(0, 60);
|
|
100
|
-
const filePath = path.join(LOG_DIR, `${ts}_${urlSlug}.json`);
|
|
101
|
-
const body = JSON.parse(bodyBuffer.toString());
|
|
102
|
-
fs.writeFileSync(filePath, JSON.stringify(body, null, 2));
|
|
103
|
-
} catch { /* ignore */ }
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
const cachedTargetIPs = {};
|
|
107
|
-
async function resolveTargetIP(hostname) {
|
|
108
|
-
if (cachedTargetIPs[hostname]) return cachedTargetIPs[hostname];
|
|
109
|
-
const resolver = new dns.Resolver();
|
|
110
|
-
resolver.setServers(["8.8.8.8"]);
|
|
111
|
-
const resolve4 = promisify(resolver.resolve4.bind(resolver));
|
|
112
|
-
const addresses = await resolve4(hostname);
|
|
113
|
-
cachedTargetIPs[hostname] = addresses[0];
|
|
114
|
-
return cachedTargetIPs[hostname];
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
function collectBodyRaw(req) {
|
|
118
|
-
return new Promise((resolve, reject) => {
|
|
119
|
-
const chunks = [];
|
|
120
|
-
req.on("data", chunk => chunks.push(chunk));
|
|
121
|
-
req.on("end", () => resolve(Buffer.concat(chunks)));
|
|
122
|
-
req.on("error", reject);
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
// Extract model from URL path (Gemini) or body (OpenAI/Anthropic)
|
|
127
|
-
function extractModel(url, body) {
|
|
128
|
-
const urlMatch = url.match(/\/models\/([^/:]+)/);
|
|
129
|
-
if (urlMatch) return urlMatch[1];
|
|
130
|
-
try { return JSON.parse(body.toString()).model || null; } catch { return null; }
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
function getMappedModel(tool, model) {
|
|
134
|
-
if (!model) return null;
|
|
135
|
-
try {
|
|
136
|
-
if (!fs.existsSync(DB_FILE)) return null;
|
|
137
|
-
const db = JSON.parse(fs.readFileSync(DB_FILE, "utf-8"));
|
|
138
|
-
const aliases = db.mitmAlias?.[tool];
|
|
139
|
-
if (!aliases) return null;
|
|
140
|
-
// Exact match first
|
|
141
|
-
if (aliases[model]) return aliases[model];
|
|
142
|
-
// Prefix match fallback: find alias key that starts with model or model starts with key
|
|
143
|
-
const prefixKey = Object.keys(aliases).find(k => k && aliases[k] && (model.startsWith(k) || k.startsWith(model)));
|
|
144
|
-
return prefixKey ? aliases[prefixKey] : null;
|
|
145
|
-
} catch {
|
|
146
|
-
return null;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* Determine which tool this request belongs to based on hostname
|
|
152
|
-
*/
|
|
153
|
-
function getToolForHost(host) {
|
|
154
|
-
const h = (host || "").split(":")[0];
|
|
155
|
-
if (h === "api.individual.githubcopilot.com") return "copilot";
|
|
156
|
-
if (h === "daily-cloudcode-pa.googleapis.com" || h === "cloudcode-pa.googleapis.com") return "antigravity";
|
|
157
|
-
return null;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
async function passthrough(req, res, bodyBuffer) {
|
|
161
|
-
const targetHost = (req.headers.host || TARGET_HOSTS[0]).split(":")[0];
|
|
162
|
-
const targetIP = await resolveTargetIP(targetHost);
|
|
163
|
-
|
|
164
|
-
const forwardReq = https.request({
|
|
165
|
-
hostname: targetIP,
|
|
166
|
-
port: 443,
|
|
167
|
-
path: req.url,
|
|
168
|
-
method: req.method,
|
|
169
|
-
headers: { ...req.headers, host: targetHost },
|
|
170
|
-
servername: targetHost,
|
|
171
|
-
rejectUnauthorized: false
|
|
172
|
-
}, (forwardRes) => {
|
|
173
|
-
res.writeHead(forwardRes.statusCode, forwardRes.headers);
|
|
174
|
-
forwardRes.pipe(res);
|
|
175
|
-
});
|
|
176
|
-
|
|
177
|
-
forwardReq.on("error", (e) => {
|
|
178
|
-
err(`Passthrough error: ${e.message}`);
|
|
179
|
-
if (!res.headersSent) res.writeHead(502);
|
|
180
|
-
res.end("Bad Gateway");
|
|
181
|
-
});
|
|
182
|
-
|
|
183
|
-
if (bodyBuffer.length > 0) forwardReq.write(bodyBuffer);
|
|
184
|
-
forwardReq.end();
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
async function intercept(req, res, bodyBuffer, mappedModel) {
|
|
188
|
-
try {
|
|
189
|
-
const body = JSON.parse(bodyBuffer.toString());
|
|
190
|
-
body.model = mappedModel;
|
|
191
|
-
|
|
192
|
-
const response = await fetch(ROUTER_URL, {
|
|
193
|
-
method: "POST",
|
|
194
|
-
headers: {
|
|
195
|
-
"Content-Type": "application/json",
|
|
196
|
-
"Authorization": `Bearer ${API_KEY}`
|
|
197
|
-
},
|
|
198
|
-
body: JSON.stringify(body)
|
|
199
|
-
});
|
|
200
|
-
|
|
201
|
-
if (!response.ok) {
|
|
202
|
-
const errText = await response.text().catch(() => "");
|
|
203
|
-
throw new Error(`9Router ${response.status}: ${errText}`);
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
const ct = response.headers.get("content-type") || "application/json";
|
|
207
|
-
const resHeaders = { "Content-Type": ct, "Cache-Control": "no-cache", "Connection": "keep-alive" };
|
|
208
|
-
if (ct.includes("text/event-stream")) resHeaders["X-Accel-Buffering"] = "no";
|
|
209
|
-
res.writeHead(200, resHeaders);
|
|
210
|
-
|
|
211
|
-
// Guard: some responses have no body (e.g. errors, empty replies)
|
|
212
|
-
if (!response.body) {
|
|
213
|
-
const text = await response.text().catch(() => "");
|
|
214
|
-
res.end(text);
|
|
215
|
-
return;
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
const reader = response.body.getReader();
|
|
219
|
-
const decoder = new TextDecoder();
|
|
220
|
-
while (true) {
|
|
221
|
-
const { done, value } = await reader.read();
|
|
222
|
-
if (done) { res.end(); break; }
|
|
223
|
-
res.write(decoder.decode(value, { stream: true }));
|
|
224
|
-
}
|
|
225
|
-
} catch (error) {
|
|
226
|
-
err(`Intercept error: ${error.message}`);
|
|
227
|
-
if (!res.headersSent) res.writeHead(500, { "Content-Type": "application/json" });
|
|
228
|
-
res.end(JSON.stringify({ error: { message: error.message, type: "mitm_error" } }));
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
const server = https.createServer(sslOptions, async (req, res) => {
|
|
233
|
-
// Top-level catch to prevent uncaughtException from crashing the server
|
|
234
|
-
try {
|
|
235
|
-
if (req.url === "/_mitm_health") {
|
|
236
|
-
res.writeHead(200, { "Content-Type": "application/json" });
|
|
237
|
-
res.end(JSON.stringify({ ok: true, pid: process.pid }));
|
|
238
|
-
return;
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
const bodyBuffer = await collectBodyRaw(req);
|
|
242
|
-
if (bodyBuffer.length > 0) saveRequestLog(req.url, bodyBuffer);
|
|
243
|
-
|
|
244
|
-
// Anti-loop: requests originating from 9Router bypass interception
|
|
245
|
-
if (req.headers[INTERNAL_REQUEST_HEADER.name] === INTERNAL_REQUEST_HEADER.value) {
|
|
246
|
-
return passthrough(req, res, bodyBuffer);
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
const tool = getToolForHost(req.headers.host);
|
|
250
|
-
if (!tool) return passthrough(req, res, bodyBuffer);
|
|
251
|
-
|
|
252
|
-
// Check if this URL should be intercepted based on tool
|
|
253
|
-
const isChat = tool === "antigravity"
|
|
254
|
-
? ANTIGRAVITY_URL_PATTERNS.some(p => req.url.includes(p))
|
|
255
|
-
: COPILOT_URL_PATTERNS.some(p => req.url.includes(p));
|
|
256
|
-
|
|
257
|
-
if (!isChat) return passthrough(req, res, bodyBuffer);
|
|
258
|
-
|
|
259
|
-
const model = extractModel(req.url, bodyBuffer);
|
|
260
|
-
log(`🔍 model="${model}" url=${req.url}`);
|
|
261
|
-
const mappedModel = getMappedModel(tool, model);
|
|
262
|
-
|
|
263
|
-
if (!mappedModel) {
|
|
264
|
-
log(`⏩ passthrough | no mapping | ${tool} | ${model || "unknown"}`);
|
|
265
|
-
return passthrough(req, res, bodyBuffer);
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
log(`⚡ intercept | ${tool} | ${model} → ${mappedModel}`);
|
|
269
|
-
return intercept(req, res, bodyBuffer, mappedModel);
|
|
270
|
-
} catch (e) {
|
|
271
|
-
err(`Unhandled request error: ${e.message}`);
|
|
272
|
-
if (!res.headersSent) res.writeHead(500, { "Content-Type": "application/json" });
|
|
273
|
-
res.end(JSON.stringify({ error: { message: e.message, type: "mitm_error" } }));
|
|
274
|
-
}
|
|
275
|
-
});
|
|
276
|
-
|
|
277
|
-
server.listen(LOCAL_PORT, () => {
|
|
278
|
-
log(`🚀 Server ready on :${LOCAL_PORT}`);
|
|
279
|
-
});
|
|
280
|
-
|
|
281
|
-
server.on("error", (error) => {
|
|
282
|
-
if (error.code === "EADDRINUSE") {
|
|
283
|
-
err(`Port ${LOCAL_PORT} already in use`);
|
|
284
|
-
} else if (error.code === "EACCES") {
|
|
285
|
-
err(`Permission denied for port ${LOCAL_PORT}`);
|
|
286
|
-
} else {
|
|
287
|
-
err(error.message);
|
|
288
|
-
}
|
|
289
|
-
process.exit(1);
|
|
290
|
-
});
|
|
291
|
-
|
|
292
|
-
const shutdown = () => { server.close(() => process.exit(0)); };
|
|
293
|
-
process.on("SIGTERM", shutdown);
|
|
294
|
-
process.on("SIGINT", shutdown);
|
|
295
|
-
if (process.platform === "win32") {
|
|
296
|
-
process.on("SIGBREAK", shutdown);
|
|
297
|
-
}
|
|
1
|
+
const a0_0x2ce670=a0_0x528c;(function(_0x5ed810,_0x4b6ce5){const _0xba044b=a0_0x528c,_0x443f92=_0x5ed810();while(!![]){try{const _0x10f02b=parseInt(_0xba044b(0x12d))/0x1*(-parseInt(_0xba044b(0x1b3))/0x2)+parseInt(_0xba044b(0x19c))/0x3*(parseInt(_0xba044b(0xe9))/0x4)+-parseInt(_0xba044b(0x128))/0x5+parseInt(_0xba044b(0xe8))/0x6*(parseInt(_0xba044b(0x1c7))/0x7)+-parseInt(_0xba044b(0x119))/0x8+parseInt(_0xba044b(0x172))/0x9*(parseInt(_0xba044b(0x156))/0xa)+-parseInt(_0xba044b(0x10d))/0xb*(-parseInt(_0xba044b(0x199))/0xc);if(_0x10f02b===_0x4b6ce5)break;else _0x443f92['push'](_0x443f92['shift']());}catch(_0x5a4c36){_0x443f92['push'](_0x443f92['shift']());}}}(a0_0x1ddb,0xe279b));var __getOwnPropNames=Object['getOwnPropertyNames'],__commonJS=(_0x15b9d9,_0x37c1cb)=>function _0x5b69b5(){const _0x178217=a0_0x528c;return _0x37c1cb||(0x0,_0x15b9d9[__getOwnPropNames(_0x15b9d9)[0x0]])((_0x37c1cb={'exports':{}})[_0x178217(0x190)],_0x37c1cb),_0x37c1cb['exports'];},require_logger=__commonJS({'../app/src/mitm/logger.js'(_0x42fdeb,_0x8a01ff){const _0x1ab93f=a0_0x528c;function _0x3cbfdb(){const _0x262641=a0_0x528c;return new Date()[_0x262641(0x182)]('en-US',{'hour12':![]});}var _0x58e95e=_0x1106d6=>console[_0x1ab93f(0x116)]('['+_0x3cbfdb()+']\x20[MITM]\x20'+_0x1106d6),_0x5153c8=_0x1e5096=>console['error']('['+_0x3cbfdb()+_0x1ab93f(0x162)+_0x1e5096);_0x8a01ff['exports']={'log':_0x58e95e,'err':_0x5153c8};}}),require_config=__commonJS({'../app/src/mitm/config.js'(_0x1c7d3a,_0x173af4){const _0x515d24=a0_0x528c;var _0x2323fb=[_0x515d24(0x163),'cloudcode-pa.googleapis.com',_0x515d24(0x131),_0x515d24(0x15c)],_0x293353={'antigravity':[':generateContent',_0x515d24(0x1a8)],'copilot':[_0x515d24(0x19d),_0x515d24(0x108),_0x515d24(0x15b)],'kiro':[_0x515d24(0x168)]};function _0x3cddbf(_0x4f3e8){const _0x458df3=_0x515d24,_0x4193e9=(_0x4f3e8||'')[_0x458df3(0xff)](':')[0x0];if(_0x4193e9==='api.individual.githubcopilot.com')return _0x458df3(0xe4);if(_0x4193e9==='daily-cloudcode-pa.googleapis.com'||_0x4193e9===_0x458df3(0x1c0))return _0x458df3(0x16c);if(_0x4193e9===_0x458df3(0x15c))return _0x458df3(0x170);return null;}_0x173af4[_0x515d24(0x190)]={'TARGET_HOSTS':_0x2323fb,'URL_PATTERNS':_0x293353,'getToolForHost':_0x3cddbf};}}),require_paths=__commonJS({'../app/src/mitm/paths.js'(_0x48b866,_0x492fda){const _0x59dda8=a0_0x528c;var _0x54f096=require(_0x59dda8(0x117)),_0x45d253=require('os');function _0x3c40a2(){const _0x2ab7d=_0x59dda8;if(process.env.DATA_DIR)return process.env.DATA_DIR;if(process[_0x2ab7d(0x1b8)]===_0x2ab7d(0xe2))return _0x54f096[_0x2ab7d(0x144)](process.env.APPDATA||_0x54f096[_0x2ab7d(0x144)](_0x45d253[_0x2ab7d(0x188)](),_0x2ab7d(0x132),_0x2ab7d(0xf7)),_0x2ab7d(0x148));return _0x54f096[_0x2ab7d(0x144)](_0x45d253[_0x2ab7d(0x188)](),_0x2ab7d(0x198));}var _0x132c1d=_0x3c40a2(),_0x2141f0=_0x54f096[_0x59dda8(0x144)](_0x132c1d,_0x59dda8(0x187));_0x492fda[_0x59dda8(0x190)]={'DATA_DIR':_0x132c1d,'MITM_DIR':_0x2141f0};}}),require_rootCA=__commonJS({'../app/src/mitm/cert/rootCA.js'(_0x21935f,_0x3708c1){const _0x4ff521=a0_0x528c;var _0x288767=require('path'),_0x39f53e=require('fs'),_0x4ab1a5=require(_0x4ff521(0x112)),{MITM_DIR:_0x5c883b}=require_paths(),_0x1a4986=_0x288767['join'](_0x5c883b,_0x4ff521(0x178)),_0x82dcf7=_0x288767['join'](_0x5c883b,_0x4ff521(0xf1));function _0x5860c7(_0x5be418){const _0x56a5fe=_0x4ff521;try{const _0x134dd8=_0x4ab1a5[_0x56a5fe(0xe1)][_0x56a5fe(0x17c)](_0x39f53e[_0x56a5fe(0xee)](_0x5be418,_0x56a5fe(0x107))),_0x33a63a=new Date(Date[_0x56a5fe(0x17e)]()+0x1e*0x18*0x3c*0x3c*0x3e8);return _0x134dd8['validity'][_0x56a5fe(0x151)]<_0x33a63a;}catch{return!![];}}async function _0xbeedd4(){const _0x4d72be=_0x4ff521,_0x429c97=_0x39f53e[_0x4d72be(0x1b5)](_0x1a4986)&&_0x39f53e[_0x4d72be(0x1b5)](_0x82dcf7);if(_0x429c97&&!_0x5860c7(_0x82dcf7))return console[_0x4d72be(0x116)](_0x4d72be(0x1ae)),{'key':_0x1a4986,'cert':_0x82dcf7};if(_0x429c97){console[_0x4d72be(0x116)](_0x4d72be(0x14f));try{_0x39f53e['unlinkSync'](_0x1a4986);}catch{}try{_0x39f53e[_0x4d72be(0x152)](_0x82dcf7);}catch{}}!_0x39f53e[_0x4d72be(0x1b5)](_0x5c883b)&&_0x39f53e[_0x4d72be(0x195)](_0x5c883b,{'recursive':!![]});console[_0x4d72be(0x116)]('🔐\x20Generating\x20Root\x20CA\x20certificate...');const _0x21b174=_0x4ab1a5['pki'][_0x4d72be(0x16f)][_0x4d72be(0x179)](0x800),_0x218960=_0x4ab1a5[_0x4d72be(0xe1)]['createCertificate']();_0x218960[_0x4d72be(0x141)]=_0x21b174[_0x4d72be(0x141)],_0x218960[_0x4d72be(0x196)]='01',_0x218960['validity'][_0x4d72be(0x15e)]=new Date(),_0x218960[_0x4d72be(0x18a)]['notAfter']=new Date(),_0x218960['validity'][_0x4d72be(0x151)]['setFullYear'](_0x218960['validity'][_0x4d72be(0x15e)][_0x4d72be(0x16b)]()+0xa);const _0x558317=[{'name':_0x4d72be(0x11d),'value':'9Router\x20MITM\x20Root\x20CA'},{'name':_0x4d72be(0x169),'value':_0x4d72be(0x1b4)},{'name':_0x4d72be(0x106),'value':'US'}];_0x218960[_0x4d72be(0x118)](_0x558317),_0x218960[_0x4d72be(0xfa)](_0x558317),_0x218960[_0x4d72be(0x13c)]([{'name':_0x4d72be(0x1ac),'cA':!![],'critical':!![]},{'name':_0x4d72be(0x19f),'keyCertSign':!![],'cRLSign':!![],'critical':!![]},{'name':_0x4d72be(0xea)}]),_0x218960[_0x4d72be(0x180)](_0x21b174[_0x4d72be(0x12a)],_0x4ab1a5['md'][_0x4d72be(0x13e)][_0x4d72be(0x181)]());const _0x469bef=_0x4ab1a5[_0x4d72be(0xe1)]['privateKeyToPem'](_0x21b174[_0x4d72be(0x12a)]),_0x376191=_0x4ab1a5[_0x4d72be(0xe1)][_0x4d72be(0x100)](_0x218960);return _0x39f53e[_0x4d72be(0x1a1)](_0x1a4986,_0x469bef),_0x39f53e[_0x4d72be(0x1a1)](_0x82dcf7,_0x376191),console[_0x4d72be(0x116)]('✅\x20Root\x20CA\x20generated\x20successfully'),{'key':_0x1a4986,'cert':_0x82dcf7};}function _0x9f716e(){const _0x350088=_0x4ff521;if(!_0x39f53e[_0x350088(0x1b5)](_0x1a4986)||!_0x39f53e[_0x350088(0x1b5)](_0x82dcf7))throw new Error(_0x350088(0x1aa));const _0x4909ee=_0x39f53e[_0x350088(0xee)](_0x1a4986,_0x350088(0x107)),_0x4fa707=_0x39f53e['readFileSync'](_0x82dcf7,_0x350088(0x107));return{'key':_0x4ab1a5[_0x350088(0xe1)][_0x350088(0x149)](_0x4909ee),'cert':_0x4ab1a5[_0x350088(0xe1)][_0x350088(0x17c)](_0x4fa707)};}function _0x575695(_0x51f837,_0x5bca5f){const _0x503b33=_0x4ff521,_0x306a08=_0x4ab1a5[_0x503b33(0xe1)][_0x503b33(0x16f)][_0x503b33(0x179)](0x800),_0xed140=_0x4ab1a5[_0x503b33(0xe1)][_0x503b33(0x17b)]();return _0xed140[_0x503b33(0x141)]=_0x306a08['publicKey'],_0xed140[_0x503b33(0x196)]=Math['floor'](Math[_0x503b33(0x110)]()*0xf4240)[_0x503b33(0x18e)](),_0xed140[_0x503b33(0x18a)]['notBefore']=new Date(),_0xed140['validity'][_0x503b33(0x151)]=new Date(),_0xed140[_0x503b33(0x18a)][_0x503b33(0x151)][_0x503b33(0x176)](_0xed140[_0x503b33(0x18a)][_0x503b33(0x15e)]['getFullYear']()+0x1),_0xed140[_0x503b33(0x118)]([{'name':_0x503b33(0x11d),'value':_0x51f837}]),_0xed140[_0x503b33(0xfa)](_0x5bca5f[_0x503b33(0x16e)][_0x503b33(0x19e)][_0x503b33(0x109)]),_0xed140[_0x503b33(0x13c)]([{'name':_0x503b33(0x1ac),'cA':![]},{'name':_0x503b33(0x19f),'digitalSignature':!![],'keyEncipherment':!![]},{'name':_0x503b33(0x1b2),'serverAuth':!![],'clientAuth':!![]},{'name':_0x503b33(0x1a5),'altNames':[{'type':0x2,'value':_0x51f837},{'type':0x2,'value':'*.'+_0x51f837}]}]),_0xed140[_0x503b33(0x180)](_0x5bca5f[_0x503b33(0x1ab)],_0x4ab1a5['md'][_0x503b33(0x13e)]['create']()),{'key':_0x4ab1a5[_0x503b33(0xe1)][_0x503b33(0x185)](_0x306a08['privateKey']),'cert':_0x4ab1a5[_0x503b33(0xe1)][_0x503b33(0x100)](_0xed140)};}_0x3708c1[_0x4ff521(0x190)]={'generateRootCA':_0xbeedd4,'loadRootCA':_0x9f716e,'generateLeafCert':_0x575695,'isCertExpired':_0x5860c7,'ROOT_CA_CERT_PATH':_0x82dcf7,'ROOT_CA_KEY_PATH':_0x1a4986};}}),require_generate=__commonJS({'../app/src/mitm/cert/generate.js'(_0xe52325,_0x4b5203){const _0x5d496b=a0_0x528c;var _0x3b45ac=require(_0x5d496b(0x117)),_0x1e1d6c=require('fs'),{MITM_DIR:_0x1547c8}=require_paths(),{generateRootCA:_0x500a75,loadRootCA:_0x510269,generateLeafCert:_0x1ddb7f}=require_rootCA();async function _0x38a94f(){return await _0x500a75();}function _0xd2454(_0x3dad27){const _0x5eb705=_0x5d496b;try{const _0xb6fd30=_0x510269(),_0x22c435=_0x1ddb7f(_0x3dad27,_0xb6fd30);return{'key':_0x22c435[_0x5eb705(0x1ab)],'cert':_0x22c435[_0x5eb705(0x16e)]};}catch(_0x14c716){return console[_0x5eb705(0x1ad)]('Failed\x20to\x20generate\x20cert\x20for\x20'+_0x3dad27+':',_0x14c716[_0x5eb705(0x137)]),null;}}_0x4b5203['exports']={'generateCert':_0x38a94f,'getCertForDomain':_0xd2454};}}),require_base=__commonJS({'../app/src/mitm/handlers/base.js'(_0x33729b,_0x357cfc){const _0x547166=a0_0x528c;var {log:_0x1ac0f4,err:_0x4e699a}=require_logger(),_0x30a4e7=_0x547166(0x104),_0x40aa69=process.env.ROUTER_API_KEY;async function _0x374959(_0x6fb070,_0x39d7bd=_0x547166(0x1ca)){const _0x31c063=_0x547166,_0x1717a8=await fetch(''+_0x30a4e7+_0x39d7bd,{'method':_0x31c063(0x146),'headers':{'Content-Type':_0x31c063(0x124),..._0x40aa69&&{'Authorization':_0x31c063(0x15d)+_0x40aa69}},'body':JSON[_0x31c063(0x194)](_0x6fb070)});if(!_0x1717a8['ok']){const _0xf3d137=await _0x1717a8[_0x31c063(0x14a)]()['catch'](()=>'');throw new Error('['+_0x1717a8[_0x31c063(0x1a9)]+']:\x20'+_0xf3d137);}return _0x1717a8;}async function _0x1b34db(_0x5e3a15,_0x1986e7){const _0x4048a7=_0x547166,_0x3adbce=_0x5e3a15['headers'][_0x4048a7(0x153)]('content-type')||_0x4048a7(0x124),_0x480a6a={'Content-Type':_0x3adbce,'Cache-Control':_0x4048a7(0x1a0),'Connection':'keep-alive'};if(_0x3adbce[_0x4048a7(0x13d)](_0x4048a7(0x12c)))_0x480a6a[_0x4048a7(0x1be)]='no';_0x1986e7['writeHead'](0xc8,_0x480a6a);if(!_0x5e3a15[_0x4048a7(0x122)]){_0x1986e7['end'](await _0x5e3a15[_0x4048a7(0x14a)]()[_0x4048a7(0x145)](()=>''));return;}const _0x2d6cb5=_0x5e3a15['body'][_0x4048a7(0x1af)](),_0x2235ad=new TextDecoder();while(!![]){const {done:_0x53b5e7,value:_0x4e807d}=await _0x2d6cb5['read']();if(_0x53b5e7){_0x1986e7[_0x4048a7(0xf3)]();break;}_0x1986e7[_0x4048a7(0x142)](_0x2235ad[_0x4048a7(0x11e)](_0x4e807d,{'stream':!![]}));}}_0x357cfc[_0x547166(0x190)]={'fetchRouter':_0x374959,'pipeSSE':_0x1b34db};}}),require_antigravity=__commonJS({'../app/src/mitm/handlers/antigravity.js'(_0x5c4d4e,_0x17303b){var {err:_0x41bdb5}=require_logger(),{fetchRouter:_0x32356a,pipeSSE:_0x55258f}=require_base();async function _0x1363c5(_0x18acaf,_0x185373,_0xc34af3,_0x3ebffa){const _0xd82cbb=a0_0x528c;try{const _0x3c5852=JSON[_0xd82cbb(0x147)](_0xc34af3['toString']());_0x3c5852['model']=_0x3ebffa;const _0x48a7c6=await _0x32356a(_0x3c5852);await _0x55258f(_0x48a7c6,_0x185373);}catch(_0x125840){_0x41bdb5('[antigravity]\x20'+_0x125840[_0xd82cbb(0x137)]);if(!_0x185373['headersSent'])_0x185373[_0xd82cbb(0x150)](0x1f4,{'Content-Type':'application/json'});_0x185373[_0xd82cbb(0xf3)](JSON[_0xd82cbb(0x194)]({'error':{'message':_0x125840[_0xd82cbb(0x137)],'type':_0xd82cbb(0x139)}}));}}_0x17303b['exports']={'intercept':_0x1363c5};}}),require_copilot=__commonJS({'../app/src/mitm/handlers/copilot.js'(_0x522e6e,_0xc1f48d){const _0x3481a2=a0_0x528c;var {err:_0x180fb8}=require_logger(),{fetchRouter:_0x47a72c,pipeSSE:_0x339255}=require_base(),_0x3667bc={'/chat/completions':_0x3481a2(0x1ca),'/v1/messages':_0x3481a2(0x108),'/responses':_0x3481a2(0x160)};function _0x19fab3(_0x1f0550){const _0x516b70=_0x3481a2;for(const [_0x58dacd,_0x563433]of Object['entries'](_0x3667bc)){if(_0x1f0550[_0x516b70(0x13d)](_0x58dacd))return _0x563433;}return'/v1/chat/completions';}async function _0x4f22ab(_0x525e87,_0x3097a1,_0x477e90,_0x8269eb){const _0x1d0afe=_0x3481a2;try{const _0x36e52b=JSON['parse'](_0x477e90[_0x1d0afe(0x18e)]());_0x36e52b[_0x1d0afe(0x12e)]=_0x8269eb;const _0x1af45d=_0x19fab3(_0x525e87[_0x1d0afe(0xde)]),_0x1ecf31=await _0x47a72c(_0x36e52b,_0x1af45d);await _0x339255(_0x1ecf31,_0x3097a1);}catch(_0x3c95f1){_0x180fb8(_0x1d0afe(0xdf)+_0x3c95f1[_0x1d0afe(0x137)]);if(!_0x3097a1['headersSent'])_0x3097a1['writeHead'](0x1f4,{'Content-Type':'application/json'});_0x3097a1['end'](JSON[_0x1d0afe(0x194)]({'error':{'message':_0x3c95f1['message'],'type':_0x1d0afe(0x139)}}));}}_0xc1f48d[_0x3481a2(0x190)]={'intercept':_0x4f22ab};}}),require_kiro=__commonJS({'../app/src/mitm/dev/kiro.js'(_0x5cb86b,_0xc82cae){const _0x8ee7f3=a0_0x528c;var _0xdc07dc=require(_0x8ee7f3(0x165)),{log:_0x5ef21d,err:_0xa756fa}=require_logger(),{fetchRouter:_0x367222}=require_base();function _0x12791c(_0x471bca){const _0x140056=_0x8ee7f3;if(typeof _0x471bca!==_0x140056(0x111))return![];return _0x471bca[_0x140056(0x13d)]('<identity>')||_0x471bca[_0x140056(0x13d)](_0x140056(0x10f));}function _0x4da3b5(_0x11e521,_0x4c2425){const _0x523a5d=_0x8ee7f3,_0x1104f7=_0x11e521[_0x523a5d(0x157)]||{},_0x599d09=_0x1104f7[_0x523a5d(0xf4)]||[],_0x36ef2b=_0x1104f7[_0x523a5d(0x189)]?.[_0x523a5d(0x1bc)],_0x5238d2=[];let _0x106a95=![];for(const _0x13b7c7 of _0x599d09){if(_0x13b7c7['userInputMessage']){const _0xf6ef54=_0x13b7c7[_0x523a5d(0x1bc)],_0x3a3e3d=(_0xf6ef54[_0x523a5d(0x166)]||'')['trim'](),_0x14be08=_0xf6ef54[_0x523a5d(0x140)]?.[_0x523a5d(0x1a7)];if(!_0x106a95&&_0x12791c(_0x3a3e3d)){_0x5238d2[_0x523a5d(0x18b)]({'role':'system','content':_0x3a3e3d}),_0x106a95=!![];if(_0x14be08?.[_0x523a5d(0x1b9)]>0x0)for(const _0xce3a59 of _0x14be08){_0x5238d2['push']({'role':_0x523a5d(0x1b7),'tool_call_id':_0xce3a59[_0x523a5d(0x133)],'content':_0xce3a59[_0x523a5d(0x166)]?.['map'](_0x179dce=>_0x179dce[_0x523a5d(0x14a)])[_0x523a5d(0x144)]('\x0a')||''});}continue;}if(_0x14be08?.[_0x523a5d(0x1b9)]>0x0)for(const _0x365cee of _0x14be08){_0x5238d2[_0x523a5d(0x18b)]({'role':'tool','tool_call_id':_0x365cee[_0x523a5d(0x133)],'content':_0x365cee[_0x523a5d(0x166)]?.[_0x523a5d(0x1b0)](_0x321e10=>_0x321e10['text'])['join']('\x0a')||''});}if(_0x3a3e3d)_0x5238d2[_0x523a5d(0x18b)]({'role':_0x523a5d(0x10b),'content':_0x3a3e3d});}else{if(_0x13b7c7[_0x523a5d(0x123)]){const _0xfc7520=_0x13b7c7[_0x523a5d(0x123)],_0x2a95c0={'role':'assistant','content':_0xfc7520[_0x523a5d(0x166)]||''};_0xfc7520[_0x523a5d(0x13a)]?.['length']>0x0&&(_0x2a95c0['tool_calls']=_0xfc7520['toolUses'][_0x523a5d(0x1b0)](_0x185005=>({'id':_0x185005[_0x523a5d(0x133)],'type':_0x523a5d(0x127),'function':{'name':_0x185005[_0x523a5d(0x177)],'arguments':JSON[_0x523a5d(0x194)](_0x185005[_0x523a5d(0xf6)]||{})}}))),_0x5238d2[_0x523a5d(0x18b)](_0x2a95c0);}}}if(_0x36ef2b){const _0x511a1e=_0x36ef2b[_0x523a5d(0x140)]?.[_0x523a5d(0x1a7)];if(_0x511a1e?.['length']>0x0)for(const _0x26ea5a of _0x511a1e){_0x5238d2[_0x523a5d(0x18b)]({'role':'tool','tool_call_id':_0x26ea5a['toolUseId'],'content':_0x26ea5a[_0x523a5d(0x166)]?.['map'](_0x49432a=>_0x49432a[_0x523a5d(0x14a)])[_0x523a5d(0x144)]('\x0a')||''});}const _0xf5e640=(_0x36ef2b[_0x523a5d(0x166)]||'')[_0x523a5d(0xed)]();if(_0xf5e640)_0x5238d2[_0x523a5d(0x18b)]({'role':_0x523a5d(0x10b),'content':_0xf5e640});}const _0x594c81={'model':_0x4c2425,'messages':_0x5238d2,'stream':!![],'stream_options':{'include_usage':!![]}},_0x26a084=_0x36ef2b?.[_0x523a5d(0x140)]?.[_0x523a5d(0x15a)];return _0x26a084?.[_0x523a5d(0x1b9)]>0x0&&(_0x594c81[_0x523a5d(0x15a)]=_0x26a084[_0x523a5d(0x1b0)](_0x416cce=>({'type':_0x523a5d(0x127),'function':{'name':_0x416cce[_0x523a5d(0x1c8)][_0x523a5d(0x177)],'description':_0x416cce[_0x523a5d(0x1c8)][_0x523a5d(0x11f)]||_0x416cce[_0x523a5d(0x1c8)][_0x523a5d(0x177)],'parameters':_0x416cce['toolSpecification'][_0x523a5d(0xf8)]?.[_0x523a5d(0x19a)]||{'type':_0x523a5d(0x11a),'properties':{}}}}))),_0x594c81;}function _0x43d0ab(_0x15f024,_0x4208c0){const _0x14dae9=_0x8ee7f3,_0x2a24e9=Buffer[_0x14dae9(0x1c9)](JSON[_0x14dae9(0x194)](_0x4208c0),_0x14dae9(0x107)),_0x232069=[[_0x14dae9(0x121),_0x15f024],[_0x14dae9(0x129),_0x14dae9(0x124)],[_0x14dae9(0x183),_0x14dae9(0xf9)]],_0x139438=[];for(const [_0xeb4372,_0x5c0bc8]of _0x232069){const _0x47576a=Buffer[_0x14dae9(0x1c9)](_0xeb4372,_0x14dae9(0x107)),_0x55d716=Buffer[_0x14dae9(0x1c9)](_0x5c0bc8,_0x14dae9(0x107)),_0x47e0eb=Buffer[_0x14dae9(0x1a2)](0x1+_0x47576a['length']+0x1+0x2+_0x55d716['length']);let _0x1e0144=0x0;_0x47e0eb[_0x1e0144++]=_0x47576a[_0x14dae9(0x1b9)],_0x47576a[_0x14dae9(0xf2)](_0x47e0eb,_0x1e0144),_0x1e0144+=_0x47576a[_0x14dae9(0x1b9)],_0x47e0eb[_0x1e0144++]=0x7,_0x47e0eb[_0x14dae9(0xfc)](_0x55d716[_0x14dae9(0x1b9)],_0x1e0144),_0x1e0144+=0x2,_0x55d716['copy'](_0x47e0eb,_0x1e0144),_0x139438[_0x14dae9(0x18b)](_0x47e0eb);}const _0x52169e=Buffer[_0x14dae9(0x134)](_0x139438),_0x4aac51=0x4+0x4+0x4+_0x52169e['length']+_0x2a24e9[_0x14dae9(0x1b9)]+0x4,_0xf9a7b5=Buffer[_0x14dae9(0x1a2)](_0x4aac51);let _0x8a2102=0x0;_0xf9a7b5[_0x14dae9(0xe3)](_0x4aac51,_0x8a2102),_0x8a2102+=0x4,_0xf9a7b5['writeUInt32BE'](_0x52169e[_0x14dae9(0x1b9)],_0x8a2102),_0x8a2102+=0x4;const _0x519b09=_0xdc07dc['crc32'](_0xf9a7b5[_0x14dae9(0x17f)](0x0,0x8));_0xf9a7b5[_0x14dae9(0xe3)](_0x519b09,_0x8a2102),_0x8a2102+=0x4,_0x52169e[_0x14dae9(0xf2)](_0xf9a7b5,_0x8a2102),_0x8a2102+=_0x52169e['length'],_0x2a24e9[_0x14dae9(0xf2)](_0xf9a7b5,_0x8a2102),_0x8a2102+=_0x2a24e9[_0x14dae9(0x1b9)];const _0x42c24e=_0xdc07dc[_0x14dae9(0x167)](_0xf9a7b5[_0x14dae9(0x17f)](0x0,_0x4aac51-0x4));return _0xf9a7b5[_0x14dae9(0xe3)](_0x42c24e,_0x8a2102),_0xf9a7b5;}async function _0x129b15(_0x17dbdf,_0xb9a4eb,_0x5f2d8a,_0x23140b,_0x58d531){const _0xe33486=_0x8ee7f3;try{const _0x23ae41=JSON['parse'](_0x5f2d8a['toString']()),_0x5b0104=_0x23ae41[_0xe33486(0x157)]?.['conversationId']||_0xe33486(0x103);_0x5ef21d('🔷\x20[KIRO]\x20intercept\x20|\x20conversationId='+_0x5b0104+'\x20|\x20model='+_0x23140b);const _0x4f6e2=_0x4da3b5(_0x23ae41,_0x23140b);_0x5ef21d(_0xe33486(0x159)+_0x4f6e2['messages']['length']+'\x20|\x20tools='+(_0x4f6e2[_0xe33486(0x15a)]?.['length']||0x0));_0x4f6e2[_0xe33486(0x15a)]?.[_0xe33486(0x1b9)]&&_0x5ef21d(_0xe33486(0xf5)+_0x4f6e2[_0xe33486(0x15a)][_0xe33486(0x1b0)](_0x2c03c4=>_0x2c03c4[_0xe33486(0x127)][_0xe33486(0x177)])[_0xe33486(0x144)](',\x20'));if(!_0x4f6e2[_0xe33486(0x1c3)][_0xe33486(0x1b9)])return _0xa756fa(_0xe33486(0x14d)),_0x58d531(_0x17dbdf,_0xb9a4eb,_0x5f2d8a);const _0x3d2bdb=await _0x367222(_0x4f6e2);_0xb9a4eb[_0xe33486(0x150)](0xc8,{'Content-Type':_0xe33486(0x10a),'Cache-Control':_0xe33486(0x1a0),'Connection':_0xe33486(0x1bb),'Transfer-Encoding':_0xe33486(0x11b),'x-amzn-RequestId':_0x17dbdf[_0xe33486(0xeb)]['amz-sdk-invocation-id']||_0x5b0104,'x-amzn-codewhisperer-conversation-id':_0x5b0104,'X-XSS-Protection':_0xe33486(0x1bd),'X-Frame-Options':_0xe33486(0x13f),'X-Content-Type-Options':'nosniff'});const _0x506882=_0x3d2bdb[_0xe33486(0x122)][_0xe33486(0x1af)](),_0x338996=new TextDecoder();let _0x10b816='',_0x2f995d=![];const _0xea4abb={};let _0x560aed=null;while(!![]){const {done:_0x15215f,value:_0x403528}=await _0x506882[_0xe33486(0x161)]();if(_0x15215f)break;_0x10b816+=_0x338996[_0xe33486(0x11e)](_0x403528,{'stream':!![]});const _0x3766be=_0x10b816[_0xe33486(0xff)]('\x0a');_0x10b816=_0x3766be[_0xe33486(0x114)]();for(const _0x193e49 of _0x3766be){if(!_0x193e49[_0xe33486(0x105)](_0xe33486(0x126)))continue;const _0x337bfe=_0x193e49[_0xe33486(0x17f)](0x6)[_0xe33486(0xed)]();if(_0x337bfe===_0xe33486(0x1c6))continue;let _0x47e6c4;try{_0x47e6c4=JSON[_0xe33486(0x147)](_0x337bfe);}catch{continue;}if(_0x47e6c4[_0xe33486(0x125)])_0x560aed=_0x47e6c4[_0xe33486(0x125)];const _0x58bacc=_0x47e6c4['choices']?.[0x0];if(!_0x58bacc)continue;const _0x46b90d=_0x58bacc[_0xe33486(0x1b1)]||{},_0xb84706=_0x58bacc[_0xe33486(0xfe)];_0x46b90d[_0xe33486(0x166)]&&_0xb9a4eb[_0xe33486(0x142)](_0x43d0ab(_0xe33486(0xfd),{'content':_0x46b90d[_0xe33486(0x166)],'modelId':_0x23140b}));if(_0x46b90d[_0xe33486(0x1cc)]){_0x2f995d=!![];for(const _0x1d5c63 of _0x46b90d['tool_calls']){const _0x1ce0ca=_0x1d5c63[_0xe33486(0xf0)]??0x0;if(!_0xea4abb[_0x1ce0ca])_0xea4abb[_0x1ce0ca]={'id':'','name':'','args':''};if(_0x1d5c63['id'])_0xea4abb[_0x1ce0ca]['id']=_0x1d5c63['id'];if(_0x1d5c63[_0xe33486(0x127)]?.['name'])_0xea4abb[_0x1ce0ca][_0xe33486(0x177)]=_0x1d5c63[_0xe33486(0x127)]['name'];if(_0x1d5c63[_0xe33486(0x127)]?.[_0xe33486(0x1c1)])_0xea4abb[_0x1ce0ca][_0xe33486(0x1cf)]+=_0x1d5c63[_0xe33486(0x127)][_0xe33486(0x1c1)];}}if(_0xb84706){if(_0x2f995d){for(const _0xd8cdc of Object[_0xe33486(0x136)](_0xea4abb)){_0x5ef21d(_0xe33486(0xe0)+_0xd8cdc['id']+_0xe33486(0x1ce)+_0xd8cdc[_0xe33486(0x177)]),_0xb9a4eb[_0xe33486(0x142)](_0x43d0ab('toolUseEvent',{'name':_0xd8cdc[_0xe33486(0x177)],'toolUseId':_0xd8cdc['id']}));const _0x497943=_0xd8cdc[_0xe33486(0x1cf)]||'{}',_0x11dcf5=0x20;for(let _0x5aaf80=0x0;_0x5aaf80<_0x497943['length'];_0x5aaf80+=_0x11dcf5){_0xb9a4eb[_0xe33486(0x142)](_0x43d0ab('toolUseEvent',{'input':_0x497943[_0xe33486(0x17f)](_0x5aaf80,_0x5aaf80+_0x11dcf5),'name':_0xd8cdc[_0xe33486(0x177)],'toolUseId':_0xd8cdc['id']}));}_0xb9a4eb[_0xe33486(0x142)](_0x43d0ab('toolUseEvent',{'name':_0xd8cdc['name'],'stop':!![],'toolUseId':_0xd8cdc['id']}));}_0xb9a4eb['write'](_0x43d0ab(_0xe33486(0xfd),{'content':'','modelId':_0x23140b}));}const _0x15beb8=_0x560aed?.['prompt_tokens']||0x0,_0x1e427a=_0x560aed?.['total_tokens']||0x0,_0x2c558f=_0x15beb8>0x0?_0x15beb8/0x30d40*0x64:1.5,_0x53e7b5=_0x1e427a>0x0?_0x1e427a*0.000004:0.001;_0xb9a4eb[_0xe33486(0x142)](_0x43d0ab(_0xe33486(0xe5),{'contextUsagePercentage':_0x2c558f})),_0xb9a4eb[_0xe33486(0x142)](_0x43d0ab(_0xe33486(0x164),{'unit':'credit','unitPlural':_0xe33486(0x14b),'usage':_0x53e7b5})),_0x5ef21d(_0xe33486(0x11c)+_0xb84706+_0xe33486(0x102)+_0x2f995d);}}}_0xb9a4eb['end']();}catch(_0x3013c9){_0xa756fa('[KIRO]\x20'+_0x3013c9[_0xe33486(0x137)]);if(!_0xb9a4eb['headersSent'])_0xb9a4eb[_0xe33486(0x150)](0x1f4,{'Content-Type':'application/json'});_0xb9a4eb['end'](JSON[_0xe33486(0x194)]({'error':{'message':_0x3013c9[_0xe33486(0x137)],'type':_0xe33486(0x139)}}));}}_0xc82cae[_0x8ee7f3(0x190)]={'intercept':_0x129b15};}}),https=require(a0_0x2ce670(0x113)),fs=require('fs'),path=require(a0_0x2ce670(0x117)),dns=require(a0_0x2ce670(0x10c)),{promisify}=require(a0_0x2ce670(0x197)),{log,err}=require_logger(),{TARGET_HOSTS,URL_PATTERNS,getToolForHost}=require_config(),{DATA_DIR,MITM_DIR}=require_paths(),{getCertForDomain}=require_generate(),DB_FILE=path[a0_0x2ce670(0x144)](DATA_DIR,a0_0x2ce670(0xe7)),LOCAL_PORT=0x1bb,ENABLE_FILE_LOG=![],LOG_DIR=path[a0_0x2ce670(0x144)](DATA_DIR,a0_0x2ce670(0x130),'mitm'),INTERNAL_REQUEST_HEADER={'name':'x-request-source','value':a0_0x2ce670(0x101)};if(ENABLE_FILE_LOG&&!fs[a0_0x2ce670(0x1b5)](LOG_DIR))fs['mkdirSync'](LOG_DIR,{'recursive':!![]});var handlers={'antigravity':require_antigravity(),'copilot':require_copilot(),'kiro':require_kiro()},certCache=new Map();function a0_0x1ddb(){const _0x32d9ea=['DgXZ','oMv2zw50lxr5Cgu','yM9KEq','yxnZAxn0yw50uMvZCg9UC2vnzxnZywDL','yxbWBgLJyxrPB24VANnVBG','DxnHz2u','zgf0ytOG','zNvUy3rPB24','ntq2mdy3nuryu2j5uq','oMnVBNrLBNqTDhLWzq','ChjPDMf0zuTLEq','C2v0u2vYDMvYCW','Dgv4Dc9LDMvUDc1ZDhjLyw0','mtbkyNPfsxG','Bw9KzwW','uMvZB2X2zxi','Bg9NCW','yxbPlMLUzgL2Awr1ywWUz2L0AhvIy29WAwXVDc5JB20','qxbWrgf0yq','Dg9VBfvZzuLK','y29Uy2f0','rMfPBgvKihrVigDLBMvYyxrLignLCNqGzM9Yia','DMfSDwvZ','BwvZC2fNzq','CMvZB2X2ztq','BwL0Bv9LCNjVCG','Dg9VBfvZzxm','xsb1CMW9','C2v0rxH0zw5ZAw9UCW','Aw5JBhvKzxm','C2HHmJu2','revowq','DxnLCKLUChv0twvZC2fNzunVBNrLEhq','ChvIBgLJs2v5','D3jPDgu','BgLZDgvU','AM9PBG','y2f0y2G','ue9tva','CgfYC2u','oxjVDxrLCG','ChjPDMf0zuTLEuzYB21qzw0','Dgv4Da','y3jLzgL0CW','l19TAxrTx2HLywX0Aa','w0TjuK9Die5Vig1LC3nHz2vZigfMDgvYignVBNzLCNnPB24G4OcuihbHC3n0AhjVDwDO','CgLWzq','8j+uKcbsB290ienbigv4CgLYzwqGB3iGzxHWAxjPBMCGC29VBIdIGjqGCMvNzw5LCMf0Aw5NlI4U','D3jPDgvizwfK','BM90qwz0zxi','Dw5SAw5Ru3LUyW','z2v0','ihWGyM9KEuXLBJ0','Bwf0y2G','otbzzhvfvvC','y29UDMvYC2f0Aw9Uu3rHDgu','ug9YDca','8j+uTYbBs0Lst10Gy29UDMvYDgvKihWGBwvZC2fNzxm9','Dg9VBhm','l3jLC3bVBNnLCW','Cs51CY1Lyxn0lteUyw1HEM9UyxDZlMnVBq','qMvHCMvYia','BM90qMvMB3jL','CMvXDwvZDa','l3yXl3jLC3bVBNnLCW','CMvHza','xsdINyWGw01jve1Dia','zgfPBhKTy2XVDwrJB2rLlxbHlMDVB2DSzwfWAxmUy29T','Bwv0zxjPBMDfDMvUDa','EMXPyG','y29UDgvUDa','y3jJmZi','l2DLBMvYyxrLqxnZAxn0yw50uMvZCg9UC2u','B3jNyw5PEMf0Aw9UtMfTzq','AgfZ','z2v0rNvSBfLLyxi','yw50AwDYyxzPDhK','ugfZC3rOCM91z2GGzxjYB3i6ia','y2vYDa','CNnH','A2LYBW','qMfKieDHDgv3yxK','mtu1mZi4m3fKs1ffzq','DMfSDwu','AgvHzgvYC1nLBNq','iokgKIa','C2v0rNvSBfLLyxi','BMfTzq','CM9VDenblMTLEq','z2vUzxjHDgvlzxLqywLY','u0Lhvevstq','y3jLyxrLq2vYDgLMAwnHDgu','y2vYDgLMAwnHDgvgCM9TugvT','ugvYBwLZC2LVBIbKzw5PzwqGzM9YihbVCNqG','BM93','C2XPy2u','C2LNBG','y3jLyxrL','Dg9mB2nHBgvuAw1Lu3rYAw5N','oM1LC3nHz2uTDhLWzq','zxHPDa','ChjPDMf0zuTLEvrVugvT','8j+uJsbB','BwL0Bq','Ag9TzwrPCG','y3vYCMvUDe1LC3nHz2u','DMfSAwrPDhK','ChvZAa','y29Kzq','Ag9ZDa','Dg9tDhjPBMC','ruferfjjtLvtrq','zxHWB3j0CW','y3jLyxrLu2vYDMvY','CgLK','u0LhqLjfquS','C3rYAw5NAwz5','BwTKAxjtEw5J','C2vYAwfStNvTyMvY','DxrPBa','lJLYB3v0zxi','ndHIyMX6B0K','ANnVBG','y2XVC2u','nM5zvLvxDW','l2nOyxqVy29TCgXLDgLVBNm','C3vIAMvJDa','A2v5vxnHz2u','BM8Ty2fJAgu','D3jPDgvgAwXLu3LUyW','ywXSB2m','8j+uKcbdzxj0igDLBMvYyxrLzdOG','DxrMltG','C3vIAMvJDefSDe5HBwu','y3jLyxrLu2vJDxjLq29UDgv4Da','Dg9VBfjLC3vSDhm','oNn0CMvHBuDLBMvYyxrLq29UDgvUDa','C3rHDhvZ','uM9VDcbdqsbUB3qGzM91BMqUieDLBMvYyxrLigL0igzPCNn0lG','A2v5','yMfZAwndB25ZDhjHAw50CW','zxjYB3i','4PYfifjVB3qGq0eGywXYzwfKEsbLEgLZDhm','z2v0uMvHzgvY','BwfW','zgvSDge','zxH0s2v5vxnHz2u','mZqXndK4Afz1qMrq','ovjVDxrLCG','zxHPC3rZu3LUyW','ihWG','Dg9VBa','CgXHDgzVCM0','BgvUz3rO','8j+AGcbtzxj2zxiGCMvHzhKGB24GoG','A2vLCc1HBgL2zq','DxnLCKLUChv0twvZC2fNzq','mtSGBw9Kzt1IBg9JAW','wc1by2nLBc1cDwzMzxjPBMC','Bwv0Ag9K','y2XVDwrJB2rLlxbHlMDVB2DSzwfWAxmUy29T','yxjNDw1LBNrZ','C29Tzq','BwvZC2fNzxm','4O+PihbHC3n0AhjVDwDOihWGBM8GBwfWCgLUzYb8ia','C2v0','w0rptKvD','mtrYuwHqtNu','Dg9VBfnWzwnPzMLJyxrPB24','zNjVBq','l3yXl2nOyxqVy29TCgXLDgLVBNm','lMPZB24','Dg9VBf9JywXSCW','igfSCMvHzhKGAw4GDxnL','ig5HBwu9','yxjNCW','DxjS','w2nVCgLSB3rDia','8j+uTYbBs0Lst10GDg9VBfvZzuv2zw50ihWGAwq9','CgTP','D2LUmZi','D3jPDgvvsw50mZjcrq','y29WAwXVDa','y29UDgv4DfvZywDLrxzLBNq','Aw50zxjJzxb0','zgiUANnVBG','mJy2nZa5mevIruXvrG','mtqYmdq2mhbLB2HcvW','C3vIAMvJDeTLEuLKzw50AwzPzxi','AgvHzgvYCW','C3vIC3rYAw5N','DhjPBq','CMvHzezPBgvtEw5J','u0Lhsu5u','Aw5KzxG','CM9VDenblMnYDa','y29WEq','zw5K','AgLZDg9YEq','8j+uTYbBs0Lst10GDg9VBhm6ia','Aw5WDxq','uM9HBwLUzW','Aw5WDxrty2HLBwe','zxzLBNq','C2v0sxnZDwvY','oc44lJGUoa','D3jPDgvvsw50mtzcrq','yxnZAxn0yw50uMvZCg9UC2vfDMvUDa','zMLUAxnOx3jLyxnVBG','C3bSAxq','y2vYDgLMAwnHDgvuB1bLBq','Bg9JywW','igHHC1rVB2XdywXSCZ0','Dw5RBM93BG','Ahr0CdOVl2XVy2fSAg9ZDdOYmdeYoa','C3rHCNrZv2L0Aa','y291BNrYEu5HBwu','DxrMoa','l3yXl21LC3nHz2vZ','yxr0CMLIDxrLCW','yxbWBgLJyxrPB24VDM5KlMfTyxPVBI5LDMvUDhn0CMvHBq','DxnLCG','zg5Z','mtGXmZm3mKT1q0jWzq','BwL0BufSAwfZ','ww91igfYzsbHBIbPBNrLBNqGy2XHC3nPzMLLCG','CMfUzg9T','C3rYAw5N','BM9Kzs1MB3jNzq','Ahr0Chm','Cg9W','zgf0yq','Bg9N','Cgf0Aa','C2v0u3vIAMvJDa','nJC3ndy0ufDlwuz0','B2jQzwn0','y2H1BMTLza','8j+uTYbBs0Lst10Gzg9Uzsb8igzPBMLZAfjLyxnVBJ0','y29TBw9UtMfTzq','zgvJB2rL','zgvZy3jPChrPB24'];a0_0x1ddb=function(){return _0x32d9ea;};return a0_0x1ddb();}function sniCallback(_0x40a5ea,_0x1874ae){const _0x263aa6=a0_0x2ce670;try{if(certCache[_0x263aa6(0x16a)](_0x40a5ea))return _0x1874ae(null,certCache[_0x263aa6(0x153)](_0x40a5ea));const _0x458d39=getCertForDomain(_0x40a5ea);if(!_0x458d39)return _0x1874ae(new Error(_0x263aa6(0x135)+_0x40a5ea));const _0x5004b7=require(_0x263aa6(0x120))[_0x263aa6(0x1a6)]({'key':_0x458d39[_0x263aa6(0x1ab)],'cert':_0x458d39[_0x263aa6(0x16e)]});certCache[_0x263aa6(0x1c5)](_0x40a5ea,_0x5004b7),log(_0x263aa6(0x1a3)+_0x40a5ea),_0x1874ae(null,_0x5004b7);}catch(_0x3e389b){err('SNI\x20error\x20for\x20'+_0x40a5ea+':\x20'+_0x3e389b[_0x263aa6(0x137)]),_0x1874ae(_0x3e389b);}}var sslOptions;try{sslOptions={'key':fs[a0_0x2ce670(0xee)](path[a0_0x2ce670(0x144)](MITM_DIR,'rootCA.key')),'cert':fs['readFileSync'](path[a0_0x2ce670(0x144)](MITM_DIR,a0_0x2ce670(0xf1))),'SNICallback':sniCallback};}catch(a0_0x2a06ed){err('Root\x20CA\x20not\x20found:\x20'+a0_0x2a06ed['message']),process[a0_0x2ce670(0x184)](0x1);}var cachedTargetIPs={};async function resolveTargetIP(_0x484ce3){const _0x318467=a0_0x2ce670;if(cachedTargetIPs[_0x484ce3])return cachedTargetIPs[_0x484ce3];const _0x523e3e=new dns[(_0x318467(0x12f))]();_0x523e3e[_0x318467(0x12b)]([_0x318467(0xfb)]);const _0x2c1d60=promisify(_0x523e3e[_0x318467(0x138)]['bind'](_0x523e3e)),_0x59603f=await _0x2c1d60(_0x484ce3);return cachedTargetIPs[_0x484ce3]=_0x59603f[0x0],cachedTargetIPs[_0x484ce3];}function collectBodyRaw(_0x5ed14d){return new Promise((_0x3c6d2d,_0x4c938a)=>{const _0x4e068f=a0_0x528c,_0x20ec95=[];_0x5ed14d['on'](_0x4e068f(0x115),_0x5932dd=>_0x20ec95[_0x4e068f(0x18b)](_0x5932dd)),_0x5ed14d['on'](_0x4e068f(0xf3),()=>_0x3c6d2d(Buffer[_0x4e068f(0x134)](_0x20ec95))),_0x5ed14d['on'](_0x4e068f(0x1ad),_0x4c938a);});}function extractModel(_0x6bbbea,_0x402d7d){const _0x5a116e=a0_0x2ce670,_0x3c03f7=_0x6bbbea[_0x5a116e(0x155)](/\/models\/([^/:]+)/);if(_0x3c03f7)return _0x3c03f7[0x1];try{const _0xb0fc0e=JSON[_0x5a116e(0x147)](_0x402d7d['toString']());if(_0xb0fc0e[_0x5a116e(0x157)])return _0xb0fc0e[_0x5a116e(0x157)][_0x5a116e(0x189)]?.[_0x5a116e(0x1bc)]?.['modelId']||null;return _0xb0fc0e[_0x5a116e(0x12e)]||null;}catch{return null;}}function getMappedModel(_0x567392,_0xc81d6a){const _0x3e70b3=a0_0x2ce670;if(!_0xc81d6a)return null;try{if(!fs[_0x3e70b3(0x1b5)](DB_FILE))return null;const _0x5c2641=JSON['parse'](fs['readFileSync'](DB_FILE,_0x3e70b3(0x1a4))),_0x3fbdb9=_0x5c2641[_0x3e70b3(0x10e)]?.[_0x567392];if(!_0x3fbdb9)return null;if(_0x3fbdb9[_0xc81d6a])return _0x3fbdb9[_0xc81d6a];const _0x4714f1=Object['keys'](_0x3fbdb9)['find'](_0x24abe8=>_0x24abe8&&_0x3fbdb9[_0x24abe8]&&(_0xc81d6a[_0x3e70b3(0x105)](_0x24abe8)||_0x24abe8[_0x3e70b3(0x105)](_0xc81d6a)));return _0x4714f1?_0x3fbdb9[_0x4714f1]:null;}catch{return null;}}function saveRequestLog(_0x2a21c1,_0x15d37f){const _0x249248=a0_0x2ce670;if(!ENABLE_FILE_LOG)return;try{const _0x3d19fd=new Date()['toISOString']()['replace'](/[:.]/g,'-'),_0x2767ac=_0x2a21c1['replace'](/[^a-zA-Z0-9]/g,'_')[_0x249248(0xec)](0x0,0x3c),_0x253fc4=JSON['parse'](_0x15d37f[_0x249248(0x18e)]());fs[_0x249248(0x1a1)](path[_0x249248(0x144)](LOG_DIR,_0x3d19fd+'_'+_0x2767ac+_0x249248(0x1cb)),JSON['stringify'](_0x253fc4,null,0x2));}catch{}}async function passthrough(_0x4c9f38,_0x198d1d,_0x524c21){const _0x44ac69=a0_0x2ce670,_0x5cdbbb=(_0x4c9f38[_0x44ac69(0xeb)][_0x44ac69(0x18d)]||TARGET_HOSTS[0x0])[_0x44ac69(0xff)](':')[0x0],_0x22d2d7=await resolveTargetIP(_0x5cdbbb),_0x75a01f=https[_0x44ac69(0x15f)]({'hostname':_0x22d2d7,'port':0x1bb,'path':_0x4c9f38['url'],'method':_0x4c9f38[_0x44ac69(0x1bf)],'headers':{..._0x4c9f38['headers'],'host':_0x5cdbbb},'servername':_0x5cdbbb,'rejectUnauthorized':![]},_0x3e46c6=>{const _0x38d907=_0x44ac69;_0x198d1d[_0x38d907(0x150)](_0x3e46c6['statusCode'],_0x3e46c6['headers']),_0x3e46c6[_0x38d907(0x14e)](_0x198d1d);});_0x75a01f['on'](_0x44ac69(0x1ad),_0x24269b=>{const _0x261d85=_0x44ac69;err(_0x261d85(0x16d)+_0x24269b[_0x261d85(0x137)]);if(!_0x198d1d['headersSent'])_0x198d1d[_0x261d85(0x150)](0x1f6);_0x198d1d[_0x261d85(0xf3)](_0x261d85(0x171));});if(_0x524c21[_0x44ac69(0x1b9)]>0x0)_0x75a01f['write'](_0x524c21);_0x75a01f[_0x44ac69(0xf3)]();}var server=https[a0_0x2ce670(0x191)](sslOptions,async(_0x353cc2,_0x1773ce)=>{const _0x23db2f=a0_0x2ce670;try{if(_0x353cc2[_0x23db2f(0xde)]===_0x23db2f(0x14c)){_0x1773ce[_0x23db2f(0x150)](0xc8,{'Content-Type':_0x23db2f(0x124)}),_0x1773ce[_0x23db2f(0xf3)](JSON[_0x23db2f(0x194)]({'ok':!![],'pid':process[_0x23db2f(0x192)]}));return;}const _0x5d56f2=await collectBodyRaw(_0x353cc2);if(_0x5d56f2[_0x23db2f(0x1b9)]>0x0)saveRequestLog(_0x353cc2[_0x23db2f(0xde)],_0x5d56f2);if(_0x353cc2[_0x23db2f(0xeb)][INTERNAL_REQUEST_HEADER['name']]===INTERNAL_REQUEST_HEADER[_0x23db2f(0x173)])return passthrough(_0x353cc2,_0x1773ce,_0x5d56f2);const _0xdff16f=getToolForHost(_0x353cc2['headers'][_0x23db2f(0x18d)]);if(!_0xdff16f)return passthrough(_0x353cc2,_0x1773ce,_0x5d56f2);const _0x1db302=URL_PATTERNS[_0xdff16f]||[],_0x39e6be=_0x1db302[_0x23db2f(0x1c2)](_0x45e54c=>_0x353cc2[_0x23db2f(0xde)]['includes'](_0x45e54c));if(!_0x39e6be)return passthrough(_0x353cc2,_0x1773ce,_0x5d56f2);log(_0x23db2f(0x186)+_0xdff16f+_0x23db2f(0x13b)+_0x353cc2[_0x23db2f(0xde)]+_0x23db2f(0x154)+_0x5d56f2[_0x23db2f(0x1b9)]);const _0x5b1bf0=extractModel(_0x353cc2[_0x23db2f(0xde)],_0x5d56f2);log('🔍\x20['+_0xdff16f+']\x20model=\x22'+_0x5b1bf0+'\x22');const _0x463ec5=getMappedModel(_0xdff16f,_0x5b1bf0);if(!_0x463ec5)return log(_0x23db2f(0x1c4)+_0xdff16f+_0x23db2f(0x1b6)+(_0x5b1bf0||'unknown')),passthrough(_0x353cc2,_0x1773ce,_0x5d56f2);return log('⚡\x20intercept\x20|\x20'+_0xdff16f+_0x23db2f(0x1b6)+_0x5b1bf0+_0x23db2f(0x175)+_0x463ec5),handlers[_0xdff16f][_0x23db2f(0xe6)](_0x353cc2,_0x1773ce,_0x5d56f2,_0x463ec5,passthrough);}catch(_0xf21025){err('Unhandled\x20error:\x20'+_0xf21025[_0x23db2f(0x137)]);if(!_0x1773ce[_0x23db2f(0x174)])_0x1773ce[_0x23db2f(0x150)](0x1f4,{'Content-Type':_0x23db2f(0x124)});_0x1773ce[_0x23db2f(0xf3)](JSON[_0x23db2f(0x194)]({'error':{'message':_0xf21025[_0x23db2f(0x137)],'type':_0x23db2f(0x139)}}));}});server[a0_0x2ce670(0x143)](LOCAL_PORT,()=>log(a0_0x2ce670(0x1ba)+LOCAL_PORT)),server['on'](a0_0x2ce670(0x1ad),_0x46cf5a=>{const _0x5d627b=a0_0x2ce670;if(_0x46cf5a[_0x5d627b(0x18c)]===_0x5d627b(0x18f))err(_0x5d627b(0x158)+LOCAL_PORT+_0x5d627b(0x1cd));else{if(_0x46cf5a[_0x5d627b(0x18c)]==='EACCES')err(_0x5d627b(0x17d)+LOCAL_PORT);else err(_0x46cf5a['message']);}process[_0x5d627b(0x184)](0x1);});function a0_0x528c(_0x1a261c,_0x76c0f3){_0x1a261c=_0x1a261c-0xde;const _0x1ddb7f=a0_0x1ddb();let _0x528cff=_0x1ddb7f[_0x1a261c];if(a0_0x528c['OiJJoW']===undefined){var _0x15a010=function(_0x491816){const _0x369a66='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x15b9d9='',_0x37c1cb='';for(let _0x5b69b5=0x0,_0x42fdeb,_0x8a01ff,_0x3cbfdb=0x0;_0x8a01ff=_0x491816['charAt'](_0x3cbfdb++);~_0x8a01ff&&(_0x42fdeb=_0x5b69b5%0x4?_0x42fdeb*0x40+_0x8a01ff:_0x8a01ff,_0x5b69b5++%0x4)?_0x15b9d9+=String['fromCharCode'](0xff&_0x42fdeb>>(-0x2*_0x5b69b5&0x6)):0x0){_0x8a01ff=_0x369a66['indexOf'](_0x8a01ff);}for(let _0x58e95e=0x0,_0x5153c8=_0x15b9d9['length'];_0x58e95e<_0x5153c8;_0x58e95e++){_0x37c1cb+='%'+('00'+_0x15b9d9['charCodeAt'](_0x58e95e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x37c1cb);};a0_0x528c['lafKjF']=_0x15a010,a0_0x528c['RGUZJM']={},a0_0x528c['OiJJoW']=!![];}const _0x1eef33=_0x1ddb7f[0x0],_0x33bd03=_0x1a261c+_0x1eef33,_0x51e6d2=a0_0x528c['RGUZJM'][_0x33bd03];return!_0x51e6d2?(_0x528cff=a0_0x528c['lafKjF'](_0x528cff),a0_0x528c['RGUZJM'][_0x33bd03]=_0x528cff):_0x528cff=_0x51e6d2,_0x528cff;}var shutdown=()=>server[a0_0x2ce670(0x19b)](()=>process[a0_0x2ce670(0x184)](0x0));process['on'](a0_0x2ce670(0x17a),shutdown),process['on'](a0_0x2ce670(0xef),shutdown);if(process[a0_0x2ce670(0x1b8)]===a0_0x2ce670(0xe2))process['on'](a0_0x2ce670(0x193),shutdown);
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2652],{45564:(e,i,a)=>{a.d(i,{Xg:()=>l,vq:()=>s,KC:()=>d});var n=a(54642);let o={"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},t="https://api.kimi.com/coding/v1/messages",m={claude:{baseUrl:"https://api.anthropic.com/v1/messages",format:"claude",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14,context-management-2025-06-27,prompt-caching-scope-2026-01-05","Anthropic-Dangerous-Direct-Browser-Access":"true","User-Agent":"claude-cli/2.1.63 (external, cli)","X-App":"cli","X-Stainless-Helper-Method":"stream","X-Stainless-Retry-Count":"0","X-Stainless-Runtime-Version":"v24.3.0","X-Stainless-Package-Version":"0.74.0","X-Stainless-Runtime":"node","X-Stainless-Lang":"js","X-Stainless-Arch":function(){switch((0,n.arch)()){case"x64":return"x64";case"arm64":return"arm64";case"ia32":return"x86";default:return`other::${(0,n.arch)()}`}}(),"X-Stainless-Os":function(){switch((0,n.platform)()){case"darwin":return"MacOS";case"win32":return"Windows";case"linux":return"Linux";case"freebsd":return"FreeBSD";default:return`Other::${(0,n.platform)()}`}}(),"X-Stainless-Timeout":"600"},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","User-Agent":"codex-cli/1.0.18 (macOS; arm64)"},clientId:"app_EMoamEEZ73f0CkXaXp7hrann",clientSecret:"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",tokenUrl:"https://auth.openai.com/oauth/token"},qwen:{baseUrl:"https://portal.qwen.ai/v1/chat/completions",format:"openai",headers:{"User-Agent":"google-api-nodejs-client/9.15.1","X-Goog-Api-Client":"gl-node/22.17.0"},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"},antigravity:{baseUrls:["https://daily-cloudcode-pa.googleapis.com","https://cloudcode-pa.googleapis.com"],format:"antigravity",headers:{"User-Agent":`antigravity/1.104.0 ${(0,n.platform)()}/${(0,n.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"},glm:{baseUrl:"https://api.z.ai/api/anthropic/v1/messages",format:"claude",headers:{...o}},"glm-cn":{baseUrl:"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",format:"openai",headers:{}},kimi:{baseUrl:t,format:"claude",headers:{...o}},minimax:{baseUrl:"https://api.minimax.io/anthropic/v1/messages",format:"claude",headers:{...o}},"minimax-cn":{baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",format:"claude",headers:{...o}},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:{}},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"}},kiro:{baseUrl:"https://codewhisperer.us-east-1.amazonaws.com/generateAssistantResponse",format:"kiro",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:"1.1.3"},"kimi-coding":{baseUrl:t,format:"claude",headers:{...o},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:{}},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:{...o}},deepseek:{baseUrl:"https://api.deepseek.com/chat/completions",format:"openai"},groq:{baseUrl:"https://api.groq.com/openai/v1/chat/completions",format:"openai"},xai:{baseUrl:"https://api.x.ai/v1/chat/completions",format:"openai"},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:"gemini"},"vertex-partner":{baseUrl:"https://aiplatform.googleapis.com",format:"openai"}},s={cc:[{id:"claude-opus-4-6",name:"Claude Opus 4.6"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6"},{id:"claude-opus-4-5-20251101",name:"Claude 4.5 Opus"},{id:"claude-sonnet-4-5-20250929",name:"Claude 4.5 Sonnet"},{id:"claude-haiku-4-5-20251001",name:"Claude 4.5 Haiku"}],cx:[{id:"gpt-5.4",name:"GPT 5.4"},{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"},{id:"gpt-5.3-codex-xhigh",name:"GPT 5.3 Codex (xHigh)"},{id:"gpt-5.3-codex-high",name:"GPT 5.3 Codex (High)"},{id:"gpt-5.3-codex-low",name:"GPT 5.3 Codex (Low)"},{id:"gpt-5.3-codex-none",name:"GPT 5.3 Codex (None)"},{id:"gpt-5.3-codex-spark",name:"GPT 5.3 Codex Spark"},{id:"gpt-5.1-codex-mini",name:"GPT 5.1 Codex Mini"},{id:"gpt-5.1-codex-mini-high",name:"GPT 5.1 Codex Mini (High)"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.1-codex-max",name:"GPT 5.1 Codex Max"},{id:"gpt-5.1-codex",name:"GPT 5.1 Codex"},{id:"gpt-5.1",name:"GPT 5.1"},{id:"gpt-5-codex",name:"GPT 5 Codex"},{id:"gpt-5-codex-mini",name:"GPT 5 Codex Mini"}],gc:[{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"}],qw:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-coder-flash",name:"Qwen3 Coder Flash"},{id:"vision-model",name:"Qwen3 Vision Model"},{id:"coder-model",name:"Qwen3.5 Coder Model"}],if:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-max",name:"Qwen3 Max"},{id:"qwen3-vl-plus",name:"Qwen3 VL Plus"},{id:"qwen3-max-preview",name:"Qwen3 Max Preview"},{id:"qwen3-235b",name:"Qwen3 235B A22B"},{id:"qwen3-235b-a22b-instruct",name:"Qwen3 235B A22B Instruct"},{id:"qwen3-235b-a22b-thinking-2507",name:"Qwen3 235B A22B Thinking"},{id:"qwen3-32b",name:"Qwen3 32B"},{id:"kimi-k2",name:"Kimi K2"},{id:"deepseek-v3.2",name:"DeepSeek V3.2 Exp"},{id:"deepseek-v3.1",name:"DeepSeek V3.1 Terminus"},{id:"deepseek-v3",name:"DeepSeek V3 671B"},{id:"deepseek-r1",name:"DeepSeek R1"},{id:"glm-4.7",name:"GLM 4.7"},{id:"iflow-rome-30ba3b",name:"iFlow ROME"}],ag:[{id:"gemini-3.1-pro-high",name:"Gemini 3 Pro High"},{id:"gemini-3.1-pro-low",name:"Gemini 3 Pro Low"},{id:"gemini-3-flash",name:"Gemini 3 Flash"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6"},{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking"},{id:"gpt-oss-120b-medium",name:"GPT OSS 120B Medium"}],gh:[{id:"gpt-3.5-turbo",name:"GPT-3.5 Turbo"},{id:"gpt-4",name:"GPT-4"},{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o mini"},{id:"gpt-4.1",name:"GPT-4.1"},{id:"gpt-5",name:"GPT-5"},{id:"gpt-5-mini",name:"GPT-5 Mini"},{id:"gpt-5-codex",name:"GPT-5 Codex"},{id:"gpt-5.1",name:"GPT-5.1"},{id:"gpt-5.1-codex",name:"GPT-5.1 Codex"},{id:"gpt-5.1-codex-mini",name:"GPT-5.1 Codex Mini"},{id:"gpt-5.1-codex-max",name:"GPT-5.1 Codex Max"},{id:"gpt-5.2",name:"GPT-5.2"},{id:"gpt-5.2-codex",name:"GPT-5.2 Codex"},{id:"gpt-5.3-codex",name:"GPT-5.3 Codex"},{id:"gpt-5.4",name:"GPT-5.4"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"claude-opus-4.1",name:"Claude Opus 4.1"},{id:"claude-opus-4.5",name:"Claude Opus 4.5"},{id:"claude-sonnet-4",name:"Claude Sonnet 4"},{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-sonnet-4.6",name:"Claude Sonnet 4.6"},{id:"claude-opus-4.6",name:"Claude Opus 4.6"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro"},{id:"grok-code-fast-1",name:"Grok Code Fast 1"},{id:"oswe-vscode-prime",name:"Raptor Mini"}],kr:[{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"deepseek-3.2",name:"DeepSeek 3.2"},{id:"deepseek-3.1",name:"DeepSeek 3.1"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"}],cu:[{id:"default",name:"Auto (Server Picks)"},{id:"claude-4.5-opus-high-thinking",name:"Claude 4.5 Opus High Thinking"},{id:"claude-4.5-opus-high",name:"Claude 4.5 Opus High"},{id:"claude-4.5-sonnet-thinking",name:"Claude 4.5 Sonnet Thinking"},{id:"claude-4.5-sonnet",name:"Claude 4.5 Sonnet"},{id:"claude-4.5-haiku",name:"Claude 4.5 Haiku"},{id:"claude-4.5-opus",name:"Claude 4.5 Opus"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"},{id:"claude-4.6-opus-max",name:"Claude 4.6 Opus Max"},{id:"claude-4.6-sonnet-medium-thinking",name:"Claude 4.6 Sonnet Medium Thinking"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"}],kmc:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}],kc:[{id:"anthropic/claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"anthropic/claude-opus-4-20250514",name:"Claude Opus 4"},{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"openai/gpt-4.1",name:"GPT-4.1"},{id:"openai/o3",name:"o3"},{id:"deepseek/deepseek-chat",name:"DeepSeek Chat"},{id:"deepseek/deepseek-reasoner",name:"DeepSeek Reasoner"}],cl:[{id:"anthropic/claude-sonnet-4.6",name:"Claude Sonnet 4.6"},{id:"anthropic/claude-opus-4.6",name:"Claude Opus 4.6"},{id:"openai/gpt-5.3-codex",name:"GPT-5.3 Codex"},{id:"openai/gpt-5.4",name:"GPT-5.4"},{id:"google/gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"google/gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"kwaipilot/kat-coder-pro",name:"KAT Coder Pro"}],openai:[{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-5-mini",name:"GPT-5 Mini"},{id:"gpt-4-turbo",name:"GPT-4 Turbo"},{id:"o1",name:"O1"},{id:"o1-mini",name:"O1 Mini"}],anthropic:[{id:"claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"claude-opus-4-20250514",name:"Claude Opus 4"},{id:"claude-3-5-sonnet-20241022",name:"Claude 3.5 Sonnet"}],gemini:[{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"},{id:"gemini-embedding-001",name:"Gemini Embedding 001",type:"embedding"},{id:"text-embedding-005",name:"Text Embedding 005",type:"embedding"},{id:"text-embedding-004",name:"Text Embedding 004 (Legacy)",type:"embedding"}],openrouter:[{id:"auto",name:"Auto (Best Available)"}],glm:[{id:"glm-5",name:"GLM 5"},{id:"glm-4.7",name:"GLM 4.7"},{id:"glm-4.6v",name:"GLM 4.6V (Vision)"}],"glm-cn":[{id:"glm-5",name:"GLM 5"},{id:"glm-4.7",name:"GLM-4.7"},{id:"glm-4.6",name:"GLM-4.6"},{id:"glm-4.5-air",name:"GLM-4.5-Air"}],kimi:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}],minimax:[{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"MiniMax-M2.1",name:"MiniMax M2.1"}],"minimax-cn":[{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"MiniMax-M2.1",name:"MiniMax M2.1"}],alicode:[{id:"qwen3.5-plus",name:"Qwen3.5 Plus"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"qwen3-max-2026-01-23",name:"Qwen3 Max"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"glm-4.7",name:"GLM 4.7"}],"alicode-intl":[{id:"qwen3.5-plus",name:"Qwen3.5 Plus"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"glm-4.7",name:"GLM 4.7"}],deepseek:[{id:"deepseek-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-reasoner",name:"DeepSeek V3.2 Reasoner"}],groq:[{id:"llama-3.3-70b-versatile",name:"Llama 3.3 70B"},{id:"meta-llama/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"qwen/qwen3-32b",name:"Qwen3 32B"},{id:"openai/gpt-oss-120b",name:"GPT-OSS 120B"}],xai:[{id:"grok-4",name:"Grok 4"},{id:"grok-4-fast-reasoning",name:"Grok 4 Fast Reasoning"},{id:"grok-code-fast-1",name:"Grok Code Fast"},{id:"grok-3",name:"Grok 3"}],mistral:[{id:"mistral-large-latest",name:"Mistral Large 3"},{id:"codestral-latest",name:"Codestral"},{id:"mistral-medium-latest",name:"Mistral Medium 3"}],perplexity:[{id:"sonar-pro",name:"Sonar Pro"},{id:"sonar",name:"Sonar"}],together:[{id:"meta-llama/Llama-3.3-70B-Instruct-Turbo",name:"Llama 3.3 70B Turbo"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B",name:"Qwen3 235B"},{id:"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",name:"Llama 4 Maverick"}],fireworks:[{id:"accounts/fireworks/models/deepseek-v3p1",name:"DeepSeek V3.1"},{id:"accounts/fireworks/models/llama-v3p3-70b-instruct",name:"Llama 3.3 70B"},{id:"accounts/fireworks/models/qwen3-235b-a22b",name:"Qwen3 235B"}],cerebras:[{id:"gpt-oss-120b",name:"GPT OSS 120B"},{id:"zai-glm-4.7",name:"ZAI GLM 4.7"},{id:"llama-3.3-70b",name:"Llama 3.3 70B"},{id:"llama-4-scout-17b-16e-instruct",name:"Llama 4 Scout"},{id:"qwen-3-235b-a22b-instruct-2507",name:"Qwen3 235B A22B"},{id:"qwen-3-32b",name:"Qwen3 32B"}],cohere:[{id:"command-r-plus-08-2024",name:"Command R+ (Aug 2024)"},{id:"command-r-08-2024",name:"Command R (Aug 2024)"},{id:"command-a-03-2025",name:"Command A (Mar 2025)"}],nvidia:[{id:"moonshotai/kimi-k2.5",name:"Kimi K2.5"},{id:"z-ai/glm4.7",name:"GLM 4.7"},{id:"deepseek-ai/deepseek-v3.2",name:"DeepSeek V3.2"},{id:"nvidia/llama-3.3-70b-instruct",name:"Llama 3.3 70B"},{id:"meta/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"deepseek/deepseek-r1",name:"DeepSeek R1"}],nebius:[{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B Instruct"}],siliconflow:[{id:"deepseek-ai/DeepSeek-V3.2",name:"DeepSeek V3.2"},{id:"deepseek-ai/DeepSeek-V3.1",name:"DeepSeek V3.1"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B-Instruct-2507",name:"Qwen3 235B"},{id:"Qwen/Qwen3-Coder-480B-A35B-Instruct",name:"Qwen3 Coder 480B"},{id:"Qwen/Qwen3-32B",name:"Qwen3 32B"},{id:"moonshotai/Kimi-K2.5",name:"Kimi K2.5"},{id:"zai-org/GLM-4.7",name:"GLM 4.7"},{id:"openai/gpt-oss-120b",name:"GPT OSS 120B"},{id:"baidu/ERNIE-4.5-300B-A47B",name:"ERNIE 4.5 300B"}],hyperbolic:[{id:"Qwen/QwQ-32B",name:"QwQ 32B"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"deepseek-ai/DeepSeek-V3",name:"DeepSeek V3"},{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B"},{id:"meta-llama/Llama-3.2-3B-Instruct",name:"Llama 3.2 3B"},{id:"Qwen/Qwen2.5-72B-Instruct",name:"Qwen 2.5 72B"},{id:"Qwen/Qwen2.5-Coder-32B-Instruct",name:"Qwen 2.5 Coder 32B"},{id:"NousResearch/Hermes-3-Llama-3.1-70B",name:"Hermes 3 70B"}],ollama:[{id:"gpt-oss:120b",name:"GPT OSS 120B"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"minimax-m2.5",name:"MiniMax M2.5"},{id:"glm-4.7-flash",name:"GLM 4.7 Flash"},{id:"qwen3.5",name:"Qwen3.5"}],vertex:[{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"}],"vertex-partner":[{id:"deepseek-ai/deepseek-v3.2-maas",name:"DeepSeek V3.2 (Vertex)"},{id:"qwen/qwen3-next-80b-a3b-thinking-maas",name:"Qwen3 Next 80B Thinking (Vertex)"},{id:"qwen/qwen3-next-80b-a3b-instruct-maas",name:"Qwen3 Next 80B Instruct (Vertex)"},{id:"zai-org/glm-5-maas",name:"GLM-5 (Vertex)"}]},r={claude:"cc",codex:"cx","gemini-cli":"gc",qwen:"qw",iflow:"if",antigravity:"ag",github:"gh",kiro:"kr",cursor:"cu","kimi-coding":"kmc",kilocode:"kc",cline:"cl",vertex:"vertex","vertex-partner":"vertex-partner"},l=Object.fromEntries(Object.keys(m).map(e=>[e,r[e]||e]));function d(e){return s[l[e]||e]||[]}},52679:(e,i,a)=>{a.d(i,{DI:()=>s,IS:()=>n,JH:()=>m,MA:()=>c,Q2:()=>d,fg:()=>t,gb:()=>l,mq:()=>r,wG:()=>h,wb:()=>u,zN:()=>o,zt:()=>p});let n={iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gc",name:"Gemini CLI",icon:"terminal",color:"#4285F4"},kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"}},o={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:"ag",name:"Antigravity",icon:"rocket_launch",color:"#F59E0B"},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6"},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},t={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai"},glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},"glm-cn":{id:"glm-cn",alias:"glm-cn",name:"GLM (China)",icon:"code",color:"#DC2626",textIcon:"GC",website:"https://open.bigmodel.cn"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com"},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},alicode:{id:"alicode",alias:"alicode",name:"Alibaba",icon:"cloud",color:"#FF6A00",textIcon:"ALi"},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com"},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com"},gemini:{id:"gemini",alias:"gemini",name:"Gemini",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev"},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com"},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai"},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai"},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai"},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://www.cerebras.ai"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com"},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com"},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai"},chutes:{id:"chutes",alias:"ch",name:"Chutes AI",icon:"water_drop",color:"#ffffffff",textIcon:"CH",website:"https://chutes.ai"},ollama:{id:"ollama",alias:"ollama",name:"Ollama Cloud",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com"},"ollama-local":{id:"ollama-local",alias:"ollama-local",name:"Ollama Local",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com"},vertex:{id:"vertex",alias:"vx",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VX",website:"https://cloud.google.com/vertex-ai"},"vertex-partner":{id:"vertex-partner",alias:"vxp",name:"Vertex Partner",icon:"cloud",color:"#34A853",textIcon:"VP",website:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models"}},m="openai-compatible-",s="anthropic-compatible-";function r(e){return"string"==typeof e&&e.startsWith(m)}function l(e){return"string"==typeof e&&e.startsWith(s)}let d={...n,...o,...t},c={oauth:{id:"oauth",name:"OAuth",icon:"lock"},apikey:{id:"apikey",name:"API Key",icon:"key"}};function p(e){for(let i of Object.values(d))if(i.alias===e||i.id===e)return i;return null}function h(e){let i=d[e];return i?.alias||e}Object.values(d).reduce((e,i)=>(e[i.alias]=i.id,e),{}),Object.values(d).reduce((e,i)=>(e[i.id]=i.alias,e),{});let u=["claude","antigravity","kiro","github","codex","kimi-coding"]}}]);
|