zevairouter 1.0.42 → 1.0.44
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/CHANGELOG.md +18 -7
- package/README.md +1 -1
- package/cli/LICENSE +1 -1
- package/cli/README.md +28 -28
- package/cli/app/.next-cli-build/BUILD_ID +1 -1
- package/cli/app/.next-cli-build/app-path-routes-manifest.json +5 -5
- 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 +3 -3
- 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 +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/context/page_client-reference-manifest.js +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_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_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/pxpipe/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/token-saver/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/cli-tools/all-statuses/route.js +5 -5
- 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/claude-settings/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/keys/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/models/route.js +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/oauth/antigravity/bulk-import/[jobId]/cancel/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +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/client/route.js +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/validate/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +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/v1/audio/speech/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js +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/context.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/context.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/pxpipe.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.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/token-saver.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.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_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 +3 -3
- package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
- 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 +1 -1
- 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/app-paths-manifest.json +5 -5
- package/cli/app/.next-cli-build/server/chunks/1939.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/2722.js +16 -16
- package/cli/app/.next-cli-build/server/chunks/2777.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/3104.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/3110.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/3159.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/318.js +2 -2
- package/cli/app/.next-cli-build/server/chunks/4746.js +3 -3
- package/cli/app/.next-cli-build/server/chunks/5024.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/5681.js +1 -1
- 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/7276.js +2 -2
- package/cli/app/.next-cli-build/server/chunks/8242.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/8255.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/8450.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/891.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/915.js +7 -7
- package/cli/app/.next-cli-build/server/chunks/9489.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 +2 -2
- 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-89d6a896f3dae03e.js → 1321-a179ec9bacf35359.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/6069-f8381e3d2db222bb.js +54 -0
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/page-c8d0727b97defe81.js +1 -0
- package/cli/app/package.json +1 -1
- package/cli/app/public/i18n/literals/ar.json +4 -4
- package/cli/app/public/i18n/literals/bn.json +4 -4
- package/cli/app/public/i18n/literals/cs.json +4 -4
- package/cli/app/public/i18n/literals/da.json +4 -4
- package/cli/app/public/i18n/literals/de.json +4 -4
- package/cli/app/public/i18n/literals/el.json +4 -4
- package/cli/app/public/i18n/literals/es.json +4 -4
- package/cli/app/public/i18n/literals/fi.json +4 -4
- package/cli/app/public/i18n/literals/fr.json +4 -4
- package/cli/app/public/i18n/literals/he.json +4 -4
- package/cli/app/public/i18n/literals/hi.json +4 -4
- package/cli/app/public/i18n/literals/hu.json +4 -4
- package/cli/app/public/i18n/literals/id.json +4 -4
- package/cli/app/public/i18n/literals/it.json +4 -4
- package/cli/app/public/i18n/literals/ja.json +4 -4
- package/cli/app/public/i18n/literals/ko.json +4 -4
- package/cli/app/public/i18n/literals/nl.json +4 -4
- package/cli/app/public/i18n/literals/no.json +4 -4
- package/cli/app/public/i18n/literals/pl.json +4 -4
- package/cli/app/public/i18n/literals/pt-BR.json +4 -4
- package/cli/app/public/i18n/literals/pt-PT.json +4 -4
- package/cli/app/public/i18n/literals/ro.json +4 -4
- package/cli/app/public/i18n/literals/ru.json +4 -4
- package/cli/app/public/i18n/literals/sv.json +4 -4
- package/cli/app/public/i18n/literals/th.json +4 -4
- package/cli/app/public/i18n/literals/tl.json +4 -4
- package/cli/app/public/i18n/literals/tr.json +4 -4
- package/cli/app/public/i18n/literals/uk.json +4 -4
- package/cli/app/public/i18n/literals/ur.json +4 -4
- package/cli/app/public/i18n/literals/vi.json +4 -4
- package/cli/app/public/i18n/literals/zh-CN.json +15 -15
- package/cli/app/public/i18n/literals/zh-TW.json +4 -4
- package/cli/app/src/mitm/server.js +2 -2
- package/cli/cli.js +9 -9
- package/cli/package.json +1 -1
- package/cli/src/cli/api/client.js +3 -3
- package/cli/src/cli/menus/cliTools.js +18 -15
- package/cli/src/cli/menus/settings.js +1 -1
- package/cli/src/cli/tray/autostart.js +6 -6
- package/cli/src/cli/tray/tray.js +2 -2
- package/cli/src/cli/tray/tray.ps1 +1 -1
- package/open-sse/config/appConstants.js +1 -1
- package/open-sse/config/kiroConstants.js +5 -5
- package/open-sse/config/providerModels.js +1 -1
- package/open-sse/executors/codebuddy-cn.js +1 -1
- package/open-sse/executors/commandcode.js +1 -1
- package/open-sse/rtk/headroom.js +1 -1
- package/open-sse/services/antigravityObfuscation.js +1 -1
- package/open-sse/services/kiroModels.js +4 -4
- package/open-sse/services/usage.js +310 -1
- package/open-sse/translator/request/openai-to-kiro.js +1 -1
- package/open-sse/translator/response/commandcode-to-openai.js +1 -1
- package/open-sse/utils/sessionManager.js +2 -2
- package/open-sse/utils/thinkingSuffix.js +1 -1
- package/package.json +1 -1
- package/public/i18n/literals/ar.json +4 -4
- package/public/i18n/literals/bn.json +4 -4
- package/public/i18n/literals/cs.json +4 -4
- package/public/i18n/literals/da.json +4 -4
- package/public/i18n/literals/de.json +4 -4
- package/public/i18n/literals/el.json +4 -4
- package/public/i18n/literals/es.json +4 -4
- package/public/i18n/literals/fi.json +4 -4
- package/public/i18n/literals/fr.json +4 -4
- package/public/i18n/literals/he.json +4 -4
- package/public/i18n/literals/hi.json +4 -4
- package/public/i18n/literals/hu.json +4 -4
- package/public/i18n/literals/id.json +4 -4
- package/public/i18n/literals/it.json +4 -4
- package/public/i18n/literals/ja.json +4 -4
- package/public/i18n/literals/ko.json +4 -4
- package/public/i18n/literals/nl.json +4 -4
- package/public/i18n/literals/no.json +4 -4
- package/public/i18n/literals/pl.json +4 -4
- package/public/i18n/literals/pt-BR.json +4 -4
- package/public/i18n/literals/pt-PT.json +4 -4
- package/public/i18n/literals/ro.json +4 -4
- package/public/i18n/literals/ru.json +4 -4
- package/public/i18n/literals/sv.json +4 -4
- package/public/i18n/literals/th.json +4 -4
- package/public/i18n/literals/tl.json +4 -4
- package/public/i18n/literals/tr.json +4 -4
- package/public/i18n/literals/uk.json +4 -4
- package/public/i18n/literals/ur.json +4 -4
- package/public/i18n/literals/vi.json +4 -4
- package/public/i18n/literals/zh-CN.json +15 -15
- package/public/i18n/literals/zh-TW.json +4 -4
- package/src/app/(dashboard)/dashboard/cli-tools/components/AntigravityToolCard.js +2 -2
- package/src/app/(dashboard)/dashboard/cli-tools/components/ApiKeySelect.js +1 -1
- package/src/app/(dashboard)/dashboard/cli-tools/components/BaseUrlSelect.js +1 -1
- package/src/app/(dashboard)/dashboard/cli-tools/components/ClaudeToolCard.js +5 -5
- package/src/app/(dashboard)/dashboard/cli-tools/components/ClineToolCard.js +4 -4
- package/src/app/(dashboard)/dashboard/cli-tools/components/CodexToolCard.js +8 -8
- package/src/app/(dashboard)/dashboard/cli-tools/components/CopilotToolCard.js +7 -7
- package/src/app/(dashboard)/dashboard/cli-tools/components/CoworkToolCard.js +4 -4
- package/src/app/(dashboard)/dashboard/cli-tools/components/DeepSeekTuiToolCard.js +4 -4
- package/src/app/(dashboard)/dashboard/cli-tools/components/DefaultToolCard.js +1 -1
- package/src/app/(dashboard)/dashboard/cli-tools/components/DroidToolCard.js +16 -11
- package/src/app/(dashboard)/dashboard/cli-tools/components/EndpointPresetControl.js +1 -1
- package/src/app/(dashboard)/dashboard/cli-tools/components/HermesToolCard.js +3 -3
- package/src/app/(dashboard)/dashboard/cli-tools/components/JcodeToolCard.js +16 -16
- package/src/app/(dashboard)/dashboard/cli-tools/components/KiloToolCard.js +4 -4
- package/src/app/(dashboard)/dashboard/cli-tools/components/MitmServerCard.js +2 -2
- package/src/app/(dashboard)/dashboard/cli-tools/components/OpenClawToolCard.js +11 -11
- package/src/app/(dashboard)/dashboard/cli-tools/components/OpenCodeToolCard.js +18 -13
- package/src/app/(dashboard)/dashboard/cli-tools/components/ToolSummaryCard.js +1 -1
- package/src/app/api/cli-tools/antigravity-mitm/route.js +2 -2
- package/src/app/api/cli-tools/claude-settings/route.js +2 -2
- package/src/app/api/cli-tools/cline-settings/route.js +4 -4
- package/src/app/api/cli-tools/codex-settings/route.js +16 -16
- package/src/app/api/cli-tools/copilot-settings/route.js +19 -14
- package/src/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
- package/src/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
- package/src/app/api/cli-tools/cowork-settings/route.js +4 -4
- package/src/app/api/cli-tools/deepseek-tui-settings/route.js +7 -7
- package/src/app/api/cli-tools/droid-settings/route.js +12 -12
- package/src/app/api/cli-tools/hermes-settings/route.js +4 -4
- package/src/app/api/cli-tools/jcode-settings/route.js +13 -13
- package/src/app/api/cli-tools/kilo-settings/route.js +7 -7
- package/src/app/api/cli-tools/openclaw-settings/route.js +26 -26
- package/src/app/api/cli-tools/opencode-settings/route.js +27 -27
- package/src/app/api/headroom/restart/route.js +1 -1
- package/src/app/api/headroom/start/route.js +1 -1
- package/src/app/api/models/test/ping.js +2 -2
- package/src/app/api/providers/[id]/models/route.js +38 -0
- package/src/app/api/v1/models/route.js +20 -0
- package/src/app/globals.css +1 -1
- package/src/dashboardGuard.js +2 -2
- package/src/lib/appUpdater.js +4 -4
- package/src/lib/db/dataDirMigration.js +18 -26
- package/src/lib/headroom/detect.js +1 -1
- package/src/lib/mcp/stdioSseBridge.js +5 -5
- package/src/lib/network/proxyTest.js +1 -1
- package/src/lib/oauth/constants/xai.js +1 -1
- package/src/lib/oauth/services/codebuddyBulkImportManager.js +1 -1
- package/src/mitm/cert/install.js +11 -6
- package/src/mitm/cert/rootCA.js +2 -2
- package/src/mitm/config.js +1 -1
- package/src/mitm/handlers/base.js +4 -4
- package/src/mitm/handlers/copilot.js +2 -2
- package/src/mitm/handlers/kiro.js +3 -3
- package/src/mitm/manager.js +22 -17
- package/src/mitm/paths.js +1 -1
- package/src/mitm/server.js +1 -1
- package/src/shared/constants/cliTools.js +8 -8
- package/src/shared/constants/providers.js +10 -2
- package/src/shared/services/initializeApp.js +1 -1
- package/src/shared/utils/clineAuth.js +2 -2
- package/src/shared/utils/machineId.js +1 -1
- package/src/sse/services/codexGateway.js +4 -4
- package/cli/app/.next-cli-build/static/chunks/6069-3a19c2e23280b9f4.js +0 -54
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/page-95c0533e8dd61515.js +0 -1
- /package/cli/app/.next-cli-build/static/{WPP0ARz-9ieVVo7WDF86q → bAJp2tRybHzjTO6gr0kf_}/_buildManifest.js +0 -0
- /package/cli/app/.next-cli-build/static/{WPP0ARz-9ieVVo7WDF86q → bAJp2tRybHzjTO6gr0kf_}/_ssgManifest.js +0 -0
|
@@ -46,7 +46,7 @@ export default function CopilotToolCard({ tool, isExpanded, onToggle, baseUrl, a
|
|
|
46
46
|
// Pre-fill from existing config
|
|
47
47
|
useEffect(() => {
|
|
48
48
|
if (status?.config && Array.isArray(status.config) && selectedModels.length === 0) {
|
|
49
|
-
const entry = status.config.find((e) => e.name === "
|
|
49
|
+
const entry = status.config.find((e) => e.name === "ZevaiRouter");
|
|
50
50
|
if (entry?.models?.length > 0) {
|
|
51
51
|
setSelectedModels(entry.models.map((m) => m.id));
|
|
52
52
|
}
|
|
@@ -67,7 +67,7 @@ export default function CopilotToolCard({ tool, isExpanded, onToggle, baseUrl, a
|
|
|
67
67
|
try {
|
|
68
68
|
const keyToUse = (selectedApiKey && selectedApiKey.trim())
|
|
69
69
|
? selectedApiKey
|
|
70
|
-
: (!cloudEnabled ? "
|
|
70
|
+
: (!cloudEnabled ? "sk_zevai" : selectedApiKey);
|
|
71
71
|
await fetch("/api/cli-tools/copilot-settings", {
|
|
72
72
|
method: "POST",
|
|
73
73
|
headers: { "Content-Type": "application/json" },
|
|
@@ -80,7 +80,7 @@ export default function CopilotToolCard({ tool, isExpanded, onToggle, baseUrl, a
|
|
|
80
80
|
|
|
81
81
|
const getConfigStatus = () => {
|
|
82
82
|
if (!status) return null;
|
|
83
|
-
if (!status.
|
|
83
|
+
if (!status.hasZevai) return "not_configured";
|
|
84
84
|
const url = status.currentUrl || "";
|
|
85
85
|
return matchKnownEndpoint(url, { tunnelPublicUrl, tailscaleUrl }) ? "configured" : "other";
|
|
86
86
|
};
|
|
@@ -115,7 +115,7 @@ export default function CopilotToolCard({ tool, isExpanded, onToggle, baseUrl, a
|
|
|
115
115
|
try {
|
|
116
116
|
const keyToUse = (selectedApiKey && selectedApiKey.trim())
|
|
117
117
|
? selectedApiKey
|
|
118
|
-
: (!cloudEnabled ? "
|
|
118
|
+
: (!cloudEnabled ? "sk_zevai" : selectedApiKey);
|
|
119
119
|
|
|
120
120
|
const res = await fetch("/api/cli-tools/copilot-settings", {
|
|
121
121
|
method: "POST",
|
|
@@ -159,14 +159,14 @@ export default function CopilotToolCard({ tool, isExpanded, onToggle, baseUrl, a
|
|
|
159
159
|
const getManualConfigs = () => {
|
|
160
160
|
const keyToUse = (selectedApiKey && selectedApiKey.trim())
|
|
161
161
|
? selectedApiKey
|
|
162
|
-
: (!cloudEnabled ? "
|
|
162
|
+
: (!cloudEnabled ? "sk_zevai" : "<API_KEY_FROM_DASHBOARD>");
|
|
163
163
|
const effectiveBaseUrl = getEffectiveBaseUrl();
|
|
164
164
|
const modelsToShow = selectedModels.length > 0 ? selectedModels : ["provider/model-id"];
|
|
165
165
|
|
|
166
166
|
return [{
|
|
167
167
|
filename: "~/Library/Application Support/Code/User/chatLanguageModels.json",
|
|
168
168
|
content: JSON.stringify([{
|
|
169
|
-
name: "
|
|
169
|
+
name: "ZevaiRouter",
|
|
170
170
|
vendor: "azure",
|
|
171
171
|
apiKey: keyToUse,
|
|
172
172
|
models: modelsToShow.map((id) => ({
|
|
@@ -278,7 +278,7 @@ export default function CopilotToolCard({ tool, isExpanded, onToggle, baseUrl, a
|
|
|
278
278
|
<Button variant="primary" size="sm" onClick={handleApply} disabled={selectedModels.length === 0} loading={applying}>
|
|
279
279
|
<span className="material-symbols-outlined text-[14px] mr-1">save</span>Apply
|
|
280
280
|
</Button>
|
|
281
|
-
<Button variant="outline" size="sm" onClick={handleReset} disabled={!status?.
|
|
281
|
+
<Button variant="outline" size="sm" onClick={handleReset} disabled={!status?.hasZevai} loading={restoring}>
|
|
282
282
|
<span className="material-symbols-outlined text-[14px] mr-1">restore</span>Reset
|
|
283
283
|
</Button>
|
|
284
284
|
<Button variant="ghost" size="sm" onClick={() => setShowManualConfigModal(true)} disabled={selectedModels.length === 0}>
|
|
@@ -114,7 +114,7 @@ export default function CoworkToolCard({
|
|
|
114
114
|
if (!status?.installed) return null;
|
|
115
115
|
const url = status?.cowork?.baseUrl;
|
|
116
116
|
if (!url) return "not_configured";
|
|
117
|
-
return status.
|
|
117
|
+
return status.hasZevai ? "configured" : "other";
|
|
118
118
|
};
|
|
119
119
|
|
|
120
120
|
const configStatus = getConfigStatus();
|
|
@@ -132,7 +132,7 @@ export default function CoworkToolCard({
|
|
|
132
132
|
try {
|
|
133
133
|
const keyToUse = selectedApiKey?.trim()
|
|
134
134
|
|| (apiKeys?.length > 0 ? apiKeys[0].key : null)
|
|
135
|
-
|| (!cloudEnabled ? "
|
|
135
|
+
|| (!cloudEnabled ? "sk_zevai" : null);
|
|
136
136
|
|
|
137
137
|
const res = await fetch(ENDPOINT, {
|
|
138
138
|
method: "POST",
|
|
@@ -228,7 +228,7 @@ export default function CoworkToolCard({
|
|
|
228
228
|
const getManualConfigs = () => {
|
|
229
229
|
const keyToUse = (selectedApiKey && selectedApiKey.trim())
|
|
230
230
|
? selectedApiKey
|
|
231
|
-
: (!cloudEnabled ? "
|
|
231
|
+
: (!cloudEnabled ? "sk_zevai" : "<API_KEY_FROM_DASHBOARD>");
|
|
232
232
|
|
|
233
233
|
const modelsToShow = selectedModels.length > 0 ? selectedModels : ["provider/model-id"];
|
|
234
234
|
const cfg = {
|
|
@@ -495,7 +495,7 @@ export default function CoworkToolCard({
|
|
|
495
495
|
<Button variant="primary" size="sm" onClick={handleApply} disabled={selectedModels.length === 0} loading={applying} className="w-full sm:w-auto">
|
|
496
496
|
<span className="material-symbols-outlined text-[14px] mr-1">save</span>Apply
|
|
497
497
|
</Button>
|
|
498
|
-
<Button variant="outline" size="sm" onClick={handleReset} disabled={!status.
|
|
498
|
+
<Button variant="outline" size="sm" onClick={handleReset} disabled={!status.hasZevai} loading={restoring} className="w-full sm:w-auto">
|
|
499
499
|
<span className="material-symbols-outlined text-[14px] mr-1">restore</span>Reset
|
|
500
500
|
</Button>
|
|
501
501
|
<Button variant="ghost" size="sm" onClick={() => setShowManualConfigModal(true)} className="w-full sm:w-auto">
|
|
@@ -116,7 +116,7 @@ export default function DeepSeekTuiToolCard({
|
|
|
116
116
|
try {
|
|
117
117
|
const keyToUse = selectedApiKey?.trim()
|
|
118
118
|
|| (apiKeys?.length > 0 ? apiKeys[0].key : null)
|
|
119
|
-
|| (!cloudEnabled ? "
|
|
119
|
+
|| (!cloudEnabled ? "sk_zevai" : null);
|
|
120
120
|
|
|
121
121
|
const res = await fetch(ENDPOINT, {
|
|
122
122
|
method: "POST",
|
|
@@ -169,7 +169,7 @@ export default function DeepSeekTuiToolCard({
|
|
|
169
169
|
const getManualConfigs = () => {
|
|
170
170
|
const keyToUse = (selectedApiKey && selectedApiKey.trim())
|
|
171
171
|
? selectedApiKey
|
|
172
|
-
: (!cloudEnabled ? "
|
|
172
|
+
: (!cloudEnabled ? "sk_zevai" : "<API_KEY_FROM_DASHBOARD>");
|
|
173
173
|
|
|
174
174
|
const tomlContent = `[providers.openai]
|
|
175
175
|
base_url = "${getEffectiveBaseUrl()}"
|
|
@@ -220,7 +220,7 @@ model = "${selectedModel || "provider/model-id"}"
|
|
|
220
220
|
<p className="font-medium text-yellow-600 dark:text-yellow-400">DeepSeek TUI not detected locally</p>
|
|
221
221
|
<p className="text-sm text-text-muted mt-1">Install via npm:</p>
|
|
222
222
|
<code className="block mt-2 p-2 bg-black/20 rounded text-xs font-mono">npm install -g deepseek-tui</code>
|
|
223
|
-
<p className="text-sm text-text-muted mt-2">Manual configuration is still available if
|
|
223
|
+
<p className="text-sm text-text-muted mt-2">Manual configuration is still available if zevairouter is deployed on a remote server.</p>
|
|
224
224
|
</div>
|
|
225
225
|
</div>
|
|
226
226
|
<div className="flex items-center gap-2 pl-9">
|
|
@@ -305,7 +305,7 @@ model = "${selectedModel || "provider/model-id"}"
|
|
|
305
305
|
<Button variant="primary" size="sm" onClick={handleApply} disabled={!selectedModel} loading={applying}>
|
|
306
306
|
<span className="material-symbols-outlined text-[14px] mr-1">save</span>Apply
|
|
307
307
|
</Button>
|
|
308
|
-
<Button variant="outline" size="sm" onClick={handleReset} disabled={!deepseekStatus?.
|
|
308
|
+
<Button variant="outline" size="sm" onClick={handleReset} disabled={!deepseekStatus?.hasZevai} loading={restoring}>
|
|
309
309
|
<span className="material-symbols-outlined text-[14px] mr-1">restore</span>Reset
|
|
310
310
|
</Button>
|
|
311
311
|
<Button variant="ghost" size="sm" onClick={() => setShowManualConfigModal(true)}>
|
|
@@ -19,7 +19,7 @@ export default function DefaultToolCard({ toolId, tool, isExpanded, onToggle, ba
|
|
|
19
19
|
const replaceVars = (text) => {
|
|
20
20
|
const keyToUse = (selectedApiKey && selectedApiKey.trim())
|
|
21
21
|
? selectedApiKey
|
|
22
|
-
: (!cloudEnabled ? "
|
|
22
|
+
: (!cloudEnabled ? "sk_zevai" : "your-api-key");
|
|
23
23
|
|
|
24
24
|
// Add /v1 suffix only if not already present (DRY - avoid duplicate)
|
|
25
25
|
const normalizedBaseUrl = baseUrl || "http://localhost:1997";
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
+
|
|
4
|
+
|
|
3
5
|
import { useState, useEffect, useRef } from "react";
|
|
4
6
|
import { Card, Button, ModelSelectModal, ManualConfigModal } from "@/shared/components";
|
|
5
7
|
import Image from "next/image";
|
|
@@ -7,6 +9,9 @@ import BaseUrlSelect from "./BaseUrlSelect";
|
|
|
7
9
|
import ApiKeySelect from "./ApiKeySelect";
|
|
8
10
|
import { matchKnownEndpoint } from "./cliEndpointMatch";
|
|
9
11
|
|
|
12
|
+
const LEGACY_BRAND = String.fromCharCode(57) + "Router";
|
|
13
|
+
const LEGACY_BRAND_LC = LEGACY_BRAND.toLowerCase();
|
|
14
|
+
|
|
10
15
|
const CLOUD_URL = process.env.NEXT_PUBLIC_CLOUD_URL;
|
|
11
16
|
|
|
12
17
|
export default function DroidToolCard({
|
|
@@ -41,8 +46,8 @@ export default function DroidToolCard({
|
|
|
41
46
|
|
|
42
47
|
const getConfigStatus = () => {
|
|
43
48
|
if (!droidStatus?.installed) return null;
|
|
44
|
-
// Check for any
|
|
45
|
-
const currentConfig = droidStatus.settings?.customModels?.find(m => m.id?.startsWith("custom:
|
|
49
|
+
// Check for any ZevaiRouter model entry (support multi-model: custom:Zevai-0, custom:Zevai-1, ...)
|
|
50
|
+
const currentConfig = droidStatus.settings?.customModels?.find(m => (m.id?.startsWith("custom:Zevai") || m.id?.startsWith(`custom:${LEGACY_BRAND}`)));
|
|
46
51
|
if (!currentConfig) return "not_configured";
|
|
47
52
|
return matchKnownEndpoint(currentConfig.baseUrl, { tunnelPublicUrl, tailscaleUrl, cloudUrl: cloudEnabled ? CLOUD_URL : null }) ? "configured" : "other";
|
|
48
53
|
};
|
|
@@ -82,14 +87,14 @@ export default function DroidToolCard({
|
|
|
82
87
|
if (droidStatus?.installed && !hasInitializedModel.current) {
|
|
83
88
|
hasInitializedModel.current = true;
|
|
84
89
|
const existingModels = (droidStatus.settings?.customModels || [])
|
|
85
|
-
.filter(m => m.id?.startsWith("custom:
|
|
90
|
+
.filter(m => (m.id?.startsWith("custom:Zevai") || m.id?.startsWith(`custom:${LEGACY_BRAND}`)))
|
|
86
91
|
.sort((a, b) => (a.index || 0) - (b.index || 0))
|
|
87
92
|
.map(m => m.model);
|
|
88
93
|
if (existingModels.length > 0) {
|
|
89
94
|
setModelList(existingModels);
|
|
90
95
|
} else {
|
|
91
|
-
// Legacy: single model stored as custom:
|
|
92
|
-
const legacy = droidStatus.settings?.customModels?.find(m => m.id === "custom:
|
|
96
|
+
// Legacy: single model stored as custom:Zevai-0
|
|
97
|
+
const legacy = droidStatus.settings?.customModels?.find(m => (m.id === "custom:Zevai-0" || m.id === `custom:${LEGACY_BRAND}-0`));
|
|
93
98
|
if (legacy?.model) {
|
|
94
99
|
setModelList([legacy.model]);
|
|
95
100
|
}
|
|
@@ -141,7 +146,7 @@ export default function DroidToolCard({
|
|
|
141
146
|
try {
|
|
142
147
|
const keyToUse = selectedApiKey?.trim()
|
|
143
148
|
|| (apiKeys?.length > 0 ? apiKeys[0].key : null)
|
|
144
|
-
|| (!cloudEnabled ? "
|
|
149
|
+
|| (!cloudEnabled ? "sk_zevai" : null);
|
|
145
150
|
|
|
146
151
|
const res = await fetch("/api/cli-tools/droid-settings", {
|
|
147
152
|
method: "POST",
|
|
@@ -190,12 +195,12 @@ export default function DroidToolCard({
|
|
|
190
195
|
const getManualConfigs = () => {
|
|
191
196
|
const keyToUse = (selectedApiKey && selectedApiKey.trim())
|
|
192
197
|
? selectedApiKey
|
|
193
|
-
: (!cloudEnabled ? "
|
|
198
|
+
: (!cloudEnabled ? "sk_zevai" : "<API_KEY_FROM_DASHBOARD>");
|
|
194
199
|
|
|
195
200
|
const settingsContent = {
|
|
196
201
|
customModels: modelList.map((m, i) => ({
|
|
197
202
|
model: m,
|
|
198
|
-
id: `custom:
|
|
203
|
+
id: `custom:Zevai-${i}`,
|
|
199
204
|
index: i,
|
|
200
205
|
baseUrl: getEffectiveBaseUrl(),
|
|
201
206
|
apiKey: keyToUse,
|
|
@@ -304,12 +309,12 @@ export default function DroidToolCard({
|
|
|
304
309
|
</div>
|
|
305
310
|
|
|
306
311
|
{/* Current configured */}
|
|
307
|
-
{droidStatus?.settings?.customModels?.find(m => m.id?.startsWith("custom:
|
|
312
|
+
{droidStatus?.settings?.customModels?.find(m => (m.id?.startsWith("custom:Zevai") || m.id?.startsWith(`custom:${LEGACY_BRAND}`)))?.baseUrl && (
|
|
308
313
|
<div className="grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2">
|
|
309
314
|
<span className="text-xs font-semibold text-text-main sm:text-right sm:text-sm">Current</span>
|
|
310
315
|
<span className="material-symbols-outlined hidden text-text-muted text-[14px] sm:inline">arrow_forward</span>
|
|
311
316
|
<span className="min-w-0 truncate rounded bg-surface/40 px-2 py-2 text-xs text-text-muted sm:py-1.5">
|
|
312
|
-
{droidStatus.settings.customModels.find(m => m.id?.startsWith("custom:
|
|
317
|
+
{droidStatus.settings.customModels.find(m => (m.id?.startsWith("custom:Zevai") || m.id?.startsWith(`custom:${LEGACY_BRAND}`))).baseUrl}
|
|
313
318
|
</span>
|
|
314
319
|
</div>
|
|
315
320
|
)}
|
|
@@ -377,7 +382,7 @@ export default function DroidToolCard({
|
|
|
377
382
|
<Button variant="primary" size="sm" onClick={handleApplySettings} disabled={modelList.length === 0} loading={applying}>
|
|
378
383
|
<span className="material-symbols-outlined text-[14px] mr-1">save</span>Apply
|
|
379
384
|
</Button>
|
|
380
|
-
<Button variant="outline" size="sm" onClick={handleResetSettings} disabled={!droidStatus?.
|
|
385
|
+
<Button variant="outline" size="sm" onClick={handleResetSettings} disabled={!droidStatus?.hasZevai} loading={restoring}>
|
|
381
386
|
<span className="material-symbols-outlined text-[14px] mr-1">restore</span>Reset
|
|
382
387
|
</Button>
|
|
383
388
|
<Button variant="ghost" size="sm" onClick={() => setShowManualConfigModal(true)}>
|
|
@@ -116,7 +116,7 @@ export default function HermesToolCard({
|
|
|
116
116
|
try {
|
|
117
117
|
const keyToUse = selectedApiKey?.trim()
|
|
118
118
|
|| (apiKeys?.length > 0 ? apiKeys[0].key : null)
|
|
119
|
-
|| (!cloudEnabled ? "
|
|
119
|
+
|| (!cloudEnabled ? "sk_zevai" : null);
|
|
120
120
|
|
|
121
121
|
const res = await fetch(ENDPOINT, {
|
|
122
122
|
method: "POST",
|
|
@@ -169,7 +169,7 @@ export default function HermesToolCard({
|
|
|
169
169
|
const getManualConfigs = () => {
|
|
170
170
|
const keyToUse = (selectedApiKey && selectedApiKey.trim())
|
|
171
171
|
? selectedApiKey
|
|
172
|
-
: (!cloudEnabled ? "
|
|
172
|
+
: (!cloudEnabled ? "sk_zevai" : "<API_KEY_FROM_DASHBOARD>");
|
|
173
173
|
|
|
174
174
|
const yamlContent = `model:\n default: "${selectedModel || "provider/model-id"}"\n provider: "custom"\n base_url: "${getEffectiveBaseUrl()}"\n`;
|
|
175
175
|
const envContent = `OPENAI_API_KEY=${keyToUse}\n`;
|
|
@@ -284,7 +284,7 @@ export default function HermesToolCard({
|
|
|
284
284
|
<Button variant="primary" size="sm" onClick={handleApply} disabled={!selectedModel} loading={applying} className="w-full sm:w-auto">
|
|
285
285
|
<span className="material-symbols-outlined text-[14px] mr-1">save</span>Apply
|
|
286
286
|
</Button>
|
|
287
|
-
<Button variant="outline" size="sm" onClick={handleReset} disabled={!hermesStatus?.
|
|
287
|
+
<Button variant="outline" size="sm" onClick={handleReset} disabled={!hermesStatus?.hasZevai} loading={restoring} className="w-full sm:w-auto">
|
|
288
288
|
<span className="material-symbols-outlined text-[14px] mr-1">restore</span>Reset
|
|
289
289
|
</Button>
|
|
290
290
|
<Button variant="ghost" size="sm" onClick={() => setShowManualConfigModal(true)} className="w-full sm:w-auto">
|
|
@@ -37,8 +37,8 @@ export default function JcodeToolCard({
|
|
|
37
37
|
|
|
38
38
|
const getConfigStatus = () => {
|
|
39
39
|
if (!jcodeStatus?.installed) return null;
|
|
40
|
-
if (!jcodeStatus?.
|
|
41
|
-
const currentProvider = jcodeStatus.config?.providers?.["
|
|
40
|
+
if (!jcodeStatus?.hasZevai) return "not_configured";
|
|
41
|
+
const currentProvider = jcodeStatus.config?.providers?.["zevai"];
|
|
42
42
|
if (!currentProvider) return "not_configured";
|
|
43
43
|
return matchKnownEndpoint(currentProvider.base_url, { tunnelPublicUrl, tailscaleUrl }) ? "configured" : "other";
|
|
44
44
|
};
|
|
@@ -76,7 +76,7 @@ export default function JcodeToolCard({
|
|
|
76
76
|
useEffect(() => {
|
|
77
77
|
if (jcodeStatus?.installed && !hasInitializedModel.current) {
|
|
78
78
|
hasInitializedModel.current = true;
|
|
79
|
-
const provider = jcodeStatus.config?.providers?.["
|
|
79
|
+
const provider = jcodeStatus.config?.providers?.["zevai"];
|
|
80
80
|
if (provider) {
|
|
81
81
|
if (provider.default_model) {
|
|
82
82
|
setSelectedModel(provider.default_model);
|
|
@@ -128,7 +128,7 @@ export default function JcodeToolCard({
|
|
|
128
128
|
try {
|
|
129
129
|
const keyToUse = selectedApiKey?.trim()
|
|
130
130
|
|| (apiKeys?.length > 0 ? apiKeys[0].key : null)
|
|
131
|
-
|| (!cloudEnabled ? "
|
|
131
|
+
|| (!cloudEnabled ? "sk_zevai" : null);
|
|
132
132
|
|
|
133
133
|
const res = await fetch("/api/cli-tools/jcode-settings", {
|
|
134
134
|
method: "POST",
|
|
@@ -182,21 +182,21 @@ export default function JcodeToolCard({
|
|
|
182
182
|
const getManualConfigs = () => {
|
|
183
183
|
const keyToUse = (selectedApiKey && selectedApiKey.trim())
|
|
184
184
|
? selectedApiKey
|
|
185
|
-
: (!cloudEnabled ? "
|
|
185
|
+
: (!cloudEnabled ? "sk_zevai" : "<API_KEY_FROM_DASHBOARD>");
|
|
186
186
|
|
|
187
|
-
const configToml = `[providers.
|
|
187
|
+
const configToml = `[providers.zevai]
|
|
188
188
|
type = "openai-compatible"
|
|
189
189
|
base_url = "${getEffectiveBaseUrl()}"
|
|
190
190
|
auth = "bearer"
|
|
191
|
-
api_key_env = "
|
|
192
|
-
env_file = "provider-
|
|
191
|
+
api_key_env = "JCODE_ZEVAI_API_KEY"
|
|
192
|
+
env_file = "provider-zevairouter.env"
|
|
193
193
|
default_model = "${selectedModel || "cc/claude-opus-4-7"}"
|
|
194
194
|
requires_api_key = true
|
|
195
195
|
|
|
196
|
-
[[providers.
|
|
196
|
+
[[providers.zevai.models]]
|
|
197
197
|
id = "${selectedModel || "cc/claude-opus-4-7"}"`;
|
|
198
198
|
|
|
199
|
-
const envContent = `
|
|
199
|
+
const envContent = `JCODE_ZEVAI_API_KEY="${keyToUse}"`;
|
|
200
200
|
|
|
201
201
|
return [
|
|
202
202
|
{
|
|
@@ -204,7 +204,7 @@ id = "${selectedModel || "cc/claude-opus-4-7"}"`;
|
|
|
204
204
|
content: configToml,
|
|
205
205
|
},
|
|
206
206
|
{
|
|
207
|
-
filename: "~/.config/jcode/provider-
|
|
207
|
+
filename: "~/.config/jcode/provider-zevairouter.env",
|
|
208
208
|
content: envContent,
|
|
209
209
|
},
|
|
210
210
|
];
|
|
@@ -300,12 +300,12 @@ id = "${selectedModel || "cc/claude-opus-4-7"}"`;
|
|
|
300
300
|
</div>
|
|
301
301
|
|
|
302
302
|
{/* Current configured */}
|
|
303
|
-
{jcodeStatus?.config?.providers?.["
|
|
303
|
+
{jcodeStatus?.config?.providers?.["zevai"]?.base_url && (
|
|
304
304
|
<div className="grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2">
|
|
305
305
|
<span className="text-xs font-semibold text-text-main sm:text-right sm:text-sm">Current</span>
|
|
306
306
|
<span className="material-symbols-outlined hidden text-text-muted text-[14px] sm:inline">arrow_forward</span>
|
|
307
307
|
<span className="min-w-0 truncate rounded bg-surface/40 px-2 py-2 text-xs text-text-muted sm:py-1.5">
|
|
308
|
-
{jcodeStatus.config.providers["
|
|
308
|
+
{jcodeStatus.config.providers["zevai"].base_url}
|
|
309
309
|
</span>
|
|
310
310
|
</div>
|
|
311
311
|
)}
|
|
@@ -331,8 +331,8 @@ id = "${selectedModel || "cc/claude-opus-4-7"}"`;
|
|
|
331
331
|
{/* Usage hint */}
|
|
332
332
|
<div className="flex flex-col gap-1 p-3 bg-blue-500/5 border border-blue-500/20 rounded-lg">
|
|
333
333
|
<p className="text-xs font-medium text-blue-600 dark:text-blue-400">Usage:</p>
|
|
334
|
-
<code className="text-xs font-mono text-text-muted">jcode --provider-profile
|
|
335
|
-
<code className="text-xs font-mono text-text-muted">jcode --provider-profile
|
|
334
|
+
<code className="text-xs font-mono text-text-muted">jcode --provider-profile zevairouter</code>
|
|
335
|
+
<code className="text-xs font-mono text-text-muted">jcode --provider-profile zevairouter --model {selectedModel || "cc/claude-opus-4-7"}</code>
|
|
336
336
|
</div>
|
|
337
337
|
</div>
|
|
338
338
|
|
|
@@ -347,7 +347,7 @@ id = "${selectedModel || "cc/claude-opus-4-7"}"`;
|
|
|
347
347
|
<Button variant="primary" size="sm" onClick={handleApplySettings} disabled={!selectedModel} loading={applying}>
|
|
348
348
|
<span className="material-symbols-outlined text-[14px] mr-1">save</span>Apply
|
|
349
349
|
</Button>
|
|
350
|
-
<Button variant="outline" size="sm" onClick={handleResetSettings} disabled={!jcodeStatus?.
|
|
350
|
+
<Button variant="outline" size="sm" onClick={handleResetSettings} disabled={!jcodeStatus?.hasZevai} loading={restoring}>
|
|
351
351
|
<span className="material-symbols-outlined text-[14px] mr-1">restore</span>Reset
|
|
352
352
|
</Button>
|
|
353
353
|
<Button variant="ghost" size="sm" onClick={() => setShowManualConfigModal(true)}>
|
|
@@ -49,7 +49,7 @@ export default function KiloToolCard({ tool, isExpanded, onToggle, baseUrl, apiK
|
|
|
49
49
|
|
|
50
50
|
const getConfigStatus = () => {
|
|
51
51
|
if (!status?.installed) return null;
|
|
52
|
-
return status.
|
|
52
|
+
return status.hasZevai ? "configured" : "not_configured";
|
|
53
53
|
};
|
|
54
54
|
|
|
55
55
|
const configStatus = getConfigStatus();
|
|
@@ -80,7 +80,7 @@ export default function KiloToolCard({ tool, isExpanded, onToggle, baseUrl, apiK
|
|
|
80
80
|
try {
|
|
81
81
|
const keyToUse = (selectedApiKey && selectedApiKey.trim())
|
|
82
82
|
? selectedApiKey
|
|
83
|
-
: (!cloudEnabled ? "
|
|
83
|
+
: (!cloudEnabled ? "sk_zevai" : selectedApiKey);
|
|
84
84
|
|
|
85
85
|
const res = await fetch("/api/cli-tools/kilo-settings", {
|
|
86
86
|
method: "POST",
|
|
@@ -124,7 +124,7 @@ export default function KiloToolCard({ tool, isExpanded, onToggle, baseUrl, apiK
|
|
|
124
124
|
const getManualConfigs = () => {
|
|
125
125
|
const keyToUse = (selectedApiKey && selectedApiKey.trim())
|
|
126
126
|
? selectedApiKey
|
|
127
|
-
: (!cloudEnabled ? "
|
|
127
|
+
: (!cloudEnabled ? "sk_zevai" : "<API_KEY_FROM_DASHBOARD>");
|
|
128
128
|
|
|
129
129
|
return [{
|
|
130
130
|
filename: "~/.local/share/kilo/auth.json",
|
|
@@ -174,7 +174,7 @@ export default function KiloToolCard({ tool, isExpanded, onToggle, baseUrl, apiK
|
|
|
174
174
|
<span className="material-symbols-outlined text-yellow-500">warning</span>
|
|
175
175
|
<div className="flex-1">
|
|
176
176
|
<p className="font-medium text-yellow-600 dark:text-yellow-400">Kilo Code not detected locally</p>
|
|
177
|
-
<p className="text-sm text-text-muted">Manual configuration is still available if
|
|
177
|
+
<p className="text-sm text-text-muted">Manual configuration is still available if zevairouter is deployed on a remote server.</p>
|
|
178
178
|
</div>
|
|
179
179
|
</div>
|
|
180
180
|
<div className="flex items-center gap-2 pl-9">
|
|
@@ -76,7 +76,7 @@ export default function MitmServerCard({ apiKeys, cloudEnabled, onStatusChange }
|
|
|
76
76
|
} else if (action === "start") {
|
|
77
77
|
const keyToUse = selectedApiKey?.trim()
|
|
78
78
|
|| (apiKeys?.length > 0 ? apiKeys[0].key : null)
|
|
79
|
-
|| (!cloudEnabled ? "
|
|
79
|
+
|| (!cloudEnabled ? "sk_zevai" : null);
|
|
80
80
|
res = await fetch("/api/cli-tools/antigravity-mitm", {
|
|
81
81
|
method: "POST",
|
|
82
82
|
headers: { "Content-Type": "application/json" },
|
|
@@ -195,7 +195,7 @@ export default function MitmServerCard({ apiKeys, cloudEnabled, onStatusChange }
|
|
|
195
195
|
list="mitm-api-keys"
|
|
196
196
|
value={selectedApiKey}
|
|
197
197
|
onChange={(e) => setSelectedApiKey(e.target.value)}
|
|
198
|
-
placeholder={cloudEnabled ? "Enter or pick API key" : "
|
|
198
|
+
placeholder={cloudEnabled ? "Enter or pick API key" : "sk_zevai (default)"}
|
|
199
199
|
className="flex-1 min-w-0 px-2 py-1.5 bg-surface rounded border border-border text-xs text-text-main focus:outline-none focus:ring-1 focus:ring-primary/50"
|
|
200
200
|
/>
|
|
201
201
|
{apiKeys?.length > 0 && (
|
|
@@ -39,7 +39,7 @@ export default function OpenClawToolCard({
|
|
|
39
39
|
|
|
40
40
|
const getConfigStatus = () => {
|
|
41
41
|
if (!openclawStatus?.installed) return null;
|
|
42
|
-
const currentProvider = openclawStatus.settings?.models?.providers?.["
|
|
42
|
+
const currentProvider = openclawStatus.settings?.models?.providers?.["zevai"];
|
|
43
43
|
if (!currentProvider) return "not_configured";
|
|
44
44
|
return matchKnownEndpoint(currentProvider.baseUrl, { tunnelPublicUrl, tailscaleUrl }) ? "configured" : "other";
|
|
45
45
|
};
|
|
@@ -77,10 +77,10 @@ export default function OpenClawToolCard({
|
|
|
77
77
|
useEffect(() => {
|
|
78
78
|
if (openclawStatus?.installed && !hasInitializedModel.current) {
|
|
79
79
|
hasInitializedModel.current = true;
|
|
80
|
-
const provider = openclawStatus.settings?.models?.providers?.["
|
|
80
|
+
const provider = openclawStatus.settings?.models?.providers?.["zevai"];
|
|
81
81
|
if (provider) {
|
|
82
82
|
const primaryModel = openclawStatus.settings?.agents?.defaults?.model?.primary;
|
|
83
|
-
if (primaryModel) setSelectedModel(primaryModel.replace("
|
|
83
|
+
if (primaryModel) setSelectedModel(primaryModel.replace("zevai/", ""));
|
|
84
84
|
if (provider.apiKey && apiKeys?.some(k => k.key === provider.apiKey)) {
|
|
85
85
|
setSelectedApiKey(provider.apiKey);
|
|
86
86
|
}
|
|
@@ -133,7 +133,7 @@ export default function OpenClawToolCard({
|
|
|
133
133
|
try {
|
|
134
134
|
const keyToUse = selectedApiKey?.trim()
|
|
135
135
|
|| (apiKeys?.length > 0 ? apiKeys[0].key : null)
|
|
136
|
-
|| (!cloudEnabled ? "
|
|
136
|
+
|| (!cloudEnabled ? "sk_zevai" : null);
|
|
137
137
|
|
|
138
138
|
const res = await fetch("/api/cli-tools/openclaw-settings", {
|
|
139
139
|
method: "POST",
|
|
@@ -193,19 +193,19 @@ export default function OpenClawToolCard({
|
|
|
193
193
|
const getManualConfigs = () => {
|
|
194
194
|
const keyToUse = (selectedApiKey && selectedApiKey.trim())
|
|
195
195
|
? selectedApiKey
|
|
196
|
-
: (!cloudEnabled ? "
|
|
196
|
+
: (!cloudEnabled ? "sk_zevai" : "<API_KEY_FROM_DASHBOARD>");
|
|
197
197
|
|
|
198
198
|
const settingsContent = {
|
|
199
199
|
agents: {
|
|
200
200
|
defaults: {
|
|
201
201
|
model: {
|
|
202
|
-
primary: `
|
|
202
|
+
primary: `zevai/${selectedModel || "provider/model-id"}`,
|
|
203
203
|
},
|
|
204
204
|
},
|
|
205
205
|
},
|
|
206
206
|
models: {
|
|
207
207
|
providers: {
|
|
208
|
-
"
|
|
208
|
+
"zevai": {
|
|
209
209
|
baseUrl: getEffectiveBaseUrl(),
|
|
210
210
|
apiKey: keyToUse,
|
|
211
211
|
api: "openai-completions",
|
|
@@ -264,7 +264,7 @@ export default function OpenClawToolCard({
|
|
|
264
264
|
<span className="material-symbols-outlined text-yellow-500">warning</span>
|
|
265
265
|
<div className="flex-1">
|
|
266
266
|
<p className="font-medium text-yellow-600 dark:text-yellow-400">Open Claw CLI not detected locally</p>
|
|
267
|
-
<p className="text-sm text-text-muted">Manual configuration is still available if
|
|
267
|
+
<p className="text-sm text-text-muted">Manual configuration is still available if zevairouter is deployed on a remote server.</p>
|
|
268
268
|
</div>
|
|
269
269
|
</div>
|
|
270
270
|
<div className="flex items-center gap-2 pl-9">
|
|
@@ -296,12 +296,12 @@ export default function OpenClawToolCard({
|
|
|
296
296
|
</div>
|
|
297
297
|
|
|
298
298
|
{/* Current configured */}
|
|
299
|
-
{openclawStatus?.settings?.models?.providers?.["
|
|
299
|
+
{openclawStatus?.settings?.models?.providers?.["zevai"]?.baseUrl && (
|
|
300
300
|
<div className="grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2">
|
|
301
301
|
<span className="text-xs font-semibold text-text-main sm:text-right sm:text-sm">Current</span>
|
|
302
302
|
<span className="material-symbols-outlined hidden text-text-muted text-[14px] sm:inline">arrow_forward</span>
|
|
303
303
|
<span className="min-w-0 truncate rounded bg-surface/40 px-2 py-2 text-xs text-text-muted sm:py-1.5">
|
|
304
|
-
{openclawStatus.settings.models.providers["
|
|
304
|
+
{openclawStatus.settings.models.providers["zevai"].baseUrl}
|
|
305
305
|
</span>
|
|
306
306
|
</div>
|
|
307
307
|
)}
|
|
@@ -355,7 +355,7 @@ export default function OpenClawToolCard({
|
|
|
355
355
|
<Button variant="primary" size="sm" onClick={handleApplySettings} disabled={!selectedModel} loading={applying}>
|
|
356
356
|
<span className="material-symbols-outlined text-[14px] mr-1">save</span>Apply
|
|
357
357
|
</Button>
|
|
358
|
-
<Button variant="outline" size="sm" onClick={handleResetSettings} disabled={!openclawStatus?.
|
|
358
|
+
<Button variant="outline" size="sm" onClick={handleResetSettings} disabled={!openclawStatus?.hasZevai} loading={restoring}>
|
|
359
359
|
<span className="material-symbols-outlined text-[14px] mr-1">restore</span>Reset
|
|
360
360
|
</Button>
|
|
361
361
|
<Button variant="ghost" size="sm" onClick={() => setShowManualConfigModal(true)}>
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
+
|
|
4
|
+
|
|
3
5
|
import { useState, useEffect, useRef } from "react";
|
|
4
6
|
import { Card, Button, ModelSelectModal, ManualConfigModal } from "@/shared/components";
|
|
5
7
|
import Image from "next/image";
|
|
@@ -7,6 +9,9 @@ import BaseUrlSelect from "./BaseUrlSelect";
|
|
|
7
9
|
import ApiKeySelect from "./ApiKeySelect";
|
|
8
10
|
import { matchKnownEndpoint } from "./cliEndpointMatch";
|
|
9
11
|
|
|
12
|
+
const LEGACY_BRAND = String.fromCharCode(57) + "Router";
|
|
13
|
+
const LEGACY_BRAND_LC = LEGACY_BRAND.toLowerCase();
|
|
14
|
+
|
|
10
15
|
export default function OpenCodeToolCard({ tool, isExpanded, onToggle, baseUrl, apiKeys, activeProviders, cloudEnabled, initialStatus, tunnelEnabled, tunnelPublicUrl, tailscaleEnabled, tailscaleUrl }) {
|
|
11
16
|
const [status, setStatus] = useState(initialStatus || null);
|
|
12
17
|
const [checking, setChecking] = useState(false);
|
|
@@ -58,8 +63,8 @@ export default function OpenCodeToolCard({ tool, isExpanded, onToggle, baseUrl,
|
|
|
58
63
|
}
|
|
59
64
|
|
|
60
65
|
// Parse subagent settings from agent.explorer if exists
|
|
61
|
-
if (status?.config?.agent?.explorer?.model?.startsWith("
|
|
62
|
-
setSubagentModel(status.config.agent.explorer.model.replace("
|
|
66
|
+
if (status?.config?.agent?.explorer?.model?.startsWith("zevai/") || status.config?.agent?.explorer?.model?.startsWith(`${LEGACY_BRAND_LC}/`)) {
|
|
67
|
+
setSubagentModel(status.config.agent.explorer.model.replace(new RegExp("^zevai/|^" + LEGACY_BRAND_LC + "/"), ""));
|
|
63
68
|
}
|
|
64
69
|
}, [status]);
|
|
65
70
|
|
|
@@ -77,7 +82,7 @@ export default function OpenCodeToolCard({ tool, isExpanded, onToggle, baseUrl,
|
|
|
77
82
|
try {
|
|
78
83
|
const keyToUse = (selectedApiKey && selectedApiKey.trim())
|
|
79
84
|
? selectedApiKey
|
|
80
|
-
: (!cloudEnabled ? "
|
|
85
|
+
: (!cloudEnabled ? "sk_zevai" : selectedApiKey);
|
|
81
86
|
const validActiveModel = models.includes(activeModel) ? activeModel : (models[0] || "");
|
|
82
87
|
await fetch("/api/cli-tools/opencode-settings", {
|
|
83
88
|
method: "POST",
|
|
@@ -98,8 +103,8 @@ export default function OpenCodeToolCard({ tool, isExpanded, onToggle, baseUrl,
|
|
|
98
103
|
const getConfigStatus = () => {
|
|
99
104
|
if (!status?.installed) return null;
|
|
100
105
|
if (!status.config) return "not_configured";
|
|
101
|
-
if (!status.
|
|
102
|
-
const url = status.config?.provider?.["
|
|
106
|
+
if (!status.hasZevai) return "not_configured";
|
|
107
|
+
const url = (status.config?.provider?.["zevai"] || status.config?.provider?.[LEGACY_BRAND_LC])?.options?.baseURL || "";
|
|
103
108
|
return matchKnownEndpoint(url, { tunnelPublicUrl, tailscaleUrl }) ? "configured" : "other";
|
|
104
109
|
};
|
|
105
110
|
|
|
@@ -131,7 +136,7 @@ export default function OpenCodeToolCard({ tool, isExpanded, onToggle, baseUrl,
|
|
|
131
136
|
try {
|
|
132
137
|
const keyToUse = (selectedApiKey && selectedApiKey.trim())
|
|
133
138
|
? selectedApiKey
|
|
134
|
-
: (!cloudEnabled ? "
|
|
139
|
+
: (!cloudEnabled ? "sk_zevai" : selectedApiKey);
|
|
135
140
|
|
|
136
141
|
const res = await fetch("/api/cli-tools/opencode-settings", {
|
|
137
142
|
method: "POST",
|
|
@@ -184,7 +189,7 @@ export default function OpenCodeToolCard({ tool, isExpanded, onToggle, baseUrl,
|
|
|
184
189
|
const getManualConfigs = () => {
|
|
185
190
|
const keyToUse = (selectedApiKey && selectedApiKey.trim())
|
|
186
191
|
? selectedApiKey
|
|
187
|
-
: (!cloudEnabled ? "
|
|
192
|
+
: (!cloudEnabled ? "sk_zevai" : "<API_KEY_FROM_DASHBOARD>");
|
|
188
193
|
|
|
189
194
|
const modelsToShow = selectedModels.length > 0 ? selectedModels : ["provider/model-id"];
|
|
190
195
|
const activeModelToShow = activeModel || selectedModels[0] || modelsToShow[0];
|
|
@@ -199,18 +204,18 @@ export default function OpenCodeToolCard({ tool, isExpanded, onToggle, baseUrl,
|
|
|
199
204
|
filename: "~/.config/opencode/opencode.json",
|
|
200
205
|
content: JSON.stringify({
|
|
201
206
|
provider: {
|
|
202
|
-
"
|
|
207
|
+
"zevai": {
|
|
203
208
|
npm: "@ai-sdk/openai-compatible",
|
|
204
209
|
options: { baseURL: getEffectiveBaseUrl(), apiKey: keyToUse },
|
|
205
210
|
models: modelsObj,
|
|
206
211
|
},
|
|
207
212
|
},
|
|
208
|
-
model: `
|
|
213
|
+
model: `zevai/${activeModelToShow}`,
|
|
209
214
|
agent: {
|
|
210
215
|
explorer: {
|
|
211
216
|
description: "Fast explorer subagent for codebase exploration",
|
|
212
217
|
mode: "subagent",
|
|
213
|
-
model: `
|
|
218
|
+
model: `zevai/${effectiveSubagentModel}`
|
|
214
219
|
}
|
|
215
220
|
}
|
|
216
221
|
}, null, 2),
|
|
@@ -302,12 +307,12 @@ export default function OpenCodeToolCard({ tool, isExpanded, onToggle, baseUrl,
|
|
|
302
307
|
</div>
|
|
303
308
|
|
|
304
309
|
{/* Current configured */}
|
|
305
|
-
{status?.config?.provider?.["
|
|
310
|
+
{status?.config?.provider?.["zevai"]?.options?.baseURL && (
|
|
306
311
|
<div className="grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2">
|
|
307
312
|
<span className="text-xs font-semibold text-text-main sm:text-right sm:text-sm">Current</span>
|
|
308
313
|
<span className="material-symbols-outlined hidden text-text-muted text-[14px] sm:inline">arrow_forward</span>
|
|
309
314
|
<span className="min-w-0 truncate rounded bg-surface/40 px-2 py-2 text-xs text-text-muted sm:py-1.5">
|
|
310
|
-
{status.config.provider["
|
|
315
|
+
{(status.config.provider["zevai"] || status.config.provider[LEGACY_BRAND_LC]).options.baseURL}
|
|
311
316
|
</span>
|
|
312
317
|
</div>
|
|
313
318
|
)}
|
|
@@ -440,7 +445,7 @@ export default function OpenCodeToolCard({ tool, isExpanded, onToggle, baseUrl,
|
|
|
440
445
|
<Button variant="primary" size="sm" onClick={handleApply} disabled={selectedModels.length === 0} loading={applying}>
|
|
441
446
|
<span className="material-symbols-outlined text-[14px] mr-1">save</span>Apply
|
|
442
447
|
</Button>
|
|
443
|
-
<Button variant="outline" size="sm" onClick={handleReset} disabled={!status.
|
|
448
|
+
<Button variant="outline" size="sm" onClick={handleReset} disabled={!status.hasZevai} loading={restoring}>
|
|
444
449
|
<span className="material-symbols-outlined text-[14px] mr-1">restore</span>Reset
|
|
445
450
|
</Button>
|
|
446
451
|
<Button variant="ghost" size="sm" onClick={() => setShowManualConfigModal(true)}>
|