zevairouter 1.0.62 → 1.0.66
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 +36 -8
- package/README.md +58 -10
- package/README.zh-CN.md +37 -0
- package/cli/app/.next-cli-build/BUILD_ID +1 -1
- package/cli/app/.next-cli-build/app-path-routes-manifest.json +16 -16
- 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_client-reference-manifest.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/playground/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/terminal/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/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.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/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-cn/bulk-import/[jobId]/cancel/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/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/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/providers/[id]/test-models/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/settings/database/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/settings/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/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/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/playground.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/playground.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.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/app-paths-manifest.json +16 -16
- package/cli/app/.next-cli-build/server/chunks/3110.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/3407.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/5681.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/5949.js +8 -3
- package/cli/app/.next-cli-build/server/chunks/6896.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/7276.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/8157.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/8371.js +1 -1
- package/cli/app/.next-cli-build/server/middleware-build-manifest.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/{3702-3049f543449956ae.js → 3702-3772f83d7867a26d.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/app/landing/page-6621ec8b157e77cc.js +1 -0
- package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
- package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
- package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
- package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
- package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
- package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
- package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
- package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
- package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
- package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
- package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
- package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
- package/cli/app/cli/hooks/camoufoxRuntime.js +227 -24
- package/cli/app/cli/hooks/cloakbrowserRuntime.js +0 -7
- package/cli/app/package.json +1 -1
- package/cli/app/src/lib/oauth/services/displayEnv.js +134 -0
- package/cli/hooks/camoufoxRuntime.js +227 -24
- package/cli/hooks/cloakbrowserRuntime.js +0 -7
- package/cli/package.json +1 -1
- package/i18n/README.ja-JP.md +19 -1191
- package/i18n/README.ru.md +19 -1293
- package/i18n/README.vi.md +19 -1292
- package/i18n/README.zh-CN.md +19 -1288
- package/open-sse/config/kiroConstants.js +1 -1
- package/package.json +1 -1
- package/src/app/landing/components/Features.js +2 -2
- package/src/app/landing/components/HeroSection.js +1 -1
- package/src/app/landing/components/HowItWorks.js +2 -2
- package/src/app/landing/page.js +3 -3
- package/src/lib/network/outboundProxy.js +37 -23
- package/src/lib/oauth/services/bulkImportBrowserEngine.js +219 -22
- package/src/lib/oauth/services/codebuddyCnBulkImportManager.js +161 -72
- package/src/lib/oauth/services/codebuddyCnPhoneAutomation.js +171 -45
- package/src/lib/oauth/services/kiroBulkImportManager.js +18 -13
- package/src/mitm/manager.js +1 -1
- package/src/shared/constants/providers.js +4 -4
- package/cli/app/.next-cli-build/static/chunks/app/landing/page-77b3f78b93a8d0c7.js +0 -1
- package/cli/app/src/lib/oauth/services/bulkImportBrowserEngine.js +0 -325
- /package/cli/app/.next-cli-build/static/{4qzgXNlTatuSwREqjg1Tx → 2RSZhfKmiF-DD-v1D0TnS}/_buildManifest.js +0 -0
- /package/cli/app/.next-cli-build/static/{4qzgXNlTatuSwREqjg1Tx → 2RSZhfKmiF-DD-v1D0TnS}/_ssgManifest.js +0 -0
|
@@ -31,7 +31,7 @@ import {
|
|
|
31
31
|
} from "./kiroBulkImportManager.js";
|
|
32
32
|
import { getProxyPools, getProxyPoolById } from "../../../models/index.js";
|
|
33
33
|
import { getSettings } from "../../localDb.js";
|
|
34
|
-
import { getOptimalWorkerCount, isAutoConcurrencyValue } from "../../systemSpecs.js";
|
|
34
|
+
import { getOptimalWorkerCount, getSystemSpecs, isAutoConcurrencyValue } from "../../systemSpecs.js";
|
|
35
35
|
import { CODEBUDDY_CN_CONFIG } from "../constants/oauth.js";
|
|
36
36
|
import { FiveSimClient, FiveSimTimeoutError } from "./fiveSimClient.js";
|
|
37
37
|
import { runCodeBuddyCnPhoneRegistration } from "./codebuddyCnPhoneAutomation.js";
|
|
@@ -40,15 +40,18 @@ import {
|
|
|
40
40
|
defaultPollForToken,
|
|
41
41
|
fetchCodeBuddyLoginAccount,
|
|
42
42
|
} from "./codebuddyBulkImportManager.js";
|
|
43
|
+
import { forceCloseBrowser } from "./bulkImportBrowserEngine.js";
|
|
43
44
|
|
|
44
45
|
const CODEBUDDY_CN_PROVIDER_ID = "codebuddy-cn";
|
|
45
46
|
const CODEBUDDY_CN_LABEL = "CodeBuddy CN";
|
|
46
47
|
const CODEBUDDY_CN_DOMAIN = "www.codebuddy.cn";
|
|
47
48
|
|
|
48
|
-
//
|
|
49
|
-
const CODEBUDDY_CN_DEFAULT_CONCURRENCY =
|
|
49
|
+
// Default concurrency 1 — Camoufox alone can pin a 2GB VPS; multi-worker OOM/hang.
|
|
50
|
+
const CODEBUDDY_CN_DEFAULT_CONCURRENCY = 1;
|
|
50
51
|
const CODEBUDDY_CN_MAX_CONCURRENCY = 8;
|
|
51
52
|
const CODEBUDDY_CN_MIN_CONCURRENCY = 1;
|
|
53
|
+
// Hosts under this RAM hard-cap concurrency at 1 (typical cheap VPS = 1.9–2GB).
|
|
54
|
+
const CODEBUDDY_CN_LOW_MEM_GB = 3;
|
|
52
55
|
|
|
53
56
|
// Cap on count per job (bound cost/rate)
|
|
54
57
|
const CODEBUDDY_CN_MAX_COUNT = 200;
|
|
@@ -61,6 +64,13 @@ const CODEBUDDY_CN_POLL_TIMEOUT_MS = 15 * 60_000;
|
|
|
61
64
|
// input phone, click send code takes ~15-20s before SMS is actually requested).
|
|
62
65
|
const CODEBUDDY_CN_SMS_TIMEOUT_MS = 90_000;
|
|
63
66
|
|
|
67
|
+
// Hard wall-clock per account (nav + form + SMS + API key). Prevents infinite
|
|
68
|
+
// Camoufox spin when proxy/nav blackholes and Playwright timeouts do not fire.
|
|
69
|
+
const CODEBUDDY_CN_ACCOUNT_HARD_TIMEOUT_MS = Number.parseInt(
|
|
70
|
+
process.env.ZEVAI_CN_ACCOUNT_TIMEOUT_MS || "",
|
|
71
|
+
10,
|
|
72
|
+
) || 12 * 60_000;
|
|
73
|
+
|
|
64
74
|
// Supported 5sim regions
|
|
65
75
|
const SUPPORTED_REGIONS = new Set(["hongkong", "china", "any"]);
|
|
66
76
|
const DEFAULT_REGION = "hongkong";
|
|
@@ -81,14 +91,26 @@ function defaultPhoneFormatter(phone) {
|
|
|
81
91
|
return String(phone || "").trim();
|
|
82
92
|
}
|
|
83
93
|
|
|
94
|
+
function isLowMemHost() {
|
|
95
|
+
try {
|
|
96
|
+
const { totalMemGb } = getSystemSpecs();
|
|
97
|
+
return Number.isFinite(totalMemGb) && totalMemGb > 0 && totalMemGb < CODEBUDDY_CN_LOW_MEM_GB;
|
|
98
|
+
} catch {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
84
103
|
function clampCnConcurrency(value) {
|
|
104
|
+
const lowMem = isLowMemHost();
|
|
105
|
+
const hardMax = lowMem ? 1 : CODEBUDDY_CN_MAX_CONCURRENCY;
|
|
106
|
+
const def = lowMem ? 1 : CODEBUDDY_CN_DEFAULT_CONCURRENCY;
|
|
85
107
|
if (isAutoConcurrencyValue(value)) {
|
|
86
108
|
const optimal = getOptimalWorkerCount();
|
|
87
|
-
return Math.min(
|
|
109
|
+
return Math.min(hardMax, Math.max(CODEBUDDY_CN_MIN_CONCURRENCY, optimal));
|
|
88
110
|
}
|
|
89
111
|
const parsed = Number.parseInt(value, 10);
|
|
90
|
-
if (!Number.isFinite(parsed)) return
|
|
91
|
-
return Math.min(
|
|
112
|
+
if (!Number.isFinite(parsed)) return Math.min(hardMax, def);
|
|
113
|
+
return Math.min(hardMax, Math.max(CODEBUDDY_CN_MIN_CONCURRENCY, parsed));
|
|
92
114
|
}
|
|
93
115
|
|
|
94
116
|
/**
|
|
@@ -140,17 +162,23 @@ export class CodeBuddyCnBulkImportManager extends KiroBulkImportManager {
|
|
|
140
162
|
pollIntervalMs = CODEBUDDY_CN_CONFIG.pollInterval,
|
|
141
163
|
storageName = "codebuddy-cn-bulk-import",
|
|
142
164
|
} = {}) {
|
|
143
|
-
// Camoufox needs proxy on browser launch (not context-only).
|
|
144
|
-
//
|
|
165
|
+
// Camoufox needs proxy on browser launch (not context-only).
|
|
166
|
+
// Linux VPS: default headless to cut RAM/CPU (2GB boxes OOM on headed+Xvfb).
|
|
167
|
+
// Desktop (macOS/Windows): headed so the operator can watch / solve captcha.
|
|
168
|
+
// Override: ZEVAI_CN_HEADLESS=0|1
|
|
145
169
|
const cnBrowserLauncher = browserLauncher || (async (job) => {
|
|
146
170
|
const { launchBulkImportBrowser } = await import("./bulkImportBrowserEngine.js");
|
|
147
171
|
const proxyUrl = Array.isArray(job?.proxyUrls) && job.proxyUrls.length
|
|
148
172
|
? job.proxyUrls[0]
|
|
149
173
|
: null;
|
|
174
|
+
const envHeadless = process.env.ZEVAI_CN_HEADLESS;
|
|
175
|
+
let headless = process.platform === "linux";
|
|
176
|
+
if (envHeadless === "0" || envHeadless === "false") headless = false;
|
|
177
|
+
if (envHeadless === "1" || envHeadless === "true") headless = true;
|
|
150
178
|
return launchBulkImportBrowser({
|
|
151
179
|
engine: job?.engine || "camoufox",
|
|
152
180
|
proxyUrl,
|
|
153
|
-
headless
|
|
181
|
+
headless,
|
|
154
182
|
windowSize: { width: 900, height: 700 },
|
|
155
183
|
});
|
|
156
184
|
});
|
|
@@ -338,60 +366,94 @@ export class CodeBuddyCnBulkImportManager extends KiroBulkImportManager {
|
|
|
338
366
|
this.setAccountStep(account, "registering", "Running phone registration on CodeBuddy CN");
|
|
339
367
|
await this.persistJobSnapshot(job, { forcePreview: true });
|
|
340
368
|
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
account,
|
|
349
|
-
"ordering_number",
|
|
350
|
-
`Form ready — ordering ${job.region} phone from 5sim (single buy)`,
|
|
351
|
-
);
|
|
352
|
-
await this.persistJobSnapshot(job, { forcePreview: true });
|
|
369
|
+
// Page-level timeouts so a stuck network never outlives the hard wall-clock.
|
|
370
|
+
try {
|
|
371
|
+
page.setDefaultTimeout(20_000);
|
|
372
|
+
page.setDefaultNavigationTimeout(45_000);
|
|
373
|
+
} catch {
|
|
374
|
+
// older playwright builds may not expose these
|
|
375
|
+
}
|
|
353
376
|
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
"number_ordered",
|
|
366
|
-
`Phone number ordered: ${numberData.phone} (1 buy, no re-order)`,
|
|
367
|
-
);
|
|
368
|
-
await this.persistJobSnapshot(job, { forcePreview: true });
|
|
369
|
-
return numberData.phone;
|
|
370
|
-
},
|
|
371
|
-
waitForSms: async () => {
|
|
372
|
-
if (!fiveSimOrderId) {
|
|
373
|
-
throw new Error("Cannot poll SMS — no 5sim order id");
|
|
374
|
-
}
|
|
375
|
-
this.setAccountStep(
|
|
376
|
-
account,
|
|
377
|
-
"sms_poll_started",
|
|
378
|
-
`SMS poll started (full ${CODEBUDDY_CN_SMS_TIMEOUT_MS / 1000}s window after send-code)`,
|
|
377
|
+
const hardTimeoutMs = CODEBUDDY_CN_ACCOUNT_HARD_TIMEOUT_MS;
|
|
378
|
+
let hardTimer = null;
|
|
379
|
+
const hardTimeoutPromise = new Promise((_, reject) => {
|
|
380
|
+
hardTimer = setTimeout(() => {
|
|
381
|
+
reject(
|
|
382
|
+
Object.assign(
|
|
383
|
+
new Error(
|
|
384
|
+
`CodeBuddy CN account hard timeout after ${Math.round(hardTimeoutMs / 1000)}s (browser will be force-closed)`,
|
|
385
|
+
),
|
|
386
|
+
{ code: "CN_ACCOUNT_HARD_TIMEOUT" },
|
|
387
|
+
),
|
|
379
388
|
);
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
timeoutMs: CODEBUDDY_CN_SMS_TIMEOUT_MS,
|
|
383
|
-
signal: account.abortController?.signal,
|
|
384
|
-
});
|
|
385
|
-
smsReceived = true;
|
|
386
|
-
return code;
|
|
387
|
-
},
|
|
388
|
-
onStep: (step, message) => {
|
|
389
|
-
this.setAccountStep(account, step, message);
|
|
390
|
-
void this.persistJobSnapshot(job, { forcePreview: false });
|
|
391
|
-
},
|
|
392
|
-
phoneFormatter: this.phoneFormatter,
|
|
389
|
+
}, hardTimeoutMs);
|
|
390
|
+
if (typeof hardTimer.unref === "function") hardTimer.unref();
|
|
393
391
|
});
|
|
394
392
|
|
|
393
|
+
let automationResult;
|
|
394
|
+
try {
|
|
395
|
+
automationResult = await Promise.race([
|
|
396
|
+
this.phoneAutomation({
|
|
397
|
+
page,
|
|
398
|
+
signal: account.abortController?.signal,
|
|
399
|
+
isCancelled: () => job.cancelRequested === true,
|
|
400
|
+
resolvePhone: async () => {
|
|
401
|
+
if (job.cancelRequested) {
|
|
402
|
+
throw new Error("Job cancelled before ordering phone number");
|
|
403
|
+
}
|
|
404
|
+
this.setAccountStep(
|
|
405
|
+
account,
|
|
406
|
+
"ordering_number",
|
|
407
|
+
`Form ready — ordering ${job.region} phone from 5sim (single buy)`,
|
|
408
|
+
);
|
|
409
|
+
await this.persistJobSnapshot(job, { forcePreview: true });
|
|
410
|
+
|
|
411
|
+
const numberData = await fiveSimClient.buyNumber({
|
|
412
|
+
country: job.region,
|
|
413
|
+
product: "codebuddy",
|
|
414
|
+
allowProductFallback: false,
|
|
415
|
+
});
|
|
416
|
+
fiveSimOrderId = numberData.id;
|
|
417
|
+
account.phone = numberData.phone;
|
|
418
|
+
account.fiveSimOrderId = numberData.id;
|
|
419
|
+
account.fiveSimActivationId = numberData.id;
|
|
420
|
+
this.setAccountStep(
|
|
421
|
+
account,
|
|
422
|
+
"number_ordered",
|
|
423
|
+
`Phone number ordered: ${numberData.phone} (1 buy, no re-order)`,
|
|
424
|
+
);
|
|
425
|
+
await this.persistJobSnapshot(job, { forcePreview: true });
|
|
426
|
+
return numberData.phone;
|
|
427
|
+
},
|
|
428
|
+
waitForSms: async () => {
|
|
429
|
+
if (!fiveSimOrderId) {
|
|
430
|
+
throw new Error("Cannot poll SMS — no 5sim order id");
|
|
431
|
+
}
|
|
432
|
+
this.setAccountStep(
|
|
433
|
+
account,
|
|
434
|
+
"sms_poll_started",
|
|
435
|
+
`SMS poll started (full ${CODEBUDDY_CN_SMS_TIMEOUT_MS / 1000}s window after send-code)`,
|
|
436
|
+
);
|
|
437
|
+
await this.persistJobSnapshot(job, { forcePreview: false });
|
|
438
|
+
const code = await fiveSimClient.pollCode(fiveSimOrderId, {
|
|
439
|
+
timeoutMs: CODEBUDDY_CN_SMS_TIMEOUT_MS,
|
|
440
|
+
signal: account.abortController?.signal,
|
|
441
|
+
});
|
|
442
|
+
smsReceived = true;
|
|
443
|
+
return code;
|
|
444
|
+
},
|
|
445
|
+
onStep: (step, message) => {
|
|
446
|
+
this.setAccountStep(account, step, message);
|
|
447
|
+
void this.persistJobSnapshot(job, { forcePreview: false });
|
|
448
|
+
},
|
|
449
|
+
phoneFormatter: this.phoneFormatter,
|
|
450
|
+
}),
|
|
451
|
+
hardTimeoutPromise,
|
|
452
|
+
]);
|
|
453
|
+
} finally {
|
|
454
|
+
if (hardTimer) clearTimeout(hardTimer);
|
|
455
|
+
}
|
|
456
|
+
|
|
395
457
|
// Step 6: Try API key capture only if automation reached at least the submit step.
|
|
396
458
|
// If automation failed early (e.g. page.goto timeout), the session won't be logged in
|
|
397
459
|
// and API key creation will 401 — so don't waste time. Only try bypass if automation
|
|
@@ -446,6 +508,15 @@ export class CodeBuddyCnBulkImportManager extends KiroBulkImportManager {
|
|
|
446
508
|
}
|
|
447
509
|
account.runtimeSession = null;
|
|
448
510
|
if (context) await context.close().catch(() => null);
|
|
511
|
+
// Hard timeout / blackhole nav: kill the shared browser so the worker unblocks
|
|
512
|
+
// and Camoufox cannot pin 100% CPU on a 2GB VPS until reboot.
|
|
513
|
+
if (error?.code === "CN_ACCOUNT_HARD_TIMEOUT" || job.cancelRequested) {
|
|
514
|
+
if (job.browser) {
|
|
515
|
+
const b = job.browser;
|
|
516
|
+
job.browser = null;
|
|
517
|
+
await forceCloseBrowser(b).catch(() => null);
|
|
518
|
+
}
|
|
519
|
+
}
|
|
449
520
|
await this.persistJobSnapshot(job, { forcePreview: true });
|
|
450
521
|
}
|
|
451
522
|
}
|
|
@@ -527,7 +598,9 @@ export class CodeBuddyCnBulkImportManager extends KiroBulkImportManager {
|
|
|
527
598
|
let accountsProbe = null;
|
|
528
599
|
let sessionReady = false;
|
|
529
600
|
|
|
530
|
-
|
|
601
|
+
// Cap OIDC nudge loop — 18 × multi-second waits was too long on 2GB VPS.
|
|
602
|
+
const OIDC_MAX_ATTEMPTS = 8;
|
|
603
|
+
for (let attempt = 0; attempt < OIDC_MAX_ATTEMPTS; attempt += 1) {
|
|
531
604
|
if (job.cancelRequested) {
|
|
532
605
|
throw new Error("Job cancelled while establishing session");
|
|
533
606
|
}
|
|
@@ -538,29 +611,29 @@ export class CodeBuddyCnBulkImportManager extends KiroBulkImportManager {
|
|
|
538
611
|
|
|
539
612
|
// Progressive navigation to complete half-finished Keycloak login
|
|
540
613
|
const path = oIDCNudgePaths[Math.min(attempt, oIDCNudgePaths.length - 1)];
|
|
541
|
-
if (attempt === 0 || attempt === 2 || attempt ===
|
|
614
|
+
if (attempt === 0 || attempt === 2 || attempt === 4 || attempt === 6) {
|
|
542
615
|
this.setAccountStep(
|
|
543
616
|
account,
|
|
544
617
|
"waiting_session",
|
|
545
|
-
`OIDC handoff attempt ${attempt + 1}
|
|
618
|
+
`OIDC handoff attempt ${attempt + 1}/${OIDC_MAX_ATTEMPTS} → ${path} (cookies: ${strong ? "KEYCLOAK" : soft ? "soft-session" : "weak"})`,
|
|
546
619
|
);
|
|
547
620
|
await this.persistJobSnapshot(job, { forcePreview: false });
|
|
548
|
-
await page.goto(path, { waitUntil: "domcontentloaded", timeout:
|
|
549
|
-
await page.waitForTimeout(
|
|
621
|
+
await page.goto(path, { waitUntil: "domcontentloaded", timeout: 25_000 }).catch(() => null);
|
|
622
|
+
await page.waitForTimeout(1_500);
|
|
550
623
|
|
|
551
624
|
// If Keycloak login iframe reappears, user session is not complete —
|
|
552
625
|
// don't treat blank SPA as success; keep probing.
|
|
553
626
|
} else {
|
|
554
|
-
await page.waitForTimeout(
|
|
627
|
+
await page.waitForTimeout(1_000);
|
|
555
628
|
}
|
|
556
629
|
|
|
557
630
|
// Prefer landing on console for the API probe
|
|
558
|
-
if (attempt >=
|
|
631
|
+
if (attempt >= 2 && !String(page.url() || "").includes("/console")) {
|
|
559
632
|
await page.goto("https://www.codebuddy.cn/console", {
|
|
560
633
|
waitUntil: "domcontentloaded",
|
|
561
|
-
timeout:
|
|
634
|
+
timeout: 25_000,
|
|
562
635
|
}).catch(() => null);
|
|
563
|
-
await page.waitForTimeout(
|
|
636
|
+
await page.waitForTimeout(1_000);
|
|
564
637
|
}
|
|
565
638
|
|
|
566
639
|
accountsProbe = await probeConsoleAccounts();
|
|
@@ -579,7 +652,7 @@ export class CodeBuddyCnBulkImportManager extends KiroBulkImportManager {
|
|
|
579
652
|
this.setAccountStep(
|
|
580
653
|
account,
|
|
581
654
|
"resolving_enterprise",
|
|
582
|
-
`Console not ready (HTTP ${accountsProbe?.status || 0}) — retry ${attempt + 1}
|
|
655
|
+
`Console not ready (HTTP ${accountsProbe?.status || 0}) — retry ${attempt + 1}/${OIDC_MAX_ATTEMPTS}`,
|
|
583
656
|
);
|
|
584
657
|
await this.persistJobSnapshot(job, { forcePreview: false });
|
|
585
658
|
}
|
|
@@ -854,7 +927,8 @@ export class CodeBuddyCnBulkImportManager extends KiroBulkImportManager {
|
|
|
854
927
|
}
|
|
855
928
|
|
|
856
929
|
/**
|
|
857
|
-
* Override cancelJob to abort in-flight 5sim polls
|
|
930
|
+
* Override cancelJob to abort in-flight 5sim polls AND force-close the browser.
|
|
931
|
+
* Previous CN override only aborted controllers — Camoufox kept spinning (VPS hang).
|
|
858
932
|
*/
|
|
859
933
|
cancelJob(jobId) {
|
|
860
934
|
const job = this.jobs.get(jobId);
|
|
@@ -862,11 +936,24 @@ export class CodeBuddyCnBulkImportManager extends KiroBulkImportManager {
|
|
|
862
936
|
|
|
863
937
|
job.cancelRequested = true;
|
|
864
938
|
|
|
865
|
-
// Abort in-flight 5sim polls
|
|
939
|
+
// Abort in-flight 5sim polls + close per-account contexts
|
|
866
940
|
for (const account of job.accounts) {
|
|
867
941
|
if (account.abortController && !account.abortController.signal.aborted) {
|
|
868
942
|
account.abortController.abort();
|
|
869
943
|
}
|
|
944
|
+
const ctx = account.runtimeSession?.context;
|
|
945
|
+
if (ctx) {
|
|
946
|
+
void ctx.close().catch(() => null);
|
|
947
|
+
}
|
|
948
|
+
account.runtimeSession = null;
|
|
949
|
+
account.manualSession = null;
|
|
950
|
+
}
|
|
951
|
+
|
|
952
|
+
// CRITICAL: force-kill Camoufox/Chromium. Graceful close alone hangs when nav is stuck.
|
|
953
|
+
if (job.browser) {
|
|
954
|
+
const browser = job.browser;
|
|
955
|
+
job.browser = null;
|
|
956
|
+
void forceCloseBrowser(browser).catch(() => null);
|
|
870
957
|
}
|
|
871
958
|
|
|
872
959
|
if (job.status === "queued") {
|
|
@@ -876,7 +963,9 @@ export class CodeBuddyCnBulkImportManager extends KiroBulkImportManager {
|
|
|
876
963
|
if (account.status === "queued") account.status = "cancelled";
|
|
877
964
|
});
|
|
878
965
|
}
|
|
879
|
-
|
|
966
|
+
|
|
967
|
+
void this.persistJobSnapshot(job, { forcePreview: true });
|
|
968
|
+
return sanitizeCnJob(job);
|
|
880
969
|
}
|
|
881
970
|
}
|
|
882
971
|
|