zevairouter 1.0.70 → 1.0.72
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 +5 -0
- package/cli/app/.next-cli-build/BUILD_ID +1 -1
- package/cli/app/.next-cli-build/app-path-routes-manifest.json +6 -6
- 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 +6 -6
- 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/7276.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/8157.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-838b157b1c575fad.js → 3702-7aa79659b7d2861a.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/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/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/src/lib/terminal/ptyBridge.py +163 -0
- package/cli/app/package.json +1 -1
- package/cli/package.json +1 -1
- package/package.json +1 -1
- package/src/lib/oauth/services/kiroBulkImportManager.js +8 -8
- package/src/lib/oauth/services/kiroGoogleAutomation.js +230 -20
- /package/cli/app/.next-cli-build/static/{YT3fPhaxMPPrUK4GTsQBO → Pt5AQYEcCz-MH9LLUCKC-}/_buildManifest.js +0 -0
- /package/cli/app/.next-cli-build/static/{YT3fPhaxMPPrUK4GTsQBO → Pt5AQYEcCz-MH9LLUCKC-}/_ssgManifest.js +0 -0
|
@@ -524,6 +524,92 @@ async function isBlockedBrowser(page) {
|
|
|
524
524
|
]);
|
|
525
525
|
}
|
|
526
526
|
|
|
527
|
+
/**
|
|
528
|
+
* Hook successPromise so interstitial waits can exit as soon as the OAuth
|
|
529
|
+
* callback (kiro://) is captured on the network — even while the main frame
|
|
530
|
+
* stays parked on blank SetSID.
|
|
531
|
+
*/
|
|
532
|
+
function attachSuccessSettledFlag(successPromise) {
|
|
533
|
+
if (!successPromise || typeof successPromise.then !== "function") return;
|
|
534
|
+
if (successPromise.__zevaiSettledHooked) return;
|
|
535
|
+
successPromise.__zevaiSettledHooked = true;
|
|
536
|
+
successPromise.then(
|
|
537
|
+
() => { successPromise.__zevaiSettled = true; },
|
|
538
|
+
() => { successPromise.__zevaiSettled = true; },
|
|
539
|
+
);
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
function isSuccessSettled(successPromise) {
|
|
543
|
+
return Boolean(successPromise && successPromise.__zevaiSettled);
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
/**
|
|
547
|
+
* Google often parks on intermediate pages with empty body after password/consent:
|
|
548
|
+
* accounts.google.com(.xx)/accounts/SetSID
|
|
549
|
+
* AccountChooser, continue, challenge handoffs
|
|
550
|
+
*
|
|
551
|
+
* Do NOT force-navigate consent/idpresponse from here — that aborts the natural
|
|
552
|
+
* network hop that emits Location: kiro://. Wait for auto-redirect / AccountChooser
|
|
553
|
+
* UI, and bail early when successPromise already settled (CDP/page listeners).
|
|
554
|
+
*
|
|
555
|
+
* @returns {boolean} true if still on an interstitial when maxWaitMs elapsed
|
|
556
|
+
*/
|
|
557
|
+
async function waitThroughGoogleInterstitials(page, reportStep, { maxWaitMs = 20_000, successPromise = null } = {}) {
|
|
558
|
+
const start = Date.now();
|
|
559
|
+
let lastUrl = "";
|
|
560
|
+
attachSuccessSettledFlag(successPromise);
|
|
561
|
+
|
|
562
|
+
while (Date.now() - start < maxWaitMs) {
|
|
563
|
+
if (isSuccessSettled(successPromise)) {
|
|
564
|
+
reportStep?.("waiting_google_redirect", "OAuth callback already received — leaving interstitial wait");
|
|
565
|
+
return false;
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
const url = page.url?.() || "";
|
|
569
|
+
const body = String(await readPageText(page).catch(() => "")).trim();
|
|
570
|
+
const isSetSid = /\/accounts\/SetSID/i.test(url);
|
|
571
|
+
const isChooser = /\/AccountChooser/i.test(url);
|
|
572
|
+
const isEmpty = body.length < 30;
|
|
573
|
+
const isInterstitial = isSetSid || (isEmpty && /accounts\.google\./i.test(url));
|
|
574
|
+
|
|
575
|
+
if (!isInterstitial && !isChooser) return false;
|
|
576
|
+
|
|
577
|
+
if (url !== lastUrl) {
|
|
578
|
+
reportStep?.(
|
|
579
|
+
"waiting_google_redirect",
|
|
580
|
+
`Waiting for Google redirect (url=${url.slice(0, 120)} empty=${isEmpty})`,
|
|
581
|
+
);
|
|
582
|
+
lastUrl = url;
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
// Account chooser: click first account row if present
|
|
586
|
+
if (isChooser) {
|
|
587
|
+
const clicked = await clickFirstActionable(page, [
|
|
588
|
+
'div[data-identifier]',
|
|
589
|
+
'div[data-email]',
|
|
590
|
+
'li[data-identifier]',
|
|
591
|
+
'div[role="link"]',
|
|
592
|
+
'div[role="button"]',
|
|
593
|
+
]);
|
|
594
|
+
if (clicked) {
|
|
595
|
+
reportStep?.("selecting_google_account", "Selected account from Google AccountChooser");
|
|
596
|
+
await page.waitForTimeout(1200);
|
|
597
|
+
continue;
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
const waiters = [
|
|
602
|
+
page.waitForNavigation({ waitUntil: "domcontentloaded", timeout: 4_000 }).catch(() => null),
|
|
603
|
+
page.waitForTimeout(1_200),
|
|
604
|
+
];
|
|
605
|
+
if (successPromise && !isSuccessSettled(successPromise)) {
|
|
606
|
+
waiters.push(successPromise.then(() => null).catch(() => null));
|
|
607
|
+
}
|
|
608
|
+
await Promise.race(waiters);
|
|
609
|
+
}
|
|
610
|
+
return true;
|
|
611
|
+
}
|
|
612
|
+
|
|
527
613
|
function isProviderPage(page) {
|
|
528
614
|
try {
|
|
529
615
|
const url = new URL(page.url());
|
|
@@ -1189,6 +1275,18 @@ async function handleProviderLoginGate(page, reportStep) {
|
|
|
1189
1275
|
return false;
|
|
1190
1276
|
}
|
|
1191
1277
|
|
|
1278
|
+
/**
|
|
1279
|
+
* Capture Kiro OAuth callback (kiro://…?code=…).
|
|
1280
|
+
*
|
|
1281
|
+
* After password, Google parks the main frame on empty SetSID while the network
|
|
1282
|
+
* completes consent → Cognito idpresponse → 302 Location: kiro://…. Custom-protocol
|
|
1283
|
+
* redirects often never become a page navigation, so we listen on:
|
|
1284
|
+
* - page + context request / requestfailed / response (Location header)
|
|
1285
|
+
* - CDP Network (most reliable on headed Chromium / SetSID)
|
|
1286
|
+
*
|
|
1287
|
+
* Never force-navigate idpresponse/consent from the monitor — that aborts the
|
|
1288
|
+
* natural hop before kiro:// is emitted.
|
|
1289
|
+
*/
|
|
1192
1290
|
export function createKiroCallbackMonitor(context, page, timeoutMs = DEFAULT_MANUAL_TIMEOUT_MS) {
|
|
1193
1291
|
let resolveOuter;
|
|
1194
1292
|
let rejectOuter;
|
|
@@ -1218,34 +1316,80 @@ export function createKiroCallbackMonitor(context, page, timeoutMs = DEFAULT_MAN
|
|
|
1218
1316
|
else resolveOuter(result);
|
|
1219
1317
|
}
|
|
1220
1318
|
|
|
1319
|
+
function trySettleFromUrl(rawUrl) {
|
|
1320
|
+
const parsed = parseCallbackUrl(rawUrl || "");
|
|
1321
|
+
if (parsed) settle(parsed);
|
|
1322
|
+
return Boolean(parsed);
|
|
1323
|
+
}
|
|
1324
|
+
|
|
1325
|
+
function trySettleFromResponse(response) {
|
|
1326
|
+
try {
|
|
1327
|
+
trySettleFromUrl(response?.url?.() || "");
|
|
1328
|
+
const headers = typeof response?.headers === "function" ? response.headers() : null;
|
|
1329
|
+
const location = headers?.location || headers?.Location || "";
|
|
1330
|
+
if (location) trySettleFromUrl(location);
|
|
1331
|
+
} catch {
|
|
1332
|
+
/* ignore */
|
|
1333
|
+
}
|
|
1334
|
+
}
|
|
1335
|
+
|
|
1336
|
+
function attachCdpNetwork(trackedPage, ownerCleanups) {
|
|
1337
|
+
void (async () => {
|
|
1338
|
+
try {
|
|
1339
|
+
if (settled) return;
|
|
1340
|
+
const ctx = trackedPage.context?.();
|
|
1341
|
+
if (!ctx?.newCDPSession) return;
|
|
1342
|
+
const session = await ctx.newCDPSession(trackedPage);
|
|
1343
|
+
await session.send("Network.enable").catch(() => null);
|
|
1344
|
+
|
|
1345
|
+
const onCdpResponse = (params) => {
|
|
1346
|
+
try {
|
|
1347
|
+
const headers = params?.response?.headers || {};
|
|
1348
|
+
const loc = headers.location || headers.Location || "";
|
|
1349
|
+
if (loc) trySettleFromUrl(loc);
|
|
1350
|
+
trySettleFromUrl(params?.response?.url || "");
|
|
1351
|
+
} catch {
|
|
1352
|
+
/* ignore */
|
|
1353
|
+
}
|
|
1354
|
+
};
|
|
1355
|
+
const onCdpRequest = (params) => {
|
|
1356
|
+
try {
|
|
1357
|
+
trySettleFromUrl(params?.request?.url || "");
|
|
1358
|
+
} catch {
|
|
1359
|
+
/* ignore */
|
|
1360
|
+
}
|
|
1361
|
+
};
|
|
1362
|
+
|
|
1363
|
+
session.on("Network.responseReceived", onCdpResponse);
|
|
1364
|
+
session.on("Network.requestWillBeSent", onCdpRequest);
|
|
1365
|
+
ownerCleanups.push(() => {
|
|
1366
|
+
try { session.off?.("Network.responseReceived", onCdpResponse); } catch {}
|
|
1367
|
+
try { session.off?.("Network.requestWillBeSent", onCdpRequest); } catch {}
|
|
1368
|
+
void session.detach?.().catch(() => null);
|
|
1369
|
+
});
|
|
1370
|
+
} catch {
|
|
1371
|
+
/* CDP unavailable — page/context listeners remain */
|
|
1372
|
+
}
|
|
1373
|
+
})();
|
|
1374
|
+
}
|
|
1375
|
+
|
|
1221
1376
|
function registerPage(trackedPage, ownerCleanups) {
|
|
1222
1377
|
if (!trackedPage || trackedPages.has(trackedPage)) return;
|
|
1223
1378
|
trackedPages.add(trackedPage);
|
|
1224
1379
|
|
|
1225
|
-
const onFrame = (frame) =>
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
const
|
|
1230
|
-
const parsed = parseCallbackUrl(request?.url?.() || "");
|
|
1231
|
-
if (parsed) settle(parsed);
|
|
1232
|
-
};
|
|
1233
|
-
const onRequestFailed = (request) => {
|
|
1234
|
-
const parsed = parseCallbackUrl(request?.url?.() || "");
|
|
1235
|
-
if (parsed) settle(parsed);
|
|
1236
|
-
};
|
|
1237
|
-
const onLoadState = () => {
|
|
1238
|
-
const parsed = parseCallbackUrl(trackedPage.url?.() || "");
|
|
1239
|
-
if (parsed) settle(parsed);
|
|
1240
|
-
};
|
|
1380
|
+
const onFrame = (frame) => trySettleFromUrl(frame?.url?.() || "");
|
|
1381
|
+
const onRequest = (request) => trySettleFromUrl(request?.url?.() || "");
|
|
1382
|
+
const onRequestFailed = (request) => trySettleFromUrl(request?.url?.() || "");
|
|
1383
|
+
const onResponse = (response) => trySettleFromResponse(response);
|
|
1384
|
+
const onLoadState = () => trySettleFromUrl(trackedPage.url?.() || "");
|
|
1241
1385
|
const onClose = () => {
|
|
1242
|
-
// Cancel/force-close: unblock manual followup instead of hanging 15 min
|
|
1243
1386
|
settle(null, new Error("Browser session closed while waiting for Kiro callback"));
|
|
1244
1387
|
};
|
|
1245
1388
|
|
|
1246
1389
|
trackedPage.on("framenavigated", onFrame);
|
|
1247
1390
|
trackedPage.on("request", onRequest);
|
|
1248
1391
|
trackedPage.on("requestfailed", onRequestFailed);
|
|
1392
|
+
trackedPage.on("response", onResponse);
|
|
1249
1393
|
trackedPage.on("domcontentloaded", onLoadState);
|
|
1250
1394
|
trackedPage.on("load", onLoadState);
|
|
1251
1395
|
trackedPage.on("close", onClose);
|
|
@@ -1254,11 +1398,14 @@ export function createKiroCallbackMonitor(context, page, timeoutMs = DEFAULT_MAN
|
|
|
1254
1398
|
trackedPage.off("framenavigated", onFrame);
|
|
1255
1399
|
trackedPage.off("request", onRequest);
|
|
1256
1400
|
trackedPage.off("requestfailed", onRequestFailed);
|
|
1401
|
+
trackedPage.off("response", onResponse);
|
|
1257
1402
|
trackedPage.off("domcontentloaded", onLoadState);
|
|
1258
1403
|
trackedPage.off("load", onLoadState);
|
|
1259
1404
|
trackedPage.off("close", onClose);
|
|
1260
1405
|
});
|
|
1261
1406
|
|
|
1407
|
+
attachCdpNetwork(trackedPage, ownerCleanups);
|
|
1408
|
+
|
|
1262
1409
|
const current = parseCallbackUrl(trackedPage.url?.() || "");
|
|
1263
1410
|
if (current) settle(current);
|
|
1264
1411
|
}
|
|
@@ -1273,10 +1420,20 @@ export function createKiroCallbackMonitor(context, page, timeoutMs = DEFAULT_MAN
|
|
|
1273
1420
|
const onClose = () => {
|
|
1274
1421
|
settle(null, new Error("Browser context closed while waiting for Kiro callback"));
|
|
1275
1422
|
};
|
|
1423
|
+
const onCtxRequest = (request) => trySettleFromUrl(request?.url?.() || "");
|
|
1424
|
+
const onCtxRequestFailed = (request) => trySettleFromUrl(request?.url?.() || "");
|
|
1425
|
+
const onCtxResponse = (response) => trySettleFromResponse(response);
|
|
1426
|
+
|
|
1276
1427
|
ctx.on("page", onPage);
|
|
1277
1428
|
ctx.on("close", onClose);
|
|
1429
|
+
ctx.on("request", onCtxRequest);
|
|
1430
|
+
ctx.on("requestfailed", onCtxRequestFailed);
|
|
1431
|
+
ctx.on("response", onCtxResponse);
|
|
1278
1432
|
cleanups.push(() => ctx.off("page", onPage));
|
|
1279
1433
|
cleanups.push(() => ctx.off("close", onClose));
|
|
1434
|
+
cleanups.push(() => ctx.off("request", onCtxRequest));
|
|
1435
|
+
cleanups.push(() => ctx.off("requestfailed", onCtxRequestFailed));
|
|
1436
|
+
cleanups.push(() => ctx.off("response", onCtxResponse));
|
|
1280
1437
|
|
|
1281
1438
|
if (pg) registerPage(pg, cleanups);
|
|
1282
1439
|
}
|
|
@@ -1287,7 +1444,6 @@ export function createKiroCallbackMonitor(context, page, timeoutMs = DEFAULT_MAN
|
|
|
1287
1444
|
if (newContext) bind(newContext, newPage);
|
|
1288
1445
|
};
|
|
1289
1446
|
|
|
1290
|
-
// Allow cancel path to force-reject without waiting for timeout
|
|
1291
1447
|
promise.abort = (reason = "Job cancelled") => {
|
|
1292
1448
|
settle(null, new Error(reason));
|
|
1293
1449
|
};
|
|
@@ -1408,11 +1564,21 @@ export async function runGoogleAccountAutomation({
|
|
|
1408
1564
|
onStep?.(step, message);
|
|
1409
1565
|
};
|
|
1410
1566
|
|
|
1567
|
+
const interstitialOpts = (maxWaitMs) => ({ maxWaitMs, successPromise });
|
|
1568
|
+
// Prevent re-submitting email/password while Google is still transitioning
|
|
1569
|
+
// (pwd page stays mounted ~1–3s after Next; re-fill aborts the OAuth chain).
|
|
1570
|
+
let passwordSubmittedAt = 0;
|
|
1571
|
+
let emailSubmittedAt = 0;
|
|
1572
|
+
const PASSWORD_RESUBMIT_COOLDOWN_MS = 25_000;
|
|
1573
|
+
const EMAIL_RESUBMIT_COOLDOWN_MS = 12_000;
|
|
1574
|
+
|
|
1411
1575
|
reportStep(openingStep, openingMessage);
|
|
1412
1576
|
await page.goto(authUrl, { waitUntil: "domcontentloaded", timeout: 60_000 });
|
|
1413
1577
|
await page.waitForTimeout(2_000);
|
|
1578
|
+
await waitThroughGoogleInterstitials(page, reportStep, interstitialOpts(12_000));
|
|
1414
1579
|
|
|
1415
1580
|
await handleProviderLoginGate(page, reportStep);
|
|
1581
|
+
await waitThroughGoogleInterstitials(page, reportStep, interstitialOpts(8_000));
|
|
1416
1582
|
|
|
1417
1583
|
const emailInput = await waitForFirstVisibleLocator(page, EMAIL_INPUT_SELECTOR, { timeout: 15_000 });
|
|
1418
1584
|
if (emailInput) {
|
|
@@ -1423,10 +1589,12 @@ export async function runGoogleAccountAutomation({
|
|
|
1423
1589
|
} else {
|
|
1424
1590
|
reportStep("submitting_email", "Submitting email");
|
|
1425
1591
|
await clickFirstVisible(page, NEXT_BUTTON_SELECTORS);
|
|
1592
|
+
emailSubmittedAt = Date.now();
|
|
1426
1593
|
// Wait for the page to transition away from the email step so the
|
|
1427
1594
|
// polling loop doesn't immediately re-detect the disappearing email
|
|
1428
1595
|
// field and type the email value into the password input.
|
|
1429
|
-
await page.waitForTimeout(
|
|
1596
|
+
await page.waitForTimeout(1_500);
|
|
1597
|
+
await waitThroughGoogleInterstitials(page, reportStep, interstitialOpts(12_000));
|
|
1430
1598
|
}
|
|
1431
1599
|
}
|
|
1432
1600
|
|
|
@@ -1452,8 +1620,15 @@ export async function runGoogleAccountAutomation({
|
|
|
1452
1620
|
};
|
|
1453
1621
|
}
|
|
1454
1622
|
|
|
1623
|
+
// Unblock SetSID / empty Google interstitials before other handlers
|
|
1624
|
+
const waited = await waitThroughGoogleInterstitials(page, reportStep, interstitialOpts(8_000));
|
|
1625
|
+
if (waited) {
|
|
1626
|
+
continue;
|
|
1627
|
+
}
|
|
1628
|
+
|
|
1455
1629
|
const handledGoogleConsent = await handleGoogleConsent(page, reportStep);
|
|
1456
1630
|
if (handledGoogleConsent) {
|
|
1631
|
+
await waitThroughGoogleInterstitials(page, reportStep, interstitialOpts(12_000));
|
|
1457
1632
|
continue;
|
|
1458
1633
|
}
|
|
1459
1634
|
|
|
@@ -1515,25 +1690,60 @@ export async function runGoogleAccountAutomation({
|
|
|
1515
1690
|
// address into whatever field is focused (often the password input).
|
|
1516
1691
|
const passwordInput = await getFirstVisibleLocator(page, PASSWORD_INPUT_SELECTOR);
|
|
1517
1692
|
if (passwordInput) {
|
|
1693
|
+
const sincePw = Date.now() - passwordSubmittedAt;
|
|
1694
|
+
if (passwordSubmittedAt && sincePw < PASSWORD_RESUBMIT_COOLDOWN_MS) {
|
|
1695
|
+
// Still on (or animating off) the password form after a recent submit —
|
|
1696
|
+
// do NOT re-fill; wait for SetSID/consent/callback instead.
|
|
1697
|
+
reportStep(
|
|
1698
|
+
"waiting_after_password",
|
|
1699
|
+
`Password already submitted ${Math.round(sincePw / 1000)}s ago — waiting for Google redirect`,
|
|
1700
|
+
);
|
|
1701
|
+
await waitThroughGoogleInterstitials(page, reportStep, interstitialOpts(8_000));
|
|
1702
|
+
await page.waitForTimeout(500);
|
|
1703
|
+
continue;
|
|
1704
|
+
}
|
|
1705
|
+
|
|
1518
1706
|
reportStep("entering_password", "Entering Google password");
|
|
1519
1707
|
const filled = await fillInputResilient(passwordInput, password);
|
|
1520
1708
|
if (filled) {
|
|
1521
1709
|
reportStep("submitting_password", "Submitting password");
|
|
1522
1710
|
await clickFirstVisible(page, NEXT_BUTTON_SELECTORS);
|
|
1711
|
+
passwordSubmittedAt = Date.now();
|
|
1712
|
+
// Give Google time to leave the password challenge before the next
|
|
1713
|
+
// loop iteration can re-detect the still-mounted password field.
|
|
1714
|
+
await Promise.race([
|
|
1715
|
+
page.waitForNavigation({ waitUntil: "domcontentloaded", timeout: 8_000 }).catch(() => null),
|
|
1716
|
+
page.waitForTimeout(2_500),
|
|
1717
|
+
]);
|
|
1718
|
+
// Password submit often lands on empty SetSID while network completes
|
|
1719
|
+
// consent→idpresponse→kiro://. Callback monitor (CDP) settles successPromise.
|
|
1720
|
+
await waitThroughGoogleInterstitials(page, reportStep, interstitialOpts(25_000));
|
|
1523
1721
|
} else {
|
|
1524
1722
|
reportStep("password_fill_failed", "Could not fill the Google password field; retrying loop");
|
|
1723
|
+
await page.waitForTimeout(700);
|
|
1525
1724
|
}
|
|
1526
|
-
await page.waitForTimeout(700);
|
|
1527
1725
|
continue;
|
|
1528
1726
|
}
|
|
1529
1727
|
|
|
1530
1728
|
const nextEmailInput = await getFirstVisibleLocator(page, EMAIL_INPUT_SELECTOR);
|
|
1531
1729
|
if (nextEmailInput) {
|
|
1730
|
+
const sinceEmail = Date.now() - emailSubmittedAt;
|
|
1731
|
+
if (emailSubmittedAt && sinceEmail < EMAIL_RESUBMIT_COOLDOWN_MS) {
|
|
1732
|
+
reportStep(
|
|
1733
|
+
"waiting_after_email",
|
|
1734
|
+
`Email already submitted ${Math.round(sinceEmail / 1000)}s ago — waiting for password/next screen`,
|
|
1735
|
+
);
|
|
1736
|
+
await page.waitForTimeout(800);
|
|
1737
|
+
continue;
|
|
1738
|
+
}
|
|
1739
|
+
|
|
1532
1740
|
reportStep("entering_email", "Entering Google email");
|
|
1533
1741
|
const filled = await fillInputResilient(nextEmailInput, email);
|
|
1534
1742
|
if (filled) {
|
|
1535
1743
|
reportStep("submitting_email", "Submitting email");
|
|
1536
1744
|
await clickFirstVisible(page, NEXT_BUTTON_SELECTORS);
|
|
1745
|
+
emailSubmittedAt = Date.now();
|
|
1746
|
+
await page.waitForTimeout(1_500);
|
|
1537
1747
|
} else {
|
|
1538
1748
|
reportStep("email_fill_failed", "Could not fill the Google email field; retrying loop");
|
|
1539
1749
|
}
|
|
File without changes
|
|
File without changes
|