zevairouter 1.0.110 → 1.0.112
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 +11 -0
- package/cli/app/.next-cli-build/BUILD_ID +1 -1
- package/cli/app/.next-cli-build/app-path-routes-manifest.json +7 -7
- 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/codebuddy-cn/bulk-import/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/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/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_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 +7 -7
- package/cli/app/.next-cli-build/server/chunks/3155.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/3407.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/412.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/6896.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/middleware.js +1 -1
- package/cli/app/.next-cli-build/server/pages/404.html +1 -1
- package/cli/app/.next-cli-build/server/pages/500.html +1 -1
- package/cli/app/.next-cli-build/static/chunks/{3702-75768c44a4c60005.js → 3702-c51727f16ee4ce40.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/{5497-3ba9ab4bf3a9facb.js → 5497-bc9dbb3f8c0e03af.js} +1 -1
- package/cli/app/CHANGELOG.md +11 -0
- package/cli/app/package.json +1 -1
- package/cli/package.json +1 -1
- package/package.json +1 -1
- package/src/app/api/oauth/codebuddy-cn/bulk-import/route.js +1 -0
- package/src/dashboardGuard.js +3 -1
- package/src/lib/oauth/services/codebuddyCnBulkImportManager.js +37 -9
- package/src/lib/oauth/services/codebuddyCnPhoneAutomation.js +19 -3
- package/src/shared/components/CodeBuddyCnPhoneRegisterModal.js +17 -2
- /package/cli/app/.next-cli-build/static/{-vY51mS-VaNLvQLi9SSDj → vxKMMzG3TCmmTGqCkXv7N}/_buildManifest.js +0 -0
- /package/cli/app/.next-cli-build/static/{-vY51mS-VaNLvQLi9SSDj → vxKMMzG3TCmmTGqCkXv7N}/_ssgManifest.js +0 -0
package/cli/app/CHANGELOG.md
CHANGED
|
@@ -1,7 +1,18 @@
|
|
|
1
|
+
# v1.0.112 (2026-07-21)
|
|
2
|
+
|
|
3
|
+
## Features
|
|
4
|
+
- **CodeBuddy CN bulk import — manual proxy URL**: the automation previously only accepted proxies from DB proxy pools (`proxyPoolMode` + `proxyPoolId`). The register modal now has a "Manual Proxy URL" field — paste any `http(s)://` or `socks4/5://` proxy (e.g. a sticky residential URL you haven't added to a pool) and it takes precedence over pool selection (dropdown auto-disables). The manager validates the scheme, marks the job `proxyPoolMode: "manual"`, and every account in the job runs through that proxy.
|
|
5
|
+
|
|
6
|
+
# v1.0.111 (2026-07-21)
|
|
7
|
+
|
|
8
|
+
## Fixes
|
|
9
|
+
- **CodeBuddy CN bulk import — SPA "did not boot" + API key 401** (re-release): v1.0.110 was published before these changes were committed, so the live build never contained them. This release ships them. (1) Tencent's privacy-consent dialog (a `同意` button) gates the login UI depending on the egress IP — the automation now waits up to 6s for the consent button and dismisses it (logs `cn_consent_dismissed`) before the normal SPA-ready wait, instead of timing out with `html=2670`. (2) API key creation now retries up to 3 rounds on 401/403 (openresty edge rejecting half-synced Keycloak cookies), nudging the OIDC re-handoff and waiting for a strong Keycloak session with 8s/16s/24s backoff.
|
|
10
|
+
|
|
1
11
|
# v1.0.110 (2026-07-21)
|
|
2
12
|
|
|
3
13
|
## Fixes
|
|
4
14
|
- **CLI Tools: OpenCode page crash ("This page couldn't load")**: `OpenCodeToolCard` line 72 had a broken optional chain — `status?.config?.agent?.explorer?.model?.startsWith("zevai/") || status.config?.agent...` — when `status` was `null` (tool not installed), the second operand `status.config` threw `TypeError: Cannot read properties of null (reading 'config')` during render, crashing the entire page. Fixed by extracting `explorerModel` with a full optional chain and using it for both the condition and the value. Also added `isOpen` guard to `ModelSelectModal.groupedModels` useMemo to skip heavy per-provider computation when the modal is closed (prevents hydration lag with many connections). Verified with headless-Chrome repro: page renders clean, zero pageerror.
|
|
15
|
+
- **CodeBuddy CN bulk import — SPA "did not boot" + API key 401**: two compounding fixes in the phone-automation flow. (1) Tencent's privacy-consent dialog (a `同意` button) gates the login UI depending on the egress IP — the automation waited for the SPA to be "ready" while the consent modal blocked it, so it timed out with `html=2670`. The flow now waits up to 6s for the consent button, dismisses it (logs `cn_consent_dismissed`), then proceeds with the normal SPA-ready wait. (2) When API key creation returned 401/403 (openresty edge rejecting half-synced Keycloak cookies, common on slow proxies), the flow now retries up to 3 rounds — nudging the OIDC re-handoff and waiting for a strong Keycloak session with 8s/16s/24s backoff — instead of failing on the first attempt. Error messages now surface the edge-proxy-blocked case explicitly.
|
|
5
16
|
|
|
6
17
|
# v1.0.109 (2026-07-21)
|
|
7
18
|
|
package/cli/app/package.json
CHANGED
package/cli/package.json
CHANGED
package/package.json
CHANGED
|
@@ -44,6 +44,7 @@ export async function POST(request) {
|
|
|
44
44
|
engine: body?.engine,
|
|
45
45
|
proxyPoolMode: body?.proxyPoolMode,
|
|
46
46
|
proxyPoolId: body?.proxyPoolId,
|
|
47
|
+
manualProxyUrl: typeof body?.manualProxyUrl === "string" && body.manualProxyUrl.trim() ? body.manualProxyUrl.trim() : null,
|
|
47
48
|
region,
|
|
48
49
|
});
|
|
49
50
|
|
package/src/dashboardGuard.js
CHANGED
|
@@ -191,10 +191,12 @@ export async function proxy(request) {
|
|
|
191
191
|
// Always protected - require valid JWT or local CLI token (machineId-based)
|
|
192
192
|
if (ALWAYS_PROTECTED.some((p) => pathname.startsWith(p))) {
|
|
193
193
|
const isTerminalApi = pathname.startsWith("/api/terminal");
|
|
194
|
-
//
|
|
194
|
+
// Local browser with requireLogin=false can reach sensitive routes (e.g. DB import);
|
|
195
|
+
// remote still requires JWT/CLI token. Same trust level as LOCAL_ONLY_PATHS.
|
|
195
196
|
const dashboardOk =
|
|
196
197
|
(await hasValidCliToken(request))
|
|
197
198
|
|| (await hasValidToken(request))
|
|
199
|
+
|| (isLocalRequest(request) && (await isAuthenticated(request)))
|
|
198
200
|
|| (isTerminalApi && (await isAuthenticated(request)));
|
|
199
201
|
|
|
200
202
|
if (!dashboardOk) {
|
|
@@ -204,7 +204,7 @@ export class CodeBuddyCnBulkImportManager extends KiroBulkImportManager {
|
|
|
204
204
|
* @param {string} [opts.proxyPoolId]
|
|
205
205
|
* @param {string} [opts.region] 5sim region (hongkong|china|any)
|
|
206
206
|
*/
|
|
207
|
-
async startJob({ count, concurrency, engine, proxyPoolMode, proxyPoolId, region }) {
|
|
207
|
+
async startJob({ count, concurrency, engine, proxyPoolMode, proxyPoolId, manualProxyUrl, region }) {
|
|
208
208
|
// Validate count
|
|
209
209
|
const countNum = Number.parseInt(count, 10);
|
|
210
210
|
if (!Number.isFinite(countNum) || countNum < 1) {
|
|
@@ -232,9 +232,19 @@ export class CodeBuddyCnBulkImportManager extends KiroBulkImportManager {
|
|
|
232
232
|
// Validate region
|
|
233
233
|
const resolvedRegion = SUPPORTED_REGIONS.has(region) ? region : DEFAULT_REGION;
|
|
234
234
|
|
|
235
|
-
// Resolve proxy
|
|
235
|
+
// Resolve proxy URLs: manual URL takes precedence over pool selection.
|
|
236
236
|
let proxyUrls = [];
|
|
237
|
-
|
|
237
|
+
const manualProxy = typeof manualProxyUrl === "string" ? manualProxyUrl.trim() : "";
|
|
238
|
+
if (manualProxy) {
|
|
239
|
+
// Basic scheme check — Playwright needs a parseable http(s)/socks URL.
|
|
240
|
+
if (!/^(https?|socks4|socks5):\/\/.+/i.test(manualProxy)) {
|
|
241
|
+
throw Object.assign(
|
|
242
|
+
new Error("manualProxyUrl must be a valid proxy URL (http://, https://, socks4://, or socks5://)"),
|
|
243
|
+
{ error: "manualProxyUrl must be a valid proxy URL (http://, https://, socks4://, or socks5://)" },
|
|
244
|
+
);
|
|
245
|
+
}
|
|
246
|
+
proxyUrls = [manualProxy];
|
|
247
|
+
} else if (proxyPoolMode === "all") {
|
|
238
248
|
const pools = await getProxyPools({ isActive: true });
|
|
239
249
|
proxyUrls = pools.map((p) => p.proxyUrl).filter(Boolean);
|
|
240
250
|
} else if (proxyPoolMode === "single" && proxyPoolId) {
|
|
@@ -256,7 +266,7 @@ export class CodeBuddyCnBulkImportManager extends KiroBulkImportManager {
|
|
|
256
266
|
status: "running",
|
|
257
267
|
concurrency: clampCnConcurrency(concurrency),
|
|
258
268
|
engine: resolvedEngine,
|
|
259
|
-
proxyPoolMode: proxyPoolMode || "none",
|
|
269
|
+
proxyPoolMode: manualProxy ? "manual" : (proxyPoolMode || "none"),
|
|
260
270
|
proxyUrls,
|
|
261
271
|
region: resolvedRegion,
|
|
262
272
|
createdAt,
|
|
@@ -835,10 +845,16 @@ export class CodeBuddyCnBulkImportManager extends KiroBulkImportManager {
|
|
|
835
845
|
apiKeyResult = await createKeyOnPage(PERSONAL_ENTERPRISE_ID).catch(() => null);
|
|
836
846
|
}
|
|
837
847
|
|
|
838
|
-
//
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
848
|
+
// Retry loop on 401/403 — openresty edge blocks create-key when Keycloak
|
|
849
|
+
// cookies are half-synced (common on slow proxies). Nudge OIDC handoff,
|
|
850
|
+
// wait for strong session, then retry. Up to 3 rounds with backoff.
|
|
851
|
+
const isAuthBlocked = (r) => !r?.ok && (r?.status === 401 || r?.status === 403 || r?.status === 0 || !r);
|
|
852
|
+
for (let round = 1; round <= 3 && isAuthBlocked(apiKeyResult); round += 1) {
|
|
853
|
+
this.setAccountStep(
|
|
854
|
+
account,
|
|
855
|
+
"retrying_api_key",
|
|
856
|
+
`API key 401/403 — OIDC re-handoff round ${round}/3 (waiting strong session)`,
|
|
857
|
+
);
|
|
842
858
|
await this.persistJobSnapshot(job, { forcePreview: true });
|
|
843
859
|
for (const path of [
|
|
844
860
|
"https://www.codebuddy.cn/",
|
|
@@ -848,14 +864,26 @@ export class CodeBuddyCnBulkImportManager extends KiroBulkImportManager {
|
|
|
848
864
|
await page.goto(path, { waitUntil: "domcontentloaded", timeout: 45_000 }).catch(() => null);
|
|
849
865
|
await waitAfterNav();
|
|
850
866
|
}
|
|
867
|
+
// Wait for strong Keycloak cookie — openresty accepts api-keys only after full session.
|
|
868
|
+
await waitUntil(async () => {
|
|
869
|
+
const snap = await cookieSnapshot();
|
|
870
|
+
return hasStrongKeycloak(snap.names);
|
|
871
|
+
}, { timeout: 8_000 * round, interval: 300 }).catch(() => null);
|
|
851
872
|
apiKeyResult = await createKeyOnPage(PERSONAL_ENTERPRISE_ID).catch(() => null);
|
|
852
873
|
}
|
|
853
874
|
|
|
854
875
|
const businessCode = apiKeyResult?.data?.code;
|
|
855
876
|
const businessOk = businessCode === 0 || businessCode === 200 || typeof businessCode === "undefined";
|
|
856
877
|
if (!apiKeyResult || !apiKeyResult.ok || !apiKeyResult.data || !businessOk) {
|
|
878
|
+
// Surface openresty HTML block (_raw) clearly instead of opaque "code=n/a".
|
|
879
|
+
const rawSnippet = typeof apiKeyResult?.data?._raw === "string"
|
|
880
|
+
? apiKeyResult.data._raw.replace(/\s+/g, " ").slice(0, 120)
|
|
881
|
+
: null;
|
|
882
|
+
const edgeNote = rawSnippet && /openresty|nginx|Authorization Required/i.test(rawSnippet)
|
|
883
|
+
? " [edge proxy blocked — session half-baked]"
|
|
884
|
+
: "";
|
|
857
885
|
throw new Error(
|
|
858
|
-
`API key creation failed (HTTP ${apiKeyResult?.status ?? "no-response"}, code=${businessCode ?? "n/a"}): ${JSON.stringify(apiKeyResult?.data ?? null).slice(0, 200)}`,
|
|
886
|
+
`API key creation failed (HTTP ${apiKeyResult?.status ?? "no-response"}, code=${businessCode ?? "n/a"})${edgeNote}: ${JSON.stringify(apiKeyResult?.data ?? null).slice(0, 200)}`,
|
|
859
887
|
);
|
|
860
888
|
}
|
|
861
889
|
|
|
@@ -65,6 +65,14 @@ const SPA_READY_SELECTORS = [
|
|
|
65
65
|
".login-phone-box",
|
|
66
66
|
];
|
|
67
67
|
|
|
68
|
+
// Tencent privacy-consent dialog that gates the login UI behind a 同意 button.
|
|
69
|
+
// Some proxy egress IPs trigger it every load; others never see it.
|
|
70
|
+
const CONSENT_BUTTON_SELECTORS = [
|
|
71
|
+
"button:has-text('同意')",
|
|
72
|
+
"text=同意并继续",
|
|
73
|
+
"text=同意",
|
|
74
|
+
];
|
|
75
|
+
|
|
68
76
|
// Iframe selector
|
|
69
77
|
const PHONE_IFRAME_SELECTOR = "#phone-iframe";
|
|
70
78
|
|
|
@@ -204,11 +212,19 @@ export async function runCodeBuddyCnPhoneRegistration({
|
|
|
204
212
|
});
|
|
205
213
|
throwIfCancelled();
|
|
206
214
|
|
|
207
|
-
//
|
|
208
|
-
|
|
215
|
+
// Wait for document to finish parsing (readyState interactive/complete) — scales to
|
|
216
|
+
// proxy speed instead of a fixed 1.5s that fires too early on slow China proxies
|
|
217
|
+
await page.waitForFunction(() => document.readyState !== "loading", { timeout: 10_000 }).catch(() => {});
|
|
209
218
|
throwIfCancelled();
|
|
210
219
|
|
|
211
|
-
// SPA shell loads first;
|
|
220
|
+
// SPA shell loads first; dismiss privacy-consent dialog if it gates the login UI,
|
|
221
|
+
// then wait for any login UI marker (not networkidle — long-lived sockets)
|
|
222
|
+
const consentBtn = await waitForFirstVisibleLocator(page, CONSENT_BUTTON_SELECTORS, { timeout: 6_000 });
|
|
223
|
+
if (consentBtn) {
|
|
224
|
+
await consentBtn.click().catch(() => {});
|
|
225
|
+
reportStep("cn_consent_dismissed", "Privacy consent dialog dismissed (同意)");
|
|
226
|
+
await page.waitForTimeout(1_000);
|
|
227
|
+
}
|
|
212
228
|
const spaReady = await waitForAnyVisible(page, SPA_READY_SELECTORS, SPA_TIMEOUT_MS);
|
|
213
229
|
throwIfCancelled();
|
|
214
230
|
if (!spaReady) {
|
|
@@ -57,6 +57,7 @@ export default function CodeBuddyCnPhoneRegisterModal({ isOpen, onClose, onSucce
|
|
|
57
57
|
const [engine, setEngine] = useState(DEFAULT_ENGINE);
|
|
58
58
|
const [proxyPoolSelection, setProxyPoolSelection] = useState("");
|
|
59
59
|
const [proxyPools, setProxyPools] = useState([]);
|
|
60
|
+
const [manualProxyUrl, setManualProxyUrl] = useState("");
|
|
60
61
|
const [fiveSimApiKey, setFiveSimApiKey] = useState("");
|
|
61
62
|
const [fiveSimKeyConfigured, setFiveSimKeyConfigured] = useState(false);
|
|
62
63
|
const [savingKey, setSavingKey] = useState(false);
|
|
@@ -184,6 +185,7 @@ export default function CodeBuddyCnPhoneRegisterModal({ isOpen, onClose, onSucce
|
|
|
184
185
|
|
|
185
186
|
let proxyPoolMode = "none";
|
|
186
187
|
let proxyPoolId = null;
|
|
188
|
+
const trimmedManualProxy = manualProxyUrl.trim();
|
|
187
189
|
if (proxyPoolSelection === "all") {
|
|
188
190
|
proxyPoolMode = "all";
|
|
189
191
|
} else if (proxyPoolSelection && proxyPoolSelection !== "") {
|
|
@@ -201,6 +203,7 @@ export default function CodeBuddyCnPhoneRegisterModal({ isOpen, onClose, onSucce
|
|
|
201
203
|
engine,
|
|
202
204
|
proxyPoolMode,
|
|
203
205
|
proxyPoolId,
|
|
206
|
+
manualProxyUrl: trimmedManualProxy || null,
|
|
204
207
|
region,
|
|
205
208
|
}),
|
|
206
209
|
});
|
|
@@ -216,7 +219,7 @@ export default function CodeBuddyCnPhoneRegisterModal({ isOpen, onClose, onSucce
|
|
|
216
219
|
startInFlightRef.current = false;
|
|
217
220
|
setImporting(false);
|
|
218
221
|
}
|
|
219
|
-
}, [count, region, concurrency, engine, proxyPoolSelection, fiveSimKeyConfigured, storageKey, importing, runningJob]);
|
|
222
|
+
}, [count, region, concurrency, engine, proxyPoolSelection, manualProxyUrl, fiveSimKeyConfigured, storageKey, importing, runningJob]);
|
|
220
223
|
|
|
221
224
|
// Cancel job
|
|
222
225
|
const handleCancelJob = useCallback(async () => {
|
|
@@ -370,7 +373,7 @@ export default function CodeBuddyCnPhoneRegisterModal({ isOpen, onClose, onSucce
|
|
|
370
373
|
className="w-full rounded-lg border border-border bg-background px-3 py-2 text-sm text-text-main focus:border-primary focus:outline-none"
|
|
371
374
|
value={proxyPoolSelection}
|
|
372
375
|
onChange={(e) => setProxyPoolSelection(e.target.value)}
|
|
373
|
-
disabled={importing}
|
|
376
|
+
disabled={importing || !!manualProxyUrl.trim()}
|
|
374
377
|
>
|
|
375
378
|
<option value="">None</option>
|
|
376
379
|
<option value="all">All Active Pools (round-robin)</option>
|
|
@@ -381,6 +384,18 @@ export default function CodeBuddyCnPhoneRegisterModal({ isOpen, onClose, onSucce
|
|
|
381
384
|
</div>
|
|
382
385
|
</div>
|
|
383
386
|
|
|
387
|
+
<div>
|
|
388
|
+
<label className="mb-1 block text-xs font-medium text-text-muted">Manual Proxy URL (optional, overrides pool)</label>
|
|
389
|
+
<input
|
|
390
|
+
type="text"
|
|
391
|
+
className="w-full rounded-lg border border-border bg-background px-3 py-2 text-sm text-text-main focus:border-primary focus:outline-none"
|
|
392
|
+
placeholder="http://user:pass@host:port or socks5://host:port"
|
|
393
|
+
value={manualProxyUrl}
|
|
394
|
+
onChange={(e) => setManualProxyUrl(e.target.value)}
|
|
395
|
+
disabled={importing}
|
|
396
|
+
/>
|
|
397
|
+
</div>
|
|
398
|
+
|
|
384
399
|
{error && (
|
|
385
400
|
<div className="rounded-lg bg-red-500/10 p-3 text-sm text-red-400">{error}</div>
|
|
386
401
|
)}
|
|
File without changes
|
|
File without changes
|