@techysy/10router 1.0.6 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/.next-cli-build/BUILD_ID +1 -1
- package/app/.next-cli-build/app-path-routes-manifest.json +13 -11
- package/app/.next-cli-build/build-manifest.json +2 -2
- package/app/.next-cli-build/prerender-manifest.json +3 -3
- package/app/.next-cli-build/required-server-files.json +3 -0
- package/app/.next-cli-build/routes-manifest.json +18 -8
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +4 -4
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error/page.js +1 -1
- package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error.html +1 -1
- package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found/page.js +1 -1
- package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_not-found.html +1 -1
- package/app/.next-cli-build/server/app/_not-found.rsc +4 -4
- package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/reset-password/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/acs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/acs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js +2 -2
- package/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/start/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +5 -5
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +3 -3
- package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/devin-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/devin-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/extras/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/stop/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/health/route.js +1 -1
- package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/init/route.js +1 -1
- package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/rotate/route.js +1 -0
- package/app/.next-cli-build/server/app/api/keys/rotate/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/keys/rotate/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/keys/route.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/locale/route.js +1 -1
- package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +4 -4
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/checkin/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/checkin/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/export/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/export/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +2 -2
- package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/api-key/route.js +1 -0
- package/app/.next-cli-build/server/app/api/{providers/[id]/json-models → oauth/xiaomi-mimo/api-key}/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/api-key/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route.js +4 -0
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
- package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
- package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
- package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
- package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/health/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/install/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/start/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/status/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/import-usage/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/import-usage/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/shutdown/route.js +1 -1
- package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tags/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
- package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/load/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stream/route.js +2 -2
- package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +2 -2
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/callback/page.js +1 -1
- package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/callback.html +1 -1
- package/app/.next-cli-build/server/app/callback.rsc +4 -4
- package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/quota.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard.html +1 -1
- package/app/.next-cli-build/server/app/dashboard.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/favicon.ico/route.js +1 -1
- package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/index.html +1 -1
- package/app/.next-cli-build/server/app/index.rsc +4 -4
- package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/landing/page.js +1 -1
- package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/landing.html +1 -1
- package/app/.next-cli-build/server/app/landing.rsc +4 -4
- package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/login/page.js +1 -1
- package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/login.html +1 -1
- package/app/.next-cli-build/server/app/login.rsc +5 -5
- package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/manifest.webmanifest/route.js +2 -2
- package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/page.js +1 -1
- package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app-paths-manifest.json +13 -11
- package/app/.next-cli-build/server/chunks/1260.js +1 -1
- package/app/.next-cli-build/server/chunks/1377.js +1 -1
- package/app/.next-cli-build/server/chunks/1636.js +1 -1
- package/app/.next-cli-build/server/chunks/1937.js +1 -1
- package/app/.next-cli-build/server/chunks/1998.js +1 -1
- package/app/.next-cli-build/server/chunks/2132.js +1 -0
- package/app/.next-cli-build/server/chunks/2179.js +1 -1
- package/app/.next-cli-build/server/chunks/2391.js +1 -1
- package/app/.next-cli-build/server/chunks/241.js +1 -1
- package/app/.next-cli-build/server/chunks/2732.js +1 -1
- package/app/.next-cli-build/server/chunks/2765.js +1 -0
- package/app/.next-cli-build/server/chunks/295.js +1 -1
- package/app/.next-cli-build/server/chunks/318.js +13 -13
- package/app/.next-cli-build/server/chunks/3212.js +1 -1
- package/app/.next-cli-build/server/chunks/3535.js +1 -1
- package/app/.next-cli-build/server/chunks/3662.js +1 -0
- package/app/.next-cli-build/server/chunks/3943.js +1 -1
- package/app/.next-cli-build/server/chunks/3962.js +1 -1
- package/app/.next-cli-build/server/chunks/4037.js +1 -1
- package/app/.next-cli-build/server/chunks/4049.js +1 -0
- package/app/.next-cli-build/server/chunks/412.js +1 -1
- package/app/.next-cli-build/server/chunks/4123.js +1 -1
- package/app/.next-cli-build/server/chunks/4152.js +1 -0
- package/app/.next-cli-build/server/chunks/4293.js +1 -0
- package/app/.next-cli-build/server/chunks/4665.js +1 -1
- package/app/.next-cli-build/server/chunks/4755.js +1 -0
- package/app/.next-cli-build/server/chunks/4985.js +1 -0
- package/app/.next-cli-build/server/chunks/5182.js +1 -1
- package/app/.next-cli-build/server/chunks/525.js +1 -0
- package/app/.next-cli-build/server/chunks/5612.js +1 -1
- package/app/.next-cli-build/server/chunks/5615.js +3 -3
- package/app/.next-cli-build/server/chunks/5781.js +2 -2
- package/app/.next-cli-build/server/chunks/595.js +1 -1
- package/app/.next-cli-build/server/chunks/6070.js +1 -1
- package/app/.next-cli-build/server/chunks/615.js +1 -1
- package/app/.next-cli-build/server/chunks/6306.js +1 -1
- package/app/.next-cli-build/server/chunks/6326.js +1 -1
- package/app/.next-cli-build/server/chunks/6457.js +1 -1
- package/app/.next-cli-build/server/chunks/653.js +1 -1
- package/app/.next-cli-build/server/chunks/6763.js +1 -1
- package/app/.next-cli-build/server/chunks/6844.js +1 -1
- package/app/.next-cli-build/server/chunks/6871.js +1 -0
- package/app/.next-cli-build/server/chunks/6922.js +1 -0
- package/app/.next-cli-build/server/chunks/7211.js +1 -1
- package/app/.next-cli-build/server/chunks/7239.js +2 -2
- package/app/.next-cli-build/server/chunks/7247.js +1 -1
- package/app/.next-cli-build/server/chunks/7322.js +2 -2
- package/app/.next-cli-build/server/chunks/7774.js +3 -3
- package/app/.next-cli-build/server/chunks/7805.js +24 -0
- package/app/.next-cli-build/server/chunks/7828.js +1 -1
- package/app/.next-cli-build/server/chunks/{8038.js → 7913.js} +8 -8
- package/app/.next-cli-build/server/chunks/8145.js +1 -1
- package/app/.next-cli-build/server/chunks/8363.js +1 -0
- package/app/.next-cli-build/server/chunks/8444.js +1 -1
- package/app/.next-cli-build/server/chunks/8499.js +8 -8
- package/app/.next-cli-build/server/chunks/8546.js +1 -0
- package/app/.next-cli-build/server/chunks/869.js +1 -1
- package/app/.next-cli-build/server/chunks/8838.js +1 -1
- package/app/.next-cli-build/server/chunks/8895.js +10 -8
- package/app/.next-cli-build/server/chunks/8910.js +1 -1
- package/app/.next-cli-build/server/chunks/8920.js +1 -1
- package/app/.next-cli-build/server/chunks/8990.js +1 -0
- package/app/.next-cli-build/server/chunks/9609.js +1 -1
- package/app/.next-cli-build/server/chunks/9896.js +1 -0
- package/app/.next-cli-build/server/instrumentation.js +1 -1
- package/app/.next-cli-build/server/instrumentation.js.nft.json +1 -1
- package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/app/.next-cli-build/server/middleware.js +8 -8
- package/app/.next-cli-build/server/middleware.js.nft.json +1 -1
- package/app/.next-cli-build/server/pages/404.html +1 -1
- package/app/.next-cli-build/server/pages/500.html +1 -1
- package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
- package/app/.next-cli-build/static/chunks/1243-a9f0940294c15c24.js +3 -0
- package/app/.next-cli-build/static/chunks/1321-0167273f2d678ede.js +1 -0
- package/app/.next-cli-build/static/chunks/{5116-4618105f24431c4a.js → 3346-0ae97d50d86ac1f7.js} +10 -10
- package/app/.next-cli-build/static/chunks/5497-a55c9d3d9f5b5cbf.js +7 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-272386fb26fd75c3.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/page-f098adefd36910e1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-a2a6c56b7776af70.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/page-d4b67cdea67b89d0.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-cd93d4f0b910293c.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-60c620ec082ed541.js +14 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-c1757ed34595dcdb.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-c7ef8300ebeb4889.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/{layout-a52d19cb5aacd04f.js → layout-1cffa0a228a79ad6.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/_global-error/page-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/login/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/reset-password/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/acs/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/metadata/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/start/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/test/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/status/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/devin-settings/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-build-settings/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/health/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/init/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/rotate/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/locale/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/alias/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/availability/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/custom/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/test/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/checkin/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/export/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/api-key/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/auto-import/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pricing/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/client/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/logs/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/database/import-usage/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/database/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/shutdown/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tags/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/load/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/save/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/send/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/history/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/search/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/[id]/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/edits/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/extensions/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/generations/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/update/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/app/page-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-f5ad4d359abeda22.js +1 -0
- package/app/.next-cli-build/static/rBJbR_XYSlh3OgKbcSSXs/_buildManifest.js +1 -0
- package/app/package.json +5 -3
- package/app/public/i18n/changelog/en.md +179 -114
- package/app/public/i18n/changelog/zh-CN.md +177 -112
- package/app/public/i18n/changelog/zh-TW.md +179 -114
- package/app/public/i18n/literals/zh-CN.json +1620 -1519
- package/app/public/i18n/literals/zh-TW.json +414 -307
- package/app/public/providers/amd.png +0 -0
- package/app/public/providers/xiaomi-mimo.png +0 -0
- package/app/server.js +1 -1
- package/app/src/lib/oauth/providers/xiaomi-mimo.js +169 -0
- package/app/src/mitm/server.js +23 -23
- package/app/src/shared/utils/apiKey.js +82 -24
- package/app/src/sse/services/backgroundTokenRefresh.js +35 -32
- package/package.json +2 -2
- package/src/cli/i18n/index.js +29 -5
- package/src/cli/tray/icon-mono-black.ico +0 -0
- package/src/cli/tray/icon-mono-white.ico +0 -0
- package/src/cli/tray/icon-template.png +0 -0
- package/src/cli/tray/tray.js +13 -8
- package/src/cli/tray/trayWin.js +39 -2
- package/app/.next-cli-build/server/app/api/providers/[id]/json-models/route.js +0 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/json-models/route_client-reference-manifest.js +0 -1
- package/app/.next-cli-build/server/chunks/1129.js +0 -4
- package/app/.next-cli-build/server/chunks/1332.js +0 -1
- package/app/.next-cli-build/server/chunks/1564.js +0 -1
- package/app/.next-cli-build/server/chunks/3350.js +0 -1
- package/app/.next-cli-build/server/chunks/4452.js +0 -1
- package/app/.next-cli-build/server/chunks/6212.js +0 -1
- package/app/.next-cli-build/server/chunks/7598.js +0 -1
- package/app/.next-cli-build/server/chunks/7914.js +0 -1
- package/app/.next-cli-build/server/chunks/8162.js +0 -6
- package/app/.next-cli-build/server/chunks/9140.js +0 -13
- package/app/.next-cli-build/server/chunks/9463.js +0 -1
- package/app/.next-cli-build/server/chunks/9703.js +0 -17
- package/app/.next-cli-build/static/chunks/1243-53ff028412802304.js +0 -3
- package/app/.next-cli-build/static/chunks/1321-656ff6a3f06c59ae.js +0 -1
- package/app/.next-cli-build/static/chunks/5497-7b21d4160c9e592e.js +0 -7
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-a217fda9e3b75a4c.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/page-5db6b536a4ab4991.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-1049c48c632926aa.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/page-56ceed313e85c919.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-ddb08251c0405731.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-a2431d795923337a.js +0 -14
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-595256b6306fa952.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-568a544f8e220d5b.js +0 -1
- package/app/.next-cli-build/static/chunks/app/_global-error/page-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/login/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/reset-password/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/acs/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/metadata/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/start/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/test/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/status/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/devin-settings/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-build-settings/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/health/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/init/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/keys/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/locale/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/alias/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/availability/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/custom/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/test/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/checkin/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/export/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pricing/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/json-models/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/client/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/logs/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/database/import-usage/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/database/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/shutdown/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tags/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/load/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/save/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/send/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/history/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/search/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/[id]/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/edits/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/extensions/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/generations/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/update/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/app/page-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-610e2a51edf6ccba.js +0 -1
- package/app/.next-cli-build/static/rPl9WrF0GIBOKSW3yAMMs/_buildManifest.js +0 -1
- /package/app/.next-cli-build/static/{rPl9WrF0GIBOKSW3yAMMs → rBJbR_XYSlh3OgKbcSSXs}/_ssgManifest.js +0 -0
|
@@ -1,15 +1,72 @@
|
|
|
1
1
|
import crypto from "crypto";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { DATA_DIR } from "@/lib/dataDir";
|
|
5
|
+
import { getSettings } from "@/lib/db/index.js";
|
|
2
6
|
|
|
3
|
-
const
|
|
7
|
+
const LEGACY_FALLBACK_SECRET = "endpoint-proxy-api-key-secret";
|
|
8
|
+
let _generatedSecretCache = null;
|
|
9
|
+
|
|
10
|
+
// Opt-in experimental secret rotation (settings.apiKeyRotation, or env
|
|
11
|
+
// API_KEY_ROTATION=true). Default OFF: enabling regenerates the HMAC secret,
|
|
12
|
+
// which invalidates every existing API key's CRC — that migration must never
|
|
13
|
+
// happen silently. When on, same contract as JWT_SECRET (dashboardSession):
|
|
14
|
+
// env wins, else a random secret is auto-generated to
|
|
15
|
+
// $DATA_DIR/api-key-secret (mode 0600).
|
|
16
|
+
async function isRotationEnabled() {
|
|
17
|
+
if (process.env.API_KEY_SECRET) return false; // explicit env secret always wins
|
|
18
|
+
if (process.env.API_KEY_ROTATION === "true") return true;
|
|
19
|
+
try {
|
|
20
|
+
const settings = await getSettings();
|
|
21
|
+
return settings?.apiKeyRotation === true;
|
|
22
|
+
} catch {
|
|
23
|
+
return false; // DB unavailable → legacy behavior
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function ensureGeneratedSecret() {
|
|
28
|
+
if (_generatedSecretCache) return _generatedSecretCache;
|
|
29
|
+
const file = path.join(DATA_DIR, "api-key-secret");
|
|
30
|
+
try {
|
|
31
|
+
_generatedSecretCache = fs.readFileSync(file, "utf8").trim();
|
|
32
|
+
return _generatedSecretCache;
|
|
33
|
+
} catch {}
|
|
34
|
+
fs.mkdirSync(DATA_DIR, { recursive: true });
|
|
35
|
+
_generatedSecretCache = crypto.randomBytes(32).toString("hex");
|
|
36
|
+
fs.writeFileSync(file, _generatedSecretCache, { mode: 0o600 });
|
|
37
|
+
return _generatedSecretCache;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Resolved per call (cheap after first rotation): env secret → generated
|
|
41
|
+
// secret (rotation on) → legacy fallback (rotation off, production warns).
|
|
42
|
+
async function resolveApiKeySecret() {
|
|
43
|
+
const fromEnv = process.env.API_KEY_SECRET;
|
|
44
|
+
if (fromEnv) return fromEnv;
|
|
45
|
+
if (await isRotationEnabled()) return ensureGeneratedSecret();
|
|
46
|
+
if (process.env.NODE_ENV === "production" && !process.env.API_KEY_ROTATION) {
|
|
47
|
+
// Warn once per process — the built-in secret is public knowledge.
|
|
48
|
+
if (!resolveApiKeySecret._warned) {
|
|
49
|
+
resolveApiKeySecret._warned = true;
|
|
50
|
+
console.warn(
|
|
51
|
+
"[auth] API_KEY_SECRET is unset — falling back to a well-known built-in secret. " +
|
|
52
|
+
"Set API_KEY_SECRET, or enable key rotation in Endpoint settings (experimental; " +
|
|
53
|
+
"existing API keys will need to be re-issued after enabling).",
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return LEGACY_FALLBACK_SECRET;
|
|
58
|
+
}
|
|
4
59
|
|
|
5
60
|
/**
|
|
6
|
-
* Generate 6-char random keyId
|
|
61
|
+
* Generate 6-char random keyId (crypto-grade randomness — key material
|
|
62
|
+
* must not come from Math.random)
|
|
7
63
|
*/
|
|
8
64
|
function generateKeyId() {
|
|
9
65
|
const chars = "abcdefghijklmnopqrstuvwxyz0123456789";
|
|
66
|
+
const bytes = crypto.randomBytes(6);
|
|
10
67
|
let result = "";
|
|
11
68
|
for (let i = 0; i < 6; i++) {
|
|
12
|
-
result += chars.charAt(
|
|
69
|
+
result += chars.charAt(bytes[i] % chars.length);
|
|
13
70
|
}
|
|
14
71
|
return result;
|
|
15
72
|
}
|
|
@@ -17,9 +74,10 @@ function generateKeyId() {
|
|
|
17
74
|
/**
|
|
18
75
|
* Generate CRC (8-char HMAC)
|
|
19
76
|
*/
|
|
20
|
-
function generateCrc(machineId, keyId) {
|
|
77
|
+
async function generateCrc(machineId, keyId) {
|
|
78
|
+
const secret = await resolveApiKeySecret();
|
|
21
79
|
return crypto
|
|
22
|
-
.createHmac("sha256",
|
|
80
|
+
.createHmac("sha256", secret)
|
|
23
81
|
.update(machineId + keyId)
|
|
24
82
|
.digest("hex")
|
|
25
83
|
.slice(0, 8);
|
|
@@ -29,11 +87,11 @@ function generateCrc(machineId, keyId) {
|
|
|
29
87
|
* Generate API key with machineId embedded
|
|
30
88
|
* Format: sk-{machineId}-{keyId}-{crc8}
|
|
31
89
|
* @param {string} machineId - 16-char machine ID
|
|
32
|
-
* @returns {{ key: string, keyId: string }}
|
|
90
|
+
* @returns {Promise<{ key: string, keyId: string }>}
|
|
33
91
|
*/
|
|
34
|
-
export function generateApiKeyWithMachine(machineId) {
|
|
92
|
+
export async function generateApiKeyWithMachine(machineId) {
|
|
35
93
|
const keyId = generateKeyId();
|
|
36
|
-
const crc = generateCrc(machineId, keyId);
|
|
94
|
+
const crc = await generateCrc(machineId, keyId);
|
|
37
95
|
const key = `sk-${machineId}-${keyId}-${crc}`;
|
|
38
96
|
return { key, keyId };
|
|
39
97
|
}
|
|
@@ -44,44 +102,44 @@ export function generateApiKeyWithMachine(machineId) {
|
|
|
44
102
|
* - New: sk-{machineId}-{keyId}-{crc8}
|
|
45
103
|
* - Old: sk-{random8}
|
|
46
104
|
* @param {string} apiKey
|
|
47
|
-
* @returns {{ machineId: string, keyId: string, isNewFormat: boolean } | null}
|
|
105
|
+
* @returns {Promise<{ machineId: string, keyId: string, isNewFormat: boolean } | null>}
|
|
48
106
|
*/
|
|
49
|
-
export function parseApiKey(apiKey) {
|
|
107
|
+
export async function parseApiKey(apiKey) {
|
|
50
108
|
if (!apiKey || !apiKey.startsWith("sk-")) return null;
|
|
51
109
|
|
|
52
110
|
const parts = apiKey.split("-");
|
|
53
|
-
|
|
111
|
+
|
|
54
112
|
// New format: sk-{machineId}-{keyId}-{crc8} = 4 parts
|
|
55
113
|
if (parts.length === 4) {
|
|
56
114
|
const [, machineId, keyId, crc] = parts;
|
|
57
|
-
|
|
115
|
+
|
|
58
116
|
// Validate CRC
|
|
59
|
-
const expectedCrc = generateCrc(machineId, keyId);
|
|
117
|
+
const expectedCrc = await generateCrc(machineId, keyId);
|
|
60
118
|
if (crc !== expectedCrc) return null;
|
|
61
|
-
|
|
119
|
+
|
|
62
120
|
return { machineId, keyId, isNewFormat: true };
|
|
63
121
|
}
|
|
64
|
-
|
|
122
|
+
|
|
65
123
|
// Old format: sk-{random8} = 2 parts
|
|
66
124
|
if (parts.length === 2) {
|
|
67
125
|
return { machineId: null, keyId: parts[1], isNewFormat: false };
|
|
68
126
|
}
|
|
69
|
-
|
|
127
|
+
|
|
70
128
|
return null;
|
|
71
129
|
}
|
|
72
130
|
|
|
73
131
|
/**
|
|
74
132
|
* Verify API key CRC (only for new format)
|
|
75
133
|
* @param {string} apiKey
|
|
76
|
-
* @returns {boolean}
|
|
134
|
+
* @returns {Promise<boolean>}
|
|
77
135
|
*/
|
|
78
|
-
export function verifyApiKeyCrc(apiKey) {
|
|
79
|
-
const parsed = parseApiKey(apiKey);
|
|
136
|
+
export async function verifyApiKeyCrc(apiKey) {
|
|
137
|
+
const parsed = await parseApiKey(apiKey);
|
|
80
138
|
if (!parsed) return false;
|
|
81
|
-
|
|
139
|
+
|
|
82
140
|
// Old format doesn't have CRC, always valid if parsed
|
|
83
141
|
if (!parsed.isNewFormat) return true;
|
|
84
|
-
|
|
142
|
+
|
|
85
143
|
// New format already verified in parseApiKey
|
|
86
144
|
return true;
|
|
87
145
|
}
|
|
@@ -89,10 +147,10 @@ export function verifyApiKeyCrc(apiKey) {
|
|
|
89
147
|
/**
|
|
90
148
|
* Check if API key is new format (contains machineId)
|
|
91
149
|
* @param {string} apiKey
|
|
92
|
-
* @returns {boolean}
|
|
150
|
+
* @returns {Promise<boolean>}
|
|
93
151
|
*/
|
|
94
|
-
export function isNewFormatKey(apiKey) {
|
|
95
|
-
const parsed = parseApiKey(apiKey);
|
|
152
|
+
export async function isNewFormatKey(apiKey) {
|
|
153
|
+
const parsed = await parseApiKey(apiKey);
|
|
96
154
|
return parsed?.isNewFormat === true;
|
|
97
155
|
}
|
|
98
156
|
|
|
@@ -9,6 +9,8 @@ import { getCredentialExpiryMs } from "open-sse/services/oauthCredentialManager.
|
|
|
9
9
|
export const BACKGROUND_REFRESH_LEAD_MS = 30 * 60 * 1000;
|
|
10
10
|
const DEFAULT_INTERVAL_MS = 5 * 60 * 1000;
|
|
11
11
|
const INITIAL_DELAY_MS = 10 * 1000;
|
|
12
|
+
// Google Cloud flags bursty token endpoint traffic as anti-abuse; stagger refreshes.
|
|
13
|
+
const SENSITIVE_PROVIDERS = new Set(["antigravity", "gemini-cli"]);
|
|
12
14
|
|
|
13
15
|
let started = false;
|
|
14
16
|
let intervalHandle = null;
|
|
@@ -87,47 +89,48 @@ async function refreshOne(connection) {
|
|
|
87
89
|
* @param {{ loadConnections?: Function, refreshConnection?: Function }} [deps]
|
|
88
90
|
*/
|
|
89
91
|
export async function runBackgroundTokenRefreshTick(deps = {}) {
|
|
90
|
-
if (tickRunning)
|
|
91
|
-
log.debug("BG_TOKEN_REFRESH", "Tick already running, skip");
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
92
|
+
if (tickRunning) return;
|
|
94
93
|
tickRunning = true;
|
|
95
94
|
try {
|
|
96
95
|
const load = deps.loadConnections || loadActiveConnections;
|
|
97
96
|
const refresh = deps.refreshConnection || refreshOne;
|
|
97
|
+
const sleep = deps.sleep || ((ms) => new Promise((res) => setTimeout(res, ms)));
|
|
98
98
|
|
|
99
99
|
const connections = await load();
|
|
100
100
|
const due = selectConnectionsNeedingRefresh(connections, Date.now());
|
|
101
101
|
|
|
102
|
-
if (due.length === 0)
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
102
|
+
if (due.length === 0) return;
|
|
103
|
+
|
|
104
|
+
const baseSensitiveDelay = Number(process.env.BG_REFRESH_GOOGLE_DELAY_MS) || 12_000;
|
|
105
|
+
const baseNormalDelay = Number(process.env.BG_REFRESH_DELAY_MS) || 1_500;
|
|
106
|
+
|
|
107
|
+
for (let i = 0; i < due.length; i++) {
|
|
108
|
+
const conn = due[i];
|
|
109
|
+
try {
|
|
110
|
+
await refresh(conn);
|
|
111
|
+
log.info("BG_TOKEN_REFRESH", "Connection refresh finished", {
|
|
112
|
+
id: conn.id,
|
|
113
|
+
email: conn.email || conn.name || conn.id,
|
|
114
|
+
provider: conn.provider,
|
|
115
|
+
});
|
|
116
|
+
} catch (err) {
|
|
117
|
+
log.warn("BG_TOKEN_REFRESH", "Connection refresh failed (swallowed)", {
|
|
118
|
+
id: conn?.id,
|
|
119
|
+
email: conn?.email || conn?.name || conn?.id,
|
|
120
|
+
provider: conn?.provider,
|
|
121
|
+
error: err?.message ?? String(err),
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// Sequential delay between accounts to prevent bursting upstream
|
|
126
|
+
// providers (especially Google Cloud) with simultaneous token refreshes.
|
|
127
|
+
if (i < due.length - 1) {
|
|
128
|
+
const isSensitive = SENSITIVE_PROVIDERS.has(conn.provider);
|
|
129
|
+
const baseDelay = isSensitive ? baseSensitiveDelay : baseNormalDelay;
|
|
130
|
+
const jitter = isSensitive ? Math.floor(Math.random() * 4000) : 200;
|
|
131
|
+
await sleep(baseDelay + jitter);
|
|
132
|
+
}
|
|
107
133
|
}
|
|
108
|
-
|
|
109
|
-
log.info("BG_TOKEN_REFRESH", "Refreshing due OAuth connections", {
|
|
110
|
-
due: due.length,
|
|
111
|
-
ids: due.map((c) => c.id).filter(Boolean),
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
await Promise.allSettled(
|
|
115
|
-
due.map(async (conn) => {
|
|
116
|
-
try {
|
|
117
|
-
await refresh(conn);
|
|
118
|
-
log.info("BG_TOKEN_REFRESH", "Connection refresh finished", {
|
|
119
|
-
id: conn.id,
|
|
120
|
-
provider: conn.provider,
|
|
121
|
-
});
|
|
122
|
-
} catch (err) {
|
|
123
|
-
log.warn("BG_TOKEN_REFRESH", "Connection refresh failed (swallowed)", {
|
|
124
|
-
id: conn?.id,
|
|
125
|
-
provider: conn?.provider,
|
|
126
|
-
error: err?.message ?? String(err),
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
})
|
|
130
|
-
);
|
|
131
134
|
} catch (err) {
|
|
132
135
|
log.warn("BG_TOKEN_REFRESH", "Tick failed (swallowed)", {
|
|
133
136
|
error: err?.message ?? String(err),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@techysy/10router",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "10Router CLI - Start and manage 10Router server",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"scripts": {
|
|
20
20
|
"dev": "nodemon -I --watch cli.js --watch src --watch hooks --ext js,json cli.js",
|
|
21
21
|
"build": "node scripts/build-cli.js",
|
|
22
|
-
"pack:cli": "npm run build && npm pack --pack-destination
|
|
22
|
+
"pack:cli": "npm run build && npm pack --pack-destination ..",
|
|
23
23
|
"publish:cli": "npm run build && npm publish --registry https://registry.npmjs.org",
|
|
24
24
|
"postinstall": "node hooks/postinstall.js || exit 0",
|
|
25
25
|
"prepublishOnly": "npm run build"
|
package/src/cli/i18n/index.js
CHANGED
|
@@ -2,10 +2,13 @@
|
|
|
2
2
|
* CLI i18n — 系统语言检测 + 轻量字典查找(零依赖)
|
|
3
3
|
*
|
|
4
4
|
* 语言解析优先级:
|
|
5
|
-
* 1. TENROUTER_LANG 环境变量显式覆盖(如 zh-CN / zh-TW / en)
|
|
6
|
-
* 2.
|
|
7
|
-
*
|
|
8
|
-
*
|
|
5
|
+
* 1. TENROUTER_LANG / LC_ALL 环境变量显式覆盖(如 zh-CN / zh-TW / en)
|
|
6
|
+
* 2. macOS: `defaults read -g AppleLocale`(系统 UI 语言的权威来源)——
|
|
7
|
+
* mac 的 Terminal LANG 常年是 en_US/C 与系统语言脱节,GUI 启动的进程
|
|
8
|
+
* 甚至没有 LANG,只查 env/ICU 会让中文 mac 用户看到英文界面
|
|
9
|
+
* 3. LANG(posix 惯例)
|
|
10
|
+
* 4. ICU 默认 locale(Node 全量 ICU 在 Windows 上取自系统 UI 语言)
|
|
11
|
+
* 5. 回退 en
|
|
9
12
|
*
|
|
10
13
|
* 字典按源文件分片存放在 locales/<lang>/*.json(index.js 合并加载),
|
|
11
14
|
* 缺失键回退链:当前语言 → en → 键名本身。占位符用 {name} 语法。
|
|
@@ -27,11 +30,32 @@ function normalize(raw) {
|
|
|
27
30
|
return null;
|
|
28
31
|
}
|
|
29
32
|
|
|
33
|
+
// macOS 系统 UI 语言(AppleLocale 形如 zh_CN / zh_Hant_TW / en_US);读不到返回 null
|
|
34
|
+
function macAppleLocale() {
|
|
35
|
+
try {
|
|
36
|
+
const { execSync } = require("child_process");
|
|
37
|
+
const out = execSync("defaults read -g AppleLocale", {
|
|
38
|
+
encoding: "utf8",
|
|
39
|
+
timeout: 2000,
|
|
40
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
41
|
+
});
|
|
42
|
+
return normalize(out);
|
|
43
|
+
} catch {
|
|
44
|
+
return null; // key 不存在/超时/非 mac:静默跳过
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
30
48
|
function detectLocale() {
|
|
31
|
-
for (const envKey of ["TENROUTER_LANG", "LC_ALL"
|
|
49
|
+
for (const envKey of ["TENROUTER_LANG", "LC_ALL"]) {
|
|
32
50
|
const hit = normalize(process.env[envKey]);
|
|
33
51
|
if (hit) return hit;
|
|
34
52
|
}
|
|
53
|
+
if (process.platform === "darwin") {
|
|
54
|
+
const hit = macAppleLocale();
|
|
55
|
+
if (hit) return hit;
|
|
56
|
+
}
|
|
57
|
+
const langHit = normalize(process.env.LANG);
|
|
58
|
+
if (langHit) return langHit;
|
|
35
59
|
try {
|
|
36
60
|
const hit = normalize(Intl.DateTimeFormat().resolvedOptions().locale);
|
|
37
61
|
if (hit) return hit;
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/src/cli/tray/tray.js
CHANGED
|
@@ -8,10 +8,12 @@ let isWinTray = false;
|
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Get icon base64 from file — used for systray (mac/linux)
|
|
11
|
+
* macOS uses the monochrome template glyph (alpha = artwork): menu bar renders
|
|
12
|
+
* it black/white with the system appearance, matching native menu bar icons.
|
|
11
13
|
*/
|
|
12
14
|
function getIconBase64() {
|
|
13
|
-
const
|
|
14
|
-
const iconFile =
|
|
15
|
+
const platform = process.platform;
|
|
16
|
+
const iconFile = platform === "darwin" ? "icon-template.png" : platform === "win32" ? "icon.ico" : "icon.png";
|
|
15
17
|
try {
|
|
16
18
|
const iconPath = path.join(__dirname, iconFile);
|
|
17
19
|
if (fs.existsSync(iconPath)) {
|
|
@@ -115,8 +117,8 @@ function handleClick(index, options, onAutostartToggle) {
|
|
|
115
117
|
function initWindowsTray(options) {
|
|
116
118
|
const { port } = options;
|
|
117
119
|
try {
|
|
118
|
-
const { initWinTray } = require("./trayWin");
|
|
119
|
-
const iconPath =
|
|
120
|
+
const { initWinTray, winTrayIconPath } = require("./trayWin");
|
|
121
|
+
const iconPath = winTrayIconPath();
|
|
120
122
|
const autostartEnabled = getAutostartEnabled();
|
|
121
123
|
const items = buildMenuItems(port, autostartEnabled);
|
|
122
124
|
|
|
@@ -200,10 +202,13 @@ function initUnixTray(options) {
|
|
|
200
202
|
|
|
201
203
|
const menu = {
|
|
202
204
|
icon: getIconBase64(),
|
|
203
|
-
//
|
|
204
|
-
//
|
|
205
|
-
//
|
|
206
|
-
|
|
205
|
+
// macOS: template mode — icon-template.png's alpha channel IS the artwork
|
|
206
|
+
// (rounded outline + "10"), so the menu bar tints it to match light/dark
|
|
207
|
+
// appearance. The colored icon.png must NOT be a template (its alpha is a
|
|
208
|
+
// filled square → solid blob), which is why template is darwin-only and
|
|
209
|
+
// paired with the dedicated monochrome asset. Linux panels have no
|
|
210
|
+
// template convention → keep the colored logo.
|
|
211
|
+
isTemplateIcon: process.platform === "darwin",
|
|
207
212
|
title: "",
|
|
208
213
|
tooltip: t("tray.tooltip", { port }),
|
|
209
214
|
items
|
package/src/cli/tray/trayWin.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
const { spawn } = require("child_process");
|
|
1
|
+
const { spawn, execSync } = require("child_process");
|
|
2
2
|
const path = require("path");
|
|
3
|
+
const fs = require("fs");
|
|
3
4
|
const readline = require("readline");
|
|
4
5
|
|
|
5
6
|
// PowerShell-based tray for Windows (AV-safe, zero binary deps)
|
|
@@ -7,6 +8,42 @@ const readline = require("readline");
|
|
|
7
8
|
let psProcess = null;
|
|
8
9
|
let clickHandler = null;
|
|
9
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Windows tray background theme: true = light, false = dark (default).
|
|
13
|
+
* 任务栏颜色跟随「Windows 模式」(SystemUsesLightTheme),不是「应用模式」
|
|
14
|
+
* (AppsUseLightTheme)——自定义主题下两者可不同,优先读任务栏自己的值。
|
|
15
|
+
* Direct registry read — cheap, and works before the PowerShell process starts.
|
|
16
|
+
*/
|
|
17
|
+
function isWindowsLightTheme() {
|
|
18
|
+
const key = 'HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize';
|
|
19
|
+
try {
|
|
20
|
+
const out = execSync(`reg query "${key}" /v SystemUsesLightTheme`, {
|
|
21
|
+
encoding: "utf8", timeout: 2000, windowsHide: true
|
|
22
|
+
});
|
|
23
|
+
return /0x1\b/.test(out);
|
|
24
|
+
} catch (e) { /* fall through to app mode */ }
|
|
25
|
+
try {
|
|
26
|
+
const out = execSync(`reg query "${key}" /v AppsUseLightTheme`, {
|
|
27
|
+
encoding: "utf8", timeout: 2000, windowsHide: true
|
|
28
|
+
});
|
|
29
|
+
return /0x1\b/.test(out);
|
|
30
|
+
} catch (e) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Monochrome tray icon matching the system theme (white glyph on the default
|
|
37
|
+
* dark taskbar, black on light). Falls back to the colored brand icon.
|
|
38
|
+
*/
|
|
39
|
+
function winTrayIconPath() {
|
|
40
|
+
const mono = path.join(__dirname, isWindowsLightTheme() ? "icon-mono-black.ico" : "icon-mono-white.ico");
|
|
41
|
+
try {
|
|
42
|
+
if (fs.existsSync(mono)) return mono;
|
|
43
|
+
} catch (e) {}
|
|
44
|
+
return path.join(__dirname, "icon.ico");
|
|
45
|
+
}
|
|
46
|
+
|
|
10
47
|
/**
|
|
11
48
|
* Send JSON command to PowerShell tray process via stdin
|
|
12
49
|
*/
|
|
@@ -86,4 +123,4 @@ function initWinTray(options) {
|
|
|
86
123
|
};
|
|
87
124
|
}
|
|
88
125
|
|
|
89
|
-
module.exports = { initWinTray };
|
|
126
|
+
module.exports = { initWinTray, isWindowsLightTheme, winTrayIconPath };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(()=>{var a={};a.id=6054,a.ids=[615,1998,6054,8838],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},643:a=>{"use strict";a.exports=require("node:perf_hooks")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},3662:(a,b,c)=>{"use strict";c.d(b,{EQ:()=>f,LY:()=>d,O:()=>e,fh:()=>h,t2:()=>i,wf:()=>g});let d={400:{type:"invalid_request_error",code:"bad_request"},401:{type:"authentication_error",code:"invalid_api_key"},402:{type:"billing_error",code:"payment_required"},403:{type:"permission_error",code:"insufficient_quota"},404:{type:"invalid_request_error",code:"model_not_found"},406:{type:"invalid_request_error",code:"model_not_supported"},429:{type:"rate_limit_error",code:"rate_limit_exceeded"},500:{type:"server_error",code:"internal_server_error"},502:{type:"server_error",code:"bad_gateway"},503:{type:"server_error",code:"service_unavailable"},504:{type:"server_error",code:"gateway_timeout"}},e={400:"Bad request",401:"Invalid API key provided",402:"Payment required",403:"You exceeded your current quota",404:"Model not found",406:"Model not supported",429:"Rate limit exceeded",500:"Internal server error",502:"Bad gateway - upstream provider error",503:"Service temporarily unavailable",504:"Gateway timeout"},f={base:2e3,max:3e5,maxLevel:15},g=3e4,h=18e5,i=[{text:"no credentials",cooldownMs:12e4},{text:"request not allowed",cooldownMs:5e3},{text:"improperly formed request",cooldownMs:12e4},{text:"rate limit",backoff:!0},{text:"too many requests",backoff:!0},{text:"quota exceeded",backoff:!0},{text:"capacity",backoff:!0},{text:"overloaded",backoff:!0},{status:401,cooldownMs:12e4},{status:402,cooldownMs:12e4},{status:403,cooldownMs:12e4},{status:404,cooldownMs:12e4},{status:429,backoff:!0}]},4573:a=>{"use strict";a.exports=require("node:buffer")},8128:a=>{"use strict";a.exports=require("next/dist/server/runtime-reacts.external.js")},8191:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>z,patchFetch:()=>y,routeModule:()=>u,serverHooks:()=>x,workAsyncStorage:()=>v,workUnitAsyncStorage:()=>w});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(37527);let u=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/providers/[id]/json-models/route",pathname:"/api/providers/[id]/json-models",filename:"route",bundlePath:"app/api/providers/[id]/json-models/route"},distDir:".next-cli-build",relativeProjectDir:"",resolvedPagePath:"F:\\Files\\GitHub Files\\10router\\src\\app\\api\\providers\\[id]\\json-models\\route.js",nextConfigOutput:"standalone",userland:()=>c(47092),...{}}),{workAsyncStorage:v,workUnitAsyncStorage:w,serverHooks:x}=u;function y(){return(0,f.patchFetch)({workAsyncStorage:v,workUnitAsyncStorage:w})}async function z(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),u.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/providers/[id]/json-models/route";"/index"===d&&(d="/");let f=await u.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!f)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:v,deploymentId:w,params:x,nextConfig:y,parsedUrl:z,isDraftMode:A,prerenderManifest:B,routerServerContext:C,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,resolvedPathname:F,clientReferenceManifest:G,serverActionsManifest:H}=f,I=(0,j.normalizeAppPath)(d),J=!!(B.dynamicRoutes[I]||B.routes[F]),K=async()=>((null==C?void 0:C.render404)?await C.render404(a,b,z,!1):b.end("This page could not be found"),null);if(J&&!A){let a=!!B.routes[F],b=B.dynamicRoutes[I];if(b&&!1===b.fallback&&!a){if(y.adapterPath)return await K();throw new s.NoFallbackError}}let L=null;!J||u.isDev||A||(L="/index"===(L=F)?"/":L);let M=!0===u.isDev||!J,N=J&&!M;H&&G&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:G,serverActionsManifest:H});let O=a.method||"GET",P=(0,h.getTracer)(),Q=P.getActiveScopeSpan(),R=!!(null==C?void 0:C.isWrappedByNextServer),S=!!(0,g.getRequestMeta)(a,"minimalMode"),T=(0,g.getRequestMeta)(a,"incrementalCache")||await u.getIncrementalCache(a,y,B,S);null==T||T.resetRequestCache(),globalThis.__incrementalCache=T;let U={params:x,previewProps:B.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts,useCacheTimeout:y.experimental.useCacheTimeout},cacheComponents:!!y.cacheComponents,validationLevel:y.experimental.instantInsights.validationLevel,supportsDynamicResponse:M,incrementalCache:T,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:y.cacheLife,staticPageGenerationTimeout:y.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>u.onRequestError(a,b,d,e,C)},sharedContext:{buildId:v,deploymentId:w}},V=new k.NodeNextRequest(a),W=new k.NodeNextResponse(b),X=l.NextRequestAdapter.fromNodeNextRequest(V,(0,l.signalFromNodeResponse)(b)),Y=async({previousCacheEntry:e})=>{try{if(!S&&D&&E&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await u.handle(X,U);a.fetchMetrics=U.renderOpts.fetchMetrics;let f=U.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=U.renderOpts.collectedTags;if(!J)return await (0,o.I)(V,W,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==U.renderOpts.collectedRevalidate&&!(U.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&U.renderOpts.collectedRevalidate,e=void 0===U.renderOpts.collectedExpire||U.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?y.expireTime:void 0:U.renderOpts.collectedExpire;return{value:{kind:t.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await u.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),b}},Z=async(d,f)=>{try{var g,i;let d=await u.handleResponse({req:a,nextConfig:y,cacheKey:L,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:B,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,responseGenerator:Y,waitUntil:c.waitUntil,isMinimalMode:S});if(!J)return;if((null==d||null==(g=d.value)?void 0:g.kind)!==t.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(i=d.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});S||b.setHeader("x-nextjs-cache",D?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),A&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let f=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);S&&J||f.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||f.get("Cache-Control")||f.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(V,W,new Response(d.value.body,{headers:f,status:d.value.status||200}));return}catch(b){if(b instanceof s.NoFallbackError||await u.onRequestError(a,b,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),J)throw b;await (0,o.I)(V,W,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=P.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||I,g=`${O} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":g}),d.updateName(g),f&&f!==d&&(f.setAttribute("http.route",e),f.updateName(g))})()}};if(R&&Q)await Z(Q,void 0);else{let b=P.getActiveScopeSpan();await P.withPropagatedContext(a.headers,()=>P.trace(m.BaseServerSpan.handleRequest,{spanName:`${O} ${d}`,kind:h.SpanKind.SERVER,attributes:{"http.method":O,"http.target":a.url}},a=>Z(a,b)),void 0,!R)}}},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},14985:a=>{"use strict";a.exports=require("dns")},16655:(a,b,c)=>{"use strict";c.d(b,{oF:()=>d.oF,tm:()=>d.tm,vF:()=>d.vF});var d=c(9140)},16698:a=>{"use strict";a.exports=require("node:async_hooks")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},21820:a=>{"use strict";a.exports=require("os")},27910:a=>{"use strict";a.exports=require("stream")},28354:a=>{"use strict";a.exports=require("util")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},32467:a=>{"use strict";a.exports=require("node:http2")},33873:a=>{"use strict";a.exports=require("path")},34589:a=>{"use strict";a.exports=require("node:assert")},37067:a=>{"use strict";a.exports=require("node:http")},37540:a=>{"use strict";a.exports=require("node:console")},38522:a=>{"use strict";a.exports=require("node:zlib")},39326:(a,b,c)=>{"use strict";c.d(b,{B:()=>h,p:()=>g});var d=c(71998);function e(a){return null==a?"":String(a).trim()}let f=new Map;function g(a,b,c){if(!a||0===a.length)return null;if(1===a.length)return a[0];if("round-robin"===b){let b=f.get(c)||{index:-1};return b.index=(b.index+1)%a.length,f.set(c,b),a[b.index]}return"random"===b?a[Math.floor(Math.random()*a.length)]:a[0]}async function h(a={}){try{let b=e(a?.proxyPoolId),c="__none__"===b?"":b,f=function(a={}){let b=a?.connectionProxyEnabled===!0,c=e(a?.connectionProxyUrl);return{connectionProxyEnabled:b,connectionProxyUrl:c,connectionNoProxy:e(a?.connectionNoProxy)}}(a);if(c){let a=await (0,d.hr)(c),b=e(a?.proxyUrl),f=e(a?.noProxy);if(a&&!0===a.isActive&&b){if("vercel"===a.type||"cloudflare"===a.type||"deno"===a.type)return{source:a.type,proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:f,strictProxy:!0===a.strictProxy,vercelRelayUrl:b};return{source:"pool",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!0,connectionProxyUrl:b,connectionNoProxy:f,strictProxy:!0===a.strictProxy}}}if(f.connectionProxyEnabled&&f.connectionProxyUrl)return{source:"legacy",proxyPoolId:c||null,proxyPool:null,...f};return{source:"none",proxyPoolId:c||null,proxyPool:null,...f}}catch(a){return console.error("[resolveConnectionProxyConfig] Failed to resolve proxy config:",a),{source:"error",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:"",strictProxy:!1}}}},39609:(a,b,c)=>{"use strict";c.d(b,{proxyAwareFetch:()=>q});var d=c(27910),e=c(41004);let f=globalThis.fetch,g=new Map,h=new Map,i=["cloudcode-pa.googleapis.com","daily-cloudcode-pa.googleapis.com","api.individual.githubcopilot.com","q.us-east-1.amazonaws.com","codewhisperer.us-east-1.amazonaws.com","api2.cursor.sh"],j=["8.8.8.8","8.8.4.4"];function k(a){return null==a?"":String(a).trim()}async function l(a){let b=h.get(a);if(b&&Date.now()<b.expiry)return b.ip;try{let b=await Promise.resolve().then(c.t.bind(c,14985,23)),{promisify:d}=await Promise.resolve().then(c.t.bind(c,28354,23)),f=new b.Resolver;f.setServers(j);let g=d(f.resolve4.bind(f)),i=await g(a);return h.set(a,{ip:i[0],expiry:Date.now()+e.v1.dnsCacheTtlMs}),i[0]}catch(b){return console.warn(`[ProxyFetch] DNS resolve failed for ${a}:`,b.message),null}}function m(a,b){let c,d=k(b);if(!d)return!1;try{c=new URL(a).hostname.toLowerCase()}catch{return!1}return d.split(",").map(a=>a.trim().toLowerCase()).filter(Boolean).some(a=>"*"===a||(a.startsWith(".")?c.endsWith(a)||c===a.slice(1):c===a||c.endsWith(`.${a}`)))}function n(a){let b=k(a);if(!b)return null;try{return new URL(b),b}catch{return`http://${b}`}}async function o(a){let b=n(a);if(!b)return null;if(!g.has(b)){g.size>=e.v1.proxyDispatchersMaxSize&&g.delete(g.keys().next().value);let{ProxyAgent:a}=await c.e(7774).then(c.t.bind(c,47774,19));g.set(b,new a({uri:b}))}return g.get(b)}async function p(a,b,e){let f=await Promise.resolve().then(c.t.bind(c,55591,23)),g=await Promise.resolve().then(c.t.bind(c,91645,23)),h=f.default??f,i=g.default??g;return new Promise((c,f)=>{let g=new i.Socket;g.connect(443,b,()=>{let b={socket:g,servername:a.hostname,path:a.pathname+a.search,method:e.method||"POST",headers:{...e.headers,Host:a.hostname}},i=h.request(b,a=>{let b={ok:a.statusCode>=200&&a.statusCode<300,status:a.statusCode,statusText:a.statusMessage,headers:new Map(Object.entries(a.headers)),body:d.Readable.toWeb(a),text:async()=>{let b=[];for await(let c of a)b.push(c);return Buffer.concat(b).toString()},json:async()=>JSON.parse(await b.text())};c(b)});i.on("error",f),e.body&&i.write("string"==typeof e.body?e.body:JSON.stringify(e.body)),i.end()}),g.on("error",f)})}async function q(a,b={},c=null){let d="string"==typeof a?a:a.toString(),e=k(c?.vercelRelayUrl);if(e){let a=new URL(d),c={...b.headers,"x-relay-target":`${a.protocol}//${a.host}`,"x-relay-path":`${a.pathname}${a.search}`};return f(e,{...b,headers:c})}let g=function(a,b){if(b?.enabled!==!0&&b?.connectionProxyEnabled!==!0)return null;let c=k(b?.url??b?.connectionProxyUrl);if(!c)return null;let d=k(b?.noProxy??b?.connectionNoProxy);return d&&m(a,d)?null:n(c)}(d,c),h=g?null:n(function(a){let b;if(m(a,process.env.NO_PROXY||process.env.no_proxy))return null;try{b=new URL(a).protocol}catch{return null}return"https:"===b?process.env.HTTPS_PROXY||process.env.https_proxy||process.env.ALL_PROXY||process.env.all_proxy:process.env.HTTP_PROXY||process.env.http_proxy||process.env.ALL_PROXY||process.env.all_proxy}(d)),j=g||h;if(function(a){try{let b=new URL(a).hostname;return i.some(a=>b.includes(a))}catch{return!1}}(d)){if(j)try{let c=await o(j);return await f(a,{...b,dispatcher:c})}catch(a){if(c?.strictProxy===!0)throw Error(`[ProxyFetch] Proxy required but failed (strictProxy=true): ${a.message}`);console.warn(`[ProxyFetch] Proxy failed, falling back to direct bypass: ${a.message}`)}try{let a=new URL(d),c=await l(a.hostname);if(c)return await p(a,c,b)}catch(a){console.warn(`[ProxyFetch] MITM bypass failed: ${a.message}`)}}if(j)try{let c=await o(j);return await f(a,{...b,dispatcher:c})}catch(a){if(c?.strictProxy===!0)throw Error(`[ProxyFetch] Proxy required but failed (strictProxy=true): ${a.message}`);console.warn(`[ProxyFetch] Proxy failed, falling back to direct: ${a.message}`)}return f(a,b)}async function r(a,b={}){return q(a,b,null)}globalThis.fetch!==r&&(globalThis.fetch=r)},40610:a=>{"use strict";a.exports=require("node:dns")},40615:(a,b,c)=>{"use strict";c.d(b,{AI_PROVIDERS:()=>s,js:()=>w,DI:()=>n,fg:()=>k,Pd:()=>o,IS:()=>h,nJ:()=>i,zN:()=>j,JH:()=>m,jO:()=>y,wb:()=>x,br:()=>l,wG:()=>v,zt:()=>t,gb:()=>q,gC:()=>r,mq:()=>p,rs:()=>u});var d=c(59463);let e="⚠️ Risk Notice: This provider uses a subscription/OAuth session not officially licensed for proxy/router use. Account may be restricted or banned. Use at your own risk.";Object.fromEntries(d.A.filter(a=>a.display).map(a=>{let b;return[a.id,"RISK_NOTICE"===(b=a.display).deprecationNotice?{...b,deprecationNotice:e}:b]}));let f=["serviceKinds","ttsConfig","sttConfig","embeddingConfig","imageConfig","imageToTextConfig","videoConfig","musicConfig","searchViaChat","searchConfig","fetchConfig","credentialFallback","modelsFetcher","mediaPriority","hiddenKinds"],g=a=>Object.fromEntries(d.A.filter(b=>b.category===a).map(a=>[a.id,function(a){let b={};for(let c of(a.media&&Object.assign(b,a.media),f))void 0!==a[c]&&(b[c]=a[c]);let c={...a.display||{}};return"RISK_NOTICE"===c.deprecationNotice&&(c.deprecationNotice=e),{...c,id:a.id,alias:a.uiAlias||a.alias,...a.hidden?{hidden:!0}:{},...a.topologyHiddenByDefault?{topologyHiddenByDefault:!0}:{},...b,...void 0!==a.priority?{priority:a.priority}:{},...a.hasFree?{hasFree:!0}:{},...a.thinkingConfig?{thinkingConfig:a.thinkingConfig}:{},...a.regions?{regions:a.regions,defaultRegion:a.defaultRegion}:{},...a.hasProviderSpecificData?{hasProviderSpecificData:!0}:{},...a.noAuth?{noAuth:!0}:{},...a.passthroughModels?{passthroughModels:!0}:{},...a.community?{community:!0}:{},...a.hasOAuth?{hasOAuth:!0}:{},...a.authModes?{authModes:a.authModes}:{},...a.authType?{authType:a.authType}:{},...a.authHint?{authHint:a.authHint}:{},...a.modelsJsonUrl?{modelsJsonUrl:a.modelsJsonUrl}:{},...a.fallbackModelsJsonUrl?{fallbackModelsJsonUrl:a.fallbackModelsJsonUrl}:{}}}(a)])),h=g("free"),i=g("freeTier"),j=g("oauth"),k=g("apikey"),l=g("webCookie"),m="openai-compatible-",n="anthropic-compatible-",o="custom-embedding-";function p(a){return"string"==typeof a&&a.startsWith(m)}function q(a){return"string"==typeof a&&a.startsWith(n)}function r(a){return"string"==typeof a&&a.startsWith(o)}let s={...h,...i,...j,...k,...l};function t(a){for(let b of Object.values(s))if(b.alias===a||b.id===a)return b;return null}function u(a){let b=t(a);return b?.id||a}function v(a){let b=s[a];return b?.alias||a}let w=Object.values(s).reduce((a,b)=>(a[b.alias]=b.id,a),{});Object.values(s).reduce((a,b)=>(a[b.id]=b.alias,a),{});let x=d.A.filter(a=>a.features?.usage).map(a=>a.id),y=d.A.filter(a=>a.features?.usageApikey).map(a=>a.id)},41692:a=>{"use strict";a.exports=require("node:tls")},41792:a=>{"use strict";a.exports=require("node:querystring")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46293:a=>{"use strict";a.exports=require("sql.js")},47092:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GET:()=>l,POST:()=>m,PUT:()=>n});var d=c(23211),e=c(40615),f=c(71998),g=c(39609),h=c(39326),i=c(16655);async function j(a,b,c=null){let d,e={Accept:"application/json"};c&&(e.Authorization=`Bearer ${c}`);try{d=await (0,g.proxyAwareFetch)(a,{method:"GET",headers:e,cache:"no-store"},b)}catch(a){throw Object.assign(Error(`Failed to reach model JSON: ${a.message}`),{status:502})}if(!d.ok)throw Object.assign(Error(`Model JSON returned HTTP ${d.status}`),{status:502});let f=await d.json().catch(()=>null);if(!f)throw Object.assign(Error("Invalid model JSON response"),{status:502});let h,i=f;if(f&&"string"==typeof f.content&&"base64"===f.encoding&&(i=JSON.parse(Buffer.from(f.content,"base64").toString("utf8"))),i&&Array.isArray(i.models))h=i.models;else if(i&&Array.isArray(i.data))h=i.data.map(a=>"string"==typeof a?{id:a}:a);else throw Object.assign(Error("Invalid model JSON: expected { models: [...] } or { data: [...] }"),{status:502});return h.filter(a=>a&&"object"==typeof a&&"string"==typeof a.id&&""!==a.id.trim()).map(a=>{let b={id:a.id.trim(),name:"string"==typeof a.name&&a.name.trim()?a.name.trim():a.id.trim(),type:"string"==typeof a.type&&a.type.trim()?a.type.trim():"llm"};return"boolean"==typeof a.vision&&(b.vision=a.vision),"boolean"==typeof a.reasoning&&(b.reasoning=a.reasoning),"number"==typeof a.contextWindow&&Number.isFinite(a.contextWindow)&&(b.contextWindow=a.contextWindow),"number"==typeof a.maxOutput&&Number.isFinite(a.maxOutput)&&(b.maxOutput=a.maxOutput),"string"==typeof a.thinkingFormat&&a.thinkingFormat.trim()&&(b.thinkingFormat=a.thinkingFormat.trim()),b})}async function k(a){let b=e.AI_PROVIDERS[a]?.modelsJsonUrl,c=e.AI_PROVIDERS[a]?.fallbackModelsJsonUrl;if(!b){let d=await (0,f.Qu)(a).catch(()=>null);b=d?.modelsJsonUrl||"",c=d?.fallbackModelsJsonUrl||""}if(!b)throw Object.assign(Error("Provider does not expose a model JSON source"),{status:400});let d=await (0,f.P)({provider:a,isActive:!0}),g=d.length?await (0,h.B)(d[0].providerSpecificData||{}):{},i=!(b.startsWith("https://raw.githubusercontent.com")||b.startsWith("https://api.github.com")||b.startsWith("https://gitee.com"))&&d[0]?.apiKey?d[0].apiKey:null;try{return{models:await j(b,g,i),source:b}}catch(b){let a=c;if(a)try{return{models:await j(a,g,i),source:a}}catch(a){throw Object.assign(Error(`Primary source failed (${b.message}); fallback also failed (${a.message})`),{status:502})}throw b}}async function l(a,{params:b}){try{let{id:a}=await b,{models:c}=await k(a),e=await (0,f.iX)(a),g=new Map((e||[]).map(a=>[a.id,a]));for(let a of c){let b=g.get(a.id);b&&(a.enabled=b.enabled)}return d.NextResponse.json({models:c})}catch(a){return d.NextResponse.json({error:a.message||"Failed to fetch provider model JSON"},{status:a.status||500})}}async function m(a,{params:b}){try{let{id:a}=await b,{models:c}=await k(a);if(0===c.length)return d.NextResponse.json({error:"No models returned"},{status:422});let e=await (0,f.iX)(a),g=new Set((e||[]).filter(a=>!1!==a.enabled).map(a=>a.id));for(let a of c)!a.enabled&&g.has(a.id)?a.enabled=!0:void 0===a.enabled&&(a.enabled=g.has(a.id));await (0,f.kW)(a,c);let h=c.filter(a=>g.has(a.id)).length;return d.NextResponse.json({models:c,added:h,total:c.length})}catch(a){return d.NextResponse.json({error:a.message||"Failed to import provider model JSON"},{status:a.status||500})}}async function n(a,{params:b}){try{let{id:c}=await b,{modelId:g,enabled:h,all:j}=await a.json();if("boolean"!=typeof h)return d.NextResponse.json({error:"enabled (boolean) required"},{status:400});if(!0===j){let a=await (0,f.Oo)(c,h);if(h){await (0,i.oF)(c,[]);let a=(0,e.wG)(c);a&&a!==c&&await (0,i.oF)(a,[])}return d.NextResponse.json({success:!0,changed:a})}if(!g)return d.NextResponse.json({error:"modelId required (or all: true for bulk)"},{status:400});let k=await (0,f.FS)(c,g,h);if(h){await (0,i.oF)(c,[g]);let a=(0,e.wG)(c);a&&a!==c&&await (0,i.oF)(a,[g])}return d.NextResponse.json({success:!0,changed:k})}catch(a){return d.NextResponse.json({error:a.message||"Failed to update provider model JSON"},{status:a.status||500})}}},50122:(a,b,c)=>{"use strict";c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}},51455:a=>{"use strict";a.exports=require("node:fs/promises")},53053:a=>{"use strict";a.exports=require("node:diagnostics_channel")},55511:a=>{"use strict";a.exports=require("crypto")},55591:a=>{"use strict";a.exports=require("https")},57075:a=>{"use strict";a.exports=require("node:stream")},57975:a=>{"use strict";a.exports=require("node:util")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},71998:(a,b,c)=>{"use strict";c.d(b,{FS:()=>d.FS,Fh:()=>d.Fh,L9:()=>d.L9,Mc:()=>d.Mc,OM:()=>d.OM,Oo:()=>d.Oo,P:()=>d.getProviderConnections,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,createProviderConnection:()=>d.iE,fK:()=>d.fK,fv:()=>d.fv,h1:()=>d.h1,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iX:()=>d.iX,kW:()=>d.kW,o5:()=>d.o5,op:()=>d.op,rj:()=>d.updateProviderConnection,uL:()=>d.uL,ui:()=>d.ui,uv:()=>d.uv});var d=c(89718)},73024:a=>{"use strict";a.exports=require("node:fs")},73136:a=>{"use strict";a.exports=require("node:url")},73429:a=>{"use strict";a.exports=require("node:util/types")},75919:a=>{"use strict";a.exports=require("node:worker_threads")},76760:a=>{"use strict";a.exports=require("node:path")},77030:a=>{"use strict";a.exports=require("node:net")},77598:a=>{"use strict";a.exports=require("node:crypto")},78335:()=>{},78474:a=>{"use strict";a.exports=require("node:events")},79868:a=>{"use strict";a.exports=require("node:sqlite")},81787:a=>{"use strict";a.exports=require("bun:sqlite")},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{"use strict";a.exports=require("better-sqlite3")},87997:a=>{"use strict";a.exports=require("node:timers")},89718:(a,b,c)=>{"use strict";c.d(b,{CG:()=>d.CG,Dj:()=>d.Dj,FS:()=>d.FS,Fh:()=>d.Fh,Iq:()=>d.Iq,K1:()=>d.K1,KJ:()=>d.KJ,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,Mc:()=>d.Mc,OM:()=>d.OM,Oo:()=>d.Oo,PX:()=>d.PX,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Uv:()=>d.Uv,VT:()=>d.VT,XW:()=>d.XW,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,bI:()=>d.bI,c:()=>d.c,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,getProviderConnections:()=>d.P,getSettings:()=>d.mt,h1:()=>d.h1,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,iX:()=>d.iX,jd:()=>d.jd,kW:()=>d.kW,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,r4:()=>d.r4,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,uv:()=>d.uv,yF:()=>d.yF,yg:()=>d.yg,zP:()=>d.zP});var d=c(9140)},91645:a=>{"use strict";a.exports=require("net")},94735:a=>{"use strict";a.exports=require("events")},94755:(a,b,c)=>{"use strict";c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length;var h=c(50122);let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return(0,h.k)(k)}},96487:()=>{}};var b=require("../../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,1813,9703,9140,9463],()=>b(b.s=8191));module.exports=c})();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/api/providers/[id]/json-models/route"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{},"edgeSSRModuleMapping":{},"clientModules":{},"entryCSSFiles":{"F:\\Files\\GitHub Files\\10router\\src\\app\\api\\providers\\[id]\\json-models\\route":[]},"rscModuleMapping":{},"edgeRscModuleMapping":{}};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=1129,exports.ids=[1129],exports.modules={1129:(a,b,c)=>{c.r(b),c.d(b,{createProviderNode:()=>k,deleteProviderNode:()=>m,getProviderNodeById:()=>j,getProviderNodes:()=>i,updateProviderNode:()=>l});var d=c(94755),e=c(36366),f=c(644);function g(a){return a?{...(0,f.q)(a.data,{}),id:a.id,type:a.type,name:a.name,createdAt:a.createdAt,updatedAt:a.updatedAt}:null}function h(a,b){let c=function(a){let{id:b,type:c,name:d,createdAt:e,updatedAt:g,...h}=a;return{id:b,type:c??null,name:d??null,data:(0,f.s)(h),createdAt:e,updatedAt:g}}(b);a.run(`INSERT INTO providerNodes(id, type, name, data, createdAt, updatedAt)
|
|
2
|
-
VALUES(?, ?, ?, ?, ?, ?)
|
|
3
|
-
ON CONFLICT(id) DO UPDATE SET
|
|
4
|
-
type=excluded.type, name=excluded.name, data=excluded.data, updatedAt=excluded.updatedAt`,[c.id,c.type,c.name,c.data,c.createdAt,c.updatedAt])}async function i(a={}){let b=await (0,e.c)(),c=[],d=[];a.type&&(c.push("type = ?"),d.push(a.type));let f=`SELECT * FROM providerNodes${c.length?` WHERE ${c.join(" AND ")}`:""}`;return b.all(f,d).map(g)}async function j(a){return g((await (0,e.c)()).get("SELECT * FROM providerNodes WHERE id = ?",[a]))}async function k(a){let b=await (0,e.c)(),c=new Date().toISOString(),f={id:a.id||(0,d.A)(),type:a.type,name:a.name,prefix:a.prefix,apiType:a.apiType,baseUrl:a.baseUrl,createdAt:c,updatedAt:c};return h(b,f),f}async function l(a,b){let c=await (0,e.c)(),d=null;return c.transaction(()=>{let e=c.get("SELECT * FROM providerNodes WHERE id = ?",[a]);if(!e)return;let f={...g(e),...b,updatedAt:new Date().toISOString()};h(c,f),d=f}),d}async function m(a){let b=await (0,e.c)(),c=null;return b.transaction(()=>{let d=b.get("SELECT * FROM providerNodes WHERE id = ?",[a]);d&&(c=g(d),b.run("DELETE FROM providerNodes WHERE id = ?",[a]))}),c}},50122:(a,b,c)=>{c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}},94755:(a,b,c)=>{c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length;var h=c(50122);let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return(0,h.k)(k)}}};
|