zevairouter 1.0.95 → 1.0.97
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/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/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/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_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/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/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-2d50219fb7c4dcfd.js → 3702-48552e6fa25c0eed.js} +1 -1
- 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/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/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/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/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
- package/cli/app/package.json +1 -1
- package/cli/cli.js +95 -20
- package/cli/package.json +1 -1
- package/package.json +1 -1
- package/src/lib/oauth/services/codebuddyCnBulkImportManager.js +166 -41
- /package/cli/app/.next-cli-build/static/{pJ5rFHQG90391nAOFCHiM → eXdE9yjhMK3FJJe2Y_8x-}/_buildManifest.js +0 -0
- /package/cli/app/.next-cli-build/static/{pJ5rFHQG90391nAOFCHiM → eXdE9yjhMK3FJJe2Y_8x-}/_ssgManifest.js +0 -0
|
@@ -536,6 +536,20 @@ export class CodeBuddyCnBulkImportManager extends KiroBulkImportManager {
|
|
|
536
536
|
async captureApiKey(job, account, context, page, fiveSimClient, fiveSimOrderId) {
|
|
537
537
|
const PERSONAL_ENTERPRISE_ID = "personal-edition-user-id";
|
|
538
538
|
|
|
539
|
+
// Tiny event-driven poller — replaces multi-second blind sleeps.
|
|
540
|
+
const waitUntil = async (checkFn, { timeout = 12_000, interval = 150 } = {}) => {
|
|
541
|
+
const deadline = Date.now() + timeout;
|
|
542
|
+
while (Date.now() < deadline) {
|
|
543
|
+
try {
|
|
544
|
+
if (await checkFn()) return true;
|
|
545
|
+
} catch {
|
|
546
|
+
/* retry */
|
|
547
|
+
}
|
|
548
|
+
await new Promise((r) => setTimeout(r, interval));
|
|
549
|
+
}
|
|
550
|
+
return false;
|
|
551
|
+
};
|
|
552
|
+
|
|
539
553
|
try {
|
|
540
554
|
// Functional session establishment — do NOT hard-require KEYCLOAK_IDENTITY.
|
|
541
555
|
// Live failures show OTP can succeed with AUTH_SESSION_ID + session + qcloud_uid
|
|
@@ -563,43 +577,97 @@ export class CodeBuddyCnBulkImportManager extends KiroBulkImportManager {
|
|
|
563
577
|
names.has("AUTH_SESSION_ID")
|
|
564
578
|
|| names.has("session")
|
|
565
579
|
|| names.has("qcloud_uid")
|
|
566
|
-
|| names.has("qcmainCSRFToken")
|
|
580
|
+
|| names.has("qcmainCSRFToken")
|
|
581
|
+
|| names.has("x_host_key_access");
|
|
567
582
|
|
|
568
583
|
const probeConsoleAccounts = async () => page.evaluate(async () => {
|
|
569
584
|
try {
|
|
570
|
-
|
|
585
|
+
// Absolute URL — relative /console/accounts fails if we are still on login.tencent or keycloak host.
|
|
586
|
+
const host = window.location.hostname || "www.codebuddy.cn";
|
|
587
|
+
const base = host.endsWith("codebuddy.cn")
|
|
588
|
+
? `${window.location.origin}`
|
|
589
|
+
: "https://www.codebuddy.cn";
|
|
590
|
+
const res = await fetch(`${base}/console/accounts`, {
|
|
571
591
|
credentials: "include",
|
|
572
592
|
headers: {
|
|
573
593
|
Accept: "application/json, text/plain, */*",
|
|
574
594
|
"x-requested-with": "XMLHttpRequest",
|
|
575
|
-
"X-Domain":
|
|
595
|
+
"X-Domain": "www.codebuddy.cn",
|
|
596
|
+
"X-Product": "SaaS",
|
|
576
597
|
},
|
|
577
598
|
});
|
|
578
|
-
const
|
|
579
|
-
|
|
599
|
+
const text = await res.text().catch(() => "");
|
|
600
|
+
let data = null;
|
|
601
|
+
try {
|
|
602
|
+
data = text ? JSON.parse(text) : null;
|
|
603
|
+
} catch {
|
|
604
|
+
data = { _raw: String(text || "").slice(0, 240), _notJson: true };
|
|
605
|
+
}
|
|
606
|
+
return { status: res.status, data, text: String(text || "").slice(0, 240) };
|
|
580
607
|
} catch (error) {
|
|
581
608
|
return { status: 0, error: error?.message || String(error) };
|
|
582
609
|
}
|
|
583
610
|
}).catch(() => null);
|
|
584
611
|
|
|
585
|
-
const extractAccountList = (probe) =>
|
|
586
|
-
|
|
612
|
+
const extractAccountList = (probe) => {
|
|
613
|
+
const d = probe?.data;
|
|
614
|
+
if (!d || typeof d !== "object") return [];
|
|
615
|
+
const candidates = [
|
|
616
|
+
d?.data?.accounts,
|
|
617
|
+
d?.accounts,
|
|
618
|
+
d?.data?.list,
|
|
619
|
+
d?.list,
|
|
620
|
+
d?.data?.result,
|
|
621
|
+
d?.result,
|
|
622
|
+
d?.data?.items,
|
|
623
|
+
d?.items,
|
|
624
|
+
Array.isArray(d?.data) ? d.data : null,
|
|
625
|
+
Array.isArray(d) ? d : null,
|
|
626
|
+
];
|
|
627
|
+
for (const c of candidates) {
|
|
628
|
+
if (Array.isArray(c) && c.length > 0) return c;
|
|
629
|
+
}
|
|
630
|
+
return [];
|
|
631
|
+
};
|
|
632
|
+
|
|
633
|
+
// After goto: wait for accounts XHR or Keycloak cookie — not a fixed sleep.
|
|
634
|
+
const waitAfterNav = async () => {
|
|
635
|
+
await Promise.race([
|
|
636
|
+
page.waitForResponse(
|
|
637
|
+
(r) => /\/console\/accounts/i.test(r.url()) && r.status() < 500,
|
|
638
|
+
{ timeout: 10_000 },
|
|
639
|
+
).catch(() => null),
|
|
640
|
+
page.waitForResponse(
|
|
641
|
+
(r) => /\/console\/api\//i.test(r.url()) && r.status() < 500,
|
|
642
|
+
{ timeout: 10_000 },
|
|
643
|
+
).catch(() => null),
|
|
644
|
+
waitUntil(async () => {
|
|
645
|
+
const snap = await cookieSnapshot();
|
|
646
|
+
return hasStrongKeycloak(snap.names);
|
|
647
|
+
}, { timeout: 10_000, interval: 200 }),
|
|
648
|
+
new Promise((r) => setTimeout(r, 2_500)), // hard cap only
|
|
649
|
+
]);
|
|
650
|
+
};
|
|
587
651
|
|
|
588
652
|
// Navigate sequence to finish OIDC handoff when only AUTH_SESSION_ID is present.
|
|
653
|
+
// Order matters: home → console → keys (login/ last — re-triggering login can wipe soft session).
|
|
589
654
|
const oIDCNudgePaths = [
|
|
590
655
|
"https://www.codebuddy.cn/",
|
|
591
|
-
"https://www.codebuddy.cn/login/",
|
|
592
656
|
"https://www.codebuddy.cn/console",
|
|
657
|
+
"https://www.codebuddy.cn/console/",
|
|
593
658
|
"https://www.codebuddy.cn/profile",
|
|
594
659
|
"https://www.codebuddy.cn/profile/keys",
|
|
660
|
+
// only if still empty after console probes
|
|
661
|
+
"https://www.codebuddy.cn/login/",
|
|
595
662
|
];
|
|
596
663
|
|
|
597
664
|
let accountList = [];
|
|
598
665
|
let accountsProbe = null;
|
|
599
666
|
let sessionReady = false;
|
|
667
|
+
let lastPayloadSnippet = "";
|
|
600
668
|
|
|
601
|
-
//
|
|
602
|
-
const OIDC_MAX_ATTEMPTS =
|
|
669
|
+
// Event-driven OIDC settle: more attempts but each wait is response-driven, not blind multi-sec sleep.
|
|
670
|
+
const OIDC_MAX_ATTEMPTS = 10;
|
|
603
671
|
for (let attempt = 0; attempt < OIDC_MAX_ATTEMPTS; attempt += 1) {
|
|
604
672
|
if (job.cancelRequested) {
|
|
605
673
|
throw new Error("Job cancelled while establishing session");
|
|
@@ -609,35 +677,38 @@ export class CodeBuddyCnBulkImportManager extends KiroBulkImportManager {
|
|
|
609
677
|
const strong = hasStrongKeycloak(snap.names);
|
|
610
678
|
const soft = hasSoftSession(snap.names);
|
|
611
679
|
|
|
612
|
-
// Progressive navigation to complete half-finished Keycloak login
|
|
613
680
|
const path = oIDCNudgePaths[Math.min(attempt, oIDCNudgePaths.length - 1)];
|
|
614
|
-
|
|
681
|
+
// Always nudge on first 3 + even attempts; skip re-nav when soft session already present
|
|
682
|
+
// and we only need to re-probe accounts.
|
|
683
|
+
const shouldNav = attempt < 3 || attempt % 2 === 0 || !soft;
|
|
684
|
+
if (shouldNav) {
|
|
615
685
|
this.setAccountStep(
|
|
616
686
|
account,
|
|
617
687
|
"waiting_session",
|
|
618
|
-
`OIDC handoff
|
|
688
|
+
`OIDC handoff ${attempt + 1}/${OIDC_MAX_ATTEMPTS} → ${path.replace("https://www.codebuddy.cn", "")} (${strong ? "KEYCLOAK" : soft ? "soft-session" : "weak"})`,
|
|
619
689
|
);
|
|
620
690
|
await this.persistJobSnapshot(job, { forcePreview: false });
|
|
621
691
|
await page.goto(path, { waitUntil: "domcontentloaded", timeout: 25_000 }).catch(() => null);
|
|
622
|
-
await
|
|
623
|
-
|
|
624
|
-
// If Keycloak login iframe reappears, user session is not complete —
|
|
625
|
-
// don't treat blank SPA as success; keep probing.
|
|
692
|
+
await waitAfterNav();
|
|
626
693
|
} else {
|
|
627
|
-
|
|
694
|
+
// Soft session present — short yield then re-probe (no blind multi-second sleep).
|
|
695
|
+
await new Promise((r) => setTimeout(r, 300));
|
|
628
696
|
}
|
|
629
697
|
|
|
630
|
-
// Prefer landing on console for the API probe
|
|
631
|
-
|
|
698
|
+
// Prefer landing on console for the API probe (absolute host)
|
|
699
|
+
const onCodebuddy = /codebuddy\.cn/i.test(page.url?.() || "");
|
|
700
|
+
if (!onCodebuddy || (!String(page.url() || "").includes("/console") && attempt >= 1)) {
|
|
632
701
|
await page.goto("https://www.codebuddy.cn/console", {
|
|
633
702
|
waitUntil: "domcontentloaded",
|
|
634
703
|
timeout: 25_000,
|
|
635
704
|
}).catch(() => null);
|
|
636
|
-
await
|
|
705
|
+
await waitAfterNav();
|
|
637
706
|
}
|
|
638
707
|
|
|
639
708
|
accountsProbe = await probeConsoleAccounts();
|
|
640
709
|
accountList = extractAccountList(accountsProbe);
|
|
710
|
+
lastPayloadSnippet = JSON.stringify(accountsProbe?.data ?? accountsProbe?.text ?? null).slice(0, 180);
|
|
711
|
+
|
|
641
712
|
if (accountsProbe?.status === 200 && Array.isArray(accountList) && accountList.length > 0) {
|
|
642
713
|
sessionReady = true;
|
|
643
714
|
this.setAccountStep(
|
|
@@ -649,40 +720,67 @@ export class CodeBuddyCnBulkImportManager extends KiroBulkImportManager {
|
|
|
649
720
|
break;
|
|
650
721
|
}
|
|
651
722
|
|
|
723
|
+
// Soft session + HTTP 200 empty accounts: console often still accepts api-keys.
|
|
724
|
+
// Don't fail early — break out and try key create with personal enterprise id.
|
|
725
|
+
if (
|
|
726
|
+
soft
|
|
727
|
+
&& accountsProbe?.status === 200
|
|
728
|
+
&& Array.isArray(accountList)
|
|
729
|
+
&& accountList.length === 0
|
|
730
|
+
&& attempt >= 4
|
|
731
|
+
) {
|
|
732
|
+
this.setAccountStep(
|
|
733
|
+
account,
|
|
734
|
+
"session_soft",
|
|
735
|
+
`Console HTTP 200 but 0 accounts — trying personal API key with soft session (cookies ok)`,
|
|
736
|
+
);
|
|
737
|
+
await this.persistJobSnapshot(job, { forcePreview: true });
|
|
738
|
+
sessionReady = true; // allow create-key path
|
|
739
|
+
break;
|
|
740
|
+
}
|
|
741
|
+
|
|
652
742
|
this.setAccountStep(
|
|
653
743
|
account,
|
|
654
744
|
"resolving_enterprise",
|
|
655
|
-
`Console not ready (HTTP ${accountsProbe?.status || 0}) —
|
|
745
|
+
`Console not ready (HTTP ${accountsProbe?.status || 0}, accounts=${accountList.length}) — ${attempt + 1}/${OIDC_MAX_ATTEMPTS} body=${lastPayloadSnippet.slice(0, 80)}`,
|
|
656
746
|
);
|
|
657
747
|
await this.persistJobSnapshot(job, { forcePreview: false });
|
|
658
748
|
}
|
|
659
749
|
|
|
660
|
-
if (!sessionReady
|
|
750
|
+
if (!sessionReady) {
|
|
661
751
|
const snap = await cookieSnapshot();
|
|
662
752
|
throw new Error(
|
|
663
|
-
`Console accounts unavailable after login (HTTP ${accountsProbe?.status || 0}; cookies: ${snap.list.slice(0, 18).join(",") || "(none)"}) — session not accepted for API key`,
|
|
753
|
+
`Console accounts unavailable after login (HTTP ${accountsProbe?.status || 0}; cookies: ${snap.list.slice(0, 18).join(",") || "(none)"}; body=${lastPayloadSnippet.slice(0, 120)}) — session not accepted for API key`,
|
|
664
754
|
);
|
|
665
755
|
}
|
|
666
756
|
|
|
667
757
|
let userEnterpriseId = PERSONAL_ENTERPRISE_ID;
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
758
|
+
if (Array.isArray(accountList) && accountList.length > 0) {
|
|
759
|
+
const preferred = accountList.find((entry) => entry?.lastLogin) || accountList[0];
|
|
760
|
+
if (preferred?.type && preferred.type !== "personal" && preferred.enterpriseId) {
|
|
761
|
+
userEnterpriseId = preferred.enterpriseId;
|
|
762
|
+
} else if (preferred?.enterpriseId && preferred?.type !== "personal") {
|
|
763
|
+
userEnterpriseId = preferred.enterpriseId;
|
|
764
|
+
}
|
|
671
765
|
}
|
|
672
766
|
|
|
673
767
|
// Create API key — CN requires user_enterprise_id (400 code 12505 without it).
|
|
674
|
-
this.setAccountStep(account, "creating_api_key", `Creating API key (enterprise=${userEnterpriseId})`);
|
|
768
|
+
this.setAccountStep(account, "creating_api_key", `Creating API key (enterprise=${userEnterpriseId}, accounts=${accountList.length})`);
|
|
675
769
|
await this.persistJobSnapshot(job, { forcePreview: true });
|
|
676
770
|
|
|
677
771
|
const createKeyOnPage = async (enterpriseId) => page.evaluate(async ({ enterpriseId: entId }) => {
|
|
678
|
-
const
|
|
772
|
+
const host = window.location.hostname || "www.codebuddy.cn";
|
|
773
|
+
const base = host.endsWith("codebuddy.cn")
|
|
774
|
+
? window.location.origin
|
|
775
|
+
: "https://www.codebuddy.cn";
|
|
776
|
+
const res = await fetch(`${base}/console/api/client/v1/api-keys`, {
|
|
679
777
|
method: "POST",
|
|
680
778
|
credentials: "include",
|
|
681
779
|
headers: {
|
|
682
780
|
"Content-Type": "application/json",
|
|
683
781
|
Accept: "application/json, text/plain, */*",
|
|
684
782
|
"x-requested-with": "XMLHttpRequest",
|
|
685
|
-
"X-Domain":
|
|
783
|
+
"X-Domain": "www.codebuddy.cn",
|
|
686
784
|
"X-Product": "SaaS",
|
|
687
785
|
},
|
|
688
786
|
body: JSON.stringify({
|
|
@@ -691,26 +789,49 @@ export class CodeBuddyCnBulkImportManager extends KiroBulkImportManager {
|
|
|
691
789
|
user_enterprise_id: entId,
|
|
692
790
|
}),
|
|
693
791
|
});
|
|
694
|
-
const
|
|
792
|
+
const text = await res.text().catch(() => "");
|
|
793
|
+
let data = null;
|
|
794
|
+
try {
|
|
795
|
+
data = text ? JSON.parse(text) : null;
|
|
796
|
+
} catch {
|
|
797
|
+
data = { _raw: String(text || "").slice(0, 200) };
|
|
798
|
+
}
|
|
695
799
|
return { ok: res.ok, status: res.status, data };
|
|
696
800
|
}, { enterpriseId });
|
|
697
801
|
|
|
802
|
+
// Always open keys page first (SPA hydrates CSRF / host-key there).
|
|
803
|
+
await page.goto("https://www.codebuddy.cn/profile/keys", {
|
|
804
|
+
waitUntil: "domcontentloaded",
|
|
805
|
+
timeout: 45_000,
|
|
806
|
+
}).catch(() => null);
|
|
807
|
+
await waitAfterNav();
|
|
808
|
+
|
|
698
809
|
let apiKeyResult = await createKeyOnPage(userEnterpriseId).catch(() => null);
|
|
699
810
|
|
|
700
|
-
// Retry
|
|
811
|
+
// Retry personal id if enterprise id failed or accounts were empty.
|
|
812
|
+
if (
|
|
813
|
+
(!apiKeyResult || !apiKeyResult.ok)
|
|
814
|
+
&& userEnterpriseId !== PERSONAL_ENTERPRISE_ID
|
|
815
|
+
) {
|
|
816
|
+
this.setAccountStep(account, "retrying_api_key", "Retrying with personal-edition enterprise id");
|
|
817
|
+
await this.persistJobSnapshot(job, { forcePreview: false });
|
|
818
|
+
apiKeyResult = await createKeyOnPage(PERSONAL_ENTERPRISE_ID).catch(() => null);
|
|
819
|
+
}
|
|
820
|
+
|
|
821
|
+
// Retry from console root if keys page POST failed.
|
|
701
822
|
if (!apiKeyResult || !apiKeyResult.ok) {
|
|
702
|
-
this.setAccountStep(account, "retrying_api_key", "Retrying API key
|
|
823
|
+
this.setAccountStep(account, "retrying_api_key", "Retrying API key from /console");
|
|
703
824
|
await this.persistJobSnapshot(job, { forcePreview: true });
|
|
825
|
+
await page.goto("https://www.codebuddy.cn/console", {
|
|
826
|
+
waitUntil: "domcontentloaded",
|
|
827
|
+
timeout: 45_000,
|
|
828
|
+
}).catch(() => null);
|
|
829
|
+
await waitAfterNav();
|
|
704
830
|
await page.goto("https://www.codebuddy.cn/profile/keys", {
|
|
705
831
|
waitUntil: "domcontentloaded",
|
|
706
832
|
timeout: 45_000,
|
|
707
833
|
}).catch(() => null);
|
|
708
|
-
await
|
|
709
|
-
apiKeyResult = await createKeyOnPage(userEnterpriseId).catch(() => null);
|
|
710
|
-
}
|
|
711
|
-
|
|
712
|
-
// Last resort: personal edition id explicitly.
|
|
713
|
-
if ((!apiKeyResult || !apiKeyResult.ok) && userEnterpriseId !== PERSONAL_ENTERPRISE_ID) {
|
|
834
|
+
await waitAfterNav();
|
|
714
835
|
apiKeyResult = await createKeyOnPage(PERSONAL_ENTERPRISE_ID).catch(() => null);
|
|
715
836
|
}
|
|
716
837
|
|
|
@@ -719,9 +840,13 @@ export class CodeBuddyCnBulkImportManager extends KiroBulkImportManager {
|
|
|
719
840
|
if (!apiKeyResult?.ok && (status === 401 || status === 403 || status === 0 || !apiKeyResult)) {
|
|
720
841
|
this.setAccountStep(account, "retrying_api_key", "API key 401/403 — re-running OIDC handoff then retry");
|
|
721
842
|
await this.persistJobSnapshot(job, { forcePreview: true });
|
|
722
|
-
for (const path of [
|
|
843
|
+
for (const path of [
|
|
844
|
+
"https://www.codebuddy.cn/",
|
|
845
|
+
"https://www.codebuddy.cn/console",
|
|
846
|
+
"https://www.codebuddy.cn/profile/keys",
|
|
847
|
+
]) {
|
|
723
848
|
await page.goto(path, { waitUntil: "domcontentloaded", timeout: 45_000 }).catch(() => null);
|
|
724
|
-
await
|
|
849
|
+
await waitAfterNav();
|
|
725
850
|
}
|
|
726
851
|
apiKeyResult = await createKeyOnPage(PERSONAL_ENTERPRISE_ID).catch(() => null);
|
|
727
852
|
}
|
|
File without changes
|
|
File without changes
|