zevairouter 1.0.59 → 1.0.60
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 +22 -22
- 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 +22 -22
- package/cli/app/.next-cli-build/server/chunks/3407.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/3487.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/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-432214b20516609b.js → 3702-7f8a112e52abf22e.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/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/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/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/grokXaiEmailAutomation.js +187 -78
- /package/cli/app/.next-cli-build/static/{F1hsNt0zh50goqFQqkGgQ → OUOJ4FO09rwwLcZHdfxmm}/_buildManifest.js +0 -0
- /package/cli/app/.next-cli-build/static/{F1hsNt0zh50goqFQqkGgQ → OUOJ4FO09rwwLcZHdfxmm}/_ssgManifest.js +0 -0
|
@@ -189,6 +189,96 @@ export async function runXaiEmailSignup(page, {
|
|
|
189
189
|
return { status: "success", email, password, url };
|
|
190
190
|
}
|
|
191
191
|
|
|
192
|
+
async function clickRoleButton(page, nameRe) {
|
|
193
|
+
try {
|
|
194
|
+
const btn = page.getByRole("button", { name: nameRe }).first();
|
|
195
|
+
if (await btn.isVisible({ timeout: 600 }).catch(() => false)) {
|
|
196
|
+
await btn.click({ timeout: 4_000 });
|
|
197
|
+
return true;
|
|
198
|
+
}
|
|
199
|
+
} catch {
|
|
200
|
+
/* next */
|
|
201
|
+
}
|
|
202
|
+
return false;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/** Aggressive consent / continue clicks for xAI device pages. */
|
|
206
|
+
async function clickDeviceAuthorizeControls(page) {
|
|
207
|
+
// Prefer role-based names (more reliable than CSS text on SPA)
|
|
208
|
+
const roles = [
|
|
209
|
+
/^(Allow|Authorize|Approve|Confirm|Yes|Accept)$/i,
|
|
210
|
+
/Allow|Authorize|Approve|Confirm/i,
|
|
211
|
+
/^Continue$/i,
|
|
212
|
+
/Continue/i,
|
|
213
|
+
/^Next$/i,
|
|
214
|
+
/Sign in|Log in|Login/i,
|
|
215
|
+
];
|
|
216
|
+
for (const re of roles) {
|
|
217
|
+
if (await clickRoleButton(page, re)) return true;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// Links styled as buttons
|
|
221
|
+
try {
|
|
222
|
+
const link = page.getByRole("link", { name: /Allow|Authorize|Continue|Confirm/i }).first();
|
|
223
|
+
if (await link.isVisible({ timeout: 400 }).catch(() => false)) {
|
|
224
|
+
await link.click({ timeout: 3_000 });
|
|
225
|
+
return true;
|
|
226
|
+
}
|
|
227
|
+
} catch {
|
|
228
|
+
/* ignore */
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
return Boolean(
|
|
232
|
+
await clickFirst(page, [
|
|
233
|
+
'button:has-text("Allow")',
|
|
234
|
+
'button:has-text("Authorize")',
|
|
235
|
+
'button:has-text("Approve")',
|
|
236
|
+
'button:has-text("Confirm")',
|
|
237
|
+
'button:has-text("Continue")',
|
|
238
|
+
'button:has-text("Next")',
|
|
239
|
+
'button[type=submit]',
|
|
240
|
+
'input[type=submit]',
|
|
241
|
+
])
|
|
242
|
+
);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
async function ensureEmailLoginOnPage(page, { email, password, onStep, pollOtp }) {
|
|
246
|
+
const report = (step, message) => onStep?.(step, message);
|
|
247
|
+
|
|
248
|
+
if (await page.getByRole("button", { name: /Login with email/i }).count()) {
|
|
249
|
+
await page.getByRole("button", { name: /Login with email/i }).click().catch(() => null);
|
|
250
|
+
await wait(800);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
if (await page.locator("input[type=email]").first().isVisible().catch(() => false)) {
|
|
254
|
+
report("device_login_email", "Entering email on device page");
|
|
255
|
+
await typeSlow(page.locator("input[type=email]").first(), email, 40);
|
|
256
|
+
await clickDeviceAuthorizeControls(page);
|
|
257
|
+
await wait(1_200);
|
|
258
|
+
}
|
|
259
|
+
if (await page.locator("input[type=password]").first().isVisible().catch(() => false)) {
|
|
260
|
+
report("device_login_password", "Entering password on device page");
|
|
261
|
+
await typeSlow(page.locator("input[type=password]").first(), password, 40);
|
|
262
|
+
await waitForTurnstile(page, { timeoutMs: 45_000, onStep });
|
|
263
|
+
await clickFirst(page, ['button:has-text("Login")', 'button:has-text("Log in")', 'button[type=submit]']);
|
|
264
|
+
await wait(2_500);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
let text = await pageText(page);
|
|
268
|
+
if (/security code|Verify your email|one time|confirmation code/i.test(text)) {
|
|
269
|
+
report("login_otp", "Login requires OTP — polling tempmail");
|
|
270
|
+
const otp = await pollOtp(email, { timeoutMs: 90_000 });
|
|
271
|
+
if (otp?.code) {
|
|
272
|
+
const codeInput = page.locator("input[name=code], input[autocomplete=one-time-code], input[type=text]").first();
|
|
273
|
+
if (await codeInput.isVisible().catch(() => false)) {
|
|
274
|
+
await typeSlow(codeInput, otp.code, 80);
|
|
275
|
+
}
|
|
276
|
+
await clickDeviceAuthorizeControls(page);
|
|
277
|
+
await wait(2_000);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
|
|
192
282
|
/**
|
|
193
283
|
* Login with email+password (session), then authorize a Grok CLI device code.
|
|
194
284
|
*/
|
|
@@ -203,78 +293,55 @@ export async function runXaiEmailDeviceAuthorize(page, {
|
|
|
203
293
|
cancelCheck,
|
|
204
294
|
} = {}) {
|
|
205
295
|
const report = (step, message) => onStep?.(step, message);
|
|
296
|
+
const authorized = { done: false };
|
|
206
297
|
|
|
207
298
|
// Ensure session via sign-in if not already on account
|
|
208
299
|
const cur = page.url();
|
|
209
|
-
if (!/\/account/i.test(cur)) {
|
|
300
|
+
if (!/\/account/i.test(cur) && !/accounts\.x\.ai/i.test(cur)) {
|
|
210
301
|
report("opening_signin", "Opening xAI email login");
|
|
211
302
|
await page.goto("https://accounts.x.ai/sign-in", { waitUntil: "domcontentloaded", timeout: 60_000 });
|
|
212
303
|
await wait(1_000);
|
|
213
304
|
await dismissCookies(page);
|
|
214
|
-
|
|
215
|
-
if (await page.getByRole("button", { name: /Login with email/i }).count()) {
|
|
216
|
-
await page.getByRole("button", { name: /Login with email/i }).click();
|
|
217
|
-
await wait(800);
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
if (await page.locator("input[type=email]").first().isVisible().catch(() => false)) {
|
|
221
|
-
await typeSlow(page.locator("input[type=email]").first(), email, 40);
|
|
222
|
-
await clickFirst(page, ['button:has-text("Next")', 'button:has-text("Continue")']);
|
|
223
|
-
await wait(1_500);
|
|
224
|
-
}
|
|
225
|
-
if (await page.locator("input[type=password]").first().isVisible().catch(() => false)) {
|
|
226
|
-
await typeSlow(page.locator("input[type=password]").first(), password, 40);
|
|
227
|
-
await waitForTurnstile(page, { timeoutMs: 45_000, onStep });
|
|
228
|
-
await clickFirst(page, ['button:has-text("Login")', 'button:has-text("Log in")']);
|
|
229
|
-
await wait(3_000);
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
let text = await pageText(page);
|
|
233
|
-
if (/security code|Verify your email|one time/i.test(text)) {
|
|
234
|
-
report("login_otp", "Login requires OTP — polling tempmail");
|
|
235
|
-
const otp = await pollOtp(email, { timeoutMs: 90_000 });
|
|
236
|
-
if (otp?.code) {
|
|
237
|
-
await typeSlow(page.locator("input[name=code]").first(), otp.code, 80);
|
|
238
|
-
await clickFirst(page, ['button:has-text("Confirm email")', 'button:has-text("Continue")']);
|
|
239
|
-
await wait(2_500);
|
|
240
|
-
}
|
|
241
|
-
}
|
|
305
|
+
await ensureEmailLoginOnPage(page, { email, password, onStep, pollOtp });
|
|
242
306
|
}
|
|
243
307
|
|
|
244
308
|
report("opening_device", "Opening Grok Build device authorization");
|
|
245
309
|
await page.goto(verificationUrl, { waitUntil: "domcontentloaded", timeout: 60_000 });
|
|
246
|
-
await wait(
|
|
310
|
+
await wait(1_500);
|
|
247
311
|
await dismissCookies(page);
|
|
248
|
-
await
|
|
312
|
+
await clickDeviceAuthorizeControls(page);
|
|
249
313
|
await wait(2_000);
|
|
250
314
|
|
|
251
315
|
// If bounced to login again, do email login on this page
|
|
252
|
-
|
|
253
|
-
await page.
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
await clickFirst(page, ['button:has-text("Next")']);
|
|
258
|
-
await wait(1_200);
|
|
259
|
-
}
|
|
260
|
-
if (await page.locator("input[type=password]").first().isVisible().catch(() => false)) {
|
|
261
|
-
await typeSlow(page.locator("input[type=password]").first(), password, 40);
|
|
262
|
-
await waitForTurnstile(page, { timeoutMs: 45_000, onStep });
|
|
263
|
-
await clickFirst(page, ['button:has-text("Login")', 'button:has-text("Log in")']);
|
|
264
|
-
await wait(3_000);
|
|
265
|
-
}
|
|
266
|
-
// re-open device after login
|
|
316
|
+
const bounced = await page.getByRole("button", { name: /Login with email/i }).count()
|
|
317
|
+
|| await page.locator("input[type=email]").first().isVisible().catch(() => false);
|
|
318
|
+
if (bounced) {
|
|
319
|
+
report("device_needs_login", "Device page requires login — signing in");
|
|
320
|
+
await ensureEmailLoginOnPage(page, { email, password, onStep, pollOtp });
|
|
267
321
|
await page.goto(verificationUrl, { waitUntil: "domcontentloaded", timeout: 60_000 });
|
|
268
|
-
await wait(
|
|
269
|
-
await
|
|
322
|
+
await wait(1_500);
|
|
323
|
+
await dismissCookies(page);
|
|
324
|
+
await clickDeviceAuthorizeControls(page);
|
|
270
325
|
await wait(2_000);
|
|
271
326
|
}
|
|
272
327
|
|
|
328
|
+
// Snapshot first device page for debugging stuck authorize
|
|
329
|
+
try {
|
|
330
|
+
const snap = (await pageText(page)).replace(/\s+/g, " ").slice(0, 160);
|
|
331
|
+
report("device_page", `Device page: ${page.url().slice(0, 80)} · ${snap}`);
|
|
332
|
+
} catch {
|
|
333
|
+
/* ignore */
|
|
334
|
+
}
|
|
335
|
+
|
|
273
336
|
const pollPromise = (async () => {
|
|
274
337
|
const start = Date.now();
|
|
275
|
-
let interval =
|
|
276
|
-
while (Date.now() - start <
|
|
338
|
+
let interval = 4_000;
|
|
339
|
+
while (Date.now() - start < 12 * 60_000) {
|
|
277
340
|
if (cancelCheck?.()) throw new Error("Job cancelled during token polling");
|
|
341
|
+
if (authorized.done) {
|
|
342
|
+
// short burst after UI says authorized
|
|
343
|
+
await wait(1_500);
|
|
344
|
+
}
|
|
278
345
|
const result = await pollToken(deviceCode);
|
|
279
346
|
if (result?.success && result.tokens) return { tokens: result.tokens };
|
|
280
347
|
if (result?.pending || result?.error === "authorization_pending") {
|
|
@@ -287,57 +354,99 @@ export async function runXaiEmailDeviceAuthorize(page, {
|
|
|
287
354
|
continue;
|
|
288
355
|
}
|
|
289
356
|
if (result?.error && !["authorization_pending", "slow_down"].includes(result.error)) {
|
|
290
|
-
|
|
357
|
+
report("token_poll_note", `Poll: ${result.error}`);
|
|
291
358
|
await wait(interval);
|
|
292
359
|
continue;
|
|
293
360
|
}
|
|
294
361
|
await wait(interval);
|
|
295
362
|
}
|
|
296
|
-
throw new Error("Timed out waiting for Grok CLI OAuth token");
|
|
363
|
+
throw new Error("Timed out waiting for Grok CLI OAuth token (device may not have been authorized in the browser)");
|
|
297
364
|
})();
|
|
298
365
|
|
|
299
|
-
// UI authorize loop
|
|
366
|
+
// UI authorize loop — keep going until poll succeeds or timeout (~same window)
|
|
300
367
|
const uiLoop = (async () => {
|
|
301
|
-
|
|
368
|
+
const start = Date.now();
|
|
369
|
+
let i = 0;
|
|
370
|
+
while (Date.now() - start < 11 * 60_000) {
|
|
302
371
|
if (cancelCheck?.()) return;
|
|
372
|
+
if (authorized.done) {
|
|
373
|
+
await wait(2_000);
|
|
374
|
+
continue;
|
|
375
|
+
}
|
|
376
|
+
|
|
303
377
|
const text = await pageText(page);
|
|
304
|
-
|
|
378
|
+
const url = page.url();
|
|
379
|
+
|
|
380
|
+
if (/Device Authorized|device has been authorized|you can close|successfully authorized/i.test(text)) {
|
|
381
|
+
authorized.done = true;
|
|
305
382
|
report("device_authorized", "Device authorized in browser");
|
|
306
383
|
return;
|
|
307
384
|
}
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
'button:has-text("Confirm")',
|
|
316
|
-
]);
|
|
385
|
+
|
|
386
|
+
// Login wall again mid-flow
|
|
387
|
+
if (/Login with email|Sign in to continue|log in to continue/i.test(text)
|
|
388
|
+
|| await page.locator("input[type=password]").first().isVisible().catch(() => false)) {
|
|
389
|
+
report("device_relogin", "Re-login required on device page");
|
|
390
|
+
await ensureEmailLoginOnPage(page, { email, password, onStep, pollOtp });
|
|
391
|
+
await page.goto(verificationUrl, { waitUntil: "domcontentloaded", timeout: 60_000 }).catch(() => null);
|
|
317
392
|
await wait(1_500);
|
|
318
393
|
continue;
|
|
319
394
|
}
|
|
320
|
-
|
|
395
|
+
|
|
396
|
+
// Consent / identity
|
|
397
|
+
if (/Authorize Grok|Grok Build|Verify your identity|Confirm your identity|device code|user code/i.test(text)
|
|
398
|
+
|| /oauth2\/device|device\/verify/i.test(url)) {
|
|
399
|
+
const clicked = await clickDeviceAuthorizeControls(page);
|
|
400
|
+
if (clicked && i % 3 === 0) {
|
|
401
|
+
report("device_click", `Clicked authorize control (${i + 1})`);
|
|
402
|
+
}
|
|
403
|
+
// Turnstile sometimes reappears on consent
|
|
404
|
+
await waitForTurnstile(page, { timeoutMs: 12_000, onStep: i % 5 === 0 ? onStep : undefined });
|
|
405
|
+
await wait(1_800);
|
|
406
|
+
i += 1;
|
|
407
|
+
continue;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
// Redirected away from device flow
|
|
411
|
+
if (/Redirecting/i.test(text) || (/\/account/i.test(url) && !/device/i.test(url))) {
|
|
412
|
+
report("device_reopen", "Re-opening device authorization URL");
|
|
321
413
|
await page.goto(verificationUrl, { waitUntil: "domcontentloaded", timeout: 60_000 });
|
|
322
414
|
await wait(1_500);
|
|
323
|
-
await
|
|
415
|
+
await dismissCookies(page);
|
|
416
|
+
await clickDeviceAuthorizeControls(page);
|
|
324
417
|
await wait(1_500);
|
|
418
|
+
i += 1;
|
|
325
419
|
continue;
|
|
326
420
|
}
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
421
|
+
|
|
422
|
+
// Generic: keep trying primary actions + occasional reload
|
|
423
|
+
await clickDeviceAuthorizeControls(page);
|
|
424
|
+
if (i > 0 && i % 8 === 0) {
|
|
425
|
+
report("device_reload", `Reload device page (attempt ${i}) · ${url.slice(0, 60)}`);
|
|
426
|
+
await page.goto(verificationUrl, { waitUntil: "domcontentloaded", timeout: 60_000 }).catch(() => null);
|
|
427
|
+
await wait(1_200);
|
|
428
|
+
await clickDeviceAuthorizeControls(page);
|
|
429
|
+
}
|
|
430
|
+
await wait(1_800);
|
|
431
|
+
i += 1;
|
|
333
432
|
}
|
|
334
433
|
})();
|
|
335
434
|
|
|
336
435
|
report("polling_token", "Waiting for device token after authorization");
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
436
|
+
try {
|
|
437
|
+
const [tokenResult] = await Promise.all([
|
|
438
|
+
pollPromise,
|
|
439
|
+
uiLoop.catch((e) => {
|
|
440
|
+
report("device_ui_note", String(e?.message || e).slice(0, 120));
|
|
441
|
+
return null;
|
|
442
|
+
}),
|
|
443
|
+
]);
|
|
444
|
+
return { status: "success", tokens: tokenResult.tokens };
|
|
445
|
+
} catch (error) {
|
|
446
|
+
const snap = (await pageText(page).catch(() => "")).replace(/\s+/g, " ").slice(0, 200);
|
|
447
|
+
return {
|
|
448
|
+
status: "failed",
|
|
449
|
+
error: `${error.message || error} · page: ${page.url()} · ${snap}`,
|
|
450
|
+
};
|
|
451
|
+
}
|
|
343
452
|
}
|
|
File without changes
|
|
File without changes
|