zevairouter 1.0.33 → 1.0.35
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 +51 -0
- package/cli/app/.next-cli-build/BUILD_ID +1 -1
- package/cli/app/.next-cli-build/app-path-routes-manifest.json +1 -1
- 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/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/quota/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/init/route.js +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/oauth/[provider]/[action]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/cancel/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/latest/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/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/client/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/translator/send/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/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/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/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/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 +1 -1
- package/cli/app/.next-cli-build/server/chunks/1396.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/1939.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/3110.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 +1 -1
- package/cli/app/.next-cli-build/server/chunks/6896.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/7153.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/8242.js +2 -2
- package/cli/app/.next-cli-build/server/chunks/8590.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/8895.js +7 -1
- package/cli/app/.next-cli-build/server/chunks/891.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/9326.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/9489.js +1 -1
- package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/middleware.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/{1321-6c12abb13c279b74.js → 1321-003c18d34f8bf26a.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/523-9807fa9a0746de61.js +3 -0
- package/cli/app/package.json +1 -1
- package/cli/app/src/lib/oauth/services/bulkImportBrowserEngine.js +17 -2
- package/cli/package.json +1 -1
- package/open-sse/handlers/chatCore.js +8 -1
- package/open-sse/rtk/ponytail.js +91 -0
- package/open-sse/rtk/ponytailPrompts.js +44 -0
- package/open-sse/utils/proxyFetch.js +3 -2
- package/package.json +1 -1
- package/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js +67 -0
- package/src/lib/db/repos/settingsRepo.js +2 -0
- package/src/lib/oauth/services/bulkImportBrowserEngine.js +17 -2
- package/src/lib/oauth/services/kiroGoogleAutomation.js +20 -12
- package/src/sse/handlers/chat.js +2 -0
- package/cli/app/.next-cli-build/static/chunks/523-afe352c06592ae73.js +0 -3
- /package/cli/app/.next-cli-build/static/{f1u5fynk7pHdbkB9PVUND → FGw-I-CGGpfd2854oBF1w}/_buildManifest.js +0 -0
- /package/cli/app/.next-cli-build/static/{f1u5fynk7pHdbkB9PVUND → FGw-I-CGGpfd2854oBF1w}/_ssgManifest.js +0 -0
|
@@ -52,7 +52,13 @@ ${e.length} files in ${g.length} dirs:
|
|
|
52
52
|
`,b.slice(0,10)))h+=` ${c}
|
|
53
53
|
`;b.length>10&&(h+=` +${b.length-10}
|
|
54
54
|
`),h+="\n"}return g.length>20&&(h+=`+${g.length-20} more dirs
|
|
55
|
-
`),h.replace(/\n+$/,"")}r.filterName="search-list";let s=/^Result of search in '[^']*' \(total (\d+) files?\):/,t=/^diff --git /m,u=/^@@ /m,v=/^On branch |^nothing to commit|^Changes (not |to be )|^Untracked files:/m,w=/^[ MADRCU?!][ MADRCU?!] \S/m,x=/^(npm (warn|error|ERR!)|yarn (warn|error)|\s*Compiling\s+\S+|\s*Downloading\s+\S+|added \d+ package|\[ERROR\]|BUILD (SUCCESS|FAILED)|\s*Finished\s+|Successfully (installed|built)|ERROR:)/im,y=/[├└]──|│ /,z=/^[-dlbcps][rwx-]{9}/m,A=/^total \d+$/m;function B(a){let b=a.indexOf(":");if(-1===b)return!1;let c=a.indexOf(":",b+1);if(-1===c)return!1;let d=a.slice(b+1,c);return/^\d+$/.test(d)}function C(a){let b=a.trim();return!(0===b.length||b.includes(":"))&&(b.startsWith(".")||b.startsWith("/")||b.includes("/"))}function D(a,b){if(!b||!a)return null;if(a.conversationState){var c=a;let b={bytesBefore:0,bytesAfter:0,hits:[]};try{let a=c.conversationState,d=[...Array.isArray(a?.history)?a.history:[]];for(let c of(a?.currentMessage&&d.push(a.currentMessage),d)){let a=c?.userInputMessage?.userInputMessageContext?.toolResults;if(Array.isArray(a)){for(let c of a)if("error"!==c.status&&Array.isArray(c.content))for(let a of c.content)a&&"string"==typeof a.text&&(a.text=E(a.text,b,"kiro-tool-result"))}}}catch(a){return console.warn("[RTK] compressKiroFormat error:",a.message),null}return b}let d=Array.isArray(a.messages)?a.messages:Array.isArray(a.input)?a.input:null;if(!d)return null;let e={bytesBefore:0,bytesAfter:0,hits:[]};try{for(let a=0;a<d.length;a++){let b=d[a];if(b){if("function_call_output"===b.type){if("string"==typeof b.output)b.output=E(b.output,e,"openai-responses-string");else if(Array.isArray(b.output))for(let a=0;a<b.output.length;a++){let c=b.output[a];c&&"input_text"===c.type&&"string"==typeof c.text&&(c.text=E(c.text,e,"openai-responses-array"))}continue}if("tool"===b.role&&"string"==typeof b.content){b.content=E(b.content,e,"openai-tool");continue}if(Array.isArray(b.content)){if("tool"===b.role){for(let a=0;a<b.content.length;a++){let c=b.content[a];c&&"text"===c.type&&"string"==typeof c.text&&(c.text=E(c.text,e,"openai-tool-array"))}continue}for(let a=0;a<b.content.length;a++){let c=b.content[a];if(c&&"tool_result"===c.type&&!0!==c.is_error){if("string"==typeof c.content)c.content=E(c.content,e,"claude-string");else if(Array.isArray(c.content))for(let a=0;a<c.content.length;a++){let b=c.content[a];b&&"text"===b.type&&"string"==typeof b.text&&(b.text=E(b.text,e,"claude-array"))}}}}}}}catch(a){return console.warn("[RTK] compressMessages error:",a.message),null}return e}function E(a,b,c){let d=a.length;if(b.bytesBefore+=d,d<500||d>0xa00000)return b.bytesAfter+=d,a;let g=function(a){var b,c;let d,g,l=a.length>1024?a.slice(0,1024):a;if(t.test(l)||u.test(l))return e;if(v.test(l))return f;if(x.test(l))return h;if(!((d=l.split("\n").filter(a=>a.trim())).length<3)&&d.filter(a=>w.test(a)).length/d.length>=.6)return f;let D=l.split("\n"),E=D.filter(a=>a.trim().length>0);return E.slice(0,5).some(B)?i:E.length>=3&&E.every(C)?j:y.test(l)?n:A.test(l)||(b=l,g=new RegExp((c=z).source,c.flags.includes("g")?c.flags:c.flags+"g"),(b.match(g)||[]).length>=3)?m:s.test(l)?r:D.length>=250&&function(a){let b=0,c=0;for(let d of a.slice(0,100))0!==d.length&&(c++,q.test(d)&&b++);return!(c<5)&&b/c>=.7}(D)?p:E.length>=5?k:a.split("\n").length>=250?o:null}(a);if(!g)return b.bytesAfter+=d,a;let l=function(a,b){if("function"!=typeof a)return b;try{let c=a(b);if("string"!=typeof c)return b;return c}catch(d){let c=a.filterName||a.name||"anonymous";return console.warn(`[rtk] warning: filter '${c}' panicked — passing through raw output: ${d?.message||d}`),b}}(g,a);return!l||0===l.length||l.length>=d?(b.bytesAfter+=d,a):(b.bytesAfter+=l.length,b.hits.push({shape:c,filter:g.filterName||g.name,saved:d-l.length}),l)}function F(a){if(!a||!a.hits||0===a.hits.length)return null;let b=a.bytesBefore-a.bytesAfter,c=a.bytesBefore>0?(b/a.bytesBefore*100).toFixed(1):"0",d=Array.from(new Set(a.hits.map(a=>a.filter))).join(",");return`[RTK] saved ${b}B / ${a.bytesBefore}B (${c}%) via [${d}] hits=${a.hits.length}`}},81626:(a,b,c)=>{function d(a,b){let c;if(!a.trim())return;let d=a.match(/^event:\s*(.+)$/m),e=a.match(/^data:\s*(.+)$/m);if(!d||!e)return;let f=d[1].trim(),g=e[1].trim();if("[DONE]"!==g){try{c=JSON.parse(g)}catch{return}"response.created"===f?(b.responseId=c.response?.id||b.responseId,b.created=c.response?.created_at||b.created):"response.output_item.done"===f?b.items.set(c.output_index??0,c.item):"response.completed"===f||"response.done"===f?(b.status="completed",c.response?.usage&&(b.usage.input_tokens=c.response.usage.input_tokens||0,b.usage.output_tokens=c.response.usage.output_tokens||0,b.usage.total_tokens=c.response.usage.total_tokens||0)):"response.failed"===f&&(b.status="failed")}}c.d(b,{I:()=>n,F:()=>m});let e={input_tokens:0,output_tokens:0,total_tokens:0};async function f(a){if(!a||"function"!=typeof a.getReader)return{id:`resp_${Date.now()}`,object:"response",created_at:Math.floor(Date.now()/1e3),status:"failed",output:[],usage:{...e}};let b=a.getReader(),c=new TextDecoder,f="",g={responseId:"",created:Math.floor(Date.now()/1e3),status:"in_progress",usage:{...e},items:new Map};try{for(;;){let{done:a,value:e}=await b.read();if(a)break;let h=(f+=c.decode(e,{stream:!0})).split("\n\n");for(let a of(f=h.pop()||"",h))d(a,g)}f.trim()&&d(f,g)}finally{b.releaseLock()}let h=[],i=g.items.size>0?Math.max(...g.items.keys()):-1;for(let a=0;a<=i;a++)h.push(g.items.get(a)||{type:"message",content:[],role:"assistant"});return{id:g.responseId||`resp_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,object:"response",created_at:g.created,status:g.status||"completed",output:h,usage:g.usage}}var g=c(43659),h=c(41004),i=c(14170),j=c(86171),k=c(47370);function l(a){if(!a?.content||!Array.isArray(a.content))return"";let b=a.content.find(a=>"output_text"===a.type);if("string"==typeof b?.text)return b.text;let c=a.content.find(a=>"string"==typeof a.text);return"string"==typeof c?.text?c.text:""}function m(a,b){let c=[];for(let b of String(a||"").split("\n")){let a=b.trim();if(!a.startsWith("data:"))continue;let d=a.slice(5).trim();if(d&&"[DONE]"!==d)try{c.push(JSON.parse(d))}catch{}}if(0===c.length)return null;let d=c[0],e=[],f=[],g=new Map,h="stop",i=null;for(let a of c){let b=a?.choices?.[0],c=b?.delta||{};if("string"==typeof c.content&&c.content.length>0&&e.push(c.content),"string"==typeof c.reasoning_content&&c.reasoning_content.length>0&&f.push(c.reasoning_content),b?.finish_reason&&(h=b.finish_reason),a?.usage&&"object"==typeof a.usage&&(i=a.usage),Array.isArray(c.tool_calls))for(let a of c.tool_calls){let b=a.index??0;g.has(b)||g.set(b,{id:a.id||"",type:"function",function:{name:"",arguments:""}});let c=g.get(b);a.id&&(c.id=a.id),a.function?.name&&(c.function.name+=a.function.name),a.function?.arguments&&(c.function.arguments+=a.function.arguments)}}let j={role:"assistant",content:e.join("")||(g.size>0?null:"")};f.length>0&&(j.reasoning_content=f.join("")),g.size>0&&(j.tool_calls=[...g.entries()].sort((a,b)=>a[0]-b[0]).map(([,a])=>a));let k={id:d.id||`chatcmpl-${Date.now()}`,object:"chat.completion",created:d.created||Math.floor(Date.now()/1e3),model:d.model||b||"unknown",choices:[{index:0,message:j,finish_reason:h}]};return i&&(k.usage=i),k}async function n({providerResponse:a,sourceFormat:b,provider:c,model:d,body:e,stream:o,translatedBody:p,finalBody:q,requestStartTime:r,connectionId:s,apiKey:t,clientRawRequest:u,onRequestSuccess:v,trackDone:w,appendLog:x}){let y=a.headers.get("content-type")||"";if(!(y.includes("text/event-stream")||""===y&&"codex"===c))return null;w();let z={provider:c,model:d,connectionId:s,request:(0,j.Fo)(e,o),providerRequest:q||p||null};if("codex"===c||b===i.h.OPENAI_RESPONSES)try{let e,g=await f(a.body);v&&await v();let h=g.usage||{};x({tokens:h,status:"200 OK"}),(0,j.qr)({provider:c,model:d,tokens:h,connectionId:s,apiKey:t,endpoint:u?.endpoint});let{msgItem:m,textContent:n}=function(a){if(!Array.isArray(a))return{msgItem:null,textContent:null};let b=a.filter(a=>a?.type==="message");if(0===b.length)return{msgItem:null,textContent:null};for(let a=b.length-1;a>=0;a--){let c=l(b[a]);if(c.length>0)return{msgItem:b[a],textContent:c}}let c=b[b.length-1];return{msgItem:c,textContent:l(c)}}(g.output),o=Date.now()-r;if((0,k.ox)((0,j.$R)({...z,latency:{ttft:o,total:o},tokens:{prompt_tokens:h.input_tokens||0,completion_tokens:h.output_tokens||0},response:{content:n,thinking:null,finish_reason:g.status||"unknown"},status:"success"},{endpoint:u?.endpoint||null})).catch(()=>{}),b===i.h.OPENAI_RESPONSES)return{success:!0,response:new Response(JSON.stringify(g),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})};let p=h.input_tokens||0,q=h.output_tokens||0,w=(g.output||[]).filter(a=>"function_call"===a.type).map((a,b)=>({id:a.call_id||`call_${a.name}_${Date.now()}_${b}`,type:"function",function:{name:a.name,arguments:"string"==typeof a.arguments?a.arguments:JSON.stringify(a.arguments||{})}})),y=w.length>0;if(b===i.h.ANTIGRAVITY||b===i.h.GEMINI||b===i.h.GEMINI_CLI)e={response:{candidates:[{content:{role:"model",parts:[{text:n||""}]},finishReason:"STOP",index:0}],usageMetadata:{promptTokenCount:p,candidatesTokenCount:q,totalTokenCount:p+q},modelVersion:d,responseId:g.id||`resp_${Date.now()}`}};else{let a={role:"assistant",content:n||(y?null:"")};y&&(a.tool_calls=w);let b="completed"===g.status||"done"===g.status,c=y?"tool_calls":b?"stop":g.status||"stop";e={id:g.id||`chatcmpl-${Date.now()}`,object:"chat.completion",created:g.created_at||Math.floor(Date.now()/1e3),model:g.model||d,choices:[{index:0,message:a,finish_reason:c}],usage:{prompt_tokens:p,completion_tokens:q,total_tokens:p+q}}}return{success:!0,response:new Response(JSON.stringify(e),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}}catch(a){return console.error("[ChatCore] Responses API SSE→JSON failed:",a),(0,g.A1)(h.gx.BAD_GATEWAY,"Failed to convert streaming response to JSON")}try{let b=await a.text(),e=m(b,d);if(!e)return(0,g.A1)(h.gx.BAD_GATEWAY,"Invalid SSE response for non-streaming request");v&&await v();let f=e.usage||{};x({tokens:f,status:"200 OK"}),(0,j.qr)({provider:c,model:d,tokens:f,connectionId:s,apiKey:t,endpoint:u?.endpoint});let i=Date.now()-r;if((0,k.ox)((0,j.$R)({...z,latency:{ttft:i,total:i},tokens:f,response:{content:e.choices?.[0]?.message?.content||null,thinking:e.choices?.[0]?.message?.reasoning_content||null,finish_reason:e.choices?.[0]?.finish_reason||"unknown"},status:"success"},{endpoint:u?.endpoint||null})).catch(()=>{}),e?.choices)for(let a of e.choices)a?.message?.reasoning_content&&a.message.content&&delete a.message.reasoning_content;return{success:!0,response:new Response(JSON.stringify(e),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}}catch(a){return console.error("[ChatCore] Chat Completions SSE→JSON failed:",a),(0,g.A1)(h.gx.BAD_GATEWAY,"Failed to convert streaming response to JSON")}}},86171:(a,b,c)=>{c.d(b,{$R:()=>i,Fo:()=>g,MK:()=>h,qr:()=>j});var d=c(47370),e=c(71857);let f=["temperature","top_p","top_k","max_tokens","max_completion_tokens","thinking","reasoning","enable_thinking","presence_penalty","frequency_penalty","seed","stop","tools","tool_choice","response_format","prediction","store","metadata","n","logprobs","top_logprobs","logit_bias","user","parallel_tool_calls"];function g(a,b){let c={messages:a.messages||[],model:a.model,stream:b};for(let b of f)void 0!==a[b]&&(c[b]=a[b]);return c}function h(a){return a&&"object"==typeof a?a.usage?.input_tokens!==void 0?{prompt_tokens:a.usage.input_tokens||0,completion_tokens:a.usage.output_tokens||0,cache_read_input_tokens:a.usage.cache_read_input_tokens,cache_creation_input_tokens:a.usage.cache_creation_input_tokens}:a.usage?.prompt_tokens!==void 0?{prompt_tokens:a.usage.prompt_tokens||0,completion_tokens:a.usage.completion_tokens||0,cached_tokens:a.usage.prompt_tokens_details?.cached_tokens,reasoning_tokens:a.usage.completion_tokens_details?.reasoning_tokens}:a.usageMetadata?{prompt_tokens:a.usageMetadata.promptTokenCount||0,completion_tokens:a.usageMetadata.candidatesTokenCount||0,reasoning_tokens:a.usageMetadata.thoughtsTokenCount}:null:null}function i(a,b={}){return{provider:a.provider||"unknown",model:a.model||"unknown",connectionId:a.connectionId||void 0,timestamp:new Date().toISOString(),latency:a.latency||{ttft:0,total:0},tokens:a.tokens||{prompt_tokens:0,completion_tokens:0},request:a.request,providerRequest:a.providerRequest||null,providerResponse:a.providerResponse||null,response:a.response||{},status:a.status||"success",...b}}function j({provider:a,model:b,tokens:c,connectionId:f,apiKey:g,endpoint:h,label:i="USAGE"}){if(!c||"object"!=typeof c)return;let k=c.input_tokens??c.prompt_tokens??0,l=c.output_tokens??c.completion_tokens??0;if(0===k&&0===l)return;let m=new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"}),n=f?` | account=${f.slice(0,8)}...`:"";console.log(`${e.lm.green}[${m}] 📊 [${i}] ${a.toUpperCase()} | in=${k} | out=${l}${n}${e.lm.reset}`);let o={prompt_tokens:c.prompt_tokens??c.input_tokens??0,completion_tokens:c.completion_tokens??c.output_tokens??0};(0,d.sZ)({provider:a||"unknown",model:b||"unknown",tokens:o,timestamp:new Date().toISOString(),connectionId:f||void 0,apiKey:g||void 0,endpoint:h||null}).catch(()=>{})}},92500:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{w:()=>C});var e=c(57647),f=c(33110),g=c(14170),h=c(71857),i=c(59657),j=c(8590),k=c(71336),l=c(44404),m=c(43659),n=c(41004),o=c(27349),p=c(47370),q=c(89718),r=c(55330),s=c(86171),t=c(81626),u=c(5016),v=c(20623),w=c(324),x=c(14724),y=c(60125),z=c(99415),A=c(77256),B=a([r]);async function C({body:a,modelInfo:b,credentials:c,log:d,onCredentialsRefreshed:B,onRequestSuccess:D,onDisconnect:E,clientRawRequest:F,connectionId:G,userAgent:H,apiKey:I,ccFilterNaming:J,rtkEnabled:K,cavemanEnabled:L,cavemanLevel:M,contextInjectionEnabled:N,sourceFormatOverride:O,providerThinking:P}){let Q,R,S,T,U,V,{provider:W,model:X}=b,Y=Date.now(),Z=O||(0,e.Tz)(a),$=(0,o.c)(a,X,H,J);if($)return $;let _=l.Xg[W]||W,aa=(0,l.ux)(_,X)||(0,e.jJ)(W),ab=(0,l.cY)(_,X),ac=(0,l.kt)(_,X);if(P?.mode&&"auto"!==P.mode){let b=P.mode;"on"!==b||a.thinking?"off"===b?(a={...a,thinking:{type:"disabled"}},delete a.reasoning_effort,a.reasoning&&"object"==typeof a.reasoning&&(a.reasoning={...a.reasoning,effort:"none"})):a.reasoning_effort||(a={...a,reasoning_effort:b}):(console.log("Injecting provider-level thinking config override: on"),a={...a,thinking:{type:"enabled",budget_tokens:1e4}})}let ad=!0===a.stream||Z===g.h.ANTIGRAVITY||Z===g.h.GEMINI||Z===g.h.GEMINI_CLI,ae="openai"===W||"codex"===W||"commandcode"===W,af=!!ae||!1!==a.stream,ag=(0,w.J)(F?.headers||{},a);"deepseek-tui"===ag&&!0!==a.stream&&(af=!1);let ah=F?.headers?.accept||"",ai=ah.includes("application/json"),aj=ah.includes("text/event-stream");ai&&!aj&&!0!==a.stream&&(af=!1);let ak=await (0,k.q7)(Z,aa,X);F&&ak.logClientRawRequest(F.endpoint,F.body,F.headers),ak.logRawRequest(a),d?.debug?.("FORMAT",`${Z} → ${aa} | stream=${af}`);let al=(0,w.J)(F?.headers||{},a),am=(0,w.Q)(al,W);if(am)d?.debug?.("PASSTHROUGH",`${al} → ${W} | native lossless`),Q={...a,model:ac};else{if(!(Q=(0,f.GH)(Z,aa,ac,a,af,c,W,ak,ab,G,al)))return(0,p.uw)(X,W,G,!1,!0),(0,m.A1)(n.gx.BAD_REQUEST,`Failed to translate request for ${Z} → ${aa}`);R=Q._toolNameMap,delete Q._toolNameMap,Q.model=ac}if("claude"===al&&Array.isArray(Q.tools)){let{tools:a,stripped:b}=(0,x.F)(Q.tools);b.length>0&&(Q.tools=a,d?.debug?.("TOOLDEDUP",`stripped ${b.length}: ${b.slice(0,3).join(", ")}${b.length>3?"...":""}`))}let an=am?Z:aa;"tts"===(0,l.OA)(_,X)&&Q.messages&&(Q.messages=Q.messages.filter(a=>"tool"!==a.role),delete Q.tools);let ao=(0,A.B)(Q,K),ap=(0,A.f)(ao);if(ap&&console.log(ap),L&&M&&((0,y.p)(Q,an,M),d?.debug?.("CAVEMAN",`${M} | ${an}`)),N)try{let a=await (0,q.qd)();if(a?.length){let b=a.map(a=>a.content).filter(Boolean).join("\n\n");b&&((0,z.e)(Q,an,b),d?.debug?.("CONTEXT",`${a.length} file(s) | ${an}`))}}catch(a){d?.error?.("CONTEXT",`injection failed: ${a.message}`)}let aq=(0,r.SB)(W);(0,p.uw)(X,W,G,!0),(0,p.E5)({model:X,provider:W,connectionId:G,status:"PENDING"}).catch(()=>{});let ar=Q.messages?.length||Q.input?.length||Q.contents?.length||Q.request?.contents?.length||0;d?.debug?.("REQUEST",`${W.toUpperCase()} | ${X} | ${ar} msgs`);let as=(0,i.jd)({onDisconnect:a=>{(0,p.uw)(X,W,G,!1),E&&E(a)},onError:()=>(0,p.uw)(X,W,G,!1),log:d,provider:W,model:X}),at={connectionProxyEnabled:c?.providerSpecificData?.connectionProxyEnabled===!0,connectionProxyUrl:c?.providerSpecificData?.connectionProxyUrl||"",connectionNoProxy:c?.providerSpecificData?.connectionNoProxy||"",vercelRelayUrl:c?.providerSpecificData?.vercelRelayUrl||""};if(at.vercelRelayUrl){let a=c?.connectionName||c?.connectionId||"unknown",b=c?.providerSpecificData?.connectionProxyPoolId||"none";d?.info?.("PROXY",`${W.toUpperCase()} | ${X} | conn=${a} | pool=${b} | vercel-relay=${at.vercelRelayUrl}`)}else if(at.connectionProxyEnabled&&at.connectionProxyUrl){let a=at.connectionProxyUrl;try{let b=new URL(at.connectionProxyUrl),c=b.hostname||"",d=b.port?`:${b.port}`:"",e=b.protocol||"http:";a=`${e}//${c}${d}`}catch{}let b=c?.providerSpecificData?.connectionProxyPoolId||"none",e=c?.connectionName||c?.connectionId||"unknown";d?.info?.("PROXY",`${W.toUpperCase()} | ${X} | conn=${e} | pool=${b} | url=${a}`)}if(at.connectionProxyEnabled&&at.connectionNoProxy){let a=c?.connectionName||c?.connectionId||"unknown";d?.debug?.("PROXY",`${W.toUpperCase()} | ${X} | conn=${a} | no_proxy=${at.connectionNoProxy}`)}try{let a=await aq.execute({model:X,body:Q,stream:af,credentials:c,signal:as.signal,log:d,proxyOptions:at});S=a.response,T=a.url,U=a.headers,V=a.transformedBody,ak.logTargetRequest(T,U,V)}catch(c){if((0,p.uw)(X,W,G,!1,!0),(0,p.E5)({model:X,provider:W,connectionId:G,status:`FAILED ${"AbortError"===c.name?499:n.gx.BAD_GATEWAY}`}).catch(()=>{}),(0,p.ox)((0,s.$R)({provider:W,model:X,connectionId:G,latency:{ttft:0,total:Date.now()-Y},tokens:{prompt_tokens:0,completion_tokens:0},request:(0,s.Fo)(a,af),providerRequest:Q||null,response:{error:c.message||String(c),status:"AbortError"===c.name?499:502,thinking:null},status:"error"})).catch(()=>{}),"AbortError"===c.name)return as.handleError(c),(0,m.A1)(499,"Request aborted");let b=(0,m.lR)(c,W,X,n.gx.BAD_GATEWAY);return console.log(`${h.lm.red}[ERROR] ${b}${h.lm.reset}`),(0,m.A1)(n.gx.BAD_GATEWAY,b)}if(!aq.noAuth&&(S.status===n.gx.UNAUTHORIZED||S.status===n.gx.FORBIDDEN))try{let a=await (0,j.qZ)(()=>aq.refreshCredentials(c,d),3,d);if(a?.accessToken||a?.copilotToken){if(d?.info?.("TOKEN",`${W.toUpperCase()} | refreshed`),Object.assign(c,a),B)try{await B(a)}catch(a){d?.warn?.("TOKEN",`onCredentialsRefreshed failed: ${a.message}`)}try{let a=await aq.execute({model:X,body:Q,stream:af,credentials:c,signal:as.signal,log:d,proxyOptions:at});a.response.ok&&(S=a.response,T=a.url)}catch{d?.warn?.("TOKEN",`${W.toUpperCase()} | retry after refresh failed`)}}else d?.warn?.("TOKEN",`${W.toUpperCase()} | refresh failed`)}catch(a){d?.warn?.("TOKEN",`${W.toUpperCase()} | refresh threw: ${a.message}`)}if(!S.ok){(0,p.uw)(X,W,G,!1,!0);let{statusCode:b,message:c,resetsAtMs:d}=await (0,m.zL)(S,aq);(0,p.E5)({model:X,provider:W,connectionId:G,status:`FAILED ${b}`}).catch(()=>{}),(0,p.ox)((0,s.$R)({provider:W,model:X,connectionId:G,latency:{ttft:0,total:Date.now()-Y},tokens:{prompt_tokens:0,completion_tokens:0},request:(0,s.Fo)(a,af),providerRequest:V||Q||null,response:{error:c,status:b,thinking:null},status:"error"})).catch(()=>{});let e=(0,m.lR)(Error(c),W,X,b);return console.log(`${h.lm.red}[ERROR] ${e}${h.lm.reset}`),ak.logError(Error(c),V||Q),(0,m.A1)(b,e,d)}let au={provider:W,model:X,body:a,stream:af,translatedBody:Q,finalBody:V,requestStartTime:Y,connectionId:G,apiKey:I,clientRawRequest:F,onRequestSuccess:D},av=a=>(0,p.E5)({model:X,provider:W,connectionId:G,...a}).catch(()=>{}),aw=()=>(0,p.uw)(X,W,G,!1);if(!ad&&ae){let a=await (0,t.I)({...au,providerResponse:S,sourceFormat:Z,trackDone:aw,appendLog:av});if(a)return as.handleComplete(),a}if(!af){let a=await (0,u.N)({...au,providerResponse:S,sourceFormat:Z,targetFormat:aa,reqLogger:ak,toolNameMap:R,trackDone:aw,appendLog:av});return as.handleComplete(),a}let{onStreamComplete:ax,streamDetailId:ay}=(0,v.$)({...au});return(0,v.M)({...au,providerResponse:S,sourceFormat:Z,targetFormat:aa,userAgent:H,reqLogger:ak,toolNameMap:R,streamController:as,onStreamComplete:ax,streamDetailId:ay})}r=(B.then?(await B)():B)[0],d()}catch(a){d(a)}})},99415:(a,b,c)=>{c.d(b,{e:()=>e});var d=c(14170);function e(a,b,c){if(a&&c&&"string"==typeof c)switch(b){case d.h.CLAUDE:!function(a,b){if("string"==typeof a.system&&a.system.length>0){a.system=`${b}
|
|
55
|
+
`),h.replace(/\n+$/,"")}r.filterName="search-list";let s=/^Result of search in '[^']*' \(total (\d+) files?\):/,t=/^diff --git /m,u=/^@@ /m,v=/^On branch |^nothing to commit|^Changes (not |to be )|^Untracked files:/m,w=/^[ MADRCU?!][ MADRCU?!] \S/m,x=/^(npm (warn|error|ERR!)|yarn (warn|error)|\s*Compiling\s+\S+|\s*Downloading\s+\S+|added \d+ package|\[ERROR\]|BUILD (SUCCESS|FAILED)|\s*Finished\s+|Successfully (installed|built)|ERROR:)/im,y=/[├└]──|│ /,z=/^[-dlbcps][rwx-]{9}/m,A=/^total \d+$/m;function B(a){let b=a.indexOf(":");if(-1===b)return!1;let c=a.indexOf(":",b+1);if(-1===c)return!1;let d=a.slice(b+1,c);return/^\d+$/.test(d)}function C(a){let b=a.trim();return!(0===b.length||b.includes(":"))&&(b.startsWith(".")||b.startsWith("/")||b.includes("/"))}function D(a,b){if(!b||!a)return null;if(a.conversationState){var c=a;let b={bytesBefore:0,bytesAfter:0,hits:[]};try{let a=c.conversationState,d=[...Array.isArray(a?.history)?a.history:[]];for(let c of(a?.currentMessage&&d.push(a.currentMessage),d)){let a=c?.userInputMessage?.userInputMessageContext?.toolResults;if(Array.isArray(a)){for(let c of a)if("error"!==c.status&&Array.isArray(c.content))for(let a of c.content)a&&"string"==typeof a.text&&(a.text=E(a.text,b,"kiro-tool-result"))}}}catch(a){return console.warn("[RTK] compressKiroFormat error:",a.message),null}return b}let d=Array.isArray(a.messages)?a.messages:Array.isArray(a.input)?a.input:null;if(!d)return null;let e={bytesBefore:0,bytesAfter:0,hits:[]};try{for(let a=0;a<d.length;a++){let b=d[a];if(b){if("function_call_output"===b.type){if("string"==typeof b.output)b.output=E(b.output,e,"openai-responses-string");else if(Array.isArray(b.output))for(let a=0;a<b.output.length;a++){let c=b.output[a];c&&"input_text"===c.type&&"string"==typeof c.text&&(c.text=E(c.text,e,"openai-responses-array"))}continue}if("tool"===b.role&&"string"==typeof b.content){b.content=E(b.content,e,"openai-tool");continue}if(Array.isArray(b.content)){if("tool"===b.role){for(let a=0;a<b.content.length;a++){let c=b.content[a];c&&"text"===c.type&&"string"==typeof c.text&&(c.text=E(c.text,e,"openai-tool-array"))}continue}for(let a=0;a<b.content.length;a++){let c=b.content[a];if(c&&"tool_result"===c.type&&!0!==c.is_error){if("string"==typeof c.content)c.content=E(c.content,e,"claude-string");else if(Array.isArray(c.content))for(let a=0;a<c.content.length;a++){let b=c.content[a];b&&"text"===b.type&&"string"==typeof b.text&&(b.text=E(b.text,e,"claude-array"))}}}}}}}catch(a){return console.warn("[RTK] compressMessages error:",a.message),null}return e}function E(a,b,c){let d=a.length;if(b.bytesBefore+=d,d<500||d>0xa00000)return b.bytesAfter+=d,a;let g=function(a){var b,c;let d,g,l=a.length>1024?a.slice(0,1024):a;if(t.test(l)||u.test(l))return e;if(v.test(l))return f;if(x.test(l))return h;if(!((d=l.split("\n").filter(a=>a.trim())).length<3)&&d.filter(a=>w.test(a)).length/d.length>=.6)return f;let D=l.split("\n"),E=D.filter(a=>a.trim().length>0);return E.slice(0,5).some(B)?i:E.length>=3&&E.every(C)?j:y.test(l)?n:A.test(l)||(b=l,g=new RegExp((c=z).source,c.flags.includes("g")?c.flags:c.flags+"g"),(b.match(g)||[]).length>=3)?m:s.test(l)?r:D.length>=250&&function(a){let b=0,c=0;for(let d of a.slice(0,100))0!==d.length&&(c++,q.test(d)&&b++);return!(c<5)&&b/c>=.7}(D)?p:E.length>=5?k:a.split("\n").length>=250?o:null}(a);if(!g)return b.bytesAfter+=d,a;let l=function(a,b){if("function"!=typeof a)return b;try{let c=a(b);if("string"!=typeof c)return b;return c}catch(d){let c=a.filterName||a.name||"anonymous";return console.warn(`[rtk] warning: filter '${c}' panicked — passing through raw output: ${d?.message||d}`),b}}(g,a);return!l||0===l.length||l.length>=d?(b.bytesAfter+=d,a):(b.bytesAfter+=l.length,b.hits.push({shape:c,filter:g.filterName||g.name,saved:d-l.length}),l)}function F(a){if(!a||!a.hits||0===a.hits.length)return null;let b=a.bytesBefore-a.bytesAfter,c=a.bytesBefore>0?(b/a.bytesBefore*100).toFixed(1):"0",d=Array.from(new Set(a.hits.map(a=>a.filter))).join(",");return`[RTK] saved ${b}B / ${a.bytesBefore}B (${c}%) via [${d}] hits=${a.hits.length}`}},81626:(a,b,c)=>{function d(a,b){let c;if(!a.trim())return;let d=a.match(/^event:\s*(.+)$/m),e=a.match(/^data:\s*(.+)$/m);if(!d||!e)return;let f=d[1].trim(),g=e[1].trim();if("[DONE]"!==g){try{c=JSON.parse(g)}catch{return}"response.created"===f?(b.responseId=c.response?.id||b.responseId,b.created=c.response?.created_at||b.created):"response.output_item.done"===f?b.items.set(c.output_index??0,c.item):"response.completed"===f||"response.done"===f?(b.status="completed",c.response?.usage&&(b.usage.input_tokens=c.response.usage.input_tokens||0,b.usage.output_tokens=c.response.usage.output_tokens||0,b.usage.total_tokens=c.response.usage.total_tokens||0)):"response.failed"===f&&(b.status="failed")}}c.d(b,{I:()=>n,F:()=>m});let e={input_tokens:0,output_tokens:0,total_tokens:0};async function f(a){if(!a||"function"!=typeof a.getReader)return{id:`resp_${Date.now()}`,object:"response",created_at:Math.floor(Date.now()/1e3),status:"failed",output:[],usage:{...e}};let b=a.getReader(),c=new TextDecoder,f="",g={responseId:"",created:Math.floor(Date.now()/1e3),status:"in_progress",usage:{...e},items:new Map};try{for(;;){let{done:a,value:e}=await b.read();if(a)break;let h=(f+=c.decode(e,{stream:!0})).split("\n\n");for(let a of(f=h.pop()||"",h))d(a,g)}f.trim()&&d(f,g)}finally{b.releaseLock()}let h=[],i=g.items.size>0?Math.max(...g.items.keys()):-1;for(let a=0;a<=i;a++)h.push(g.items.get(a)||{type:"message",content:[],role:"assistant"});return{id:g.responseId||`resp_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,object:"response",created_at:g.created,status:g.status||"completed",output:h,usage:g.usage}}var g=c(43659),h=c(41004),i=c(14170),j=c(86171),k=c(47370);function l(a){if(!a?.content||!Array.isArray(a.content))return"";let b=a.content.find(a=>"output_text"===a.type);if("string"==typeof b?.text)return b.text;let c=a.content.find(a=>"string"==typeof a.text);return"string"==typeof c?.text?c.text:""}function m(a,b){let c=[];for(let b of String(a||"").split("\n")){let a=b.trim();if(!a.startsWith("data:"))continue;let d=a.slice(5).trim();if(d&&"[DONE]"!==d)try{c.push(JSON.parse(d))}catch{}}if(0===c.length)return null;let d=c[0],e=[],f=[],g=new Map,h="stop",i=null;for(let a of c){let b=a?.choices?.[0],c=b?.delta||{};if("string"==typeof c.content&&c.content.length>0&&e.push(c.content),"string"==typeof c.reasoning_content&&c.reasoning_content.length>0&&f.push(c.reasoning_content),b?.finish_reason&&(h=b.finish_reason),a?.usage&&"object"==typeof a.usage&&(i=a.usage),Array.isArray(c.tool_calls))for(let a of c.tool_calls){let b=a.index??0;g.has(b)||g.set(b,{id:a.id||"",type:"function",function:{name:"",arguments:""}});let c=g.get(b);a.id&&(c.id=a.id),a.function?.name&&(c.function.name+=a.function.name),a.function?.arguments&&(c.function.arguments+=a.function.arguments)}}let j={role:"assistant",content:e.join("")||(g.size>0?null:"")};f.length>0&&(j.reasoning_content=f.join("")),g.size>0&&(j.tool_calls=[...g.entries()].sort((a,b)=>a[0]-b[0]).map(([,a])=>a));let k={id:d.id||`chatcmpl-${Date.now()}`,object:"chat.completion",created:d.created||Math.floor(Date.now()/1e3),model:d.model||b||"unknown",choices:[{index:0,message:j,finish_reason:h}]};return i&&(k.usage=i),k}async function n({providerResponse:a,sourceFormat:b,provider:c,model:d,body:e,stream:o,translatedBody:p,finalBody:q,requestStartTime:r,connectionId:s,apiKey:t,clientRawRequest:u,onRequestSuccess:v,trackDone:w,appendLog:x}){let y=a.headers.get("content-type")||"";if(!(y.includes("text/event-stream")||""===y&&"codex"===c))return null;w();let z={provider:c,model:d,connectionId:s,request:(0,j.Fo)(e,o),providerRequest:q||p||null};if("codex"===c||b===i.h.OPENAI_RESPONSES)try{let e,g=await f(a.body);v&&await v();let h=g.usage||{};x({tokens:h,status:"200 OK"}),(0,j.qr)({provider:c,model:d,tokens:h,connectionId:s,apiKey:t,endpoint:u?.endpoint});let{msgItem:m,textContent:n}=function(a){if(!Array.isArray(a))return{msgItem:null,textContent:null};let b=a.filter(a=>a?.type==="message");if(0===b.length)return{msgItem:null,textContent:null};for(let a=b.length-1;a>=0;a--){let c=l(b[a]);if(c.length>0)return{msgItem:b[a],textContent:c}}let c=b[b.length-1];return{msgItem:c,textContent:l(c)}}(g.output),o=Date.now()-r;if((0,k.ox)((0,j.$R)({...z,latency:{ttft:o,total:o},tokens:{prompt_tokens:h.input_tokens||0,completion_tokens:h.output_tokens||0},response:{content:n,thinking:null,finish_reason:g.status||"unknown"},status:"success"},{endpoint:u?.endpoint||null})).catch(()=>{}),b===i.h.OPENAI_RESPONSES)return{success:!0,response:new Response(JSON.stringify(g),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})};let p=h.input_tokens||0,q=h.output_tokens||0,w=(g.output||[]).filter(a=>"function_call"===a.type).map((a,b)=>({id:a.call_id||`call_${a.name}_${Date.now()}_${b}`,type:"function",function:{name:a.name,arguments:"string"==typeof a.arguments?a.arguments:JSON.stringify(a.arguments||{})}})),y=w.length>0;if(b===i.h.ANTIGRAVITY||b===i.h.GEMINI||b===i.h.GEMINI_CLI)e={response:{candidates:[{content:{role:"model",parts:[{text:n||""}]},finishReason:"STOP",index:0}],usageMetadata:{promptTokenCount:p,candidatesTokenCount:q,totalTokenCount:p+q},modelVersion:d,responseId:g.id||`resp_${Date.now()}`}};else{let a={role:"assistant",content:n||(y?null:"")};y&&(a.tool_calls=w);let b="completed"===g.status||"done"===g.status,c=y?"tool_calls":b?"stop":g.status||"stop";e={id:g.id||`chatcmpl-${Date.now()}`,object:"chat.completion",created:g.created_at||Math.floor(Date.now()/1e3),model:g.model||d,choices:[{index:0,message:a,finish_reason:c}],usage:{prompt_tokens:p,completion_tokens:q,total_tokens:p+q}}}return{success:!0,response:new Response(JSON.stringify(e),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}}catch(a){return console.error("[ChatCore] Responses API SSE→JSON failed:",a),(0,g.A1)(h.gx.BAD_GATEWAY,"Failed to convert streaming response to JSON")}try{let b=await a.text(),e=m(b,d);if(!e)return(0,g.A1)(h.gx.BAD_GATEWAY,"Invalid SSE response for non-streaming request");v&&await v();let f=e.usage||{};x({tokens:f,status:"200 OK"}),(0,j.qr)({provider:c,model:d,tokens:f,connectionId:s,apiKey:t,endpoint:u?.endpoint});let i=Date.now()-r;if((0,k.ox)((0,j.$R)({...z,latency:{ttft:i,total:i},tokens:f,response:{content:e.choices?.[0]?.message?.content||null,thinking:e.choices?.[0]?.message?.reasoning_content||null,finish_reason:e.choices?.[0]?.finish_reason||"unknown"},status:"success"},{endpoint:u?.endpoint||null})).catch(()=>{}),e?.choices)for(let a of e.choices)a?.message?.reasoning_content&&a.message.content&&delete a.message.reasoning_content;return{success:!0,response:new Response(JSON.stringify(e),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}}catch(a){return console.error("[ChatCore] Chat Completions SSE→JSON failed:",a),(0,g.A1)(h.gx.BAD_GATEWAY,"Failed to convert streaming response to JSON")}}},86171:(a,b,c)=>{c.d(b,{$R:()=>i,Fo:()=>g,MK:()=>h,qr:()=>j});var d=c(47370),e=c(71857);let f=["temperature","top_p","top_k","max_tokens","max_completion_tokens","thinking","reasoning","enable_thinking","presence_penalty","frequency_penalty","seed","stop","tools","tool_choice","response_format","prediction","store","metadata","n","logprobs","top_logprobs","logit_bias","user","parallel_tool_calls"];function g(a,b){let c={messages:a.messages||[],model:a.model,stream:b};for(let b of f)void 0!==a[b]&&(c[b]=a[b]);return c}function h(a){return a&&"object"==typeof a?a.usage?.input_tokens!==void 0?{prompt_tokens:a.usage.input_tokens||0,completion_tokens:a.usage.output_tokens||0,cache_read_input_tokens:a.usage.cache_read_input_tokens,cache_creation_input_tokens:a.usage.cache_creation_input_tokens}:a.usage?.prompt_tokens!==void 0?{prompt_tokens:a.usage.prompt_tokens||0,completion_tokens:a.usage.completion_tokens||0,cached_tokens:a.usage.prompt_tokens_details?.cached_tokens,reasoning_tokens:a.usage.completion_tokens_details?.reasoning_tokens}:a.usageMetadata?{prompt_tokens:a.usageMetadata.promptTokenCount||0,completion_tokens:a.usageMetadata.candidatesTokenCount||0,reasoning_tokens:a.usageMetadata.thoughtsTokenCount}:null:null}function i(a,b={}){return{provider:a.provider||"unknown",model:a.model||"unknown",connectionId:a.connectionId||void 0,timestamp:new Date().toISOString(),latency:a.latency||{ttft:0,total:0},tokens:a.tokens||{prompt_tokens:0,completion_tokens:0},request:a.request,providerRequest:a.providerRequest||null,providerResponse:a.providerResponse||null,response:a.response||{},status:a.status||"success",...b}}function j({provider:a,model:b,tokens:c,connectionId:f,apiKey:g,endpoint:h,label:i="USAGE"}){if(!c||"object"!=typeof c)return;let k=c.input_tokens??c.prompt_tokens??0,l=c.output_tokens??c.completion_tokens??0;if(0===k&&0===l)return;let m=new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"}),n=f?` | account=${f.slice(0,8)}...`:"";console.log(`${e.lm.green}[${m}] 📊 [${i}] ${a.toUpperCase()} | in=${k} | out=${l}${n}${e.lm.reset}`);let o={prompt_tokens:c.prompt_tokens??c.input_tokens??0,completion_tokens:c.completion_tokens??c.output_tokens??0};(0,d.sZ)({provider:a||"unknown",model:b||"unknown",tokens:o,timestamp:new Date().toISOString(),connectionId:f||void 0,apiKey:g||void 0,endpoint:h||null}).catch(()=>{})}},88299:(a,b,c)=>{c.d(b,{U:()=>j});var d=c(14170);let e='Before writing code, stop at the first rung that holds: 1) Does this need to exist? Skip if speculative (YAGNI). 2) Already in codebase? Reuse it. 3) Stdlib does it? Use stdlib. 4) Native platform feature? Use it (CSS over JS, <input type="date"> over picker lib, DB constraint over app code). 5) Installed dependency? Use it, never add new ones for what a few lines do. 6) One line? Write one line. 7) Only then: minimum code that works.',f="No unrequested abstractions. No boilerplate 'for later'. Deletion over addition. Fewest files. Shortest working diff. Mark simplifications: // ponytail: [reason]. Bug fix = root cause fix, not symptom patch.",g="Never simplify away: input validation at trust boundaries, error handling preventing data loss, security measures, accessibility, anything explicitly requested. User insists on full version → build it.",h="ACTIVE EVERY RESPONSE. No drift back to over-building. Still active if unsure.",i={lite:["You are a lazy senior dev. Build what's asked, but name the lazier alternative in one line. User picks.",e,g,"Output: code first, then one line naming what could be simpler.",h].join(" "),full:["You are a lazy senior dev. The best code is the code never written. Enforce the ladder — stdlib and native first, shortest diff, shortest explanation.",e,f,g,"Output: code first, then at most 3 short lines: what was skipped, when to add it. Pattern: [code] → skipped: [X], add when [Y].",h].join(" "),ultra:["You are a YAGNI extremist. Deletion before addition. Ship the one-liner and challenge the rest of the requirement. The laziest solution that actually works.",e,f,g,"Output: one-liner or minimal code, then challenge: 'Do you actually need [X]?' No essays.",h].join(" ")};function j(a,b,c){let e=i[c];if(a&&e)switch(b){case d.h.CLAUDE:!function(a,b){if("string"==typeof a.system&&a.system.length>0){a.system=`${a.system}
|
|
56
|
+
|
|
57
|
+
${b}`;return}if(Array.isArray(a.system)){let c={type:"text",text:b},d=-1;for(let b=a.system.length-1;b>=0;b--)if(a.system[b]?.cache_control){d=b;break}d>=0?a.system.splice(d,0,c):a.system.push(c);return}a.system=b}(a,e);return;case d.h.GEMINI:case d.h.GEMINI_CLI:case d.h.VERTEX:case d.h.ANTIGRAVITY:var f,g;let h,j,k;f=a,g=e,h=f.request&&"object"==typeof f.request?f.request:f,j=Object.prototype.hasOwnProperty.call(h,"system_instruction")?"system_instruction":"systemInstruction",(k=h[j])&&Array.isArray(k.parts)?k.parts.push({text:g}):h[j]={parts:[{text:g}]};return;default:!function(a,b){var c,d;if("string"==typeof a.instructions){a.instructions=a.instructions?`${a.instructions}
|
|
58
|
+
|
|
59
|
+
${b}`:b;return}let e=Array.isArray(a.messages)?a.messages:Array.isArray(a.input)?a.input:null;if(!e)return;let f=e.findIndex(a=>a&&("system"===a.role||"developer"===a.role));f>=0?(c=e[f],d=b,"string"==typeof c.content?c.content=`${c.content}
|
|
60
|
+
|
|
61
|
+
${d}`:Array.isArray(c.content)?c.content.push({type:"input_text",text:d}):c.content=d):e.unshift({role:"system",content:b})}(a,e)}}},92500:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{w:()=>D});var e=c(57647),f=c(33110),g=c(14170),h=c(71857),i=c(59657),j=c(8590),k=c(71336),l=c(44404),m=c(43659),n=c(41004),o=c(27349),p=c(47370),q=c(89718),r=c(55330),s=c(86171),t=c(81626),u=c(5016),v=c(20623),w=c(324),x=c(14724),y=c(60125),z=c(88299),A=c(99415),B=c(77256),C=a([r]);async function D({body:a,modelInfo:b,credentials:c,log:d,onCredentialsRefreshed:C,onRequestSuccess:E,onDisconnect:F,clientRawRequest:G,connectionId:H,userAgent:I,apiKey:J,ccFilterNaming:K,rtkEnabled:L,cavemanEnabled:M,cavemanLevel:N,contextInjectionEnabled:O,ponytailEnabled:P,ponytailLevel:Q,sourceFormatOverride:R,providerThinking:S}){let T,U,V,W,X,Y,{provider:Z,model:$}=b,_=Date.now(),aa=R||(0,e.Tz)(a),ab=(0,o.c)(a,$,I,K);if(ab)return ab;let ac=l.Xg[Z]||Z,ad=(0,l.ux)(ac,$)||(0,e.jJ)(Z),ae=(0,l.cY)(ac,$),af=(0,l.kt)(ac,$);if(S?.mode&&"auto"!==S.mode){let b=S.mode;"on"!==b||a.thinking?"off"===b?(a={...a,thinking:{type:"disabled"}},delete a.reasoning_effort,a.reasoning&&"object"==typeof a.reasoning&&(a.reasoning={...a.reasoning,effort:"none"})):a.reasoning_effort||(a={...a,reasoning_effort:b}):(console.log("Injecting provider-level thinking config override: on"),a={...a,thinking:{type:"enabled",budget_tokens:1e4}})}let ag=!0===a.stream||aa===g.h.ANTIGRAVITY||aa===g.h.GEMINI||aa===g.h.GEMINI_CLI,ah="openai"===Z||"codex"===Z||"commandcode"===Z,ai=!!ah||!1!==a.stream,aj=(0,w.J)(G?.headers||{},a);"deepseek-tui"===aj&&!0!==a.stream&&(ai=!1);let ak=G?.headers?.accept||"",al=ak.includes("application/json"),am=ak.includes("text/event-stream");al&&!am&&!0!==a.stream&&(ai=!1);let an=await (0,k.q7)(aa,ad,$);G&&an.logClientRawRequest(G.endpoint,G.body,G.headers),an.logRawRequest(a),d?.debug?.("FORMAT",`${aa} → ${ad} | stream=${ai}`);let ao=(0,w.J)(G?.headers||{},a),ap=(0,w.Q)(ao,Z);if(ap)d?.debug?.("PASSTHROUGH",`${ao} → ${Z} | native lossless`),T={...a,model:af};else{if(!(T=(0,f.GH)(aa,ad,af,a,ai,c,Z,an,ae,H,ao)))return(0,p.uw)($,Z,H,!1,!0),(0,m.A1)(n.gx.BAD_REQUEST,`Failed to translate request for ${aa} → ${ad}`);U=T._toolNameMap,delete T._toolNameMap,T.model=af}if("claude"===ao&&Array.isArray(T.tools)){let{tools:a,stripped:b}=(0,x.F)(T.tools);b.length>0&&(T.tools=a,d?.debug?.("TOOLDEDUP",`stripped ${b.length}: ${b.slice(0,3).join(", ")}${b.length>3?"...":""}`))}let aq=ap?aa:ad;"tts"===(0,l.OA)(ac,$)&&T.messages&&(T.messages=T.messages.filter(a=>"tool"!==a.role),delete T.tools);let ar=(0,B.B)(T,L),as=(0,B.f)(ar);if(as&&console.log(as),M&&N&&((0,y.p)(T,aq,N),d?.debug?.("CAVEMAN",`${N} | ${aq}`)),P&&Q&&((0,z.U)(T,aq,Q),d?.debug?.("PONYTAIL",`${Q} | ${aq}`)),O)try{let a=await (0,q.qd)();if(a?.length){let b=a.map(a=>a.content).filter(Boolean).join("\n\n");b&&((0,A.e)(T,aq,b),d?.debug?.("CONTEXT",`${a.length} file(s) | ${aq}`))}}catch(a){d?.error?.("CONTEXT",`injection failed: ${a.message}`)}let at=(0,r.SB)(Z);(0,p.uw)($,Z,H,!0),(0,p.E5)({model:$,provider:Z,connectionId:H,status:"PENDING"}).catch(()=>{});let au=T.messages?.length||T.input?.length||T.contents?.length||T.request?.contents?.length||0;d?.debug?.("REQUEST",`${Z.toUpperCase()} | ${$} | ${au} msgs`);let av=(0,i.jd)({onDisconnect:a=>{(0,p.uw)($,Z,H,!1),F&&F(a)},onError:()=>(0,p.uw)($,Z,H,!1),log:d,provider:Z,model:$}),aw={connectionProxyEnabled:c?.providerSpecificData?.connectionProxyEnabled===!0,connectionProxyUrl:c?.providerSpecificData?.connectionProxyUrl||"",connectionNoProxy:c?.providerSpecificData?.connectionNoProxy||"",vercelRelayUrl:c?.providerSpecificData?.vercelRelayUrl||""};if(aw.vercelRelayUrl){let a=c?.connectionName||c?.connectionId||"unknown",b=c?.providerSpecificData?.connectionProxyPoolId||"none";d?.info?.("PROXY",`${Z.toUpperCase()} | ${$} | conn=${a} | pool=${b} | vercel-relay=${aw.vercelRelayUrl}`)}else if(aw.connectionProxyEnabled&&aw.connectionProxyUrl){let a=aw.connectionProxyUrl;try{let b=new URL(aw.connectionProxyUrl),c=b.hostname||"",d=b.port?`:${b.port}`:"",e=b.protocol||"http:";a=`${e}//${c}${d}`}catch{}let b=c?.providerSpecificData?.connectionProxyPoolId||"none",e=c?.connectionName||c?.connectionId||"unknown";d?.info?.("PROXY",`${Z.toUpperCase()} | ${$} | conn=${e} | pool=${b} | url=${a}`)}if(aw.connectionProxyEnabled&&aw.connectionNoProxy){let a=c?.connectionName||c?.connectionId||"unknown";d?.debug?.("PROXY",`${Z.toUpperCase()} | ${$} | conn=${a} | no_proxy=${aw.connectionNoProxy}`)}try{let a=await at.execute({model:$,body:T,stream:ai,credentials:c,signal:av.signal,log:d,proxyOptions:aw});V=a.response,W=a.url,X=a.headers,Y=a.transformedBody,an.logTargetRequest(W,X,Y)}catch(c){if((0,p.uw)($,Z,H,!1,!0),(0,p.E5)({model:$,provider:Z,connectionId:H,status:`FAILED ${"AbortError"===c.name?499:n.gx.BAD_GATEWAY}`}).catch(()=>{}),(0,p.ox)((0,s.$R)({provider:Z,model:$,connectionId:H,latency:{ttft:0,total:Date.now()-_},tokens:{prompt_tokens:0,completion_tokens:0},request:(0,s.Fo)(a,ai),providerRequest:T||null,response:{error:c.message||String(c),status:"AbortError"===c.name?499:502,thinking:null},status:"error"})).catch(()=>{}),"AbortError"===c.name)return av.handleError(c),(0,m.A1)(499,"Request aborted");let b=(0,m.lR)(c,Z,$,n.gx.BAD_GATEWAY);return console.log(`${h.lm.red}[ERROR] ${b}${h.lm.reset}`),(0,m.A1)(n.gx.BAD_GATEWAY,b)}if(!at.noAuth&&(V.status===n.gx.UNAUTHORIZED||V.status===n.gx.FORBIDDEN))try{let a=await (0,j.qZ)(()=>at.refreshCredentials(c,d),3,d);if(a?.accessToken||a?.copilotToken){if(d?.info?.("TOKEN",`${Z.toUpperCase()} | refreshed`),Object.assign(c,a),C)try{await C(a)}catch(a){d?.warn?.("TOKEN",`onCredentialsRefreshed failed: ${a.message}`)}try{let a=await at.execute({model:$,body:T,stream:ai,credentials:c,signal:av.signal,log:d,proxyOptions:aw});a.response.ok&&(V=a.response,W=a.url)}catch{d?.warn?.("TOKEN",`${Z.toUpperCase()} | retry after refresh failed`)}}else d?.warn?.("TOKEN",`${Z.toUpperCase()} | refresh failed`)}catch(a){d?.warn?.("TOKEN",`${Z.toUpperCase()} | refresh threw: ${a.message}`)}if(!V.ok){(0,p.uw)($,Z,H,!1,!0);let{statusCode:b,message:c,resetsAtMs:d}=await (0,m.zL)(V,at);(0,p.E5)({model:$,provider:Z,connectionId:H,status:`FAILED ${b}`}).catch(()=>{}),(0,p.ox)((0,s.$R)({provider:Z,model:$,connectionId:H,latency:{ttft:0,total:Date.now()-_},tokens:{prompt_tokens:0,completion_tokens:0},request:(0,s.Fo)(a,ai),providerRequest:Y||T||null,response:{error:c,status:b,thinking:null},status:"error"})).catch(()=>{});let e=(0,m.lR)(Error(c),Z,$,b);return console.log(`${h.lm.red}[ERROR] ${e}${h.lm.reset}`),an.logError(Error(c),Y||T),(0,m.A1)(b,e,d)}let ax={provider:Z,model:$,body:a,stream:ai,translatedBody:T,finalBody:Y,requestStartTime:_,connectionId:H,apiKey:J,clientRawRequest:G,onRequestSuccess:E},ay=a=>(0,p.E5)({model:$,provider:Z,connectionId:H,...a}).catch(()=>{}),az=()=>(0,p.uw)($,Z,H,!1);if(!ag&&ah){let a=await (0,t.I)({...ax,providerResponse:V,sourceFormat:aa,trackDone:az,appendLog:ay});if(a)return av.handleComplete(),a}if(!ai){let a=await (0,u.N)({...ax,providerResponse:V,sourceFormat:aa,targetFormat:ad,reqLogger:an,toolNameMap:U,trackDone:az,appendLog:ay});return av.handleComplete(),a}let{onStreamComplete:aA,streamDetailId:aB}=(0,v.$)({...ax});return(0,v.M)({...ax,providerResponse:V,sourceFormat:aa,targetFormat:ad,userAgent:I,reqLogger:an,toolNameMap:U,streamController:av,onStreamComplete:aA,streamDetailId:aB})}r=(C.then?(await C)():C)[0],d()}catch(a){d(a)}})},99415:(a,b,c)=>{c.d(b,{e:()=>e});var d=c(14170);function e(a,b,c){if(a&&c&&"string"==typeof c)switch(b){case d.h.CLAUDE:!function(a,b){if("string"==typeof a.system&&a.system.length>0){a.system=`${b}
|
|
56
62
|
|
|
57
63
|
${a.system}`;return}Array.isArray(a.system)?a.system.unshift({type:"text",text:b}):a.system=b}(a,c);return;case d.h.GEMINI:case d.h.GEMINI_CLI:case d.h.VERTEX:case d.h.ANTIGRAVITY:var e,f;let g,h,i;e=a,f=c,g=e.request&&"object"==typeof e.request?e.request:e,h=Object.prototype.hasOwnProperty.call(g,"system_instruction")?"system_instruction":"systemInstruction",(i=g[h])&&Array.isArray(i.parts)?i.parts.unshift({text:f}):g[h]={parts:[{text:f}]};return;default:!function(a,b){var c,d;if("string"==typeof a.instructions){a.instructions=a.instructions?`${b}
|
|
58
64
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=891,exports.ids=[891],exports.modules={40891:(a,b,c)=>{c.d(b,{cO:()=>d.cO,Ol:()=>D,L_:()=>d.$w});var d=c(33342),e=c(92130),f=c(82506);let g="codebuddy",h="CodeBuddy",i=new Set(["codebuddy.ai","www.codebuddy.ai"]),j="personal-edition-user-id";function k(a){return new Promise(b=>setTimeout(b,a))}async function l({tokens:a,email:b}){let{createProviderConnection:d}=await Promise.resolve().then(c.bind(c,71998)),e={...a.providerSpecificData||{},loginEmail:b,automation:"gsuite-bulk"};a.webCookie&&(e.webCookie=a.webCookie,e.webCookieCapturedAt=a.webCookieCapturedAt||new Date().toISOString()),a.generatedApiKey&&(e.codebuddyApiKeyId=a.generatedApiKey.id||null,e.codebuddyApiKeyName=a.generatedApiKey.name||null,e.codebuddyApiKeyExpiresAt=a.generatedApiKey.expiresAt||null,e.authMode="generated-api-key");let f={provider:g,authType:"oauth",...a,email:b,providerSpecificData:e,expiresAt:a.expiresIn?new Date(Date.now()+1e3*a.expiresIn).toISOString():null,testStatus:"active"},h=a.generatedApiKey?.key||a.apiKey;return h&&(f.apiKey=h),{connection:await d(f)}}async function m(a){let{requestDeviceCode:b}=await Promise.all([c.e(5433),c.e(5024),c.e(4404),c.e(8590),c.e(3110),c.e(318),c.e(8895),c.e(4177),c.e(3159)]).then(c.bind(c,74177));return b(a)}async function n(a,b){let{pollForToken:d}=await Promise.all([c.e(5433),c.e(5024),c.e(4404),c.e(8590),c.e(3110),c.e(318),c.e(8895),c.e(4177),c.e(3159)]).then(c.bind(c,74177));return d(a,b)}async function o(a,b,c="www.codebuddy.ai"){if(!a||!b)return null;try{let d=await fetch(`https://${c}/v2/plugin/login/account?state=${encodeURIComponent(b)}`,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","X-Domain":c}});if(!d.ok)return null;let e=await d.json(),f=e?.data||e||{};if(!f||"object"!=typeof f)return null;return{uid:f.uid||null,nickname:f.nickname||null,email:f.email||null,enterpriseId:f.enterpriseId||null,enterpriseName:f.enterpriseName||null,rawAuth:f}}catch{return null}}async function p(a){if(!a)return null;try{let{getProviderConnections:b}=await Promise.resolve().then(c.bind(c,71998)),d=(await b({provider:g})).find(b=>"oauth"===b.authType&&b.email===a&&b.apiKey);return d?.apiKey||null}catch{return null}}async function q(a){if(!a?.cookies)return console.warn("[CodeBuddy] captureWebCookie: context.cookies not available"),null;try{let b=await a.cookies(["https://www.codebuddy.ai","https://codebuddy.ai"]);console.log(`[CodeBuddy] captureWebCookie: found ${b.length} raw cookies from browser context`);let c=b.filter(a=>{let b=String(a.domain||"").replace(/^\./,"").toLowerCase();return i.has(b)||b.endsWith(".codebuddy.ai")}).filter(a=>a.name&&a.value).sort((a,b)=>String(a.name).localeCompare(String(b.name)));if(0===c.length)return console.warn("[CodeBuddy] captureWebCookie: no useful cookies after filtering. Raw cookie names:",b.map(a=>`${a.name}@${a.domain}`).join(", ")),null;let d=c.map(a=>`${a.name}=${a.value}`).join("; ");return console.log(`[CodeBuddy] captureWebCookie: captured ${c.length} cookies (${d.length} chars). Names: ${c.map(a=>a.name).join(", ")}`),d}catch(a){return console.error("[CodeBuddy] captureWebCookie error:",a.message),null}}async function r(a,b={}){let c=await q(a);return c?{...b,webCookie:c,webCookieCapturedAt:new Date().toISOString()}:b}async function s(a,b,{method:c="POST",headers:d={},referrer:e,body:f}={}){return a.evaluate(async({url:a,method:b,headers:c,referrer:d,body:e})=>{let f=await fetch(a,{method:b,credentials:"include",headers:c,referrer:d,body:null==e?null:JSON.stringify(e)}),g=await f.text().catch(()=>""),h=null;try{h=g?JSON.parse(g):null}catch{h={raw:g}}return{ok:f.ok,status:f.status,payload:h,text:g}},{url:b,method:c,headers:d,referrer:e,body:f})}async function t(a,b){b?.("submitting_codebuddy_region_profile","Submitting CodeBuddy region profile via account API");let c=await s(a,"https://www.codebuddy.ai/console/login/account",{method:"POST",headers:{accept:"application/json, text/plain, */*","content-type":"application/json","x-requested-with":"XMLHttpRequest","x-domain":"www.codebuddy.ai"},referrer:"https://www.codebuddy.ai/register/user/complete",body:{attributes:{countryCode:["62"],countryFullName:["Indonesia"],countryName:["ID"]}}});return c.ok&&(c.payload?.code===0||c.payload?.code===200||void 0===c.payload?.code)?{ok:!0,code:c.payload?.code??0,message:c.payload?.msg||c.payload?.message||"OK"}:{ok:!1,code:c.payload?.code??c.status,message:c.payload?.msg||c.payload?.message||c.text||`HTTP ${c.status}`}}async function u(a,b){b?.("activating_codebuddy_trial","Applying or verifying CodeBuddy IDE trial");let c=()=>s(a,"https://www.codebuddy.ai/billing/ide/trial",{method:"POST",headers:{accept:"application/json, text/plain, */*","x-requested-with":"XMLHttpRequest","x-domain":"www.codebuddy.ai"},referrer:"https://www.codebuddy.ai/profile/plan",body:null}),d=await c(),e=d?.payload?.code;if(d.ok&&14051===e)return{ok:!0,code:e,state:"already_applied",message:d.payload?.msg||"has applied trial"};if(d.ok&&(0===e||200===e||void 0===e)){await k(1200);let a=await c(),b=a?.payload?.code;return a.ok&&(0===b||200===b||14051===b||void 0===b)?{ok:!0,code:b??e??0,state:14051===b?"applied_confirmed":"applied",message:a.payload?.msg||d.payload?.msg||"OK"}:{ok:!1,code:b??a.status,message:a.payload?.msg||a.payload?.message||a.text||`HTTP ${a.status}`}}return{ok:!1,code:e??d.status,message:d.payload?.msg||d.payload?.message||d.text||`HTTP ${d.status}`}}async function v(a,b,c=45e3){let d=Date.now(),e=null;for(;Date.now()-d<c;){let c=await a.evaluate(async()=>{try{let a=await fetch("/console/accounts",{method:"GET",credentials:"include",headers:{Accept:"application/json, text/plain, */*","Content-Type":"application/json","x-requested-with":"XMLHttpRequest","X-Domain":window.location.hostname||"www.codebuddy.ai"}}),b=await a.text(),c=null;try{c=b?JSON.parse(b):null}catch{c=null}let d=c?.data?.accounts||c?.accounts||[];return{ok:a.ok,status:a.status,payload:c,accounts:d}}catch(a){return{ok:!1,status:0,error:a?.message||String(a)}}});if(c?.ok&&Array.isArray(c.accounts)&&c.accounts.length>0){let a=c.accounts.find(a=>a?.lastLogin)||c.accounts[0]||{};return{account:a,userEnterpriseId:a.type&&"personal"!==a.type&&a.enterpriseId?a.enterpriseId:j}}e=c?.error||`status=${c?.status||"unknown"}`,b?.("waiting_codebuddy_key_session",`Waiting for CodeBuddy web console session (${e})`),await a.waitForTimeout(1500)}let f=Error(`CodeBuddy key session invalid: ${e||"no account session"}`);throw f.step="key_session_invalid",f.status="needs_manual",f}async function w(a,b,c){return a.evaluate(async({endpoint:a,name:b,expireInDays:c,userEnterpriseId:d})=>{let e=await fetch(a,{method:"POST",mode:"cors",credentials:"include",headers:{Accept:"application/json, text/plain, */*","Content-Type":"application/json"},body:JSON.stringify({name:b,expire_in_days:c,user_enterprise_id:d})}),f=await e.text(),g=null;try{g=f?JSON.parse(f):null}catch{g=null}return{ok:e.ok,status:e.status,payload:g,text:g?null:f.slice(0,300)}},{endpoint:"https://www.codebuddy.ai/console/api/client/v1/api-keys",name:b,expireInDays:365,userEnterpriseId:c})}async function x(a,b,c,{existingApiKey:d=null,directReplay:e=!1,userEnterpriseId:f=null}={}){let g,h;if(d)return{skipped:!0,key:d};if(!a){let a=Error("CodeBuddy browser session is not available for API key creation");throw a.step="key_session_invalid",a.status="needs_manual",a}let i=f||j;e?c?.("creating_codebuddy_api_key_direct","Replaying CodeBuddy API key creation from current web session"):(c?.("opening_codebuddy_keys","Opening CodeBuddy Access Keys page"),await a.goto("https://www.codebuddy.ai/profile/keys",{waitUntil:"domcontentloaded",timeout:3e4}),await a.waitForTimeout(2e3),i=(await v(a,c)).userEnterpriseId||i);let k=(g=String(b||"codebuddy").replace(/[^a-zA-Z0-9_.@-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,32)||"codebuddy",h=new Date().toISOString().replace(/[-:.TZ]/g,"").slice(0,14),`9router-${g}-${h}`.slice(0,50)),l=[k,`${k.slice(0,41)}-${Math.random().toString(36).slice(2,8)}`.slice(0,50)],m=null;for(let b=0;b<l.length;b+=1){let d=l[b];c?.("creating_codebuddy_api_key",`Creating CodeBuddy API key${b?" with retry name":""}`);let e=await w(a,d,i);if(e?.ok&&(e.payload?.code===0||e.payload?.code===200||e.payload?.code===void 0)){let a=function(a,b){let c=a?.data||a||{},d=c.key||c.api_key||c.apiKey;if(!d)return null;let e=c.item||c.apiKeyItem||c;return{key:d,id:e?.key_id||e?.id||e?.keyId||null,name:e?.name||c.name||b,expiresAt:c.expires_at||c.expiresAt||e?.expires_at||e?.expiresAt||null,createdAt:e?.created_at||e?.createdAt||null}}(e.payload,d);if(a?.key)return a;let b=Error("CodeBuddy API key created but secret was not returned");throw b.step="key_create_no_secret",b.status="failed",b}let f=function(a,b){let c=b?.code??b?.error?.code??b?.data?.code,d=b?.msg||b?.message||b?.error?.message||b?.error||`HTTP ${a}`;return 401===a||403===a?{step:"key_session_invalid",status:"needs_manual",message:`CodeBuddy key session invalid (${a})`,retryable:!1}:12601===c?{step:"key_limit_reached",status:"failed",message:"CodeBuddy API key limit reached",retryable:!1}:12502===c?{step:"key_name_exists",status:"failed",message:"CodeBuddy API key name already exists",retryable:!0}:{step:"key_create_failed",status:"failed",message:d||"CodeBuddy API key creation failed",retryable:!1}}(e?.status,e?.payload||{message:e?.text});if(m=f,f.retryable&&0===b)continue;let g=Error(f.message);throw g.step=f.step,g.status=f.status,g}let n=Error(m?.message||"CodeBuddy API key creation failed");throw n.step=m?.step||"key_create_failed",n.status=m?.status||"failed",n}async function y(a,b){let c=(a,c)=>b?.(a,c);try{c("navigating_to_dashboard","Navigating to CodeBuddy to complete registration"),await a.goto("https://www.codebuddy.ai/home",{waitUntil:"domcontentloaded",timeout:3e4}),await a.waitForTimeout(3e3);let b=Date.now(),d=!1;for(;Date.now()-b<3e4&&(0,f.Jl)(a);){if(await (0,f.i_)(a,c)||await (0,f.np)(a,c)||await (0,f.$K)(a,c,h)){d=!0,await a.waitForTimeout(1500);continue}break}d&&c("complete_register_done","CodeBuddy registration completed, establishing session"),c("codebuddy_registration_ready","CodeBuddy registration flow is ready for API key creation")}catch(a){c("complete_register_skipped",`Could not complete registration: ${a.message}`)}}async function z({manager:a,job:b,account:c,context:d,page:e,tokens:f,email:g,createOptions:h={}}){let i=f||{};if(e){let d=await t(e,(d,e)=>{a.setAccountStep(c,d,e),a.persistJobSnapshot(b,{forcePreview:!1})});i={...i,providerSpecificData:{...i.providerSpecificData||{},codebuddyRegionSubmitOk:d.ok,codebuddyRegionSubmitCode:d.code??null,codebuddyRegionSubmitMessage:d.message||null}};let f=await u(e,(d,e)=>{a.setAccountStep(c,d,e),a.persistJobSnapshot(b,{forcePreview:!1})});if(!f.ok){let a=Error(f.message||"CodeBuddy IDE trial activation failed");throw a.step="trial_not_activated",a.status="trial_not_activated",a}i={...i,providerSpecificData:{...i.providerSpecificData||{},codebuddyTrialState:f.state||null,codebuddyTrialCode:f.code??null,codebuddyTrialMessage:f.message||null}}}a.setAccountStep(c,"creating_codebuddy_api_key","Generating CodeBuddy Access Key"),await a.persistJobSnapshot(b,{forcePreview:!0});let j=i.apiKey||i.generatedApiKey?.key||await a.findExistingApiKey(g),k=j?{skipped:!0,key:j}:await a.createApiKey(e,g,(d,e)=>{a.setAccountStep(c,d,e),a.persistJobSnapshot(b,{forcePreview:!1})},{existingApiKey:j,...h});a.setAccountStep(c,"saving_connection","Saving CodeBuddy connection with generated API key"),await a.persistJobSnapshot(b,{forcePreview:!0});let l=await r(d,{...i,...k?.skipped?{}:{generatedApiKey:k}}),{connection:m}=await a.saveConnection({tokens:l,email:g});return a.finalizeAccount(c,"success",{connectionId:m.id,step:"connection_saved",message:k?.skipped?"CodeBuddy connection already has an API key":"CodeBuddy connection saved with generated API key"}),{connection:m,generatedApiKey:k}}async function A(a,b=500){if(!a)return{};try{let c=await Promise.race([a,k(b).then(()=>null)]);return c?.tokens||{}}catch{return{}}}async function B({manager:a,job:b,account:c,context:d,page:e,successPromise:f,reason:g}){a.setAccountStep(c,"restricted_key_replay","Restricted page detected; replaying CodeBuddy Access Key creation from web session"),await a.persistJobSnapshot(b,{forcePreview:!0});let h=await A(f);return z({manager:a,job:b,account:c,context:d,page:e,tokens:{...h,providerSpecificData:{...h.providerSpecificData||{},restrictedDetected:!0,restrictedReason:g||"Account restricted page detected during automation",oauthTokenCaptured:!!h.accessToken}},email:c.email,createOptions:{directReplay:!0,userEnterpriseId:j}})}class C extends d.Q6{constructor({browserLauncher:a,googleAutomation:b=e.rk,requestDeviceCodeFn:c=m,pollToken:d=n,saveConnection:f=l,createApiKeyFn:g=x,findExistingApiKeyFn:h=p,fetchLoginAccountFn:i=o,pollIntervalMs:j=5e3}={}){super({browserLauncher:a,googleAutomation:b,storageName:"codebuddy-bulk-import"}),this.requestDeviceCode=c,this.pollToken=d,this.saveConnection=f,this.createApiKey=g,this.findExistingApiKey=h,this.fetchLoginAccount=i,this.pollIntervalMs=j}async runManualFollowup(a,b,c,d,e){let f=(async()=>{let c=async()=>{let a=b.manualSession,c=a?.context||d,e=a?.headedBrowser||null;c&&await c.close().catch(()=>null),e&&await e.close().catch(()=>null)};try{let c=await e;if(a.cancelRequested){this.finalizeAccount(b,"cancelled",{error:"Job cancelled",step:"cancelled",message:"Job cancelled while waiting for manual completion"}),await this.persistJobSnapshot(a,{forcePreview:!0});return}let f=b.manualSession?.page;f&&(this.setAccountStep(b,"completing_registration","Completing CodeBuddy registration"),await this.persistJobSnapshot(a,{forcePreview:!0}),await y(f,(c,d)=>{this.setAccountStep(b,c,d),this.persistJobSnapshot(a,{forcePreview:!1})})),await z({manager:this,job:a,account:b,context:b.manualSession?.context||d,page:f||b.manualSession?.page,tokens:c.tokens,email:b.email}),await this.persistJobSnapshot(a,{forcePreview:!0})}catch(c){a.cancelRequested?this.finalizeAccount(b,"cancelled",{error:"Job cancelled",step:"cancelled",message:"Job cancelled while waiting for manual completion"}):this.finalizeAccount(b,c.status||"failed_exchange",{error:c.message||"Manual assist flow failed during token polling.",step:c.step||"exchange_failed",message:c.message||"Manual assist flow failed during token polling."}),await this.persistJobSnapshot(a,{forcePreview:!0})}finally{await c(),b.manualSession=null,b.runtimeSession=null,a.manualFollowups.delete(f),await this.persistJobSnapshot(a,{forcePreview:!0})}})();a.manualFollowups.add(f)}async processAccount(a,b,c){if(a.cancelRequested||!a.browser)return void this.finalizeAccount(b,"cancelled",{error:"Job cancelled"});let{context:e,page:f}=await (0,d.go)(a.browser,b.proxyUrl);b.runtimeSession={context:e,page:f};try{this.setAccountStep(b,"preparing_worker",`Worker ${c} is preparing a browser context`),await this.persistJobSnapshot(a,{forcePreview:!0}),this.setAccountStep(b,"requesting_codebuddy_state","Requesting CodeBuddy OAuth state");let d=await this.requestDeviceCode(g),i=function(a,b){if(!a&&!b)return a;let c=new URL(a||"https://www.codebuddy.ai/login"),d=c.searchParams.get("platform")||"CLI",e=b||c.searchParams.get("state"),f=new URL("https://www.codebuddy.ai/login");return f.searchParams.set("platform",d),e&&f.searchParams.set("state",e),f.toString()}(d.verification_uri,d.device_code);if(!i||!d.device_code)throw Error("CodeBuddy did not return an OAuth login URL");let j=function({deviceCode:a,pollToken:b,onStep:c,fetchLoginAccount:d=o,timeoutMs:e=9e5,pollIntervalMs:f=5e3,maxTransientErrors:h=6}){return(async()=>{let i=Date.now(),j=0,l=0;for(;Date.now()-i<e;){Date.now()-j>f-100&&(c?.("polling_codebuddy_token","Waiting for CodeBuddy OAuth token"),j=Date.now());let e=await b(g,a);if(e.success){let b=e.tokens?.accessToken||e.tokens?.access_token,c=await d(b,a);return{tokens:{...e.tokens,providerSpecificData:{...e.tokens?.providerSpecificData||{},...c?.uid?{uid:c.uid}:{},...c?.nickname?{nickname:c.nickname}:{},...c?.enterpriseId?{enterpriseId:c.enterpriseId}:{},...c?.enterpriseName?{enterpriseName:c.enterpriseName}:{},...c?.rawAuth?{rawAuth:c.rawAuth}:{},domain:"www.codebuddy.ai",oauthState:a}}}}if(!e.pending&&"authorization_pending"!==e.error&&"slow_down"!==e.error){if("request_failed"===e.error&&l<h){l+=1,c?.("codebuddy_poll_retry",`CodeBuddy token poll failed temporarily (${l}/${h}); retrying`),await k(f);continue}throw Error(e.errorDescription||e.error||"CodeBuddy OAuth polling failed")}await k(f)}throw Error("Timed out waiting for CodeBuddy OAuth token")})()}({deviceCode:d.device_code,pollToken:this.pollToken,fetchLoginAccount:this.fetchLoginAccount,pollIntervalMs:this.pollIntervalMs,onStep:(c,d)=>{this.setAccountStep(b,c,d),this.persistJobSnapshot(a,{forcePreview:!1})}});j.catch(()=>null);let l=await this.googleAutomation({page:f,authUrl:i,email:b.email,password:b.password,successPromise:j,serviceLabel:h,openingStep:"opening_codebuddy_oauth",openingMessage:"Opening CodeBuddy OAuth page",successStep:"codebuddy_token_received",successMessage:"CodeBuddy OAuth token received",onStep:(c,d)=>{this.setAccountStep(b,c,d),this.persistJobSnapshot(a,{forcePreview:!1})}});if("success"===l.status){this.setAccountStep(b,"completing_registration","Completing CodeBuddy registration"),await this.persistJobSnapshot(a,{forcePreview:!0}),await y(f,(c,d)=>{this.setAccountStep(b,c,d),this.persistJobSnapshot(a,{forcePreview:!1})});let{connection:c}=await z({manager:this,job:a,account:b,context:e,page:f,tokens:l.tokens,email:b.email});b.runtimeSession=null,await e.close().catch(()=>null),await this.persistJobSnapshot(a,{forcePreview:!0});return}if("failed_restricted"===l.status){await B({manager:this,job:a,account:b,context:e,page:f,successPromise:j,reason:l.error}),b.runtimeSession=null,await e.close().catch(()=>null),await this.persistJobSnapshot(a,{forcePreview:!0});return}if("needs_manual"===l.status){b.manualSession={context:e,page:f,opened:!1,openedAt:null},this.setAccountStep(b,"awaiting_manual","Waiting for manual completion in the browser session"),this.finalizeAccount(b,"needs_manual",{error:l.error,step:"awaiting_manual",message:l.error}),await this.persistJobSnapshot(a,{forcePreview:!0}),await this.runManualFollowup(a,b,c,e,j);return}this.finalizeAccount(b,l.status||"failed",{error:l.error||"CodeBuddy Google automation failed.",step:l.status||"failed",message:l.error||"CodeBuddy Google automation failed."}),b.runtimeSession=null,await e.close().catch(()=>null),await this.persistJobSnapshot(a,{forcePreview:!0})}catch(c){a.cancelRequested?this.finalizeAccount(b,"cancelled",{error:"Job cancelled",step:"cancelled",message:"Job cancelled while CodeBuddy automation was running"}):this.finalizeAccount(b,c.status||"failed",{error:c.message||"Unexpected CodeBuddy bulk import failure.",step:c.step||"failed",message:c.message||"Unexpected CodeBuddy bulk import failure."}),b.runtimeSession=null,await e.close().catch(()=>null),await this.persistJobSnapshot(a,{forcePreview:!0})}finally{b.password=void 0}}}function D(){return(!globalThis.__codeBuddyBulkImportSingleton&&(globalThis.__codeBuddyBulkImportSingleton={manager:new C}),globalThis.__codeBuddyBulkImportSingleton).manager}},92130:(a,b,c)=>{c.d(b,{rk:()=>d.rk});var d=c(82506)}};
|
|
1
|
+
"use strict";exports.id=891,exports.ids=[891],exports.modules={40891:(a,b,c)=>{c.d(b,{cO:()=>d.cO,Ol:()=>D,L_:()=>d.$w});var d=c(33342),e=c(92130),f=c(82506);let g="codebuddy",h="CodeBuddy",i=new Set(["codebuddy.ai","www.codebuddy.ai"]),j="personal-edition-user-id";function k(a){return new Promise(b=>setTimeout(b,a))}async function l({tokens:a,email:b}){let{createProviderConnection:d}=await Promise.resolve().then(c.bind(c,71998)),e={...a.providerSpecificData||{},loginEmail:b,automation:"gsuite-bulk"};a.webCookie&&(e.webCookie=a.webCookie,e.webCookieCapturedAt=a.webCookieCapturedAt||new Date().toISOString()),a.generatedApiKey&&(e.codebuddyApiKeyId=a.generatedApiKey.id||null,e.codebuddyApiKeyName=a.generatedApiKey.name||null,e.codebuddyApiKeyExpiresAt=a.generatedApiKey.expiresAt||null,e.authMode="generated-api-key");let f={provider:g,authType:"oauth",...a,email:b,providerSpecificData:e,expiresAt:a.expiresIn?new Date(Date.now()+1e3*a.expiresIn).toISOString():null,testStatus:"active"},h=a.generatedApiKey?.key||a.apiKey;return h&&(f.apiKey=h),{connection:await d(f)}}async function m(a){let{requestDeviceCode:b}=await Promise.all([c.e(7774),c.e(5433),c.e(5024),c.e(4404),c.e(8590),c.e(3110),c.e(318),c.e(8895),c.e(4177),c.e(3159)]).then(c.bind(c,74177));return b(a)}async function n(a,b){let{pollForToken:d}=await Promise.all([c.e(7774),c.e(5433),c.e(5024),c.e(4404),c.e(8590),c.e(3110),c.e(318),c.e(8895),c.e(4177),c.e(3159)]).then(c.bind(c,74177));return d(a,b)}async function o(a,b,c="www.codebuddy.ai"){if(!a||!b)return null;try{let d=await fetch(`https://${c}/v2/plugin/login/account?state=${encodeURIComponent(b)}`,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","X-Domain":c}});if(!d.ok)return null;let e=await d.json(),f=e?.data||e||{};if(!f||"object"!=typeof f)return null;return{uid:f.uid||null,nickname:f.nickname||null,email:f.email||null,enterpriseId:f.enterpriseId||null,enterpriseName:f.enterpriseName||null,rawAuth:f}}catch{return null}}async function p(a){if(!a)return null;try{let{getProviderConnections:b}=await Promise.resolve().then(c.bind(c,71998)),d=(await b({provider:g})).find(b=>"oauth"===b.authType&&b.email===a&&b.apiKey);return d?.apiKey||null}catch{return null}}async function q(a){if(!a?.cookies)return console.warn("[CodeBuddy] captureWebCookie: context.cookies not available"),null;try{let b=await a.cookies(["https://www.codebuddy.ai","https://codebuddy.ai"]);console.log(`[CodeBuddy] captureWebCookie: found ${b.length} raw cookies from browser context`);let c=b.filter(a=>{let b=String(a.domain||"").replace(/^\./,"").toLowerCase();return i.has(b)||b.endsWith(".codebuddy.ai")}).filter(a=>a.name&&a.value).sort((a,b)=>String(a.name).localeCompare(String(b.name)));if(0===c.length)return console.warn("[CodeBuddy] captureWebCookie: no useful cookies after filtering. Raw cookie names:",b.map(a=>`${a.name}@${a.domain}`).join(", ")),null;let d=c.map(a=>`${a.name}=${a.value}`).join("; ");return console.log(`[CodeBuddy] captureWebCookie: captured ${c.length} cookies (${d.length} chars). Names: ${c.map(a=>a.name).join(", ")}`),d}catch(a){return console.error("[CodeBuddy] captureWebCookie error:",a.message),null}}async function r(a,b={}){let c=await q(a);return c?{...b,webCookie:c,webCookieCapturedAt:new Date().toISOString()}:b}async function s(a,b,{method:c="POST",headers:d={},referrer:e,body:f}={}){return a.evaluate(async({url:a,method:b,headers:c,referrer:d,body:e})=>{let f=await fetch(a,{method:b,credentials:"include",headers:c,referrer:d,body:null==e?null:JSON.stringify(e)}),g=await f.text().catch(()=>""),h=null;try{h=g?JSON.parse(g):null}catch{h={raw:g}}return{ok:f.ok,status:f.status,payload:h,text:g}},{url:b,method:c,headers:d,referrer:e,body:f})}async function t(a,b){b?.("submitting_codebuddy_region_profile","Submitting CodeBuddy region profile via account API");let c=await s(a,"https://www.codebuddy.ai/console/login/account",{method:"POST",headers:{accept:"application/json, text/plain, */*","content-type":"application/json","x-requested-with":"XMLHttpRequest","x-domain":"www.codebuddy.ai"},referrer:"https://www.codebuddy.ai/register/user/complete",body:{attributes:{countryCode:["62"],countryFullName:["Indonesia"],countryName:["ID"]}}});return c.ok&&(c.payload?.code===0||c.payload?.code===200||void 0===c.payload?.code)?{ok:!0,code:c.payload?.code??0,message:c.payload?.msg||c.payload?.message||"OK"}:{ok:!1,code:c.payload?.code??c.status,message:c.payload?.msg||c.payload?.message||c.text||`HTTP ${c.status}`}}async function u(a,b){b?.("activating_codebuddy_trial","Applying or verifying CodeBuddy IDE trial");let c=()=>s(a,"https://www.codebuddy.ai/billing/ide/trial",{method:"POST",headers:{accept:"application/json, text/plain, */*","x-requested-with":"XMLHttpRequest","x-domain":"www.codebuddy.ai"},referrer:"https://www.codebuddy.ai/profile/plan",body:null}),d=await c(),e=d?.payload?.code;if(d.ok&&14051===e)return{ok:!0,code:e,state:"already_applied",message:d.payload?.msg||"has applied trial"};if(d.ok&&(0===e||200===e||void 0===e)){await k(1200);let a=await c(),b=a?.payload?.code;return a.ok&&(0===b||200===b||14051===b||void 0===b)?{ok:!0,code:b??e??0,state:14051===b?"applied_confirmed":"applied",message:a.payload?.msg||d.payload?.msg||"OK"}:{ok:!1,code:b??a.status,message:a.payload?.msg||a.payload?.message||a.text||`HTTP ${a.status}`}}return{ok:!1,code:e??d.status,message:d.payload?.msg||d.payload?.message||d.text||`HTTP ${d.status}`}}async function v(a,b,c=45e3){let d=Date.now(),e=null;for(;Date.now()-d<c;){let c=await a.evaluate(async()=>{try{let a=await fetch("/console/accounts",{method:"GET",credentials:"include",headers:{Accept:"application/json, text/plain, */*","Content-Type":"application/json","x-requested-with":"XMLHttpRequest","X-Domain":window.location.hostname||"www.codebuddy.ai"}}),b=await a.text(),c=null;try{c=b?JSON.parse(b):null}catch{c=null}let d=c?.data?.accounts||c?.accounts||[];return{ok:a.ok,status:a.status,payload:c,accounts:d}}catch(a){return{ok:!1,status:0,error:a?.message||String(a)}}});if(c?.ok&&Array.isArray(c.accounts)&&c.accounts.length>0){let a=c.accounts.find(a=>a?.lastLogin)||c.accounts[0]||{};return{account:a,userEnterpriseId:a.type&&"personal"!==a.type&&a.enterpriseId?a.enterpriseId:j}}e=c?.error||`status=${c?.status||"unknown"}`,b?.("waiting_codebuddy_key_session",`Waiting for CodeBuddy web console session (${e})`),await a.waitForTimeout(1500)}let f=Error(`CodeBuddy key session invalid: ${e||"no account session"}`);throw f.step="key_session_invalid",f.status="needs_manual",f}async function w(a,b,c){return a.evaluate(async({endpoint:a,name:b,expireInDays:c,userEnterpriseId:d})=>{let e=await fetch(a,{method:"POST",mode:"cors",credentials:"include",headers:{Accept:"application/json, text/plain, */*","Content-Type":"application/json"},body:JSON.stringify({name:b,expire_in_days:c,user_enterprise_id:d})}),f=await e.text(),g=null;try{g=f?JSON.parse(f):null}catch{g=null}return{ok:e.ok,status:e.status,payload:g,text:g?null:f.slice(0,300)}},{endpoint:"https://www.codebuddy.ai/console/api/client/v1/api-keys",name:b,expireInDays:365,userEnterpriseId:c})}async function x(a,b,c,{existingApiKey:d=null,directReplay:e=!1,userEnterpriseId:f=null}={}){let g,h;if(d)return{skipped:!0,key:d};if(!a){let a=Error("CodeBuddy browser session is not available for API key creation");throw a.step="key_session_invalid",a.status="needs_manual",a}let i=f||j;e?c?.("creating_codebuddy_api_key_direct","Replaying CodeBuddy API key creation from current web session"):(c?.("opening_codebuddy_keys","Opening CodeBuddy Access Keys page"),await a.goto("https://www.codebuddy.ai/profile/keys",{waitUntil:"domcontentloaded",timeout:3e4}),await a.waitForTimeout(2e3),i=(await v(a,c)).userEnterpriseId||i);let k=(g=String(b||"codebuddy").replace(/[^a-zA-Z0-9_.@-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,32)||"codebuddy",h=new Date().toISOString().replace(/[-:.TZ]/g,"").slice(0,14),`9router-${g}-${h}`.slice(0,50)),l=[k,`${k.slice(0,41)}-${Math.random().toString(36).slice(2,8)}`.slice(0,50)],m=null;for(let b=0;b<l.length;b+=1){let d=l[b];c?.("creating_codebuddy_api_key",`Creating CodeBuddy API key${b?" with retry name":""}`);let e=await w(a,d,i);if(e?.ok&&(e.payload?.code===0||e.payload?.code===200||e.payload?.code===void 0)){let a=function(a,b){let c=a?.data||a||{},d=c.key||c.api_key||c.apiKey;if(!d)return null;let e=c.item||c.apiKeyItem||c;return{key:d,id:e?.key_id||e?.id||e?.keyId||null,name:e?.name||c.name||b,expiresAt:c.expires_at||c.expiresAt||e?.expires_at||e?.expiresAt||null,createdAt:e?.created_at||e?.createdAt||null}}(e.payload,d);if(a?.key)return a;let b=Error("CodeBuddy API key created but secret was not returned");throw b.step="key_create_no_secret",b.status="failed",b}let f=function(a,b){let c=b?.code??b?.error?.code??b?.data?.code,d=b?.msg||b?.message||b?.error?.message||b?.error||`HTTP ${a}`;return 401===a||403===a?{step:"key_session_invalid",status:"needs_manual",message:`CodeBuddy key session invalid (${a})`,retryable:!1}:12601===c?{step:"key_limit_reached",status:"failed",message:"CodeBuddy API key limit reached",retryable:!1}:12502===c?{step:"key_name_exists",status:"failed",message:"CodeBuddy API key name already exists",retryable:!0}:{step:"key_create_failed",status:"failed",message:d||"CodeBuddy API key creation failed",retryable:!1}}(e?.status,e?.payload||{message:e?.text});if(m=f,f.retryable&&0===b)continue;let g=Error(f.message);throw g.step=f.step,g.status=f.status,g}let n=Error(m?.message||"CodeBuddy API key creation failed");throw n.step=m?.step||"key_create_failed",n.status=m?.status||"failed",n}async function y(a,b){let c=(a,c)=>b?.(a,c);try{c("navigating_to_dashboard","Navigating to CodeBuddy to complete registration"),await a.goto("https://www.codebuddy.ai/home",{waitUntil:"domcontentloaded",timeout:3e4}),await a.waitForTimeout(3e3);let b=Date.now(),d=!1;for(;Date.now()-b<3e4&&(0,f.Jl)(a);){if(await (0,f.i_)(a,c)||await (0,f.np)(a,c)||await (0,f.$K)(a,c,h)){d=!0,await a.waitForTimeout(1500);continue}break}d&&c("complete_register_done","CodeBuddy registration completed, establishing session"),c("codebuddy_registration_ready","CodeBuddy registration flow is ready for API key creation")}catch(a){c("complete_register_skipped",`Could not complete registration: ${a.message}`)}}async function z({manager:a,job:b,account:c,context:d,page:e,tokens:f,email:g,createOptions:h={}}){let i=f||{};if(e){let d=await t(e,(d,e)=>{a.setAccountStep(c,d,e),a.persistJobSnapshot(b,{forcePreview:!1})});i={...i,providerSpecificData:{...i.providerSpecificData||{},codebuddyRegionSubmitOk:d.ok,codebuddyRegionSubmitCode:d.code??null,codebuddyRegionSubmitMessage:d.message||null}};let f=await u(e,(d,e)=>{a.setAccountStep(c,d,e),a.persistJobSnapshot(b,{forcePreview:!1})});if(!f.ok){let a=Error(f.message||"CodeBuddy IDE trial activation failed");throw a.step="trial_not_activated",a.status="trial_not_activated",a}i={...i,providerSpecificData:{...i.providerSpecificData||{},codebuddyTrialState:f.state||null,codebuddyTrialCode:f.code??null,codebuddyTrialMessage:f.message||null}}}a.setAccountStep(c,"creating_codebuddy_api_key","Generating CodeBuddy Access Key"),await a.persistJobSnapshot(b,{forcePreview:!0});let j=i.apiKey||i.generatedApiKey?.key||await a.findExistingApiKey(g),k=j?{skipped:!0,key:j}:await a.createApiKey(e,g,(d,e)=>{a.setAccountStep(c,d,e),a.persistJobSnapshot(b,{forcePreview:!1})},{existingApiKey:j,...h});a.setAccountStep(c,"saving_connection","Saving CodeBuddy connection with generated API key"),await a.persistJobSnapshot(b,{forcePreview:!0});let l=await r(d,{...i,...k?.skipped?{}:{generatedApiKey:k}}),{connection:m}=await a.saveConnection({tokens:l,email:g});return a.finalizeAccount(c,"success",{connectionId:m.id,step:"connection_saved",message:k?.skipped?"CodeBuddy connection already has an API key":"CodeBuddy connection saved with generated API key"}),{connection:m,generatedApiKey:k}}async function A(a,b=500){if(!a)return{};try{let c=await Promise.race([a,k(b).then(()=>null)]);return c?.tokens||{}}catch{return{}}}async function B({manager:a,job:b,account:c,context:d,page:e,successPromise:f,reason:g}){a.setAccountStep(c,"restricted_key_replay","Restricted page detected; replaying CodeBuddy Access Key creation from web session"),await a.persistJobSnapshot(b,{forcePreview:!0});let h=await A(f);return z({manager:a,job:b,account:c,context:d,page:e,tokens:{...h,providerSpecificData:{...h.providerSpecificData||{},restrictedDetected:!0,restrictedReason:g||"Account restricted page detected during automation",oauthTokenCaptured:!!h.accessToken}},email:c.email,createOptions:{directReplay:!0,userEnterpriseId:j}})}class C extends d.Q6{constructor({browserLauncher:a,googleAutomation:b=e.rk,requestDeviceCodeFn:c=m,pollToken:d=n,saveConnection:f=l,createApiKeyFn:g=x,findExistingApiKeyFn:h=p,fetchLoginAccountFn:i=o,pollIntervalMs:j=5e3}={}){super({browserLauncher:a,googleAutomation:b,storageName:"codebuddy-bulk-import"}),this.requestDeviceCode=c,this.pollToken=d,this.saveConnection=f,this.createApiKey=g,this.findExistingApiKey=h,this.fetchLoginAccount=i,this.pollIntervalMs=j}async runManualFollowup(a,b,c,d,e){let f=(async()=>{let c=async()=>{let a=b.manualSession,c=a?.context||d,e=a?.headedBrowser||null;c&&await c.close().catch(()=>null),e&&await e.close().catch(()=>null)};try{let c=await e;if(a.cancelRequested){this.finalizeAccount(b,"cancelled",{error:"Job cancelled",step:"cancelled",message:"Job cancelled while waiting for manual completion"}),await this.persistJobSnapshot(a,{forcePreview:!0});return}let f=b.manualSession?.page;f&&(this.setAccountStep(b,"completing_registration","Completing CodeBuddy registration"),await this.persistJobSnapshot(a,{forcePreview:!0}),await y(f,(c,d)=>{this.setAccountStep(b,c,d),this.persistJobSnapshot(a,{forcePreview:!1})})),await z({manager:this,job:a,account:b,context:b.manualSession?.context||d,page:f||b.manualSession?.page,tokens:c.tokens,email:b.email}),await this.persistJobSnapshot(a,{forcePreview:!0})}catch(c){a.cancelRequested?this.finalizeAccount(b,"cancelled",{error:"Job cancelled",step:"cancelled",message:"Job cancelled while waiting for manual completion"}):this.finalizeAccount(b,c.status||"failed_exchange",{error:c.message||"Manual assist flow failed during token polling.",step:c.step||"exchange_failed",message:c.message||"Manual assist flow failed during token polling."}),await this.persistJobSnapshot(a,{forcePreview:!0})}finally{await c(),b.manualSession=null,b.runtimeSession=null,a.manualFollowups.delete(f),await this.persistJobSnapshot(a,{forcePreview:!0})}})();a.manualFollowups.add(f)}async processAccount(a,b,c){if(a.cancelRequested||!a.browser)return void this.finalizeAccount(b,"cancelled",{error:"Job cancelled"});let{context:e,page:f}=await (0,d.go)(a.browser,b.proxyUrl);b.runtimeSession={context:e,page:f};try{this.setAccountStep(b,"preparing_worker",`Worker ${c} is preparing a browser context`),await this.persistJobSnapshot(a,{forcePreview:!0}),this.setAccountStep(b,"requesting_codebuddy_state","Requesting CodeBuddy OAuth state");let d=await this.requestDeviceCode(g),i=function(a,b){if(!a&&!b)return a;let c=new URL(a||"https://www.codebuddy.ai/login"),d=c.searchParams.get("platform")||"CLI",e=b||c.searchParams.get("state"),f=new URL("https://www.codebuddy.ai/login");return f.searchParams.set("platform",d),e&&f.searchParams.set("state",e),f.toString()}(d.verification_uri,d.device_code);if(!i||!d.device_code)throw Error("CodeBuddy did not return an OAuth login URL");let j=function({deviceCode:a,pollToken:b,onStep:c,fetchLoginAccount:d=o,timeoutMs:e=9e5,pollIntervalMs:f=5e3,maxTransientErrors:h=6}){return(async()=>{let i=Date.now(),j=0,l=0;for(;Date.now()-i<e;){Date.now()-j>f-100&&(c?.("polling_codebuddy_token","Waiting for CodeBuddy OAuth token"),j=Date.now());let e=await b(g,a);if(e.success){let b=e.tokens?.accessToken||e.tokens?.access_token,c=await d(b,a);return{tokens:{...e.tokens,providerSpecificData:{...e.tokens?.providerSpecificData||{},...c?.uid?{uid:c.uid}:{},...c?.nickname?{nickname:c.nickname}:{},...c?.enterpriseId?{enterpriseId:c.enterpriseId}:{},...c?.enterpriseName?{enterpriseName:c.enterpriseName}:{},...c?.rawAuth?{rawAuth:c.rawAuth}:{},domain:"www.codebuddy.ai",oauthState:a}}}}if(!e.pending&&"authorization_pending"!==e.error&&"slow_down"!==e.error){if("request_failed"===e.error&&l<h){l+=1,c?.("codebuddy_poll_retry",`CodeBuddy token poll failed temporarily (${l}/${h}); retrying`),await k(f);continue}throw Error(e.errorDescription||e.error||"CodeBuddy OAuth polling failed")}await k(f)}throw Error("Timed out waiting for CodeBuddy OAuth token")})()}({deviceCode:d.device_code,pollToken:this.pollToken,fetchLoginAccount:this.fetchLoginAccount,pollIntervalMs:this.pollIntervalMs,onStep:(c,d)=>{this.setAccountStep(b,c,d),this.persistJobSnapshot(a,{forcePreview:!1})}});j.catch(()=>null);let l=await this.googleAutomation({page:f,authUrl:i,email:b.email,password:b.password,successPromise:j,serviceLabel:h,openingStep:"opening_codebuddy_oauth",openingMessage:"Opening CodeBuddy OAuth page",successStep:"codebuddy_token_received",successMessage:"CodeBuddy OAuth token received",onStep:(c,d)=>{this.setAccountStep(b,c,d),this.persistJobSnapshot(a,{forcePreview:!1})}});if("success"===l.status){this.setAccountStep(b,"completing_registration","Completing CodeBuddy registration"),await this.persistJobSnapshot(a,{forcePreview:!0}),await y(f,(c,d)=>{this.setAccountStep(b,c,d),this.persistJobSnapshot(a,{forcePreview:!1})});let{connection:c}=await z({manager:this,job:a,account:b,context:e,page:f,tokens:l.tokens,email:b.email});b.runtimeSession=null,await e.close().catch(()=>null),await this.persistJobSnapshot(a,{forcePreview:!0});return}if("failed_restricted"===l.status){await B({manager:this,job:a,account:b,context:e,page:f,successPromise:j,reason:l.error}),b.runtimeSession=null,await e.close().catch(()=>null),await this.persistJobSnapshot(a,{forcePreview:!0});return}if("needs_manual"===l.status){b.manualSession={context:e,page:f,opened:!1,openedAt:null},this.setAccountStep(b,"awaiting_manual","Waiting for manual completion in the browser session"),this.finalizeAccount(b,"needs_manual",{error:l.error,step:"awaiting_manual",message:l.error}),await this.persistJobSnapshot(a,{forcePreview:!0}),await this.runManualFollowup(a,b,c,e,j);return}this.finalizeAccount(b,l.status||"failed",{error:l.error||"CodeBuddy Google automation failed.",step:l.status||"failed",message:l.error||"CodeBuddy Google automation failed."}),b.runtimeSession=null,await e.close().catch(()=>null),await this.persistJobSnapshot(a,{forcePreview:!0})}catch(c){a.cancelRequested?this.finalizeAccount(b,"cancelled",{error:"Job cancelled",step:"cancelled",message:"Job cancelled while CodeBuddy automation was running"}):this.finalizeAccount(b,c.status||"failed",{error:c.message||"Unexpected CodeBuddy bulk import failure.",step:c.step||"failed",message:c.message||"Unexpected CodeBuddy bulk import failure."}),b.runtimeSession=null,await e.close().catch(()=>null),await this.persistJobSnapshot(a,{forcePreview:!0})}finally{b.password=void 0}}}function D(){return(!globalThis.__codeBuddyBulkImportSingleton&&(globalThis.__codeBuddyBulkImportSingleton={manager:new C}),globalThis.__codeBuddyBulkImportSingleton).manager}},92130:(a,b,c)=>{c.d(b,{rk:()=>d.rk});var d=c(82506)}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=9326,exports.ids=[1998,9326],exports.modules={33342:(a,b,c)=>{c.d(b,{Q6:()=>S,cO:()=>M,go:()=>P,KY:()=>T,$w:()=>D});var d=c(55511),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(49120),j=c(71998),k=c(21820),l=c.n(k);function m(a){return Number.isFinite(a)?Math.max(0,Math.floor(a)):0}Object.freeze({RAM_GB_PER_WORKER:4,CPU_DIVISOR:2,SAFE_MIN_WORKERS:1,SAFE_MAX_WORKERS:8,FALLBACK_WORKERS:4});var n=c(62409),o=c(82506);let p=new Set(["success","failed","failed_invalid_credentials","failed_exchange","failed_timeout","cancelled"]),q=h().join(i.DATA_DIR,"kiro-bulk-import"),r=h().join(q,"meta.json"),s=new Set(["queued","running","needs_manual"]);function t(){return new Date().toISOString()}function u(a=q){f().mkdirSync(a,{recursive:!0})}function v(a,b=q){return u(b),h().join(b,`${a}.json`)}function w(a){try{if(!f().existsSync(a))return null;return JSON.parse(f().readFileSync(a,"utf8"))}catch{return null}}function x(a,b){u(h().dirname(a));let c=`${a}.${process.pid}.tmp`;f().writeFileSync(c,JSON.stringify(b,null,2),"utf8"),f().renameSync(c,a)}function y(a,b=q){return u(b),h().join(b,`${a}.resume.enc`)}function z(){return(0,d.createHash)("sha256").update(String(function(){if(process.env.BULK_IMPORT_RESUME_SECRET)return process.env.BULK_IMPORT_RESUME_SECRET;let a=h().join(i.DATA_DIR,"bulk-import-resume-key");try{return f().readFileSync(a,"utf8").trim()}catch{}try{u(i.DATA_DIR);let b=(0,d.randomBytes)(32).toString("hex");return f().writeFileSync(a,b,{mode:384}),b}catch{return(0,d.randomBytes)(32).toString("hex")}}())).digest()}function A(a){try{f().existsSync(a)&&f().rmSync(a)}catch{}}function B(a=r){return w(a)?.latestJobId||null}function C(a){if(!0===a||"string"==typeof a&&"auto"===a.trim().toLowerCase())return Math.min(8,Math.max(1,function(a=null){let b=a||function(){let a=[];try{a=l().cpus()||[]}catch{a=[]}let b=0,c=0;try{b=l().totalmem()}catch{b=0}try{c=l().freemem()}catch{c=0}let d=Array.isArray(a)?a.length:0,e=a[0]?.model?String(a[0].model).trim():null,f=b/0x40000000,g=c/0x40000000,h="unknown",i="unknown";try{h=l().platform()}catch{}try{i=l().arch()}catch{}return{cpuCount:d,cpuModel:e,totalMemBytes:b,totalMemGb:f,freeMemBytes:c,freeMemGb:g,platform:h,arch:i}}(),{cpuCount:c,totalMemGb:d}=b,e=m(d/4),f=m(c/2),g="fallback",h=0;return e>0&&f>0?(h=Math.min(e,f),g=e<=f?"ram":"cpu"):e>0?(h=e,g="ram"):f>0?(h=f,g="cpu"):(h=4,g="fallback"),{recommended:Math.min(8,Math.max(1,h||4)),limitedBy:g,ramBudget:e,cpuBudget:f,minWorkers:1,maxWorkers:8,ramGbPerWorker:4,cpuDivisor:2,specs:b}}().recommended));let b=Number.parseInt(a,10);return Number.isFinite(b)?Math.min(8,Math.max(1,b)):4}function D(a=[]){let b=Array.isArray(a)?a:[],c=[],d=[];return b.forEach((a,b)=>{let e=String(a||"").trim();if(!e||e.startsWith("#"))return;let f="",g="";if(e.includes("|")){let[a="",...b]=e.split("|");f=a.trim(),g=b.join("|").trim()}else if(e.includes(" ")){let a=e.indexOf(" ");f=e.substring(0,a).trim(),g=e.substring(a+1).trim()}else if(e.includes(":")){let a=e.indexOf(":"),b=e.substring(0,a).trim();b.includes("@")&&(f=b,g=e.substring(a+1).trim())}f&&g?c.push({line:b+1,email:f,password:g}):d.push(b+1)}),{parsed:c,invalidLines:d}}function E(a){return{total:a.length,queued:a.filter(a=>"queued"===a.status).length,running:a.filter(a=>"running"===a.status).length,success:a.filter(a=>"success"===a.status).length,failed:a.filter(a=>"failed"===a.status||"failed_invalid_credentials"===a.status||"failed_exchange"===a.status||"failed_timeout"===a.status).length,needs_manual:a.filter(a=>"needs_manual"===a.status).length}}function F(a,b,c="info"){return{id:(0,d.randomUUID)(),at:t(),step:a,message:b,level:c}}function G(a,b,c,d="info"){let e=F(b,c,d);return a.currentStep=b,a.updatedAt=e.at,a.logs=a.logs||[],a.logs.push(e),a.logs.length>40&&a.logs.splice(0,a.logs.length-40),e}function H(a){return a.flatMap(a=>(a.logs||[]).map(b=>({...b,email:a.email,line:a.line,workerId:a.workerId||null,status:a.status}))).sort((a,b)=>String(a.at).localeCompare(String(b.at))).slice(-80)}function I(a){if(!a)return null;try{let b=new URL(a);return(b.username||b.password)&&(b.username="***",b.password="***"),b.toString()}catch{return a.length>20?`${a.slice(0,10)}***${a.slice(-10)}`:a}}function J(a){return{email:a.email,status:a.status,error:a.error||null,connectionId:a.connectionId||null,workerId:a.workerId||null,line:a.line,proxyUrl:I(a.proxyUrl)||null,currentStep:a.currentStep||null,updatedAt:a.updatedAt||null,logs:(a.logs||[]).slice(-8),manualSessionAvailable:!!a.manualSession?.page&&"needs_manual"===a.status,manualSessionOpened:!!a.manualSession?.opened}}function K(a,b={}){return{jobId:a.jobId,status:a.status,summary:E(a.accounts),concurrency:a.concurrency,createdAt:a.createdAt,startedAt:a.startedAt,finishedAt:a.finishedAt,accounts:a.accounts.map(J),activity:H(a.accounts),error:a.error||null,preview:b.preview||null}}function L(a){if(!a||s.has(a.status))return!1;let b=a.finishedAt?Date.parse(a.finishedAt):NaN;return!!Number.isFinite(b)&&Date.now()-b<=18e5}function M(a,b={}){return a?{found:!0,stale:!1,recoverable:s.has(a.status)||L(a),job:a}:{found:!1,stale:!!b.stale,recoverable:!1,job:null}}async function N(a){let{launchBulkImportBrowser:b}=await c.e(5949).then(c.bind(c,75949));return b({engine:a?.engine||"chromium"})}async function O(a){let{exchangeAndSaveKiroSocialConnection:b}=await c.e(4136).then(c.bind(c,34136));return b(a)}async function P(a,b){let c=b?{proxy:{server:b}}:{},d="";try{d=a.browserType().name()}catch{}"firefox"===d&&(c.viewport=null);let e=await a.newContext(c),f=await e.newPage();return{context:e,page:f}}async function Q(a){let b,d;if(!a?.manualSession?.context)return!1;let e=a.manualSession.context,f=a.manualSession.page,g=e.browser?.(),h=null,i="";try{h=await e.storageState()}catch{h=null}try{i=f?.url?.()||""}catch{i=""}let{chromium:j}=await Promise.resolve().then(c.bind(c,83237));try{b=await j.launch({headless:!1,args:["--start-maximized"]})}catch{return!1}try{d=await b.newContext({viewport:null,...h?{storageState:h}:{}})}catch{return await b.close().catch(()=>null),!1}let k=await d.newPage();if(i)try{await k.goto(i,{waitUntil:"domcontentloaded",timeout:2e4})}catch{}let l=a.manualSession.rebind;if(a.manualSession.context=d,a.manualSession.page=k,a.manualSession.headedBrowser=b,"function"==typeof l)try{await l({context:d,page:k})}catch{}return e.close().catch(()=>null),g&&g!==b&&g.close().catch(()=>null),!0}async function R(a,{account:b}={}){if(!a)return!1;try{let c=a.context?.(),d=c?.browser?.();if(b&&function(a){if(!a)return!0;let b=a._options||a._initializer||{};return"boolean"!=typeof b.headless||b.headless}(d)&&await Q(b))return await b.manualSession.page.bringToFront?.().catch(()=>null),!0;if(!c?.newCDPSession)return await a.bringToFront?.().catch(()=>null),!0;let e=await c.newCDPSession(a),f=null;try{let a=await e.send("Target.getTargetInfo"),b=a?.targetInfo?.targetId,c=await e.send("Browser.getWindowForTarget",b?{targetId:b}:{});f=c?.windowId??null}catch{f=null}return null!=f&&await e.send("Browser.setWindowBounds",{windowId:f,bounds:{windowState:"normal",left:80,top:80,width:1280,height:960}}).catch(()=>null),await a.bringToFront?.().catch(()=>null),await e.detach?.().catch(()=>null),!0}catch{return await a.bringToFront?.().catch(()=>null),!0}}class S{constructor({browserLauncher:a=N,googleAutomation:b=o.Th,socialExchange:c=O,kiroServiceFactory:d=()=>new n.v,storageName:e="kiro-bulk-import"}={}){this.browserLauncher=a,this.googleAutomation=b,this.socialExchange=c,this.kiroServiceFactory=d,this.storageDir=h().join(i.DATA_DIR,e),this.metaFile=h().join(this.storageDir,"meta.json"),this.jobs=new Map,this.latestJobId=B(this.metaFile)}persistResumeBlob(a){try{!function(a,b){try{let c,e,g,i,j;u(h().dirname(a));let k=`${a}.${process.pid}.tmp`;f().writeFileSync(k,JSON.stringify((c=(0,d.randomBytes)(12),e=(0,d.createCipheriv)("aes-256-gcm",z(),c),g=Buffer.from(JSON.stringify(b),"utf8"),i=Buffer.concat([e.update(g),e.final()]),j=e.getAuthTag(),{v:1,alg:"aes-256-gcm",iv:c.toString("base64"),tag:j.toString("base64"),data:i.toString("base64")})),{mode:384}),f().renameSync(k,a)}catch{}}(y(a.jobId,this.storageDir),{jobId:a.jobId,concurrency:a.concurrency,engine:a.engine,proxyPoolMode:a.proxyPoolMode,proxyUrls:a.proxyUrls||[],createdAt:a.createdAt,accounts:a.accounts.map(a=>({line:a.line,email:a.email,password:a.password}))})}catch{}}hydrateInterruptedJob(a){if(!a||this.jobs.has(a))return!1;let b=w(v(a,this.storageDir));if(!b||!s.has(b.status))return!1;let c=function(a){let b=w(a);if(!b)return null;if(!b||"aes-256-gcm"!==b.alg||!b.iv||!b.tag||!b.data)return null;try{let a=(0,d.createDecipheriv)("aes-256-gcm",z(),Buffer.from(b.iv,"base64"));a.setAuthTag(Buffer.from(b.tag,"base64"));let c=Buffer.concat([a.update(Buffer.from(b.data,"base64")),a.final()]);return JSON.parse(c.toString("utf8"))}catch{return null}}(y(a,this.storageDir));if(!c||!Array.isArray(c.accounts)||0===c.accounts.length)return this.markJobInterrupted(a,b),!1;let e=new Map(c.accounts.map(a=>[a.line,a.password])),f=new Map(c.accounts.map(a=>[a.line,a.email])),g=b.createdAt||c.createdAt||t(),h=(b.accounts||[]).map(a=>{let b=p.has(a.status),c=Array.isArray(a.logs)?[...a.logs]:[],d={line:a.line,email:a.email||f.get(a.line)||"",password:b?void 0:e.get(a.line)??null,proxyUrl:null,status:a.status,error:a.error||null,connectionId:a.connectionId||null,workerId:b&&a.workerId||null,manualSession:null,runtimeSession:null,currentStep:a.currentStep||null,updatedAt:a.updatedAt||g,logs:c};return b||(d.status="queued",d.currentStep="queued",d.error=null,d.logs.push(F("resumed","Re-queued after a server restart to continue automatically"))),d}),i={jobId:a,status:"running",concurrency:C(c.concurrency),engine:c.engine||"chromium",proxyPoolMode:c.proxyPoolMode||"none",proxyUrls:Array.isArray(c.proxyUrls)?c.proxyUrls:[],createdAt:g,startedAt:b.startedAt||g,finishedAt:null,error:null,cancelRequested:!1,browser:null,nextIndex:0,manualFollowups:new Set,persistPromise:Promise.resolve(),lastPreview:b.preview||null,lastPreviewCapturedAt:0,accounts:h};return(this.jobs.set(a,i),this.latestJobId||(this.latestJobId=a),h.some(a=>"queued"===a.status))?this.runJob(a):(i.status="completed",i.finishedAt=t(),this.persistJobSnapshot(i,{forcePreview:!1}),A(y(a,this.storageDir))),!0}markJobInterrupted(a,b){let c="Job was interrupted by a server restart and could not be auto-resumed (saved credentials were unavailable). Please start a new bulk login.",d=(b.accounts||[]).map(a=>{if(p.has(a.status))return a;let b=Array.isArray(a.logs)?[...a.logs]:[];return b.push(F("failed",c,"error")),{...a,status:"failed",error:c,currentStep:"failed",updatedAt:t(),manualSessionAvailable:!1,logs:b}}),e={...b,status:"failed",error:b.error||c,finishedAt:b.finishedAt||t(),accounts:d,summary:E(d),activity:H(d)};try{x(v(a,this.storageDir),e)}catch{}A(y(a,this.storageDir))}async startJob({accounts:a,concurrency:b,engine:e,proxyPoolMode:f,proxyPoolId:g}){let{parsed:h,invalidLines:i}=D(a);if(!h.length){let a=i.length>0?"Invalid account format. Use one account per line: gmail@example.com|password":"At least one account entry is required",b={error:a};throw i.length>0&&(b.invalidLines=i),Object.assign(Error(a),b)}if(i.length>0){let a="Invalid account format. Use one account per line: gmail@example.com|password";throw Object.assign(Error(a),{error:a,invalidLines:i})}let k=[];if("all"===f)k=(await (0,j.ui)({isActive:!0})).map(a=>a.proxyUrl).filter(Boolean);else if("single"===f&&g){let a=await (0,j.hr)(g);a?.isActive&&a?.proxyUrl&&(k=[a.proxyUrl])}let l=(0,d.randomUUID)(),m=t(),{normalizeBulkImportEngine:n,DEFAULT_BULK_IMPORT_ENGINE:o}=await c.e(5949).then(c.bind(c,75949)),p=e?n(e):o,q={jobId:l,status:"running",concurrency:C(b),engine:p,proxyPoolMode:f||"none",proxyUrls:k,createdAt:m,startedAt:m,finishedAt:null,error:null,cancelRequested:!1,browser:null,nextIndex:0,manualFollowups:new Set,persistPromise:Promise.resolve(),lastPreview:null,lastPreviewCapturedAt:0,accounts:h.map(a=>({line:a.line,email:a.email,password:a.password,proxyUrl:null,status:"queued",error:null,connectionId:null,workerId:null,manualSession:null,runtimeSession:null,currentStep:"queued",updatedAt:m,logs:[F("queued","Queued and waiting for an available worker")]}))};return this.jobs.set(l,q),this.latestJobId=l,!function(a,b=r){x(b,{latestJobId:a||null,updatedAt:t()})}(l,this.metaFile),await this.persistJobSnapshot(q,{forcePreview:!1}),this.persistResumeBlob(q),this.runJob(l),K(q)}getJob(a){this.hydrateInterruptedJob(a);let b=this.jobs.get(a);return b?K(b,{preview:b.lastPreview||null}):w(v(a,this.storageDir))}async getJobWithPreview(a){this.hydrateInterruptedJob(a);let b=this.jobs.get(a);if(!b)return w(v(a,this.storageDir));let c=await this.capturePreview(b);return b.lastPreview=c||b.lastPreview||null,await this.persistJobSnapshot(b,{forcePreview:!1}),K(b,{preview:b.lastPreview||null})}async getLatestJobWithPreview({includeRecentTerminal:a=!1}={}){let b=this.latestJobId||B(this.metaFile);if(!b)return null;let c=await this.getJobWithPreview(b);return c&&(s.has(c.status)||a&&L(c))?c:null}cancelJob(a){let b=this.jobs.get(a);return b?(b.cancelRequested=!0,"queued"===b.status&&(b.status="cancelled",b.finishedAt=t(),b.accounts.forEach(a=>{"queued"===a.status&&(a.status="cancelled")})),b.browser&&(b.browser.close().catch(()=>null),b.browser=null),this.persistJobSnapshot(b,{forcePreview:!0}),K(b)):w(v(a,this.storageDir))}async openManualSession(a,b){let c=this.jobs.get(a);if(!c)return null;let d=Number.parseInt(b,10),e=c.accounts.find(a=>a.workerId===d&&"needs_manual"===a.status&&a.manualSession?.page);if(!e)return{ok:!1,error:"Manual session not found for this worker",job:K(c)};let f=await R(e.manualSession.page,{account:e});return e.manualSession.opened=f,e.manualSession.openedAt=f?e.manualSession.openedAt||t():e.manualSession.openedAt||null,await this.persistJobSnapshot(c,{forcePreview:!0}),{ok:!0,job:K(c),account:J(e)}}dequeueAccount(a,b){for(;a.nextIndex<a.accounts.length;){let c=a.accounts[a.nextIndex];if(a.nextIndex+=1,"queued"===c.status)return c.status="running",c.workerId=b,c.error=null,a.proxyUrls?.length&&(c.proxyUrl=a.proxyUrls[(a.nextIndex-1)%a.proxyUrls.length]),G(c,"worker_assigned",`Worker ${b} picked up this account${c.proxyUrl?` (proxy: ${I(c.proxyUrl)})`:""}`),this.persistJobSnapshot(a,{forcePreview:!1}),c}return null}finalizeAccount(a,b,c={}){return a.status=b,a.error=c.error||null,a.connectionId=c.connectionId||null,(c.step||c.message)&&G(a,c.step||b,c.message||c.error||b.replaceAll("_"," ")),a}setAccountStep(a,b,c,d="info"){G(a,b,c,d)}async persistJobSnapshot(a,{forcePreview:b=!1}={}){if(!a)return;let c=async()=>{if(b||Date.now()-(a.lastPreviewCapturedAt||0)>=1500){let b=await this.capturePreview(a);b&&(a.lastPreview=b),a.lastPreviewCapturedAt=Date.now()}x(v(a.jobId,this.storageDir),K(a,{preview:a.lastPreview||null}))};a.persistPromise=Promise.resolve(a.persistPromise).catch(()=>null).then(c),await a.persistPromise}async capturePreview(a){let b=a.accounts.find(a=>"running"===a.status&&a.runtimeSession?.page)||a.accounts.find(a=>"needs_manual"===a.status&&a.manualSession?.page);if(!b)return null;let c=b.runtimeSession?.page||b.manualSession?.page;if(!c)return null;try{let a=await c.screenshot({type:"jpeg",quality:55,fullPage:!1,animations:"disabled",caret:"hide"});return{email:b.email,workerId:b.workerId||null,status:b.status,step:b.currentStep||null,updatedAt:b.updatedAt||t(),imageData:`data:image/jpeg;base64,${a.toString("base64")}`}}catch{return{email:b.email,workerId:b.workerId||null,status:b.status,step:b.currentStep||null,updatedAt:b.updatedAt||t(),imageData:null}}}async runManualFollowup(a,b,c,d,e,f){let g=(async()=>{let c=async()=>{let a=b.manualSession,c=a?.context||d,e=a?.headedBrowser||null;c&&await c.close().catch(()=>null),e&&await e.close().catch(()=>null)};try{let c=await e;if(a.cancelRequested){this.finalizeAccount(b,"cancelled",{error:"Job cancelled",step:"cancelled",message:"Job cancelled while waiting for manual completion"}),await this.persistJobSnapshot(a,{forcePreview:!0});return}this.setAccountStep(b,"exchanging_tokens","Exchanging Kiro callback for OAuth tokens"),await this.persistJobSnapshot(a,{forcePreview:!0});let{connection:d}=await this.socialExchange({code:c.code,codeVerifier:f,provider:"google"});this.finalizeAccount(b,"success",{connectionId:d.id,step:"connection_saved",message:"Kiro connection saved successfully"}),await this.persistJobSnapshot(a,{forcePreview:!0})}catch(c){a.cancelRequested?this.finalizeAccount(b,"cancelled",{error:"Job cancelled",step:"cancelled",message:"Job cancelled while waiting for manual completion"}):this.finalizeAccount(b,"failed_exchange",{error:c.message||"Manual assist flow failed during token exchange.",step:"exchange_failed",message:c.message||"Manual assist flow failed during token exchange."}),await this.persistJobSnapshot(a,{forcePreview:!0})}finally{await c(),b.manualSession=null,b.runtimeSession=null,a.manualFollowups.delete(g),await this.persistJobSnapshot(a,{forcePreview:!0})}})();a.manualFollowups.add(g)}async processAccount(a,b,c){if(a.cancelRequested||!a.browser)return void this.finalizeAccount(b,"cancelled",{error:"Job cancelled"});let d=this.kiroServiceFactory().createSocialAuthorization("google"),{context:e,page:f}=await P(a.browser,b.proxyUrl),g=(0,o.zZ)(e,f);b.runtimeSession={context:e,page:f};try{this.setAccountStep(b,"preparing_worker",`Worker ${c} is preparing a browser context`),await this.persistJobSnapshot(a,{forcePreview:!0});let h=await this.googleAutomation({page:f,authUrl:d.authUrl,email:b.email,password:b.password,callbackPromise:g,onStep:(c,d)=>{this.setAccountStep(b,c,d),this.persistJobSnapshot(a,{forcePreview:!1})}});if("success"===h.status){this.setAccountStep(b,"exchanging_tokens","Exchanging Kiro callback for OAuth tokens"),await this.persistJobSnapshot(a,{forcePreview:!0});let{connection:c}=await this.socialExchange({code:h.code,codeVerifier:d.codeVerifier,provider:"google"});this.finalizeAccount(b,"success",{connectionId:c.id,step:"connection_saved",message:"Kiro connection saved successfully"}),b.runtimeSession=null,await e.close().catch(()=>null),await this.persistJobSnapshot(a,{forcePreview:!0});return}if("needs_manual"===h.status){b.manualSession={context:e,page:f,opened:!1,openedAt:null,rebind:"function"==typeof g?.rebind?g.rebind:null},this.setAccountStep(b,"awaiting_manual","Waiting for manual completion in the browser session"),this.finalizeAccount(b,"needs_manual",{error:h.error,step:"awaiting_manual",message:h.error}),await this.persistJobSnapshot(a,{forcePreview:!0}),await this.runManualFollowup(a,b,c,e,g,d.codeVerifier);return}let i=p.has(h.status)?h.status:"failed";this.finalizeAccount(b,i,{error:h.error||"Kiro Google automation failed.",step:i,message:h.error||"Kiro Google automation failed."}),b.runtimeSession=null,await e.close().catch(()=>null),await this.persistJobSnapshot(a,{forcePreview:!0})}catch(c){this.finalizeAccount(b,"failed",{error:c.message||"Unexpected Kiro bulk import failure.",step:"failed",message:c.message||"Unexpected Kiro bulk import failure."}),b.runtimeSession=null,await e.close().catch(()=>null),await this.persistJobSnapshot(a,{forcePreview:!0})}finally{b.password=void 0}}async runWorker(a,b){for(;!a.cancelRequested;){let c=this.dequeueAccount(a,b);if(!c)return;await this.processAccount(a,c,b)}}async runJob(a){let b=this.jobs.get(a);if(b)try{b.browser=await this.browserLauncher(b),b.accounts.forEach(a=>{"queued"===a.status&&1===(a.logs||[]).length&&this.setAccountStep(a,"waiting_for_worker","Waiting for a free worker")}),await this.persistJobSnapshot(b,{forcePreview:!1});let a=Math.min(b.concurrency,Math.max(b.accounts.length,1)),c=Array.from({length:a},(a,c)=>this.runWorker(b,c+1));await Promise.allSettled(c),b.manualFollowups.size>0&&await Promise.allSettled([...b.manualFollowups]),b.cancelRequested?(b.status="cancelled",b.accounts.forEach(a=>{("queued"===a.status||"running"===a.status)&&this.finalizeAccount(a,"cancelled",{error:"Job cancelled",step:"cancelled",message:"Job cancelled before completion"})})):b.status="completed",await this.persistJobSnapshot(b,{forcePreview:!0})}catch(a){b.status="failed",b.error=a.message||"Failed to start Kiro bulk import job.",b.accounts.forEach(a=>{("queued"===a.status||"running"===a.status)&&(this.finalizeAccount(a,"failed",{error:b.error,step:"failed",message:b.error}),a.password=void 0)}),await this.persistJobSnapshot(b,{forcePreview:!0})}finally{b.browser&&(await b.browser.close().catch(()=>null),b.browser=null),b.finishedAt=t(),await this.persistJobSnapshot(b,{forcePreview:!0}),A(y(b.jobId,this.storageDir))}}}function T(){return(!globalThis.__kiroBulkImportSingleton&&(globalThis.__kiroBulkImportSingleton={manager:new S}),globalThis.__kiroBulkImportSingleton).manager}},50122:(a,b,c)=>{c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}},71998:(a,b,c)=>{c.d(b,{Fh:()=>d.Fh,L9:()=>d.L9,Mc:()=>d.Mc,OM:()=>d.OM,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,createProviderConnection:()=>d.iE,fK:()=>d.fK,fv:()=>d.fv,getProviderConnections:()=>d.getProviderConnections,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,o5:()=>d.o5,op:()=>d.op,rj:()=>d.updateProviderConnection,uL:()=>d.uL,ui:()=>d.ui,uv:()=>d.uv});var d=c(89718)},82506:(a,b,c)=>{c.d(b,{$K:()=>Q,Jl:()=>E,PB:()=>T,Th:()=>V,i_:()=>P,np:()=>O,rk:()=>U,zZ:()=>S});let d='input[type="email"], input[autocomplete="username"], input#identifierId, input[name="identifier"], input[name="Email"], input[type="text"][autofocus], input[aria-label*="Email" i], input[aria-label*="email" i], input[aria-label*="phone" i], input[aria-label*="telepon" i]',e=['button:has-text("Next")','button:has-text("Berikutnya")','button:has-text("Continue")','div[role="button"]:has-text("Next")','div[role="button"]:has-text("Berikutnya")',"#identifierNext button","#passwordNext button"],f=["#submit_approve_access","#submit_approve_access button","#confirm",'form#tos_form input[type="submit"]','button[jsname]:has-text("Allow")','button:has-text("Allow")','[role="button"]:has-text("Allow")','input[type="submit"][value="Allow"]','input[type="button"][value="Allow"]','button[jsname]:has-text("Izinkan")','button:has-text("Izinkan")','[role="button"]:has-text("Izinkan")','button:has-text("Continue")','button:has-text("Next")','button:has-text("Yes")','button:has-text("Accept")','button:has-text("Lanjutkan")','button:has-text("Berikutnya")','button:has-text("Setuju")','button:has-text("Saya mengerti")','button:has-text("Oke")','button:has-text("OK")','button:has-text("Got it")','button:has-text("I understand")','div[role="button"]:has-text("Continue")','div[role="button"]:has-text("Next")','div[role="button"]:has-text("Allow")','div[role="button"]:has-text("Lanjutkan")','div[role="button"]:has-text("Berikutnya")','div[role="button"]:has-text("Izinkan")','div[role="button"]:has-text("Setuju")','div[role="button"]:has-text("Saya mengerti")','div[role="button"]:has-text("Oke")','div[role="button"]:has-text("OK")','div[role="button"]:has-text("Got it")','div[role="button"]:has-text("I understand")','input[type="button"][value="Saya mengerti"]','input[type="submit"][value="Saya mengerti"]'],g=['button:has-text("Skip")','button:has-text("Lewati")','button:has-text("Not now")','button:has-text("Bukan sekarang")','button:has-text("No thanks")','button:has-text("Tidak sekarang")','div[role="button"]:has-text("Skip")','div[role="button"]:has-text("Not now")'],h=["#social-google","a#social-google",'a:has-text("Sign up with Google")','a:has-text("Log in with Google")','button:has-text("Sign up with Google")','button:has-text("Log in with Google")','button:has-text("Google")','a:has-text("Google")','div[role="button"]:has-text("Google")','span:has-text("Google")','[aria-label*="Google"]','[data-provider*="google" i]'],i=["#agree-policy-account","#agree-policy","#agree-policy-sso",'input[type="checkbox"][id*="agree" i]','input[type="checkbox"][name*="agree" i]','input[type="checkbox"][id*="policy" i]','input[type="checkbox"][name*="policy" i]','input[type="checkbox"][id*="terms" i]','input[type="checkbox"][name*="terms" i]','.login-checkbox input[type="checkbox"]','[class*="checkbox"] input[type="checkbox"]','[class*="agree"] input[type="checkbox"]','input[type="checkbox"]'],j=['.ui-dialog button:has-text("Confirm")','dialog button:has-text("Confirm")','button:has-text("Confirm")','button:has-text("I agree")','button:has-text("Agree")','button:has-text("同意")','button:has-text("确认")'],k=['button:has-text("Continue")','[role="button"]:has-text("Continue")','button:has-text("Get started")','button:has-text("GET STARTED")','input[type="submit"][value="GET STARTED"]','button:has-text("Start")','button:has-text("Confirm")','button:has-text("Done")','button:has-text("Next")','button:has-text("Skip")','button:has-text("Not now")','button:has-text("Save")','button:has-text("Create")','button:has-text("Enter")','button:has-text("Launch")','button:has-text("Use CodeBuddy")','button:has-text("Go to CodeBuddy")'],l=["select",'[role="combobox"]','.page-region [role="combobox"]',".page-region .t-select",'.page-region [class*="t-select"]','.page-region [class*="select"]',".page-region input[placeholder]",'button:has-text("Region")','[role="button"]:has-text("Region")','button:has-text("Select region")','[role="button"]:has-text("Select region")','button:has-text("Data region")','[aria-label*="region" i]','[placeholder*="region" i]'],m=["text=/^Indonesia$/i","text=/^ID$/i","text=/^Singapore$/i","text=/^SG$/i","text=/^Japan$/i","text=/^JP$/i","text=/^Thailand$/i","text=/^TH$/i","text=/^Global$/i","text=/^International$/i","text=/^United States$/i","text=/^US$/i","text=/^Asia Pacific$/i","text=/^Hong Kong$/i","text=/^Default$/i"],n=[{selector:'input[name*="workspace" i]',value:"Default"},{selector:'input[placeholder*="workspace" i]',value:"Default"},{selector:'input[name*="team" i]',value:"Default"},{selector:'input[placeholder*="team" i]',value:"Default"},{selector:'input[name*="name" i]',value:"Default"},{selector:'input[placeholder*="name" i]',value:"Default"}],o=["wrong password","incorrect password","couldn't find your google account","couldn’t find your google account","enter a valid email","couldn’t sign you in","couldn't sign you in","invalid email or password","password is incorrect"],p=["2-step verification","2-step verification required","verify it’s you","verify it's you","check your phone","confirm it’s you","confirm it's you","recovery email","recovery phone","suspicious sign-in prevented","unusual activity detected","captcha","try again later"],q=["restricted","account has been restricted","account is restricted","account has been suspended","account is suspended","account has been disabled","account is disabled","account has been banned","account is banned","access denied","account blocked","your account has been","violation of terms","terms of service violation","temporarily locked","permanently locked","account locked","akun dibatasi","akun diblokir","akun ditangguhkan"],r=["welcome to your new google account","selamat datang di akun google baru anda","welcome to your new account","selamat datang di akun baru","privacy and terms","privasi dan persyaratan","personalize your google services","personalisasikan layanan google anda","add recovery phone","tambahkan nomor telepon pemulihan","choose your settings","pilih setelan anda"],s=["welcome to your new account","selamat datang di akun baru","your administrator decides which","administrator anda memutuskan layanan","your organisation administrator manages","your organization administrator manages"];function t(a){if(!a||!a.startsWith("kiro://kiro.kiroAgent/authenticate-success"))return null;let b=a.indexOf("?"),c=new URLSearchParams(b>=0?a.slice(b+1):""),d=c.get("code"),e=c.get("state");return d?{callbackUrl:a,code:d,state:e}:null}function u(a){let b="function"==typeof a.frames?a.frames():[];return[a,...b.filter(b=>b!==a.mainFrame?.())]}async function v(a,b){for(let c of u(a))for(let a of b){let b=c.locator(a).first();if(await b.count().catch(()=>0)&&await b.isVisible().catch(()=>!1))return await b.click({timeout:5e3}).catch(()=>null),!0}return!1}async function w(a,b){for(let c of u(a))for(let a of b){let b=c.locator(a).first();if(await b.count().catch(()=>0)){if((await b.scrollIntoViewIfNeeded().catch(()=>null),await b.isVisible().catch(()=>!1)&&await b.isEnabled().catch(()=>!0))&&await b.click({timeout:5e3}).then(()=>!0).catch(()=>!1))return!0}}return!1}async function x(a,b){for(let c of u(a))for(let a of b){let b=c.locator(a).first();if(!await b.count().catch(()=>0))continue;if(await b.isChecked().catch(()=>!1))return!0;let d=await b.isVisible().catch(()=>!1);if(d&&await b.check({force:!0,timeout:5e3}).then(()=>!0).catch(()=>!1)||d&&await b.click({force:!0,timeout:5e3}).then(()=>!0).catch(()=>!1)||await c.evaluate(a=>{let b=document.querySelector(a);return b instanceof HTMLInputElement&&(b.checked=!0,b.dispatchEvent(new Event("input",{bubbles:!0})),b.dispatchEvent(new Event("change",{bubbles:!0})),b.checked)},a).catch(()=>!1))return!0}return!1}async function y(a,b){for(let c of u(a)){let a=c.locator(b).first();if(await a.count().catch(()=>0)&&await a.isVisible().catch(()=>!1))return a}return null}async function z(a,b,{timeout:c=15e3,pollInterval:d=500}={}){let e=Date.now()+c;for(;Date.now()<e;){let c=await y(a,b);if(c)return c;let f=e-Date.now();if(f<=0)break;await new Promise(a=>setTimeout(a,Math.min(d,f)))}return null}async function A(a,b,{timeout:c=15e3}={}){if(!a||null==b)return!1;try{await a.click({timeout:5e3})}catch{}try{await a.fill("",{timeout:3e3})}catch{}try{let d=Math.floor(40+80*Math.random());await a.type(b,{delay:d,timeout:c})}catch{try{await a.fill(b,{timeout:c})}catch{return!1}}let d="";try{d=await a.inputValue()}catch{d=""}if(d===b)return!0;try{await a.click({timeout:5e3})}catch{}try{await a.fill("")}catch{}try{await a.type(b,{delay:50,timeout:c})}catch{return!1}try{d=await a.inputValue()}catch{d=""}return d===b}async function B(a){let b=[];for(let c of u(a))try{b.push(await c.evaluate(()=>document.body?.innerText||""))}catch{}return b.join("\n")}function C(a,b){let c=String(a||"").toLowerCase();return b.some(a=>c.includes(a))}function D(a){try{let b=new URL(a.url());return"accounts.google.com"===b.hostname||b.hostname.endsWith(".accounts.google.com")}catch{return!1}}function E(a){try{let b=new URL(a.url());return/codebuddy\.(ai|cn)$/.test(b.hostname)||b.hostname.endsWith(".codebuddy.ai")||b.hostname.endsWith(".codebuddy.cn")}catch{return!1}}async function F(a,b){if(!D(a))return!1;let c=await B(a);return!!/wants to access|ingin mengakses|akses ke akun google|allow/i.test(c)&&(await a.evaluate(()=>{let a=document.scrollingElement||document.documentElement||document.body;a&&(a.scrollTop=a.scrollHeight),window.scrollTo(0,document.body?.scrollHeight||document.documentElement?.scrollHeight||0)}).catch(()=>null),await a.waitForTimeout(300),!!await w(a,f)&&(b("approving_google_consent","Approving Google OAuth consent"),await a.waitForTimeout(1e3),!0))}async function G(a,b){let c=String(b||"");if(!C(c,r))return!1;if(await a.evaluate(()=>{let a=document.scrollingElement||document.documentElement||document.body;a&&(a.scrollTop=a.scrollHeight),window.scrollTo(0,document.body?.scrollHeight||document.documentElement?.scrollHeight||0)}).catch(()=>null),await a.waitForTimeout(500),C(c,s)){if(await w(a,f))return await a.waitForTimeout(700),!0;if(await a.evaluate(()=>{let a=[document.getElementById("confirm"),document.querySelector('form#tos_form input[type="submit"]'),document.querySelector('input[type="submit"][value="Saya mengerti"]'),document.querySelector('input[type="submit"][value="I understand"]')].filter(Boolean)[0];return!!a&&(a.scrollIntoView({block:"center"}),a.click(),!0)}).catch(()=>!1)||await a.evaluate(()=>{let a=document.getElementById("tos_form");return!!a&&(a.submit(),!0)}).catch(()=>!1))return await a.waitForTimeout(800),!0}return!!(await w(a,g)||await w(a,f))&&(await a.waitForTimeout(700),!0)}async function H(a){let b=/global|international|singapore|united states|^us$|asia|hong kong|default/i;for(let c of u(a)){let a=c.locator("select"),d=await a.count().catch(()=>0);for(let c=0;c<d;c+=1){let d=a.nth(c),e=await d.isVisible().catch(()=>!1),f=await d.isEnabled().catch(()=>!0);if(!e||!f)continue;let g=await d.evaluate((a,b)=>{let c=RegExp(b,"i"),d=[...a.options].filter(a=>!a.disabled&&""!==a.value),e=d.find(a=>c.test(`${a.label} ${a.textContent} ${a.value}`));return(e||d[0])?.value||""},b.source).catch(()=>"");if(g&&await d.selectOption(g).then(()=>!0).catch(()=>!1))return!0}}return!1}async function I(a){let b=!1;for(let c of u(a))for(let{selector:a,value:d}of n){let e=c.locator(a).first();if(!await e.count().catch(()=>0))continue;let f=await e.isVisible().catch(()=>!1),g=await e.isEnabled().catch(()=>!0);!(!f||!g||await e.inputValue().catch(()=>""))&&await e.fill(d,{timeout:5e3}).then(()=>!0).catch(()=>!1)&&(b=!0)}return b}async function J(a,b){await b.scrollIntoViewIfNeeded().catch(()=>null);let c=await b.isVisible().catch(()=>!1),d=await b.isEnabled().catch(()=>!0);if(!c||!d)return!1;let e=await b.boundingBox().catch(()=>null);if(!e||e.width<=0||e.height<=0)return!1;let f=e.x+e.width/2,g=e.y+e.height/2;return await a.mouse.move(f,g),await a.mouse.down(),await a.mouse.up(),!0}async function K(a,b,c){for(let d of u(a)){let e=d.locator(b),f=Math.min(await e.count().catch(()=>0),80),g=[];for(let a=0;a<f;a+=1){let b=e.nth(a);if(!await b.isVisible().catch(()=>!1))continue;let c=(await b.innerText({timeout:1e3}).catch(()=>"")||await b.textContent({timeout:1e3}).catch(()=>"")||"").trim();c&&g.push({locator:b,text:c})}for(let b of c){let c=g.find(a=>b.test(a.text));if(c&&await J(a,c.locator).catch(()=>!1))return c.text}if(g[0]&&await J(a,g[0].locator).catch(()=>!1))return g[0].text}return""}async function L(a,b){for(let c of u(a))for(let d of b){let b=c.locator(d),e=Math.min(await b.count().catch(()=>0),20);for(let c=0;c<e;c+=1){let d=b.nth(c);if(await J(a,d).catch(()=>!1))return!0}}return!1}async function M(a,b){if(!E(a)||D(a))return!1;let c=await a.evaluate(async()=>{let a=document.body?.innerText||"";if(!(document.querySelector(".page-region")||/select\s+region|region|country|area|get started|complete/i.test(a)))return null;try{let a=await fetch("https://www.codebuddy.ai/console/login/account",{method:"POST",credentials:"include",headers:{accept:"application/json, text/plain, */*","content-type":"application/json","x-requested-with":"XMLHttpRequest","x-domain":window.location.hostname||"www.codebuddy.ai"},referrer:"https://www.codebuddy.ai/register/user/complete",body:JSON.stringify({attributes:{countryCode:["62"],countryFullName:["Indonesia"],countryName:["ID"]}})}),b=await a.text().catch(()=>""),c=null;try{c=b?JSON.parse(b):null}catch{c={raw:b}}if(a.ok&&(!c||0===c.code||200===c.code||void 0===c.code))return{action:"submitted_via_api"};return{action:"api_failed",status:a.status,code:c?.code,message:c?.msg||c?.message||b||`HTTP ${a.status}`}}catch(a){return{action:"api_failed",message:a?.message||"region submit request failed"}}}).catch(()=>null);return!!c?.action&&("submitted_via_api"===c.action?(b("submitting_codebuddy_region","Submitted CodeBuddy region via account API"),await a.waitForTimeout(1500),!0):(b("codebuddy_region_api_failed",c.message?`CodeBuddy region API submit failed: ${c.message}`:"CodeBuddy region API submit failed"),!1))}async function N(a,b){if(!E(a)||D(a)||!await a.locator(".page-region").first().count().then(Boolean).catch(()=>!1))return!1;let c=[/indonesia|^id$|\u5370\u5ea6\u5c3c\u897f\u4e9a/i,/singapore|^sg$|\u65b0\u52a0\u5761/i,/japan|^jp$|\u65e5\u672c/i,/thailand|^th$|\u6cf0\u56fd/i,/global|international|default/i];if(await L(a,[".page-region [class*='28B894']",".page-region button:has-text('Get started')",".page-region button:has-text('Start')",".page-region button:has-text('Submit')",".page-region button:has-text('Continue')",".page-region [role='button']:has-text('Get started')",".page-region [role='button']:has-text('Start')",".page-region [role='button']:has-text('Submit')",".page-region [role='button']:has-text('Continue')"]))return b("submitting_codebuddy_region","Submitted CodeBuddy region selection"),await a.waitForTimeout(1200),!0;let d=await K(a,"ul.dropdown-section li, .dropdown-section li, [role='option'], .t-select-option, [class*='option']",c);if(d)return b("selecting_codebuddy_region",`Selected CodeBuddy region: ${d}`),await a.waitForTimeout(900),!0;if(!await L(a,[".page-region .t-select",".page-region [class*='t-select']",".page-region [role='combobox']",".page-region input[placeholder]",".page-region [class*='select']",".page-region [class*='cursor-pointer']"]))return!1;b("opening_codebuddy_region_selector","Opening CodeBuddy region selector"),await a.waitForTimeout(600);let e=await K(a,"ul.dropdown-section li, .dropdown-section li, [role='option'], .t-select-option, [class*='option']",c);return e&&(b("selecting_codebuddy_region",`Selected CodeBuddy region: ${e}`),await a.waitForTimeout(900)),!0}async function O(a,b){if(!E(a)||D(a))return!1;if(await M(a,b)||await N(a,b))return!0;for(let c of u(a)){let d=await c.evaluate(()=>{let a=a=>{if(!(a instanceof HTMLElement))return!1;let b=window.getComputedStyle(a);if("hidden"===b.visibility||"none"===b.display||0===Number(b.opacity))return!1;let c=a.getBoundingClientRect();return c.width>0&&c.height>0},b=document.querySelector(".page-region"),c=document.body?.innerText||"";if(!(b||/select\s+region|region|country|area|get started|complete/i.test(c)))return null;let d=a=>{for(let b of(a.scrollIntoView({block:"center",inline:"center"}),["pointerdown","mousedown","pointerup","mouseup","click"]))a.dispatchEvent(new MouseEvent(b,{bubbles:!0,cancelable:!0,view:window,buttons:+!!b.endsWith("down")}))},e=[/indonesia|^id$|\u5370\u5ea6\u5c3c\u897f\u4e9a/i,/singapore|^sg$|\u65b0\u52a0\u5761/i,/japan|^jp$|\u65e5\u672c/i,/thailand|^th$|\u6cf0\u56fd/i,/global|international|default/i],f=b||document.body,g=["button","[role='button']","input[type='submit']",".t-button","[class*='button']","[class*='28B894']"],h=[...f.querySelectorAll(g.join(","))].filter(a).filter(a=>{let b=`${a.innerText||""} ${a.getAttribute("aria-label")||""} ${a.getAttribute("value")||""}`,c=a.getAttribute("class")||"";return/submit|start|continue|confirm|done|get started|complete|\u5b8c\u6210|\u5f00\u59cb|\u786e\u5b9a|\u4e0b\u4e00\u6b65/i.test(b)||c.includes("28B894")});if(h.length)return d(h[0]),{action:"submitted"};let i=["ul.dropdown-section li",".dropdown-section li","[role='option']",".t-select-option","[class*='option']","[class*='dropdown'] li"],j=[...document.querySelectorAll(i.join(","))].filter(a).filter(a=>(a.innerText||a.textContent||"").trim());if(j.length){let a=e.map(a=>j.find(b=>a.test((b.innerText||b.textContent||"").trim()))).find(Boolean)||j[0],b=(a.innerText||a.textContent||"").trim();return d(a),{action:"selected",label:b}}let k=["[role='combobox']",".t-select","[class*='t-select']","[class*='select']","input[placeholder]",".text-sm","[class*='cursor-pointer']"],l=[...f.querySelectorAll(k.join(","))].filter(a).filter(a=>{let b=`${a.innerText||""} ${a.getAttribute("placeholder")||""} ${a.getAttribute("aria-label")||""}`;return/region|country|area|select|placeholder|\u5730\u533a|\u56fd\u5bb6|\u9009\u62e9/i.test(b)||a.matches?.(".t-select,[class*='t-select'],input[placeholder],[class*='select']")});return l.length?(d(l[0]),{action:"opened"}):null}).catch(()=>null);if(d?.action){if("selected"===d.action)return b("selecting_codebuddy_region",`Selected CodeBuddy region${d.label?`: ${d.label}`:""}`),await a.waitForTimeout(700),!0;if("submitted"===d.action)return b("submitting_codebuddy_region","Submitted CodeBuddy region selection"),await a.waitForTimeout(1200),!0;return b("opening_codebuddy_region_selector","Opening CodeBuddy region selector"),await a.waitForTimeout(700),!0}}return!1}async function P(a,b){if(!E(a)||D(a))return!1;let c=await a.evaluate(async()=>{let a=new URL(window.location.href);if(!/\/started\/?$/.test(a.pathname))return null;let b=a.searchParams.get("platform")||"CLI",c=a.searchParams.get("state");if(!c)return null;for(let a of[...new Set([window.location.hostname||"www.codebuddy.ai"].filter(Boolean))]){let d=new URL("/console/auth/login",window.location.origin);d.searchParams.set("platform",b),d.searchParams.set("state",c),d.searchParams.set("domain",a);try{let b=await fetch(d.toString(),{method:"GET",credentials:"include",redirect:"manual",headers:{"x-requested-with":"XMLHttpRequest","X-Domain":a}});if("opaqueredirect"===b.type||b.status>=300&&b.status<400)return{action:"attempted",domain:a,message:"redirected"};let c=await b.text(),e=null;try{e=c?JSON.parse(c):null}catch{e={raw:c}}if(b.ok&&(!e||0===e.code||200===e.code||void 0===e.code))return{action:"authorized",domain:a};if(b.ok)return{action:"attempted",domain:a,code:e?.code,message:e?.msg||e?.message||""}}catch(a){}}return{action:"failed"}}).catch(()=>null);return!!c?.action&&"failed"!==c.action&&("authorized"===c.action?b("authorizing_codebuddy_cli_state","Authorized CodeBuddy CLI login state"):b("authorizing_codebuddy_cli_state",c.message?`Attempted CodeBuddy CLI login state authorization: ${c.message}`:"Attempted CodeBuddy CLI login state authorization"),await a.waitForTimeout(1200),!0)}async function Q(a,b,c){return!(!E(a)||D(a))&&(await w(a,j)?(b("accepting_provider_privacy_dialog",`Confirmed ${c} privacy or terms dialog`),await a.waitForTimeout(800),!0):!!(await P(a,b)||await O(a,b))||(await H(a)?(b("selecting_provider_region",`Selected ${c} region`),await a.waitForTimeout(700),!0):await w(a,l)?(b("opening_provider_region_selector",`Opening ${c} region selector`),await a.waitForTimeout(500),await w(a,m)&&(b("selecting_provider_region",`Selected ${c} region`),await a.waitForTimeout(700)),!0):await w(a,m)?(b("selecting_provider_region",`Selected ${c} region`),await a.waitForTimeout(700),!0):await I(a)?(b("filling_provider_onboarding",`Filled ${c} onboarding defaults`),await a.waitForTimeout(500),!0):!!await w(a,k)&&(b("continuing_provider_onboarding",`Continuing ${c} onboarding`),await a.waitForTimeout(1e3),!0)))}async function R(a,b){return!D(a)&&(await w(a,j)?(b("accepting_provider_privacy_dialog","Confirmed provider privacy agreement dialog"),await a.waitForTimeout(1e3),!0):(await x(a,i)&&(b("accepting_provider_terms","Accepted provider terms for Google login"),await a.waitForTimeout(400)),!!await w(a,h)&&(b("selecting_google_login","Selecting Google login"),await a.waitForTimeout(1e3),await w(a,j)&&(b("accepting_provider_privacy_dialog","Confirmed provider privacy agreement dialog"),await a.waitForTimeout(1e3)),!0)))}function S(a,b,c=9e5){let d,e,f=new Promise((a,b)=>{d=a,e=b}),g=!1,h=new Set,i=new Map,j=setTimeout(()=>{k(null,Error("Timed out waiting for Kiro callback"))},c);function k(a,b=null){if(!g){for(let a of(g=!0,clearTimeout(j),i.values()))for(let b of a)try{b()}catch{}i.clear(),b?e(b):d(a)}}function l(a,b){if(!a||h.has(a))return;h.add(a);let c=a=>{let b=t(a?.url?.()||"");b&&k(b)},d=a=>{let b=t(a?.url?.()||"");b&&k(b)},e=a=>{let b=t(a?.url?.()||"");b&&k(b)},f=()=>{let b=t(a.url?.()||"");b&&k(b)};a.on("framenavigated",c),a.on("request",d),a.on("requestfailed",e),a.on("domcontentloaded",f),a.on("load",f),b.push(()=>{a.off("framenavigated",c),a.off("request",d),a.off("requestfailed",e),a.off("domcontentloaded",f),a.off("load",f)});let g=t(a.url?.()||"");g&&k(g)}function m(a,b){if(g||i.has(a))return;let c=[];i.set(a,c);let d=a=>l(a,c);a.on("page",d),c.push(()=>a.off("page",d)),b&&l(b,c)}return m(a,b),f.rebind=({context:a,page:b}={})=>{a&&m(a,b)},f}function T(a,b,{prefix:c,timeoutMs:d=9e5}={}){let e,f,g=new Promise((a,b)=>{e=a,f=b}),h=!1,i=new Set,j=new Map,k=setTimeout(()=>{l(null,Error("Timed out waiting for OAuth callback"))},d);function l(a,b=null){if(!h){for(let a of(h=!0,clearTimeout(k),j.values()))for(let b of a)try{b()}catch{}j.clear(),b?f(b):e(a)}}function m(a,b){if(!a||i.has(a))return;i.add(a);let d=a=>{let b=function(a,b){if(!a||!b||!a.startsWith(b))return null;let c=a.indexOf("?"),d=new URLSearchParams(c>=0?a.slice(c+1):""),e=d.get("code"),f=d.get("state");return e?{callbackUrl:a,code:e,state:f}:null}(a||"",c);b&&l(b)},e=a=>d(a?.url?.()||""),f=a=>d(a?.url?.()||""),g=a=>d(a?.url?.()||""),h=()=>d(a.url?.()||"");a.on("framenavigated",e),a.on("request",f),a.on("requestfailed",g),a.on("domcontentloaded",h),a.on("load",h),b.push(()=>{a.off("framenavigated",e),a.off("request",f),a.off("requestfailed",g),a.off("domcontentloaded",h),a.off("load",h)}),d(a.url?.()||"")}function n(a,b){if(h||j.has(a))return;let c=[];j.set(a,c);let d=a=>m(a,c);a.on("page",d),c.push(()=>a.off("page",d)),b&&m(b,c)}return n(a,b),g.rebind=({context:a,page:b}={})=>{a&&n(a,b)},g}async function U({page:a,authUrl:b,email:c,password:g,successPromise:h,shortTimeoutMs:i=9e4,serviceLabel:j="provider",openingStep:k="opening_google_oauth",openingMessage:l="Opening Google OAuth page",successStep:m="oauth_success_received",successMessage:n="OAuth success received",onStep:r}){let s=Date.now(),t=(a,b)=>{r?.(a,b)};t(k,l),await a.goto(b,{waitUntil:"domcontentloaded",timeout:6e4}),await a.waitForTimeout(2e3),await R(a,t);let u=await z(a,d,{timeout:15e3});for(u&&(t("entering_email","Entering Google email"),await A(u,c)?(t("submitting_email","Submitting email"),await v(a,e)):t("email_fill_failed","Could not fill the Google email field; will retry in the polling loop"));Date.now()-s<i;){let b=await Promise.race([h.then(a=>({kind:"success",result:a})).catch(a=>({kind:"success_error",error:a})),new Promise(a=>setTimeout(()=>a(null),800))]);if(b?.kind==="success")return t(m,n),{status:"success",...b.result};if(b?.kind==="success_error")return t("oauth_timeout",`Timed out waiting for ${j} authorization`),{status:"failed_timeout",error:b.error?.message||`Timed out waiting for ${j} authorization`};if(await F(a,t))continue;if(function(a){try{let b=new URL(a.url());if(b.pathname.startsWith("/not-supported"))return!0;return"about.google"===b.hostname||b.hostname.endsWith(".about.google")}catch{return!1}}(a))return t("manual_assist_required","Google blocked the automated browser (not-supported). Use the Camoufox engine or complete manually."),{status:"needs_manual",error:"Google blocked the automated browser at the OAuth consent step (not-supported page). Switch to the Camoufox engine or finish this account manually."};let i=await B(a);if(C(i,o))return t("invalid_credentials","Google rejected the supplied email or password"),{status:"failed_invalid_credentials",error:"Google rejected the supplied email or password."};if(C(i,q))return t("account_restricted","Account is restricted, suspended, or banned by the provider"),{status:"failed_restricted",error:"Account is restricted, suspended, or banned. Skipping."};if(C(i,p))return t("manual_assist_required","Google requested CAPTCHA, 2FA, or recovery verification"),{status:"needs_manual",error:"Manual assist required in the browser session (CAPTCHA, 2FA, recovery, or suspicious-login challenge)."};if(await G(a,i)){t("google_onboarding","Accepted Google onboarding or privacy prompt");continue}if(await Q(a,t,j))continue;let k=await y(a,d);if(k){t("entering_email","Entering Google email"),await A(k,c)?(t("submitting_email","Submitting email"),await v(a,e)):t("email_fill_failed","Could not fill the Google email field; retrying loop"),await a.waitForTimeout(700);continue}let l=await y(a,'input[type="password"], input[name="Passwd"], input[name="password"], input[aria-label*="Password" i], input[aria-label*="password" i], input[aria-label*="Sandi" i], input[aria-label*="kata sandi" i]');if(l){t("entering_password","Entering Google password"),await A(l,g)?(t("submitting_password","Submitting password"),await v(a,e)):t("password_fill_failed","Could not fill the Google password field; retrying loop"),await a.waitForTimeout(700);continue}if(!await R(a,t)){if(await v(a,f)){t("approving_consent",`Approving Google or ${j} consent`),await a.waitForTimeout(700);continue}t("waiting_for_next_screen",`Waiting for the next Google or ${j} screen`),await a.waitForTimeout(700)}}return t("manual_assist_required",`Flow did not complete ${j} authorization automatically`),{status:"needs_manual",error:`Manual assist required in the browser session because the login flow did not complete ${j} authorization automatically.`}}async function V({page:a,authUrl:b,email:c,password:d,callbackPromise:e,shortTimeoutMs:f=9e4,onStep:g}){return U({page:a,authUrl:b,email:c,password:d,successPromise:e,shortTimeoutMs:f,serviceLabel:"Kiro",openingStep:"opening_google_oauth",openingMessage:"Opening Google OAuth page",successStep:"kiro_callback_received",successMessage:"Kiro callback received",onStep:g})}},89718:(a,b,c)=>{c.d(b,{CG:()=>d.CG,Dj:()=>d.Dj,Fh:()=>d.Fh,Iq:()=>d.Iq,K1:()=>d.K1,KJ:()=>d.KJ,KK:()=>d.KK,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,Mc:()=>d.Mc,NR:()=>d.NR,OM:()=>d.OM,PX:()=>d.PX,Pc:()=>d.Pc,QI:()=>d.QI,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Uv:()=>d.Uv,VT:()=>d.VT,XW:()=>d.XW,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,bI:()=>d.bI,c:()=>d.c,dK:()=>d.dK,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,getProviderConnections:()=>d.P,getQuotaSnapshot:()=>d.LF,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,jd:()=>d.jd,mt:()=>d.mt,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,p3:()=>d.p3,qd:()=>d.qd,r4:()=>d.r4,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,uv:()=>d.uv,yF:()=>d.yF,yW:()=>d.yW,yg:()=>d.yg,zP:()=>d.zP,zY:()=>d.zY});var d=c(93999)},94755:(a,b,c)=>{c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length;var h=c(50122);let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return(0,h.k)(k)}}};
|
|
1
|
+
"use strict";exports.id=9326,exports.ids=[1998,9326],exports.modules={33342:(a,b,c)=>{c.d(b,{Q6:()=>S,cO:()=>M,go:()=>P,KY:()=>T,$w:()=>D});var d=c(55511),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(49120),j=c(71998),k=c(21820),l=c.n(k);function m(a){return Number.isFinite(a)?Math.max(0,Math.floor(a)):0}Object.freeze({RAM_GB_PER_WORKER:4,CPU_DIVISOR:2,SAFE_MIN_WORKERS:1,SAFE_MAX_WORKERS:8,FALLBACK_WORKERS:4});var n=c(62409),o=c(82506);let p=new Set(["success","failed","failed_invalid_credentials","failed_exchange","failed_timeout","cancelled"]),q=h().join(i.DATA_DIR,"kiro-bulk-import"),r=h().join(q,"meta.json"),s=new Set(["queued","running","needs_manual"]);function t(){return new Date().toISOString()}function u(a=q){f().mkdirSync(a,{recursive:!0})}function v(a,b=q){return u(b),h().join(b,`${a}.json`)}function w(a){try{if(!f().existsSync(a))return null;return JSON.parse(f().readFileSync(a,"utf8"))}catch{return null}}function x(a,b){u(h().dirname(a));let c=`${a}.${process.pid}.tmp`;f().writeFileSync(c,JSON.stringify(b,null,2),"utf8"),f().renameSync(c,a)}function y(a,b=q){return u(b),h().join(b,`${a}.resume.enc`)}function z(){return(0,d.createHash)("sha256").update(String(function(){if(process.env.BULK_IMPORT_RESUME_SECRET)return process.env.BULK_IMPORT_RESUME_SECRET;let a=h().join(i.DATA_DIR,"bulk-import-resume-key");try{return f().readFileSync(a,"utf8").trim()}catch{}try{u(i.DATA_DIR);let b=(0,d.randomBytes)(32).toString("hex");return f().writeFileSync(a,b,{mode:384}),b}catch{return(0,d.randomBytes)(32).toString("hex")}}())).digest()}function A(a){try{f().existsSync(a)&&f().rmSync(a)}catch{}}function B(a=r){return w(a)?.latestJobId||null}function C(a){if(!0===a||"string"==typeof a&&"auto"===a.trim().toLowerCase())return Math.min(8,Math.max(1,function(a=null){let b=a||function(){let a=[];try{a=l().cpus()||[]}catch{a=[]}let b=0,c=0;try{b=l().totalmem()}catch{b=0}try{c=l().freemem()}catch{c=0}let d=Array.isArray(a)?a.length:0,e=a[0]?.model?String(a[0].model).trim():null,f=b/0x40000000,g=c/0x40000000,h="unknown",i="unknown";try{h=l().platform()}catch{}try{i=l().arch()}catch{}return{cpuCount:d,cpuModel:e,totalMemBytes:b,totalMemGb:f,freeMemBytes:c,freeMemGb:g,platform:h,arch:i}}(),{cpuCount:c,totalMemGb:d}=b,e=m(d/4),f=m(c/2),g="fallback",h=0;return e>0&&f>0?(h=Math.min(e,f),g=e<=f?"ram":"cpu"):e>0?(h=e,g="ram"):f>0?(h=f,g="cpu"):(h=4,g="fallback"),{recommended:Math.min(8,Math.max(1,h||4)),limitedBy:g,ramBudget:e,cpuBudget:f,minWorkers:1,maxWorkers:8,ramGbPerWorker:4,cpuDivisor:2,specs:b}}().recommended));let b=Number.parseInt(a,10);return Number.isFinite(b)?Math.min(8,Math.max(1,b)):4}function D(a=[]){let b=Array.isArray(a)?a:[],c=[],d=[];return b.forEach((a,b)=>{let e=String(a||"").trim();if(!e||e.startsWith("#"))return;let f="",g="";if(e.includes("|")){let[a="",...b]=e.split("|");f=a.trim(),g=b.join("|").trim()}else if(e.includes(" ")){let a=e.indexOf(" ");f=e.substring(0,a).trim(),g=e.substring(a+1).trim()}else if(e.includes(":")){let a=e.indexOf(":"),b=e.substring(0,a).trim();b.includes("@")&&(f=b,g=e.substring(a+1).trim())}f&&g?c.push({line:b+1,email:f,password:g}):d.push(b+1)}),{parsed:c,invalidLines:d}}function E(a){return{total:a.length,queued:a.filter(a=>"queued"===a.status).length,running:a.filter(a=>"running"===a.status).length,success:a.filter(a=>"success"===a.status).length,failed:a.filter(a=>"failed"===a.status||"failed_invalid_credentials"===a.status||"failed_exchange"===a.status||"failed_timeout"===a.status).length,needs_manual:a.filter(a=>"needs_manual"===a.status).length}}function F(a,b,c="info"){return{id:(0,d.randomUUID)(),at:t(),step:a,message:b,level:c}}function G(a,b,c,d="info"){let e=F(b,c,d);return a.currentStep=b,a.updatedAt=e.at,a.logs=a.logs||[],a.logs.push(e),a.logs.length>40&&a.logs.splice(0,a.logs.length-40),e}function H(a){return a.flatMap(a=>(a.logs||[]).map(b=>({...b,email:a.email,line:a.line,workerId:a.workerId||null,status:a.status}))).sort((a,b)=>String(a.at).localeCompare(String(b.at))).slice(-80)}function I(a){if(!a)return null;try{let b=new URL(a);return(b.username||b.password)&&(b.username="***",b.password="***"),b.toString()}catch{return a.length>20?`${a.slice(0,10)}***${a.slice(-10)}`:a}}function J(a){return{email:a.email,status:a.status,error:a.error||null,connectionId:a.connectionId||null,workerId:a.workerId||null,line:a.line,proxyUrl:I(a.proxyUrl)||null,currentStep:a.currentStep||null,updatedAt:a.updatedAt||null,logs:(a.logs||[]).slice(-8),manualSessionAvailable:!!a.manualSession?.page&&"needs_manual"===a.status,manualSessionOpened:!!a.manualSession?.opened}}function K(a,b={}){return{jobId:a.jobId,status:a.status,summary:E(a.accounts),concurrency:a.concurrency,createdAt:a.createdAt,startedAt:a.startedAt,finishedAt:a.finishedAt,accounts:a.accounts.map(J),activity:H(a.accounts),error:a.error||null,preview:b.preview||null}}function L(a){if(!a||s.has(a.status))return!1;let b=a.finishedAt?Date.parse(a.finishedAt):NaN;return!!Number.isFinite(b)&&Date.now()-b<=18e5}function M(a,b={}){return a?{found:!0,stale:!1,recoverable:s.has(a.status)||L(a),job:a}:{found:!1,stale:!!b.stale,recoverable:!1,job:null}}async function N(a){let{launchBulkImportBrowser:b}=await c.e(5949).then(c.bind(c,75949));return b({engine:a?.engine||"chromium"})}async function O(a){let{exchangeAndSaveKiroSocialConnection:b}=await c.e(4136).then(c.bind(c,34136));return b(a)}async function P(a,b){let c=b?{proxy:{server:b}}:{},d="";try{d=a.browserType().name()}catch{}"firefox"===d&&(c.viewport=null);let e=await a.newContext(c),f=await e.newPage();return{context:e,page:f}}async function Q(a){let b,d;if(!a?.manualSession?.context)return!1;let e=a.manualSession.context,f=a.manualSession.page,g=e.browser?.(),h=null,i="";try{h=await e.storageState()}catch{h=null}try{i=f?.url?.()||""}catch{i=""}let{chromium:j}=await Promise.resolve().then(c.bind(c,83237));try{b=await j.launch({headless:!1,args:["--start-maximized"]})}catch{return!1}try{d=await b.newContext({viewport:null,...h?{storageState:h}:{}})}catch{return await b.close().catch(()=>null),!1}let k=await d.newPage();if(i)try{await k.goto(i,{waitUntil:"domcontentloaded",timeout:2e4})}catch{}let l=a.manualSession.rebind;if(a.manualSession.context=d,a.manualSession.page=k,a.manualSession.headedBrowser=b,"function"==typeof l)try{await l({context:d,page:k})}catch{}return e.close().catch(()=>null),g&&g!==b&&g.close().catch(()=>null),!0}async function R(a,{account:b}={}){if(!a)return!1;try{let c=a.context?.(),d=c?.browser?.();if(b&&function(a){if(!a)return!0;let b=a._options||a._initializer||{};return"boolean"!=typeof b.headless||b.headless}(d)&&await Q(b))return await b.manualSession.page.bringToFront?.().catch(()=>null),!0;if(!c?.newCDPSession)return await a.bringToFront?.().catch(()=>null),!0;let e=await c.newCDPSession(a),f=null;try{let a=await e.send("Target.getTargetInfo"),b=a?.targetInfo?.targetId,c=await e.send("Browser.getWindowForTarget",b?{targetId:b}:{});f=c?.windowId??null}catch{f=null}return null!=f&&await e.send("Browser.setWindowBounds",{windowId:f,bounds:{windowState:"normal",left:80,top:80,width:1280,height:960}}).catch(()=>null),await a.bringToFront?.().catch(()=>null),await e.detach?.().catch(()=>null),!0}catch{return await a.bringToFront?.().catch(()=>null),!0}}class S{constructor({browserLauncher:a=N,googleAutomation:b=o.Th,socialExchange:c=O,kiroServiceFactory:d=()=>new n.v,storageName:e="kiro-bulk-import"}={}){this.browserLauncher=a,this.googleAutomation=b,this.socialExchange=c,this.kiroServiceFactory=d,this.storageDir=h().join(i.DATA_DIR,e),this.metaFile=h().join(this.storageDir,"meta.json"),this.jobs=new Map,this.latestJobId=B(this.metaFile)}persistResumeBlob(a){try{!function(a,b){try{let c,e,g,i,j;u(h().dirname(a));let k=`${a}.${process.pid}.tmp`;f().writeFileSync(k,JSON.stringify((c=(0,d.randomBytes)(12),e=(0,d.createCipheriv)("aes-256-gcm",z(),c),g=Buffer.from(JSON.stringify(b),"utf8"),i=Buffer.concat([e.update(g),e.final()]),j=e.getAuthTag(),{v:1,alg:"aes-256-gcm",iv:c.toString("base64"),tag:j.toString("base64"),data:i.toString("base64")})),{mode:384}),f().renameSync(k,a)}catch{}}(y(a.jobId,this.storageDir),{jobId:a.jobId,concurrency:a.concurrency,engine:a.engine,proxyPoolMode:a.proxyPoolMode,proxyUrls:a.proxyUrls||[],createdAt:a.createdAt,accounts:a.accounts.map(a=>({line:a.line,email:a.email,password:a.password}))})}catch{}}hydrateInterruptedJob(a){if(!a||this.jobs.has(a))return!1;let b=w(v(a,this.storageDir));if(!b||!s.has(b.status))return!1;let c=function(a){let b=w(a);if(!b)return null;if(!b||"aes-256-gcm"!==b.alg||!b.iv||!b.tag||!b.data)return null;try{let a=(0,d.createDecipheriv)("aes-256-gcm",z(),Buffer.from(b.iv,"base64"));a.setAuthTag(Buffer.from(b.tag,"base64"));let c=Buffer.concat([a.update(Buffer.from(b.data,"base64")),a.final()]);return JSON.parse(c.toString("utf8"))}catch{return null}}(y(a,this.storageDir));if(!c||!Array.isArray(c.accounts)||0===c.accounts.length)return this.markJobInterrupted(a,b),!1;let e=new Map(c.accounts.map(a=>[a.line,a.password])),f=new Map(c.accounts.map(a=>[a.line,a.email])),g=b.createdAt||c.createdAt||t(),h=(b.accounts||[]).map(a=>{let b=p.has(a.status),c=Array.isArray(a.logs)?[...a.logs]:[],d={line:a.line,email:a.email||f.get(a.line)||"",password:b?void 0:e.get(a.line)??null,proxyUrl:null,status:a.status,error:a.error||null,connectionId:a.connectionId||null,workerId:b&&a.workerId||null,manualSession:null,runtimeSession:null,currentStep:a.currentStep||null,updatedAt:a.updatedAt||g,logs:c};return b||(d.status="queued",d.currentStep="queued",d.error=null,d.logs.push(F("resumed","Re-queued after a server restart to continue automatically"))),d}),i={jobId:a,status:"running",concurrency:C(c.concurrency),engine:c.engine||"chromium",proxyPoolMode:c.proxyPoolMode||"none",proxyUrls:Array.isArray(c.proxyUrls)?c.proxyUrls:[],createdAt:g,startedAt:b.startedAt||g,finishedAt:null,error:null,cancelRequested:!1,browser:null,nextIndex:0,manualFollowups:new Set,persistPromise:Promise.resolve(),lastPreview:b.preview||null,lastPreviewCapturedAt:0,accounts:h};return(this.jobs.set(a,i),this.latestJobId||(this.latestJobId=a),h.some(a=>"queued"===a.status))?this.runJob(a):(i.status="completed",i.finishedAt=t(),this.persistJobSnapshot(i,{forcePreview:!1}),A(y(a,this.storageDir))),!0}markJobInterrupted(a,b){let c="Job was interrupted by a server restart and could not be auto-resumed (saved credentials were unavailable). Please start a new bulk login.",d=(b.accounts||[]).map(a=>{if(p.has(a.status))return a;let b=Array.isArray(a.logs)?[...a.logs]:[];return b.push(F("failed",c,"error")),{...a,status:"failed",error:c,currentStep:"failed",updatedAt:t(),manualSessionAvailable:!1,logs:b}}),e={...b,status:"failed",error:b.error||c,finishedAt:b.finishedAt||t(),accounts:d,summary:E(d),activity:H(d)};try{x(v(a,this.storageDir),e)}catch{}A(y(a,this.storageDir))}async startJob({accounts:a,concurrency:b,engine:e,proxyPoolMode:f,proxyPoolId:g}){let{parsed:h,invalidLines:i}=D(a);if(!h.length){let a=i.length>0?"Invalid account format. Use one account per line: gmail@example.com|password":"At least one account entry is required",b={error:a};throw i.length>0&&(b.invalidLines=i),Object.assign(Error(a),b)}if(i.length>0){let a="Invalid account format. Use one account per line: gmail@example.com|password";throw Object.assign(Error(a),{error:a,invalidLines:i})}let k=[];if("all"===f)k=(await (0,j.ui)({isActive:!0})).map(a=>a.proxyUrl).filter(Boolean);else if("single"===f&&g){let a=await (0,j.hr)(g);a?.isActive&&a?.proxyUrl&&(k=[a.proxyUrl])}let l=(0,d.randomUUID)(),m=t(),{normalizeBulkImportEngine:n,DEFAULT_BULK_IMPORT_ENGINE:o}=await c.e(5949).then(c.bind(c,75949)),p=e?n(e):o,q={jobId:l,status:"running",concurrency:C(b),engine:p,proxyPoolMode:f||"none",proxyUrls:k,createdAt:m,startedAt:m,finishedAt:null,error:null,cancelRequested:!1,browser:null,nextIndex:0,manualFollowups:new Set,persistPromise:Promise.resolve(),lastPreview:null,lastPreviewCapturedAt:0,accounts:h.map(a=>({line:a.line,email:a.email,password:a.password,proxyUrl:null,status:"queued",error:null,connectionId:null,workerId:null,manualSession:null,runtimeSession:null,currentStep:"queued",updatedAt:m,logs:[F("queued","Queued and waiting for an available worker")]}))};return this.jobs.set(l,q),this.latestJobId=l,!function(a,b=r){x(b,{latestJobId:a||null,updatedAt:t()})}(l,this.metaFile),await this.persistJobSnapshot(q,{forcePreview:!1}),this.persistResumeBlob(q),this.runJob(l),K(q)}getJob(a){this.hydrateInterruptedJob(a);let b=this.jobs.get(a);return b?K(b,{preview:b.lastPreview||null}):w(v(a,this.storageDir))}async getJobWithPreview(a){this.hydrateInterruptedJob(a);let b=this.jobs.get(a);if(!b)return w(v(a,this.storageDir));let c=await this.capturePreview(b);return b.lastPreview=c||b.lastPreview||null,await this.persistJobSnapshot(b,{forcePreview:!1}),K(b,{preview:b.lastPreview||null})}async getLatestJobWithPreview({includeRecentTerminal:a=!1}={}){let b=this.latestJobId||B(this.metaFile);if(!b)return null;let c=await this.getJobWithPreview(b);return c&&(s.has(c.status)||a&&L(c))?c:null}cancelJob(a){let b=this.jobs.get(a);return b?(b.cancelRequested=!0,"queued"===b.status&&(b.status="cancelled",b.finishedAt=t(),b.accounts.forEach(a=>{"queued"===a.status&&(a.status="cancelled")})),b.browser&&(b.browser.close().catch(()=>null),b.browser=null),this.persistJobSnapshot(b,{forcePreview:!0}),K(b)):w(v(a,this.storageDir))}async openManualSession(a,b){let c=this.jobs.get(a);if(!c)return null;let d=Number.parseInt(b,10),e=c.accounts.find(a=>a.workerId===d&&"needs_manual"===a.status&&a.manualSession?.page);if(!e)return{ok:!1,error:"Manual session not found for this worker",job:K(c)};let f=await R(e.manualSession.page,{account:e});return e.manualSession.opened=f,e.manualSession.openedAt=f?e.manualSession.openedAt||t():e.manualSession.openedAt||null,await this.persistJobSnapshot(c,{forcePreview:!0}),{ok:!0,job:K(c),account:J(e)}}dequeueAccount(a,b){for(;a.nextIndex<a.accounts.length;){let c=a.accounts[a.nextIndex];if(a.nextIndex+=1,"queued"===c.status)return c.status="running",c.workerId=b,c.error=null,a.proxyUrls?.length&&(c.proxyUrl=a.proxyUrls[(a.nextIndex-1)%a.proxyUrls.length]),G(c,"worker_assigned",`Worker ${b} picked up this account${c.proxyUrl?` (proxy: ${I(c.proxyUrl)})`:""}`),this.persistJobSnapshot(a,{forcePreview:!1}),c}return null}finalizeAccount(a,b,c={}){return a.status=b,a.error=c.error||null,a.connectionId=c.connectionId||null,(c.step||c.message)&&G(a,c.step||b,c.message||c.error||b.replaceAll("_"," ")),a}setAccountStep(a,b,c,d="info"){G(a,b,c,d)}async persistJobSnapshot(a,{forcePreview:b=!1}={}){if(!a)return;let c=async()=>{if(b||Date.now()-(a.lastPreviewCapturedAt||0)>=1500){let b=await this.capturePreview(a);b&&(a.lastPreview=b),a.lastPreviewCapturedAt=Date.now()}x(v(a.jobId,this.storageDir),K(a,{preview:a.lastPreview||null}))};a.persistPromise=Promise.resolve(a.persistPromise).catch(()=>null).then(c),await a.persistPromise}async capturePreview(a){let b=a.accounts.find(a=>"running"===a.status&&a.runtimeSession?.page)||a.accounts.find(a=>"needs_manual"===a.status&&a.manualSession?.page);if(!b)return null;let c=b.runtimeSession?.page||b.manualSession?.page;if(!c)return null;try{let a=await c.screenshot({type:"jpeg",quality:55,fullPage:!1,animations:"disabled",caret:"hide"});return{email:b.email,workerId:b.workerId||null,status:b.status,step:b.currentStep||null,updatedAt:b.updatedAt||t(),imageData:`data:image/jpeg;base64,${a.toString("base64")}`}}catch{return{email:b.email,workerId:b.workerId||null,status:b.status,step:b.currentStep||null,updatedAt:b.updatedAt||t(),imageData:null}}}async runManualFollowup(a,b,c,d,e,f){let g=(async()=>{let c=async()=>{let a=b.manualSession,c=a?.context||d,e=a?.headedBrowser||null;c&&await c.close().catch(()=>null),e&&await e.close().catch(()=>null)};try{let c=await e;if(a.cancelRequested){this.finalizeAccount(b,"cancelled",{error:"Job cancelled",step:"cancelled",message:"Job cancelled while waiting for manual completion"}),await this.persistJobSnapshot(a,{forcePreview:!0});return}this.setAccountStep(b,"exchanging_tokens","Exchanging Kiro callback for OAuth tokens"),await this.persistJobSnapshot(a,{forcePreview:!0});let{connection:d}=await this.socialExchange({code:c.code,codeVerifier:f,provider:"google"});this.finalizeAccount(b,"success",{connectionId:d.id,step:"connection_saved",message:"Kiro connection saved successfully"}),await this.persistJobSnapshot(a,{forcePreview:!0})}catch(c){a.cancelRequested?this.finalizeAccount(b,"cancelled",{error:"Job cancelled",step:"cancelled",message:"Job cancelled while waiting for manual completion"}):this.finalizeAccount(b,"failed_exchange",{error:c.message||"Manual assist flow failed during token exchange.",step:"exchange_failed",message:c.message||"Manual assist flow failed during token exchange."}),await this.persistJobSnapshot(a,{forcePreview:!0})}finally{await c(),b.manualSession=null,b.runtimeSession=null,a.manualFollowups.delete(g),await this.persistJobSnapshot(a,{forcePreview:!0})}})();a.manualFollowups.add(g)}async processAccount(a,b,c){if(a.cancelRequested||!a.browser)return void this.finalizeAccount(b,"cancelled",{error:"Job cancelled"});let d=this.kiroServiceFactory().createSocialAuthorization("google"),{context:e,page:f}=await P(a.browser,b.proxyUrl),g=(0,o.zZ)(e,f);b.runtimeSession={context:e,page:f};try{this.setAccountStep(b,"preparing_worker",`Worker ${c} is preparing a browser context`),await this.persistJobSnapshot(a,{forcePreview:!0});let h=await this.googleAutomation({page:f,authUrl:d.authUrl,email:b.email,password:b.password,callbackPromise:g,onStep:(c,d)=>{this.setAccountStep(b,c,d),this.persistJobSnapshot(a,{forcePreview:!1})}});if("success"===h.status){this.setAccountStep(b,"exchanging_tokens","Exchanging Kiro callback for OAuth tokens"),await this.persistJobSnapshot(a,{forcePreview:!0});let{connection:c}=await this.socialExchange({code:h.code,codeVerifier:d.codeVerifier,provider:"google"});this.finalizeAccount(b,"success",{connectionId:c.id,step:"connection_saved",message:"Kiro connection saved successfully"}),b.runtimeSession=null,await e.close().catch(()=>null),await this.persistJobSnapshot(a,{forcePreview:!0});return}if("needs_manual"===h.status){b.manualSession={context:e,page:f,opened:!1,openedAt:null,rebind:"function"==typeof g?.rebind?g.rebind:null},this.setAccountStep(b,"awaiting_manual","Waiting for manual completion in the browser session"),this.finalizeAccount(b,"needs_manual",{error:h.error,step:"awaiting_manual",message:h.error}),await this.persistJobSnapshot(a,{forcePreview:!0}),await this.runManualFollowup(a,b,c,e,g,d.codeVerifier);return}let i=p.has(h.status)?h.status:"failed";this.finalizeAccount(b,i,{error:h.error||"Kiro Google automation failed.",step:i,message:h.error||"Kiro Google automation failed."}),b.runtimeSession=null,await e.close().catch(()=>null),await this.persistJobSnapshot(a,{forcePreview:!0})}catch(c){this.finalizeAccount(b,"failed",{error:c.message||"Unexpected Kiro bulk import failure.",step:"failed",message:c.message||"Unexpected Kiro bulk import failure."}),b.runtimeSession=null,await e.close().catch(()=>null),await this.persistJobSnapshot(a,{forcePreview:!0})}finally{b.password=void 0}}async runWorker(a,b){for(;!a.cancelRequested;){let c=this.dequeueAccount(a,b);if(!c)return;await this.processAccount(a,c,b)}}async runJob(a){let b=this.jobs.get(a);if(b)try{b.browser=await this.browserLauncher(b),b.accounts.forEach(a=>{"queued"===a.status&&1===(a.logs||[]).length&&this.setAccountStep(a,"waiting_for_worker","Waiting for a free worker")}),await this.persistJobSnapshot(b,{forcePreview:!1});let a=Math.min(b.concurrency,Math.max(b.accounts.length,1)),c=Array.from({length:a},(a,c)=>this.runWorker(b,c+1));await Promise.allSettled(c),b.manualFollowups.size>0&&await Promise.allSettled([...b.manualFollowups]),b.cancelRequested?(b.status="cancelled",b.accounts.forEach(a=>{("queued"===a.status||"running"===a.status)&&this.finalizeAccount(a,"cancelled",{error:"Job cancelled",step:"cancelled",message:"Job cancelled before completion"})})):b.status="completed",await this.persistJobSnapshot(b,{forcePreview:!0})}catch(a){b.status="failed",b.error=a.message||"Failed to start Kiro bulk import job.",b.accounts.forEach(a=>{("queued"===a.status||"running"===a.status)&&(this.finalizeAccount(a,"failed",{error:b.error,step:"failed",message:b.error}),a.password=void 0)}),await this.persistJobSnapshot(b,{forcePreview:!0})}finally{b.browser&&(await b.browser.close().catch(()=>null),b.browser=null),b.finishedAt=t(),await this.persistJobSnapshot(b,{forcePreview:!0}),A(y(b.jobId,this.storageDir))}}}function T(){return(!globalThis.__kiroBulkImportSingleton&&(globalThis.__kiroBulkImportSingleton={manager:new S}),globalThis.__kiroBulkImportSingleton).manager}},50122:(a,b,c)=>{c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}},71998:(a,b,c)=>{c.d(b,{Fh:()=>d.Fh,L9:()=>d.L9,Mc:()=>d.Mc,OM:()=>d.OM,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,createProviderConnection:()=>d.iE,fK:()=>d.fK,fv:()=>d.fv,getProviderConnections:()=>d.getProviderConnections,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,o5:()=>d.o5,op:()=>d.op,rj:()=>d.updateProviderConnection,uL:()=>d.uL,ui:()=>d.ui,uv:()=>d.uv});var d=c(89718)},82506:(a,b,c)=>{c.d(b,{$K:()=>Q,Jl:()=>E,PB:()=>T,Th:()=>V,i_:()=>P,np:()=>O,rk:()=>U,zZ:()=>S});let d='input[type="email"], input[autocomplete="username"], input#identifierId, input[name="identifier"], input[name="Email"], input[type="text"][autofocus], input[aria-label*="Email" i], input[aria-label*="email" i], input[aria-label*="phone" i], input[aria-label*="telepon" i]',e=['button:has-text("Next")','button:has-text("Berikutnya")','button:has-text("Continue")','div[role="button"]:has-text("Next")','div[role="button"]:has-text("Berikutnya")',"#identifierNext button","#passwordNext button"],f=["#submit_approve_access","#submit_approve_access button","#confirm",'form#tos_form input[type="submit"]','button[jsname]:has-text("Allow")','button:has-text("Allow")','[role="button"]:has-text("Allow")','input[type="submit"][value="Allow"]','input[type="button"][value="Allow"]','button[jsname]:has-text("Izinkan")','button:has-text("Izinkan")','[role="button"]:has-text("Izinkan")','button:has-text("Continue")','button:has-text("Next")','button:has-text("Yes")','button:has-text("Accept")','button:has-text("Lanjutkan")','button:has-text("Berikutnya")','button:has-text("Setuju")','button:has-text("Saya mengerti")','button:has-text("Oke")','button:has-text("OK")','button:has-text("Got it")','button:has-text("I understand")','div[role="button"]:has-text("Continue")','div[role="button"]:has-text("Next")','div[role="button"]:has-text("Allow")','div[role="button"]:has-text("Lanjutkan")','div[role="button"]:has-text("Berikutnya")','div[role="button"]:has-text("Izinkan")','div[role="button"]:has-text("Setuju")','div[role="button"]:has-text("Saya mengerti")','div[role="button"]:has-text("Oke")','div[role="button"]:has-text("OK")','div[role="button"]:has-text("Got it")','div[role="button"]:has-text("I understand")','input[type="button"][value="Saya mengerti"]','input[type="submit"][value="Saya mengerti"]'],g=['button:has-text("Skip")','button:has-text("Lewati")','button:has-text("Not now")','button:has-text("Bukan sekarang")','button:has-text("No thanks")','button:has-text("Tidak sekarang")','div[role="button"]:has-text("Skip")','div[role="button"]:has-text("Not now")'],h=["#social-google","a#social-google",'a:has-text("Sign up with Google")','a:has-text("Log in with Google")','button:has-text("Sign up with Google")','button:has-text("Log in with Google")','button:has-text("Google")','a:has-text("Google")','div[role="button"]:has-text("Google")','span:has-text("Google")','[aria-label*="Google"]','[data-provider*="google" i]'],i=["#agree-policy-account","#agree-policy","#agree-policy-sso",'input[type="checkbox"][id*="agree" i]','input[type="checkbox"][name*="agree" i]','input[type="checkbox"][id*="policy" i]','input[type="checkbox"][name*="policy" i]','input[type="checkbox"][id*="terms" i]','input[type="checkbox"][name*="terms" i]','.login-checkbox input[type="checkbox"]','[class*="checkbox"] input[type="checkbox"]','[class*="agree"] input[type="checkbox"]','input[type="checkbox"]'],j=['.ui-dialog button:has-text("Confirm")','dialog button:has-text("Confirm")','button:has-text("Confirm")','button:has-text("I agree")','button:has-text("Agree")','button:has-text("同意")','button:has-text("确认")'],k=['button:has-text("Continue")','[role="button"]:has-text("Continue")','button:has-text("Get started")','button:has-text("GET STARTED")','input[type="submit"][value="GET STARTED"]','button:has-text("Start")','button:has-text("Confirm")','button:has-text("Done")','button:has-text("Next")','button:has-text("Skip")','button:has-text("Not now")','button:has-text("Save")','button:has-text("Create")','button:has-text("Enter")','button:has-text("Launch")','button:has-text("Use CodeBuddy")','button:has-text("Go to CodeBuddy")'],l=["select",'[role="combobox"]','.page-region [role="combobox"]',".page-region .t-select",'.page-region [class*="t-select"]','.page-region [class*="select"]',".page-region input[placeholder]",'button:has-text("Region")','[role="button"]:has-text("Region")','button:has-text("Select region")','[role="button"]:has-text("Select region")','button:has-text("Data region")','[aria-label*="region" i]','[placeholder*="region" i]'],m=["text=/^Indonesia$/i","text=/^ID$/i","text=/^Singapore$/i","text=/^SG$/i","text=/^Japan$/i","text=/^JP$/i","text=/^Thailand$/i","text=/^TH$/i","text=/^Global$/i","text=/^International$/i","text=/^United States$/i","text=/^US$/i","text=/^Asia Pacific$/i","text=/^Hong Kong$/i","text=/^Default$/i"],n=[{selector:'input[name*="workspace" i]',value:"Default"},{selector:'input[placeholder*="workspace" i]',value:"Default"},{selector:'input[name*="team" i]',value:"Default"},{selector:'input[placeholder*="team" i]',value:"Default"},{selector:'input[name*="name" i]',value:"Default"},{selector:'input[placeholder*="name" i]',value:"Default"}],o=["wrong password","incorrect password","couldn't find your google account","couldn’t find your google account","enter a valid email","couldn’t sign you in","couldn't sign you in","invalid email or password","password is incorrect"],p=["2-step verification","2-step verification required","verify it’s you","verify it's you","check your phone","confirm it’s you","confirm it's you","recovery email","recovery phone","suspicious sign-in prevented","unusual activity detected","captcha","try again later"],q=["restricted","account has been restricted","account is restricted","account has been suspended","account is suspended","account has been disabled","account is disabled","account has been banned","account is banned","access denied","account blocked","your account has been","violation of terms","terms of service violation","temporarily locked","permanently locked","account locked","akun dibatasi","akun diblokir","akun ditangguhkan"],r=["welcome to your new google account","selamat datang di akun google baru anda","welcome to your new account","selamat datang di akun baru","privacy and terms","privasi dan persyaratan","personalize your google services","personalisasikan layanan google anda","add recovery phone","tambahkan nomor telepon pemulihan","choose your settings","pilih setelan anda"],s=["welcome to your new account","selamat datang di akun baru","your administrator decides which","administrator anda memutuskan layanan","your organisation administrator manages","your organization administrator manages"];function t(a){if(!a||!a.startsWith("kiro://kiro.kiroAgent/authenticate-success"))return null;let b=a.indexOf("?"),c=new URLSearchParams(b>=0?a.slice(b+1):""),d=c.get("code"),e=c.get("state");return d?{callbackUrl:a,code:d,state:e}:null}function u(a){let b="function"==typeof a.frames?a.frames():[];return[a,...b.filter(b=>b!==a.mainFrame?.())]}async function v(a,b){for(let c of u(a))for(let a of b){let b=c.locator(a).first();if(await b.count().catch(()=>0)&&await b.isVisible().catch(()=>!1))return await b.click({timeout:5e3}).catch(()=>null),!0}return!1}async function w(a,b){for(let c of u(a))for(let a of b){let b=c.locator(a).first();if(await b.count().catch(()=>0)){if((await b.scrollIntoViewIfNeeded().catch(()=>null),await b.isVisible().catch(()=>!1)&&await b.isEnabled().catch(()=>!0))&&await b.click({timeout:5e3}).then(()=>!0).catch(()=>!1))return!0}}return!1}async function x(a,b){for(let c of u(a))for(let a of b){let b=c.locator(a).first();if(!await b.count().catch(()=>0))continue;if(await b.isChecked().catch(()=>!1))return!0;let d=await b.isVisible().catch(()=>!1);if(d&&await b.check({force:!0,timeout:5e3}).then(()=>!0).catch(()=>!1)||d&&await b.click({force:!0,timeout:5e3}).then(()=>!0).catch(()=>!1)||await c.evaluate(a=>{let b=document.querySelector(a);return b instanceof HTMLInputElement&&(b.checked=!0,b.dispatchEvent(new Event("input",{bubbles:!0})),b.dispatchEvent(new Event("change",{bubbles:!0})),b.checked)},a).catch(()=>!1))return!0}return!1}async function y(a,b){for(let c of u(a)){let a=c.locator(b).first();if(await a.count().catch(()=>0)&&await a.isVisible().catch(()=>!1))return a}return null}async function z(a,b,{timeout:c=15e3,pollInterval:d=500}={}){let e=Date.now()+c;for(;Date.now()<e;){let c=await y(a,b);if(c)return c;let f=e-Date.now();if(f<=0)break;await new Promise(a=>setTimeout(a,Math.min(d,f)))}return null}async function A(a,b,{timeout:c=15e3}={}){if(!a||null==b)return!1;try{await a.click({timeout:5e3})}catch{}try{await a.fill("",{timeout:3e3})}catch{}try{let d=Math.floor(40+80*Math.random());await a.type(b,{delay:d,timeout:c})}catch{try{await a.fill(b,{timeout:c})}catch{return!1}}let d="";try{d=await a.inputValue()}catch{d=""}if(d===b)return!0;try{await a.click({timeout:5e3})}catch{}try{await a.fill("")}catch{}try{await a.type(b,{delay:50,timeout:c})}catch{return!1}try{d=await a.inputValue()}catch{d=""}return d===b}async function B(a){let b=[];for(let c of u(a))try{b.push(await c.evaluate(()=>document.body?.innerText||""))}catch{}return b.join("\n")}function C(a,b){let c=String(a||"").toLowerCase();return b.some(a=>c.includes(a))}function D(a){try{let b=new URL(a.url());return"accounts.google.com"===b.hostname||b.hostname.endsWith(".accounts.google.com")}catch{return!1}}function E(a){try{let b=new URL(a.url());return/codebuddy\.(ai|cn)$/.test(b.hostname)||b.hostname.endsWith(".codebuddy.ai")||b.hostname.endsWith(".codebuddy.cn")}catch{return!1}}async function F(a,b){if(!D(a))return!1;let c=await B(a);return!!/wants to access|ingin mengakses|akses ke akun google|allow/i.test(c)&&(await a.evaluate(()=>{let a=document.scrollingElement||document.documentElement||document.body;a&&(a.scrollTop=a.scrollHeight),window.scrollTo(0,document.body?.scrollHeight||document.documentElement?.scrollHeight||0)}).catch(()=>null),await a.waitForTimeout(300),!!await w(a,f)&&(b("approving_google_consent","Approving Google OAuth consent"),await a.waitForTimeout(1e3),!0))}async function G(a,b){let c=String(b||"");if(!C(c,r))return!1;if(await a.evaluate(()=>{let a=document.scrollingElement||document.documentElement||document.body;a&&(a.scrollTop=a.scrollHeight),window.scrollTo(0,document.body?.scrollHeight||document.documentElement?.scrollHeight||0)}).catch(()=>null),await a.waitForTimeout(500),C(c,s)){if(await w(a,f))return await a.waitForTimeout(700),!0;if(await a.evaluate(()=>{let a=[document.getElementById("confirm"),document.querySelector('form#tos_form input[type="submit"]'),document.querySelector('input[type="submit"][value="Saya mengerti"]'),document.querySelector('input[type="submit"][value="I understand"]')].filter(Boolean)[0];return!!a&&(a.scrollIntoView({block:"center"}),a.click(),!0)}).catch(()=>!1)||await a.evaluate(()=>{let a=document.getElementById("tos_form");return!!a&&(a.submit(),!0)}).catch(()=>!1))return await a.waitForTimeout(800),!0}return!!(await w(a,g)||await w(a,f))&&(await a.waitForTimeout(700),!0)}async function H(a){let b=/global|international|singapore|united states|^us$|asia|hong kong|default/i;for(let c of u(a)){let a=c.locator("select"),d=await a.count().catch(()=>0);for(let c=0;c<d;c+=1){let d=a.nth(c),e=await d.isVisible().catch(()=>!1),f=await d.isEnabled().catch(()=>!0);if(!e||!f)continue;let g=await d.evaluate((a,b)=>{let c=RegExp(b,"i"),d=[...a.options].filter(a=>!a.disabled&&""!==a.value),e=d.find(a=>c.test(`${a.label} ${a.textContent} ${a.value}`));return(e||d[0])?.value||""},b.source).catch(()=>"");if(g&&await d.selectOption(g).then(()=>!0).catch(()=>!1))return!0}}return!1}async function I(a){let b=!1;for(let c of u(a))for(let{selector:a,value:d}of n){let e=c.locator(a).first();if(!await e.count().catch(()=>0))continue;let f=await e.isVisible().catch(()=>!1),g=await e.isEnabled().catch(()=>!0);!(!f||!g||await e.inputValue().catch(()=>""))&&await e.fill(d,{timeout:5e3}).then(()=>!0).catch(()=>!1)&&(b=!0)}return b}async function J(a,b){await b.scrollIntoViewIfNeeded().catch(()=>null);let c=await b.isVisible().catch(()=>!1),d=await b.isEnabled().catch(()=>!0);if(!c||!d)return!1;let e=await b.boundingBox().catch(()=>null);if(!e||e.width<=0||e.height<=0)return!1;let f=e.x+e.width/2,g=e.y+e.height/2;return await a.mouse.move(f,g),await a.mouse.down(),await a.mouse.up(),!0}async function K(a,b,c){for(let d of u(a)){let e=d.locator(b),f=Math.min(await e.count().catch(()=>0),80),g=[];for(let a=0;a<f;a+=1){let b=e.nth(a);if(!await b.isVisible().catch(()=>!1))continue;let c=(await b.innerText({timeout:1e3}).catch(()=>"")||await b.textContent({timeout:1e3}).catch(()=>"")||"").trim();c&&g.push({locator:b,text:c})}for(let b of c){let c=g.find(a=>b.test(a.text));if(c&&await J(a,c.locator).catch(()=>!1))return c.text}if(g[0]&&await J(a,g[0].locator).catch(()=>!1))return g[0].text}return""}async function L(a,b){for(let c of u(a))for(let d of b){let b=c.locator(d),e=Math.min(await b.count().catch(()=>0),20);for(let c=0;c<e;c+=1){let d=b.nth(c);if(await J(a,d).catch(()=>!1))return!0}}return!1}async function M(a,b){if(!E(a)||D(a))return!1;let c=await a.evaluate(async()=>{let a=document.body?.innerText||"";if(!(document.querySelector(".page-region")||/select\s+region|region|country|area|get started|complete/i.test(a)))return null;try{let a=await fetch("https://www.codebuddy.ai/console/login/account",{method:"POST",credentials:"include",headers:{accept:"application/json, text/plain, */*","content-type":"application/json","x-requested-with":"XMLHttpRequest","x-domain":window.location.hostname||"www.codebuddy.ai"},referrer:"https://www.codebuddy.ai/register/user/complete",body:JSON.stringify({attributes:{countryCode:["62"],countryFullName:["Indonesia"],countryName:["ID"]}})}),b=await a.text().catch(()=>""),c=null;try{c=b?JSON.parse(b):null}catch{c={raw:b}}if(a.ok&&(!c||0===c.code||200===c.code||void 0===c.code))return{action:"submitted_via_api"};return{action:"api_failed",status:a.status,code:c?.code,message:c?.msg||c?.message||b||`HTTP ${a.status}`}}catch(a){return{action:"api_failed",message:a?.message||"region submit request failed"}}}).catch(()=>null);return!!c?.action&&("submitted_via_api"===c.action?(b("submitting_codebuddy_region","Submitted CodeBuddy region via account API"),await a.waitForTimeout(1500),!0):(b("codebuddy_region_api_failed",c.message?`CodeBuddy region API submit failed: ${c.message}`:"CodeBuddy region API submit failed"),!1))}async function N(a,b){if(!E(a)||D(a)||!await a.locator(".page-region").first().count().then(Boolean).catch(()=>!1))return!1;let c=[/indonesia|^id$|\u5370\u5ea6\u5c3c\u897f\u4e9a/i,/singapore|^sg$|\u65b0\u52a0\u5761/i,/japan|^jp$|\u65e5\u672c/i,/thailand|^th$|\u6cf0\u56fd/i,/global|international|default/i];if(await L(a,[".page-region [class*='28B894']",".page-region button:has-text('Get started')",".page-region button:has-text('Start')",".page-region button:has-text('Submit')",".page-region button:has-text('Continue')",".page-region [role='button']:has-text('Get started')",".page-region [role='button']:has-text('Start')",".page-region [role='button']:has-text('Submit')",".page-region [role='button']:has-text('Continue')"]))return b("submitting_codebuddy_region","Submitted CodeBuddy region selection"),await a.waitForTimeout(1200),!0;let d=await K(a,"ul.dropdown-section li, .dropdown-section li, [role='option'], .t-select-option, [class*='option']",c);if(d)return b("selecting_codebuddy_region",`Selected CodeBuddy region: ${d}`),await a.waitForTimeout(900),!0;if(!await L(a,[".page-region .t-select",".page-region [class*='t-select']",".page-region [role='combobox']",".page-region input[placeholder]",".page-region [class*='select']",".page-region [class*='cursor-pointer']"]))return!1;b("opening_codebuddy_region_selector","Opening CodeBuddy region selector"),await a.waitForTimeout(600);let e=await K(a,"ul.dropdown-section li, .dropdown-section li, [role='option'], .t-select-option, [class*='option']",c);return e&&(b("selecting_codebuddy_region",`Selected CodeBuddy region: ${e}`),await a.waitForTimeout(900)),!0}async function O(a,b){if(!E(a)||D(a))return!1;if(await M(a,b)||await N(a,b))return!0;for(let c of u(a)){let d=await c.evaluate(()=>{let a=a=>{if(!(a instanceof HTMLElement))return!1;let b=window.getComputedStyle(a);if("hidden"===b.visibility||"none"===b.display||0===Number(b.opacity))return!1;let c=a.getBoundingClientRect();return c.width>0&&c.height>0},b=document.querySelector(".page-region"),c=document.body?.innerText||"";if(!(b||/select\s+region|region|country|area|get started|complete/i.test(c)))return null;let d=a=>{for(let b of(a.scrollIntoView({block:"center",inline:"center"}),["pointerdown","mousedown","pointerup","mouseup","click"]))a.dispatchEvent(new MouseEvent(b,{bubbles:!0,cancelable:!0,view:window,buttons:+!!b.endsWith("down")}))},e=[/indonesia|^id$|\u5370\u5ea6\u5c3c\u897f\u4e9a/i,/singapore|^sg$|\u65b0\u52a0\u5761/i,/japan|^jp$|\u65e5\u672c/i,/thailand|^th$|\u6cf0\u56fd/i,/global|international|default/i],f=b||document.body,g=["button","[role='button']","input[type='submit']",".t-button","[class*='button']","[class*='28B894']"],h=[...f.querySelectorAll(g.join(","))].filter(a).filter(a=>{let b=`${a.innerText||""} ${a.getAttribute("aria-label")||""} ${a.getAttribute("value")||""}`,c=a.getAttribute("class")||"";return/submit|start|continue|confirm|done|get started|complete|\u5b8c\u6210|\u5f00\u59cb|\u786e\u5b9a|\u4e0b\u4e00\u6b65/i.test(b)||c.includes("28B894")});if(h.length)return d(h[0]),{action:"submitted"};let i=["ul.dropdown-section li",".dropdown-section li","[role='option']",".t-select-option","[class*='option']","[class*='dropdown'] li"],j=[...document.querySelectorAll(i.join(","))].filter(a).filter(a=>(a.innerText||a.textContent||"").trim());if(j.length){let a=e.map(a=>j.find(b=>a.test((b.innerText||b.textContent||"").trim()))).find(Boolean)||j[0],b=(a.innerText||a.textContent||"").trim();return d(a),{action:"selected",label:b}}let k=["[role='combobox']",".t-select","[class*='t-select']","[class*='select']","input[placeholder]",".text-sm","[class*='cursor-pointer']"],l=[...f.querySelectorAll(k.join(","))].filter(a).filter(a=>{let b=`${a.innerText||""} ${a.getAttribute("placeholder")||""} ${a.getAttribute("aria-label")||""}`;return/region|country|area|select|placeholder|\u5730\u533a|\u56fd\u5bb6|\u9009\u62e9/i.test(b)||a.matches?.(".t-select,[class*='t-select'],input[placeholder],[class*='select']")});return l.length?(d(l[0]),{action:"opened"}):null}).catch(()=>null);if(d?.action){if("selected"===d.action)return b("selecting_codebuddy_region",`Selected CodeBuddy region${d.label?`: ${d.label}`:""}`),await a.waitForTimeout(700),!0;if("submitted"===d.action)return b("submitting_codebuddy_region","Submitted CodeBuddy region selection"),await a.waitForTimeout(1200),!0;return b("opening_codebuddy_region_selector","Opening CodeBuddy region selector"),await a.waitForTimeout(700),!0}}return!1}async function P(a,b){if(!E(a)||D(a))return!1;let c=await a.evaluate(async()=>{let a=new URL(window.location.href);if(!/\/started\/?$/.test(a.pathname))return null;let b=a.searchParams.get("platform")||"CLI",c=a.searchParams.get("state");if(!c)return null;for(let a of[...new Set([window.location.hostname||"www.codebuddy.ai"].filter(Boolean))]){let d=new URL("/console/auth/login",window.location.origin);d.searchParams.set("platform",b),d.searchParams.set("state",c),d.searchParams.set("domain",a);try{let b=await fetch(d.toString(),{method:"GET",credentials:"include",redirect:"manual",headers:{"x-requested-with":"XMLHttpRequest","X-Domain":a}});if("opaqueredirect"===b.type||b.status>=300&&b.status<400)return{action:"attempted",domain:a,message:"redirected"};let c=await b.text(),e=null;try{e=c?JSON.parse(c):null}catch{e={raw:c}}if(b.ok&&(!e||0===e.code||200===e.code||void 0===e.code))return{action:"authorized",domain:a};if(b.ok)return{action:"attempted",domain:a,code:e?.code,message:e?.msg||e?.message||""}}catch(a){}}return{action:"failed"}}).catch(()=>null);return!!c?.action&&"failed"!==c.action&&("authorized"===c.action?b("authorizing_codebuddy_cli_state","Authorized CodeBuddy CLI login state"):b("authorizing_codebuddy_cli_state",c.message?`Attempted CodeBuddy CLI login state authorization: ${c.message}`:"Attempted CodeBuddy CLI login state authorization"),await a.waitForTimeout(1200),!0)}async function Q(a,b,c){return!(!E(a)||D(a))&&(await w(a,j)?(b("accepting_provider_privacy_dialog",`Confirmed ${c} privacy or terms dialog`),await a.waitForTimeout(800),!0):!!(await P(a,b)||await O(a,b))||(await H(a)?(b("selecting_provider_region",`Selected ${c} region`),await a.waitForTimeout(700),!0):await w(a,l)?(b("opening_provider_region_selector",`Opening ${c} region selector`),await a.waitForTimeout(500),await w(a,m)&&(b("selecting_provider_region",`Selected ${c} region`),await a.waitForTimeout(700)),!0):await w(a,m)?(b("selecting_provider_region",`Selected ${c} region`),await a.waitForTimeout(700),!0):await I(a)?(b("filling_provider_onboarding",`Filled ${c} onboarding defaults`),await a.waitForTimeout(500),!0):!!await w(a,k)&&(b("continuing_provider_onboarding",`Continuing ${c} onboarding`),await a.waitForTimeout(1e3),!0)))}async function R(a,b){return!D(a)&&(await w(a,j)?(b("accepting_provider_privacy_dialog","Confirmed provider privacy agreement dialog"),await a.waitForTimeout(1e3),!0):(await x(a,i)&&(b("accepting_provider_terms","Accepted provider terms for Google login"),await a.waitForTimeout(400)),!!await w(a,h)&&(b("selecting_google_login","Selecting Google login"),await a.waitForTimeout(1e3),await w(a,j)&&(b("accepting_provider_privacy_dialog","Confirmed provider privacy agreement dialog"),await a.waitForTimeout(1e3)),!0)))}function S(a,b,c=9e5){let d,e,f=new Promise((a,b)=>{d=a,e=b}),g=!1,h=new Set,i=new Map,j=setTimeout(()=>{k(null,Error("Timed out waiting for Kiro callback"))},c);function k(a,b=null){if(!g){for(let a of(g=!0,clearTimeout(j),i.values()))for(let b of a)try{b()}catch{}i.clear(),b?e(b):d(a)}}function l(a,b){if(!a||h.has(a))return;h.add(a);let c=a=>{let b=t(a?.url?.()||"");b&&k(b)},d=a=>{let b=t(a?.url?.()||"");b&&k(b)},e=a=>{let b=t(a?.url?.()||"");b&&k(b)},f=()=>{let b=t(a.url?.()||"");b&&k(b)};a.on("framenavigated",c),a.on("request",d),a.on("requestfailed",e),a.on("domcontentloaded",f),a.on("load",f),b.push(()=>{a.off("framenavigated",c),a.off("request",d),a.off("requestfailed",e),a.off("domcontentloaded",f),a.off("load",f)});let g=t(a.url?.()||"");g&&k(g)}function m(a,b){if(g||i.has(a))return;let c=[];i.set(a,c);let d=a=>l(a,c);a.on("page",d),c.push(()=>a.off("page",d)),b&&l(b,c)}return m(a,b),f.rebind=({context:a,page:b}={})=>{a&&m(a,b)},f}function T(a,b,{prefix:c,timeoutMs:d=9e5}={}){let e,f,g=new Promise((a,b)=>{e=a,f=b}),h=!1,i=new Set,j=new Map,k=setTimeout(()=>{l(null,Error("Timed out waiting for OAuth callback"))},d);function l(a,b=null){if(!h){for(let a of(h=!0,clearTimeout(k),j.values()))for(let b of a)try{b()}catch{}j.clear(),b?f(b):e(a)}}function m(a,b){if(!a||i.has(a))return;i.add(a);let d=a=>{let b=function(a,b){if(!a||!b||!a.startsWith(b))return null;let c=a.indexOf("?"),d=new URLSearchParams(c>=0?a.slice(c+1):""),e=d.get("code"),f=d.get("state");return e?{callbackUrl:a,code:e,state:f}:null}(a||"",c);b&&l(b)},e=a=>d(a?.url?.()||""),f=a=>d(a?.url?.()||""),g=a=>d(a?.url?.()||""),h=()=>d(a.url?.()||"");a.on("framenavigated",e),a.on("request",f),a.on("requestfailed",g),a.on("domcontentloaded",h),a.on("load",h),b.push(()=>{a.off("framenavigated",e),a.off("request",f),a.off("requestfailed",g),a.off("domcontentloaded",h),a.off("load",h)}),d(a.url?.()||"")}function n(a,b){if(h||j.has(a))return;let c=[];j.set(a,c);let d=a=>m(a,c);a.on("page",d),c.push(()=>a.off("page",d)),b&&m(b,c)}return n(a,b),g.rebind=({context:a,page:b}={})=>{a&&n(a,b)},g}async function U({page:a,authUrl:b,email:c,password:g,successPromise:h,shortTimeoutMs:i=9e4,serviceLabel:j="provider",openingStep:k="opening_google_oauth",openingMessage:l="Opening Google OAuth page",successStep:m="oauth_success_received",successMessage:n="OAuth success received",onStep:r}){let s=Date.now(),t=(a,b)=>{r?.(a,b)};t(k,l),await a.goto(b,{waitUntil:"domcontentloaded",timeout:6e4}),await a.waitForTimeout(2e3),await R(a,t);let u=await z(a,d,{timeout:15e3});for(u&&(t("entering_email","Entering Google email"),await A(u,c)?(t("submitting_email","Submitting email"),await v(a,e),await a.waitForTimeout(2500)):t("email_fill_failed","Could not fill the Google email field; will retry in the polling loop"));Date.now()-s<i;){let b=await Promise.race([h.then(a=>({kind:"success",result:a})).catch(a=>({kind:"success_error",error:a})),new Promise(a=>setTimeout(()=>a(null),800))]);if(b?.kind==="success")return t(m,n),{status:"success",...b.result};if(b?.kind==="success_error")return t("oauth_timeout",`Timed out waiting for ${j} authorization`),{status:"failed_timeout",error:b.error?.message||`Timed out waiting for ${j} authorization`};if(await F(a,t))continue;if(function(a){try{let b=new URL(a.url());if(b.pathname.startsWith("/not-supported"))return!0;return"about.google"===b.hostname||b.hostname.endsWith(".about.google")}catch{return!1}}(a))return t("manual_assist_required","Google blocked the automated browser (not-supported). Use the Camoufox engine or complete manually."),{status:"needs_manual",error:"Google blocked the automated browser at the OAuth consent step (not-supported page). Switch to the Camoufox engine or finish this account manually."};let i=await B(a);if(C(i,o))return t("invalid_credentials","Google rejected the supplied email or password"),{status:"failed_invalid_credentials",error:"Google rejected the supplied email or password."};if(C(i,q))return t("account_restricted","Account is restricted, suspended, or banned by the provider"),{status:"failed_restricted",error:"Account is restricted, suspended, or banned. Skipping."};if(C(i,p))return t("manual_assist_required","Google requested CAPTCHA, 2FA, or recovery verification"),{status:"needs_manual",error:"Manual assist required in the browser session (CAPTCHA, 2FA, recovery, or suspicious-login challenge)."};if(await G(a,i)){t("google_onboarding","Accepted Google onboarding or privacy prompt");continue}if(await Q(a,t,j))continue;let k=await y(a,'input[type="password"], input[name="Passwd"], input[name="password"], input[aria-label*="Password" i], input[aria-label*="password" i], input[aria-label*="Sandi" i], input[aria-label*="kata sandi" i]');if(k){t("entering_password","Entering Google password"),await A(k,g)?(t("submitting_password","Submitting password"),await v(a,e)):t("password_fill_failed","Could not fill the Google password field; retrying loop"),await a.waitForTimeout(700);continue}let l=await y(a,d);if(l){t("entering_email","Entering Google email"),await A(l,c)?(t("submitting_email","Submitting email"),await v(a,e)):t("email_fill_failed","Could not fill the Google email field; retrying loop"),await a.waitForTimeout(700);continue}if(!await R(a,t)){if(await v(a,f)){t("approving_consent",`Approving Google or ${j} consent`),await a.waitForTimeout(700);continue}t("waiting_for_next_screen",`Waiting for the next Google or ${j} screen`),await a.waitForTimeout(700)}}return t("manual_assist_required",`Flow did not complete ${j} authorization automatically`),{status:"needs_manual",error:`Manual assist required in the browser session because the login flow did not complete ${j} authorization automatically.`}}async function V({page:a,authUrl:b,email:c,password:d,callbackPromise:e,shortTimeoutMs:f=9e4,onStep:g}){return U({page:a,authUrl:b,email:c,password:d,successPromise:e,shortTimeoutMs:f,serviceLabel:"Kiro",openingStep:"opening_google_oauth",openingMessage:"Opening Google OAuth page",successStep:"kiro_callback_received",successMessage:"Kiro callback received",onStep:g})}},89718:(a,b,c)=>{c.d(b,{CG:()=>d.CG,Dj:()=>d.Dj,Fh:()=>d.Fh,Iq:()=>d.Iq,K1:()=>d.K1,KJ:()=>d.KJ,KK:()=>d.KK,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,Mc:()=>d.Mc,NR:()=>d.NR,OM:()=>d.OM,PX:()=>d.PX,Pc:()=>d.Pc,QI:()=>d.QI,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Uv:()=>d.Uv,VT:()=>d.VT,XW:()=>d.XW,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,bI:()=>d.bI,c:()=>d.c,dK:()=>d.dK,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,getProviderConnections:()=>d.P,getQuotaSnapshot:()=>d.LF,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,jd:()=>d.jd,mt:()=>d.mt,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,p3:()=>d.p3,qd:()=>d.qd,r4:()=>d.r4,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,uv:()=>d.uv,yF:()=>d.yF,yW:()=>d.yW,yg:()=>d.yg,zP:()=>d.zP,zY:()=>d.zY});var d=c(93999)},94755:(a,b,c)=>{c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length;var h=c(50122);let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return(0,h.k)(k)}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=9489,exports.ids=[9489],exports.modules={3359:(a,b,c)=>{c.d(b,{K0:()=>j,Oh:()=>n,c9:()=>q,lL:()=>r,s9:()=>i});var d=c(89718),e=c(44404);let f="gpt-5.5";function g(a){return String(a||"").trim().replace(/^\/+|\/+$/g,"")}function h(a){let b;return`cx/${(b=g(a)).startsWith("cx/")?b.slice(3):b.startsWith("codex/")?b.slice(6):b||f}`}function i(a){let b=g(a);if(!b)return null;if("auto-codex"===b)return{mode:"router",modelString:`cx/${f}`,strictAccount:!1,label:"Auto Codex"};if(b.startsWith("router/")){let a;return{mode:"router",modelString:(a=g(b.slice(7))||f).includes("/")?a:`cx/${a}`,strictAccount:!1,label:"Router Pool"}}if(b.startsWith("original/"))return{mode:"original",modelString:h(b.slice(9)),strictAccount:!0,label:"Original Codex"};if("original"===b)return{mode:"original",modelString:`cx/${f}`,strictAccount:!0,label:"Original Codex"};let c=b.startsWith("account/")?"account/":b.startsWith("codex-account/")?"codex-account/":null;if(c){let a=b.slice(c.length),d=a.indexOf("/"),e=-1===d?a:a.slice(0,d),g=-1===d?f:a.slice(d+1);return e?{mode:"account",accountRef:e,modelString:h(g),strictAccount:!0,label:"Pinned Codex Account"}:null}return null}function j(a){return a?.displayName||a?.name||a?.email||a?.id||"Codex account"}function k(a){let b=String(j(a)).toLowerCase().replace(/@/g,"-").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48)||"account";return`${b}-${String(a?.id||"").slice(0,8)}`}function l(a){return String(a||"").trim().toLowerCase()}function m(a){let b=a?.providerSpecificData||{};return"GPTJson"===b.importedFrom||String(b.tokenSource||"").startsWith("ChatGPT_team")}async function n(a=5e3){let b=await (0,d.getProviderConnections)({provider:"codex",isActive:!0}),c=b.slice(0,a).map(a=>({id:a.id,slug:k(a),label:j(a),email:a.email||null,imported:m(a),priority:a.priority||null})),e=o(b);return{accounts:c,original:e?{id:e.id,slug:k(e),label:j(e),email:e.email||null,imported:m(e),priority:e.priority||null}:null}}function o(a){return Array.isArray(a)&&0!==a.length?a.find(a=>!m(a))||a[0]:null}async function p(a){let b=l(a);if(!b)return null;let c=await (0,d.getProviderConnections)({provider:"codex",isActive:!0}),e=c.find(a=>l(a.id)===b||k(a)===b||l(a.email)===b||l(a.name)===b||l(a.displayName)===b);if(e)return e;let f=c.filter(a=>l(a.id).startsWith(b)||k(a).startsWith(b));return 1===f.length?f[0]:null}async function q(a){if(!a||"original"!==a.mode&&"account"!==a.mode)return null;if("account"===a.mode)return p(a.accountRef);let b=await (0,d.mt)(),c=b.codexGatewayOriginalConnectionId||b.codexOriginalConnectionId||"";if(c){let a=await p(c);if(a)return a}return o(await (0,d.getProviderConnections)({provider:"codex",isActive:!0}))}function r(a=[]){if(!a.some(a=>"codex"===a.provider&&!1!==a.isActive))return[];let b=[{id:"auto-codex",object:"model",owned_by:"9router-codex-gateway"},...(e.vq.cx||[]).filter(a=>!a.type||"llm"===a.type).map(a=>a.id).flatMap(a=>[{id:`router/${a}`,object:"model",owned_by:"9router-codex-gateway"},{id:`original/${a}`,object:"model",owned_by:"9router-codex-gateway"}])];for(let c of a.filter(a=>"codex"===a.provider&&!1!==a.isActive))b.push({id:`account/${k(c)}`,object:"model",owned_by:"9router-codex-account"});return b}},18910:(a,b,c)=>{c.d(b,{Pr:()=>i,UP:()=>g,Vu:()=>h});var d=c(12557),e=c(43659);let f=new Map;function g(a){a?f.delete(a):f.clear()}function h(a,b){if(a.includes("/"))return null;let c=(Array.isArray(b)?b:b?.combos||[]).find(b=>b.name===a);return c&&c.models&&c.models.length>0?c.models:null}async function i({body:a,models:b,handleSingleModel:c,log:g,comboName:h,comboStrategy:j,comboStickyLimit:k=1}){let l=function(a,b,c,d=1){let e;if(!a||a.length<=1||"round-robin"!==c)return a;let g=b||"__default__",h=Number.isFinite(e=Number.parseInt(d,10))&&e>0?e:1,i=f.get(g),j="number"==typeof i?{index:i,consecutiveUseCount:0}:i||{index:0,consecutiveUseCount:0},k=j.index%a.length,l=function(a,b){let c=[...a];for(let a=0;a<b;a++){let a=c.shift();c.push(a)}return c}(a,k),m=j.consecutiveUseCount+1;return m>=h?f.set(g,{index:(k+1)%a.length,consecutiveUseCount:0}):f.set(g,{index:k,consecutiveUseCount:m}),l}(b,h,j,k),m=null,n=null,o=null;for(let b=0;b<l.length;b++){let e=l[b];g.info("COMBO",`Trying model ${b+1}/${l.length}: ${e}`);try{let b=await c(a,e);if(b.ok)return g.info("COMBO",`Model ${e} succeeded`),b;let f=b.statusText||"",h=null;try{let a=await b.clone().json();f=a?.error?.message||a?.error||a?.message||f,h=a?.retryAfter||null}catch{}if(h&&(!n||new Date(h)<new Date(n))&&(n=h),"string"!=typeof f)try{f=JSON.stringify(f)}catch{f=String(f)}let{shouldFallback:i,cooldownMs:j}=(0,d.hk)(b.status,f);if(!i)return g.warn("COMBO",`Model ${e} failed (no fallback)`,{status:b.status}),b;j&&j>0&&j<=5e3&&(503===b.status||502===b.status||504===b.status)&&(g.info("COMBO",`Model ${e} transient ${b.status}, waiting ${j}ms before next`),await new Promise(a=>setTimeout(a,j))),m=f||String(b.status),o||(o=b.status),g.warn("COMBO",`Model ${e} failed, trying next`,{status:b.status})}catch(a){m=a.message||String(a),o||(o=500),g.warn("COMBO",`Model ${e} threw error, trying next`,{error:m})}}let p=m&&m.toLowerCase().includes("no credentials")?503:o||503,q=m||"All combo models unavailable";if(n){let a=(0,d.Qo)(n);return g.warn("COMBO",`All models failed | ${q} (${a})`),(0,e.wO)(p,q,n,a)}return g.warn("COMBO",`All models failed | ${q}`),new Response(JSON.stringify({error:{message:q}}),{status:p,headers:{"Content-Type":"application/json"}})}},38775:(a,b,c)=>{c.d(b,{d_:()=>i,mA:()=>h});var d=c(89718),e=c(40669),f=c(3359);let g={xmtp:"xiaomi-tokenplan","xiaomi-tokenplan":"xiaomi-tokenplan"};async function h(a){let b,c=(0,f.s9)(a);if(c)return{...await h(c.modelString),gateway:{mode:c.mode,accountRef:c.accountRef||null,strictAccount:!!c.strictAccount,requestedModel:a,modelString:c.modelString}};let i=(b=(0,e.Xh)(a),b?.providerAlias&&g[b.providerAlias]?{...b,provider:g[b.providerAlias]}:b);if(!i.isAlias){let a=(await (0,d.Fh)({type:"openai-compatible"})).find(a=>a.prefix===i.providerAlias);if(a)return{provider:a.id,model:i.model};let b=(await (0,d.Fh)({type:"anthropic-compatible"})).find(a=>a.prefix===i.providerAlias);if(b)return{provider:b.id,model:i.model};let c=(await (0,d.Fh)({type:"custom-embedding"})).find(a=>a.prefix===i.providerAlias);return c?{provider:c.id,model:i.model}:{provider:i.provider,model:i.model}}return await (0,d.Dj)(i.model)?{provider:null,model:i.model}:(0,e.js)(a,d.OM)}async function i(a){if(a.includes("/"))return null;let b=await (0,d.Dj)(a);return b&&b.models&&b.models.length>0?b.models:null}},79489:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{P:()=>u});var e=c(48895),f=c(80238),g=c(71750),h=c(89718),i=c(38775),j=c(92500),k=c(43659),l=c(18910),m=c(27349),n=c(41004),o=c(14170),p=c(7803),q=c(67828),r=c(38160),s=c(3359),t=a([e,j]);async function u(a,b=null){let c;try{c=await a.json()}catch{return p.warn("CHAT","Invalid JSON body"),(0,k.yj)(n.gx.BAD_REQUEST,"Invalid JSON body")}b||(b={endpoint:new URL(a.url).pathname,body:c,headers:Object.fromEntries(a.headers.entries())}),(0,g.n)(b.headers);let d=new URL(a.url),e=c.model,j=c.messages?.length||c.input?.length||0,o=c.tools?.length||0,q=c.reasoning_effort||c.reasoning?.effort||null;p.request("POST",`${d.pathname} | ${e} | ${j} msgs${o?` | ${o} tools`:""}${q?` | effort=${q}`:""}`);let r=a.headers.get("Authorization"),s=(0,f.Tr)(a);if(r&&s){let a=p.maskKey(s);p.debug("AUTH",`API Key: ${a}`)}else p.debug("AUTH","No API key provided (local mode)");let t=await (0,h.mt)();if(t.requireApiKey){if(!s)return p.warn("AUTH","Missing API key (requireApiKey=true)"),(0,k.yj)(n.gx.UNAUTHORIZED,"Missing API key");if(!await (0,f.kI)(s))return p.warn("AUTH","Invalid API key (requireApiKey=true)"),(0,k.yj)(n.gx.UNAUTHORIZED,"Invalid API key")}if(!e)return p.warn("CHAT","Missing model"),(0,k.yj)(n.gx.BAD_REQUEST,"Missing model");let w=a?.headers?.get("user-agent")||"",x=(0,m.c)(c,e,w,!!t.ccFilterNaming);if(x)return x.response||x;let y=await (0,i.d_)(e);if(y){let d=t.comboStrategies||{},f=d[e]?.fallbackStrategy||t.comboStrategy||"fallback",g=t.comboStickyRoundRobinLimit;return p.info("CHAT",`Combo "${e}" with ${y.length} models (strategy: ${f}, sticky: ${g})`),(0,l.Pr)({body:c,models:y,handleSingleModel:(c,d)=>v(c,d,b,a,s),log:p,comboName:e,comboStrategy:f,comboStickyLimit:g})}return v(c,e,b,a,s)}async function v(a,b,c=null,d=null,e=null){let g=await (0,i.mA)(b);if(!g.provider){let f=await (0,i.d_)(b);if(f){let g=await (0,h.mt)(),i=g.comboStrategies||{},j=i[b]?.fallbackStrategy||g.comboStrategy||"fallback",k=g.comboStickyRoundRobinLimit;return p.info("CHAT",`Combo "${b}" with ${f.length} models (strategy: ${j}, sticky: ${k})`),(0,l.Pr)({body:a,models:f,handleSingleModel:(a,b)=>v(a,b,c,d,e),log:p,comboName:b,comboStrategy:j,comboStickyLimit:k})}return p.warn("CHAT","Invalid model format",{model:b}),(0,k.yj)(n.gx.BAD_REQUEST,"Invalid model format")}let{provider:m,model:t}=g,u=g.gateway||null;b!==`${m}/${t}`?p.info("ROUTING",`${b} → ${m}/${t}`):p.info("ROUTING",`Provider: ${m}, Model: ${t}`);let w=d?.headers?.get("user-agent")||"",x=new Set,y=null,z=null,A={};if(u&&"codex"===m&&("original"===u.mode||"account"===u.mode)){let a=await (0,s.c9)(u);if(!a){let a="account"===u.mode?`account "${u.accountRef}"`:"original Codex account";return p.warn("AUTH",`Codex gateway could not resolve ${a}`),(0,k.yj)(n.gx.NOT_FOUND,`Codex gateway could not resolve ${a}`)}A.preferredConnectionId=a.id,A.strictPreferred=!!u.strictAccount,p.info("ROUTING",`Codex gateway ${u.mode} pinned to ${(0,s.K0)(a)}`)}for(;;){let b=await (0,f.c1)(m,x,t,A);if(!b||b.allRateLimited){if(b?.allRateLimited){let a=y||b.lastError||"Unavailable",c=z||Number(b.lastErrorCode)||n.gx.SERVICE_UNAVAILABLE;return p.warn("CHAT",`[${m}/${t}] ${a} (${b.retryAfterHuman})`),(0,k.wO)(c,`[${m}/${t}] ${a}`,b.retryAfter,b.retryAfterHuman)}if(0===x.size)return p.warn("AUTH",`No active credentials for provider: ${m}`),(0,k.yj)(n.gx.NOT_FOUND,`No active credentials for provider: ${m}`);return p.warn("CHAT","No more accounts available",{provider:m}),(0,k.yj)(z||n.gx.SERVICE_UNAVAILABLE,y||"All accounts unavailable")}p.info("AUTH",`\x1b[32mUsing ${m} account: ${b.connectionName}\x1b[0m`);let g=await (0,q.eU)(m,b);if(("antigravity"===m||"gemini-cli"===m)&&!g.projectId){let a=await (0,r.eG)(b.connectionId,g.accessToken);a&&(g.projectId=a,(0,q.vN)(b.connectionId,{projectId:a}).catch(()=>{}))}let i=await (0,h.mt)(),l=(i.providerThinking||{})[m]||null,s=await (0,j.w)({body:{...a,model:`${m}/${t}`},modelInfo:{provider:m,model:t},credentials:g,log:p,clientRawRequest:c,connectionId:b.connectionId,userAgent:w,apiKey:e,ccFilterNaming:!!i.ccFilterNaming,rtkEnabled:!!i.rtkEnabled,cavemanEnabled:!!i.cavemanEnabled,cavemanLevel:i.cavemanLevel||"full",contextInjectionEnabled:!!i.contextInjectionEnabled,providerThinking:l,sourceFormatOverride:d?.url?(0,o.t)(new URL(d.url).pathname,a):null,onCredentialsRefreshed:async a=>{await (0,q.vN)(b.connectionId,{...a,existingProviderSpecificData:b.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{await (0,f.Pt)(b.connectionId,b,t)}});if(s.success)return s.response;let{shouldFallback:u}=await (0,f.vk)(b.connectionId,s.status,s.error,m,t,s.resetsAtMs);if(u){p.warn("AUTH",`Account ${b.connectionName} unavailable (${s.status}), trying fallback`),x.add(b.connectionId),y=s.error,z=s.status;continue}return s.response}}[e,j]=t.then?(await t)():t,d()}catch(a){d(a)}})}};
|
|
1
|
+
"use strict";exports.id=9489,exports.ids=[9489],exports.modules={3359:(a,b,c)=>{c.d(b,{K0:()=>j,Oh:()=>n,c9:()=>q,lL:()=>r,s9:()=>i});var d=c(89718),e=c(44404);let f="gpt-5.5";function g(a){return String(a||"").trim().replace(/^\/+|\/+$/g,"")}function h(a){let b;return`cx/${(b=g(a)).startsWith("cx/")?b.slice(3):b.startsWith("codex/")?b.slice(6):b||f}`}function i(a){let b=g(a);if(!b)return null;if("auto-codex"===b)return{mode:"router",modelString:`cx/${f}`,strictAccount:!1,label:"Auto Codex"};if(b.startsWith("router/")){let a;return{mode:"router",modelString:(a=g(b.slice(7))||f).includes("/")?a:`cx/${a}`,strictAccount:!1,label:"Router Pool"}}if(b.startsWith("original/"))return{mode:"original",modelString:h(b.slice(9)),strictAccount:!0,label:"Original Codex"};if("original"===b)return{mode:"original",modelString:`cx/${f}`,strictAccount:!0,label:"Original Codex"};let c=b.startsWith("account/")?"account/":b.startsWith("codex-account/")?"codex-account/":null;if(c){let a=b.slice(c.length),d=a.indexOf("/"),e=-1===d?a:a.slice(0,d),g=-1===d?f:a.slice(d+1);return e?{mode:"account",accountRef:e,modelString:h(g),strictAccount:!0,label:"Pinned Codex Account"}:null}return null}function j(a){return a?.displayName||a?.name||a?.email||a?.id||"Codex account"}function k(a){let b=String(j(a)).toLowerCase().replace(/@/g,"-").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48)||"account";return`${b}-${String(a?.id||"").slice(0,8)}`}function l(a){return String(a||"").trim().toLowerCase()}function m(a){let b=a?.providerSpecificData||{};return"GPTJson"===b.importedFrom||String(b.tokenSource||"").startsWith("ChatGPT_team")}async function n(a=5e3){let b=await (0,d.getProviderConnections)({provider:"codex",isActive:!0}),c=b.slice(0,a).map(a=>({id:a.id,slug:k(a),label:j(a),email:a.email||null,imported:m(a),priority:a.priority||null})),e=o(b);return{accounts:c,original:e?{id:e.id,slug:k(e),label:j(e),email:e.email||null,imported:m(e),priority:e.priority||null}:null}}function o(a){return Array.isArray(a)&&0!==a.length?a.find(a=>!m(a))||a[0]:null}async function p(a){let b=l(a);if(!b)return null;let c=await (0,d.getProviderConnections)({provider:"codex",isActive:!0}),e=c.find(a=>l(a.id)===b||k(a)===b||l(a.email)===b||l(a.name)===b||l(a.displayName)===b);if(e)return e;let f=c.filter(a=>l(a.id).startsWith(b)||k(a).startsWith(b));return 1===f.length?f[0]:null}async function q(a){if(!a||"original"!==a.mode&&"account"!==a.mode)return null;if("account"===a.mode)return p(a.accountRef);let b=await (0,d.mt)(),c=b.codexGatewayOriginalConnectionId||b.codexOriginalConnectionId||"";if(c){let a=await p(c);if(a)return a}return o(await (0,d.getProviderConnections)({provider:"codex",isActive:!0}))}function r(a=[]){if(!a.some(a=>"codex"===a.provider&&!1!==a.isActive))return[];let b=[{id:"auto-codex",object:"model",owned_by:"9router-codex-gateway"},...(e.vq.cx||[]).filter(a=>!a.type||"llm"===a.type).map(a=>a.id).flatMap(a=>[{id:`router/${a}`,object:"model",owned_by:"9router-codex-gateway"},{id:`original/${a}`,object:"model",owned_by:"9router-codex-gateway"}])];for(let c of a.filter(a=>"codex"===a.provider&&!1!==a.isActive))b.push({id:`account/${k(c)}`,object:"model",owned_by:"9router-codex-account"});return b}},18910:(a,b,c)=>{c.d(b,{Pr:()=>i,UP:()=>g,Vu:()=>h});var d=c(12557),e=c(43659);let f=new Map;function g(a){a?f.delete(a):f.clear()}function h(a,b){if(a.includes("/"))return null;let c=(Array.isArray(b)?b:b?.combos||[]).find(b=>b.name===a);return c&&c.models&&c.models.length>0?c.models:null}async function i({body:a,models:b,handleSingleModel:c,log:g,comboName:h,comboStrategy:j,comboStickyLimit:k=1}){let l=function(a,b,c,d=1){let e;if(!a||a.length<=1||"round-robin"!==c)return a;let g=b||"__default__",h=Number.isFinite(e=Number.parseInt(d,10))&&e>0?e:1,i=f.get(g),j="number"==typeof i?{index:i,consecutiveUseCount:0}:i||{index:0,consecutiveUseCount:0},k=j.index%a.length,l=function(a,b){let c=[...a];for(let a=0;a<b;a++){let a=c.shift();c.push(a)}return c}(a,k),m=j.consecutiveUseCount+1;return m>=h?f.set(g,{index:(k+1)%a.length,consecutiveUseCount:0}):f.set(g,{index:k,consecutiveUseCount:m}),l}(b,h,j,k),m=null,n=null,o=null;for(let b=0;b<l.length;b++){let e=l[b];g.info("COMBO",`Trying model ${b+1}/${l.length}: ${e}`);try{let b=await c(a,e);if(b.ok)return g.info("COMBO",`Model ${e} succeeded`),b;let f=b.statusText||"",h=null;try{let a=await b.clone().json();f=a?.error?.message||a?.error||a?.message||f,h=a?.retryAfter||null}catch{}if(h&&(!n||new Date(h)<new Date(n))&&(n=h),"string"!=typeof f)try{f=JSON.stringify(f)}catch{f=String(f)}let{shouldFallback:i,cooldownMs:j}=(0,d.hk)(b.status,f);if(!i)return g.warn("COMBO",`Model ${e} failed (no fallback)`,{status:b.status}),b;j&&j>0&&j<=5e3&&(503===b.status||502===b.status||504===b.status)&&(g.info("COMBO",`Model ${e} transient ${b.status}, waiting ${j}ms before next`),await new Promise(a=>setTimeout(a,j))),m=f||String(b.status),o||(o=b.status),g.warn("COMBO",`Model ${e} failed, trying next`,{status:b.status})}catch(a){m=a.message||String(a),o||(o=500),g.warn("COMBO",`Model ${e} threw error, trying next`,{error:m})}}let p=m&&m.toLowerCase().includes("no credentials")?503:o||503,q=m||"All combo models unavailable";if(n){let a=(0,d.Qo)(n);return g.warn("COMBO",`All models failed | ${q} (${a})`),(0,e.wO)(p,q,n,a)}return g.warn("COMBO",`All models failed | ${q}`),new Response(JSON.stringify({error:{message:q}}),{status:p,headers:{"Content-Type":"application/json"}})}},38775:(a,b,c)=>{c.d(b,{d_:()=>i,mA:()=>h});var d=c(89718),e=c(40669),f=c(3359);let g={xmtp:"xiaomi-tokenplan","xiaomi-tokenplan":"xiaomi-tokenplan"};async function h(a){let b,c=(0,f.s9)(a);if(c)return{...await h(c.modelString),gateway:{mode:c.mode,accountRef:c.accountRef||null,strictAccount:!!c.strictAccount,requestedModel:a,modelString:c.modelString}};let i=(b=(0,e.Xh)(a),b?.providerAlias&&g[b.providerAlias]?{...b,provider:g[b.providerAlias]}:b);if(!i.isAlias){let a=(await (0,d.Fh)({type:"openai-compatible"})).find(a=>a.prefix===i.providerAlias);if(a)return{provider:a.id,model:i.model};let b=(await (0,d.Fh)({type:"anthropic-compatible"})).find(a=>a.prefix===i.providerAlias);if(b)return{provider:b.id,model:i.model};let c=(await (0,d.Fh)({type:"custom-embedding"})).find(a=>a.prefix===i.providerAlias);return c?{provider:c.id,model:i.model}:{provider:i.provider,model:i.model}}return await (0,d.Dj)(i.model)?{provider:null,model:i.model}:(0,e.js)(a,d.OM)}async function i(a){if(a.includes("/"))return null;let b=await (0,d.Dj)(a);return b&&b.models&&b.models.length>0?b.models:null}},79489:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{P:()=>u});var e=c(48895),f=c(80238),g=c(71750),h=c(89718),i=c(38775),j=c(92500),k=c(43659),l=c(18910),m=c(27349),n=c(41004),o=c(14170),p=c(7803),q=c(67828),r=c(38160),s=c(3359),t=a([e,j]);async function u(a,b=null){let c;try{c=await a.json()}catch{return p.warn("CHAT","Invalid JSON body"),(0,k.yj)(n.gx.BAD_REQUEST,"Invalid JSON body")}b||(b={endpoint:new URL(a.url).pathname,body:c,headers:Object.fromEntries(a.headers.entries())}),(0,g.n)(b.headers);let d=new URL(a.url),e=c.model,j=c.messages?.length||c.input?.length||0,o=c.tools?.length||0,q=c.reasoning_effort||c.reasoning?.effort||null;p.request("POST",`${d.pathname} | ${e} | ${j} msgs${o?` | ${o} tools`:""}${q?` | effort=${q}`:""}`);let r=a.headers.get("Authorization"),s=(0,f.Tr)(a);if(r&&s){let a=p.maskKey(s);p.debug("AUTH",`API Key: ${a}`)}else p.debug("AUTH","No API key provided (local mode)");let t=await (0,h.mt)();if(t.requireApiKey){if(!s)return p.warn("AUTH","Missing API key (requireApiKey=true)"),(0,k.yj)(n.gx.UNAUTHORIZED,"Missing API key");if(!await (0,f.kI)(s))return p.warn("AUTH","Invalid API key (requireApiKey=true)"),(0,k.yj)(n.gx.UNAUTHORIZED,"Invalid API key")}if(!e)return p.warn("CHAT","Missing model"),(0,k.yj)(n.gx.BAD_REQUEST,"Missing model");let w=a?.headers?.get("user-agent")||"",x=(0,m.c)(c,e,w,!!t.ccFilterNaming);if(x)return x.response||x;let y=await (0,i.d_)(e);if(y){let d=t.comboStrategies||{},f=d[e]?.fallbackStrategy||t.comboStrategy||"fallback",g=t.comboStickyRoundRobinLimit;return p.info("CHAT",`Combo "${e}" with ${y.length} models (strategy: ${f}, sticky: ${g})`),(0,l.Pr)({body:c,models:y,handleSingleModel:(c,d)=>v(c,d,b,a,s),log:p,comboName:e,comboStrategy:f,comboStickyLimit:g})}return v(c,e,b,a,s)}async function v(a,b,c=null,d=null,e=null){let g=await (0,i.mA)(b);if(!g.provider){let f=await (0,i.d_)(b);if(f){let g=await (0,h.mt)(),i=g.comboStrategies||{},j=i[b]?.fallbackStrategy||g.comboStrategy||"fallback",k=g.comboStickyRoundRobinLimit;return p.info("CHAT",`Combo "${b}" with ${f.length} models (strategy: ${j}, sticky: ${k})`),(0,l.Pr)({body:a,models:f,handleSingleModel:(a,b)=>v(a,b,c,d,e),log:p,comboName:b,comboStrategy:j,comboStickyLimit:k})}return p.warn("CHAT","Invalid model format",{model:b}),(0,k.yj)(n.gx.BAD_REQUEST,"Invalid model format")}let{provider:m,model:t}=g,u=g.gateway||null;b!==`${m}/${t}`?p.info("ROUTING",`${b} → ${m}/${t}`):p.info("ROUTING",`Provider: ${m}, Model: ${t}`);let w=d?.headers?.get("user-agent")||"",x=new Set,y=null,z=null,A={};if(u&&"codex"===m&&("original"===u.mode||"account"===u.mode)){let a=await (0,s.c9)(u);if(!a){let a="account"===u.mode?`account "${u.accountRef}"`:"original Codex account";return p.warn("AUTH",`Codex gateway could not resolve ${a}`),(0,k.yj)(n.gx.NOT_FOUND,`Codex gateway could not resolve ${a}`)}A.preferredConnectionId=a.id,A.strictPreferred=!!u.strictAccount,p.info("ROUTING",`Codex gateway ${u.mode} pinned to ${(0,s.K0)(a)}`)}for(;;){let b=await (0,f.c1)(m,x,t,A);if(!b||b.allRateLimited){if(b?.allRateLimited){let a=y||b.lastError||"Unavailable",c=z||Number(b.lastErrorCode)||n.gx.SERVICE_UNAVAILABLE;return p.warn("CHAT",`[${m}/${t}] ${a} (${b.retryAfterHuman})`),(0,k.wO)(c,`[${m}/${t}] ${a}`,b.retryAfter,b.retryAfterHuman)}if(0===x.size)return p.warn("AUTH",`No active credentials for provider: ${m}`),(0,k.yj)(n.gx.NOT_FOUND,`No active credentials for provider: ${m}`);return p.warn("CHAT","No more accounts available",{provider:m}),(0,k.yj)(z||n.gx.SERVICE_UNAVAILABLE,y||"All accounts unavailable")}p.info("AUTH",`\x1b[32mUsing ${m} account: ${b.connectionName}\x1b[0m`);let g=await (0,q.eU)(m,b);if(("antigravity"===m||"gemini-cli"===m)&&!g.projectId){let a=await (0,r.eG)(b.connectionId,g.accessToken);a&&(g.projectId=a,(0,q.vN)(b.connectionId,{projectId:a}).catch(()=>{}))}let i=await (0,h.mt)(),l=(i.providerThinking||{})[m]||null,s=await (0,j.w)({body:{...a,model:`${m}/${t}`},modelInfo:{provider:m,model:t},credentials:g,log:p,clientRawRequest:c,connectionId:b.connectionId,userAgent:w,apiKey:e,ccFilterNaming:!!i.ccFilterNaming,rtkEnabled:!!i.rtkEnabled,cavemanEnabled:!!i.cavemanEnabled,cavemanLevel:i.cavemanLevel||"full",ponytailEnabled:!!i.ponytailEnabled,ponytailLevel:i.ponytailLevel||"full",contextInjectionEnabled:!!i.contextInjectionEnabled,providerThinking:l,sourceFormatOverride:d?.url?(0,o.t)(new URL(d.url).pathname,a):null,onCredentialsRefreshed:async a=>{await (0,q.vN)(b.connectionId,{...a,existingProviderSpecificData:b.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{await (0,f.Pt)(b.connectionId,b,t)}});if(s.success)return s.response;let{shouldFallback:u}=await (0,f.vk)(b.connectionId,s.status,s.error,m,t,s.resetsAtMs);if(u){p.warn("AUTH",`Account ${b.connectionName} unavailable (${s.status}), trying fallback`),x.add(b.connectionId),y=s.error,z=s.status;continue}return s.response}}[e,j]=t.then?(await t)():t,d()}catch(a){d(a)}})}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/
|
|
1
|
+
globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/FGw-I-CGGpfd2854oBF1w/_buildManifest.js","static/FGw-I-CGGpfd2854oBF1w/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-f482ccef6733ebcc.js","static/chunks/4bd1b696-e356ca5ba0218e27.js","static/chunks/3794-e569667691edc8f7.js","static/chunks/main-app-5a6578c0256da676.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
|