n9router 0.4.37 → 0.4.40
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 +11 -10
- package/app/.next/build-manifest.json +2 -2
- package/app/.next/prerender-manifest.json +3 -3
- package/app/.next/routes-manifest.json +6 -0
- package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/quota/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/skills/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error/page.js +3 -3
- package/app/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error.html +1 -1
- package/app/.next/server/app/_global-error.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/_not-found/page.js +2 -2
- package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_not-found.html +1 -1
- package/app/.next/server/app/_not-found.rsc +3 -3
- package/app/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
- 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 +1 -1
- package/app/.next/server/app/api/antigravity-app/route.js +1 -1
- package/app/.next/server/app/api/antigravity-app/route.js.nft.json +1 -1
- package/app/.next/server/app/api/antigravity-app-v2/route.js +1 -1
- package/app/.next/server/app/api/antigravity-app-v2/route.js.nft.json +1 -1
- package/app/.next/server/app/api/antigravity-ide/route.js +1 -1
- package/app/.next/server/app/api/antigravity-ide/route.js.nft.json +1 -1
- package/app/.next/server/app/api/antigravity-targets/route.js +1 -0
- package/app/.next/server/app/api/antigravity-targets/route.js.nft.json +1 -0
- package/app/.next/server/app/api/antigravity-targets/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/antigravity-tools/import/route.js +1 -1
- package/app/.next/server/app/api/antigravity-tools/import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/antigravity-tools/import-refresh-tokens/route.js +1 -1
- package/app/.next/server/app/api/antigravity-tools/import-refresh-tokens/route.js.nft.json +1 -1
- package/app/.next/server/app/api/auth/login/route.js +1 -1
- package/app/.next/server/app/api/auth/login/route.js.nft.json +1 -1
- package/app/.next/server/app/api/auth/logout/route.js +1 -1
- package/app/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/app/.next/server/app/api/auth/oidc/callback/route.js +1 -1
- package/app/.next/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
- package/app/.next/server/app/api/auth/oidc/start/route.js +1 -1
- package/app/.next/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
- package/app/.next/server/app/api/auth/oidc/test/route.js +1 -1
- package/app/.next/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/auth/status/route.js +1 -1
- package/app/.next/server/app/api/auth/status/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/all-statuses/route.js +4 -4
- package/app/.next/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/cline-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/copilot-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/cowork-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/deepseek-tui-settings/route.js +3 -3
- package/app/.next/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/droid-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/hermes-settings/route.js +3 -3
- package/app/.next/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/jcode-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/opencode-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/[id]/route.js +1 -1
- package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/route.js +1 -1
- package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
- package/app/.next/server/app/api/donate/route.js +1 -1
- package/app/.next/server/app/api/donate/route.js.nft.json +1 -1
- package/app/.next/server/app/api/health/route.js +1 -1
- package/app/.next/server/app/api/health/route.js.nft.json +1 -1
- package/app/.next/server/app/api/init/route.js +1 -1
- package/app/.next/server/app/api/init/route.js.nft.json +1 -1
- package/app/.next/server/app/api/internal/account-health/route.js +1 -1
- package/app/.next/server/app/api/internal/account-health/route.js.nft.json +1 -1
- package/app/.next/server/app/api/internal/request-detail/route.js +1 -1
- package/app/.next/server/app/api/internal/request-detail/route.js.nft.json +1 -1
- package/app/.next/server/app/api/internal/usage/route.js +1 -1
- package/app/.next/server/app/api/internal/usage/route.js.nft.json +1 -1
- package/app/.next/server/app/api/keys/[id]/reset-usage/route.js +1 -1
- package/app/.next/server/app/api/keys/[id]/reset-usage/route.js.nft.json +1 -1
- package/app/.next/server/app/api/keys/[id]/route.js +1 -1
- package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/keys/[id]/usage/route.js +1 -1
- package/app/.next/server/app/api/keys/[id]/usage/route.js.nft.json +1 -1
- package/app/.next/server/app/api/keys/route.js +1 -1
- package/app/.next/server/app/api/keys/route.js.nft.json +1 -1
- package/app/.next/server/app/api/locale/route.js +1 -1
- package/app/.next/server/app/api/locale/route.js.nft.json +1 -1
- package/app/.next/server/app/api/mcp/[plugin]/message/route.js +1 -1
- package/app/.next/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
- package/app/.next/server/app/api/mcp/[plugin]/sse/route.js +2 -2
- package/app/.next/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
- package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
- package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
- package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
- package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
- package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
- package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
- package/app/.next/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
- package/app/.next/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
- package/app/.next/server/app/api/media-providers/tts/voices/route.js +1 -1
- package/app/.next/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/alias/route.js +1 -1
- package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/availability/route.js +1 -1
- package/app/.next/server/app/api/models/availability/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/custom/route.js +1 -1
- package/app/.next/server/app/api/models/custom/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/disabled/route.js +1 -1
- package/app/.next/server/app/api/models/disabled/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/route.js +1 -1
- package/app/.next/server/app/api/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/test/route.js +1 -1
- package/app/.next/server/app/api/models/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/codex/import-token/route.js +1 -1
- package/app/.next/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +2 -2
- package/app/.next/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/gitlab/pat/route.js +1 -1
- package/app/.next/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/iflow/cookie/route.js +1 -1
- package/app/.next/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/app/.next/server/app/api/pricing/route.js +1 -1
- package/app/.next/server/app/api/pricing/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-nodes/route.js +1 -1
- package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-nodes/validate/route.js +1 -1
- package/app/.next/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/test-models/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/client/route.js +1 -1
- package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/kilo/free-models/route.js +1 -1
- package/app/.next/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/route.js +1 -1
- package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/suggested-models/route.js +1 -1
- package/app/.next/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
- package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/validate/route.js +1 -1
- package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/app/.next/server/app/api/proxy-pools/[id]/route.js +1 -1
- package/app/.next/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/proxy-pools/[id]/test/route.js +1 -1
- package/app/.next/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
- package/app/.next/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
- package/app/.next/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
- package/app/.next/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
- package/app/.next/server/app/api/proxy-pools/route.js +1 -1
- package/app/.next/server/app/api/proxy-pools/route.js.nft.json +1 -1
- package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
- package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/database/route.js +1 -1
- package/app/.next/server/app/api/settings/database/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/proxy-test/route.js +1 -1
- package/app/.next/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/require-login/route.js +1 -1
- package/app/.next/server/app/api/settings/require-login/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/route.js +1 -1
- package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/shutdown/route.js +1 -1
- package/app/.next/server/app/api/shutdown/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tags/route.js +1 -1
- package/app/.next/server/app/api/tags/route.js.nft.json +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.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/console-logs/stream/route.js +2 -2
- package/app/.next/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/load/route.js +1 -1
- package/app/.next/server/app/api/translator/load/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/save/route.js +1 -1
- package/app/.next/server/app/api/translator/save/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/send/route.js +1 -1
- package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/translate/route.js +1 -1
- package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnel/disable/route.js +1 -1
- package/app/.next/server/app/api/tunnel/disable/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnel/enable/route.js +1 -1
- package/app/.next/server/app/api/tunnel/enable/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnel/status/route.js +1 -1
- package/app/.next/server/app/api/tunnel/status/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnel/tailscale-check/route.js +1 -1
- package/app/.next/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnel/tailscale-disable/route.js +1 -1
- package/app/.next/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnel/tailscale-enable/route.js +1 -1
- package/app/.next/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnel/tailscale-install/route.js +2 -2
- package/app/.next/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/chart/route.js +1 -1
- package/app/.next/server/app/api/usage/chart/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/history/route.js +1 -1
- package/app/.next/server/app/api/usage/history/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/logs/route.js +1 -1
- package/app/.next/server/app/api/usage/logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/providers/route.js +1 -1
- package/app/.next/server/app/api/usage/providers/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/report/route.js +1 -1
- package/app/.next/server/app/api/usage/report/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/request-details/route.js +1 -1
- package/app/.next/server/app/api/usage/request-details/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/request-logs/route.js +1 -1
- package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/stats/route.js +1 -1
- package/app/.next/server/app/api/usage/stats/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/stream/route.js +2 -2
- package/app/.next/server/app/api/usage/stream/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
- package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
- package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/audio/voices/route.js +1 -1
- package/app/.next/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
- package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/images/generations/route.js +2 -2
- package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
- package/app/.next/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/messages/route.js +1 -1
- package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/models/[kind]/route.js +1 -1
- package/app/.next/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/models/info/route.js +1 -1
- package/app/.next/server/app/api/v1/models/info/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/models/route.js +1 -1
- package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/responses/compact/route.js +1 -1
- package/app/.next/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/responses/route.js +1 -1
- package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/route.js +1 -1
- package/app/.next/server/app/api/v1/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/search/route.js +1 -1
- package/app/.next/server/app/api/v1/search/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/web/fetch/route.js +1 -1
- package/app/.next/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1beta/models/route.js +1 -1
- package/app/.next/server/app/api/v1beta/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/version/route.js +1 -1
- package/app/.next/server/app/api/version/route.js.nft.json +1 -1
- package/app/.next/server/app/api/version/shutdown/route.js +1 -1
- package/app/.next/server/app/api/version/shutdown/route.js.nft.json +1 -1
- package/app/.next/server/app/api/version/update/route.js +1 -1
- package/app/.next/server/app/api/version/update/route.js.nft.json +1 -1
- package/app/.next/server/app/callback/page.js +2 -2
- package/app/.next/server/app/callback/page.js.nft.json +1 -1
- package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/callback.html +1 -1
- package/app/.next/server/app/callback.rsc +3 -3
- package/app/.next/server/app/callback.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/callback.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/basic-chat.html +1 -1
- package/app/.next/server/app/dashboard/basic-chat.rsc +5 -5
- package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.html +1 -1
- package/app/.next/server/app/dashboard/cli-tools.rsc +5 -5
- 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 +5 -5
- 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 +3 -3
- package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.html +1 -1
- package/app/.next/server/app/dashboard/combos.rsc +5 -5
- 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 +5 -5
- package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.html +1 -1
- package/app/.next/server/app/dashboard/endpoint.rsc +5 -5
- 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 +5 -5
- package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/media-providers/web.html +1 -1
- package/app/.next/server/app/dashboard/media-providers/web.rsc +5 -5
- package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/mitm.html +1 -1
- package/app/.next/server/app/dashboard/mitm.rsc +5 -5
- 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 +5 -5
- package/app/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.html +1 -1
- package/app/.next/server/app/dashboard/profile.rsc +5 -5
- 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 +5 -5
- package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.html +1 -1
- package/app/.next/server/app/dashboard/providers/new.rsc +5 -5
- 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 +5 -5
- 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 +3 -3
- package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.html +1 -1
- package/app/.next/server/app/dashboard/providers.rsc +5 -5
- 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 +5 -5
- package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/proxy-pools.html +1 -1
- package/app/.next/server/app/dashboard/proxy-pools.rsc +5 -5
- 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 +5 -5
- 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 +3 -3
- package/app/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/quota.html +2 -2
- package/app/.next/server/app/dashboard/quota.rsc +6 -6
- 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 +6 -6
- package/app/.next/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing/page.js +2 -2
- package/app/.next/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
- package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.rsc +3 -3
- package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
- 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 +3 -3
- package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/skills.html +1 -1
- package/app/.next/server/app/dashboard/skills.rsc +5 -5
- package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/skills.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/skills.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.html +1 -1
- package/app/.next/server/app/dashboard/translator.rsc +5 -5
- 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 +5 -5
- package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.html +1 -1
- package/app/.next/server/app/dashboard/usage.rsc +5 -5
- 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 +5 -5
- package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard.html +1 -1
- package/app/.next/server/app/dashboard.rsc +5 -5
- 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 +5 -5
- package/app/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/favicon.ico/route.js +1 -1
- package/app/.next/server/app/favicon.ico/route.js.nft.json +1 -1
- package/app/.next/server/app/index.html +1 -1
- package/app/.next/server/app/index.rsc +3 -3
- package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/landing/page.js +2 -2
- package/app/.next/server/app/landing/page.js.nft.json +1 -1
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/landing.html +1 -1
- package/app/.next/server/app/landing.rsc +3 -3
- package/app/.next/server/app/landing.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/landing.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/landing.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
- package/app/.next/server/app/login/page.js +2 -2
- package/app/.next/server/app/login/page.js.nft.json +1 -1
- package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login.html +1 -1
- package/app/.next/server/app/login.rsc +4 -4
- package/app/.next/server/app/login.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/login.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/login.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/app/.next/server/app/manifest.webmanifest/route.js +2 -2
- package/app/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/app/.next/server/app/page.js +2 -2
- package/app/.next/server/app/page.js.nft.json +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app-paths-manifest.json +11 -10
- package/app/.next/server/chunks/1051.js +1 -1
- package/app/.next/server/chunks/1476.js +1 -1
- package/app/.next/server/chunks/1569.js +1 -1
- package/app/.next/server/chunks/3110.js +1 -1
- package/app/.next/server/chunks/318.js +9 -9
- package/app/.next/server/chunks/3588.js +1 -1
- package/app/.next/server/chunks/3759.js +1 -1
- package/app/.next/server/chunks/4389.js +1 -1
- package/app/.next/server/chunks/6251.js +1 -1
- package/app/.next/server/chunks/6811.js +1 -1
- package/app/.next/server/chunks/8473.js +2 -2
- package/app/.next/server/chunks/8895.js +3 -3
- package/app/.next/server/chunks/9489.js +1 -1
- package/app/.next/server/chunks/9609.js +1 -1
- package/app/.next/server/chunks/9807.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 +1 -1
- package/app/.next/server/server-reference-manifest.js +1 -1
- package/app/.next/server/server-reference-manifest.json +1 -1
- package/app/.next/static/NUyu-QqCUhcEcbWG6ltlY/_buildManifest.js +1 -0
- package/app/.next/static/chunks/1321-c15a8e8f14137b5a.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-ff34887f020e7a37.js +1 -0
- package/app/.next/static/chunks/app/_global-error/{page-7a42dc789702ab06.js → page-9e73c1f718efb820.js} +1 -1
- package/app/.next/static/chunks/app/api/antigravity-app/{route-7a42dc789702ab06.js → route-9e73c1f718efb820.js} +1 -1
- package/app/.next/static/chunks/app/api/antigravity-app-v2/{route-7a42dc789702ab06.js → route-9e73c1f718efb820.js} +1 -1
- package/app/.next/static/chunks/app/api/antigravity-ide/{route-7a42dc789702ab06.js → route-9e73c1f718efb820.js} +1 -1
- package/app/.next/static/chunks/app/api/antigravity-targets/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/antigravity-tools/import/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/antigravity-tools/import-refresh-tokens/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/auth/login/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/auth/logout/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/auth/oidc/callback/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/auth/oidc/start/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/auth/oidc/test/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/auth/status/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/jcode-settings/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/combos/[id]/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/combos/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/donate/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/health/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/init/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/internal/account-health/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/internal/request-detail/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/internal/usage/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/keys/[id]/reset-usage/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/keys/[id]/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/keys/[id]/usage/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/keys/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/locale/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/mcp/[plugin]/message/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/mcp/[plugin]/sse/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/minimax/voices/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/models/alias/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/models/availability/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/models/custom/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/models/disabled/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/models/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/models/test/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/codex/import-token/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/import/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/import/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/pricing/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/validate/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/models/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/test/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/providers/client/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/providers/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/providers/suggested-models/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/providers/test-batch/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/providers/validate/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/proxy-pools/deno-deploy/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/proxy-pools/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/settings/database/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/settings/proxy-test/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/settings/require-login/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/settings/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/shutdown/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/tags/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/translator/console-logs/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/translator/load/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/translator/save/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/translator/send/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/translator/translate/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/disable/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/enable/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/status/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/usage/[connectionId]/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/usage/chart/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/usage/history/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/usage/logs/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/usage/providers/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/usage/report/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/usage/request-details/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/usage/request-logs/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/usage/stats/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/usage/stream/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/v1/api/chat/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/speech/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/voices/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/v1/chat/completions/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/v1/embeddings/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/v1/images/generations/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/[kind]/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/info/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/v1/responses/compact/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/v1/responses/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/v1/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/v1/search/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/v1/web/fetch/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/version/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/version/shutdown/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/api/version/update/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/manifest.webmanifest/route-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/app/page-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-9e73c1f718efb820.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-9e73c1f718efb820.js +1 -0
- package/app/open-sse/config/providers.js +1 -1
- package/app/open-sse/config/runtimeConfig.js +3 -0
- package/app/open-sse/executors/kiro.js +133 -25
- package/app/open-sse/handlers/chatCore/streamingHandler.js +2 -2
- package/app/open-sse/handlers/chatCore.js +4 -4
- package/app/open-sse/handlers/responsesHandler.js +2 -1
- package/app/open-sse/utils/streamHandler.js +42 -10
- package/app/package.json +1 -1
- package/app/src/mitm/server.js +7 -10
- package/app/src/mitm/tokenPool.js +2 -11
- package/app/src/mitm/tokenSwapRetry.js +19 -0
- package/package.json +1 -1
- package/app/.next/static/YEhAtVGU-1J8HgdJmmpjP/_buildManifest.js +0 -1
- package/app/.next/static/chunks/1321-ae8f019eee61818e.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-8eaef671b213ee9e.js +0 -1
- package/app/.next/static/chunks/app/api/antigravity-tools/import/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/antigravity-tools/import-refresh-tokens/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/auth/login/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/auth/logout/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/auth/oidc/callback/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/auth/oidc/start/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/auth/oidc/test/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/auth/status/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/jcode-settings/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/combos/[id]/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/combos/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/donate/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/health/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/init/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/internal/account-health/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/internal/request-detail/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/internal/usage/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/keys/[id]/reset-usage/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/keys/[id]/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/keys/[id]/usage/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/keys/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/locale/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/mcp/[plugin]/message/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/mcp/[plugin]/sse/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/media-providers/tts/minimax/voices/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/models/alias/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/models/availability/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/models/custom/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/models/disabled/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/models/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/models/test/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/codex/import-token/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/cursor/import/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/import/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/pricing/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/validate/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/models/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/test/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/providers/client/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/providers/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/providers/suggested-models/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/providers/test-batch/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/providers/validate/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/proxy-pools/deno-deploy/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/proxy-pools/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/settings/database/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/settings/proxy-test/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/settings/require-login/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/settings/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/shutdown/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/tags/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/translator/console-logs/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/translator/load/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/translator/save/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/translator/send/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/translator/translate/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/disable/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/enable/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/status/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/usage/[connectionId]/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/usage/chart/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/usage/history/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/usage/logs/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/usage/providers/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/usage/report/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/usage/request-details/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/usage/request-logs/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/usage/stats/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/usage/stream/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/v1/api/chat/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/v1/audio/speech/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/v1/audio/voices/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/v1/chat/completions/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/v1/embeddings/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/v1/images/generations/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/v1/messages/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/v1/models/[kind]/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/v1/models/info/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/v1/models/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/v1/responses/compact/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/v1/responses/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/v1/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/v1/search/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/v1/web/fetch/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/v1beta/models/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/version/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/version/shutdown/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/api/version/update/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/manifest.webmanifest/route-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/app/page-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-7a42dc789702ab06.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-7a42dc789702ab06.js +0 -1
- /package/app/.next/static/{YEhAtVGU-1J8HgdJmmpjP → NUyu-QqCUhcEcbWG6ltlY}/_ssgManifest.js +0 -0
|
@@ -194,7 +194,7 @@ export const PROVIDERS = {
|
|
|
194
194
|
kiro: {
|
|
195
195
|
baseUrl: "https://codewhisperer.us-east-1.amazonaws.com/generateAssistantResponse",
|
|
196
196
|
format: "kiro",
|
|
197
|
-
retry: { 429: 2 },
|
|
197
|
+
retry: { 400: 3, 429: 3, 500: 3, 502: 3, 503: 3, 504: 2 },
|
|
198
198
|
headers: {
|
|
199
199
|
"Content-Type": "application/json",
|
|
200
200
|
"Accept": "application/vnd.amazon.eventstream",
|
|
@@ -58,6 +58,9 @@ export const DEFAULT_RETRY_CONFIG = {
|
|
|
58
58
|
|
|
59
59
|
// Default 503 retry count for Antigravity executor (per-account before switching)
|
|
60
60
|
export const DEFAULT_AG_503_RETRY_COUNT = 3;
|
|
61
|
+
|
|
62
|
+
// Default retry count for Kiro executor (per-account before switching)
|
|
63
|
+
export const DEFAULT_KIRO_RETRY_COUNT = 3;
|
|
61
64
|
// Normalize a retry entry to { attempts, delayMs }
|
|
62
65
|
export function resolveRetryEntry(entry) {
|
|
63
66
|
if (entry == null) return { attempts: 0, delayMs: RETRY_CONFIG.delayMs };
|
|
@@ -3,7 +3,24 @@ import { PROVIDERS } from "../config/providers.js";
|
|
|
3
3
|
import { v4 as uuidv4 } from "uuid";
|
|
4
4
|
import { refreshKiroToken } from "../services/tokenRefresh.js";
|
|
5
5
|
import { proxyAwareFetch } from "../utils/proxyFetch.js";
|
|
6
|
-
import { HTTP_STATUS,
|
|
6
|
+
import { HTTP_STATUS, DEFAULT_KIRO_RETRY_COUNT, FETCH_CONNECT_TIMEOUT_MS } from "../config/runtimeConfig.js";
|
|
7
|
+
|
|
8
|
+
// SSE keepalive comment. Emitted when raw EventStream bytes arrive but don't yet
|
|
9
|
+
// complete a parseable frame (partial-frame buffering during reasoning prefill).
|
|
10
|
+
// Keeps the downstream stall watchdog (pipeWithDisconnect) aware of upstream
|
|
11
|
+
// activity so it doesn't false-abort. Comment lines are dropped by the translate
|
|
12
|
+
// parser and ignored by SSE clients in passthrough.
|
|
13
|
+
const KIRO_KEEPALIVE = new TextEncoder().encode(": ka\n\n");
|
|
14
|
+
|
|
15
|
+
// Exponential backoff config for Kiro retries (mirrors MITM approach)
|
|
16
|
+
const KIRO_BACKOFF_BASE_MS = 2000;
|
|
17
|
+
const KIRO_BACKOFF_CAP_MS = 15000;
|
|
18
|
+
|
|
19
|
+
// Transient 400 patterns that should be retried (Kiro-specific false positives)
|
|
20
|
+
const KIRO_RETRYABLE_400_PATTERNS = ["improperly formed request"];
|
|
21
|
+
|
|
22
|
+
// Status codes eligible for in-executor retry with exponential backoff
|
|
23
|
+
const KIRO_RETRYABLE_STATUSES = new Set([400, 429, 500, 502, 503, 504]);
|
|
7
24
|
|
|
8
25
|
/**
|
|
9
26
|
* KiroExecutor - Executor for Kiro AI (AWS CodeWhisperer)
|
|
@@ -33,33 +50,97 @@ export class KiroExecutor extends BaseExecutor {
|
|
|
33
50
|
}
|
|
34
51
|
|
|
35
52
|
/**
|
|
36
|
-
*
|
|
53
|
+
* Check if a 400 error is a known transient Kiro issue that should be retried.
|
|
54
|
+
* Only retries specific patterns — genuine validation errors are not retried.
|
|
55
|
+
*/
|
|
56
|
+
_isRetryable400(responseBody) {
|
|
57
|
+
if (!responseBody) return false;
|
|
58
|
+
const lower = responseBody.toLowerCase();
|
|
59
|
+
return KIRO_RETRYABLE_400_PATTERNS.some(pattern => lower.includes(pattern));
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Custom execute for Kiro - handles AWS EventStream binary response with
|
|
64
|
+
* exponential backoff retry (MITM-style) for transient errors.
|
|
37
65
|
*/
|
|
38
|
-
async execute({ model, body, stream, credentials, signal, log, proxyOptions = null }) {
|
|
66
|
+
async execute({ model, body, stream, credentials, signal, log, proxyOptions = null, streamWatchdogEnabled = true }) {
|
|
39
67
|
const url = this.buildUrl(model, stream, 0);
|
|
40
68
|
const transformedBody = this.transformRequest(model, body, stream, credentials);
|
|
41
69
|
|
|
42
|
-
//
|
|
43
|
-
const
|
|
70
|
+
// Resolve max retry count: per-account → global setting → default
|
|
71
|
+
const maxRetries = credentials?.kiroRetryCount ?? DEFAULT_KIRO_RETRY_COUNT;
|
|
44
72
|
let retryAttempts = 0;
|
|
45
73
|
|
|
46
74
|
while (true) {
|
|
47
75
|
const headers = this.buildHeaders(credentials, stream);
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
76
|
+
|
|
77
|
+
// Abort if upstream doesn't return response headers within FETCH_CONNECT_TIMEOUT_MS.
|
|
78
|
+
const connectCtrl = new AbortController();
|
|
79
|
+
const connectTimer = setTimeout(() => connectCtrl.abort(new Error("fetch connect timeout")), FETCH_CONNECT_TIMEOUT_MS);
|
|
80
|
+
const mergedSignal = signal ? AbortSignal.any([signal, connectCtrl.signal]) : connectCtrl.signal;
|
|
81
|
+
|
|
82
|
+
let response;
|
|
83
|
+
try {
|
|
84
|
+
response = await proxyAwareFetch(url, {
|
|
85
|
+
method: "POST",
|
|
86
|
+
headers,
|
|
87
|
+
body: JSON.stringify(transformedBody),
|
|
88
|
+
signal: mergedSignal
|
|
89
|
+
}, proxyOptions);
|
|
90
|
+
// Headers received — body streaming is now governed by the stall watchdog.
|
|
91
|
+
clearTimeout(connectTimer);
|
|
92
|
+
} catch (error) {
|
|
93
|
+
clearTimeout(connectTimer);
|
|
94
|
+
// Connect timeout is internal: convert to a retryable network error
|
|
95
|
+
const isConnectTimeout = connectCtrl.signal.aborted && error.name === "AbortError";
|
|
96
|
+
if (isConnectTimeout) {
|
|
97
|
+
if (maxRetries > 0 && retryAttempts < maxRetries) {
|
|
98
|
+
retryAttempts++;
|
|
99
|
+
const backoffMs = this._computeBackoff(retryAttempts);
|
|
100
|
+
log?.debug?.("RETRY", `connect timeout retry ${retryAttempts}/${maxRetries} after ${(backoffMs / 1000).toFixed(1)}s`);
|
|
101
|
+
await new Promise(resolve => setTimeout(resolve, backoffMs));
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
throw new Error(`Kiro upstream connect timeout after ${FETCH_CONNECT_TIMEOUT_MS}ms`);
|
|
105
|
+
}
|
|
106
|
+
throw error;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// Check if this status code is retryable
|
|
110
|
+
if (!response.ok && KIRO_RETRYABLE_STATUSES.has(response.status)) {
|
|
111
|
+
// For 400, only retry known transient patterns
|
|
112
|
+
let isTransient400 = false;
|
|
113
|
+
if (response.status === 400) {
|
|
114
|
+
let bodyText = "";
|
|
115
|
+
try { bodyText = await response.clone().text(); } catch { /* ignore */ }
|
|
116
|
+
|
|
117
|
+
if (!this._isRetryable400(bodyText)) {
|
|
118
|
+
// Genuine validation error — don't retry
|
|
119
|
+
return { response, url, headers, transformedBody };
|
|
120
|
+
}
|
|
121
|
+
isTransient400 = true;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
if (maxRetries > 0 && retryAttempts < maxRetries) {
|
|
125
|
+
retryAttempts++;
|
|
126
|
+
const backoffMs = this._computeBackoff(retryAttempts);
|
|
127
|
+
log?.debug?.("RETRY", `${response.status} retry ${retryAttempts}/${maxRetries} after ${(backoffMs / 1000).toFixed(1)}s`);
|
|
128
|
+
await new Promise(resolve => setTimeout(resolve, backoffMs));
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// Retries exhausted — remap transient 400 to 429 so Claude Code CLI
|
|
133
|
+
// recognizes it as retryable (CLI only retries on 429/503, not 400)
|
|
134
|
+
if (isTransient400) {
|
|
135
|
+
const bodyText = await response.clone().text().catch(() => "");
|
|
136
|
+
const remappedResponse = new Response(bodyText, {
|
|
137
|
+
status: HTTP_STATUS.RATE_LIMITED,
|
|
138
|
+
statusText: "Too Many Requests",
|
|
139
|
+
headers: response.headers
|
|
140
|
+
});
|
|
141
|
+
log?.debug?.("RETRY", `400 → 429 remap after ${retryAttempts} retries (transient Kiro error)`);
|
|
142
|
+
return { response: remappedResponse, url, headers, transformedBody };
|
|
143
|
+
}
|
|
63
144
|
}
|
|
64
145
|
|
|
65
146
|
if (!response.ok) {
|
|
@@ -67,18 +148,26 @@ export class KiroExecutor extends BaseExecutor {
|
|
|
67
148
|
}
|
|
68
149
|
|
|
69
150
|
// Success - transform and return
|
|
70
|
-
|
|
71
|
-
// Create a TransformStream to convert binary to SSE text
|
|
72
|
-
const transformedResponse = this.transformEventStreamToSSE(response, model);
|
|
151
|
+
const transformedResponse = this.transformEventStreamToSSE(response, model, streamWatchdogEnabled);
|
|
73
152
|
return { response: transformedResponse, url, headers, transformedBody };
|
|
74
153
|
}
|
|
75
154
|
}
|
|
76
155
|
|
|
156
|
+
/**
|
|
157
|
+
* Compute exponential backoff with full jitter (MITM-style).
|
|
158
|
+
* Formula: random in [0, min(cap, base * 2^(attempt-1))]
|
|
159
|
+
* Prevents thundering herd when multiple requests hit errors simultaneously.
|
|
160
|
+
*/
|
|
161
|
+
_computeBackoff(attempt) {
|
|
162
|
+
const expCeiling = Math.min(KIRO_BACKOFF_CAP_MS, KIRO_BACKOFF_BASE_MS * Math.pow(2, attempt - 1));
|
|
163
|
+
return Math.floor(Math.random() * expCeiling) + KIRO_BACKOFF_BASE_MS / 2;
|
|
164
|
+
}
|
|
165
|
+
|
|
77
166
|
/**
|
|
78
167
|
* Transform AWS EventStream binary response to SSE text stream
|
|
79
168
|
* Using TransformStream instead of ReadableStream.pull() to avoid Workers timeout
|
|
80
169
|
*/
|
|
81
|
-
transformEventStreamToSSE(response, model) {
|
|
170
|
+
transformEventStreamToSSE(response, model, streamWatchdogEnabled = true) {
|
|
82
171
|
let buffer = new Uint8Array(0);
|
|
83
172
|
let chunkIndex = 0;
|
|
84
173
|
const responseId = `chatcmpl-${Date.now()}`;
|
|
@@ -94,7 +183,18 @@ export class KiroExecutor extends BaseExecutor {
|
|
|
94
183
|
};
|
|
95
184
|
|
|
96
185
|
const transformStream = new TransformStream({
|
|
97
|
-
async transform(chunk,
|
|
186
|
+
async transform(chunk, rawController) {
|
|
187
|
+
// Shadow the controller so we can tell whether this call emitted anything.
|
|
188
|
+
// Raw AWS EventStream frames can buffer for a long time (reasoning prefill)
|
|
189
|
+
// producing no SSE output; the downstream stall watchdog measures THIS
|
|
190
|
+
// stream's output, so a silent transform call looks like a stall and gets
|
|
191
|
+
// aborted. When a chunk arrived but yielded no frame, emit a keepalive.
|
|
192
|
+
let emitted = false;
|
|
193
|
+
const controller = {
|
|
194
|
+
enqueue: (d) => { emitted = true; rawController.enqueue(d); },
|
|
195
|
+
error: (e) => rawController.error(e),
|
|
196
|
+
terminate: () => rawController.terminate()
|
|
197
|
+
};
|
|
98
198
|
// Append to buffer
|
|
99
199
|
const newBuffer = new Uint8Array(buffer.length + chunk.length);
|
|
100
200
|
newBuffer.set(buffer);
|
|
@@ -373,6 +473,14 @@ export class KiroExecutor extends BaseExecutor {
|
|
|
373
473
|
if (iterations >= maxIterations) {
|
|
374
474
|
console.warn("[Kiro] Max iterations reached in event parsing");
|
|
375
475
|
}
|
|
476
|
+
|
|
477
|
+
// Bytes arrived but yielded no SSE frame yet (partial-frame buffering
|
|
478
|
+
// during reasoning prefill). Emit a keepalive so the downstream stall
|
|
479
|
+
// watchdog registers upstream activity and doesn't false-abort.
|
|
480
|
+
// Skipped when the watchdog is disabled (legacy v0.4.35 behavior).
|
|
481
|
+
if (!emitted && streamWatchdogEnabled) {
|
|
482
|
+
rawController.enqueue(KIRO_KEEPALIVE);
|
|
483
|
+
}
|
|
376
484
|
},
|
|
377
485
|
|
|
378
486
|
flush(controller) {
|
|
@@ -39,11 +39,11 @@ function buildTransformStream({ provider, sourceFormat, targetFormat, userAgent,
|
|
|
39
39
|
/**
|
|
40
40
|
* Handle streaming response — pipe provider SSE through transform stream to client.
|
|
41
41
|
*/
|
|
42
|
-
export function handleStreamingResponse({ providerResponse, provider, model, sourceFormat, targetFormat, userAgent, body, stream, translatedBody, finalBody, requestStartTime, connectionId, apiKey, clientRawRequest, onRequestSuccess, reqLogger, toolNameMap, streamController, onStreamComplete, streamDetailId }) {
|
|
42
|
+
export function handleStreamingResponse({ providerResponse, provider, model, sourceFormat, targetFormat, userAgent, body, stream, translatedBody, finalBody, requestStartTime, connectionId, apiKey, clientRawRequest, onRequestSuccess, reqLogger, toolNameMap, streamController, onStreamComplete, streamDetailId, streamWatchdogEnabled = true }) {
|
|
43
43
|
if (onRequestSuccess) onRequestSuccess();
|
|
44
44
|
|
|
45
45
|
const transformStream = buildTransformStream({ provider, sourceFormat, targetFormat, userAgent, reqLogger, toolNameMap, model, connectionId, body, onStreamComplete, apiKey });
|
|
46
|
-
const transformedBody = pipeWithDisconnect(providerResponse, transformStream, streamController);
|
|
46
|
+
const transformedBody = pipeWithDisconnect(providerResponse, transformStream, streamController, streamWatchdogEnabled);
|
|
47
47
|
|
|
48
48
|
saveRequestDetail(buildRequestDetail({
|
|
49
49
|
provider, model, connectionId, apiKey,
|
|
@@ -27,7 +27,7 @@ import { compressMessages, formatRtkLog } from "../rtk/index.js";
|
|
|
27
27
|
* @param {object} options.credentials - Provider credentials
|
|
28
28
|
* @param {string} options.sourceFormatOverride - Override detected source format (e.g. "openai-responses")
|
|
29
29
|
*/
|
|
30
|
-
export async function handleChatCore({ body, modelInfo, credentials, log, onCredentialsRefreshed, onRequestSuccess, onDisconnect, clientRawRequest, connectionId, userAgent, apiKey, ccFilterNaming, rtkEnabled, cavemanEnabled, cavemanLevel, sourceFormatOverride, providerThinking }) {
|
|
30
|
+
export async function handleChatCore({ body, modelInfo, credentials, log, onCredentialsRefreshed, onRequestSuccess, onDisconnect, clientRawRequest, connectionId, userAgent, apiKey, ccFilterNaming, rtkEnabled, cavemanEnabled, cavemanLevel, sourceFormatOverride, providerThinking, streamWatchdogEnabled = true }) {
|
|
31
31
|
const { provider, model } = modelInfo;
|
|
32
32
|
const requestStartTime = Date.now();
|
|
33
33
|
|
|
@@ -177,7 +177,7 @@ export async function handleChatCore({ body, modelInfo, credentials, log, onCred
|
|
|
177
177
|
// Execute request
|
|
178
178
|
let providerResponse, providerUrl, providerHeaders, finalBody;
|
|
179
179
|
try {
|
|
180
|
-
const result = await executor.execute({ model, body: translatedBody, stream, credentials, signal: streamController.signal, log, proxyOptions });
|
|
180
|
+
const result = await executor.execute({ model, body: translatedBody, stream, credentials, signal: streamController.signal, log, proxyOptions, streamWatchdogEnabled });
|
|
181
181
|
providerResponse = result.response;
|
|
182
182
|
providerUrl = result.url;
|
|
183
183
|
providerHeaders = result.headers;
|
|
@@ -216,7 +216,7 @@ export async function handleChatCore({ body, modelInfo, credentials, log, onCred
|
|
|
216
216
|
try { await onCredentialsRefreshed(newCredentials); } catch (e) { log?.warn?.("TOKEN", `onCredentialsRefreshed failed: ${e.message}`); }
|
|
217
217
|
}
|
|
218
218
|
try {
|
|
219
|
-
const retryResult = await executor.execute({ model, body: translatedBody, stream, credentials, signal: streamController.signal, log, proxyOptions });
|
|
219
|
+
const retryResult = await executor.execute({ model, body: translatedBody, stream, credentials, signal: streamController.signal, log, proxyOptions, streamWatchdogEnabled });
|
|
220
220
|
if (retryResult.response.ok) { providerResponse = retryResult.response; providerUrl = retryResult.url; }
|
|
221
221
|
} catch { log?.warn?.("TOKEN", `${provider.toUpperCase()} | retry after refresh failed`); }
|
|
222
222
|
} else {
|
|
@@ -267,7 +267,7 @@ export async function handleChatCore({ body, modelInfo, credentials, log, onCred
|
|
|
267
267
|
|
|
268
268
|
// Streaming response
|
|
269
269
|
const { onStreamComplete, streamDetailId } = buildOnStreamComplete({ ...sharedCtx });
|
|
270
|
-
return handleStreamingResponse({ ...sharedCtx, providerResponse, sourceFormat, targetFormat, userAgent, reqLogger, toolNameMap, streamController, onStreamComplete, streamDetailId });
|
|
270
|
+
return handleStreamingResponse({ ...sharedCtx, providerResponse, sourceFormat, targetFormat, userAgent, reqLogger, toolNameMap, streamController, onStreamComplete, streamDetailId, streamWatchdogEnabled });
|
|
271
271
|
}
|
|
272
272
|
|
|
273
273
|
export function isTokenExpiringSoon(expiresAt, bufferMs = 5 * 60 * 1000) {
|
|
@@ -21,7 +21,7 @@ import { convertResponsesStreamToJson } from "../transformer/streamToJsonConvert
|
|
|
21
21
|
* @param {string} options.connectionId - Connection ID for usage tracking
|
|
22
22
|
* @returns {Promise<{success: boolean, response?: Response, status?: number, error?: string}>}
|
|
23
23
|
*/
|
|
24
|
-
export async function handleResponsesCore({ body, modelInfo, credentials, log, onCredentialsRefreshed, onRequestSuccess, onDisconnect, connectionId }) {
|
|
24
|
+
export async function handleResponsesCore({ body, modelInfo, credentials, log, onCredentialsRefreshed, onRequestSuccess, onDisconnect, connectionId, streamWatchdogEnabled = true }) {
|
|
25
25
|
// Convert Responses API format to Chat Completions format
|
|
26
26
|
const convertedBody = convertResponsesApiFormat(body);
|
|
27
27
|
|
|
@@ -42,6 +42,7 @@ export async function handleResponsesCore({ body, modelInfo, credentials, log, o
|
|
|
42
42
|
onRequestSuccess,
|
|
43
43
|
onDisconnect,
|
|
44
44
|
connectionId,
|
|
45
|
+
streamWatchdogEnabled,
|
|
45
46
|
sourceFormatOverride: "openai-responses"
|
|
46
47
|
});
|
|
47
48
|
|
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
import { STREAM_STALL_TIMEOUT_MS } from "../config/runtimeConfig.js";
|
|
3
3
|
import { dbg, isDebugEnabled } from "./debugLog.js";
|
|
4
4
|
|
|
5
|
+
// Terminal SSE sentinel. When a stream is aborted/errored mid-flight the
|
|
6
|
+
// transform stream's flush() never runs, so the normal "data: [DONE]" is never
|
|
7
|
+
// emitted and clients hang until their own timeout. We send it manually on the
|
|
8
|
+
// graceful-close path so clients always see a clean end-of-stream.
|
|
9
|
+
const DONE_SENTINEL = new TextEncoder().encode("data: [DONE]\n\n");
|
|
10
|
+
|
|
5
11
|
// Get HH:MM:SS timestamp
|
|
6
12
|
function getTimeString() {
|
|
7
13
|
return new Date().toLocaleTimeString("en-US", { hour12: false, hour: "2-digit", minute: "2-digit", second: "2-digit" });
|
|
@@ -94,14 +100,36 @@ export function createStreamController({ onDisconnect, onError, log, provider, m
|
|
|
94
100
|
* for long periods while raw bytes still flow (e.g. Kiro EventStream
|
|
95
101
|
* binary frames buffering, Claude reasoning streams).
|
|
96
102
|
*/
|
|
97
|
-
export function createDisconnectAwareStream(transformStream, streamController) {
|
|
103
|
+
export function createDisconnectAwareStream(transformStream, streamController, streamWatchdogEnabled = true) {
|
|
98
104
|
const reader = transformStream.readable.getReader();
|
|
99
105
|
const writer = transformStream.writable.getWriter();
|
|
106
|
+
// Client-facing disconnect detection: when the upstream aborts/errors mid-flight,
|
|
107
|
+
// the transform flush() is skipped and "data: [DONE]" is never produced. Track
|
|
108
|
+
// whether we've terminated the client stream so we can inject the sentinel once.
|
|
109
|
+
let clientClosed = false;
|
|
110
|
+
|
|
111
|
+
// Emit "data: [DONE]" then close the client stream. Used on the abort/error path
|
|
112
|
+
// where the normal in-band sentinel from flush() will never arrive. When the watchdog
|
|
113
|
+
// is disabled (legacy v0.4.35 behavior) we close WITHOUT injecting the sentinel.
|
|
114
|
+
const closeWithSentinel = (controller) => {
|
|
115
|
+
if (clientClosed) return;
|
|
116
|
+
clientClosed = true;
|
|
117
|
+
if (streamWatchdogEnabled) {
|
|
118
|
+
try {
|
|
119
|
+
controller.enqueue(DONE_SENTINEL);
|
|
120
|
+
} catch (e) { /* downstream already gone */ }
|
|
121
|
+
}
|
|
122
|
+
try {
|
|
123
|
+
controller.close();
|
|
124
|
+
} catch (e) { /* already closed or cancelled */ }
|
|
125
|
+
};
|
|
100
126
|
|
|
101
127
|
return new ReadableStream({
|
|
102
128
|
async pull(controller) {
|
|
103
129
|
if (!streamController.isConnected()) {
|
|
104
|
-
|
|
130
|
+
// Stream was aborted/stalled before this pull — terminate cleanly so the
|
|
131
|
+
// client sees an end-of-stream instead of hanging on a truncated response.
|
|
132
|
+
closeWithSentinel(controller);
|
|
105
133
|
return;
|
|
106
134
|
}
|
|
107
135
|
|
|
@@ -109,7 +137,9 @@ export function createDisconnectAwareStream(transformStream, streamController) {
|
|
|
109
137
|
const { done, value } = await reader.read();
|
|
110
138
|
|
|
111
139
|
if (done) {
|
|
140
|
+
// Graceful EOF: the transform flush() already emitted "data: [DONE]".
|
|
112
141
|
streamController.handleComplete();
|
|
142
|
+
clientClosed = true;
|
|
113
143
|
controller.close();
|
|
114
144
|
return;
|
|
115
145
|
}
|
|
@@ -136,11 +166,9 @@ export function createDisconnectAwareStream(transformStream, streamController) {
|
|
|
136
166
|
code === "UND_ERR_SOCKET";
|
|
137
167
|
|
|
138
168
|
if (!wasConnected || isNetworkClose) {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
// Stream might already be closed or cancelled
|
|
143
|
-
}
|
|
169
|
+
// Upstream stall/abort/reset: flush() was skipped, so emit the sentinel
|
|
170
|
+
// ourselves before closing so the client terminates cleanly.
|
|
171
|
+
closeWithSentinel(controller);
|
|
144
172
|
} else {
|
|
145
173
|
try {
|
|
146
174
|
controller.error(error);
|
|
@@ -150,6 +178,8 @@ export function createDisconnectAwareStream(transformStream, streamController) {
|
|
|
150
178
|
},
|
|
151
179
|
|
|
152
180
|
cancel(reason) {
|
|
181
|
+
// Client went away — nothing to flush to it.
|
|
182
|
+
clientClosed = true;
|
|
153
183
|
streamController.handleDisconnect(reason || "cancelled");
|
|
154
184
|
reader.cancel();
|
|
155
185
|
writer.abort();
|
|
@@ -173,7 +203,7 @@ export function createDisconnectAwareStream(transformStream, streamController) {
|
|
|
173
203
|
* @param {TransformStream} transformStream - Transform stream for SSE
|
|
174
204
|
* @param {object} streamController - Stream controller from createStreamController
|
|
175
205
|
*/
|
|
176
|
-
export function pipeWithDisconnect(providerResponse, transformStream, streamController) {
|
|
206
|
+
export function pipeWithDisconnect(providerResponse, transformStream, streamController, streamWatchdogEnabled = true) {
|
|
177
207
|
let stallTimer = null;
|
|
178
208
|
let chunkCount = 0;
|
|
179
209
|
let totalBytes = 0;
|
|
@@ -184,6 +214,7 @@ export function pipeWithDisconnect(providerResponse, transformStream, streamCont
|
|
|
184
214
|
if (stallTimer) { clearTimeout(stallTimer); stallTimer = null; }
|
|
185
215
|
};
|
|
186
216
|
const armStall = () => {
|
|
217
|
+
if (!streamWatchdogEnabled) return; // OFF → never arm watchdog (v0.4.35 behavior)
|
|
187
218
|
clearStall();
|
|
188
219
|
stallTimer = setTimeout(() => {
|
|
189
220
|
stallTimer = null;
|
|
@@ -207,7 +238,7 @@ export function pipeWithDisconnect(providerResponse, transformStream, streamCont
|
|
|
207
238
|
};
|
|
208
239
|
|
|
209
240
|
armStall();
|
|
210
|
-
dbg(tag, `pipe start | stallTimeout=${STREAM_STALL_TIMEOUT_MS}ms`);
|
|
241
|
+
dbg(tag, `pipe start | watchdog=${streamWatchdogEnabled ? `on stallTimeout=${STREAM_STALL_TIMEOUT_MS}ms` : "off (legacy)"}`);
|
|
211
242
|
|
|
212
243
|
const upstreamTap = new TransformStream({
|
|
213
244
|
transform(chunk, controller) {
|
|
@@ -232,7 +263,8 @@ export function pipeWithDisconnect(providerResponse, transformStream, streamCont
|
|
|
232
263
|
|
|
233
264
|
return createDisconnectAwareStream(
|
|
234
265
|
{ readable: transformedBody, writable: { getWriter: () => ({ abort: () => Promise.resolve() }) } },
|
|
235
|
-
wrappedController
|
|
266
|
+
wrappedController,
|
|
267
|
+
streamWatchdogEnabled
|
|
236
268
|
);
|
|
237
269
|
}
|
|
238
270
|
|
package/app/package.json
CHANGED
package/app/src/mitm/server.js
CHANGED
|
@@ -24,6 +24,7 @@ const { createAntigravityDebugContext, extractBearerToken, maskToken } = require
|
|
|
24
24
|
const { getCertForDomain } = require("./cert/generate");
|
|
25
25
|
const { buildInputOnlyRequestDetail, createTokenSwapUsageObserver, generateDetailId } = require("./usageTracker");
|
|
26
26
|
const { pushHealthEvent, getLastEventStatus, migrateToEmailKeys } = require("./healthStore");
|
|
27
|
+
const { getTokenSwapRetryType, isRetryableTokenSwapStatus } = require("./tokenSwapRetry");
|
|
27
28
|
|
|
28
29
|
const { applyRtkCompression } = require("./rtkCompressor");
|
|
29
30
|
const { applyAntigravityIdeVersionOverride } = require("./antigravityIdeVersion");
|
|
@@ -203,7 +204,7 @@ async function passthrough(req, res, bodyBuffer, onResponse, debugContext = null
|
|
|
203
204
|
|
|
204
205
|
// ── Token swap forward ────────────────────────────────────────
|
|
205
206
|
// Unlike passthrough(), this checks upstream statusCode BEFORE
|
|
206
|
-
// piping to client — enabling auto-retry on
|
|
207
|
+
// piping to client — enabling auto-retry on retryable auth/quota/server errors.
|
|
207
208
|
|
|
208
209
|
async function tokenSwapForward(req, res, bodyBuffer, connections, model, strategy, provider, requestStartTime, debugContext = null) {
|
|
209
210
|
let targetHost = (req.headers.host || TARGET_HOSTS[0]).split(":")[0];
|
|
@@ -286,16 +287,12 @@ async function tokenSwapForward(req, res, bodyBuffer, connections, model, strate
|
|
|
286
287
|
servername: targetHost,
|
|
287
288
|
rejectUnauthorized: false
|
|
288
289
|
}, (forwardRes) => {
|
|
289
|
-
if (forwardRes.statusCode
|
|
290
|
+
if (isRetryableTokenSwapStatus(forwardRes.statusCode)) {
|
|
290
291
|
const chunks = [];
|
|
291
292
|
forwardRes.on("data", c => chunks.push(c));
|
|
292
293
|
forwardRes.on("end", () => {
|
|
293
294
|
const body = Buffer.concat(chunks).toString();
|
|
294
|
-
const retryType = forwardRes.statusCode
|
|
295
|
-
? "auth"
|
|
296
|
-
: forwardRes.statusCode === 403
|
|
297
|
-
? "permission"
|
|
298
|
-
: "quota";
|
|
295
|
+
const retryType = getTokenSwapRetryType(forwardRes.statusCode);
|
|
299
296
|
resolve({ retry: true, retryType, body, headers: forwardRes.headers, statusCode: forwardRes.statusCode });
|
|
300
297
|
});
|
|
301
298
|
} else {
|
|
@@ -307,9 +304,9 @@ async function tokenSwapForward(req, res, bodyBuffer, connections, model, strate
|
|
|
307
304
|
forwardReq.end();
|
|
308
305
|
});
|
|
309
306
|
|
|
310
|
-
if (result.retry && (result.retryType === "quota" || result.retryType === "permission")) {
|
|
311
|
-
// ── Unified retry: 403 IAM denial, 429 and 503 treated identically ──
|
|
312
|
-
//
|
|
307
|
+
if (result.retry && (result.retryType === "quota" || result.retryType === "permission" || result.retryType === "server_error")) {
|
|
308
|
+
// ── Unified retry: 403 IAM denial, 429, 500 and 503 treated identically ──
|
|
309
|
+
// These can be false-positive-prone from Antigravity; retry same account
|
|
313
310
|
// with exponential backoff before moving on.
|
|
314
311
|
const maxRetries = getAntigravity503RetryCount(conn.antigravity503RetryCount);
|
|
315
312
|
if (!conn._quotaRetryCount) conn._quotaRetryCount = 0;
|
|
@@ -430,20 +430,11 @@ function getConnectionLabel(connection) {
|
|
|
430
430
|
return connection.name || connection.id.slice(0, 8);
|
|
431
431
|
}
|
|
432
432
|
|
|
433
|
-
function isTokenSwapEnabled(
|
|
433
|
+
function isTokenSwapEnabled() {
|
|
434
434
|
try {
|
|
435
435
|
if (!fs.existsSync(DB_FILE)) return false;
|
|
436
436
|
const db = JSON.parse(fs.readFileSync(DB_FILE, "utf-8"));
|
|
437
|
-
|
|
438
|
-
if (!db.settings?.tokenSwapEnabled) {
|
|
439
|
-
return false;
|
|
440
|
-
}
|
|
441
|
-
const active = getActiveConnections(provider);
|
|
442
|
-
if (active.length === 0) {
|
|
443
|
-
log(`⚙️ [token-pool] swap enabled in settings but no active ${provider} connections`);
|
|
444
|
-
return false;
|
|
445
|
-
}
|
|
446
|
-
return true;
|
|
437
|
+
return !!db.settings?.tokenSwapEnabled;
|
|
447
438
|
} catch { return false; }
|
|
448
439
|
}
|
|
449
440
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const RETRYABLE_TOKEN_SWAP_STATUSES = new Set([401, 403, 429, 500, 503]);
|
|
2
|
+
|
|
3
|
+
function getTokenSwapRetryType(statusCode) {
|
|
4
|
+
const status = Number(statusCode);
|
|
5
|
+
if (status === 401) return "auth";
|
|
6
|
+
if (status === 403) return "permission";
|
|
7
|
+
if (status === 429 || status === 503) return "quota";
|
|
8
|
+
if (status === 500) return "server_error";
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function isRetryableTokenSwapStatus(statusCode) {
|
|
13
|
+
return RETRYABLE_TOKEN_SWAP_STATUSES.has(Number(statusCode));
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
module.exports = {
|
|
17
|
+
getTokenSwapRetryType,
|
|
18
|
+
isRetryableTokenSwapStatus,
|
|
19
|
+
};
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
self.__BUILD_MANIFEST=function(e,s,t){return{__rewrites:{afterFiles:[{has:e,source:"/v1/v1/:path*",destination:s},{has:e,source:"/v1/v1",destination:t},{has:e,source:"/codex/:path*",destination:"/api/v1/responses"},{has:e,source:"/v1/:path*",destination:s},{has:e,source:"/v1",destination:t}],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:143,errorRate:1e-4,numBits:2742,numHashes:14,bitArray:[0,1,1,0,1,0,1,1,0,0,0,1,1,0,1,0,0,0,1,1,1,1,1,0,1,0,1,1,0,0,0,1,1,1,1,1,1,0,1,0,0,1,0,1,0,1,1,0,0,1,1,0,1,1,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,0,1,0,1,0,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,1,1,1,1,1,1,1,0,1,0,1,0,0,1,1,0,1,1,1,1,0,0,0,0,1,1,1,0,1,0,1,0,1,1,0,0,0,0,1,0,1,0,0,1,0,0,0,1,1,0,1,0,0,0,0,0,1,1,1,1,0,0,1,1,0,0,1,1,1,1,1,0,1,0,0,1,0,0,1,1,0,1,0,0,0,1,1,0,1,0,1,1,0,1,1,1,1,0,0,0,1,1,1,0,1,0,1,1,1,1,0,1,0,1,1,1,0,1,0,0,1,1,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,1,0,0,0,1,0,1,1,0,1,0,0,0,1,0,0,0,1,1,1,0,1,1,1,0,0,1,1,0,0,0,0,1,1,0,0,1,1,1,1,0,1,1,0,1,1,0,0,0,1,1,1,0,0,1,0,1,1,1,0,1,1,0,0,1,1,0,0,0,1,1,0,0,0,1,0,0,1,1,1,0,1,1,1,0,1,0,0,1,1,0,0,1,1,0,0,1,0,1,0,0,1,1,1,0,1,0,0,0,0,1,0,1,1,1,1,1,1,0,1,0,1,1,1,0,1,1,0,0,1,0,1,0,0,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,0,1,1,0,0,0,0,1,0,1,0,0,1,0,0,0,1,1,0,1,1,0,1,0,0,1,1,0,0,0,1,0,0,1,0,1,0,0,1,0,1,0,1,1,1,0,1,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1,1,0,1,1,1,1,0,0,1,1,1,1,0,1,1,1,0,0,0,1,1,0,1,1,0,0,1,0,0,0,0,0,1,0,0,1,1,1,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,0,1,0,1,1,0,0,1,1,0,0,0,0,0,1,0,0,1,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,1,0,1,1,0,0,0,1,1,0,0,1,1,1,1,0,1,1,0,1,1,0,0,1,0,1,1,0,1,1,1,0,1,1,0,0,1,1,1,1,1,0,1,0,0,0,0,1,0,0,0,1,1,1,0,0,0,1,0,0,1,0,0,1,0,1,1,0,0,1,0,1,0,0,1,1,1,0,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,0,1,1,0,0,0,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,1,1,1,0,1,1,1,1,1,1,0,0,1,1,1,1,1,0,1,1,0,1,0,1,0,0,1,0,0,1,1,1,0,0,1,0,0,1,1,1,0,0,1,0,0,1,1,0,1,0,1,1,1,1,1,1,1,1,0,1,1,0,1,0,1,1,1,0,0,1,1,0,0,0,0,1,1,1,1,1,1,1,0,1,0,0,1,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,0,1,1,0,0,1,0,0,0,0,0,1,1,1,1,0,1,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,1,1,0,1,0,0,1,0,1,1,1,1,1,0,0,0,0,0,1,0,0,1,1,0,0,0,0,1,0,0,1,1,1,1,1,0,0,1,1,0,0,1,0,1,0,0,0,0,1,1,1,0,1,1,0,1,0,0,1,0,0,0,0,1,1,1,0,1,1,0,1,1,0,0,0,1,0,0,0,0,1,1,0,0,1,1,1,0,0,0,0,1,1,0,0,1,0,0,1,0,1,0,1,0,0,1,1,0,1,0,1,0,0,1,1,1,1,1,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,0,0,0,1,0,1,0,0,0,0,1,1,0,1,1,1,1,0,1,1,1,1,0,1,0,0,0,0,1,0,0,0,1,1,0,0,0,1,1,0,1,1,1,1,0,1,0,1,0,0,0,1,1,1,1,1,1,0,1,0,1,1,1,0,1,0,0,0,1,1,0,1,0,0,1,1,0,0,0,1,1,0,0,1,0,1,0,1,1,1,0,0,1,0,1,1,1,0,1,1,1,0,1,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0,1,1,1,1,1,1,1,1,0,1,0,0,1,0,1,0,1,1,0,0,0,1,0,1,0,0,1,1,1,0,1,0,0,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,1,0,0,1,1,1,0,1,1,0,0,1,1,0,1,0,1,0,1,1,0,0,1,0,1,1,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,0,1,1,0,1,0,1,1,1,0,0,1,1,0,1,1,1,1,1,0,1,1,1,0,1,1,1,1,1,0,0,1,1,0,0,0,1,0,0,1,0,1,1,1,0,1,1,1,0,0,1,0,1,1,1,1,1,0,0,0,0,1,0,0,1,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,0,1,0,0,0,1,0,1,0,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,0,0,1,1,0,0,1,0,0,1,1,1,1,1,0,0,1,1,0,1,0,0,0,0,0,1,1,1,0,1,1,1,0,1,1,1,0,0,0,0,0,1,0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,0,1,0,0,1,1,0,1,1,0,1,1,1,1,0,0,1,0,0,0,0,0,1,0,1,0,1,0,0,0,0,1,1,0,0,1,0,1,1,1,1,1,0,0,0,1,0,1,1,0,1,1,1,1,1,1,0,1,0,0,0,1,0,1,1,0,0,0,0,1,0,0,1,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0,1,0,1,1,0,0,1,0,1,0,1,1,0,1,1,1,1,1,1,1,1,1,0,1,0,0,1,1,1,0,0,1,1,1,1,0,1,0,1,0,0,1,0,1,1,0,1,1,1,0,0,0,1,1,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1,0,0,0,1,0,1,1,0,1,1,0,0,1,0,1,0,1,1,1,0,0,0,1,1,0,1,1,0,1,0,0,1,1,1,1,0,1,0,0,0,1,0,0,0,0,1,1,0,1,0,0,1,1,0,1,1,1,1,1,0,0,0,1,0,0,0,1,1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,0,1,0,1,1,1,1,0,0,0,1,0,1,0,0,0,0,1,0,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,0,1,1,1,1,0,0,0,1,0,0,1,0,1,1,0,0,1,1,1,1,0,0,0,0,1,0,0,1,1,1,1,0,0,0,0,1,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,1,0,0,0,1,0,1,1,1,0,0,0,0,0,1,1,1,0,1,1,0,0,1,1,0,0,0,0,1,1,0,1,1,1,0,0,1,1,1,1,1,0,0,1,1,1,0,1,0,0,0,1,0,0,1,0,0,1,1,1,0,1,1,1,0,1,0,1,0,0,1,1,1,1,0,0,0,0,0,1,0,1,1,1,0,1,1,0,1,0,1,0,0,1,1,0,1,1,1,0,1,0,1,1,0,0,0,0,1,1,1,0,1,1,1,0,0,1,0,0,1,0,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,0,1,1,1,1,0,1,1,0,0,0,1,1,0,0,1,1,1,0,0,1,0,0,0,1,0,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,1,0,1,0,0,1,1,1,0,1,1,0,1,1,1,0,1,1,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,0,0,1,0,0,1,1,0,1,0,0,0,0,0,1,1,1,1,0,0,1,0,1,1,0,1,0,1,1,1,1,0,0,0,1,0,1,1,0,0,0,1,1,0,0,0,0,1,1,0,0,0,1,1,0,1,0,1,1,1,1,0,1,0,1,1,1,1,1,1,1,1,0,0,1,1,0,0,0,1,0,0,1,0,1,1,0,1,1,1,0,1,0,1,1,0,0,1,0,1,1,0,0,1,0,1,1,0,0,1,0,0,0,1,0,0,0,0,0,1,1,0,0,1,0,1,1,0,1,1,1,1,1,0,1,1,0,0,0,1,1,1,1,1,1,0,0,1,0,1,0,0,1,1,1,0,1,1,0,0,1,0,1,1,1,1,1,0,1,1,1,1,1,0,1,1,0,0,0,0,0,1,1,0,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,1,0,0,1,1,1,0,0,1,1,0,0,1,0,0,1,1,0,1,0,0,1,1,1,0,0,1,1,1,1,0,1,0,0,0,0,0,0,0,1,1,1,0,1,1,1,0,1,1,1,1,1,0,0,0,0,1,0,1,1,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,0,1,0,0,0,1,0,1,0,0,1,1,1,1,0,0,1,0,1,0,1,0,0,1,1,0,1,1,1,1,0,1,1,1,0,1,1,0,1,1,1,1,1,0,0,1,0,0,0,1,1,0,1,0,0,1,0,1,1,0,1,1,0,1,0,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0,1,1,1,0,0,1,0,0,0,0,1,0,0,0,0,0,1,1,1,1,0,0,0,1,1,0,1,1,0,0,0,1,0,1,1,0,1,0,0,0,1,1,0,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,0,0,0,1,1,0,1,1,0,1,1,1,0,1,1,1,1,0,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,0,1,1,0,0,0,1,1,1,1,1,1,1,0,1,1,1,0,1,0,1,1,1,1,1,0,1,0,1,0,1,1,0,1,0,1,0,0,0,0,1,1,1,1,0,0,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,1,1,0,1,1,1,1,0,0,0,0,0,1,0,1,1,0,1,1,1,0,1,1,0,1,1,0,1,1,0,0,0,0,0,0,1,0,1,0,1,0,1,1,0,1,0,1,1,0,0,1,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,0,1,1,0,1,0,1,0,1,1,0,0,1,1,1,0,0,0,1,1,0,1,1,0,0,1,0,1,0,1,1,1,1,0,1,0,0,1,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,1]},__routerFilterDynamic:{numItems:14,errorRate:1e-4,numBits:269,numHashes:14,bitArray:[0,0,0,1,1,1,0,0,1,1,0,1,1,1,0,0,1,0,1,1,0,0,0,0,0,1,0,0,1,1,1,1,0,0,0,1,0,1,1,0,0,0,0,0,0,1,0,1,1,0,1,1,1,0,1,0,1,0,1,0,0,0,1,0,0,0,0,1,0,0,1,0,1,1,1,1,0,0,1,1,0,1,0,0,1,1,0,0,0,1,1,0,0,0,0,0,1,1,1,0,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,0,1,1,1,0,0,1,1,1,0,1,0,0,0,1,0,1,0,0,1,1,0,0,1,1,0,1,0,0,1,0,0,1,0,0,1,1,0,0,0,1,1,1,0,1,1,1,1,1,0,1,1,0,1,1,1,0,0,0,0,1,1,0,1,0,0,0,1,0,0,0,0,1,0,1,1,1,0,0,1,1,1,0,0,0,1,0,1,0,0,0,0,0,1,0,1,1,1,0,0,0,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,0,1,0,0,1,1,1,1,0,1,0,1,1,0,1,0,1,0,1]},sortedPages:["/_app"]}}(void 0,"/api/v1/:path*","/api/v1"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|