zevairouter 1.0.67 → 1.0.69
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 +10 -0
- package/cli/app/.next-cli-build/BUILD_ID +1 -1
- package/cli/app/.next-cli-build/app-path-routes-manifest.json +31 -31
- 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 +31 -31
- 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/5949.js +3 -3
- package/cli/app/.next-cli-build/server/chunks/6896.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/7276.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/8157.js +1 -1
- package/cli/app/.next-cli-build/server/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-60b8407e95e0ae8f.js → 3702-cf53f29a22776f08.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/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/src/lib/terminal/ptyBridge.py +163 -0
- package/cli/app/cli/hooks/playwrightRuntime.js +84 -17
- package/cli/app/package.json +1 -1
- package/cli/hooks/playwrightRuntime.js +84 -17
- package/cli/package.json +1 -1
- package/package.json +1 -1
- package/src/lib/oauth/services/bulkImportBrowserEngine.js +38 -22
- package/src/lib/oauth/services/kiroBulkImportManager.js +38 -8
- package/src/lib/oauth/services/kiroGoogleAutomation.js +16 -0
- /package/cli/app/.next-cli-build/static/{iVBk105jGtR_XdrL-iFq4 → ieCl7ScziCIxUyr4Zck3E}/_buildManifest.js +0 -0
- /package/cli/app/.next-cli-build/static/{iVBk105jGtR_XdrL-iFq4 → ieCl7ScziCIxUyr4Zck3E}/_ssgManifest.js +0 -0
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
// Ensure Playwright + Chromium are usable at runtime. `npm i -g zevairouter`
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
2
|
+
// may not ship a resolvable playwright package under webpack/standalone, and
|
|
3
|
+
// does NOT always trigger browser download. We install into ~/.zevai/runtime
|
|
4
|
+
// and resolve with real Node require (not webpack's registry).
|
|
5
|
+
//
|
|
6
|
+
// Bug we fix (Kiro bulk mass-fail):
|
|
7
|
+
// "playwright installed but cannot be required"
|
|
8
|
+
// → package exists under ~/.zevai/runtime/node_modules/playwright but
|
|
9
|
+
// bare require("playwright") is rewritten by webpack and throws.
|
|
10
|
+
// Same pattern as camoufoxRuntime: createRequire + __non_webpack_require__.
|
|
7
11
|
const { spawnSync } = require("child_process");
|
|
12
|
+
const { createRequire } = require("module");
|
|
8
13
|
const fs = require("fs");
|
|
9
14
|
const path = require("path");
|
|
10
15
|
|
|
@@ -13,19 +18,50 @@ const { runNpmInstall, getRuntimeDir, getRuntimeNodeModules } = require("./sqlit
|
|
|
13
18
|
const PLAYWRIGHT_PACKAGE = "playwright";
|
|
14
19
|
const PLAYWRIGHT_VERSION = "^1.54.2";
|
|
15
20
|
|
|
21
|
+
// Webpack rewrites bare require(); __non_webpack_require__ stays real Node require.
|
|
22
|
+
const nodeRequire =
|
|
23
|
+
typeof __non_webpack_require__ === "function" ? __non_webpack_require__ : require;
|
|
24
|
+
|
|
25
|
+
function getRuntimeRequire() {
|
|
26
|
+
try {
|
|
27
|
+
const anchor = path.join(getRuntimeDir(), "noop.js");
|
|
28
|
+
return createRequire(anchor);
|
|
29
|
+
} catch {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
16
34
|
let cachedReady = null;
|
|
17
35
|
|
|
18
36
|
function tryRequirePlaywright() {
|
|
37
|
+
// 1) Runtime-anchored createRequire (works under webpack + any cwd)
|
|
19
38
|
try {
|
|
20
|
-
|
|
39
|
+
const rreq = getRuntimeRequire();
|
|
40
|
+
const candidate = path.join(getRuntimeNodeModules(), PLAYWRIGHT_PACKAGE);
|
|
41
|
+
if (rreq && fs.existsSync(path.join(candidate, "package.json"))) {
|
|
42
|
+
return rreq(candidate);
|
|
43
|
+
}
|
|
44
|
+
} catch {}
|
|
45
|
+
|
|
46
|
+
// 2) Bare real require (global / NODE_PATH)
|
|
47
|
+
try {
|
|
48
|
+
return nodeRequire(PLAYWRIGHT_PACKAGE);
|
|
21
49
|
} catch {}
|
|
50
|
+
|
|
51
|
+
// 3) Absolute path via nodeRequire
|
|
22
52
|
try {
|
|
23
|
-
const
|
|
24
|
-
const candidate = path.join(runtimeNm, PLAYWRIGHT_PACKAGE);
|
|
53
|
+
const candidate = path.join(getRuntimeNodeModules(), PLAYWRIGHT_PACKAGE);
|
|
25
54
|
if (fs.existsSync(path.join(candidate, "package.json"))) {
|
|
26
|
-
return
|
|
55
|
+
return nodeRequire(candidate);
|
|
27
56
|
}
|
|
28
57
|
} catch {}
|
|
58
|
+
|
|
59
|
+
// 4) Resolve from process cwd node_modules (dev)
|
|
60
|
+
try {
|
|
61
|
+
const rreq = createRequire(path.join(process.cwd(), "package.json"));
|
|
62
|
+
return rreq(PLAYWRIGHT_PACKAGE);
|
|
63
|
+
} catch {}
|
|
64
|
+
|
|
29
65
|
return null;
|
|
30
66
|
}
|
|
31
67
|
|
|
@@ -45,11 +81,22 @@ function isChromiumBinaryAvailable() {
|
|
|
45
81
|
function findCli() {
|
|
46
82
|
const candidates = [];
|
|
47
83
|
try {
|
|
48
|
-
const
|
|
84
|
+
const rreq = getRuntimeRequire();
|
|
85
|
+
if (rreq) {
|
|
86
|
+
try {
|
|
87
|
+
candidates.push(path.join(path.dirname(rreq.resolve(`${PLAYWRIGHT_PACKAGE}/package.json`)), "cli.js"));
|
|
88
|
+
} catch {}
|
|
89
|
+
try {
|
|
90
|
+
candidates.push(path.join(path.dirname(rreq.resolve("playwright-core/package.json")), "cli.js"));
|
|
91
|
+
} catch {}
|
|
92
|
+
}
|
|
93
|
+
} catch {}
|
|
94
|
+
try {
|
|
95
|
+
const pwPkg = nodeRequire.resolve("playwright/package.json");
|
|
49
96
|
candidates.push(path.join(path.dirname(pwPkg), "cli.js"));
|
|
50
97
|
} catch {}
|
|
51
98
|
try {
|
|
52
|
-
const pwCorePkg =
|
|
99
|
+
const pwCorePkg = nodeRequire.resolve("playwright-core/package.json");
|
|
53
100
|
candidates.push(path.join(path.dirname(pwCorePkg), "cli.js"));
|
|
54
101
|
} catch {}
|
|
55
102
|
try {
|
|
@@ -81,9 +128,17 @@ function ensurePlaywrightPackage({ silent = false } = {}) {
|
|
|
81
128
|
};
|
|
82
129
|
}
|
|
83
130
|
|
|
131
|
+
// Clear any half-state and re-resolve with createRequire
|
|
132
|
+
cachedReady = null;
|
|
84
133
|
const installed = tryRequirePlaywright();
|
|
85
134
|
if (!installed) {
|
|
86
|
-
return {
|
|
135
|
+
return {
|
|
136
|
+
ok: false,
|
|
137
|
+
reason:
|
|
138
|
+
"playwright installed into ~/.zevai/runtime but cannot be required " +
|
|
139
|
+
"(webpack/module path). Restart zevai after install, or run: " +
|
|
140
|
+
'node -e "require(require(\'path\').join(require(\'os\').homedir(),\'.zevai/runtime/node_modules/playwright\'))"',
|
|
141
|
+
};
|
|
87
142
|
}
|
|
88
143
|
return { ok: true, module: installed };
|
|
89
144
|
}
|
|
@@ -96,10 +151,18 @@ function runInstall({ silent = false, timeout = 600_000 } = {}) {
|
|
|
96
151
|
|
|
97
152
|
if (!silent) console.log("\u23f3 Downloading Playwright Chromium (first run, ~150MB)...");
|
|
98
153
|
|
|
154
|
+
// Never honor channel=chrome — Kiro bulk needs bundled Chromium, not /opt/google/chrome
|
|
155
|
+
const env = {
|
|
156
|
+
...process.env,
|
|
157
|
+
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: undefined,
|
|
158
|
+
};
|
|
159
|
+
delete env.PLAYWRIGHT_CHROMIUM_CHANNEL;
|
|
160
|
+
|
|
99
161
|
const res = spawnSync(process.execPath, [cliPath, "install", "chromium"], {
|
|
100
162
|
stdio: silent ? ["ignore", "pipe", "pipe"] : "inherit",
|
|
101
163
|
timeout,
|
|
102
164
|
encoding: "utf8",
|
|
165
|
+
env,
|
|
103
166
|
});
|
|
104
167
|
|
|
105
168
|
if (res.status === 0) {
|
|
@@ -118,14 +181,17 @@ function runInstall({ silent = false, timeout = 600_000 } = {}) {
|
|
|
118
181
|
}
|
|
119
182
|
|
|
120
183
|
function ensurePlaywrightRuntime({ silent = false, timeout } = {}) {
|
|
121
|
-
if (cachedReady === true)
|
|
184
|
+
if (cachedReady === true) {
|
|
185
|
+
const mod = tryRequirePlaywright();
|
|
186
|
+
return { ok: true, module: mod };
|
|
187
|
+
}
|
|
122
188
|
|
|
123
189
|
const pkg = ensurePlaywrightPackage({ silent });
|
|
124
190
|
if (!pkg.ok) {
|
|
125
191
|
cachedReady = false;
|
|
126
192
|
const error = new Error(
|
|
127
193
|
`Playwright not available. ${pkg.reason}. ` +
|
|
128
|
-
|
|
194
|
+
`Run "npm install -g playwright && npx playwright install chromium" manually, then retry.`
|
|
129
195
|
);
|
|
130
196
|
error.code = "PLAYWRIGHT_PACKAGE_MISSING";
|
|
131
197
|
return { ok: false, error };
|
|
@@ -133,19 +199,19 @@ function ensurePlaywrightRuntime({ silent = false, timeout } = {}) {
|
|
|
133
199
|
|
|
134
200
|
if (isChromiumBinaryAvailable()) {
|
|
135
201
|
cachedReady = true;
|
|
136
|
-
return { ok: true, module: pkg.module };
|
|
202
|
+
return { ok: true, module: pkg.module || tryRequirePlaywright() };
|
|
137
203
|
}
|
|
138
204
|
|
|
139
205
|
const result = runInstall({ silent, timeout });
|
|
140
206
|
if (result.ok && isChromiumBinaryAvailable()) {
|
|
141
207
|
cachedReady = true;
|
|
142
|
-
return { ok: true, module: pkg.module };
|
|
208
|
+
return { ok: true, module: pkg.module || tryRequirePlaywright() };
|
|
143
209
|
}
|
|
144
210
|
|
|
145
211
|
cachedReady = false;
|
|
146
212
|
const error = new Error(
|
|
147
213
|
`Playwright Chromium not available. ${result.reason}. ` +
|
|
148
|
-
|
|
214
|
+
`Run "npx playwright install chromium" manually, then retry.`
|
|
149
215
|
);
|
|
150
216
|
error.code = "PLAYWRIGHT_CHROMIUM_MISSING";
|
|
151
217
|
return { ok: false, error };
|
|
@@ -165,4 +231,5 @@ module.exports = {
|
|
|
165
231
|
isChromiumBinaryAvailable,
|
|
166
232
|
resetCache,
|
|
167
233
|
findPlaywrightCli: findCli,
|
|
234
|
+
tryRequirePlaywright,
|
|
168
235
|
};
|
package/cli/package.json
CHANGED
package/package.json
CHANGED
|
@@ -112,32 +112,25 @@ async function launchChromium({ proxyUrl, headless = true, windowSize = null } =
|
|
|
112
112
|
await ensureHeadedDisplayOrThrow();
|
|
113
113
|
}
|
|
114
114
|
|
|
115
|
+
// Prefer runtime helper first — under Next/webpack, dynamic import("playwright")
|
|
116
|
+
// often fails even when ~/.zevai/runtime has the package (Kiro mass-fail).
|
|
115
117
|
let chromium = null;
|
|
116
118
|
let importErr = null;
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
119
|
+
const runtime = loadRuntimeHelper("playwrightRuntime");
|
|
120
|
+
if (runtime?.ensurePlaywrightRuntime) {
|
|
121
|
+
const ready = runtime.ensurePlaywrightRuntime({ silent: false });
|
|
122
|
+
if (ready.ok) {
|
|
123
|
+
const mod = ready.module || runtime.loadPlaywrightModule?.() || runtime.tryRequirePlaywright?.();
|
|
124
|
+
chromium = mod?.chromium ?? null;
|
|
125
|
+
} else if (ready.error) {
|
|
126
|
+
importErr = ready.error;
|
|
127
|
+
}
|
|
121
128
|
}
|
|
122
|
-
|
|
123
129
|
if (!chromium) {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
try {
|
|
129
|
-
chromium = await importPlaywright();
|
|
130
|
-
} catch (err) {
|
|
131
|
-
importErr = err;
|
|
132
|
-
}
|
|
133
|
-
if (!chromium) {
|
|
134
|
-
const mod = ready.module || runtime.loadPlaywrightModule?.();
|
|
135
|
-
chromium = mod?.chromium ?? null;
|
|
136
|
-
}
|
|
137
|
-
} else if (ready.error) {
|
|
138
|
-
if (importErr) ready.error.cause = importErr;
|
|
139
|
-
throw ready.error;
|
|
140
|
-
}
|
|
130
|
+
try {
|
|
131
|
+
chromium = await importPlaywright();
|
|
132
|
+
} catch (err) {
|
|
133
|
+
importErr = err;
|
|
141
134
|
}
|
|
142
135
|
}
|
|
143
136
|
|
|
@@ -152,8 +145,11 @@ async function launchChromium({ proxyUrl, headless = true, windowSize = null } =
|
|
|
152
145
|
|
|
153
146
|
const width = windowSize?.width || (wantHeadless ? 1920 : 900);
|
|
154
147
|
const height = windowSize?.height || (wantHeadless ? 1080 : 700);
|
|
148
|
+
// Force bundled Chromium — never Google Chrome channel (/opt/google/chrome),
|
|
149
|
+
// which is missing on most VPS and caused "distribution 'chrome' is not found".
|
|
155
150
|
const options = {
|
|
156
151
|
headless: wantHeadless,
|
|
152
|
+
channel: undefined,
|
|
157
153
|
args: [
|
|
158
154
|
"--disable-blink-features=AutomationControlled",
|
|
159
155
|
"--disable-features=IsolateOrigins,site-per-process,AutomationControlled",
|
|
@@ -173,6 +169,14 @@ async function launchChromium({ proxyUrl, headless = true, windowSize = null } =
|
|
|
173
169
|
],
|
|
174
170
|
ignoreDefaultArgs: ["--enable-automation"],
|
|
175
171
|
};
|
|
172
|
+
// Explicit bundled Chromium path when it exists (avoids channel=chrome hijack)
|
|
173
|
+
try {
|
|
174
|
+
const { existsSync } = await import("node:fs");
|
|
175
|
+
const exePath = typeof chromium.executablePath === "function" ? chromium.executablePath() : null;
|
|
176
|
+
if (exePath && existsSync(exePath)) options.executablePath = exePath;
|
|
177
|
+
} catch {
|
|
178
|
+
// ignore
|
|
179
|
+
}
|
|
176
180
|
if (proxyUrl) {
|
|
177
181
|
const { parsePlaywrightProxy } = await import("./proxyUtils.js");
|
|
178
182
|
options.proxy = parsePlaywrightProxy(proxyUrl) || { server: proxyUrl };
|
|
@@ -188,6 +192,18 @@ async function launchChromium({ proxyUrl, headless = true, windowSize = null } =
|
|
|
188
192
|
const browser = await chromium.launch(options);
|
|
189
193
|
return wrapBrowserWithStealth(browser);
|
|
190
194
|
}
|
|
195
|
+
// Retry without executablePath if channel/chrome confusion remains
|
|
196
|
+
if (/distribution ['\"]chrome['\"]|Executable doesn't exist|chrome-headless-shell/i.test(msg)) {
|
|
197
|
+
try {
|
|
198
|
+
const retryOpts = { ...options };
|
|
199
|
+
delete retryOpts.channel;
|
|
200
|
+
delete retryOpts.executablePath;
|
|
201
|
+
const browser = await chromium.launch(retryOpts);
|
|
202
|
+
return wrapBrowserWithStealth(browser);
|
|
203
|
+
} catch {
|
|
204
|
+
// fall through
|
|
205
|
+
}
|
|
206
|
+
}
|
|
191
207
|
throw error;
|
|
192
208
|
}
|
|
193
209
|
}
|
|
@@ -830,23 +830,47 @@ export class KiroBulkImportManager {
|
|
|
830
830
|
if (!job) return readJsonFile(getJobFile(jobId, this.storageDir));
|
|
831
831
|
|
|
832
832
|
job.cancelRequested = true;
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
833
|
+
|
|
834
|
+
// Immediately terminalize ALL open accounts — including needs_manual.
|
|
835
|
+
// Previously cancel only flipped "queued" jobs and closed the browser, so
|
|
836
|
+
// needs_manual followups waited on a dead callback promise forever and the
|
|
837
|
+
// UI stayed "running" / Cancel did nothing.
|
|
838
|
+
for (const account of job.accounts || []) {
|
|
839
|
+
if (
|
|
840
|
+
account.status === "queued"
|
|
841
|
+
|| account.status === "running"
|
|
842
|
+
|| account.status === "needs_manual"
|
|
843
|
+
) {
|
|
844
|
+
const ms = account.manualSession;
|
|
845
|
+
const rs = account.runtimeSession;
|
|
846
|
+
const ctx = ms?.context || rs?.context || null;
|
|
847
|
+
const headed = ms?.headedBrowser || null;
|
|
848
|
+
if (ctx) void ctx.close().catch(() => null);
|
|
849
|
+
if (headed) void headed.close().catch(() => null);
|
|
850
|
+
account.manualSession = null;
|
|
851
|
+
account.runtimeSession = null;
|
|
852
|
+
this.finalizeAccount(account, "cancelled", {
|
|
853
|
+
error: "Job cancelled",
|
|
854
|
+
step: "cancelled",
|
|
855
|
+
message: "Job cancelled by user",
|
|
856
|
+
});
|
|
857
|
+
}
|
|
839
858
|
}
|
|
840
859
|
|
|
841
860
|
if (job.browser) {
|
|
842
861
|
const browser = job.browser;
|
|
843
862
|
job.browser = null;
|
|
844
|
-
// Prefer force-close: stuck proxy/nav can make browser.close() hang forever.
|
|
845
863
|
void import("./bulkImportBrowserEngine.js")
|
|
846
864
|
.then(({ forceCloseBrowser }) => forceCloseBrowser(browser))
|
|
847
865
|
.catch(() => browser.close().catch(() => null));
|
|
848
866
|
}
|
|
849
867
|
|
|
868
|
+
// Mark job cancelled immediately so UI unlocks; runJob finally still cleans up.
|
|
869
|
+
if (job.status === "queued" || job.status === "running") {
|
|
870
|
+
job.status = "cancelled";
|
|
871
|
+
job.finishedAt = job.finishedAt || nowIso();
|
|
872
|
+
}
|
|
873
|
+
|
|
850
874
|
void this.persistJobSnapshot(job, { forcePreview: true });
|
|
851
875
|
|
|
852
876
|
return sanitizeJob(job);
|
|
@@ -1173,7 +1197,11 @@ export class KiroBulkImportManager {
|
|
|
1173
1197
|
if (job.cancelRequested) {
|
|
1174
1198
|
job.status = "cancelled";
|
|
1175
1199
|
job.accounts.forEach((account) => {
|
|
1176
|
-
if (
|
|
1200
|
+
if (
|
|
1201
|
+
account.status === "queued"
|
|
1202
|
+
|| account.status === "running"
|
|
1203
|
+
|| account.status === "needs_manual"
|
|
1204
|
+
) {
|
|
1177
1205
|
this.finalizeAccount(account, "cancelled", {
|
|
1178
1206
|
error: "Job cancelled",
|
|
1179
1207
|
step: "cancelled",
|
|
@@ -1182,6 +1210,8 @@ export class KiroBulkImportManager {
|
|
|
1182
1210
|
}
|
|
1183
1211
|
});
|
|
1184
1212
|
} else {
|
|
1213
|
+
// If only needs_manual left and user never cancelled, still complete the job
|
|
1214
|
+
// once followups settle — do not leave status stuck on "running".
|
|
1185
1215
|
job.status = "completed";
|
|
1186
1216
|
}
|
|
1187
1217
|
await this.persistJobSnapshot(job, { forcePreview: true });
|
|
@@ -1222,12 +1222,17 @@ export function createKiroCallbackMonitor(context, page, timeoutMs = DEFAULT_MAN
|
|
|
1222
1222
|
const parsed = parseCallbackUrl(trackedPage.url?.() || "");
|
|
1223
1223
|
if (parsed) settle(parsed);
|
|
1224
1224
|
};
|
|
1225
|
+
const onClose = () => {
|
|
1226
|
+
// Cancel/force-close: unblock manual followup instead of hanging 15 min
|
|
1227
|
+
settle(null, new Error("Browser session closed while waiting for Kiro callback"));
|
|
1228
|
+
};
|
|
1225
1229
|
|
|
1226
1230
|
trackedPage.on("framenavigated", onFrame);
|
|
1227
1231
|
trackedPage.on("request", onRequest);
|
|
1228
1232
|
trackedPage.on("requestfailed", onRequestFailed);
|
|
1229
1233
|
trackedPage.on("domcontentloaded", onLoadState);
|
|
1230
1234
|
trackedPage.on("load", onLoadState);
|
|
1235
|
+
trackedPage.on("close", onClose);
|
|
1231
1236
|
|
|
1232
1237
|
ownerCleanups.push(() => {
|
|
1233
1238
|
trackedPage.off("framenavigated", onFrame);
|
|
@@ -1235,6 +1240,7 @@ export function createKiroCallbackMonitor(context, page, timeoutMs = DEFAULT_MAN
|
|
|
1235
1240
|
trackedPage.off("requestfailed", onRequestFailed);
|
|
1236
1241
|
trackedPage.off("domcontentloaded", onLoadState);
|
|
1237
1242
|
trackedPage.off("load", onLoadState);
|
|
1243
|
+
trackedPage.off("close", onClose);
|
|
1238
1244
|
});
|
|
1239
1245
|
|
|
1240
1246
|
const current = parseCallbackUrl(trackedPage.url?.() || "");
|
|
@@ -1248,8 +1254,13 @@ export function createKiroCallbackMonitor(context, page, timeoutMs = DEFAULT_MAN
|
|
|
1248
1254
|
contextCleanups.set(ctx, cleanups);
|
|
1249
1255
|
|
|
1250
1256
|
const onPage = (newPage) => registerPage(newPage, cleanups);
|
|
1257
|
+
const onClose = () => {
|
|
1258
|
+
settle(null, new Error("Browser context closed while waiting for Kiro callback"));
|
|
1259
|
+
};
|
|
1251
1260
|
ctx.on("page", onPage);
|
|
1261
|
+
ctx.on("close", onClose);
|
|
1252
1262
|
cleanups.push(() => ctx.off("page", onPage));
|
|
1263
|
+
cleanups.push(() => ctx.off("close", onClose));
|
|
1253
1264
|
|
|
1254
1265
|
if (pg) registerPage(pg, cleanups);
|
|
1255
1266
|
}
|
|
@@ -1260,6 +1271,11 @@ export function createKiroCallbackMonitor(context, page, timeoutMs = DEFAULT_MAN
|
|
|
1260
1271
|
if (newContext) bind(newContext, newPage);
|
|
1261
1272
|
};
|
|
1262
1273
|
|
|
1274
|
+
// Allow cancel path to force-reject without waiting for timeout
|
|
1275
|
+
promise.abort = (reason = "Job cancelled") => {
|
|
1276
|
+
settle(null, new Error(reason));
|
|
1277
|
+
};
|
|
1278
|
+
|
|
1263
1279
|
return promise;
|
|
1264
1280
|
}
|
|
1265
1281
|
|
|
File without changes
|
|
File without changes
|