zevairouter 1.0.147 → 1.0.149
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 +19 -0
- package/cli/app/.next-cli-build/BUILD_ID +1 -1
- package/cli/app/.next-cli-build/app-path-routes-manifest.json +10 -10
- 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/providers/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/callback.html +1 -1
- package/cli/app/.next-cli-build/server/app/callback.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/index.html +1 -1
- package/cli/app/.next-cli-build/server/app/index.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/landing.html +1 -1
- package/cli/app/.next-cli-build/server/app/landing.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
- 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 +2 -2
- 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 +10 -10
- package/cli/app/.next-cli-build/server/chunks/3155.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/4566.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/5307.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/5949.js +3 -3
- package/cli/app/.next-cli-build/server/chunks/8306.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/8371.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/9621.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/{620-375754e53341e85b.js → 620-104e711e028e5a60.js} +1 -1
- package/cli/app/CHANGELOG.md +19 -0
- package/cli/app/cli/hooks/cloakbrowserRuntime.js +111 -4
- package/cli/app/package.json +1 -1
- package/cli/hooks/cloakbrowserRuntime.js +111 -4
- package/cli/package.json +1 -1
- package/package.json +1 -1
- package/src/lib/oauth/services/bulkImportBrowserEngine.js +36 -0
- package/src/lib/oauth/services/codebuddyCnBulkImportManager.js +603 -181
- package/src/lib/oauth/services/codebuddyCnPhoneAutomation.js +97 -47
- package/src/lib/oauth/services/kiroBulkImportManager.js +7 -1
- /package/cli/app/.next-cli-build/static/{y-U4C09T7DItXT7CZZV41 → w0fFe0wlenV7JedZI_N94}/_buildManifest.js +0 -0
- /package/cli/app/.next-cli-build/static/{y-U4C09T7DItXT7CZZV41 → w0fFe0wlenV7JedZI_N94}/_ssgManifest.js +0 -0
package/cli/app/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,22 @@
|
|
|
1
|
+
# v1.0.149 (2026-07-27)
|
|
2
|
+
|
|
3
|
+
## Fixes
|
|
4
|
+
- **Accurate CodeBuddy CN restriction detection**: post-OTP sessions that retain Tencent's `login_risk_state` and repeatedly resolve to Keycloak login are now reported as `failed_restricted` instead of a generic API-key capture failure.
|
|
5
|
+
- **CORS-independent console probing**: account-session checks prefer the browser context request API, preserving cookies, redirect URLs, response status, and login HTML even when in-page fetch is blocked or collapses to HTTP 0.
|
|
6
|
+
- **Safe restricted-account termination**: confirmed restrictions stop OTP resubmission and skip API-key/manual fallback, while summaries count the terminal result correctly and browser resources close immediately.
|
|
7
|
+
|
|
8
|
+
# v1.0.148 (2026-07-27)
|
|
9
|
+
|
|
10
|
+
## Fixes
|
|
11
|
+
- **Bounded CodeBuddy CN automation**: browser launch, context creation, console navigation, session probes, API-key requests, manual fallback, resource cleanup, and 5sim settlement can no longer hold a VPS worker indefinitely.
|
|
12
|
+
- **Safe console-session recovery**: login HTML returned with HTTP 200 is rejected as an unauthenticated session, destructive `/login` re-entry is avoided, and OIDC/API retry budgets are shorter and explicit.
|
|
13
|
+
- **Duplicate-key protection**: timed-out or response-less API-key creation is treated as an unknown outcome, stops automatic POST retries, and asks the operator to check existing keys first.
|
|
14
|
+
- **CloakBrowser runtime compatibility**: stale runtime installs are detected by semantic version and upgraded to the supported `0.5.2` series before automation starts.
|
|
15
|
+
|
|
16
|
+
## Improvements
|
|
17
|
+
- **Lower VPS browser pressure**: low-memory hosts use bounded viewport/DPR fingerprints and skip trackers, media, and non-captcha imagery while preserving challenge resources.
|
|
18
|
+
- **Visible long-request progress**: API-key creation emits a five-second heartbeat so slow CodeBuddy responses remain distinguishable from a frozen job.
|
|
19
|
+
|
|
1
20
|
# v1.0.147 (2026-07-27)
|
|
2
21
|
|
|
3
22
|
## Fixes
|
|
@@ -39,6 +39,91 @@ function hasPackage(name) {
|
|
|
39
39
|
return fs.existsSync(path.join(getRuntimeNodeModules(), name, "package.json"));
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
+
function parseSemver(value) {
|
|
43
|
+
const match = String(value || "").trim().match(
|
|
44
|
+
/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/
|
|
45
|
+
);
|
|
46
|
+
if (!match) return null;
|
|
47
|
+
return {
|
|
48
|
+
major: Number.parseInt(match[1], 10),
|
|
49
|
+
minor: Number.parseInt(match[2], 10),
|
|
50
|
+
patch: Number.parseInt(match[3], 10),
|
|
51
|
+
prerelease: match[4] ? match[4].split(".") : [],
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function comparePrerelease(left, right) {
|
|
56
|
+
if (left.length === 0 && right.length === 0) return 0;
|
|
57
|
+
if (left.length === 0) return 1;
|
|
58
|
+
if (right.length === 0) return -1;
|
|
59
|
+
|
|
60
|
+
const count = Math.max(left.length, right.length);
|
|
61
|
+
for (let i = 0; i < count; i += 1) {
|
|
62
|
+
if (left[i] === undefined) return -1;
|
|
63
|
+
if (right[i] === undefined) return 1;
|
|
64
|
+
if (left[i] === right[i]) continue;
|
|
65
|
+
|
|
66
|
+
const leftNumeric = /^\d+$/.test(left[i]);
|
|
67
|
+
const rightNumeric = /^\d+$/.test(right[i]);
|
|
68
|
+
if (leftNumeric && rightNumeric) {
|
|
69
|
+
return Number.parseInt(left[i], 10) < Number.parseInt(right[i], 10) ? -1 : 1;
|
|
70
|
+
}
|
|
71
|
+
if (leftNumeric !== rightNumeric) return leftNumeric ? -1 : 1;
|
|
72
|
+
return left[i] < right[i] ? -1 : 1;
|
|
73
|
+
}
|
|
74
|
+
return 0;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function compareSemver(left, right) {
|
|
78
|
+
for (const key of ["major", "minor", "patch"]) {
|
|
79
|
+
if (left[key] !== right[key]) return left[key] < right[key] ? -1 : 1;
|
|
80
|
+
}
|
|
81
|
+
return comparePrerelease(left.prerelease, right.prerelease);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function satisfiesCaretRange(version, range) {
|
|
85
|
+
const installed = parseSemver(version);
|
|
86
|
+
const rangeMatch = String(range || "").trim().match(/^\^\s*(.+)$/);
|
|
87
|
+
const minimum = parseSemver(rangeMatch?.[1]);
|
|
88
|
+
if (!installed || !minimum) return false;
|
|
89
|
+
|
|
90
|
+
// Stable runtime requirements must never accept a prerelease implicitly.
|
|
91
|
+
if (installed.prerelease.length > 0 && minimum.prerelease.length === 0) return false;
|
|
92
|
+
|
|
93
|
+
let upper;
|
|
94
|
+
if (minimum.major > 0) {
|
|
95
|
+
upper = { major: minimum.major + 1, minor: 0, patch: 0, prerelease: [] };
|
|
96
|
+
} else if (minimum.minor > 0) {
|
|
97
|
+
upper = { major: 0, minor: minimum.minor + 1, patch: 0, prerelease: [] };
|
|
98
|
+
} else {
|
|
99
|
+
upper = { major: 0, minor: 0, patch: minimum.patch + 1, prerelease: [] };
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return compareSemver(installed, minimum) >= 0 && compareSemver(installed, upper) < 0;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
function getRuntimePackageVersion(name) {
|
|
106
|
+
try {
|
|
107
|
+
const packageJson = JSON.parse(
|
|
108
|
+
fs.readFileSync(path.join(getRuntimeNodeModules(), name, "package.json"), "utf8")
|
|
109
|
+
);
|
|
110
|
+
return typeof packageJson.version === "string" ? packageJson.version : null;
|
|
111
|
+
} catch {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
function isCloakbrowserRuntimeCompatible(mod, installedVersion) {
|
|
117
|
+
return !!mod?.launch && satisfiesCaretRange(installedVersion, CLOAKBROWSER_VERSION);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
function clearRuntimePackageCache(name) {
|
|
121
|
+
const packageRoot = `${path.join(getRuntimeNodeModules(), name)}${path.sep}`;
|
|
122
|
+
for (const modulePath of Object.keys(require.cache)) {
|
|
123
|
+
if (modulePath.startsWith(packageRoot)) delete require.cache[modulePath];
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
42
127
|
function tryRequireCloakbrowser() {
|
|
43
128
|
try {
|
|
44
129
|
const rreq = getRuntimeRequire();
|
|
@@ -83,7 +168,13 @@ function loadCloakbrowserModule() {
|
|
|
83
168
|
* playwright-core is the drive peer (no stock Chromium binary download).
|
|
84
169
|
*/
|
|
85
170
|
function ensureCloakbrowserRuntime({ silent = false } = {}) {
|
|
86
|
-
|
|
171
|
+
let installedCloakVersion = getRuntimePackageVersion(CLOAKBROWSER_PACKAGE);
|
|
172
|
+
if (
|
|
173
|
+
cachedReady?.ok
|
|
174
|
+
&& isCloakbrowserRuntimeCompatible(cachedReady.module, installedCloakVersion)
|
|
175
|
+
&& tryRequireMmdb()
|
|
176
|
+
&& hasPackage(PLAYWRIGHT_CORE_PACKAGE)
|
|
177
|
+
) {
|
|
87
178
|
return cachedReady;
|
|
88
179
|
}
|
|
89
180
|
|
|
@@ -94,7 +185,6 @@ function ensureCloakbrowserRuntime({ silent = false } = {}) {
|
|
|
94
185
|
process.env.NODE_PATH = env.NODE_PATH;
|
|
95
186
|
// Re-init module paths for already-running process
|
|
96
187
|
try {
|
|
97
|
-
// eslint-disable-next-line no-underscore-dangle
|
|
98
188
|
require("module").Module._initPaths();
|
|
99
189
|
} catch {
|
|
100
190
|
/* ignore */
|
|
@@ -105,7 +195,7 @@ function ensureCloakbrowserRuntime({ silent = false } = {}) {
|
|
|
105
195
|
}
|
|
106
196
|
|
|
107
197
|
let mod = tryRequireCloakbrowser();
|
|
108
|
-
const needCloak = !mod
|
|
198
|
+
const needCloak = !isCloakbrowserRuntimeCompatible(mod, installedCloakVersion);
|
|
109
199
|
const needMmdb = !tryRequireMmdb() && !hasPackage(MMDB_PACKAGE);
|
|
110
200
|
const needPwCore = !hasPackage(PLAYWRIGHT_CORE_PACKAGE);
|
|
111
201
|
|
|
@@ -133,9 +223,12 @@ function ensureCloakbrowserRuntime({ silent = false } = {}) {
|
|
|
133
223
|
err.code = "CLOAKBROWSER_INSTALL_FAILED";
|
|
134
224
|
return { ok: false, error: err };
|
|
135
225
|
}
|
|
226
|
+
|
|
227
|
+
if (needCloak) clearRuntimePackageCache(CLOAKBROWSER_PACKAGE);
|
|
136
228
|
}
|
|
137
229
|
|
|
138
230
|
mod = tryRequireCloakbrowser();
|
|
231
|
+
installedCloakVersion = getRuntimePackageVersion(CLOAKBROWSER_PACKAGE);
|
|
139
232
|
if (!mod?.launch) {
|
|
140
233
|
const err = new Error(
|
|
141
234
|
`cloakbrowser installed but launch() is missing. Reinstall: cd "${getRuntimeDir()}" && npm install ${CLOAKBROWSER_PACKAGE}@${CLOAKBROWSER_VERSION} ${MMDB_PACKAGE}@${MMDB_VERSION} ${PLAYWRIGHT_CORE_PACKAGE}@${PLAYWRIGHT_CORE_VERSION}`
|
|
@@ -144,6 +237,14 @@ function ensureCloakbrowserRuntime({ silent = false } = {}) {
|
|
|
144
237
|
return { ok: false, error: err };
|
|
145
238
|
}
|
|
146
239
|
|
|
240
|
+
if (!satisfiesCaretRange(installedCloakVersion, CLOAKBROWSER_VERSION)) {
|
|
241
|
+
const err = new Error(
|
|
242
|
+
`cloakbrowser version mismatch: installed ${installedCloakVersion || "unknown"}, required ${CLOAKBROWSER_VERSION}. Reinstall: cd "${getRuntimeDir()}" && npm install ${CLOAKBROWSER_PACKAGE}@${CLOAKBROWSER_VERSION}`
|
|
243
|
+
);
|
|
244
|
+
err.code = "CLOAKBROWSER_VERSION_MISMATCH";
|
|
245
|
+
return { ok: false, error: err };
|
|
246
|
+
}
|
|
247
|
+
|
|
147
248
|
if (!tryRequireMmdb() && !hasPackage(MMDB_PACKAGE)) {
|
|
148
249
|
const err = new Error(
|
|
149
250
|
`mmdb-lib is required for geoip: true. Install: cd "${getRuntimeDir()}" && npm install ${MMDB_PACKAGE}@${MMDB_VERSION}`
|
|
@@ -152,7 +253,7 @@ function ensureCloakbrowserRuntime({ silent = false } = {}) {
|
|
|
152
253
|
return { ok: false, error: err };
|
|
153
254
|
}
|
|
154
255
|
|
|
155
|
-
cachedReady = { ok: true, module: mod };
|
|
256
|
+
cachedReady = { ok: true, module: mod, version: installedCloakVersion };
|
|
156
257
|
return cachedReady;
|
|
157
258
|
}
|
|
158
259
|
|
|
@@ -165,4 +266,10 @@ module.exports = {
|
|
|
165
266
|
MMDB_VERSION,
|
|
166
267
|
PLAYWRIGHT_CORE_PACKAGE,
|
|
167
268
|
PLAYWRIGHT_CORE_VERSION,
|
|
269
|
+
__test__: {
|
|
270
|
+
parseSemver,
|
|
271
|
+
compareSemver,
|
|
272
|
+
satisfiesCaretRange,
|
|
273
|
+
isCloakbrowserRuntimeCompatible,
|
|
274
|
+
},
|
|
168
275
|
};
|
package/cli/app/package.json
CHANGED
|
@@ -39,6 +39,91 @@ function hasPackage(name) {
|
|
|
39
39
|
return fs.existsSync(path.join(getRuntimeNodeModules(), name, "package.json"));
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
+
function parseSemver(value) {
|
|
43
|
+
const match = String(value || "").trim().match(
|
|
44
|
+
/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/
|
|
45
|
+
);
|
|
46
|
+
if (!match) return null;
|
|
47
|
+
return {
|
|
48
|
+
major: Number.parseInt(match[1], 10),
|
|
49
|
+
minor: Number.parseInt(match[2], 10),
|
|
50
|
+
patch: Number.parseInt(match[3], 10),
|
|
51
|
+
prerelease: match[4] ? match[4].split(".") : [],
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function comparePrerelease(left, right) {
|
|
56
|
+
if (left.length === 0 && right.length === 0) return 0;
|
|
57
|
+
if (left.length === 0) return 1;
|
|
58
|
+
if (right.length === 0) return -1;
|
|
59
|
+
|
|
60
|
+
const count = Math.max(left.length, right.length);
|
|
61
|
+
for (let i = 0; i < count; i += 1) {
|
|
62
|
+
if (left[i] === undefined) return -1;
|
|
63
|
+
if (right[i] === undefined) return 1;
|
|
64
|
+
if (left[i] === right[i]) continue;
|
|
65
|
+
|
|
66
|
+
const leftNumeric = /^\d+$/.test(left[i]);
|
|
67
|
+
const rightNumeric = /^\d+$/.test(right[i]);
|
|
68
|
+
if (leftNumeric && rightNumeric) {
|
|
69
|
+
return Number.parseInt(left[i], 10) < Number.parseInt(right[i], 10) ? -1 : 1;
|
|
70
|
+
}
|
|
71
|
+
if (leftNumeric !== rightNumeric) return leftNumeric ? -1 : 1;
|
|
72
|
+
return left[i] < right[i] ? -1 : 1;
|
|
73
|
+
}
|
|
74
|
+
return 0;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function compareSemver(left, right) {
|
|
78
|
+
for (const key of ["major", "minor", "patch"]) {
|
|
79
|
+
if (left[key] !== right[key]) return left[key] < right[key] ? -1 : 1;
|
|
80
|
+
}
|
|
81
|
+
return comparePrerelease(left.prerelease, right.prerelease);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function satisfiesCaretRange(version, range) {
|
|
85
|
+
const installed = parseSemver(version);
|
|
86
|
+
const rangeMatch = String(range || "").trim().match(/^\^\s*(.+)$/);
|
|
87
|
+
const minimum = parseSemver(rangeMatch?.[1]);
|
|
88
|
+
if (!installed || !minimum) return false;
|
|
89
|
+
|
|
90
|
+
// Stable runtime requirements must never accept a prerelease implicitly.
|
|
91
|
+
if (installed.prerelease.length > 0 && minimum.prerelease.length === 0) return false;
|
|
92
|
+
|
|
93
|
+
let upper;
|
|
94
|
+
if (minimum.major > 0) {
|
|
95
|
+
upper = { major: minimum.major + 1, minor: 0, patch: 0, prerelease: [] };
|
|
96
|
+
} else if (minimum.minor > 0) {
|
|
97
|
+
upper = { major: 0, minor: minimum.minor + 1, patch: 0, prerelease: [] };
|
|
98
|
+
} else {
|
|
99
|
+
upper = { major: 0, minor: 0, patch: minimum.patch + 1, prerelease: [] };
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return compareSemver(installed, minimum) >= 0 && compareSemver(installed, upper) < 0;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
function getRuntimePackageVersion(name) {
|
|
106
|
+
try {
|
|
107
|
+
const packageJson = JSON.parse(
|
|
108
|
+
fs.readFileSync(path.join(getRuntimeNodeModules(), name, "package.json"), "utf8")
|
|
109
|
+
);
|
|
110
|
+
return typeof packageJson.version === "string" ? packageJson.version : null;
|
|
111
|
+
} catch {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
function isCloakbrowserRuntimeCompatible(mod, installedVersion) {
|
|
117
|
+
return !!mod?.launch && satisfiesCaretRange(installedVersion, CLOAKBROWSER_VERSION);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
function clearRuntimePackageCache(name) {
|
|
121
|
+
const packageRoot = `${path.join(getRuntimeNodeModules(), name)}${path.sep}`;
|
|
122
|
+
for (const modulePath of Object.keys(require.cache)) {
|
|
123
|
+
if (modulePath.startsWith(packageRoot)) delete require.cache[modulePath];
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
42
127
|
function tryRequireCloakbrowser() {
|
|
43
128
|
try {
|
|
44
129
|
const rreq = getRuntimeRequire();
|
|
@@ -83,7 +168,13 @@ function loadCloakbrowserModule() {
|
|
|
83
168
|
* playwright-core is the drive peer (no stock Chromium binary download).
|
|
84
169
|
*/
|
|
85
170
|
function ensureCloakbrowserRuntime({ silent = false } = {}) {
|
|
86
|
-
|
|
171
|
+
let installedCloakVersion = getRuntimePackageVersion(CLOAKBROWSER_PACKAGE);
|
|
172
|
+
if (
|
|
173
|
+
cachedReady?.ok
|
|
174
|
+
&& isCloakbrowserRuntimeCompatible(cachedReady.module, installedCloakVersion)
|
|
175
|
+
&& tryRequireMmdb()
|
|
176
|
+
&& hasPackage(PLAYWRIGHT_CORE_PACKAGE)
|
|
177
|
+
) {
|
|
87
178
|
return cachedReady;
|
|
88
179
|
}
|
|
89
180
|
|
|
@@ -94,7 +185,6 @@ function ensureCloakbrowserRuntime({ silent = false } = {}) {
|
|
|
94
185
|
process.env.NODE_PATH = env.NODE_PATH;
|
|
95
186
|
// Re-init module paths for already-running process
|
|
96
187
|
try {
|
|
97
|
-
// eslint-disable-next-line no-underscore-dangle
|
|
98
188
|
require("module").Module._initPaths();
|
|
99
189
|
} catch {
|
|
100
190
|
/* ignore */
|
|
@@ -105,7 +195,7 @@ function ensureCloakbrowserRuntime({ silent = false } = {}) {
|
|
|
105
195
|
}
|
|
106
196
|
|
|
107
197
|
let mod = tryRequireCloakbrowser();
|
|
108
|
-
const needCloak = !mod
|
|
198
|
+
const needCloak = !isCloakbrowserRuntimeCompatible(mod, installedCloakVersion);
|
|
109
199
|
const needMmdb = !tryRequireMmdb() && !hasPackage(MMDB_PACKAGE);
|
|
110
200
|
const needPwCore = !hasPackage(PLAYWRIGHT_CORE_PACKAGE);
|
|
111
201
|
|
|
@@ -133,9 +223,12 @@ function ensureCloakbrowserRuntime({ silent = false } = {}) {
|
|
|
133
223
|
err.code = "CLOAKBROWSER_INSTALL_FAILED";
|
|
134
224
|
return { ok: false, error: err };
|
|
135
225
|
}
|
|
226
|
+
|
|
227
|
+
if (needCloak) clearRuntimePackageCache(CLOAKBROWSER_PACKAGE);
|
|
136
228
|
}
|
|
137
229
|
|
|
138
230
|
mod = tryRequireCloakbrowser();
|
|
231
|
+
installedCloakVersion = getRuntimePackageVersion(CLOAKBROWSER_PACKAGE);
|
|
139
232
|
if (!mod?.launch) {
|
|
140
233
|
const err = new Error(
|
|
141
234
|
`cloakbrowser installed but launch() is missing. Reinstall: cd "${getRuntimeDir()}" && npm install ${CLOAKBROWSER_PACKAGE}@${CLOAKBROWSER_VERSION} ${MMDB_PACKAGE}@${MMDB_VERSION} ${PLAYWRIGHT_CORE_PACKAGE}@${PLAYWRIGHT_CORE_VERSION}`
|
|
@@ -144,6 +237,14 @@ function ensureCloakbrowserRuntime({ silent = false } = {}) {
|
|
|
144
237
|
return { ok: false, error: err };
|
|
145
238
|
}
|
|
146
239
|
|
|
240
|
+
if (!satisfiesCaretRange(installedCloakVersion, CLOAKBROWSER_VERSION)) {
|
|
241
|
+
const err = new Error(
|
|
242
|
+
`cloakbrowser version mismatch: installed ${installedCloakVersion || "unknown"}, required ${CLOAKBROWSER_VERSION}. Reinstall: cd "${getRuntimeDir()}" && npm install ${CLOAKBROWSER_PACKAGE}@${CLOAKBROWSER_VERSION}`
|
|
243
|
+
);
|
|
244
|
+
err.code = "CLOAKBROWSER_VERSION_MISMATCH";
|
|
245
|
+
return { ok: false, error: err };
|
|
246
|
+
}
|
|
247
|
+
|
|
147
248
|
if (!tryRequireMmdb() && !hasPackage(MMDB_PACKAGE)) {
|
|
148
249
|
const err = new Error(
|
|
149
250
|
`mmdb-lib is required for geoip: true. Install: cd "${getRuntimeDir()}" && npm install ${MMDB_PACKAGE}@${MMDB_VERSION}`
|
|
@@ -152,7 +253,7 @@ function ensureCloakbrowserRuntime({ silent = false } = {}) {
|
|
|
152
253
|
return { ok: false, error: err };
|
|
153
254
|
}
|
|
154
255
|
|
|
155
|
-
cachedReady = { ok: true, module: mod };
|
|
256
|
+
cachedReady = { ok: true, module: mod, version: installedCloakVersion };
|
|
156
257
|
return cachedReady;
|
|
157
258
|
}
|
|
158
259
|
|
|
@@ -165,4 +266,10 @@ module.exports = {
|
|
|
165
266
|
MMDB_VERSION,
|
|
166
267
|
PLAYWRIGHT_CORE_PACKAGE,
|
|
167
268
|
PLAYWRIGHT_CORE_VERSION,
|
|
269
|
+
__test__: {
|
|
270
|
+
parseSemver,
|
|
271
|
+
compareSemver,
|
|
272
|
+
satisfiesCaretRange,
|
|
273
|
+
isCloakbrowserRuntimeCompatible,
|
|
274
|
+
},
|
|
168
275
|
};
|
package/cli/package.json
CHANGED
package/package.json
CHANGED
|
@@ -94,6 +94,42 @@ export function buildAccountFingerprint(seed) {
|
|
|
94
94
|
};
|
|
95
95
|
}
|
|
96
96
|
|
|
97
|
+
/**
|
|
98
|
+
* Keep stealth dimensions internally consistent while bounding renderer cost on
|
|
99
|
+
* memory-constrained VPS hosts. Large DPR + 1440p fingerprints can consume most
|
|
100
|
+
* of a 2GB server before the login SPA finishes booting.
|
|
101
|
+
*/
|
|
102
|
+
export function compactAccountFingerprint(
|
|
103
|
+
fingerprint,
|
|
104
|
+
{ maxWidth = 1280, maxHeight = 800, maxDeviceScaleFactor = 1.25 } = {},
|
|
105
|
+
) {
|
|
106
|
+
if (!fingerprint || typeof fingerprint !== "object") return fingerprint;
|
|
107
|
+
|
|
108
|
+
const viewport = fingerprint.viewport || {};
|
|
109
|
+
const screen = fingerprint.screen || {};
|
|
110
|
+
const width = Math.min(Number(viewport.width) || maxWidth, maxWidth);
|
|
111
|
+
const height = Math.min(Number(viewport.height) || maxHeight, maxHeight);
|
|
112
|
+
const originalScreenHeight = Number(screen.height) || height;
|
|
113
|
+
const originalAvailHeight = Number(screen.availHeight) || originalScreenHeight;
|
|
114
|
+
const taskbarHeight = Math.max(0, originalScreenHeight - originalAvailHeight);
|
|
115
|
+
|
|
116
|
+
return {
|
|
117
|
+
...fingerprint,
|
|
118
|
+
viewport: { width, height },
|
|
119
|
+
deviceScaleFactor: Math.min(
|
|
120
|
+
Number(fingerprint.deviceScaleFactor) || 1,
|
|
121
|
+
maxDeviceScaleFactor,
|
|
122
|
+
),
|
|
123
|
+
screen: {
|
|
124
|
+
...screen,
|
|
125
|
+
width,
|
|
126
|
+
height,
|
|
127
|
+
availWidth: width,
|
|
128
|
+
availHeight: Math.max(0, height - Math.min(taskbarHeight, 48)),
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
|
|
97
133
|
/**
|
|
98
134
|
* Light init script for per-account HW/screen noise.
|
|
99
135
|
* Avoids webdriver/WebGL patches that conflict with CloakBrowser binary stealth.
|