@thangnm.nip/irouter 0.0.9 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/.next/BUILD_ID +1 -1
- package/app/.next/app-path-routes-manifest.json +11 -9
- package/app/.next/build-manifest.json +4 -4
- package/app/.next/prerender-manifest.json +27 -3
- package/app/.next/required-server-files.json +6 -3
- package/app/.next/routes-manifest.json +12 -0
- package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -0
- package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -0
- package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -0
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/employees/[keyId]/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/employees/[keyId]/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/employees/[keyId]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/employees/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/employees/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/employees/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/quota/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error/page.js +3 -3
- package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error.html +1 -1
- package/app/.next/server/app/_global-error.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/_not-found/page.js +2 -2
- package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_not-found.html +1 -1
- package/app/.next/server/app/_not-found.rsc +5 -4
- package/app/.next/server/app/_not-found.segments/_full.segment.rsc +5 -4
- package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_index.segment.rsc +5 -4
- package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +3 -2
- package/app/.next/server/app/api/auth/login/route.js +1 -1
- package/app/.next/server/app/api/auth/login/route.js.nft.json +1 -1
- package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/auth/logout/route.js +1 -1
- package/app/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/copilot-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/copilot-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/droid-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/opencode-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/opencode-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/auth/route.js +1 -1
- package/app/.next/server/app/api/cloud/auth/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route.js +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route.js +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route.js +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/[id]/route.js +1 -1
- package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/route.js +1 -1
- package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/employees/[keyId]/stats/route.js +66 -1
- package/app/.next/server/app/api/employees/[keyId]/stats/route.js.nft.json +1 -1
- package/app/.next/server/app/api/employees/[keyId]/stats/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/employees/stats/route.js +66 -1
- package/app/.next/server/app/api/employees/stats/route.js.nft.json +1 -1
- package/app/.next/server/app/api/employees/stats/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/init/route.js +1 -1
- package/app/.next/server/app/api/init/route.js.nft.json +1 -1
- package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/keys/[id]/route.js +1 -1
- package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/keys/route.js +1 -1
- package/app/.next/server/app/api/keys/route.js.nft.json +1 -1
- package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/locale/route.js +1 -1
- package/app/.next/server/app/api/locale/route.js.nft.json +1 -1
- package/app/.next/server/app/api/locale/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/alias/route.js +1 -1
- package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/availability/route.js +1 -0
- package/app/.next/server/app/api/models/availability/route.js.nft.json +1 -0
- package/app/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/models/route.js +1 -1
- package/app/.next/server/app/api/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/test/route.js +1 -1
- package/app/.next/server/app/api/models/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +2 -2
- package/app/.next/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/iflow/cookie/route.js +1 -1
- package/app/.next/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/iflow/cookie/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/pricing/route.js +1 -1
- package/app/.next/server/app/api/pricing/route.js.nft.json +1 -1
- package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/route.js +1 -1
- package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/validate/route.js +1 -1
- package/app/.next/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test-models/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/test-models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/client/route.js +1 -1
- package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/route.js +1 -1
- package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
- package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/validate/route.js +1 -1
- package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/proxy-pools/[id]/route.js +1 -1
- package/app/.next/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/proxy-pools/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/proxy-pools/[id]/test/route.js +1 -1
- package/app/.next/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/proxy-pools/[id]/test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/proxy-pools/route.js +1 -1
- package/app/.next/server/app/api/proxy-pools/route.js.nft.json +1 -1
- package/app/.next/server/app/api/proxy-pools/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/database/route.js +1 -1
- package/app/.next/server/app/api/settings/database/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/database/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/proxy-test/route.js +1 -1
- package/app/.next/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/proxy-test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/require-login/route.js +1 -1
- package/app/.next/server/app/api/settings/require-login/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/route.js +1 -1
- package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/shutdown/route.js +1 -1
- package/app/.next/server/app/api/shutdown/route.js.nft.json +1 -1
- package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/tags/route.js +1 -1
- package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/console-logs/route.js +1 -1
- package/app/.next/server/app/api/translator/console-logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/console-logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/console-logs/stream/route.js +2 -2
- package/app/.next/server/app/api/translator/console-logs/stream/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/load/route.js +1 -1
- package/app/.next/server/app/api/translator/load/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/save/route.js +1 -1
- package/app/.next/server/app/api/translator/save/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/send/route.js +1 -1
- package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/translate/route.js +1 -1
- package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/tunnel/disable/route.js +1 -1
- package/app/.next/server/app/api/tunnel/disable/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnel/disable/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/tunnel/enable/route.js +1 -1
- package/app/.next/server/app/api/tunnel/enable/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnel/enable/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/tunnel/status/route.js +1 -1
- package/app/.next/server/app/api/tunnel/status/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnel/status/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/chart/route.js +66 -1
- package/app/.next/server/app/api/usage/chart/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/chart/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/history/route.js +66 -1
- package/app/.next/server/app/api/usage/history/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/logs/route.js +66 -1
- package/app/.next/server/app/api/usage/logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/providers/route.js +66 -1
- package/app/.next/server/app/api/usage/providers/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/providers/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/request-details/[id]/route.js +1 -1
- package/app/.next/server/app/api/usage/request-details/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/request-details/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/request-details/route.js +66 -1
- package/app/.next/server/app/api/usage/request-details/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/request-details/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/request-logs/route.js +66 -1
- package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/stats/route.js +66 -1
- package/app/.next/server/app/api/usage/stats/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/stats/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/stream/route.js +69 -4
- package/app/.next/server/app/api/usage/stream/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/stream/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
- package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
- package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
- package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/messages/route.js +1 -1
- package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/models/route.js +1 -1
- package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/responses/route.js +1 -1
- package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/route.js +1 -1
- package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1beta/models/route.js +1 -1
- package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1internal/route.js +1 -1
- package/app/.next/server/app/api/v1internal/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1internal/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/version/route.js +1 -1
- package/app/.next/server/app/api/version/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/callback/page.js +2 -2
- package/app/.next/server/app/callback/page.js.nft.json +1 -1
- package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/callback.html +1 -1
- package/app/.next/server/app/callback.rsc +6 -5
- package/app/.next/server/app/callback.segments/_full.segment.rsc +6 -5
- package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/_index.segment.rsc +5 -4
- package/app/.next/server/app/callback.segments/_tree.segment.rsc +3 -2
- package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/basic-chat.html +1 -0
- package/app/.next/server/app/dashboard/basic-chat.meta +17 -0
- package/app/.next/server/app/dashboard/basic-chat.rsc +24 -0
- package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +6 -0
- package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +5 -0
- package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +5 -0
- package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +6 -0
- package/app/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +24 -0
- package/app/.next/server/app/dashboard/basic-chat.segments/_head.segment.rsc +6 -0
- package/app/.next/server/app/dashboard/basic-chat.segments/_index.segment.rsc +9 -0
- package/app/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +6 -0
- package/app/.next/server/app/dashboard/cli-tools.html +1 -1
- package/app/.next/server/app/dashboard/cli-tools.rsc +8 -7
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +8 -7
- package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +5 -4
- package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +3 -2
- package/app/.next/server/app/dashboard/combos.html +1 -1
- package/app/.next/server/app/dashboard/combos.rsc +7 -6
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +7 -6
- package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +5 -4
- package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +3 -2
- package/app/.next/server/app/dashboard/employees.html +1 -1
- package/app/.next/server/app/dashboard/employees.rsc +7 -6
- package/app/.next/server/app/dashboard/employees.segments/!KGRhc2hib2FyZCk/dashboard/employees/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/employees.segments/!KGRhc2hib2FyZCk/dashboard/employees.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/employees.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/employees.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/employees.segments/_full.segment.rsc +7 -6
- package/app/.next/server/app/dashboard/employees.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/employees.segments/_index.segment.rsc +5 -4
- package/app/.next/server/app/dashboard/employees.segments/_tree.segment.rsc +3 -2
- package/app/.next/server/app/dashboard/endpoint.html +1 -1
- package/app/.next/server/app/dashboard/endpoint.rsc +8 -7
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +8 -7
- package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +5 -4
- package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +3 -2
- package/app/.next/server/app/dashboard/mitm.html +1 -1
- package/app/.next/server/app/dashboard/mitm.rsc +7 -6
- package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +7 -6
- package/app/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +5 -4
- package/app/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +3 -2
- package/app/.next/server/app/dashboard/profile.html +1 -1
- package/app/.next/server/app/dashboard/profile.rsc +7 -6
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +7 -6
- package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +5 -4
- package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +3 -2
- package/app/.next/server/app/dashboard/providers/new.html +1 -1
- package/app/.next/server/app/dashboard/providers/new.rsc +7 -6
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +7 -6
- package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +5 -4
- package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +3 -2
- package/app/.next/server/app/dashboard/providers.html +1 -1
- package/app/.next/server/app/dashboard/providers.rsc +7 -6
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +7 -6
- package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +5 -4
- package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +3 -2
- package/app/.next/server/app/dashboard/proxy-pools.html +1 -1
- package/app/.next/server/app/dashboard/proxy-pools.rsc +7 -6
- package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +7 -6
- package/app/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +5 -4
- package/app/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +3 -2
- package/app/.next/server/app/dashboard/quota.html +2 -2
- package/app/.next/server/app/dashboard/quota.rsc +8 -7
- package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
- package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/quota.segments/_full.segment.rsc +8 -7
- package/app/.next/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/quota.segments/_index.segment.rsc +5 -4
- package/app/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +3 -2
- package/app/.next/server/app/dashboard/settings/pricing/page.js +2 -2
- package/app/.next/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
- package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.rsc +6 -5
- package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +6 -5
- package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +5 -4
- package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +3 -2
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.html +1 -1
- package/app/.next/server/app/dashboard/translator.rsc +7 -6
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +7 -6
- package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +5 -4
- package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +3 -2
- package/app/.next/server/app/dashboard/usage.html +1 -1
- package/app/.next/server/app/dashboard/usage.rsc +7 -6
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +7 -6
- package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +5 -4
- package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +3 -2
- package/app/.next/server/app/dashboard.html +1 -1
- package/app/.next/server/app/dashboard.rsc +6 -5
- package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard.segments/_full.segment.rsc +6 -5
- package/app/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard.segments/_index.segment.rsc +5 -4
- package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +3 -2
- package/app/.next/server/app/favicon.ico/route.js +1 -1
- package/app/.next/server/app/favicon.ico/route.js.nft.json +1 -1
- package/app/.next/server/app/index.html +1 -1
- package/app/.next/server/app/index.rsc +5 -4
- package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_full.segment.rsc +5 -4
- package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_index.segment.rsc +5 -4
- package/app/.next/server/app/index.segments/_tree.segment.rsc +3 -2
- package/app/.next/server/app/landing/page.js +2 -2
- package/app/.next/server/app/landing/page.js.nft.json +1 -1
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/landing.html +1 -1
- package/app/.next/server/app/landing.rsc +6 -5
- package/app/.next/server/app/landing.segments/_full.segment.rsc +6 -5
- package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/landing.segments/_index.segment.rsc +5 -4
- package/app/.next/server/app/landing.segments/_tree.segment.rsc +3 -2
- package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
- package/app/.next/server/app/login/page.js +2 -2
- package/app/.next/server/app/login/page.js.nft.json +1 -1
- package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login.html +1 -1
- package/app/.next/server/app/login.rsc +6 -5
- package/app/.next/server/app/login.segments/_full.segment.rsc +6 -5
- package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/login.segments/_index.segment.rsc +5 -4
- package/app/.next/server/app/login.segments/_tree.segment.rsc +3 -2
- package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/app/.next/server/app/manifest.webmanifest/route.js +2 -2
- package/app/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/app/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/page.js +2 -2
- package/app/.next/server/app/page.js.nft.json +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app-paths-manifest.json +11 -9
- package/app/.next/server/chunks/1130.js +1 -1
- package/app/.next/server/chunks/118.js +1 -0
- package/app/.next/server/chunks/1220.js +1 -1
- package/app/.next/server/chunks/1424.js +1 -1
- package/app/.next/server/chunks/2664.js +1 -0
- package/app/.next/server/chunks/3093.js +72 -7
- package/app/.next/server/chunks/336.js +66 -1
- package/app/.next/server/chunks/412.js +2 -2
- package/app/.next/server/chunks/5270.js +1 -1
- package/app/.next/server/chunks/5708.js +1 -0
- package/app/.next/server/chunks/6072.js +43 -0
- package/app/.next/server/chunks/6182.js +4 -4
- package/app/.next/server/chunks/63.js +3 -3
- package/app/.next/server/chunks/649.js +1 -1
- package/app/.next/server/chunks/6828.js +1 -1
- package/app/.next/server/chunks/7774.js +2 -2
- package/app/.next/server/chunks/8895.js +2 -2
- package/app/.next/server/chunks/9201.js +1 -1
- package/app/.next/server/chunks/9718.js +1 -1
- package/app/.next/server/middleware-build-manifest.js +1 -1
- package/app/.next/server/middleware.js +3 -3
- package/app/.next/server/next-font-manifest.js +1 -1
- package/app/.next/server/next-font-manifest.json +1 -1
- package/app/.next/server/pages/404.html +1 -1
- package/app/.next/server/pages/500.html +1 -1
- package/app/.next/server/server-reference-manifest.js +1 -1
- package/app/.next/server/server-reference-manifest.json +1 -1
- package/app/.next/static/9Nr3N83B_j66eng2tH-u9/_buildManifest.js +1 -0
- package/app/.next/static/chunks/5242-250aca99680a5860.js +1 -0
- package/app/.next/static/chunks/5497-c246d6c185ae4515.js +7 -0
- package/app/.next/static/chunks/5772-901f1092d831ec37.js +3 -0
- package/app/.next/static/chunks/6902-135c924f2deafe46.js +1 -0
- package/app/.next/static/chunks/{9242-b33771537db21368.js → 9242-35c67551a31e8ed3.js} +2 -2
- package/app/.next/static/chunks/app/(dashboard)/dashboard/basic-chat/page-dbf8fae8c8837130.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-89c2a22ca02ca0d8.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-db322270ec972db0.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/console-log/page-7b0d61cbbe1a47c2.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/employees/[keyId]/page-260c2e244f08d44e.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/employees/page-1186beab09df32f8.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/{page-5c259d7d447b6aee.js → page-11d04ce754400525.js} +2 -2
- package/app/.next/static/chunks/app/(dashboard)/dashboard/mitm/{page-2346c1fbdc93e171.js → page-7bb014b116bacd70.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/page-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-f113b1a6fd5bf364.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-4d697847e773ee9f.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/{page-f38b4a179ec6ebeb.js → page-7d54c03780f36a77.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-07b03df6908bbfc0.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/proxy-pools/{page-e4f676cf79e465b1.js → page-5268c095e868ce3d.js} +2 -2
- package/app/.next/static/chunks/app/(dashboard)/dashboard/quota/page-f33a92ade5e4806e.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/page-2bb6f99a3d1d9206.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-527700ed764617bf.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/{layout-0c70201c7bb15ab5.js → layout-fc4ee3669b9e2432.js} +1 -1
- package/app/.next/static/chunks/app/_global-error/page-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/_not-found/page-277ff0ac5be7dff3.js +1 -0
- package/app/.next/static/chunks/app/api/auth/login/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/auth/logout/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/auth/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/credentials/update/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/model/resolve/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/models/alias/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/combos/[id]/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/combos/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/employees/[keyId]/stats/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/employees/stats/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/init/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/keys/[id]/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/keys/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/locale/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/models/alias/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/models/availability/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/models/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/models/test/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/import/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/import/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/pricing/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/validate/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/models/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/test/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/providers/client/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/providers/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/providers/test-batch/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/providers/validate/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/proxy-pools/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/settings/database/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/settings/proxy-test/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/settings/require-login/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/settings/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/shutdown/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/tags/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/translator/console-logs/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/translator/load/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/translator/save/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/translator/send/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/translator/translate/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/disable/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/enable/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/tunnel/status/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/usage/[connectionId]/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/usage/chart/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/usage/history/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/usage/logs/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/usage/providers/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/usage/request-details/[id]/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/usage/request-details/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/usage/request-logs/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/usage/stats/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/usage/stream/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/v1/api/chat/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/v1/chat/completions/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/v1/embeddings/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/v1/responses/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/v1/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/v1internal/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/api/version/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/callback/{page-9d25f25730ec1a87.js → page-a288ef2f47fd5eb3.js} +1 -1
- package/app/.next/static/chunks/app/dashboard/settings/pricing/{page-107a395e4ebca682.js → page-f94017840394ebe8.js} +1 -1
- package/app/.next/static/chunks/app/landing/page-1d109564bc0bc007.js +1 -0
- package/app/.next/static/chunks/app/{layout-6082abcad2996e50.js → layout-372932853e1ca466.js} +1 -1
- package/app/.next/static/chunks/app/login/page-60dcddda96a06c28.js +1 -0
- package/app/.next/static/chunks/app/manifest.webmanifest/route-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/app/page-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/{main-app-d65284096ddebd50.js → main-app-825c409f56c59467.js} +1 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/global-error-45c792615bbed600.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-bc93a8fd4c287f29.js +1 -0
- package/app/.next/static/chunks/{webpack-1094c4a28660424b.js → webpack-a2cf08368369c277.js} +1 -1
- package/app/.next/static/css/081a0afca5a9bd20.css +1 -0
- package/app/.next/static/css/bc7b15f1fd95fc16.css +1 -0
- package/app/i18n/README.ja-JP.md +1209 -0
- package/app/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
- package/app/node_modules/better-sqlite3/lib/database.js +90 -0
- package/app/node_modules/better-sqlite3/lib/index.js +3 -0
- package/app/node_modules/better-sqlite3/lib/methods/aggregate.js +43 -0
- package/app/node_modules/better-sqlite3/lib/methods/backup.js +67 -0
- package/app/node_modules/better-sqlite3/lib/methods/function.js +31 -0
- package/app/node_modules/better-sqlite3/lib/methods/inspect.js +7 -0
- package/app/node_modules/better-sqlite3/lib/methods/pragma.js +12 -0
- package/app/node_modules/better-sqlite3/lib/methods/serialize.js +16 -0
- package/app/node_modules/better-sqlite3/lib/methods/table.js +189 -0
- package/app/node_modules/better-sqlite3/lib/methods/transaction.js +78 -0
- package/app/node_modules/better-sqlite3/lib/methods/wrappers.js +54 -0
- package/app/node_modules/better-sqlite3/lib/sqlite-error.js +20 -0
- package/app/node_modules/better-sqlite3/lib/util.js +12 -0
- package/app/node_modules/better-sqlite3/package.json +59 -0
- package/app/node_modules/bindings/bindings.js +221 -0
- package/app/node_modules/bindings/package.json +28 -0
- package/app/node_modules/file-uri-to-path/index.js +66 -0
- package/app/node_modules/file-uri-to-path/package.json +32 -0
- package/app/open-sse/executors/iflow.js +5 -1
- package/app/open-sse/handlers/chatCore/nonStreamingHandler.js +10 -0
- package/app/open-sse/handlers/chatCore/sseToJsonHandler.js +61 -4
- package/app/open-sse/services/accountFallback.js +6 -0
- package/app/open-sse/services/combo.js +59 -7
- package/app/open-sse/translator/helpers/geminiHelper.js +9 -1
- package/app/open-sse/translator/request/openai-to-claude.js +5 -0
- package/app/open-sse/translator/request/openai-to-gemini.js +4 -2
- package/app/open-sse/translator/request/openai-to-kiro.js +32 -19
- package/app/open-sse/translator/response/openai-responses.js +6 -3
- package/app/package.json +3 -2
- package/app/public/providers/assemblyai.png +0 -0
- package/app/public/providers/deepgram.png +0 -0
- package/app/public/providers/hyperbolic.png +0 -0
- package/app/public/providers/nanobanana.png +0 -0
- package/app/server.js +1 -1
- package/package.json +1 -1
- package/app/.next/server/chunks/4755.js +0 -1
- package/app/.next/server/chunks/4989.js +0 -2
- package/app/.next/server/chunks/5984.js +0 -1
- package/app/.next/server/chunks/6649.js +0 -1
- package/app/.next/server/chunks/6836.js +0 -1
- package/app/.next/static/TtuiNIABr9XFPbvw-LhhA/_buildManifest.js +0 -1
- package/app/.next/static/chunks/5497-55fdd8a99adbc0e1.js +0 -7
- package/app/.next/static/chunks/5772-81f907ca6ec17897.js +0 -3
- package/app/.next/static/chunks/6902-59c9bd4da89daa6c.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-498aa76895400b7f.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-a2900807101b8a33.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/console-log/page-6f9b44a8af082c71.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/employees/[keyId]/page-349626384b53a093.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/employees/page-fe3a75afa7ebd9d8.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/page-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-493eb2eac64153a5.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-7efc5c1ea19f02ec.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-cd17e15c22790e9b.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/quota/page-a6bd29ee2d2672c6.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/page-173679dc8c62c4a0.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-de3fbce2b737ec72.js +0 -1
- package/app/.next/static/chunks/app/_global-error/page-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/_not-found/page-7e26da6572c546ac.js +0 -1
- package/app/.next/static/chunks/app/api/auth/login/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/auth/logout/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/auth/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/credentials/update/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/model/resolve/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/models/alias/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/combos/[id]/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/combos/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/employees/[keyId]/stats/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/employees/stats/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/init/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/keys/[id]/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/keys/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/locale/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/models/alias/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/models/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/models/test/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/cursor/import/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/import/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/pricing/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/validate/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/models/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/test/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/providers/client/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/providers/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/providers/test-batch/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/providers/validate/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/proxy-pools/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/settings/database/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/settings/proxy-test/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/settings/require-login/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/settings/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/shutdown/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/tags/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/translator/console-logs/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/translator/load/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/translator/save/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/translator/send/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/translator/translate/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/disable/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/enable/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/tunnel/status/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/usage/[connectionId]/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/usage/chart/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/usage/history/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/usage/logs/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/usage/providers/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/usage/request-details/[id]/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/usage/request-details/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/usage/request-logs/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/usage/stats/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/usage/stream/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/v1/api/chat/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/v1/chat/completions/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/v1/embeddings/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/v1/messages/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/v1/models/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/v1/responses/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/v1/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/v1beta/models/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/v1internal/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/api/version/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/landing/page-a9fde23d5773613c.js +0 -1
- package/app/.next/static/chunks/app/login/page-650676272c54863b.js +0 -1
- package/app/.next/static/chunks/app/manifest.webmanifest/route-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/app/page-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/global-error-3c2797dc10ec6327.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-aed1b231bb49a704.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-aed1b231bb49a704.js +0 -1
- package/app/.next/static/css/953a9192c556e871.css +0 -3
- /package/app/.next/static/{TtuiNIABr9XFPbvw-LhhA → 9Nr3N83B_j66eng2tH-u9}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,1209 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<img src="../images/9router.png?1" alt="9Router Dashboard" width="800"/>
|
|
3
|
+
|
|
4
|
+
# 9Router - 無料 AI ルーター
|
|
5
|
+
|
|
6
|
+
**コーディングを止めない。スマートフォールバックで無料&格安AIモデルに自動ルーティング。**
|
|
7
|
+
|
|
8
|
+
**すべてのAIコーディングツール(Claude Code、Cursor、Antigravity、Copilot、Codex、Gemini、OpenCode、Cline、OpenClaw...)を40以上のAIプロバイダーと100以上のモデルに接続。**
|
|
9
|
+
|
|
10
|
+
[](https://www.npmjs.com/package/9router)
|
|
11
|
+
[](https://www.npmjs.com/package/9router)
|
|
12
|
+
[](https://github.com/decolua/9router/blob/main/LICENSE)
|
|
13
|
+
|
|
14
|
+
[🚀 クイックスタート](#-クイックスタート) • [💡 機能](#-主な機能) • [📖 セットアップ](#-セットアップガイド) • [🌐 ウェブサイト](https://9router.com)
|
|
15
|
+
|
|
16
|
+
[🇻🇳 Tiếng Việt](./README.vi.md) • [🇨🇳 中文](./README.zh-CN.md) • [🇯🇵 日本語](./README.ja-JP.md)
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 🤔 なぜ9Router?
|
|
22
|
+
|
|
23
|
+
**お金の無駄遣いと制限に悩まされるのはもう終わりです:**
|
|
24
|
+
|
|
25
|
+
- ❌ サブスクリプションのクオータが毎月未使用のまま期限切れ
|
|
26
|
+
- ❌ レート制限でコーディング中に停止
|
|
27
|
+
- ❌ 高額なAPI(プロバイダーごとに月額$20〜50)
|
|
28
|
+
- ❌ プロバイダー間の手動切り替え
|
|
29
|
+
|
|
30
|
+
**9Routerが解決します:**
|
|
31
|
+
|
|
32
|
+
- ✅ **サブスクリプションを最大化** - クオータを追跡し、リセット前にすべて使い切る
|
|
33
|
+
- ✅ **自動フォールバック** - サブスクリプション → 格安 → 無料、ダウンタイムゼロ
|
|
34
|
+
- ✅ **マルチアカウント** - プロバイダーごとにアカウント間でラウンドロビン
|
|
35
|
+
- ✅ **ユニバーサル** - Claude Code、Codex、Gemini CLI、Cursor、Cline、あらゆるCLIツールに対応
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## 🔄 仕組み
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
┌─────────────┐
|
|
43
|
+
│ あなたの │ (Claude Code、Codex、Gemini CLI、OpenClaw、Cursor、Cline...)
|
|
44
|
+
│ CLIツール │
|
|
45
|
+
└──────┬──────┘
|
|
46
|
+
│ http://localhost:20128/v1
|
|
47
|
+
↓
|
|
48
|
+
┌─────────────────────────────────────────┐
|
|
49
|
+
│ 9Router(スマートルーター) │
|
|
50
|
+
│ • フォーマット変換(OpenAI ↔ Claude) │
|
|
51
|
+
│ • クオータ追跡 │
|
|
52
|
+
│ • 自動トークンリフレッシュ │
|
|
53
|
+
└──────┬──────────────────────────────────┘
|
|
54
|
+
│
|
|
55
|
+
├─→ [Tier 1: サブスクリプション] Claude Code、Codex、Gemini CLI
|
|
56
|
+
│ ↓ クオータ消費済み
|
|
57
|
+
├─→ [Tier 2: 格安] GLM ($0.6/1M)、MiniMax ($0.2/1M)
|
|
58
|
+
│ ↓ 予算上限
|
|
59
|
+
└─→ [Tier 3: 無料] iFlow、Qwen、Kiro(無制限)
|
|
60
|
+
|
|
61
|
+
結果: コーディングが止まらない、最小コスト
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## ⚡ クイックスタート
|
|
67
|
+
|
|
68
|
+
**1. グローバルインストール:**
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
npm install -g 9router
|
|
72
|
+
9router
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
🎉 ダッシュボードが `http://localhost:20128` で開きます
|
|
76
|
+
|
|
77
|
+
**2. 無料プロバイダーを接続(サインアップ不要):**
|
|
78
|
+
|
|
79
|
+
ダッシュボード → Providers → **Claude Code** または **Antigravity** を接続 → OAuthログイン → 完了!
|
|
80
|
+
|
|
81
|
+
**3. CLIツールで使用:**
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Clineの設定:
|
|
85
|
+
エンドポイント: http://localhost:20128/v1
|
|
86
|
+
APIキー: [ダッシュボードからコピー]
|
|
87
|
+
モデル: if/kimi-k2-thinking
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**これだけです!** 無料AIモデルでコーディングを始めましょう。
|
|
91
|
+
|
|
92
|
+
**代替方法: ソースから実行(このリポジトリ):**
|
|
93
|
+
|
|
94
|
+
このリポジトリパッケージはプライベート(`9router-app`)のため、ソース/Docker実行がローカル開発の想定パスです。
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
cp .env.example .env
|
|
98
|
+
npm install
|
|
99
|
+
PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
本番モード:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
npm run build
|
|
106
|
+
PORT=20128 HOSTNAME=0.0.0.0 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run start
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
デフォルトURL:
|
|
110
|
+
- ダッシュボード: `http://localhost:20128/dashboard`
|
|
111
|
+
- OpenAI互換API: `http://localhost:20128/v1`
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## 🎥 動画チュートリアル
|
|
116
|
+
|
|
117
|
+
<div align="center">
|
|
118
|
+
|
|
119
|
+
### 📺 完全セットアップガイド - 9Router + Claude Code 無料
|
|
120
|
+
|
|
121
|
+
[](https://www.youtube.com/watch?v=raEyZPg5xE0)
|
|
122
|
+
|
|
123
|
+
**🎬 ステップバイステップのチュートリアルを視聴:**
|
|
124
|
+
- ✅ 9Routerのインストールとセットアップ
|
|
125
|
+
- ✅ 無料Claude Sonnet 4.5の設定
|
|
126
|
+
- ✅ Claude Codeとの統合
|
|
127
|
+
- ✅ ライブコーディングデモ
|
|
128
|
+
|
|
129
|
+
**⏱️ 所要時間:** 20分 | **👥 作成:** Developer Community
|
|
130
|
+
|
|
131
|
+
[▶️ YouTubeで視聴](https://www.youtube.com/watch?v=o3qYCyjrFYg)
|
|
132
|
+
|
|
133
|
+
</div>
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## 🛠️ 対応CLIツール
|
|
138
|
+
|
|
139
|
+
9Routerはすべての主要AIコーディングツールとシームレスに連携します:
|
|
140
|
+
|
|
141
|
+
<div align="center">
|
|
142
|
+
<table>
|
|
143
|
+
<tr>
|
|
144
|
+
<td align="center" width="120">
|
|
145
|
+
<img src="../public/providers/claude.png" width="60" alt="Claude Code"/><br/>
|
|
146
|
+
<b>Claude-Code</b>
|
|
147
|
+
</td>
|
|
148
|
+
<td align="center" width="120">
|
|
149
|
+
<img src="../public/providers/openclaw.png" width="60" alt="OpenClaw"/><br/>
|
|
150
|
+
<b>OpenClaw</b>
|
|
151
|
+
</td>
|
|
152
|
+
<td align="center" width="120">
|
|
153
|
+
<img src="../public/providers/codex.png" width="60" alt="Codex"/><br/>
|
|
154
|
+
<b>Codex</b>
|
|
155
|
+
</td>
|
|
156
|
+
<td align="center" width="120">
|
|
157
|
+
<img src="../public/providers/opencode.png" width="60" alt="OpenCode"/><br/>
|
|
158
|
+
<b>OpenCode</b>
|
|
159
|
+
</td>
|
|
160
|
+
<td align="center" width="120">
|
|
161
|
+
<img src="../public/providers/cursor.png" width="60" alt="Cursor"/><br/>
|
|
162
|
+
<b>Cursor</b>
|
|
163
|
+
</td>
|
|
164
|
+
<td align="center" width="120">
|
|
165
|
+
<img src="../public/providers/antigravity.png" width="60" alt="Antigravity"/><br/>
|
|
166
|
+
<b>Antigravity</b>
|
|
167
|
+
</td>
|
|
168
|
+
</tr>
|
|
169
|
+
<tr>
|
|
170
|
+
<td align="center" width="120">
|
|
171
|
+
<img src="../public/providers/cline.png" width="60" alt="Cline"/><br/>
|
|
172
|
+
<b>Cline</b>
|
|
173
|
+
</td>
|
|
174
|
+
<td align="center" width="120">
|
|
175
|
+
<img src="../public/providers/continue.png" width="60" alt="Continue"/><br/>
|
|
176
|
+
<b>Continue</b>
|
|
177
|
+
</td>
|
|
178
|
+
<td align="center" width="120">
|
|
179
|
+
<img src="../public/providers/droid.png" width="60" alt="Droid"/><br/>
|
|
180
|
+
<b>Droid</b>
|
|
181
|
+
</td>
|
|
182
|
+
<td align="center" width="120">
|
|
183
|
+
<img src="../public/providers/roo.png" width="60" alt="Roo"/><br/>
|
|
184
|
+
<b>Roo</b>
|
|
185
|
+
</td>
|
|
186
|
+
<td align="center" width="120">
|
|
187
|
+
<img src="../public/providers/copilot.png" width="60" alt="Copilot"/><br/>
|
|
188
|
+
<b>Copilot</b>
|
|
189
|
+
</td>
|
|
190
|
+
<td align="center" width="120">
|
|
191
|
+
<img src="../public/providers/kilocode.png" width="60" alt="Kilo Code"/><br/>
|
|
192
|
+
<b>Kilo Code</b>
|
|
193
|
+
</td>
|
|
194
|
+
</tr>
|
|
195
|
+
</table>
|
|
196
|
+
</div>
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## 🌐 対応プロバイダー
|
|
201
|
+
|
|
202
|
+
### 🔐 OAuthプロバイダー
|
|
203
|
+
|
|
204
|
+
<div align="center">
|
|
205
|
+
<table>
|
|
206
|
+
<tr>
|
|
207
|
+
<td align="center" width="120">
|
|
208
|
+
<img src="../public/providers/claude.png" width="60" alt="Claude Code"/><br/>
|
|
209
|
+
<b>Claude-Code</b>
|
|
210
|
+
</td>
|
|
211
|
+
<td align="center" width="120">
|
|
212
|
+
<img src="../public/providers/antigravity.png" width="60" alt="Antigravity"/><br/>
|
|
213
|
+
<b>Antigravity</b>
|
|
214
|
+
</td>
|
|
215
|
+
<td align="center" width="120">
|
|
216
|
+
<img src="../public/providers/codex.png" width="60" alt="Codex"/><br/>
|
|
217
|
+
<b>Codex</b>
|
|
218
|
+
</td>
|
|
219
|
+
<td align="center" width="120">
|
|
220
|
+
<img src="../public/providers/github.png" width="60" alt="GitHub"/><br/>
|
|
221
|
+
<b>GitHub</b>
|
|
222
|
+
</td>
|
|
223
|
+
<td align="center" width="120">
|
|
224
|
+
<img src="../public/providers/cursor.png" width="60" alt="Cursor"/><br/>
|
|
225
|
+
<b>Cursor</b>
|
|
226
|
+
</td>
|
|
227
|
+
</tr>
|
|
228
|
+
</table>
|
|
229
|
+
</div>
|
|
230
|
+
|
|
231
|
+
### 🆓 無料プロバイダー
|
|
232
|
+
|
|
233
|
+
<div align="center">
|
|
234
|
+
<table>
|
|
235
|
+
<tr>
|
|
236
|
+
<td align="center" width="150">
|
|
237
|
+
<img src="../public/providers/iflow.png" width="70" alt="iFlow"/><br/>
|
|
238
|
+
<b>iFlow AI</b><br/>
|
|
239
|
+
<sub>8以上のモデル • 無制限</sub>
|
|
240
|
+
</td>
|
|
241
|
+
<td align="center" width="150">
|
|
242
|
+
<img src="../public/providers/qwen.png" width="70" alt="Qwen"/><br/>
|
|
243
|
+
<b>Qwen Code</b><br/>
|
|
244
|
+
<sub>3以上のモデル • 無制限</sub>
|
|
245
|
+
</td>
|
|
246
|
+
<td align="center" width="150">
|
|
247
|
+
<img src="../public/providers/gemini-cli.png" width="70" alt="Gemini CLI"/><br/>
|
|
248
|
+
<b>Gemini CLI</b><br/>
|
|
249
|
+
<sub>月18万回無料</sub>
|
|
250
|
+
</td>
|
|
251
|
+
<td align="center" width="150">
|
|
252
|
+
<img src="../public/providers/kiro.png" width="70" alt="Kiro"/><br/>
|
|
253
|
+
<b>Kiro AI</b><br/>
|
|
254
|
+
<sub>Claude • 無制限</sub>
|
|
255
|
+
</td>
|
|
256
|
+
</tr>
|
|
257
|
+
</table>
|
|
258
|
+
</div>
|
|
259
|
+
|
|
260
|
+
### 🔑 APIキープロバイダー(40以上)
|
|
261
|
+
|
|
262
|
+
<div align="center">
|
|
263
|
+
<table>
|
|
264
|
+
<tr>
|
|
265
|
+
<td align="center" width="100">
|
|
266
|
+
<img src="../public/providers/openrouter.png" width="50" alt="OpenRouter"/><br/>
|
|
267
|
+
<sub>OpenRouter</sub>
|
|
268
|
+
</td>
|
|
269
|
+
<td align="center" width="100">
|
|
270
|
+
<img src="../public/providers/glm.png" width="50" alt="GLM"/><br/>
|
|
271
|
+
<sub>GLM</sub>
|
|
272
|
+
</td>
|
|
273
|
+
<td align="center" width="100">
|
|
274
|
+
<img src="../public/providers/kimi.png" width="50" alt="Kimi"/><br/>
|
|
275
|
+
<sub>Kimi</sub>
|
|
276
|
+
</td>
|
|
277
|
+
<td align="center" width="100">
|
|
278
|
+
<img src="../public/providers/minimax.png" width="50" alt="MiniMax"/><br/>
|
|
279
|
+
<sub>MiniMax</sub>
|
|
280
|
+
</td>
|
|
281
|
+
<td align="center" width="100">
|
|
282
|
+
<img src="../public/providers/openai.png" width="50" alt="OpenAI"/><br/>
|
|
283
|
+
<sub>OpenAI</sub>
|
|
284
|
+
</td>
|
|
285
|
+
<td align="center" width="100">
|
|
286
|
+
<img src="../public/providers/anthropic.png" width="50" alt="Anthropic"/><br/>
|
|
287
|
+
<sub>Anthropic</sub>
|
|
288
|
+
</td>
|
|
289
|
+
</tr>
|
|
290
|
+
<tr>
|
|
291
|
+
<td align="center" width="100">
|
|
292
|
+
<img src="../public/providers/gemini.png" width="50" alt="Gemini"/><br/>
|
|
293
|
+
<sub>Gemini</sub>
|
|
294
|
+
</td>
|
|
295
|
+
<td align="center" width="100">
|
|
296
|
+
<img src="../public/providers/deepseek.png" width="50" alt="DeepSeek"/><br/>
|
|
297
|
+
<sub>DeepSeek</sub>
|
|
298
|
+
</td>
|
|
299
|
+
<td align="center" width="100">
|
|
300
|
+
<img src="../public/providers/groq.png" width="50" alt="Groq"/><br/>
|
|
301
|
+
<sub>Groq</sub>
|
|
302
|
+
</td>
|
|
303
|
+
<td align="center" width="100">
|
|
304
|
+
<img src="../public/providers/xai.png" width="50" alt="xAI"/><br/>
|
|
305
|
+
<sub>xAI</sub>
|
|
306
|
+
</td>
|
|
307
|
+
<td align="center" width="100">
|
|
308
|
+
<img src="../public/providers/mistral.png" width="50" alt="Mistral"/><br/>
|
|
309
|
+
<sub>Mistral</sub>
|
|
310
|
+
</td>
|
|
311
|
+
<td align="center" width="100">
|
|
312
|
+
<img src="../public/providers/perplexity.png" width="50" alt="Perplexity"/><br/>
|
|
313
|
+
<sub>Perplexity</sub>
|
|
314
|
+
</td>
|
|
315
|
+
</tr>
|
|
316
|
+
<tr>
|
|
317
|
+
<td align="center" width="100">
|
|
318
|
+
<img src="../public/providers/together.png" width="50" alt="Together"/><br/>
|
|
319
|
+
<sub>Together AI</sub>
|
|
320
|
+
</td>
|
|
321
|
+
<td align="center" width="100">
|
|
322
|
+
<img src="../public/providers/fireworks.png" width="50" alt="Fireworks"/><br/>
|
|
323
|
+
<sub>Fireworks</sub>
|
|
324
|
+
</td>
|
|
325
|
+
<td align="center" width="100">
|
|
326
|
+
<img src="../public/providers/cerebras.png" width="50" alt="Cerebras"/><br/>
|
|
327
|
+
<sub>Cerebras</sub>
|
|
328
|
+
</td>
|
|
329
|
+
<td align="center" width="100">
|
|
330
|
+
<img src="../public/providers/cohere.png" width="50" alt="Cohere"/><br/>
|
|
331
|
+
<sub>Cohere</sub>
|
|
332
|
+
</td>
|
|
333
|
+
<td align="center" width="100">
|
|
334
|
+
<img src="../public/providers/nvidia.png" width="50" alt="NVIDIA"/><br/>
|
|
335
|
+
<sub>NVIDIA</sub>
|
|
336
|
+
</td>
|
|
337
|
+
<td align="center" width="100">
|
|
338
|
+
<img src="../public/providers/siliconflow.png" width="50" alt="SiliconFlow"/><br/>
|
|
339
|
+
<sub>SiliconFlow</sub>
|
|
340
|
+
</td>
|
|
341
|
+
</tr>
|
|
342
|
+
</table>
|
|
343
|
+
<p><i>...その他Nebius、Chutes、Hyperbolic、カスタムOpenAI/Anthropic互換エンドポイントなど20以上のプロバイダー</i></p>
|
|
344
|
+
</div>
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
## 💡 主な機能
|
|
349
|
+
|
|
350
|
+
| 機能 | 概要 | メリット |
|
|
351
|
+
|------|------|----------|
|
|
352
|
+
| 🎯 **スマート3段階フォールバック** | 自動ルーティング: サブスクリプション → 格安 → 無料 | コーディングが止まらない、ダウンタイムゼロ |
|
|
353
|
+
| 📊 **リアルタイムクオータ追跡** | ライブトークン数 + リセットカウントダウン | サブスクリプション価値の最大化 |
|
|
354
|
+
| 🔄 **フォーマット変換** | OpenAI ↔ Claude ↔ Gemini シームレス対応 | あらゆるCLIツールで動作 |
|
|
355
|
+
| 👥 **マルチアカウント対応** | プロバイダーごとに複数アカウント | 負荷分散 + 冗長性 |
|
|
356
|
+
| 🔄 **自動トークンリフレッシュ** | OAuthトークンの自動更新 | 手動再ログイン不要 |
|
|
357
|
+
| 🎨 **カスタムコンボ** | 無制限のモデル組み合わせ作成 | ニーズに合わせたフォールバック |
|
|
358
|
+
| 📝 **リクエストログ** | リクエスト/レスポンスの完全ログ | 問題の簡単なトラブルシューティング |
|
|
359
|
+
| 💾 **クラウド同期** | デバイス間で設定を同期 | どこでも同じセットアップ |
|
|
360
|
+
| 📊 **使用状況分析** | トークン、コスト、トレンドの追跡 | 支出の最適化 |
|
|
361
|
+
| 🌐 **どこでもデプロイ** | Localhost、VPS、Docker、Cloudflare Workers | 柔軟なデプロイオプション |
|
|
362
|
+
|
|
363
|
+
<details>
|
|
364
|
+
<summary><b>📖 機能詳細</b></summary>
|
|
365
|
+
|
|
366
|
+
### 🎯 スマート3段階フォールバック
|
|
367
|
+
|
|
368
|
+
自動フォールバック付きコンボを作成:
|
|
369
|
+
|
|
370
|
+
```
|
|
371
|
+
コンボ: "my-coding-stack"
|
|
372
|
+
1. cc/claude-opus-4-6 (サブスクリプション)
|
|
373
|
+
2. glm/glm-4.7 (格安バックアップ、$0.6/1M)
|
|
374
|
+
3. if/kimi-k2-thinking (無料フォールバック)
|
|
375
|
+
|
|
376
|
+
→ クオータ切れやエラー発生時に自動切り替え
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
### 📊 リアルタイムクオータ追跡
|
|
380
|
+
|
|
381
|
+
- プロバイダーごとのトークン消費量
|
|
382
|
+
- リセットカウントダウン(5時間、日次、週次)
|
|
383
|
+
- 有料ティアのコスト見積もり
|
|
384
|
+
- 月間支出レポート
|
|
385
|
+
|
|
386
|
+
### 🔄 フォーマット変換
|
|
387
|
+
|
|
388
|
+
フォーマット間のシームレスな変換:
|
|
389
|
+
- **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI Responses**
|
|
390
|
+
- CLIツールがOpenAIフォーマットで送信 → 9Routerが変換 → プロバイダーがネイティブフォーマットで受信
|
|
391
|
+
- カスタムOpenAIエンドポイントをサポートするすべてのツールで動作
|
|
392
|
+
|
|
393
|
+
### 👥 マルチアカウント対応
|
|
394
|
+
|
|
395
|
+
- プロバイダーごとに複数アカウント追加
|
|
396
|
+
- 自動ラウンドロビンまたは優先度ベースのルーティング
|
|
397
|
+
- 1つのアカウントがクオータに達したら次のアカウントにフォールバック
|
|
398
|
+
|
|
399
|
+
### 🔄 自動トークンリフレッシュ
|
|
400
|
+
|
|
401
|
+
- OAuthトークンが期限切れ前に自動リフレッシュ
|
|
402
|
+
- 手動の再認証不要
|
|
403
|
+
- すべてのプロバイダーでシームレスな体験
|
|
404
|
+
|
|
405
|
+
### 🎨 カスタムコンボ
|
|
406
|
+
|
|
407
|
+
- 無制限のモデル組み合わせ作成
|
|
408
|
+
- サブスクリプション、格安、無料ティアを混合
|
|
409
|
+
- コンボに名前を付けて簡単にアクセス
|
|
410
|
+
- クラウド同期でデバイス間でコンボを共有
|
|
411
|
+
|
|
412
|
+
### 📝 リクエストログ
|
|
413
|
+
|
|
414
|
+
- デバッグモードでリクエスト/レスポンスの完全ログ
|
|
415
|
+
- API呼び出し、ヘッダー、ペイロードの追跡
|
|
416
|
+
- 統合の問題をトラブルシューティング
|
|
417
|
+
- 分析用にログをエクスポート
|
|
418
|
+
|
|
419
|
+
### 💾 クラウド同期
|
|
420
|
+
|
|
421
|
+
- デバイス間でプロバイダー、コンボ、設定を同期
|
|
422
|
+
- 自動バックグラウンド同期
|
|
423
|
+
- 安全な暗号化ストレージ
|
|
424
|
+
- どこからでもセットアップにアクセス
|
|
425
|
+
|
|
426
|
+
#### クラウドランタイムに関する注意
|
|
427
|
+
|
|
428
|
+
- 本番環境ではサーバーサイドのクラウド変数を推奨:
|
|
429
|
+
- `BASE_URL`(同期スケジューラで使用される内部コールバックURL)
|
|
430
|
+
- `CLOUD_URL`(クラウド同期エンドポイントのベースURL)
|
|
431
|
+
- `NEXT_PUBLIC_BASE_URL` と `NEXT_PUBLIC_CLOUD_URL` は互換性/UI用にまだサポートされていますが、サーバーランタイムは `BASE_URL`/`CLOUD_URL` を優先します。
|
|
432
|
+
- クラウド同期リクエストはタイムアウト + フェイルファスト動作を使用し、クラウドDNS/ネットワークが利用できない場合のUIハングを回避します。
|
|
433
|
+
|
|
434
|
+
### 📊 使用状況分析
|
|
435
|
+
|
|
436
|
+
- プロバイダーおよびモデルごとのトークン使用量追跡
|
|
437
|
+
- コスト見積もりと支出トレンド
|
|
438
|
+
- 月次レポートとインサイト
|
|
439
|
+
- AI支出の最適化
|
|
440
|
+
|
|
441
|
+
> **💡 重要 - ダッシュボードのコストについて:**
|
|
442
|
+
>
|
|
443
|
+
> 使用状況分析に表示される「コスト」は**追跡と比較目的のみ**です。
|
|
444
|
+
> 9Router自体は**一切課金しません**。有料サービスを使用する場合のみ、プロバイダーに直接支払います。
|
|
445
|
+
>
|
|
446
|
+
> **例:** ダッシュボードにiFlowモデルの使用で「合計コスト$290」と表示されている場合、
|
|
447
|
+
> これは有料APIを直接使用した場合に支払うであろう金額を表しています。実際のコスト = **$0**(iFlowは無料無制限)。
|
|
448
|
+
>
|
|
449
|
+
> これは無料モデルや9Router経由のルーティングでどれだけ節約しているかを示す「節約トラッカー」と考えてください!
|
|
450
|
+
|
|
451
|
+
### 🌐 どこでもデプロイ
|
|
452
|
+
|
|
453
|
+
- 💻 **ローカルホスト** - デフォルト、オフラインで動作
|
|
454
|
+
- ☁️ **VPS/クラウド** - デバイス間で共有
|
|
455
|
+
- 🐳 **Docker** - ワンコマンドデプロイ
|
|
456
|
+
- 🚀 **Cloudflare Workers** - グローバルエッジネットワーク
|
|
457
|
+
|
|
458
|
+
</details>
|
|
459
|
+
|
|
460
|
+
---
|
|
461
|
+
|
|
462
|
+
## 💰 料金の概要
|
|
463
|
+
|
|
464
|
+
| ティア | プロバイダー | コスト | クオータリセット | 最適な用途 |
|
|
465
|
+
|--------|-------------|--------|-----------------|------------|
|
|
466
|
+
| **💳 サブスクリプション** | Claude Code (Pro) | $20/月 | 5時間 + 週次 | 既存のサブスク利用者 |
|
|
467
|
+
| | Codex (Plus/Pro) | $20-200/月 | 5時間 + 週次 | OpenAIユーザー |
|
|
468
|
+
| | Gemini CLI | **無料** | 月18万回 + 日1千回 | 全員! |
|
|
469
|
+
| | GitHub Copilot | $10-19/月 | 月次 | GitHubユーザー |
|
|
470
|
+
| **💰 格安** | GLM-4.7 | $0.6/1M | 毎日午前10時 | 予算バックアップ |
|
|
471
|
+
| | MiniMax M2.1 | $0.2/1M | 5時間ローリング | 最安オプション |
|
|
472
|
+
| | Kimi K2 | $9/月固定 | 月1000万トークン | 予測可能なコスト |
|
|
473
|
+
| **🆓 無料** | iFlow | $0 | 無制限 | 8モデル無料 |
|
|
474
|
+
| | Qwen | $0 | 無制限 | 3モデル無料 |
|
|
475
|
+
| | Kiro | $0 | 無制限 | Claude無料 |
|
|
476
|
+
|
|
477
|
+
**💡 プロのヒント:** Gemini CLI(月18万回無料)+ iFlow(無制限無料)のコンボで $0 のコスト!
|
|
478
|
+
|
|
479
|
+
---
|
|
480
|
+
|
|
481
|
+
### 📊 9Routerのコストと課金について
|
|
482
|
+
|
|
483
|
+
**9Routerの課金の実態:**
|
|
484
|
+
|
|
485
|
+
✅ **9Routerソフトウェア = 永久無料**(オープンソース、課金なし)
|
|
486
|
+
✅ **ダッシュボードの「コスト」= 表示/追跡のみ**(実際の請求ではない)
|
|
487
|
+
✅ **プロバイダーに直接支払い**(サブスクリプションまたはAPI料金)
|
|
488
|
+
✅ **無料プロバイダーは無料のまま**(iFlow、Kiro、Qwen = $0 無制限)
|
|
489
|
+
❌ **9Routerは請求書を送ったり**カードに課金したりしません
|
|
490
|
+
|
|
491
|
+
**コスト表示の仕組み:**
|
|
492
|
+
|
|
493
|
+
ダッシュボードは有料APIを直接使用した場合の**推定コスト**を表示します。これは**課金ではなく**、節約額を示す比較ツールです。
|
|
494
|
+
|
|
495
|
+
**シナリオ例:**
|
|
496
|
+
```
|
|
497
|
+
ダッシュボード表示:
|
|
498
|
+
• 合計リクエスト: 1,662
|
|
499
|
+
• 合計トークン: 4700万
|
|
500
|
+
• 表示コスト: $290
|
|
501
|
+
|
|
502
|
+
実際の確認:
|
|
503
|
+
• プロバイダー: iFlow(無料無制限)
|
|
504
|
+
• 実際の支払い: $0.00
|
|
505
|
+
• $290の意味: 無料モデルの使用で節約した金額!
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
**支払いルール:**
|
|
509
|
+
- **サブスクリプションプロバイダー**(Claude Code、Codex):各ウェブサイトで直接支払い
|
|
510
|
+
- **格安プロバイダー**(GLM、MiniMax):直接支払い、9Routerはルーティングのみ
|
|
511
|
+
- **無料プロバイダー**(iFlow、Kiro、Qwen):本当に永久無料、隠れた料金なし
|
|
512
|
+
- **9Router**:一切課金しない
|
|
513
|
+
|
|
514
|
+
---
|
|
515
|
+
|
|
516
|
+
## 🎯 ユースケース
|
|
517
|
+
|
|
518
|
+
### ケース1: 「Claude Proサブスクリプションを持っている」
|
|
519
|
+
|
|
520
|
+
**問題:** クオータが未使用のまま期限切れ、重いコーディング中にレート制限
|
|
521
|
+
|
|
522
|
+
**解決策:**
|
|
523
|
+
```
|
|
524
|
+
コンボ: "maximize-claude"
|
|
525
|
+
1. cc/claude-opus-4-6 (サブスクリプションを最大限活用)
|
|
526
|
+
2. glm/glm-4.7 (クオータ切れ時の格安バックアップ)
|
|
527
|
+
3. if/kimi-k2-thinking (無料の緊急フォールバック)
|
|
528
|
+
|
|
529
|
+
月額コスト: $20 (サブスクリプション) + ~$5 (バックアップ) = 合計$25
|
|
530
|
+
vs. $20 + 制限に引っかかる = フラストレーション
|
|
531
|
+
```
|
|
532
|
+
|
|
533
|
+
### ケース2: 「コストゼロにしたい」
|
|
534
|
+
|
|
535
|
+
**問題:** サブスクリプションを払えない、信頼性のあるAIコーディングが必要
|
|
536
|
+
|
|
537
|
+
**解決策:**
|
|
538
|
+
```
|
|
539
|
+
コンボ: "free-forever"
|
|
540
|
+
1. gc/gemini-3-flash (月18万回無料)
|
|
541
|
+
2. if/kimi-k2-thinking (無制限無料)
|
|
542
|
+
3. qw/qwen3-coder-plus (無制限無料)
|
|
543
|
+
|
|
544
|
+
月額コスト: $0
|
|
545
|
+
品質: 本番対応モデル
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
### ケース3: 「24時間365日コーディング、中断なし」
|
|
549
|
+
|
|
550
|
+
**問題:** 締め切り、ダウンタイムは許されない
|
|
551
|
+
|
|
552
|
+
**解決策:**
|
|
553
|
+
```
|
|
554
|
+
コンボ: "always-on"
|
|
555
|
+
1. cc/claude-opus-4-6 (最高品質)
|
|
556
|
+
2. cx/gpt-5.2-codex (セカンドサブスクリプション)
|
|
557
|
+
3. glm/glm-4.7 (格安、毎日リセット)
|
|
558
|
+
4. minimax/MiniMax-M2.1 (最安、5時間リセット)
|
|
559
|
+
5. if/kimi-k2-thinking (無料無制限)
|
|
560
|
+
|
|
561
|
+
結果: 5層のフォールバック = ダウンタイムゼロ
|
|
562
|
+
月額コスト: $20-200 (サブスクリプション) + $10-20 (バックアップ)
|
|
563
|
+
```
|
|
564
|
+
|
|
565
|
+
### ケース4: 「OpenClawで無料AIを使いたい」
|
|
566
|
+
|
|
567
|
+
**問題:** メッセージングアプリ(WhatsApp、Telegram、Slack...)でAIアシスタントが必要、完全無料で
|
|
568
|
+
|
|
569
|
+
**解決策:**
|
|
570
|
+
```
|
|
571
|
+
コンボ: "openclaw-free"
|
|
572
|
+
1. if/glm-4.7 (無制限無料)
|
|
573
|
+
2. if/minimax-m2.1 (無制限無料)
|
|
574
|
+
3. if/kimi-k2-thinking (無制限無料)
|
|
575
|
+
|
|
576
|
+
月額コスト: $0
|
|
577
|
+
アクセス方法: WhatsApp、Telegram、Slack、Discord、iMessage、Signal...
|
|
578
|
+
```
|
|
579
|
+
|
|
580
|
+
---
|
|
581
|
+
|
|
582
|
+
## ❓ よくある質問
|
|
583
|
+
|
|
584
|
+
<details>
|
|
585
|
+
<summary><b>📊 ダッシュボードに高額なコストが表示されるのはなぜ?</b></summary>
|
|
586
|
+
|
|
587
|
+
ダッシュボードはトークン使用量を追跡し、有料APIを直接使用した場合の**推定コスト**を表示します。これは**実際の課金ではなく**、9Routerを通じて無料モデルや既存のサブスクリプションを使用することでどれだけ節約しているかを示すための参考値です。
|
|
588
|
+
|
|
589
|
+
**例:**
|
|
590
|
+
- **ダッシュボード表示:** 「合計コスト$290」
|
|
591
|
+
- **実際:** iFlow(無料無制限)を使用中
|
|
592
|
+
- **実際のコスト:** **$0.00**
|
|
593
|
+
- **$290の意味:** 有料APIの代わりに無料モデルを使用して**節約した**金額!
|
|
594
|
+
|
|
595
|
+
コスト表示は使用パターンと最適化の機会を理解するための「節約トラッカー」です。
|
|
596
|
+
|
|
597
|
+
</details>
|
|
598
|
+
|
|
599
|
+
<details>
|
|
600
|
+
<summary><b>💳 9Routerに課金されますか?</b></summary>
|
|
601
|
+
|
|
602
|
+
**いいえ。** 9Routerはあなたのコンピューター上で動作する無料のオープンソースソフトウェアです。一切課金しません。
|
|
603
|
+
|
|
604
|
+
**支払い先:**
|
|
605
|
+
- ✅ **サブスクリプションプロバイダー**(Claude Code $20/月、Codex $20-200/月)→ 各ウェブサイトで直接支払い
|
|
606
|
+
- ✅ **格安プロバイダー**(GLM、MiniMax)→ 直接支払い、9Routerはリクエストをルーティングするだけ
|
|
607
|
+
- ❌ **9Router自体** → **一切課金しない**
|
|
608
|
+
|
|
609
|
+
9Routerはローカルプロキシ/ルーターです。クレジットカード情報を持たず、請求書を送信できず、課金システムもありません。完全に無料のソフトウェアです。
|
|
610
|
+
|
|
611
|
+
</details>
|
|
612
|
+
|
|
613
|
+
<details>
|
|
614
|
+
<summary><b>🆓 無料プロバイダーは本当に無制限ですか?</b></summary>
|
|
615
|
+
|
|
616
|
+
**はい!** 無料と表示されているプロバイダー(iFlow、Kiro、Qwen)は本当に無制限で**隠れた料金はありません**。
|
|
617
|
+
|
|
618
|
+
これらは各企業が提供する無料サービスです:
|
|
619
|
+
- **iFlow**: OAuth経由で8以上のモデルに無料無制限アクセス
|
|
620
|
+
- **Kiro**: AWS Builder ID経由で無料無制限Claudeモデル
|
|
621
|
+
- **Qwen**: デバイス認証経由でQwenモデルに無料無制限アクセス
|
|
622
|
+
|
|
623
|
+
9Routerはリクエストをルーティングするだけで、「罠」や将来の課金はありません。本当に無料のサービスであり、9Routerはフォールバックサポートでそれらを使いやすくしています。
|
|
624
|
+
|
|
625
|
+
**注意:** 一部のサブスクリプションプロバイダー(Antigravity、GitHub Copilot)には無料プレビュー期間があり、後に有料になる可能性がありますが、それは9Routerではなく各プロバイダーから明確に告知されます。
|
|
626
|
+
|
|
627
|
+
</details>
|
|
628
|
+
|
|
629
|
+
<details>
|
|
630
|
+
<summary><b>💰 実際のAIコストを最小化するには?</b></summary>
|
|
631
|
+
|
|
632
|
+
**無料優先戦略:**
|
|
633
|
+
|
|
634
|
+
1. **100%無料コンボから始める:**
|
|
635
|
+
```
|
|
636
|
+
1. gc/gemini-3-flash (Googleから月18万回無料)
|
|
637
|
+
2. if/kimi-k2-thinking (iFlowから無制限無料)
|
|
638
|
+
3. qw/qwen3-coder-plus (Qwenから無制限無料)
|
|
639
|
+
```
|
|
640
|
+
**コスト: $0/月**
|
|
641
|
+
|
|
642
|
+
2. **必要な場合のみ格安バックアップを追加:**
|
|
643
|
+
```
|
|
644
|
+
4. glm/glm-4.7 ($0.6/100万トークン)
|
|
645
|
+
```
|
|
646
|
+
**追加コスト: 実際に使用した分だけ支払い**
|
|
647
|
+
|
|
648
|
+
3. **サブスクリプションプロバイダーは最後に使用:**
|
|
649
|
+
- 既にお持ちの場合のみ
|
|
650
|
+
- 9Routerがクオータ追跡で価値を最大化
|
|
651
|
+
|
|
652
|
+
**結果:** ほとんどのユーザーは無料ティアのみで月額$0で運用可能!
|
|
653
|
+
|
|
654
|
+
</details>
|
|
655
|
+
|
|
656
|
+
<details>
|
|
657
|
+
<summary><b>📈 使用量が突然急増したら?</b></summary>
|
|
658
|
+
|
|
659
|
+
9Routerのスマートフォールバックが予期しない課金を防止します:
|
|
660
|
+
|
|
661
|
+
**シナリオ:** コーディングスプリント中にクオータを使い切った
|
|
662
|
+
|
|
663
|
+
**9Routerなし:**
|
|
664
|
+
- ❌ レート制限に到達 → 作業停止 → フラストレーション
|
|
665
|
+
- ❌ または: 意図せず高額なAPI請求が発生
|
|
666
|
+
|
|
667
|
+
**9Routerあり:**
|
|
668
|
+
- ✅ サブスクリプションが上限に達する → 格安ティアに自動フォールバック
|
|
669
|
+
- ✅ 格安ティアが高くなる → 無料ティアに自動フォールバック
|
|
670
|
+
- ✅ コーディングが止まらない → 予測可能なコスト
|
|
671
|
+
|
|
672
|
+
**あなたがコントロール:** ダッシュボードでプロバイダーごとの支出上限を設定し、9Routerはそれを遵守します。
|
|
673
|
+
|
|
674
|
+
</details>
|
|
675
|
+
|
|
676
|
+
---
|
|
677
|
+
|
|
678
|
+
## 📖 セットアップガイド
|
|
679
|
+
|
|
680
|
+
<details>
|
|
681
|
+
<summary><b>🔐 サブスクリプションプロバイダー(価値の最大化)</b></summary>
|
|
682
|
+
|
|
683
|
+
### Claude Code (Pro/Max)
|
|
684
|
+
|
|
685
|
+
```bash
|
|
686
|
+
ダッシュボード → Providers → Claude Codeを接続
|
|
687
|
+
→ OAuthログイン → 自動トークンリフレッシュ
|
|
688
|
+
→ 5時間 + 週次クオータ追跡
|
|
689
|
+
|
|
690
|
+
モデル:
|
|
691
|
+
cc/claude-opus-4-6
|
|
692
|
+
cc/claude-sonnet-4-5-20250929
|
|
693
|
+
cc/claude-haiku-4-5-20251001
|
|
694
|
+
```
|
|
695
|
+
|
|
696
|
+
**プロのヒント:** 複雑なタスクにはOpus、スピード重視ならSonnet。9Routerはモデルごとにクオータを追跡します!
|
|
697
|
+
|
|
698
|
+
### OpenAI Codex (Plus/Pro)
|
|
699
|
+
|
|
700
|
+
```bash
|
|
701
|
+
ダッシュボード → Providers → Codexを接続
|
|
702
|
+
→ OAuthログイン(ポート1455)
|
|
703
|
+
→ 5時間 + 週次リセット
|
|
704
|
+
|
|
705
|
+
モデル:
|
|
706
|
+
cx/gpt-5.2-codex
|
|
707
|
+
cx/gpt-5.1-codex-max
|
|
708
|
+
```
|
|
709
|
+
|
|
710
|
+
### Gemini CLI(月18万回無料!)
|
|
711
|
+
|
|
712
|
+
```bash
|
|
713
|
+
ダッシュボード → Providers → Gemini CLIを接続
|
|
714
|
+
→ Google OAuth
|
|
715
|
+
→ 月18万回 + 日1千回
|
|
716
|
+
|
|
717
|
+
モデル:
|
|
718
|
+
gc/gemini-3-flash-preview
|
|
719
|
+
gc/gemini-2.5-pro
|
|
720
|
+
```
|
|
721
|
+
|
|
722
|
+
**最高のコスパ:** 巨大な無料ティア!有料ティアの前にこちらを使用。
|
|
723
|
+
|
|
724
|
+
### GitHub Copilot
|
|
725
|
+
|
|
726
|
+
```bash
|
|
727
|
+
ダッシュボード → Providers → GitHubを接続
|
|
728
|
+
→ GitHub経由のOAuth
|
|
729
|
+
→ 月次リセット(毎月1日)
|
|
730
|
+
|
|
731
|
+
モデル:
|
|
732
|
+
gh/gpt-5
|
|
733
|
+
gh/claude-4.5-sonnet
|
|
734
|
+
gh/gemini-3-pro
|
|
735
|
+
```
|
|
736
|
+
|
|
737
|
+
</details>
|
|
738
|
+
|
|
739
|
+
<details>
|
|
740
|
+
<summary><b>💰 格安プロバイダー(バックアップ)</b></summary>
|
|
741
|
+
|
|
742
|
+
### GLM-4.7(日次リセット、$0.6/1M)
|
|
743
|
+
|
|
744
|
+
1. サインアップ: [Zhipu AI](https://open.bigmodel.cn/)
|
|
745
|
+
2. Coding PlanからAPIキーを取得
|
|
746
|
+
3. ダッシュボード → APIキーを追加:
|
|
747
|
+
- プロバイダー: `glm`
|
|
748
|
+
- APIキー: `your-key`
|
|
749
|
+
|
|
750
|
+
**使用:** `glm/glm-4.7`
|
|
751
|
+
|
|
752
|
+
**プロのヒント:** Coding Planは1/7のコストで3倍のクオータを提供!毎日午前10:00にリセット。
|
|
753
|
+
|
|
754
|
+
### MiniMax M2.1(5時間リセット、$0.20/1M)
|
|
755
|
+
|
|
756
|
+
1. サインアップ: [MiniMax](https://www.minimax.io/)
|
|
757
|
+
2. APIキーを取得
|
|
758
|
+
3. ダッシュボード → APIキーを追加
|
|
759
|
+
|
|
760
|
+
**使用:** `minimax/MiniMax-M2.1`
|
|
761
|
+
|
|
762
|
+
**プロのヒント:** ロングコンテキスト(100万トークン)で最安オプション!
|
|
763
|
+
|
|
764
|
+
### Kimi K2(月額$9固定)
|
|
765
|
+
|
|
766
|
+
1. サブスクライブ: [Moonshot AI](https://platform.moonshot.ai/)
|
|
767
|
+
2. APIキーを取得
|
|
768
|
+
3. ダッシュボード → APIキーを追加
|
|
769
|
+
|
|
770
|
+
**使用:** `kimi/kimi-latest`
|
|
771
|
+
|
|
772
|
+
**プロのヒント:** 月額$9固定で1000万トークン = 実効コスト$0.90/1M!
|
|
773
|
+
|
|
774
|
+
</details>
|
|
775
|
+
|
|
776
|
+
<details>
|
|
777
|
+
<summary><b>🆓 無料プロバイダー(緊急バックアップ)</b></summary>
|
|
778
|
+
|
|
779
|
+
### iFlow(8つの無料モデル)
|
|
780
|
+
|
|
781
|
+
```bash
|
|
782
|
+
ダッシュボード → iFlowを接続
|
|
783
|
+
→ iFlow OAuthログイン
|
|
784
|
+
→ 無制限使用
|
|
785
|
+
|
|
786
|
+
モデル:
|
|
787
|
+
if/kimi-k2-thinking
|
|
788
|
+
if/qwen3-coder-plus
|
|
789
|
+
if/glm-4.7
|
|
790
|
+
if/minimax-m2
|
|
791
|
+
if/deepseek-r1
|
|
792
|
+
```
|
|
793
|
+
|
|
794
|
+
### Qwen(3つの無料モデル)
|
|
795
|
+
|
|
796
|
+
```bash
|
|
797
|
+
ダッシュボード → Qwenを接続
|
|
798
|
+
→ デバイスコード認証
|
|
799
|
+
→ 無制限使用
|
|
800
|
+
|
|
801
|
+
モデル:
|
|
802
|
+
qw/qwen3-coder-plus
|
|
803
|
+
qw/qwen3-coder-flash
|
|
804
|
+
```
|
|
805
|
+
|
|
806
|
+
### Kiro(Claude無料)
|
|
807
|
+
|
|
808
|
+
```bash
|
|
809
|
+
ダッシュボード → Kiroを接続
|
|
810
|
+
→ AWS Builder IDまたはGoogle/GitHub
|
|
811
|
+
→ 無制限使用
|
|
812
|
+
|
|
813
|
+
モデル:
|
|
814
|
+
kr/claude-sonnet-4.5
|
|
815
|
+
kr/claude-haiku-4.5
|
|
816
|
+
```
|
|
817
|
+
|
|
818
|
+
</details>
|
|
819
|
+
|
|
820
|
+
<details>
|
|
821
|
+
<summary><b>🎨 コンボの作成</b></summary>
|
|
822
|
+
|
|
823
|
+
### 例1: サブスクリプション最大化 → 格安バックアップ
|
|
824
|
+
|
|
825
|
+
```
|
|
826
|
+
ダッシュボード → Combos → 新規作成
|
|
827
|
+
|
|
828
|
+
名前: premium-coding
|
|
829
|
+
モデル:
|
|
830
|
+
1. cc/claude-opus-4-6 (サブスクリプション、プライマリ)
|
|
831
|
+
2. glm/glm-4.7 (格安バックアップ、$0.6/1M)
|
|
832
|
+
3. minimax/MiniMax-M2.1 (最安フォールバック、$0.20/1M)
|
|
833
|
+
|
|
834
|
+
CLIでの使用: premium-coding
|
|
835
|
+
|
|
836
|
+
月額コスト例(1億トークン):
|
|
837
|
+
8000万 Claude経由(サブスクリプション): 追加$0
|
|
838
|
+
1500万 GLM経由: $9
|
|
839
|
+
500万 MiniMax経由: $1
|
|
840
|
+
合計: $10 + サブスクリプション
|
|
841
|
+
```
|
|
842
|
+
|
|
843
|
+
### 例2: 無料のみ(コストゼロ)
|
|
844
|
+
|
|
845
|
+
```
|
|
846
|
+
名前: free-combo
|
|
847
|
+
モデル:
|
|
848
|
+
1. gc/gemini-3-flash-preview (月18万回無料)
|
|
849
|
+
2. if/kimi-k2-thinking (無制限)
|
|
850
|
+
3. qw/qwen3-coder-plus (無制限)
|
|
851
|
+
|
|
852
|
+
コスト: 永久$0!
|
|
853
|
+
```
|
|
854
|
+
|
|
855
|
+
</details>
|
|
856
|
+
|
|
857
|
+
<details>
|
|
858
|
+
<summary><b>🔧 CLI統合</b></summary>
|
|
859
|
+
|
|
860
|
+
### Cursor IDE
|
|
861
|
+
|
|
862
|
+
```
|
|
863
|
+
設定 → Models → Advanced:
|
|
864
|
+
OpenAI API Base URL: http://localhost:20128/v1
|
|
865
|
+
OpenAI API Key: [9routerダッシュボードから]
|
|
866
|
+
Model: cc/claude-opus-4-6
|
|
867
|
+
```
|
|
868
|
+
|
|
869
|
+
またはコンボを使用: `premium-coding`
|
|
870
|
+
|
|
871
|
+
### Claude Code
|
|
872
|
+
|
|
873
|
+
`~/.claude/config.json` を編集:
|
|
874
|
+
|
|
875
|
+
```json
|
|
876
|
+
{
|
|
877
|
+
"anthropic_api_base": "http://localhost:20128/v1",
|
|
878
|
+
"anthropic_api_key": "your-9router-api-key"
|
|
879
|
+
}
|
|
880
|
+
```
|
|
881
|
+
|
|
882
|
+
### Codex CLI
|
|
883
|
+
|
|
884
|
+
```bash
|
|
885
|
+
export OPENAI_BASE_URL="http://localhost:20128"
|
|
886
|
+
export OPENAI_API_KEY="your-9router-api-key"
|
|
887
|
+
|
|
888
|
+
codex "your prompt"
|
|
889
|
+
```
|
|
890
|
+
|
|
891
|
+
### OpenClaw
|
|
892
|
+
|
|
893
|
+
**オプション1 — ダッシュボード(推奨):**
|
|
894
|
+
|
|
895
|
+
```
|
|
896
|
+
ダッシュボード → CLI Tools → OpenClaw → モデルを選択 → 適用
|
|
897
|
+
```
|
|
898
|
+
|
|
899
|
+
**オプション2 — 手動:** `~/.openclaw/openclaw.json` を編集:
|
|
900
|
+
|
|
901
|
+
```json
|
|
902
|
+
{
|
|
903
|
+
"agents": {
|
|
904
|
+
"defaults": {
|
|
905
|
+
"model": {
|
|
906
|
+
"primary": "9router/if/glm-4.7"
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
},
|
|
910
|
+
"models": {
|
|
911
|
+
"providers": {
|
|
912
|
+
"9router": {
|
|
913
|
+
"baseUrl": "http://127.0.0.1:20128/v1",
|
|
914
|
+
"apiKey": "sk_9router",
|
|
915
|
+
"api": "openai-completions",
|
|
916
|
+
"models": [
|
|
917
|
+
{
|
|
918
|
+
"id": "if/glm-4.7",
|
|
919
|
+
"name": "glm-4.7"
|
|
920
|
+
}
|
|
921
|
+
]
|
|
922
|
+
}
|
|
923
|
+
}
|
|
924
|
+
}
|
|
925
|
+
}
|
|
926
|
+
```
|
|
927
|
+
|
|
928
|
+
> **注意:** OpenClawはローカルの9Routerのみで動作します。IPv6解決の問題を避けるため、`localhost` ではなく `127.0.0.1` を使用してください。
|
|
929
|
+
|
|
930
|
+
### Cline / Continue / RooCode
|
|
931
|
+
|
|
932
|
+
```
|
|
933
|
+
プロバイダー: OpenAI Compatible
|
|
934
|
+
Base URL: http://localhost:20128/v1
|
|
935
|
+
API Key: [ダッシュボードから]
|
|
936
|
+
Model: cc/claude-opus-4-6
|
|
937
|
+
```
|
|
938
|
+
|
|
939
|
+
</details>
|
|
940
|
+
|
|
941
|
+
<details>
|
|
942
|
+
<summary><b>🚀 デプロイ</b></summary>
|
|
943
|
+
|
|
944
|
+
### VPSデプロイ
|
|
945
|
+
|
|
946
|
+
```bash
|
|
947
|
+
# クローンとインストール
|
|
948
|
+
git clone https://github.com/decolua/9router.git
|
|
949
|
+
cd 9router
|
|
950
|
+
npm install
|
|
951
|
+
npm run build
|
|
952
|
+
|
|
953
|
+
# 設定
|
|
954
|
+
export JWT_SECRET="your-secure-secret-change-this"
|
|
955
|
+
export INITIAL_PASSWORD="your-password"
|
|
956
|
+
export DATA_DIR="/var/lib/9router"
|
|
957
|
+
export PORT="20128"
|
|
958
|
+
export HOSTNAME="0.0.0.0"
|
|
959
|
+
export NODE_ENV="production"
|
|
960
|
+
export NEXT_PUBLIC_BASE_URL="http://localhost:20128"
|
|
961
|
+
export NEXT_PUBLIC_CLOUD_URL="https://9router.com"
|
|
962
|
+
export API_KEY_SECRET="endpoint-proxy-api-key-secret"
|
|
963
|
+
export MACHINE_ID_SALT="endpoint-proxy-salt"
|
|
964
|
+
|
|
965
|
+
# 起動
|
|
966
|
+
npm run start
|
|
967
|
+
|
|
968
|
+
# またはPM2を使用
|
|
969
|
+
npm install -g pm2
|
|
970
|
+
pm2 start npm --name 9router -- start
|
|
971
|
+
pm2 save
|
|
972
|
+
pm2 startup
|
|
973
|
+
```
|
|
974
|
+
|
|
975
|
+
### Docker
|
|
976
|
+
|
|
977
|
+
```bash
|
|
978
|
+
# イメージをビルド(リポジトリルートから)
|
|
979
|
+
docker build -t 9router .
|
|
980
|
+
|
|
981
|
+
# コンテナを実行(現在のセットアップで使用しているコマンド)
|
|
982
|
+
docker run -d \
|
|
983
|
+
--name 9router \
|
|
984
|
+
-p 20128:20128 \
|
|
985
|
+
--env-file /root/dev/9router/.env \
|
|
986
|
+
-v 9router-data:/app/data \
|
|
987
|
+
-v 9router-usage:/root/.9router \
|
|
988
|
+
9router
|
|
989
|
+
```
|
|
990
|
+
|
|
991
|
+
ポータブルコマンド(リポジトリルートにいる場合):
|
|
992
|
+
|
|
993
|
+
```bash
|
|
994
|
+
docker run -d \
|
|
995
|
+
--name 9router \
|
|
996
|
+
-p 20128:20128 \
|
|
997
|
+
--env-file ./.env \
|
|
998
|
+
-v 9router-data:/app/data \
|
|
999
|
+
-v 9router-usage:/root/.9router \
|
|
1000
|
+
9router
|
|
1001
|
+
```
|
|
1002
|
+
|
|
1003
|
+
コンテナのデフォルト:
|
|
1004
|
+
- `PORT=20128`
|
|
1005
|
+
- `HOSTNAME=0.0.0.0`
|
|
1006
|
+
|
|
1007
|
+
便利なコマンド:
|
|
1008
|
+
|
|
1009
|
+
```bash
|
|
1010
|
+
docker logs -f 9router
|
|
1011
|
+
docker restart 9router
|
|
1012
|
+
docker stop 9router && docker rm 9router
|
|
1013
|
+
```
|
|
1014
|
+
|
|
1015
|
+
### 環境変数
|
|
1016
|
+
|
|
1017
|
+
| 変数 | デフォルト | 説明 |
|
|
1018
|
+
|------|-----------|------|
|
|
1019
|
+
| `JWT_SECRET` | `9router-default-secret-change-me` | ダッシュボード認証クッキーのJWT署名シークレット(**本番環境では変更必須**) |
|
|
1020
|
+
| `INITIAL_PASSWORD` | `123456` | 保存されたハッシュがない場合の初回ログインパスワード |
|
|
1021
|
+
| `DATA_DIR` | `~/.9router` | メインアプリのデータベース格納場所(`db.json`) |
|
|
1022
|
+
| `PORT` | フレームワークデフォルト | サービスポート(例では`20128`) |
|
|
1023
|
+
| `HOSTNAME` | フレームワークデフォルト | バインドホスト(Dockerデフォルトは`0.0.0.0`) |
|
|
1024
|
+
| `NODE_ENV` | ランタイムデフォルト | デプロイ時は`production`に設定 |
|
|
1025
|
+
| `BASE_URL` | `http://localhost:20128` | クラウド同期ジョブで使用されるサーバーサイド内部ベースURL |
|
|
1026
|
+
| `CLOUD_URL` | `https://9router.com` | サーバーサイドのクラウド同期エンドポイントベースURL |
|
|
1027
|
+
| `NEXT_PUBLIC_BASE_URL` | `http://localhost:3000` | 後方互換/公開ベースURL(サーバーランタイムには`BASE_URL`を推奨) |
|
|
1028
|
+
| `NEXT_PUBLIC_CLOUD_URL` | `https://9router.com` | 後方互換/公開クラウドURL(サーバーランタイムには`CLOUD_URL`を推奨) |
|
|
1029
|
+
| `API_KEY_SECRET` | `endpoint-proxy-api-key-secret` | 生成されたAPIキーのHMACシークレット |
|
|
1030
|
+
| `MACHINE_ID_SALT` | `endpoint-proxy-salt` | 安定したマシンIDハッシュのソルト |
|
|
1031
|
+
| `ENABLE_REQUEST_LOGS` | `false` | `logs/` 配下のリクエスト/レスポンスログを有効化 |
|
|
1032
|
+
| `AUTH_COOKIE_SECURE` | `false` | 認証クッキーに`Secure`を強制(HTTPSリバースプロキシの背後では`true`に設定) |
|
|
1033
|
+
| `REQUIRE_API_KEY` | `false` | `/v1/*` ルートでBearer APIキーを必須にする(インターネット公開デプロイで推奨) |
|
|
1034
|
+
| `HTTP_PROXY`, `HTTPS_PROXY`, `ALL_PROXY`, `NO_PROXY` | 空 | アップストリームプロバイダー呼び出し用のオプショナルアウトバウンドプロキシ |
|
|
1035
|
+
|
|
1036
|
+
注意事項:
|
|
1037
|
+
- 小文字のプロキシ変数もサポート: `http_proxy`, `https_proxy`, `all_proxy`, `no_proxy`
|
|
1038
|
+
- `.env` はDockerイメージにベイクされません(`.dockerignore`); `--env-file` または `-e` でランタイム設定を注入してください。
|
|
1039
|
+
- Windowsでは、`APPDATA` をローカルストレージパスの解決に使用できます。
|
|
1040
|
+
- `INSTANCE_NAME` は古いドキュメント/envテンプレートに記載がありますが、現在ランタイムでは使用されていません。
|
|
1041
|
+
|
|
1042
|
+
### ランタイムファイルとストレージ
|
|
1043
|
+
|
|
1044
|
+
- メインアプリ状態: `${DATA_DIR}/db.json`(プロバイダー、コンボ、エイリアス、キー、設定)、`src/lib/localDb.js` で管理。
|
|
1045
|
+
- 使用履歴とログ: `~/.9router/usage.json` と `~/.9router/log.txt`、`src/lib/usageDb.js` で管理。
|
|
1046
|
+
- オプションのリクエスト/トランスレーターログ: `ENABLE_REQUEST_LOGS=true` 時に `<repo>/logs/...`。
|
|
1047
|
+
- 使用状況ストレージは現在 `~/.9router` パスロジックに従い、`DATA_DIR` とは独立しています。
|
|
1048
|
+
|
|
1049
|
+
</details>
|
|
1050
|
+
|
|
1051
|
+
---
|
|
1052
|
+
|
|
1053
|
+
## 📊 利用可能なモデル
|
|
1054
|
+
|
|
1055
|
+
<details>
|
|
1056
|
+
<summary><b>すべての利用可能なモデルを表示</b></summary>
|
|
1057
|
+
|
|
1058
|
+
**Claude Code (`cc/`)** - Pro/Max:
|
|
1059
|
+
- `cc/claude-opus-4-6`
|
|
1060
|
+
- `cc/claude-sonnet-4-5-20250929`
|
|
1061
|
+
- `cc/claude-haiku-4-5-20251001`
|
|
1062
|
+
|
|
1063
|
+
**Codex (`cx/`)** - Plus/Pro:
|
|
1064
|
+
- `cx/gpt-5.2-codex`
|
|
1065
|
+
- `cx/gpt-5.1-codex-max`
|
|
1066
|
+
|
|
1067
|
+
**Gemini CLI (`gc/`)** - 無料:
|
|
1068
|
+
- `gc/gemini-3-flash-preview`
|
|
1069
|
+
- `gc/gemini-2.5-pro`
|
|
1070
|
+
|
|
1071
|
+
**GitHub Copilot (`gh/`)**:
|
|
1072
|
+
- `gh/gpt-5`
|
|
1073
|
+
- `gh/claude-4.5-sonnet`
|
|
1074
|
+
|
|
1075
|
+
**GLM (`glm/`)** - $0.6/1M:
|
|
1076
|
+
- `glm/glm-4.7`
|
|
1077
|
+
|
|
1078
|
+
**MiniMax (`minimax/`)** - $0.2/1M:
|
|
1079
|
+
- `minimax/MiniMax-M2.1`
|
|
1080
|
+
|
|
1081
|
+
**iFlow (`if/`)** - 無料:
|
|
1082
|
+
- `if/kimi-k2-thinking`
|
|
1083
|
+
- `if/qwen3-coder-plus`
|
|
1084
|
+
- `if/deepseek-r1`
|
|
1085
|
+
|
|
1086
|
+
**Qwen (`qw/`)** - 無料:
|
|
1087
|
+
- `qw/qwen3-coder-plus`
|
|
1088
|
+
- `qw/qwen3-coder-flash`
|
|
1089
|
+
|
|
1090
|
+
**Kiro (`kr/`)** - 無料:
|
|
1091
|
+
- `kr/claude-sonnet-4.5`
|
|
1092
|
+
- `kr/claude-haiku-4.5`
|
|
1093
|
+
|
|
1094
|
+
</details>
|
|
1095
|
+
|
|
1096
|
+
---
|
|
1097
|
+
|
|
1098
|
+
## 🐛 トラブルシューティング
|
|
1099
|
+
|
|
1100
|
+
**「Language model did not provide messages」**
|
|
1101
|
+
- プロバイダーのクオータが使い果たされた → ダッシュボードのクオータトラッカーを確認
|
|
1102
|
+
- 解決策: コンボフォールバックを使用するか、より安いティアに切り替え
|
|
1103
|
+
|
|
1104
|
+
**レート制限**
|
|
1105
|
+
- サブスクリプションクオータ切れ → GLM/MiniMaxにフォールバック
|
|
1106
|
+
- コンボを追加: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
|
|
1107
|
+
|
|
1108
|
+
**OAuthトークンの期限切れ**
|
|
1109
|
+
- 9Routerが自動リフレッシュ
|
|
1110
|
+
- 問題が続く場合: ダッシュボード → Provider → 再接続
|
|
1111
|
+
|
|
1112
|
+
**高コスト**
|
|
1113
|
+
- ダッシュボードで使用状況を確認
|
|
1114
|
+
- プライマリモデルをGLM/MiniMaxに切り替え
|
|
1115
|
+
- 重要でないタスクには無料ティア(Gemini CLI、iFlow)を使用
|
|
1116
|
+
|
|
1117
|
+
**ダッシュボードが違うポートで開く**
|
|
1118
|
+
- `PORT=20128` と `NEXT_PUBLIC_BASE_URL=http://localhost:20128` を設定
|
|
1119
|
+
|
|
1120
|
+
**初回ログインできない**
|
|
1121
|
+
- `.env` の `INITIAL_PASSWORD` を確認
|
|
1122
|
+
- 未設定の場合、デフォルトパスワードは `123456`
|
|
1123
|
+
|
|
1124
|
+
**`logs/` にリクエストログがない**
|
|
1125
|
+
- `ENABLE_REQUEST_LOGS=true` に設定
|
|
1126
|
+
|
|
1127
|
+
---
|
|
1128
|
+
|
|
1129
|
+
## 🛠️ 技術スタック
|
|
1130
|
+
|
|
1131
|
+
- **ランタイム**: Node.js 20+
|
|
1132
|
+
- **フレームワーク**: Next.js 16
|
|
1133
|
+
- **UI**: React 19 + Tailwind CSS 4
|
|
1134
|
+
- **データベース**: LowDB(JSONファイルベース)
|
|
1135
|
+
- **ストリーミング**: Server-Sent Events (SSE)
|
|
1136
|
+
- **認証**: OAuth 2.0 (PKCE) + JWT + APIキー
|
|
1137
|
+
|
|
1138
|
+
---
|
|
1139
|
+
|
|
1140
|
+
## 📝 APIリファレンス
|
|
1141
|
+
|
|
1142
|
+
### チャット補完
|
|
1143
|
+
|
|
1144
|
+
```bash
|
|
1145
|
+
POST http://localhost:20128/v1/chat/completions
|
|
1146
|
+
Authorization: Bearer your-api-key
|
|
1147
|
+
Content-Type: application/json
|
|
1148
|
+
|
|
1149
|
+
{
|
|
1150
|
+
"model": "cc/claude-opus-4-6",
|
|
1151
|
+
"messages": [
|
|
1152
|
+
{"role": "user", "content": "Write a function to..."}
|
|
1153
|
+
],
|
|
1154
|
+
"stream": true
|
|
1155
|
+
}
|
|
1156
|
+
```
|
|
1157
|
+
|
|
1158
|
+
### モデル一覧
|
|
1159
|
+
|
|
1160
|
+
```bash
|
|
1161
|
+
GET http://localhost:20128/v1/models
|
|
1162
|
+
Authorization: Bearer your-api-key
|
|
1163
|
+
|
|
1164
|
+
→ すべてのモデル + コンボをOpenAI形式で返却
|
|
1165
|
+
```
|
|
1166
|
+
|
|
1167
|
+
## 📧 サポート
|
|
1168
|
+
|
|
1169
|
+
- **ウェブサイト**: [9router.com](https://9router.com)
|
|
1170
|
+
- **GitHub**: [github.com/decolua/9router](https://github.com/decolua/9router)
|
|
1171
|
+
- **Issues**: [github.com/decolua/9router/issues](https://github.com/decolua/9router/issues)
|
|
1172
|
+
|
|
1173
|
+
---
|
|
1174
|
+
|
|
1175
|
+
## 👥 コントリビューター
|
|
1176
|
+
|
|
1177
|
+
9Routerの改善に貢献してくださったすべてのコントリビューターに感謝します!
|
|
1178
|
+
|
|
1179
|
+
[](https://github.com/decolua/9router/graphs/contributors)
|
|
1180
|
+
|
|
1181
|
+
---
|
|
1182
|
+
|
|
1183
|
+
## 📊 スターチャート
|
|
1184
|
+
|
|
1185
|
+
[](https://starchart.cc/decolua/9router)
|
|
1186
|
+
|
|
1187
|
+
|
|
1188
|
+
|
|
1189
|
+
## 🔀 フォーク
|
|
1190
|
+
|
|
1191
|
+
**[OmniRoute](https://github.com/diegosouzapw/OmniRoute)** — 9RouterのフルフィーチャーTypeScriptフォーク。36以上のプロバイダー、4段階自動フォールバック、マルチモーダルAPI(画像、埋め込み、音声、TTS)、サーキットブレーカー、セマンティックキャッシュ、LLM評価、洗練されたダッシュボードを追加。368以上のユニットテスト。npmとDockerで利用可能。
|
|
1192
|
+
|
|
1193
|
+
---
|
|
1194
|
+
|
|
1195
|
+
## 🙏 謝辞
|
|
1196
|
+
|
|
1197
|
+
**CLIProxyAPI** に特別な感謝を — このJavaScriptポートのインスピレーションとなったオリジナルのGo実装です。
|
|
1198
|
+
|
|
1199
|
+
---
|
|
1200
|
+
|
|
1201
|
+
## 📄 ライセンス
|
|
1202
|
+
|
|
1203
|
+
MITライセンス - 詳細は [LICENSE](LICENSE) を参照してください。
|
|
1204
|
+
|
|
1205
|
+
---
|
|
1206
|
+
|
|
1207
|
+
<div align="center">
|
|
1208
|
+
<sub>24時間365日コーディングする開発者のために ❤️ で構築</sub>
|
|
1209
|
+
</div>
|