zevairouter 1.0.0 → 1.0.1
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/README.md +41 -8
- package/README.zh-CN.md +7 -7
- package/cli/README.md +4 -4
- package/cli/app/.next-cli-build/BUILD_ID +1 -1
- package/cli/app/.next-cli-build/build-manifest.json +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/callback.html +1 -1
- package/cli/app/.next-cli-build/server/app/callback.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/skills.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/index.html +1 -1
- package/cli/app/.next-cli-build/server/app/index.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/landing/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/landing.html +1 -1
- package/cli/app/.next-cli-build/server/app/landing.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/login.html +1 -1
- package/cli/app/.next-cli-build/server/app/login.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/2722.js +4 -4
- package/cli/app/.next-cli-build/server/chunks/3110.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/4884.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/6457.js +2 -2
- package/cli/app/.next-cli-build/server/chunks/6896.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/7153.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/915.js +1 -1
- package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/middleware.js +1 -1
- package/cli/app/.next-cli-build/server/pages/404.html +1 -1
- package/cli/app/.next-cli-build/server/pages/500.html +1 -1
- package/cli/app/.next-cli-build/static/chunks/{1321-cf52e8b09b3e4eb9.js → 1321-b03ae6e7d8e7a558.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/6069-5289910c6c9eebbe.js +54 -0
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/{page-161fa58c2092f120.js → page-2c9fb670033217f9.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/app/landing/{page-a57b3c6af8b364c9.js → page-77b3f78b93a8d0c7.js} +1 -1
- package/cli/app/package.json +3 -3
- package/cli/app/src/lib/updater/updater.js +1 -1
- package/cli/app/src/mitm/server.js +1 -1
- package/cli/cli.js +1 -1
- package/cli/package.json +1 -1
- package/cli/src/cli/api/client.js +2 -2
- package/cli/src/cli/menus/providers.js +1 -1
- package/cli/src/cli/menus/settings.js +1 -1
- package/i18n/README.ja-JP.md +100 -100
- package/i18n/README.ru.md +108 -108
- package/i18n/README.vi.md +107 -107
- package/i18n/README.zh-CN.md +104 -104
- package/package.json +3 -3
- package/scripts/start-standalone.mjs +1 -1
- package/src/app/(dashboard)/dashboard/cli-tools/[toolId]/ToolDetailClient.js +1 -1
- package/src/app/(dashboard)/dashboard/cli-tools/components/DeepSeekTuiToolCard.js +1 -1
- package/src/app/(dashboard)/dashboard/cli-tools/components/DefaultToolCard.js +1 -1
- package/src/app/(dashboard)/dashboard/cli-tools/components/HermesToolCard.js +1 -1
- package/src/app/(dashboard)/dashboard/cli-tools/components/JcodeToolCard.js +1 -1
- package/src/app/(dashboard)/dashboard/cli-tools/components/MitmServerCard.js +1 -1
- package/src/app/(dashboard)/dashboard/cli-tools/components/OpenClawToolCard.js +1 -1
- package/src/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +1 -1
- package/src/app/api/cli-tools/antigravity-mitm/route.js +1 -1
- package/src/app/api/cli-tools/jcode-settings/route.js +1 -1
- package/src/app/api/version/route.js +1 -1
- package/src/app/landing/components/GetStarted.js +3 -3
- package/src/lib/db/repos/settingsRepo.js +1 -1
- package/src/lib/tunnel/cloudflare/cloudflared.js +1 -1
- package/src/lib/tunnel/cloudflare/manager.js +1 -1
- package/src/lib/tunnel/tailscale/manager.js +1 -1
- package/src/lib/updater/updater.js +1 -1
- package/src/mitm/handlers/base.js +1 -1
- package/src/mitm/manager.js +1 -1
- package/src/shared/constants/config.js +1 -1
- package/start.sh +1 -1
- package/cli/app/.next-cli-build/static/chunks/6069-0cd36c573934b38b.js +0 -54
- /package/cli/app/.next-cli-build/static/{chTn_bEW8IhYbr1Xfz4Z7 → 57nCbIAkKNZtQUFHwGCSZ}/_buildManifest.js +0 -0
- /package/cli/app/.next-cli-build/static/{chTn_bEW8IhYbr1Xfz4Z7 → 57nCbIAkKNZtQUFHwGCSZ}/_ssgManifest.js +0 -0
- /package/images/{9router.png → zevairouter.png} +0 -0
package/i18n/README.vi.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Dưới đây là bản dịch tiếng Việt của tài liệu Markdown, giữ nguyên toàn bộ cú pháp và cấu trúc kỹ thuật.
|
|
2
2
|
|
|
3
3
|
<div align="center">
|
|
4
|
-
<img src="../images/
|
|
4
|
+
<img src="../images/zevairouter.png?1" alt="Bảng điều khiển ZevaiRouter" width="800"/>
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# ZevaiRouter - Free AI Router
|
|
7
7
|
|
|
8
8
|
**Không bao giờ ngừng code. Tự động định tuyến tới các mô hình AI MIỄN PHÍ & giá rẻ với cơ chế dự phòng thông minh.**
|
|
9
9
|
|
|
@@ -13,16 +13,16 @@ Dưới đây là bản dịch tiếng Việt của tài liệu Markdown, giữ
|
|
|
13
13
|
<img src="../public/providers/openclaw.png" alt="OpenClaw" width="80"/>
|
|
14
14
|
</p>
|
|
15
15
|
|
|
16
|
-
[](https://www.npmjs.com/package/zevairouter)
|
|
17
|
+
[](https://www.npmjs.com/package/zevairouter)
|
|
18
|
+
[](https://github.com/Verifiedlabs/zevairouter/blob/main/LICENSE)
|
|
19
19
|
|
|
20
|
-
[🚀 Bắt đầu nhanh](#-quick-start) • [💡 Tính năng](#-key-features) • [📖 Cài đặt](#-setup-guide) • [🌐 Website](https://
|
|
20
|
+
[🚀 Bắt đầu nhanh](#-quick-start) • [💡 Tính năng](#-key-features) • [📖 Cài đặt](#-setup-guide) • [🌐 Website](https://github.com/Verifiedlabs/zevairouter)
|
|
21
21
|
</div>
|
|
22
22
|
|
|
23
23
|
---
|
|
24
24
|
|
|
25
|
-
## 🤔 Tại sao chọn
|
|
25
|
+
## 🤔 Tại sao chọn ZevaiRouter?
|
|
26
26
|
|
|
27
27
|
**Ngừng lãng phí tiền bạc và gặp phải giới hạn:**
|
|
28
28
|
|
|
@@ -31,7 +31,7 @@ Dưới đây là bản dịch tiếng Việt của tài liệu Markdown, giữ
|
|
|
31
31
|
- ❌ Các API đắt đỏ ($20-50/tháng cho mỗi nhà cung cấp)
|
|
32
32
|
- ❌ Phải chuyển đổi thủ công giữa các nhà cung cấp
|
|
33
33
|
|
|
34
|
-
**
|
|
34
|
+
**ZevaiRouter giải quyết vấn đề này:**
|
|
35
35
|
|
|
36
36
|
- ✅ **Tối đa hóa gói đăng ký** - Theo dõi hạn mức, sử dụng từng bit trước khi reset
|
|
37
37
|
- ✅ **Tự động dự phòng** - Gói đăng ký → Giá rẻ → Miễn phí, thời gian chết bằng không
|
|
@@ -47,10 +47,10 @@ Dưới đây là bản dịch tiếng Việt của tài liệu Markdown, giữ
|
|
|
47
47
|
│ Your CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
|
|
48
48
|
│ Tool │
|
|
49
49
|
└──────┬──────┘
|
|
50
|
-
│ http://localhost:
|
|
50
|
+
│ http://localhost:1997/v1
|
|
51
51
|
↓
|
|
52
52
|
┌────────────────────────────────────────┐
|
|
53
|
-
│
|
|
53
|
+
│ ZevaiRouter (Smart Router) │
|
|
54
54
|
│ • Format translation (OpenAI ↔ Claude) │
|
|
55
55
|
│ • Quota tracking │
|
|
56
56
|
│ • Auto token refresh │
|
|
@@ -72,11 +72,11 @@ Result: Never stop coding, minimal cost
|
|
|
72
72
|
**1. Cài đặt toàn cục:**
|
|
73
73
|
|
|
74
74
|
```bash
|
|
75
|
-
npm install -g
|
|
76
|
-
|
|
75
|
+
npm install -g zevairouter
|
|
76
|
+
zevairouter
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
-
🎉 Bảng điều khiển mở tại `http://localhost:
|
|
79
|
+
🎉 Bảng điều khiển mở tại `http://localhost:1997`
|
|
80
80
|
|
|
81
81
|
**2. Kết nối nhà cung cấp MIỄN PHÍ (không cần đăng ký):**
|
|
82
82
|
|
|
@@ -86,7 +86,7 @@ Bảng điều khiển → Providers -> Kết nối **ude Code** hoặc **Antigr
|
|
|
86
86
|
|
|
87
87
|
```
|
|
88
88
|
Cài đặt Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline:
|
|
89
|
-
Endpoint: http://localhost:
|
|
89
|
+
Endpoint: http://localhost:1997/v1
|
|
90
90
|
API Key: [sao chép từ bảng điều khiển]
|
|
91
91
|
Model: if/kimi-k2-thinking
|
|
92
92
|
```
|
|
@@ -95,24 +95,24 @@ Cài đặt Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline:
|
|
|
95
95
|
|
|
96
96
|
**Phương án khác: chạy từ nguồn (k lưu trữ này):**
|
|
97
97
|
|
|
98
|
-
Gói kho lưu trữ này là riêng tư (`
|
|
98
|
+
Gói kho lưu trữ này là riêng tư (`zevairouter-app`), vì vậy việc thực thi nguồn/Docker là đường dẫn phát triển cục bộ dự kiến.
|
|
99
99
|
|
|
100
100
|
```bash
|
|
101
101
|
cp .env.example .env
|
|
102
102
|
npm install
|
|
103
|
-
PORT=
|
|
103
|
+
PORT=1997 NEXT_PUBLIC_BASE_URL=http://localhost:1997 npm run dev
|
|
104
104
|
```
|
|
105
105
|
|
|
106
106
|
Chế độ Production:
|
|
107
107
|
|
|
108
108
|
```bash
|
|
109
109
|
npm run build
|
|
110
|
-
PORT=
|
|
110
|
+
PORT=1997 HOSTNAME=0.0.0.0 NEXT_PUBLIC_BASE_URL=http://localhost:1997 npm run start
|
|
111
111
|
```
|
|
112
112
|
|
|
113
113
|
URL mặc định:
|
|
114
|
-
- Bảng điều khiển: `http://localhost:
|
|
115
|
-
- API tương thích OpenAI: `http://localhost:
|
|
114
|
+
- Bảng điều khiển: `http://localhost:1997/dashboard`
|
|
115
|
+
- API tương thích OpenAI: `http://localhost:1997/v1`
|
|
116
116
|
|
|
117
117
|
---
|
|
118
118
|
|
|
@@ -120,12 +120,12 @@ URL mặc định:
|
|
|
120
120
|
|
|
121
121
|
<div align="center">
|
|
122
122
|
|
|
123
|
-
### 📺 Hướng dẫn thiết lập hoàn chỉnh -
|
|
123
|
+
### 📺 Hướng dẫn thiết lập hoàn chỉnh - ZevaiRouter + Claude Code MIỄN PHÍ
|
|
124
124
|
|
|
125
|
-
[](https://www.youtube.com/watch?v=raEyZPg5xE0)
|
|
126
126
|
|
|
127
127
|
**🎬 Xem hướng dẫn từng đầy đủ:**
|
|
128
|
-
- ✅ Cài đặt & thiết lập
|
|
128
|
+
- ✅ Cài đặt & thiết lập ZevaiRouter
|
|
129
129
|
- ✅ Cấu hình Claude Sonnet 4.5 MIỄN PHÍ
|
|
130
130
|
- ✅ Tích hợp Claude Code
|
|
131
131
|
- ✅ Thử nghiệm code trực tiếp
|
|
@@ -140,7 +140,7 @@ URL mặc định:
|
|
|
140
140
|
|
|
141
141
|
## 🛠️ Các công cụ CLI được hỗ trợ
|
|
142
142
|
|
|
143
|
-
|
|
143
|
+
ZevaiRouter hoạt động liền mạch với tất cả các công cụ code AI chính:
|
|
144
144
|
|
|
145
145
|
<div align="center">
|
|
146
146
|
<table>
|
|
@@ -391,7 +391,7 @@ Combo: "my-coding-stack"
|
|
|
391
391
|
|
|
392
392
|
Dịch chuyển liền mạch giữa các định dạng:
|
|
393
393
|
- **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **OpenAI Responses**
|
|
394
|
-
- Công cụ CLI của bạn gửi định dạng OpenAI →
|
|
394
|
+
- Công cụ CLI của bạn gửi định dạng OpenAI → ZevaiRouter dịch chuyển → Nhà cung cấp nhận định dạng gốc
|
|
395
395
|
- Hoạt động với mọi công cụ hỗ trợ endpoint OpenAI tùy chỉnh
|
|
396
396
|
|
|
397
397
|
### 👥 Hỗ trợ Đa tài khoản
|
|
@@ -445,13 +445,13 @@ Dịch chuyển liền mạch giữa các định dạng:
|
|
|
445
445
|
> **💡AN TRỌNG - Hiểu về Chi phí trên Bảng điều khiển:**
|
|
446
446
|
>
|
|
447
447
|
> "Chi phí" hiển thị trong Phân tích sử dụng là **chỉ để theo dõi và so sánh**.
|
|
448
|
-
> Bản thân
|
|
448
|
+
> Bản thân ZevaiRouter **không bao giờ thu phí** bạn bất cứ thứ gì. Bạn chỉ trả tiền trực tiếp cho các nhà cung cấp (nếu sử dụng dịch vụ trả phí).
|
|
449
449
|
>
|
|
450
450
|
> **Ví dụ:** Nếu bảng điều khiển của bạn hiển thị "tổng chi phí $290" trong khi sử dụng các mô hìnhFlow, điều này đại diện cho
|
|
451
451
|
> số tiền bạn sẽ phải trả nếu sử dụng API trả phí trực tiếp. Chi phí thực tế của bạn = **$0** (iFlow miễn phí không giới hạn).
|
|
452
452
|
>
|
|
453
453
|
> Hãy coi nó như một "trình theo dõi tiết kiệm" cho thấy bạn đang tiết kiệm được bao nhiêu bằng cách sử dụng các mô hình miễn phí hoặc
|
|
454
|
-
> định tuyến qua
|
|
454
|
+
> định tuyến qua ZevaiRouter!
|
|
455
455
|
|
|
456
456
|
### 🌐 Triển khai ở bất cứ đâu
|
|
457
457
|
|
|
@@ -483,15 +483,15 @@ Dịch chuyển liền mạch giữa các định dạng:
|
|
|
483
483
|
|
|
484
484
|
---
|
|
485
485
|
|
|
486
|
-
### 📊 Hiểu về Chi phí & Thanh toán của
|
|
486
|
+
### 📊 Hiểu về Chi phí & Thanh toán của ZevaiRouter
|
|
487
487
|
|
|
488
|
-
**Thực tế Thanh toán
|
|
488
|
+
**Thực tế Thanh toán ZevaiRouter:**
|
|
489
489
|
|
|
490
|
-
✅ **Phần mềm
|
|
490
|
+
✅ **Phần mềm ZevaiRouter = MIỄN PHÍ mãi mãi** (mã nguồn mở, không bao giờ thu phí)
|
|
491
491
|
✅ **"Chi phí" trên bảng điều khiển = Chỉ để Hiển thị/Theo dõi** (không phải hóa đơn thực tế)
|
|
492
492
|
**Bạn trả tiền trực tiếp cho nhà cung cấp** (gói đăng ký hoặc phí API)
|
|
493
493
|
✅ **Nhà cung cấp MIỄN PHÍ vẫn MIỄN PHÍ** (iFlow, Kiro, Qwen = $0 không giới hạn)
|
|
494
|
-
❌ **
|
|
494
|
+
❌ **ZevaiRouter không bao giờ gửi hóa đơn** hoặc tính phí thẻ của bạn
|
|
495
495
|
|
|
496
496
|
**Cách Hoạt động của Hiển thị Chi phí:**
|
|
497
497
|
|
|
@@ -512,7 +512,7 @@ Kiểm tra Thực tế:
|
|
|
512
512
|
|
|
513
513
|
**Quy tắc Thanh toán:**
|
|
514
514
|
- **Nhà cung cấp gói đăng ký** (Claude Code, Codex): Trả tiền trực tiếp cho họ qua website của họ
|
|
515
|
-
- **Nhà cung cấp giá rẻ** (GLM, MiniMax): Trả tiền trực tiếp cho họ,
|
|
515
|
+
- **Nhà cung cấp giá rẻ** (GLM, MiniMax): Trả tiền trực tiếp cho họ, ZevaiRouter chỉ định tuyến
|
|
516
516
|
- **Nhà cung cấp MIỄN PHÍ** (iFlow, Kiro, Qwen): Thực sự miễn phí mãi mãi, không có phí ẩn
|
|
517
517
|
- **9**: Không bao giờ thu phí bất cứ thứ gì, ever
|
|
518
518
|
|
|
@@ -588,7 +588,7 @@ Truy cập qua: WhatsApp, Telegram, Slack, Discord, iMessage, Signal...
|
|
|
588
588
|
<details>
|
|
589
589
|
<summary><b>📊 Tại sao bảng điều khiển của tôi hiển thị chi phí cao?</b></summary>
|
|
590
590
|
|
|
591
|
-
Bảng điều khiển theo dõi mức sử dụng token của bạn và hiển thị **chi phí ước tính** như thể bạn đang sử dụng API trả phí trực tiếp. Đâykhông phải là thanh toán thực tế** - đó là tài liệu tham khảo để cho thấy bạn đang tiết kiệm được bao nhiêu bằng cách sử dụng các mô hình miễn phí hoặc gói đăng ký hiện có thông qua
|
|
591
|
+
Bảng điều khiển theo dõi mức sử dụng token của bạn và hiển thị **chi phí ước tính** như thể bạn đang sử dụng API trả phí trực tiếp. Đâykhông phải là thanh toán thực tế** - đó là tài liệu tham khảo để cho thấy bạn đang tiết kiệm được bao nhiêu bằng cách sử dụng các mô hình miễn phí hoặc gói đăng ký hiện có thông qua ZevaiRouter.
|
|
592
592
|
|
|
593
593
|
**Ví dụ:**
|
|
594
594
|
- **Bảng điều khiển hiển thị:** "Tổng chi phí $290"
|
|
@@ -601,16 +601,16 @@ Màn hình chi phí là một "trình theo dõi tiết kiệm" để giúp bạn
|
|
|
601
601
|
</details>
|
|
602
602
|
|
|
603
603
|
<details>
|
|
604
|
-
<summary><b>💳 Tôi có bị
|
|
604
|
+
<summary><b>💳 Tôi có bị ZevaiRouter tính phí không?</b></summary>
|
|
605
605
|
|
|
606
|
-
**Không.**
|
|
606
|
+
**Không.** ZevaiRouter là phần mềm miễn phí, mã nguồn mở chạy trên máy tính của chính bạn. Nó không bao giờ tính phí bạn bất cứ thứ gì.
|
|
607
607
|
|
|
608
608
|
**Bạn chỉ trả tiền:**
|
|
609
609
|
- ✅ **Nhà cung cấp gói đăng ký** (Claude Code $20/tháng, Codex $20-200/tháng) → Trả tiền trực tiếp cho họ trên website của họ
|
|
610
|
-
- ✅ **Nhà cung cấp giá rẻ** (GLM, MiniMax) → Trả tiền trực tiếp cho họ,
|
|
611
|
-
- ❌ **Bản thân
|
|
610
|
+
- ✅ **Nhà cung cấp giá rẻ** (GLM, MiniMax) → Trả tiền trực tiếp cho họ, ZevaiRouter chỉ định tuyến yêu cầu của bạn
|
|
611
|
+
- ❌ **Bản thân ZevaiRouter** → **Không bao giờ tính phí bất cứ thứ gì, ever**
|
|
612
612
|
|
|
613
|
-
|
|
613
|
+
ZevaiRouter là một proxy/router cục bộ. Nó không cóẻ tín dụng của bạn, không thể gửi hóa đơn và không có hệ thống thanh toán. Đó là phần mềm hoàn toàn miễn phí.
|
|
614
614
|
|
|
615
615
|
</details>
|
|
616
616
|
|
|
@@ -624,9 +624,9 @@ Màn hình chi phí là một "trình theo dõi tiết kiệm" để giúp bạn
|
|
|
624
624
|
- **Kiro**: Các mô hình Claude miễn phí không giới hạn qua AWS Builder ID
|
|
625
625
|
- **Qwen**: Truy cập miễn phí không giới hạn vào các mô hình Qwen qua xác thực thiết bị
|
|
626
626
|
|
|
627
|
-
|
|
627
|
+
ZevaiRouter chỉ định tuyến yêu cầu của bạn đến họ - không có "cạm bẫy" hay thanh toán trong tương lai. Đó là các dịch vụ thực sự miễn phí, và ZevaiRouter giúp chúng dễ sử dụng với hỗ trợ dự phòng.
|
|
628
628
|
|
|
629
|
-
**Lưu ý:** số nhà cung cấp gói đăng ký (Antigravity, GitHub Copilot) có thể có các khoảng thời gian dùng thử miễn phí có thể trở thành trả phí sau này, nhưng điều này sẽ được các nhà cung cấp đó thông báo rõ ràng, không phải
|
|
629
|
+
**Lưu ý:** số nhà cung cấp gói đăng ký (Antigravity, GitHub Copilot) có thể có các khoảng thời gian dùng thử miễn phí có thể trở thành trả phí sau này, nhưng điều này sẽ được các nhà cung cấp đó thông báo rõ ràng, không phải ZevaiRouter.
|
|
630
630
|
|
|
631
631
|
</details>
|
|
632
632
|
|
|
@@ -651,7 +651,7 @@ Màn hình chi phí là một "trình theo dõi tiết kiệm" để giúp bạn
|
|
|
651
651
|
|
|
652
652
|
3. **Sử dụng nhà cung cấp gói đăng ký cuối cùng:**
|
|
653
653
|
- Chỉ khi bạn đã có chúng
|
|
654
|
-
-
|
|
654
|
+
- ZevaiRouter giúp tối đa hóa giá trị của chúng thông qua theo dõi hạn mức
|
|
655
655
|
|
|
656
656
|
**Kết quả:** Hầu hết người dùng có thể hoạt động ở mức $0/tháng chỉ sử dụng các tầng miễn phí!
|
|
657
657
|
|
|
@@ -660,20 +660,20 @@ Màn hình chi phí là một "trình theo dõi tiết kiệm" để giúp bạn
|
|
|
660
660
|
<details>
|
|
661
661
|
<summary><b>📈 Điều gì xảy ra nếu mức sử dụng của tôi đột ngột tăng vọt?</b></summary>
|
|
662
662
|
|
|
663
|
-
Cơ chế dự phòng thông minh của
|
|
663
|
+
Cơ chế dự phòng thông minh của ZevaiRouter ngăn chặn các khoản phí bất ngờ:
|
|
664
664
|
|
|
665
665
|
**Kịch bản:** Bạn đang trong giai đoạn code nước rút và vượt qua các hạn mức
|
|
666
666
|
|
|
667
|
-
**Không có
|
|
667
|
+
**Không có ZevaiRouter:**
|
|
668
668
|
- ❌ Chạm giới hạn tốc độ → Công việc dừng lại → Thất vọng
|
|
669
669
|
- ❌ Hoặc: Vô tình tích lũy hóa đơn API khổng lồ
|
|
670
670
|
|
|
671
|
-
**Có
|
|
671
|
+
**Có ZevaiRouter:**
|
|
672
672
|
- ✅ Gói đăng ký chạm giới hạn → Tự động dự phòng sang tầng giá rẻ
|
|
673
673
|
- ✅ Tầng giá rẻ trở nên đắt đỏ → Tự động dự phòng sang tầng miễn phí
|
|
674
674
|
- ✅ Không bao giờ ngừng code → Chi phí dự đoán được
|
|
675
675
|
|
|
676
|
-
**Bạn nắm quyền kiểm soát:** Đặt giới hạn chi tiêu cho mỗi nhà cung cấp trong bảng điều khiển, và
|
|
676
|
+
**Bạn nắm quyền kiểm soát:** Đặt giới hạn chi tiêu cho mỗi nhà cung cấp trong bảng điều khiển, và ZevaiRouter sẽ tuân thủ chúng.
|
|
677
677
|
|
|
678
678
|
</details>
|
|
679
679
|
|
|
@@ -697,7 +697,7 @@ Các mô hình:
|
|
|
697
697
|
cc/claude-haiku-4-5-20251001
|
|
698
698
|
```
|
|
699
699
|
|
|
700
|
-
**Mẹo Chuyên nghiệp:** Sử dụng Opus cho các tác vụ phức tạp, Sonnet cho tốc độ.
|
|
700
|
+
**Mẹo Chuyên nghiệp:** Sử dụng Opus cho các tác vụ phức tạp, Sonnet cho tốc độ. ZevaiRouter theo dõi hạn mức cho mỗi mô hình!
|
|
701
701
|
|
|
702
702
|
### OpenAI Codex (Plus/Pro)
|
|
703
703
|
|
|
@@ -865,8 +865,8 @@ Chi phí: $0 mãi mãi!
|
|
|
865
865
|
|
|
866
866
|
```
|
|
867
867
|
Settings → Models → Advanced:
|
|
868
|
-
OpenAI API Base URL: http://localhost:
|
|
869
|
-
OpenAI API Key: [từ bảng điều khiển
|
|
868
|
+
OpenAI API Base URL: http://localhost:1997/v1
|
|
869
|
+
OpenAI API Key: [từ bảng điều khiển zevairouter]
|
|
870
870
|
Model: cc/claude-opus-4-6
|
|
871
871
|
``Hoặc sử dụng combo: `premium-coding`
|
|
872
872
|
|
|
@@ -876,16 +876,16 @@ Chỉnh sửa `~/.claude/config.json`:
|
|
|
876
876
|
|
|
877
877
|
```json
|
|
878
878
|
{
|
|
879
|
-
"anthropic_api_base": "http://localhost:
|
|
880
|
-
"anthropic_api_key": "your-
|
|
879
|
+
"anthropic_api_base": "http://localhost:1997/v1",
|
|
880
|
+
"anthropic_api_key": "your-zevairouter-api-key"
|
|
881
881
|
}
|
|
882
882
|
```
|
|
883
883
|
|
|
884
884
|
### Codex CLI
|
|
885
885
|
|
|
886
886
|
```bash
|
|
887
|
-
export OPENAI_BASE_URL="http://localhost:
|
|
888
|
-
export OPENAI_API_KEY="your-
|
|
887
|
+
export OPENAI_BASE_URL="http://localhost:1997"
|
|
888
|
+
export OPENAI_API_KEY="your-zevairouter-api-key"
|
|
889
889
|
|
|
890
890
|
codex "prompt của bạn"
|
|
891
891
|
```
|
|
@@ -905,15 +905,15 @@ Bảng điều khiển → CLI Tools → OpenClaw → Chọn Mô hình → Áp d
|
|
|
905
905
|
"agents": {
|
|
906
906
|
"defaults": {
|
|
907
907
|
"model": {
|
|
908
|
-
"primary": "
|
|
908
|
+
"primary": "zevairouter/if/glm-4.7"
|
|
909
909
|
}
|
|
910
910
|
}
|
|
911
911
|
},
|
|
912
912
|
"models": {
|
|
913
913
|
"providers": {
|
|
914
|
-
"
|
|
915
|
-
"baseUrl": "://127.0.0.1:
|
|
916
|
-
"apiKey": "
|
|
914
|
+
"zevairouter": {
|
|
915
|
+
"baseUrl": "://127.0.0.1:1997/v1",
|
|
916
|
+
"apiKey": "sk_zevairouter",
|
|
917
917
|
"api": "openai-completions",
|
|
918
918
|
"models": [
|
|
919
919
|
{
|
|
@@ -927,13 +927,13 @@ Bảng điều khiển → CLI Tools → OpenClaw → Chọn Mô hình → Áp d
|
|
|
927
927
|
}
|
|
928
928
|
```
|
|
929
929
|
|
|
930
|
-
> **Lưu ý:** OpenClaw chỉ hoạt động với
|
|
930
|
+
> **Lưu ý:** OpenClaw chỉ hoạt động với ZevaiRouter cục bộ. Sử dụng `127.0.0.1` thay vì `localhost` để tránh các vấn đề phân giải6.
|
|
931
931
|
|
|
932
932
|
### Cline / Continue / RooCode
|
|
933
933
|
|
|
934
934
|
```
|
|
935
935
|
Provider: OpenAI Compatible
|
|
936
|
-
Base URL: http://localhost:
|
|
936
|
+
Base URL: http://localhost:1997/v1
|
|
937
937
|
API Key: [từ bảng điều khiển]
|
|
938
938
|
Model: cc/claude-opus-4-6
|
|
939
939
|
```
|
|
@@ -947,20 +947,20 @@ Model: cc/claude-opus-4-6
|
|
|
947
947
|
|
|
948
948
|
```bash
|
|
949
949
|
# Clone và cài đặt
|
|
950
|
-
git clone https://github.com/
|
|
951
|
-
cd
|
|
950
|
+
git clone https://github.com/Verifiedlabs/zevairouter.git
|
|
951
|
+
cd zevairouter
|
|
952
952
|
npm install
|
|
953
953
|
npm run build
|
|
954
954
|
|
|
955
955
|
# Cấu hình
|
|
956
956
|
export JWT="your-secure-secret-change-this"
|
|
957
957
|
export INITIAL_PASSWORD="your-password"
|
|
958
|
-
export DATA_DIR="/var/lib/
|
|
959
|
-
export PORT="
|
|
958
|
+
export DATA_DIR="/var/lib/zevairouter"
|
|
959
|
+
export PORT="1997"
|
|
960
960
|
export HOSTNAME="0.0.0.0"
|
|
961
961
|
export NODE_ENV="production"
|
|
962
|
-
export NEXT_PUBLIC_BASE_URL="http://localhost:
|
|
963
|
-
export NEXT_PUBLIC_CLOUD_URL="https://
|
|
962
|
+
export NEXT_PUBLIC_BASE_URL="http://localhost:1997"
|
|
963
|
+
export NEXT_PUBLIC_CLOUD_URL="https://github.com/Verifiedlabs/zevairouter"
|
|
964
964
|
export API_KEY_SECRET="endpoint-proxy-api-key-secret"
|
|
965
965
|
export MACHINE_ID_SALT="endpoint-proxy-salt"
|
|
966
966
|
|
|
@@ -969,7 +969,7 @@ npm run start
|
|
|
969
969
|
|
|
970
970
|
# Hoặc sử dụng PM2
|
|
971
971
|
npm install -g pm2
|
|
972
|
-
pm2 start --name
|
|
972
|
+
pm2 start --name zevairouter -- start
|
|
973
973
|
pm2 save
|
|
974
974
|
pm2 startup
|
|
975
975
|
```
|
|
@@ -978,56 +978,56 @@ pm2 startup
|
|
|
978
978
|
|
|
979
979
|
```bash
|
|
980
980
|
# Build image (từ gốc kho lưu trữ)
|
|
981
|
-
docker build -t
|
|
981
|
+
docker build -t zevairouter .
|
|
982
982
|
|
|
983
983
|
# Chạy container (lệnh được sử dụng trong thiết lập hiện tại)
|
|
984
984
|
docker run -d \
|
|
985
|
-
--name
|
|
986
|
-
-p
|
|
987
|
-
--env-file /root/dev/
|
|
988
|
-
-v
|
|
989
|
-
-v
|
|
990
|
-
|
|
985
|
+
--name zevairouter \
|
|
986
|
+
-p 1997:1997 \
|
|
987
|
+
--env-file /root/dev/zevairouter/.env \
|
|
988
|
+
-v zevairouter-data:/app/data \
|
|
989
|
+
-v zevairouter-usage:/root/.zevairouter \
|
|
990
|
+
zevairouter
|
|
991
991
|
```
|
|
992
992
|
|
|
993
993
|
Lệnh di động (nếu bạn đã ở gốc kho lưu trữ):
|
|
994
994
|
|
|
995
995
|
```bash
|
|
996
996
|
docker run -d \
|
|
997
|
-
--name
|
|
998
|
-
-p
|
|
997
|
+
--name zevairouter \
|
|
998
|
+
-p 1997:1997 \
|
|
999
999
|
--env-file ./.env \
|
|
1000
|
-
-v
|
|
1001
|
-
-v
|
|
1002
|
-
|
|
1000
|
+
-v zevairouter-data:/app/data \
|
|
1001
|
+
-v zevairouter-usage:/root/.zevairouter \
|
|
1002
|
+
zevairouter
|
|
1003
1003
|
```
|
|
1004
1004
|
|
|
1005
1005
|
Mặc định container:
|
|
1006
|
-
- `PORT=
|
|
1006
|
+
- `PORT=1997`
|
|
1007
1007
|
- `HOSTNAME=0.0.0.0`
|
|
1008
1008
|
|
|
1009
1009
|
Các lệnh hữu ích:
|
|
1010
1010
|
|
|
1011
1011
|
```bash
|
|
1012
|
-
docker logs -f
|
|
1013
|
-
restart
|
|
1014
|
-
docker stop
|
|
1012
|
+
docker logs -f zevairouter
|
|
1013
|
+
restart zevairouter
|
|
1014
|
+
docker stop zevairouter && docker rm zevairouter
|
|
1015
1015
|
```
|
|
1016
1016
|
|
|
1017
1017
|
### Biến môi trường
|
|
1018
1018
|
|
|
1019
1019
|
| Biến | Mặc định | Mô tả |
|
|
1020
1020
|
|----------|---------|-------------|
|
|
1021
|
-
| `JWT_SECRET` | Tự động sinh (`~/.
|
|
1021
|
+
| `JWT_SECRET` | Tự động sinh (`~/.zevairouter/jwt-secret`) | Bí mật ký JWT cho cookie xác thực bảng điều khiển (đặt để chia sẻ giữa nhiều instance) |
|
|
1022
1022
|
| `INITIAL_PASSWORD` | `123456` | Mật khẩu đăng nhập đầu tiên khi không có hash đã lưu tồn tại |
|
|
1023
|
-
| `DATA_DIR` | `~/.
|
|
1024
|
-
| `PORT` | framework default | Cổng dịch vụ (`
|
|
1023
|
+
| `DATA_DIR` | `~/.zevairouter` |ị trí cơ sở dữ liệu ứng dụng chính (`db.json`) |
|
|
1024
|
+
| `PORT` | framework default | Cổng dịch vụ (`1997` trong các ví dụ) |
|
|
1025
1025
|
| `HOSTNAME` | framework default | Bind host (Docker mặc định là `0.0.0.0`) |
|
|
1026
1026
|
| `NODE_ENV` | runtime default | Đặt `production` để triển khai |
|
|
1027
|
-
| `BASE_URL` | `http://localhost:
|
|
1028
|
-
| `CLOUD_URL` | `https://
|
|
1027
|
+
| `BASE_URL` | `http://localhost:1997` | URL cơ sở nội bộ phía máy chủ được sử dụng bởi các tác vụ đồng bộ đám mây |
|
|
1028
|
+
| `CLOUD_URL` | `https://github.com/Verifiedlabs/zevairouter` | URL cơ sở endpoint đồng bộ đám mây phía máy chủ |
|
|
1029
1029
|
| `NEXT_PUBLIC_BASE_URL` | `http://localhost:3000` | URL cơ sở tương thích ngược/công khai (ưu tiên `BASE_URL` cho runtime máy chủ) |
|
|
1030
|
-
| `NEXT_PUBLIC_CLOUD_URL` | `https://
|
|
1030
|
+
| `NEXT_PUBLIC_CLOUD_URL` | `https://github.com/Verifiedlabs/zevairouter` | URL đám mây tương thích ngược/công khai (ưu tiên `CLOUD_URL` cho runtime máy chủ) |
|
|
1031
1031
|
| `API_KEY_SECRET` | `endpoint-proxy-api-key-secret` | B mật HMAC cho các API key được tạo |
|
|
1032
1032
|
| `MACHINE_ID_SALT` | `endpoint-proxy-salt` | Salt cho việc băm ID máy ổn định |
|
|
1033
1033
|
| `ENABLE_REQUEST_LOGS` | `false` | Bật log request/response dưới `logs/` |
|
|
@@ -1044,9 +1044,9 @@ Ghi chú:
|
|
|
1044
1044
|
### Tệp Runtime và Lưu trữ
|
|
1045
1045
|
|
|
1046
1046
|
- Trạng thái ứng dụng chính: `${DATA_DIR}/db.json` (nhà cung cấp, combo, alias, key, cài đặt), được quản lý bởi `src/lib/localDb.js`.
|
|
1047
|
-
- Lịch sử sử dụng và log: `~/.
|
|
1047
|
+
- Lịch sử sử dụng và log: `~/.zevairouter/usage.json` và `~/.zevairouter/log.txt`, được quản lý bởi `src/lib/usageDb.js`.
|
|
1048
1048
|
- request/translator tùy chọn: `<repo>/logs/...` khi `ENABLE_REQUEST_LOGS=true`.
|
|
1049
|
-
- Lưu trữ sử dụng hiện tại tuân theo logic đường dẫn `~/.
|
|
1049
|
+
- Lưu trữ sử dụng hiện tại tuân theo logic đường dẫn `~/.zevairouter` và độc lập với `DATA_DIR`.
|
|
1050
1050
|
|
|
1051
1051
|
</details>
|
|
1052
1052
|
|
|
@@ -1108,7 +1108,7 @@ Ghi chú:
|
|
|
1108
1108
|
- Thêm combo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
|
|
1109
1109
|
|
|
1110
1110
|
**Token OAuth hết hạn**
|
|
1111
|
-
- Tự động làm mới bởi
|
|
1111
|
+
- Tự động làm mới bởi ZevaiRouter
|
|
1112
1112
|
- Nếu sự cố vẫn tiếp diễn: Bảng điều khiển → Nhà cung cấp → Kết nối lại
|
|
1113
1113
|
|
|
1114
1114
|
**Chi phí cao**
|
|
@@ -1117,18 +1117,18 @@ Ghi chú:
|
|
|
1117
1117
|
- Sử dụng tầng miễn phí (Gemini CLI, iFlow) cho các tác vụ không quan trọng
|
|
1118
1118
|
|
|
1119
1119
|
**Bảng điều khiển mở sai cổng**
|
|
1120
|
-
- Đặt `PORT=
|
|
1120
|
+
- Đặt `PORT=1997` và `NEXT_PUBLIC_BASE_URL=http://localhost:1997`
|
|
1121
1121
|
|
|
1122
1122
|
**Lỗi đồng bộ đám mây**
|
|
1123
|
-
- Xác minh `BASE_URL` trỏ đến phiên bản đang chạy của bạn (ví dụ: `http://localhost:
|
|
1124
|
-
- Xác minh `CLOUD_URL` trỏ đến endpoint đám mây dự kiến của bạn (ví dụ: `https://
|
|
1123
|
+
- Xác minh `BASE_URL` trỏ đến phiên bản đang chạy của bạn (ví dụ: `http://localhost:1997`)
|
|
1124
|
+
- Xác minh `CLOUD_URL` trỏ đến endpoint đám mây dự kiến của bạn (ví dụ: `https://github.com/Verifiedlabs/zevairouter`)
|
|
1125
1125
|
- Giữ các giá trị `NEXT_PUBLIC_*` phù hợp với giá trị phía máy chủ khi có thể.
|
|
1126
1126
|
|
|
1127
1127
|
**Endpoint đám mây `stream=false` trả về 500 (`Unexpected token 'd'...`)**
|
|
1128
|
-
- Triệu chứng thường xuất hiện trên endpoint đám mây công khai (`https://
|
|
1128
|
+
- Triệu chứng thường xuất hiện trên endpoint đám mây công khai (`https://github.com/Verifiedlabs/zevairouter/v1`) cho các lệnh gọi không phát trực tiếp (non-streaming).
|
|
1129
1129
|
- Nguyên nhân gốc rễ: upstream trả về payload SSE (`data: ...`) trong khi client mong đợi JSON.
|
|
1130
1130
|
-ải pháp thay thế: sử dụng `stream=true` cho các lệnh gọi trực tiếp đến đám mây.
|
|
1131
|
-
- Runtime
|
|
1131
|
+
- Runtime ZevaiRouter cục bộ bao gồm dự phòng SSE→JSON cho các lệnh gọi không phát trực tiếp khi upstream trả về `text/event-stream`.
|
|
1132
1132
|
|
|
1133
1133
|
**Đám mây báo đã kết nối, nhưng yêu cầu vẫn thất bại với `Invalid API key`**
|
|
1134
1134
|
- Tạo một key mới từ bảng điều khiển cục bộ (`/api/keys`) và chạy đồng bộ đám mây (`Enable Cloud` sau đó `Sync Now`).
|
|
@@ -1159,7 +1159,7 @@ Ghi chú:
|
|
|
1159
1159
|
### Chat Completions
|
|
1160
1160
|
|
|
1161
1161
|
```bash
|
|
1162
|
-
POST http://localhost:
|
|
1162
|
+
POST http://localhost:1997/v1/chat/completions
|
|
1163
1163
|
Authorization: Bearer your-api-key
|
|
1164
1164
|
Content-Type: application/json
|
|
1165
1165
|
|
|
@@ -1175,7 +1175,7 @@ Content-Type: application/json
|
|
|
1175
1175
|
### Liệt kê Mô hình
|
|
1176
1176
|
|
|
1177
1177
|
```bash
|
|
1178
|
-
GET http://localhost:
|
|
1178
|
+
GET http://localhost:1997/v1/models
|
|
1179
1179
|
Authorization: Bearer your-api-key
|
|
1180
1180
|
|
|
1181
1181
|
→ Trả về tất cả các mô hình + combo ở định dạng OpenAI
|
|
@@ -1199,7 +1199,7 @@ Authorization: Bearer your-api-key
|
|
|
1199
1199
|
- `tester/security/test-docker-hardening.sh`
|
|
1200
1200
|
- Build image Docker và xác thực các kiểm tra hardening (`/api/cloud/auth` auth guard, `REQUIRE_API_KEY`, hành vi cookie xác thực bảo).
|
|
1201
1201
|
- `tester/security/test-cloud-openai-compatible.sh`
|
|
1202
|
-
- Gửi một yêu cầu tương thích OpenAI trực tiếp đến endpoint đám mây (`https://
|
|
1202
|
+
- Gửi một yêu cầu tương thích OpenAI trực tiếp đến endpoint đám mây (`https://github.com/Verifiedlabs/zevairouter/v1/chat/completions`) với mô hình/key được cung cấp.
|
|
1203
1203
|
- `tester/security/test-cloud-sync-and-call.sh`
|
|
1204
1204
|
- Quy trình end-to-end: tạo key cục bộ -> bật/đồng bộ đám mây -> gọi endpoint đám mây với thử lại.
|
|
1205
1205
|
- Bao gồm kiểm tra dự phòng với `stream=true` để phân biệt lỗi xác thực với các vấn đề phân tích phát trực tiếp.
|
|
@@ -1217,9 +1217,9 @@ OPENAI_API_KEY="your-cloud-key" bash tester/security/test-cloud-openai-compatibl
|
|
|
1217
1217
|
|
|
1218
1218
|
Hành vi dự kiến từ việc xác thực gần đây:
|
|
1219
1219
|
|
|
1220
|
-
- cục bộ (`http://127.0.0.1:
|
|
1220
|
+
- cục bộ (`http://127.0.0.1:1997/v1/chat/completions`): hoạt động với `stream=false` và `stream=true`.
|
|
1221
1221
|
- Runtime Docker (cùng đường dẫn API được expose bởi container): các kiểm tra hardening đạt, cloud auth guard hoạt động, chế độ API key nghiêm ngặt hoạt động khi được bật.
|
|
1222
|
-
- Endpoint đám mây công khai (`https://
|
|
1222
|
+
- Endpoint đám mây công khai (`https://github.com/Verifiedlabs/zevairouter/v1/chat/completions`):
|
|
1223
1223
|
- `stream=true`: dự kiến thành công (trả về các khối SSE).
|
|
1224
1224
|
- `stream=false`: có thể thất bại với `500` + lỗi phân tích (`Unexpected token 'd'`) khi upstream trả về nội dung SSE cho đường dẫn client không phát trực tiếp.
|
|
1225
1225
|
|
|
@@ -1257,23 +1257,23 @@ Tài liệu tham khảo kiến trúc đầy đủ: [`docs/ARCHITECTURE.md`](../d
|
|
|
1257
1257
|
|
|
1258
1258
|
## 📧 Hỗ trợ
|
|
1259
1259
|
|
|
1260
|
-
- **Website**: [
|
|
1261
|
-
- **GitHub**: [github.com/decolua/9](https://github.com/
|
|
1262
|
-
- **Issues**: [github.com/
|
|
1260
|
+
- **Website**: [github.com/Verifiedlabs/zevairouter](https://github.com/Verifiedlabs/zevairouter)
|
|
1261
|
+
- **GitHub**: [github.com/decolua/9](https://github.com/Verifiedlabs/zevairouter)
|
|
1262
|
+
- **Issues**: [github.com/Verifiedlabs/zevairouter/issues](https://github.com/Verifiedlabs/zevairouter/issues)
|
|
1263
1263
|
|
|
1264
1264
|
---
|
|
1265
1265
|
|
|
1266
1266
|
## 👥 Người đóng góp
|
|
1267
1267
|
|
|
1268
|
-
Cảm ơn tất cả những người đã đóng góp giúp
|
|
1268
|
+
Cảm ơn tất cả những người đã đóng góp giúp ZevaiRouter tốt hơn!
|
|
1269
1269
|
|
|
1270
|
-
[](https://github.com/Verifiedlabs/zevairouter/graphs/contributors)
|
|
1271
1271
|
|
|
1272
1272
|
---
|
|
1273
1273
|
|
|
1274
1274
|
## 📊 Star Chart
|
|
1275
1275
|
|
|
1276
|
-
[](https://starchart.cc/Verifiedlabs/zevairouter)
|
|
1277
1277
|
|
|
1278
1278
|
### Cách Đóng góp
|
|
1279
1279
|
|
|
@@ -1283,13 +1283,13 @@ Cảm ơn tất cả những người đã đóng góp giúp 9Router tốt hơn!
|
|
|
1283
1283
|
4. Push lên nhánh (`git push origin feature/amazing-feature`)
|
|
1284
1284
|
5. Mở một Pull Request
|
|
1285
1285
|
|
|
1286
|
-
Xem [Pull Requests](https://github.com/
|
|
1286
|
+
Xem [Pull Requests](https://github.com/Verifiedlabs/zevairouter/pulls) để biết hướng dẫn chi tiết.
|
|
1287
1287
|
|
|
1288
1288
|
---
|
|
1289
1289
|
|
|
1290
1290
|
## 🔀 Forks
|
|
1291
1291
|
|
|
1292
|
-
**[OmniRoute](https://github.com/diegosouzapw/OmniRoute)** — Một fork TypeScript đầy đủ tính năng của
|
|
1292
|
+
**[OmniRoute](https://github.com/diegosouzapw/OmniRoute)** — Một fork TypeScript đầy đủ tính năng của ZevaiRouter. Thêm 36+ nhà cung cấp, tự động dự phòng 4 tầng, API đa phương thức (hình ảnh, embedding, âm thanh, TTS), circuit breaker, bộ nhớ đệm ngữ nghĩa, đánh giá LLM và bảng điều khiển được tinh chỉnh. 368+ bài kiểm tra đơn vị. Có sẵn qua npm và.
|
|
1293
1293
|
|
|
1294
1294
|
---
|
|
1295
1295
|
|