zevairouter 1.1.20 → 1.1.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -0
- package/cli/app/.next-cli-build/BUILD_ID +1 -1
- package/cli/app/.next-cli-build/app-path-routes-manifest.json +11 -11
- package/cli/app/.next-cli-build/build-manifest.json +2 -2
- package/cli/app/.next-cli-build/prerender-manifest.json +3 -3
- 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.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_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/_not-found/__PAGE__.segment.rsc +3 -3
- 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/cli-tools/all-statuses/route.js +4 -4
- package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +3 -3
- package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/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/providers/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/tunnel/tailscale-install/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/version/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/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +3 -3
- 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 +5 -5
- 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/_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 +5 -5
- 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/_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 +5 -5
- 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/_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 +5 -5
- 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/_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 +5 -5
- 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/_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 +5 -5
- 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/_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 +5 -5
- 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/_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 +5 -5
- 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/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_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 +5 -5
- 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/_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 +5 -5
- 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/_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 +5 -5
- 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/_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 +5 -5
- 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/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_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 +6 -6
- 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/_tree.segment.rsc +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 +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
- 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/skills.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/skills.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +5 -5
- 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/_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 +5 -5
- 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/_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 +5 -5
- 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/_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 +3 -3
- 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/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/landing.html +1 -1
- package/cli/app/.next-cli-build/server/app/landing.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +4 -4
- 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/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
- 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 +11 -11
- package/cli/app/.next-cli-build/server/chunks/1051.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/1131.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/1350.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/1890.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/3101.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/3949.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/4827.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/5436.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/7319.js +4 -4
- package/cli/app/.next-cli-build/server/chunks/7634.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/8306.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/8895.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/8910.js +1 -1
- package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/pages/404.html +1 -1
- package/cli/app/.next-cli-build/server/pages/500.html +1 -1
- package/cli/app/.next-cli-build/server/server-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/server-reference-manifest.json +1 -1
- package/cli/app/.next-cli-build/static/chunks/{620-87693c86ce52cd6b.js → 620-46dbc702c96915a8.js} +1 -1
- package/cli/app/CHANGELOG.md +5 -0
- package/cli/app/package.json +1 -1
- package/cli/package.json +1 -1
- package/package.json +1 -1
- /package/cli/app/.next-cli-build/static/{d1_y1j8QTrpRMT0feZnO_ → 1SUOdmC5cYVWo8ijpBKlM}/_buildManifest.js +0 -0
- /package/cli/app/.next-cli-build/static/{d1_y1j8QTrpRMT0feZnO_ → 1SUOdmC5cYVWo8ijpBKlM}/_ssgManifest.js +0 -0
|
@@ -2,4 +2,4 @@ exports.id=3949,exports.ids=[3949],exports.modules={12897:(a,b,c)=>{"use strict"
|
|
|
2
2
|
${b?.stderr||""}
|
|
3
3
|
${b?.message||""}`),/(?:invalid choice|unknown (?:command|subcommand)|unrecognized (?:argument|command)|no such command)/i.test(a))return null;throw new u(`Failed to discover the active Hermes ${e} path`,{code:"HERMES_PATH_DISCOVERY_FAILED",status:422})}return function(a,{platform:b,label:c}){let d="win32"===b?i().win32:i().posix,e=String(a??""),f=e.endsWith("\r\n")?e.slice(0,-2):e.endsWith("\n")?e.slice(0,-1):e;if(!(f.length>0&&f.length<=32768&&f===f.trim()&&!/[\u0000-\u001f\u007f]/.test(f)&&d.isAbsolute(f)))throw new u(`Hermes returned an invalid ${c} path`,{code:"HERMES_PATH_INVALID",status:422});return d.normalize(f)}(f?.stdout,{platform:c,label:e})},f=await e("path","config");if(!f)return b;let g=await e("env-path","environment");if(!g)return b;let h="win32"===c?i().win32:i().posix;if(y(h.dirname(f),c)!==y(h.dirname(g),c))throw new u("Hermes config and environment paths use different profiles",{code:"HERMES_PATH_INVALID",status:422});return{...b,configDir:h.dirname(f),configPath:f,envPath:g}}async function X({env:a=process.env,platform:b=n().platform(),homedir:c=n().homedir(),access:d=g().access,realpath:e=g().realpath,runVersion:f=U}={}){let h="win32"===b?l.constants.F_OK:l.constants.X_OK;for(let g of function({env:a,platform:b,homedir:c}){let d="win32"===b?i().win32:i().posix,e=x({env:a,platform:b,homedir:c}).configDir,f="win32"===b?["hermes.exe","hermes"]:["hermes"],g=String(a.PATH||"").split(d.delimiter).map(a=>a.trim().replace(/^"|"$/g,"")).filter(Boolean).flatMap(a=>f.map(b=>d.resolve(a,b)));return"win32"===b?g.push(d.join(e,"hermes-agent","venv","Scripts","hermes.exe")):(g.push(d.join(e,"hermes-agent","venv","bin","hermes")),g.push(d.join(c,".local","bin","hermes")),g.push("/usr/local/bin/hermes"),a.PREFIX&&g.push(d.join(a.PREFIX,"bin","hermes"))),[...new Set(g)]}({env:a,platform:b,homedir:c})){try{await d(g,h)}catch{continue}for(let a of[["--version"],["version"]])try{let b=await f(g,a),c=function(a){let b=S(a).match(/(?:^|\r?\n)\s*Hermes Agent\s+v?(\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?)(?:\s|$)/i);return b?.[1]||null}(`${b?.stdout||""}
|
|
4
4
|
${b?.stderr||""}`);if(!c)continue;let d=g;try{d=await e(g)}catch{}return{installed:!0,binaryPath:d,version:c}}catch{}}return{installed:!1,binaryPath:null,version:null}}var Y=c(30869),Z=c(24424);let $="zevairouter-host",_=Promise.resolve();function aa(a){let b=String(a??"");if(!/^[0-9]+$/.test(b))return null;let c=Number(b);return Number.isSafeInteger(c)&&c>=1&&c<=65535?c:null}function ab(a){let b=_.then(a,a);return _=b.catch(()=>{}),b}function ac(a,b){return{installationTarget:$,platform:process.platform,configDir:a.configDir,configPath:a.configPath,envPath:a.envPath,binaryPath:b?.binaryPath||null,version:b?.version||null,supported:!!(b?.installed&&T(b.version)),localBaseUrl:function(){let a=aa(process.env.PORT)??aa(Y.h0.appPort);if(null===a)throw Error("ZevaiRouter app port configuration is invalid");return`http://127.0.0.1:${a}/v1`}()}}function ad(a,b=!1){return{available:a,restorable:b,conflict:a&&!b}}function ae(a,b){return a instanceof u?j.NextResponse.json({error:a.message,code:a.code,installationTarget:$},{status:a.status}):a instanceof SyntaxError?j.NextResponse.json({error:"Request body must be valid JSON",code:"INVALID_HERMES_SETTINGS",installationTarget:$},{status:400}):(console.error(b,a instanceof Error?a.message:a),j.NextResponse.json({error:b,code:"HERMES_IO_ERROR",installationTarget:$},{status:500}))}async function af(a,b){let c;try{let d;c=await g().open(a,"r");let e=await c.stat();if(!e.isFile())throw new u("Hermes settings path is not a regular file",{code:"HERMES_PATH_INVALID",status:422});if(e.size>b)throw new u("Hermes settings file is too large to update safely",{code:"HERMES_FILE_TOO_LARGE",status:422});let f=Buffer.allocUnsafe(b+1),h=0;for(;h<f.length;){let{bytesRead:a}=await c.read(f,h,f.length-h,h);if(0===a)break;h+=a}if(h>b)throw new u("Hermes settings file is too large to update safely",{code:"HERMES_FILE_TOO_LARGE",status:422});let i=f.subarray(0,h);try{d=new TextDecoder("utf-8",{fatal:!0}).decode(i)}catch{throw new u("Hermes settings file is not valid UTF-8",{code:"HERMES_FILE_ENCODING_INVALID",status:422})}return{exists:!0,text:d,mode:511&e.mode,uid:"win32"===process.platform?null:e.uid,gid:"win32"===process.platform?null:e.gid}}catch(a){if(a?.code==="ENOENT")return{exists:!1,text:"",mode:null,uid:null,gid:null};throw a}finally{c&&await c.close().catch(()=>{})}}async function ag(a){try{let b=await g().stat(a,{bigint:!0});if(!b.isFile())throw new u("Hermes backup path is not a regular file",{code:"HERMES_PATH_INVALID",status:422});return{exists:!0,dev:b.dev,ino:b.ino,size:b.size,mode:b.mode,uid:b.uid,gid:b.gid,mtimeNs:b.mtimeNs,ctimeNs:b.ctimeNs}}catch(a){if(a?.code==="ENOENT")return{exists:!1};throw a}}async function ah(a,b){let c=await ag(a);if(!["exists","dev","ino","size","mode","uid","gid","mtimeNs","ctimeNs"].every(a=>c[a]===b[a]))throw new u("Hermes backup changed while it was being discarded",{code:"HERMES_CONFIG_CHANGED",status:409})}async function ai(a){let b;if("win32"!==process.platform)try{b=await g().open(a,"r"),await b.sync()}catch(a){if(!["EBADF","EINVAL","ENOTSUP"].includes(a?.code))throw a}finally{b&&await b.close().catch(()=>{})}}async function aj(a,b,c,{uid:d=null,gid:f=null}={}){let h,j=i().dirname(a);await g().mkdir(j,{recursive:!0,mode:448});let k=i().join(j,`.${i().basename(a)}.${process.pid}.${(0,e.randomUUID)()}.tmp`);try{h=await g().open(k,"wx",c),await h.writeFile(b,"utf8"),"win32"!==process.platform&&Number.isInteger(d)&&Number.isInteger(f)&&(d!==process.getuid()||f!==process.getgid())&&await h.chown(d,f),await h.chmod(c),await h.sync(),await h.close(),h=null,await g().rename(k,a),await ai(j)}finally{h&&await h.close().catch(()=>{}),await g().unlink(k).catch(()=>{})}}async function ak(a){try{await g().unlink(a),await ai(i().dirname(a))}catch(a){if(a?.code!=="ENOENT")throw a}}async function al(a,b){let{exists:c,text:d,mode:e}=b;c?await aj(a,d,e??384,b):await ak(a)}async function am(a,b,c){let d=await af(a,c);if(d.exists!==b.exists||d.text!==b.text||d.mode!==b.mode||d.uid!==b.uid||d.gid!==b.gid)throw new u("Hermes settings changed while the operation was in progress",{code:"HERMES_CONFIG_CHANGED",status:409})}function an(a,b){return a.exists===b.exists&&(!a.exists||a.text===b.text&&a.mode===b.mode&&(null===b.uid||a.uid===b.uid)&&(null===b.gid||a.gid===b.gid))}function ao(a,b){return null!==a?a:"win32"===process.platform?null:b()}async function ap(a,b,c,d){try{let e=await af(a,d),f=an(e,c),g=an(e,b);return f&&await al(a,b),f||g}catch{return!1}}async function aq(a){let b=await af(a.backupPath,262144);return{snapshot:b,backup:b.exists?function(a){let b;try{b=JSON.parse(a)}catch{throw new u("Hermes ZevaiRouter backup is not valid JSON",{code:"HERMES_BACKUP_INVALID",status:409})}if(!(b?.version===1&&b.paths&&"string"==typeof b.paths.configPath&&"string"==typeof b.paths.envPath&&"boolean"==typeof b.before?.configFileExisted&&"boolean"==typeof b.before?.envFileExisted&&Q(b.before.configMode)&&Q(b.before.envMode)&&P(b.before.model)&&"boolean"==typeof b.before?.env?.exists&&(!b.before.env.exists||"string"==typeof b.before.env.line)&&P(b.applied?.model)&&"string"==typeof b.applied?.envHash&&Q(b.applied?.configMode)&&Q(b.applied?.envMode)))throw new u("Hermes ZevaiRouter backup has an unsupported format",{code:"HERMES_BACKUP_INVALID",status:409});return b}(b.text):null}}async function ar(a,b,c){try{let{backup:d}=await aq(a);if(!d)return ad(!1);let e=R(d,{configText:b.text,envText:c.text,configPath:a.configPath,envPath:a.envPath,configMode:b.mode,envMode:c.mode});return ad(!0,e)}catch{return ad(!0,!1)}}function as(a){if(!function(a,{platform:b=n().platform()}={}){let c=[a.configPath,a.envPath,a.backupPath].map(a=>y(a,b));return new Set(c).size===c.length}(a))throw new u("Hermes config, environment, and backup paths must be different",{code:"HERMES_PATH_INVALID",status:422})}async function at(a){try{return await g().realpath(a)}catch(a){if(a?.code!=="ENOENT")throw a}try{if((await g().lstat(a)).isSymbolicLink())throw new u("Hermes settings path is a dangling symbolic link",{code:"HERMES_PATH_INVALID",status:422})}catch(a){if(a?.code!=="ENOENT")throw a}let b=i().dirname(a),c=[i().basename(a)];for(;;){try{let a=await g().realpath(b);return i().join(a,...c)}catch(a){if(a?.code!=="ENOENT")throw a}let d=i().dirname(b);if(d===b)return a;c.unshift(i().basename(b)),b=d}}async function au(a){let[b,c,d]=await Promise.all([at(a.configPath),at(a.envPath),at(a.backupPath)]);return{...a,configDir:i().dirname(b),configPath:b,envPath:c,backupPath:d}}async function av({useBackupPathsWhenUnavailable:a=!1}={}){let b,c=await X(),d=x();if(c.installed)b=await W({installation:c,fallbackPaths:d});else if(a){let a=await au(d);try{let{backup:c}=await aq(a);b=c?function(a,b){if([b?.paths?.configPath,b?.paths?.envPath].some(a=>"string"!=typeof a||!i().isAbsolute(a)||/[\u0000-\u001f\u007f]/.test(a)))throw new u("Hermes backup contains invalid settings paths",{code:"HERMES_BACKUP_INVALID",status:409});return{...a,configDir:i().dirname(b.paths.configPath),configPath:b.paths.configPath,envPath:b.paths.envPath}}(d,c):d}catch{b=d}}else b=d;let e=await au(b);return as(e),{installation:c,paths:e}}async function aw(){try{let{installation:a,paths:b}=await av({useBackupPathsWhenUnavailable:!0}),c=await af(b.configPath,5242880),d=await af(b.envPath,1048576),e=await ar(b,c,d);if(!a.installed)return j.NextResponse.json({installed:!1,...ac(b,a),settings:{model:null},hasZevai:!1,backup:e,message:"Hermes Agent is not installed on the ZevaiRouter host"});let f=function(a){let b=A(a),c=b.get("model",!0);if(!(0,p.jh)(c))return{model:null,hasZevai:!1};let d=C(b)?.model,e=a=>{let b=d?.[a];return"string"==typeof b?b:null},f=e("provider"),g=e("base_url"),h=e("api_key"),i=e("api_mode"),j=null;try{let a=new URL(g);["http:","https:"].includes(a.protocol)&&(a.username="",a.password="",a.search="",a.hash="",j=a.toString().replace(/\/$/,""))}catch{}let k={default:e("default"),provider:f,base_url:j,api_mode:i},l=!1;try{l=["http:","https:"].includes(new URL(g).protocol)}catch{}return{model:k,hasZevai:("custom"===f||f?.startsWith("custom:"))&&l&&h===s&&"chat_completions"===i}}(c.text);return j.NextResponse.json({installed:!0,...ac(b,a),settings:{model:f.model},hasZevai:f.hasZevai,backup:e})}catch(a){return ae(a,"Failed to inspect Hermes settings on the ZevaiRouter host")}}async function ax(a){return ab(async()=>{try{var b;let c=function(a){let b;(!a||"object"!=typeof a||Array.isArray(a))&&v("Request body must be an object");let c=z(a.model,"model",512);(c.toLowerCase().endsWith("/model-id")||/[<>]/.test(c))&&v("model must be a real model identifier, not a placeholder");let d=z(a.apiKey,"apiKey",8192);/^[A-Za-z0-9._~+/=@:%-]+$/.test(d)||v("apiKey contains unsupported characters");let e=z(a.baseUrl,"baseUrl",2048);try{b=new URL(e)}catch{v("baseUrl must be a valid URL")}b&&["http:","https:"].includes(b.protocol)&&b.hostname||v("baseUrl must use http or https"),(b.username||b.password||b.search||b.hash)&&v("baseUrl must not include credentials, a query, or a fragment");let f=b.pathname.replace(/\/+$/,"");return b.pathname=/\/v1$/i.test(f)?`${f.slice(0,-3)}/v1`:`${f}/v1`,{model:c,apiKey:d,baseUrl:b.toString().replace(/\/$/,"")}}(await a.json()),{installation:d,paths:e}=await av();if(!d.installed)throw new u("Hermes Agent is not installed on the ZevaiRouter host",{code:"HERMES_NOT_INSTALLED",status:409});if(!T(d.version))throw new u("Hermes Agent 0.4.0 or newer is required for ZevaiRouter-managed API keys",{code:"HERMES_VERSION_UNSUPPORTED",status:422});let f=await af(e.configPath,5242880),g=await af(e.envPath,1048576),h=await aq(e),i=h.backup;if(i&&!R(i,{configText:f.text,envText:g.text,configPath:e.configPath,envPath:e.envPath,configMode:f.mode,envMode:g.mode}))throw new u("Hermes settings changed after the previous ZevaiRouter Apply; reset or reconcile them first",{code:"HERMES_CONFIG_CHANGED",status:409});let k=function(a,{model:b,baseUrl:c}){let d=A(a),e=F(d),f=d.get("model",!0);for(let[a,e]of((0,p.jh)(f)||(f=H(d,"model",{})),Object.entries({default:b,provider:"custom",base_url:c,api_key:s,api_mode:"chat_completions"})))H(f,a,e);return{text:d.toString(),before:e,applied:F(d)}}(f.text,c),l=function(a,b){let c=M(a),d=c?{exists:!0,line:c.content}:{exists:!1},e=`${r}=${b}`,f=J(a);if(c)f[c.index]=`${e}${L(c.line)}`;else{if(f.length>0&&!/(?:\r\n|\n|\r)$/.test(f.at(-1))){let b=a.includes("\r\n")?"\r\n":"\n";f[f.length-1]+=b}let b=a.includes("\r\n")?"\r\n":"\n";f.push(`${e}${b}`)}return{text:f.join(""),before:d,appliedHash:N(e)}}(g.text,c.apiKey),m=(b=function({paths:a,priorBackup:b=null,configFileExisted:c,envFileExisted:d,configMode:e,envMode:f,configBefore:g,envBefore:h,configApplied:i,envAppliedHash:j,configAppliedMode:k,envAppliedMode:l,now:m=new Date}){return{version:1,createdAt:b?.createdAt||m.toISOString(),updatedAt:m.toISOString(),paths:{configPath:a.configPath,envPath:a.envPath},before:b?.before||{configFileExisted:c,envFileExisted:d,configMode:e,envMode:f,model:g,env:h},applied:{model:i,envHash:j,configMode:k,envMode:l}}}({paths:e,priorBackup:i,configFileExisted:f.exists,envFileExisted:g.exists,configMode:f.mode,envMode:g.mode,configBefore:k.before,envBefore:l.before,configApplied:k.applied,envAppliedHash:l.appliedHash,configAppliedMode:"win32"===process.platform?null:f.mode??384,envAppliedMode:"win32"===process.platform?null:384}),`${JSON.stringify(b,null,2)}
|
|
5
|
-
`);if(Buffer.byteLength(m,"utf8")>262144)throw new u("Hermes managed settings are too large to back up safely",{code:"HERMES_BACKUP_TOO_LARGE",status:422});await am(e.configPath,f,5242880),await am(e.envPath,g,1048576),await am(e.backupPath,h.snapshot,262144);let n={exists:!0,text:m,mode:384,uid:ao(h.snapshot.uid,()=>process.getuid()),gid:ao(h.snapshot.gid,()=>process.getgid())},o={exists:!0,text:k.text,mode:f.mode??384,uid:ao(f.uid,()=>process.getuid()),gid:ao(f.gid,()=>process.getgid())},q={exists:!0,text:l.text,mode:384,uid:ao(g.uid,()=>process.getuid()),gid:ao(g.gid,()=>process.getgid())};try{await al(e.backupPath,n),await al(e.configPath,o),await al(e.envPath,q)}catch(d){let a=await ap(e.envPath,g,q,1048576),b=await ap(e.configPath,f,o,5242880),c=!!a&&!!b&&await ap(e.backupPath,h.snapshot,n,262144);throw a&&b&&c||console.error("Hermes Apply rollback could not safely restore every file"),d}return j.NextResponse.json({success:!0,message:"Hermes settings applied on the ZevaiRouter host",...ac(e,d),backup:ad(!0,!0)})}catch(a){return ae(a,"Failed to update Hermes settings on the ZevaiRouter host")}})}async function ay(a){return ab(async()=>{try{if(a?.url&&"1"===new URL(a.url,"http://localhost").searchParams.get("discard")){let a=await au(x());as(a);let b=await ag(a.backupPath);if(!b.exists)throw new u("No ZevaiRouter Hermes backup is available to discard",{code:"HERMES_BACKUP_NOT_FOUND",status:404});return await ah(a.backupPath,b),await ak(a.backupPath),j.NextResponse.json({success:!0,discarded:!0,message:"Hermes backup discarded; config and environment settings were not changed",installationTarget:$,configPath:a.configPath,envPath:a.envPath,backup:ad(!1)})}let{paths:b}=await av({useBackupPathsWhenUnavailable:!0}),c=await af(b.configPath,5242880),d=await af(b.envPath,1048576),e=await aq(b);if(!e.backup)throw new u("No ZevaiRouter Hermes backup is available to restore",{code:"HERMES_BACKUP_NOT_FOUND",status:404});let f=e.backup;if(!R(f,{configText:c.text,envText:d.text,configPath:b.configPath,envPath:b.envPath,configMode:c.mode,envMode:d.mode}))throw new u("Hermes managed settings changed after ZevaiRouter applied them",{code:"HERMES_CONFIG_CHANGED",status:409});let g=I(c.text,f.before.model,f.applied.model),h=O(d.text,f.before.env,f.applied.envHash),i={exists:f.before.configFileExisted||"{}"!==g.trim(),text:g,mode:f.before.configMode??384,uid:c.uid,gid:c.gid},k={exists:f.before.envFileExisted||h.trim().length>0,text:h,mode:f.before.envMode??384,uid:d.uid,gid:d.gid};await am(b.configPath,c,5242880),await am(b.envPath,d,1048576),await am(b.backupPath,e.snapshot,262144);try{await al(b.configPath,i),await al(b.envPath,k),await ak(b.backupPath)}catch(f){let a=await ap(b.envPath,d,k,1048576),e=await ap(b.configPath,c,i,5242880);throw a&&e||console.error("Hermes Reset rollback could not safely restore every file"),f}return j.NextResponse.json({success:!0,message:"Previous Hermes settings restored on the ZevaiRouter host",installationTarget:$,configPath:b.configPath,envPath:b.envPath,backup:ad(!1)})}catch(b){let a=ae(b,"Failed to restore Hermes settings on the ZevaiRouter host");if(b instanceof u&&"HERMES_CONFIG_CHANGED"===b.code)return j.NextResponse.json({error:b.message,code:b.code,installationTarget:$,backup:ad(!0,!1)},{status:b.status});return a}})}(0,Z.D)([aw,ax,ay]),(0,d.A)(aw,"
|
|
5
|
+
`);if(Buffer.byteLength(m,"utf8")>262144)throw new u("Hermes managed settings are too large to back up safely",{code:"HERMES_BACKUP_TOO_LARGE",status:422});await am(e.configPath,f,5242880),await am(e.envPath,g,1048576),await am(e.backupPath,h.snapshot,262144);let n={exists:!0,text:m,mode:384,uid:ao(h.snapshot.uid,()=>process.getuid()),gid:ao(h.snapshot.gid,()=>process.getgid())},o={exists:!0,text:k.text,mode:f.mode??384,uid:ao(f.uid,()=>process.getuid()),gid:ao(f.gid,()=>process.getgid())},q={exists:!0,text:l.text,mode:384,uid:ao(g.uid,()=>process.getuid()),gid:ao(g.gid,()=>process.getgid())};try{await al(e.backupPath,n),await al(e.configPath,o),await al(e.envPath,q)}catch(d){let a=await ap(e.envPath,g,q,1048576),b=await ap(e.configPath,f,o,5242880),c=!!a&&!!b&&await ap(e.backupPath,h.snapshot,n,262144);throw a&&b&&c||console.error("Hermes Apply rollback could not safely restore every file"),d}return j.NextResponse.json({success:!0,message:"Hermes settings applied on the ZevaiRouter host",...ac(e,d),backup:ad(!0,!0)})}catch(a){return ae(a,"Failed to update Hermes settings on the ZevaiRouter host")}})}async function ay(a){return ab(async()=>{try{if(a?.url&&"1"===new URL(a.url,"http://localhost").searchParams.get("discard")){let a=await au(x());as(a);let b=await ag(a.backupPath);if(!b.exists)throw new u("No ZevaiRouter Hermes backup is available to discard",{code:"HERMES_BACKUP_NOT_FOUND",status:404});return await ah(a.backupPath,b),await ak(a.backupPath),j.NextResponse.json({success:!0,discarded:!0,message:"Hermes backup discarded; config and environment settings were not changed",installationTarget:$,configPath:a.configPath,envPath:a.envPath,backup:ad(!1)})}let{paths:b}=await av({useBackupPathsWhenUnavailable:!0}),c=await af(b.configPath,5242880),d=await af(b.envPath,1048576),e=await aq(b);if(!e.backup)throw new u("No ZevaiRouter Hermes backup is available to restore",{code:"HERMES_BACKUP_NOT_FOUND",status:404});let f=e.backup;if(!R(f,{configText:c.text,envText:d.text,configPath:b.configPath,envPath:b.envPath,configMode:c.mode,envMode:d.mode}))throw new u("Hermes managed settings changed after ZevaiRouter applied them",{code:"HERMES_CONFIG_CHANGED",status:409});let g=I(c.text,f.before.model,f.applied.model),h=O(d.text,f.before.env,f.applied.envHash),i={exists:f.before.configFileExisted||"{}"!==g.trim(),text:g,mode:f.before.configMode??384,uid:c.uid,gid:c.gid},k={exists:f.before.envFileExisted||h.trim().length>0,text:h,mode:f.before.envMode??384,uid:d.uid,gid:d.gid};await am(b.configPath,c,5242880),await am(b.envPath,d,1048576),await am(b.backupPath,e.snapshot,262144);try{await al(b.configPath,i),await al(b.envPath,k),await ak(b.backupPath)}catch(f){let a=await ap(b.envPath,d,k,1048576),e=await ap(b.configPath,c,i,5242880);throw a&&e||console.error("Hermes Reset rollback could not safely restore every file"),f}return j.NextResponse.json({success:!0,message:"Previous Hermes settings restored on the ZevaiRouter host",installationTarget:$,configPath:b.configPath,envPath:b.envPath,backup:ad(!1)})}catch(b){let a=ae(b,"Failed to restore Hermes settings on the ZevaiRouter host");if(b instanceof u&&"HERMES_CONFIG_CHANGED"===b.code)return j.NextResponse.json({error:b.message,code:b.code,installationTarget:$,backup:ad(!0,!1)},{status:b.status});return a}})}(0,Z.D)([aw,ax,ay]),(0,d.A)(aw,"004286434ba03c0ce1624cc3d12f6ece79beac63e5",null),(0,d.A)(ax,"409c5ac0af36d747d872f5024f4260052e93e694a2",null),(0,d.A)(ay,"40d091f8df5d5fccb39cf4947c8c32bef740e0e897",null)},30869:(a,b,c)=>{"use strict";c.d(b,{UY:()=>i,X3:()=>k,eh:()=>f.eh,fg:()=>e.fg,h0:()=>h,oc:()=>j,vQ:()=>g});var d=c(39006),e=c(75681),f=c(81329);let g={name:"ZevaiRouter",description:"AI Infrastructure Management",version:d.version},h={npmPackageName:"zevairouter",installCmd:"npm i -g zevairouter",installCmdLatest:"npm i -g zevairouter@latest --prefer-online",shutdownCountdownSec:3,exitDelayMs:500,statusPort:20129,statusPollIntervalMs:1e3,statusLogTailLines:8,installRetries:3,installRetryDelayMs:5e3,lingerAfterDoneMs:3e4,waitForExitMinMs:5e3,waitForExitMaxMs:2e4,waitForExitCheckMs:500,appPort:1997},i={maxLines:200,pollIntervalMs:1e3},j={tickIntervalMs:6e4,pingLeadMs:5e3,refreshAheadMs:3e5,failureCooldownMs:9e5,providers:{claude:{settingsKey:"claudeAutoPing",quotaKey:"session (5h)",pingModel:"claude-haiku-4-5-20251001",pingText:"hi",pingMaxTokens:1},codex:{settingsKey:"codexAutoPing",quotaKey:"session",pingWhenResetAtSlides:!0,resetAtDriftMs:3e4,minPingIntervalMs:6e5,skipWhenBlockingQuotaExhausted:!0,pingModel:"gpt-5.5",pingText:"hi",pingInstructions:"Reply with OK.",pingReasoningEffort:"none"}}},k={openrouter:"https://openrouter.ai/api/v1/chat/completions",glm:"https://api.z.ai/api/anthropic/v1/messages","glm-cn":"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",kimi:"https://api.kimi.com/coding/v1/messages",minimax:"https://api.minimax.io/anthropic/v1/messages","minimax-cn":"https://api.minimaxi.com/anthropic/v1/messages",alicode:"https://coding.dashscope.aliyuncs.com/v1/chat/completions","alicode-intl":"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions","volcengine-ark":"https://ark.cn-beijing.volces.com/api/coding/v3/chat/completions",byteplus:"https://ark.ap-southeast.bytepluses.com/api/coding/v3/chat/completions",openai:"https://api.openai.com/v1/chat/completions","vercel-ai-gateway":"https://ai-gateway.vercel.sh/v1/chat/completions",anthropic:"https://api.anthropic.com/v1/messages",gemini:"https://generativelanguage.googleapis.com/v1beta/models",ollama:"https://ollama.com/api/chat","ollama-local":"http://localhost:11434/api/chat","notion-ai":"https://app.notion.com/api/v3/runInferenceTranscript"}},39006:a=>{"use strict";a.exports=JSON.parse('{"name":"zevairouter","version":"1.1.21","description":"Self-hosted AI router: many providers, one OpenAI-compatible /v1 endpoint and dashboard","bin":{"zevai":"cli/cli.js"},"files":["cli/cli.js","cli/app/","cli/hooks/","cli/src/","cli/package.json","cli/README.md","cli/LICENSE","scripts/start-standalone.mjs","README.md","README.zh-CN.md","DOCKER.md","LICENSE","CHANGELOG.md"],"scripts":{"dev":"next dev --webpack --port 1997","build":"node scripts/build-app.mjs","start":"node ./scripts/start-standalone.mjs","dev:bun":"bun --bun next dev --webpack --port 1997","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js","lint":"eslint .","test":"vitest run --config tests/vitest.config.js","build:cli":"node cli/scripts/build-cli.js","audit:package":"node cli/scripts/audit-package.mjs","smoke:package":"node cli/scripts/smoke-package.mjs","verify:mobile-scroll":"node cli/scripts/verify-dashboard-mobile-scroll.mjs","candidate:build":"node cli/scripts/local-candidate.mjs build","candidate:install":"node cli/scripts/local-candidate.mjs install","candidate:status":"node cli/scripts/local-candidate.mjs status","candidate:rollback":"node cli/scripts/local-candidate.mjs rollback","release":"node cli/scripts/release.js","prepack":"npm run build:cli && npm run audit:package","postinstall":"node cli/hooks/postinstall.js"},"dependencies":{"@node-saml/node-saml":"5.1.0","next":"16.3.4","node-machine-id":"1.1.12","react":"19.2.4","react-dom":"19.2.4","sql.js":"1.14.1","yaml":"2.9.0"},"comment_optional_runtime":"Optional packages are installed into ~/.zevai/runtime instead of the published tarball. Automation uses CloakBrowser with playwright-core; ZEVAI_MINIMAL_POSTINSTALL=1 skips its browser download. Other lazy runtimes are better-sqlite3, node-pty, and systray2.","overrides":{"body-parser":"^2.3.0","brace-expansion":"5.0.9","dompurify":"^3.4.12","ip-address":"^10.4.0","js-yaml":"4.3.2","nanoid":"^3.3.18","postcss":"^8.5.10","sharp":"0.35.4"},"comment_overrides":"Security floors for transitive dependencies. ESLint\'s legacy minimatch is a private, source-pinned 3.1.5 compatibility package backed by brace-expansion 5.0.9; modern minimatch and nanoid use fixed floors directly. Monaco still pins an old DOMPurify; Express, Next, ESLint, and image processing dependencies may resolve vulnerable body-parser, js-yaml, or sharp releases. Recheck and remove overrides once parent packages require fixed versions.","devDependencies":{"@dnd-kit/core":"^6.3.1","@dnd-kit/modifiers":"^9.0.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.1.18","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0","@xterm/xterm":"^6.0.0","@xyflow/react":"^12.10.1","bcryptjs":"^3.0.3","better-sqlite3":"^12.6.2","chalk":"^4.1.2","confbox":"^0.2.4","dompurify":"^3.4.12","esbuild":"^0.28.1","eslint":"^9","eslint-config-next":"16.3.4","express":"^5.2.1","http-proxy-middleware":"^3.0.7","jose":"^6.1.3","marked":"^18.0.1","material-symbols":"^0.45.1","minimatch":"file:vendor/minimatch3-secure","monaco-editor":"^0.55.1","node-forge":"^1.3.3","open":"^11.0.0","ora":"^9.1.0","postcss":"^8.5.10","prop-types":"^15.8.1","react-is":"^19.2.7","recharts":"^3.7.0","selfsigned":"^5.5.0","socks":"^2.8.9","socks-proxy-agent":"^10.1.0","tailwindcss":"^4","typescript":"6.0.3","undici":"^8.10.0","uuid":"^14.0.1","vitest":"4.1.11","zustand":"^5.0.10"},"engines":{"node":">=22.5.0"},"keywords":["zevairouter","zevai","ai","router","proxy","kiro","codebuddy","claude","openai","api","quota","automation"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/Verifiedlabs/zevairouter.git"},"bugs":{"url":"https://github.com/Verifiedlabs/zevairouter/issues"},"homepage":"https://github.com/Verifiedlabs/zevairouter"}')},78335:()=>{},81329:(a,b,c)=>{"use strict";c.d(b,{Xg:()=>d.Xg,eh:()=>e,vq:()=>d.vq});var d=c(83477);Object.entries(c(75681).AI_PROVIDERS).filter(([,a])=>a.passthroughModels).map(([a])=>a);let e=Object.entries(d.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name})))},96487:()=>{}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
exports.id=4827,exports.ids=[3373,4827,5754],exports.modules={15754:(a,b,c)=>{"use strict";let d=c(29021),{execFileSync:e}=c(79646),f="win32"===process.platform,g="linux"===process.platform;function h(a){return Number.isInteger(a)&&a>0&&a<=4194304}function i(a,b){try{return e(a,b,{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:5e3,windowsHide:!0})}catch{return null}}function j(a,b){if("string"!=typeof a||/[\r\n]/.test(a.trim()))return null;let c=a.trim(),d=c.indexOf(" ("),e=c.lastIndexOf(") ");if(d<1||e<=d+2||Number(c.slice(0,d))!==b)return null;let f=c.slice(e+2).split(/\s+/),g=f[19];return f.length<20||!/^\d+$/.test(g)?null:g}function k(a){if(!h(a))return null;if(g){let b=null;try{b=d.readFileSync(`/proc/${a}/stat`,"utf8")}catch{return null}let c=j(b,a);return c?`${a}:${c}`:null}if(f){let b=String(i("powershell",["-NonInteractive","-NoProfile","-Command",`(Get-Process -Id ${a} -ErrorAction Stop).StartTime.Ticks`])||"").trim();return/^\d+$/.test(b)?`${a}:${b}`:null}let b=String(i("ps",["-o","lstart=","-p",String(a)])||"").split(/\r?\n/).filter(a=>a.trim());if(1!==b.length)return null;let c=b[0].trim();return c?`${a}:${c}`:null}function l(a){if(!h(a))return null;if(f)return String(i("powershell",["-NonInteractive","-NoProfile","-Command",`(Get-CimInstance Win32_Process -Filter "ProcessId=${a}").CommandLine`])||"").trim()||null;let b=String(i("ps",["-o","command=","-p",String(a)])||"").split(/\r?\n/).filter(a=>a.trim());return 1!==b.length?null:b[0].trim()||null}function m(a){if(!h(a))return!1;try{return process.kill(a,0),!0}catch(a){return"EPERM"===a.code||"EACCES"===a.code}}function n(a){let b;try{b=d.readFileSync(a,"utf8").trim()}catch{return null}if(!b)return null;if(/^\d+$/.test(b)){let a=Number(b);return h(a)?{pid:a,startToken:null,kind:null,legacy:!0}:null}try{let a=JSON.parse(b),c=Number(a?.pid);if(!h(c))return null;return{pid:c,startToken:"string"==typeof a.startToken&&a.startToken?a.startToken:null,kind:"string"==typeof a.kind?a.kind:null,legacy:!1}}catch{return null}}a.exports={isValidPid:h,isProcessAlive:m,readProcessStartToken:k,readProcessCommand:l,writePidFile:function(a,b,{kind:c="process"}={}){let e=Number(b);if(!h(e))return!1;let f={v:1,kind:c,pid:e,startToken:k(e),platform:process.platform,writtenAt:new Date().toISOString()};try{let b=`${a}.${process.pid}.tmp`;return d.writeFileSync(b,JSON.stringify(f)),d.renameSync(b,a),!0}catch{return!1}},readPidFile:n,resolveVerifiedPid:function(a,{commandPattern:b=null}={}){let c=n(a);if(!c)return{pid:null,reason:"no_pid_file"};if(!m(c.pid))return{pid:null,reason:"not_running",pidFileStale:!0};let d=k(c.pid);if(c.startToken)return d?d!==c.startToken?{pid:null,reason:"pid_recycled",pidFileStale:!0}:{pid:c.pid,reason:"verified_start_token"}:{pid:null,reason:"identity_unreadable"};if(!b)return{pid:null,reason:"identity_unverifiable"};let e=l(c.pid);return e?b.test(e)?{pid:c.pid,reason:"verified_command"}:{pid:null,reason:"command_mismatch",pidFileStale:!0}:{pid:null,reason:"identity_unreadable"}},removePidFile:function(a){try{d.rmSync(a,{force:!0})}catch{}},parseLinuxStartTime:j}},21719:(a,b,c)=>{"use strict";c.d(b,{g:()=>n,l:()=>m});var d=c(79646),e=c(33873),f=c.n(e),g=c(29021),h=c.n(g),i=c(21820),j=c.n(i),k=c(30869),l=c(15754);async function m({excludePids:a=[]}={}){!function(){try{let a=f().join("win32"===process.platform?f().join(process.env.APPDATA||"","zevai"):f().join(j().homedir(),".zevai"),"mitm",".mitm.pid"),{pid:b}=(0,l.resolveVerifiedPid)(a,{commandPattern:/(mitm[\\/]server\.js|mitm[\\/]+server\b)/i});if(!b)return void(0,l.removePidFile)(a);if("win32"===process.platform)try{(0,d.execSync)(`taskkill /F /T /PID ${b}`,{stdio:"ignore",windowsHide:!0,timeout:3e3})}catch{try{(0,d.execSync)(`powershell -NonInteractive -WindowStyle Hidden -Command "Stop-Process -Id ${b} -Force"`,{stdio:"ignore",windowsHide:!0,timeout:3e3})}catch{}}else try{(0,d.execSync)(`sudo -n kill -9 ${b} 2>/dev/null`,{stdio:"ignore",timeout:3e3})}catch{try{process.kill(b,"SIGKILL")}catch{}}(0,l.removePidFile)(a)}catch{}}();let b=function(a=[]){let b=[],c=process.platform,e=new Set([process.pid,...Array.isArray(a)?a:[]].filter(a=>null!=a).map(String));if("win32"===c){try{(0,d.execSync)('powershell -NonInteractive -WindowStyle Hidden -Command "Get-WmiObject Win32_Process -Filter \'Name=\\"node.exe\\"\' | Select-Object ProcessId,CommandLine | ConvertTo-Csv -NoTypeInformation"',{encoding:"utf8",windowsHide:!0,timeout:5e3}).split("\n").slice(1).filter(a=>a.trim()).forEach(a=>{let c=a.toLowerCase();if(c.includes("zevai")||c.includes("next-server")||c.includes("\\bin\\app\\")||c.includes("/bin/app/")||c.includes("cli.js")){let c=a.match(/^"(\d+)"/);c&&c[1]&&!e.has(c[1])&&b.push(c[1])}})}catch{}for(let a of["cloudflared","tray_windows_release"])try{let c=`powershell -NonInteractive -WindowStyle Hidden -Command "Get-Process ${a} -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Id"`;(0,d.execSync)(c,{encoding:"utf8",windowsHide:!0,timeout:5e3}).split("\n").forEach(a=>{let c=a.trim();!c||isNaN(c)||e.has(c)||b.push(c)})}catch{}}else try{(0,d.execSync)("ps aux 2>/dev/null",{encoding:"utf8",timeout:5e3}).split("\n").forEach(a=>{if(a.includes("zevai")||a.includes("next-server")||a.includes("cloudflared")||a.includes("/bin/app/")||a.includes("tray_darwin")||a.includes("tray_linux")){let c=a.trim().split(/\s+/)[1];!c||isNaN(c)||e.has(c)||b.push(c)}})}catch{}return b}(a),c=process.platform;b.forEach(a=>{try{"win32"===c?(0,d.execSync)(`taskkill /F /PID ${a} 2>nul`,{stdio:"ignore",shell:!0,windowsHide:!0,timeout:3e3}):(0,d.execSync)(`kill -9 ${a} 2>/dev/null`,{stdio:"ignore",timeout:3e3})}catch{}}),b.length>0&&await new Promise(a=>setTimeout(a,1500))}async function n(a=k.h0.npmPackageName){let b=function(a){try{if(!a||!h().existsSync(a))return a;let b=f().join(process.env.DATA_DIR?process.env.DATA_DIR:"win32"===process.platform?f().join(process.env.APPDATA||f().join(j().homedir(),"AppData","Roaming"),"zevai"):f().join(j().homedir(),".zevai"),"runtime","updater"),c=f().join(b,"updater.js");if(h().existsSync(c))try{if(h().statSync(a).size===h().statSync(c).size)return c}catch{}return h().mkdirSync(b,{recursive:!0}),h().copyFileSync(a,c),c}catch{return a}}(function(){if(process.env.UPDATER_SCRIPT_PATH&&h().existsSync(process.env.UPDATER_SCRIPT_PATH))return process.env.UPDATER_SCRIPT_PATH;let a=f().join(process.cwd(),"src","lib","updater","updater.js");if(h().existsSync(a))return a;let b=f().join(process.cwd(),"..","src","lib","updater","updater.js");return h().existsSync(b)?b:a}()),c="1"===process.env.TRAY_MODE,e={cmd:"win32"===process.platform?"npx.cmd":"npx",args:[k.h0.npmPackageName]},g=String(process.env.PORT||k.h0.appPort||1997),i=c?[...e.args,"--tray","--skip-update"]:[...e.args,"--port",g,"--no-browser","--skip-update","--log"],l=(0,d.spawn)(process.execPath,[b],{detached:!0,stdio:"ignore",windowsHide:!0,env:function(a={}){let b={...process.env,...a};return delete b.ZEVAI_LAUNCHD_JOB,delete b.XPC_SERVICE_NAME,b}({UPDATER_PKG_NAME:a||"zevairouter",UPDATER_PORT:String(k.h0.statusPort),UPDATER_TAIL_LINES:String(k.h0.statusLogTailLines),UPDATER_RETRIES:String(k.h0.installRetries),UPDATER_RETRY_DELAY_MS:String(k.h0.installRetryDelayMs),UPDATER_LINGER_MS:String(k.h0.lingerAfterDoneMs),UPDATER_WAIT_MIN_MS:String(k.h0.waitForExitMinMs),UPDATER_WAIT_MAX_MS:String(k.h0.waitForExitMaxMs),UPDATER_WAIT_CHECK_MS:String(k.h0.waitForExitCheckMs),UPDATER_APP_PORT:g,UPDATER_RELAUNCH:"1",UPDATER_RELAUNCH_CMD:e.cmd,UPDATER_RELAUNCH_ARGS:JSON.stringify(i),ZEVAI_SERVER_MODE:c?"":"1"})});l.unref();try{await m({excludePids:[l.pid]})}catch{}return setTimeout(()=>process.exit(0),k.h0.exitDelayMs),l.pid}},30869:(a,b,c)=>{"use strict";c.d(b,{UY:()=>i,X3:()=>k,eh:()=>f.eh,fg:()=>e.fg,h0:()=>h,oc:()=>j,vQ:()=>g});var d=c(39006),e=c(75681),f=c(81329);let g={name:"ZevaiRouter",description:"AI Infrastructure Management",version:d.version},h={npmPackageName:"zevairouter",installCmd:"npm i -g zevairouter",installCmdLatest:"npm i -g zevairouter@latest --prefer-online",shutdownCountdownSec:3,exitDelayMs:500,statusPort:20129,statusPollIntervalMs:1e3,statusLogTailLines:8,installRetries:3,installRetryDelayMs:5e3,lingerAfterDoneMs:3e4,waitForExitMinMs:5e3,waitForExitMaxMs:2e4,waitForExitCheckMs:500,appPort:1997},i={maxLines:200,pollIntervalMs:1e3},j={tickIntervalMs:6e4,pingLeadMs:5e3,refreshAheadMs:3e5,failureCooldownMs:9e5,providers:{claude:{settingsKey:"claudeAutoPing",quotaKey:"session (5h)",pingModel:"claude-haiku-4-5-20251001",pingText:"hi",pingMaxTokens:1},codex:{settingsKey:"codexAutoPing",quotaKey:"session",pingWhenResetAtSlides:!0,resetAtDriftMs:3e4,minPingIntervalMs:6e5,skipWhenBlockingQuotaExhausted:!0,pingModel:"gpt-5.5",pingText:"hi",pingInstructions:"Reply with OK.",pingReasoningEffort:"none"}}},k={openrouter:"https://openrouter.ai/api/v1/chat/completions",glm:"https://api.z.ai/api/anthropic/v1/messages","glm-cn":"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",kimi:"https://api.kimi.com/coding/v1/messages",minimax:"https://api.minimax.io/anthropic/v1/messages","minimax-cn":"https://api.minimaxi.com/anthropic/v1/messages",alicode:"https://coding.dashscope.aliyuncs.com/v1/chat/completions","alicode-intl":"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions","volcengine-ark":"https://ark.cn-beijing.volces.com/api/coding/v3/chat/completions",byteplus:"https://ark.ap-southeast.bytepluses.com/api/coding/v3/chat/completions",openai:"https://api.openai.com/v1/chat/completions","vercel-ai-gateway":"https://ai-gateway.vercel.sh/v1/chat/completions",anthropic:"https://api.anthropic.com/v1/messages",gemini:"https://generativelanguage.googleapis.com/v1beta/models",ollama:"https://ollama.com/api/chat","ollama-local":"http://localhost:11434/api/chat","notion-ai":"https://app.notion.com/api/v3/runInferenceTranscript"}},39006:a=>{"use strict";a.exports=JSON.parse('{"name":"zevairouter","version":"1.1.20","description":"Self-hosted AI router: many providers, one OpenAI-compatible /v1 endpoint and dashboard","bin":{"zevai":"cli/cli.js"},"files":["cli/cli.js","cli/app/","cli/hooks/","cli/src/","cli/package.json","cli/README.md","cli/LICENSE","scripts/start-standalone.mjs","README.md","README.zh-CN.md","DOCKER.md","LICENSE","CHANGELOG.md"],"scripts":{"dev":"next dev --webpack --port 1997","build":"node scripts/build-app.mjs","start":"node ./scripts/start-standalone.mjs","dev:bun":"bun --bun next dev --webpack --port 1997","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js","lint":"eslint .","test":"vitest run --config tests/vitest.config.js","build:cli":"node cli/scripts/build-cli.js","audit:package":"node cli/scripts/audit-package.mjs","smoke:package":"node cli/scripts/smoke-package.mjs","verify:mobile-scroll":"node cli/scripts/verify-dashboard-mobile-scroll.mjs","candidate:build":"node cli/scripts/local-candidate.mjs build","candidate:install":"node cli/scripts/local-candidate.mjs install","candidate:status":"node cli/scripts/local-candidate.mjs status","candidate:rollback":"node cli/scripts/local-candidate.mjs rollback","release":"node cli/scripts/release.js","prepack":"npm run build:cli && npm run audit:package","postinstall":"node cli/hooks/postinstall.js"},"dependencies":{"@node-saml/node-saml":"5.1.0","next":"16.3.4","node-machine-id":"1.1.12","react":"19.2.4","react-dom":"19.2.4","sql.js":"1.14.1","yaml":"2.9.0"},"comment_optional_runtime":"Optional packages are installed into ~/.zevai/runtime instead of the published tarball. Automation uses CloakBrowser with playwright-core; ZEVAI_MINIMAL_POSTINSTALL=1 skips its browser download. Other lazy runtimes are better-sqlite3, node-pty, and systray2.","overrides":{"body-parser":"^2.3.0","brace-expansion":"5.0.9","dompurify":"^3.4.12","ip-address":"^10.4.0","js-yaml":"4.3.2","nanoid":"^3.3.18","postcss":"^8.5.10","sharp":"0.35.4"},"comment_overrides":"Security floors for transitive dependencies. ESLint\'s legacy minimatch is a private, source-pinned 3.1.5 compatibility package backed by brace-expansion 5.0.9; modern minimatch and nanoid use fixed floors directly. Monaco still pins an old DOMPurify; Express, Next, ESLint, and image processing dependencies may resolve vulnerable body-parser, js-yaml, or sharp releases. Recheck and remove overrides once parent packages require fixed versions.","devDependencies":{"@dnd-kit/core":"^6.3.1","@dnd-kit/modifiers":"^9.0.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.1.18","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0","@xterm/xterm":"^6.0.0","@xyflow/react":"^12.10.1","bcryptjs":"^3.0.3","better-sqlite3":"^12.6.2","chalk":"^4.1.2","confbox":"^0.2.4","dompurify":"^3.4.12","esbuild":"^0.28.1","eslint":"^9","eslint-config-next":"16.3.4","express":"^5.2.1","http-proxy-middleware":"^3.0.7","jose":"^6.1.3","marked":"^18.0.1","material-symbols":"^0.45.1","minimatch":"file:vendor/minimatch3-secure","monaco-editor":"^0.55.1","node-forge":"^1.3.3","open":"^11.0.0","ora":"^9.1.0","postcss":"^8.5.10","prop-types":"^15.8.1","react-is":"^19.2.7","recharts":"^3.7.0","selfsigned":"^5.5.0","socks":"^2.8.9","socks-proxy-agent":"^10.1.0","tailwindcss":"^4","typescript":"6.0.3","undici":"^8.10.0","uuid":"^14.0.1","vitest":"4.1.11","zustand":"^5.0.10"},"engines":{"node":">=22.5.0"},"keywords":["zevairouter","zevai","ai","router","proxy","kiro","codebuddy","claude","openai","api","quota","automation"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/Verifiedlabs/zevairouter.git"},"bugs":{"url":"https://github.com/Verifiedlabs/zevairouter/issues"},"homepage":"https://github.com/Verifiedlabs/zevairouter"}')},78335:()=>{},81329:(a,b,c)=>{"use strict";c.d(b,{Xg:()=>d.Xg,eh:()=>e,vq:()=>d.vq});var d=c(83477);Object.entries(c(75681).AI_PROVIDERS).filter(([,a])=>a.passthroughModels).map(([a])=>a);let e=Object.entries(d.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name})))},96487:()=>{}};
|
|
1
|
+
exports.id=4827,exports.ids=[3373,4827,5754],exports.modules={15754:(a,b,c)=>{"use strict";let d=c(29021),{execFileSync:e}=c(79646),f="win32"===process.platform,g="linux"===process.platform;function h(a){return Number.isInteger(a)&&a>0&&a<=4194304}function i(a,b){try{return e(a,b,{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:5e3,windowsHide:!0})}catch{return null}}function j(a,b){if("string"!=typeof a||/[\r\n]/.test(a.trim()))return null;let c=a.trim(),d=c.indexOf(" ("),e=c.lastIndexOf(") ");if(d<1||e<=d+2||Number(c.slice(0,d))!==b)return null;let f=c.slice(e+2).split(/\s+/),g=f[19];return f.length<20||!/^\d+$/.test(g)?null:g}function k(a){if(!h(a))return null;if(g){let b=null;try{b=d.readFileSync(`/proc/${a}/stat`,"utf8")}catch{return null}let c=j(b,a);return c?`${a}:${c}`:null}if(f){let b=String(i("powershell",["-NonInteractive","-NoProfile","-Command",`(Get-Process -Id ${a} -ErrorAction Stop).StartTime.Ticks`])||"").trim();return/^\d+$/.test(b)?`${a}:${b}`:null}let b=String(i("ps",["-o","lstart=","-p",String(a)])||"").split(/\r?\n/).filter(a=>a.trim());if(1!==b.length)return null;let c=b[0].trim();return c?`${a}:${c}`:null}function l(a){if(!h(a))return null;if(f)return String(i("powershell",["-NonInteractive","-NoProfile","-Command",`(Get-CimInstance Win32_Process -Filter "ProcessId=${a}").CommandLine`])||"").trim()||null;let b=String(i("ps",["-o","command=","-p",String(a)])||"").split(/\r?\n/).filter(a=>a.trim());return 1!==b.length?null:b[0].trim()||null}function m(a){if(!h(a))return!1;try{return process.kill(a,0),!0}catch(a){return"EPERM"===a.code||"EACCES"===a.code}}function n(a){let b;try{b=d.readFileSync(a,"utf8").trim()}catch{return null}if(!b)return null;if(/^\d+$/.test(b)){let a=Number(b);return h(a)?{pid:a,startToken:null,kind:null,legacy:!0}:null}try{let a=JSON.parse(b),c=Number(a?.pid);if(!h(c))return null;return{pid:c,startToken:"string"==typeof a.startToken&&a.startToken?a.startToken:null,kind:"string"==typeof a.kind?a.kind:null,legacy:!1}}catch{return null}}a.exports={isValidPid:h,isProcessAlive:m,readProcessStartToken:k,readProcessCommand:l,writePidFile:function(a,b,{kind:c="process"}={}){let e=Number(b);if(!h(e))return!1;let f={v:1,kind:c,pid:e,startToken:k(e),platform:process.platform,writtenAt:new Date().toISOString()};try{let b=`${a}.${process.pid}.tmp`;return d.writeFileSync(b,JSON.stringify(f)),d.renameSync(b,a),!0}catch{return!1}},readPidFile:n,resolveVerifiedPid:function(a,{commandPattern:b=null}={}){let c=n(a);if(!c)return{pid:null,reason:"no_pid_file"};if(!m(c.pid))return{pid:null,reason:"not_running",pidFileStale:!0};let d=k(c.pid);if(c.startToken)return d?d!==c.startToken?{pid:null,reason:"pid_recycled",pidFileStale:!0}:{pid:c.pid,reason:"verified_start_token"}:{pid:null,reason:"identity_unreadable"};if(!b)return{pid:null,reason:"identity_unverifiable"};let e=l(c.pid);return e?b.test(e)?{pid:c.pid,reason:"verified_command"}:{pid:null,reason:"command_mismatch",pidFileStale:!0}:{pid:null,reason:"identity_unreadable"}},removePidFile:function(a){try{d.rmSync(a,{force:!0})}catch{}},parseLinuxStartTime:j}},21719:(a,b,c)=>{"use strict";c.d(b,{g:()=>n,l:()=>m});var d=c(79646),e=c(33873),f=c.n(e),g=c(29021),h=c.n(g),i=c(21820),j=c.n(i),k=c(30869),l=c(15754);async function m({excludePids:a=[]}={}){!function(){try{let a=f().join("win32"===process.platform?f().join(process.env.APPDATA||"","zevai"):f().join(j().homedir(),".zevai"),"mitm",".mitm.pid"),{pid:b}=(0,l.resolveVerifiedPid)(a,{commandPattern:/(mitm[\\/]server\.js|mitm[\\/]+server\b)/i});if(!b)return void(0,l.removePidFile)(a);if("win32"===process.platform)try{(0,d.execSync)(`taskkill /F /T /PID ${b}`,{stdio:"ignore",windowsHide:!0,timeout:3e3})}catch{try{(0,d.execSync)(`powershell -NonInteractive -WindowStyle Hidden -Command "Stop-Process -Id ${b} -Force"`,{stdio:"ignore",windowsHide:!0,timeout:3e3})}catch{}}else try{(0,d.execSync)(`sudo -n kill -9 ${b} 2>/dev/null`,{stdio:"ignore",timeout:3e3})}catch{try{process.kill(b,"SIGKILL")}catch{}}(0,l.removePidFile)(a)}catch{}}();let b=function(a=[]){let b=[],c=process.platform,e=new Set([process.pid,...Array.isArray(a)?a:[]].filter(a=>null!=a).map(String));if("win32"===c){try{(0,d.execSync)('powershell -NonInteractive -WindowStyle Hidden -Command "Get-WmiObject Win32_Process -Filter \'Name=\\"node.exe\\"\' | Select-Object ProcessId,CommandLine | ConvertTo-Csv -NoTypeInformation"',{encoding:"utf8",windowsHide:!0,timeout:5e3}).split("\n").slice(1).filter(a=>a.trim()).forEach(a=>{let c=a.toLowerCase();if(c.includes("zevai")||c.includes("next-server")||c.includes("\\bin\\app\\")||c.includes("/bin/app/")||c.includes("cli.js")){let c=a.match(/^"(\d+)"/);c&&c[1]&&!e.has(c[1])&&b.push(c[1])}})}catch{}for(let a of["cloudflared","tray_windows_release"])try{let c=`powershell -NonInteractive -WindowStyle Hidden -Command "Get-Process ${a} -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Id"`;(0,d.execSync)(c,{encoding:"utf8",windowsHide:!0,timeout:5e3}).split("\n").forEach(a=>{let c=a.trim();!c||isNaN(c)||e.has(c)||b.push(c)})}catch{}}else try{(0,d.execSync)("ps aux 2>/dev/null",{encoding:"utf8",timeout:5e3}).split("\n").forEach(a=>{if(a.includes("zevai")||a.includes("next-server")||a.includes("cloudflared")||a.includes("/bin/app/")||a.includes("tray_darwin")||a.includes("tray_linux")){let c=a.trim().split(/\s+/)[1];!c||isNaN(c)||e.has(c)||b.push(c)}})}catch{}return b}(a),c=process.platform;b.forEach(a=>{try{"win32"===c?(0,d.execSync)(`taskkill /F /PID ${a} 2>nul`,{stdio:"ignore",shell:!0,windowsHide:!0,timeout:3e3}):(0,d.execSync)(`kill -9 ${a} 2>/dev/null`,{stdio:"ignore",timeout:3e3})}catch{}}),b.length>0&&await new Promise(a=>setTimeout(a,1500))}async function n(a=k.h0.npmPackageName){let b=function(a){try{if(!a||!h().existsSync(a))return a;let b=f().join(process.env.DATA_DIR?process.env.DATA_DIR:"win32"===process.platform?f().join(process.env.APPDATA||f().join(j().homedir(),"AppData","Roaming"),"zevai"):f().join(j().homedir(),".zevai"),"runtime","updater"),c=f().join(b,"updater.js");if(h().existsSync(c))try{if(h().statSync(a).size===h().statSync(c).size)return c}catch{}return h().mkdirSync(b,{recursive:!0}),h().copyFileSync(a,c),c}catch{return a}}(function(){if(process.env.UPDATER_SCRIPT_PATH&&h().existsSync(process.env.UPDATER_SCRIPT_PATH))return process.env.UPDATER_SCRIPT_PATH;let a=f().join(process.cwd(),"src","lib","updater","updater.js");if(h().existsSync(a))return a;let b=f().join(process.cwd(),"..","src","lib","updater","updater.js");return h().existsSync(b)?b:a}()),c="1"===process.env.TRAY_MODE,e={cmd:"win32"===process.platform?"npx.cmd":"npx",args:[k.h0.npmPackageName]},g=String(process.env.PORT||k.h0.appPort||1997),i=c?[...e.args,"--tray","--skip-update"]:[...e.args,"--port",g,"--no-browser","--skip-update","--log"],l=(0,d.spawn)(process.execPath,[b],{detached:!0,stdio:"ignore",windowsHide:!0,env:function(a={}){let b={...process.env,...a};return delete b.ZEVAI_LAUNCHD_JOB,delete b.XPC_SERVICE_NAME,b}({UPDATER_PKG_NAME:a||"zevairouter",UPDATER_PORT:String(k.h0.statusPort),UPDATER_TAIL_LINES:String(k.h0.statusLogTailLines),UPDATER_RETRIES:String(k.h0.installRetries),UPDATER_RETRY_DELAY_MS:String(k.h0.installRetryDelayMs),UPDATER_LINGER_MS:String(k.h0.lingerAfterDoneMs),UPDATER_WAIT_MIN_MS:String(k.h0.waitForExitMinMs),UPDATER_WAIT_MAX_MS:String(k.h0.waitForExitMaxMs),UPDATER_WAIT_CHECK_MS:String(k.h0.waitForExitCheckMs),UPDATER_APP_PORT:g,UPDATER_RELAUNCH:"1",UPDATER_RELAUNCH_CMD:e.cmd,UPDATER_RELAUNCH_ARGS:JSON.stringify(i),ZEVAI_SERVER_MODE:c?"":"1"})});l.unref();try{await m({excludePids:[l.pid]})}catch{}return setTimeout(()=>process.exit(0),k.h0.exitDelayMs),l.pid}},30869:(a,b,c)=>{"use strict";c.d(b,{UY:()=>i,X3:()=>k,eh:()=>f.eh,fg:()=>e.fg,h0:()=>h,oc:()=>j,vQ:()=>g});var d=c(39006),e=c(75681),f=c(81329);let g={name:"ZevaiRouter",description:"AI Infrastructure Management",version:d.version},h={npmPackageName:"zevairouter",installCmd:"npm i -g zevairouter",installCmdLatest:"npm i -g zevairouter@latest --prefer-online",shutdownCountdownSec:3,exitDelayMs:500,statusPort:20129,statusPollIntervalMs:1e3,statusLogTailLines:8,installRetries:3,installRetryDelayMs:5e3,lingerAfterDoneMs:3e4,waitForExitMinMs:5e3,waitForExitMaxMs:2e4,waitForExitCheckMs:500,appPort:1997},i={maxLines:200,pollIntervalMs:1e3},j={tickIntervalMs:6e4,pingLeadMs:5e3,refreshAheadMs:3e5,failureCooldownMs:9e5,providers:{claude:{settingsKey:"claudeAutoPing",quotaKey:"session (5h)",pingModel:"claude-haiku-4-5-20251001",pingText:"hi",pingMaxTokens:1},codex:{settingsKey:"codexAutoPing",quotaKey:"session",pingWhenResetAtSlides:!0,resetAtDriftMs:3e4,minPingIntervalMs:6e5,skipWhenBlockingQuotaExhausted:!0,pingModel:"gpt-5.5",pingText:"hi",pingInstructions:"Reply with OK.",pingReasoningEffort:"none"}}},k={openrouter:"https://openrouter.ai/api/v1/chat/completions",glm:"https://api.z.ai/api/anthropic/v1/messages","glm-cn":"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",kimi:"https://api.kimi.com/coding/v1/messages",minimax:"https://api.minimax.io/anthropic/v1/messages","minimax-cn":"https://api.minimaxi.com/anthropic/v1/messages",alicode:"https://coding.dashscope.aliyuncs.com/v1/chat/completions","alicode-intl":"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions","volcengine-ark":"https://ark.cn-beijing.volces.com/api/coding/v3/chat/completions",byteplus:"https://ark.ap-southeast.bytepluses.com/api/coding/v3/chat/completions",openai:"https://api.openai.com/v1/chat/completions","vercel-ai-gateway":"https://ai-gateway.vercel.sh/v1/chat/completions",anthropic:"https://api.anthropic.com/v1/messages",gemini:"https://generativelanguage.googleapis.com/v1beta/models",ollama:"https://ollama.com/api/chat","ollama-local":"http://localhost:11434/api/chat","notion-ai":"https://app.notion.com/api/v3/runInferenceTranscript"}},39006:a=>{"use strict";a.exports=JSON.parse('{"name":"zevairouter","version":"1.1.21","description":"Self-hosted AI router: many providers, one OpenAI-compatible /v1 endpoint and dashboard","bin":{"zevai":"cli/cli.js"},"files":["cli/cli.js","cli/app/","cli/hooks/","cli/src/","cli/package.json","cli/README.md","cli/LICENSE","scripts/start-standalone.mjs","README.md","README.zh-CN.md","DOCKER.md","LICENSE","CHANGELOG.md"],"scripts":{"dev":"next dev --webpack --port 1997","build":"node scripts/build-app.mjs","start":"node ./scripts/start-standalone.mjs","dev:bun":"bun --bun next dev --webpack --port 1997","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js","lint":"eslint .","test":"vitest run --config tests/vitest.config.js","build:cli":"node cli/scripts/build-cli.js","audit:package":"node cli/scripts/audit-package.mjs","smoke:package":"node cli/scripts/smoke-package.mjs","verify:mobile-scroll":"node cli/scripts/verify-dashboard-mobile-scroll.mjs","candidate:build":"node cli/scripts/local-candidate.mjs build","candidate:install":"node cli/scripts/local-candidate.mjs install","candidate:status":"node cli/scripts/local-candidate.mjs status","candidate:rollback":"node cli/scripts/local-candidate.mjs rollback","release":"node cli/scripts/release.js","prepack":"npm run build:cli && npm run audit:package","postinstall":"node cli/hooks/postinstall.js"},"dependencies":{"@node-saml/node-saml":"5.1.0","next":"16.3.4","node-machine-id":"1.1.12","react":"19.2.4","react-dom":"19.2.4","sql.js":"1.14.1","yaml":"2.9.0"},"comment_optional_runtime":"Optional packages are installed into ~/.zevai/runtime instead of the published tarball. Automation uses CloakBrowser with playwright-core; ZEVAI_MINIMAL_POSTINSTALL=1 skips its browser download. Other lazy runtimes are better-sqlite3, node-pty, and systray2.","overrides":{"body-parser":"^2.3.0","brace-expansion":"5.0.9","dompurify":"^3.4.12","ip-address":"^10.4.0","js-yaml":"4.3.2","nanoid":"^3.3.18","postcss":"^8.5.10","sharp":"0.35.4"},"comment_overrides":"Security floors for transitive dependencies. ESLint\'s legacy minimatch is a private, source-pinned 3.1.5 compatibility package backed by brace-expansion 5.0.9; modern minimatch and nanoid use fixed floors directly. Monaco still pins an old DOMPurify; Express, Next, ESLint, and image processing dependencies may resolve vulnerable body-parser, js-yaml, or sharp releases. Recheck and remove overrides once parent packages require fixed versions.","devDependencies":{"@dnd-kit/core":"^6.3.1","@dnd-kit/modifiers":"^9.0.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.1.18","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0","@xterm/xterm":"^6.0.0","@xyflow/react":"^12.10.1","bcryptjs":"^3.0.3","better-sqlite3":"^12.6.2","chalk":"^4.1.2","confbox":"^0.2.4","dompurify":"^3.4.12","esbuild":"^0.28.1","eslint":"^9","eslint-config-next":"16.3.4","express":"^5.2.1","http-proxy-middleware":"^3.0.7","jose":"^6.1.3","marked":"^18.0.1","material-symbols":"^0.45.1","minimatch":"file:vendor/minimatch3-secure","monaco-editor":"^0.55.1","node-forge":"^1.3.3","open":"^11.0.0","ora":"^9.1.0","postcss":"^8.5.10","prop-types":"^15.8.1","react-is":"^19.2.7","recharts":"^3.7.0","selfsigned":"^5.5.0","socks":"^2.8.9","socks-proxy-agent":"^10.1.0","tailwindcss":"^4","typescript":"6.0.3","undici":"^8.10.0","uuid":"^14.0.1","vitest":"4.1.11","zustand":"^5.0.10"},"engines":{"node":">=22.5.0"},"keywords":["zevairouter","zevai","ai","router","proxy","kiro","codebuddy","claude","openai","api","quota","automation"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/Verifiedlabs/zevairouter.git"},"bugs":{"url":"https://github.com/Verifiedlabs/zevairouter/issues"},"homepage":"https://github.com/Verifiedlabs/zevairouter"}')},78335:()=>{},81329:(a,b,c)=>{"use strict";c.d(b,{Xg:()=>d.Xg,eh:()=>e,vq:()=>d.vq});var d=c(83477);Object.entries(c(75681).AI_PROVIDERS).filter(([,a])=>a.passthroughModels).map(([a])=>a);let e=Object.entries(d.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name})))},96487:()=>{}};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use strict";exports.id=5436,exports.ids=[5436],exports.modules={5529:(a,b,c)=>{c.d(b,{A:()=>e});var d=c(29975);let e={buildUrl:a=>`https://api.stability.ai/v2beta/stable-image/generate/${a.includes("ultra")?"ultra":a.includes("sd3")?"sd3":"core"}`,buildHeaders:a=>{let b=a?.apiKey||a?.accessToken;return{"Content-Type":"application/json",Authorization:`Bearer ${b}`,Accept:"application/json"}},buildBody:(a,b)=>{let c={prompt:b.prompt,output_format:(b.output_format||"png").toLowerCase()};return b.size&&(c.aspect_ratio=(0,d.CY)(b.size)),b.style&&(c.style_preset=b.style),a.includes("sd3")&&(c.model=a),c},normalize:a=>a.image?{created:(0,d.kv)(),data:[{b64_json:a.image}]}:{created:(0,d.kv)(),data:[]}}},7648:(a,b,c)=>{c.d(b,{A:()=>k});var d=c(77598),e=c(29975),f=c(75924);let g="-image",h="high",i=new Set(["gpt-image-1.5","gpt-image-2","gpt-image-2.5","gpt-image-2.5-flare","gpt-image-2.5-sunburst"]);async function j(a,b,c={}){let d=a.body.getReader(),e=new TextDecoder,f="",g=null,h=null,i=0,k=0;for(;;){let a,{done:j,value:l}=await d.read();if(j)break;for(i+=l?.byteLength||0,f+=e.decode(l,{stream:!0});-1!==(a=f.indexOf("\n\n"));){let d=f.slice(0,a);f=f.slice(a+2);let e=d.split("\n"),j=null,l="";for(let a of e)a.startsWith("event:")?j=a.slice(6).trim():a.startsWith("data:")&&(l+=a.slice(5).trim());if(!j)continue;j!==h&&(b?.info?.("IMAGE",`codex progress: ${j}`),h=j);let m=Date.now();if(c.onProgress&&m-k>200&&(k=m,c.onProgress({stage:j,bytesReceived:i})),"response.image_generation_call.partial_image"===j&&l)try{let a=JSON.parse(l);c.onPartialImage&&a?.partial_image_b64&&c.onPartialImage({b64_json:a.partial_image_b64,index:a.partial_image_index})}catch{}if("response.output_item.done"===j&&l)try{let a=JSON.parse(l),b=a?.item;b?.type==="image_generation_call"&&b.result&&(g=b.result)}catch{}}}return g}let k={stream:!0,buildUrl:()=>"https://chatgpt.com/backend-api/codex/responses",buildHeaders:a=>{let b=a?.providerSpecificData?.chatgptAccountId||function(a){try{let b=String(a||"").split(".");if(3!==b.length)return null;let c=b[1].replace(/-/g,"+").replace(/_/g,"/"),d=(4-c.length%4)%4,e=JSON.parse(Buffer.from(c+"=".repeat(d),"base64").toString("utf8"));return e?.["https://api.openai.com/auth"]?.chatgpt_account_id||null}catch{return null}}(a?.idToken);return{accept:"text/event-stream, application/json",authorization:`Bearer ${a?.accessToken||""}`,"chatgpt-account-id":b||"","content-type":"application/json",originator:f.Hi,session_id:(0,d.randomUUID)(),"user-agent":(0,f.cw)(),version:f.Ch,"x-client-request-id":(0,d.randomUUID)()}},buildBody:(a,b)=>{let c=[],e=new Set,f=a=>{if("string"!=typeof a||e.has(a))return;let b=a&&"string"==typeof a?/^data:image\//i.test(a)||/^https?:\/\//i.test(a)?a:`data:image/png;base64,${a}`:null;b&&(e.add(a),c.push(b))};Array.isArray(b.images)&&b.images.forEach(f),f(b.image);let j=b.image_detail||h,k=function(a,b){if(!i.has(a))return{responsesModel:a.endsWith(g)?a.slice(0,-g.length):a};return{responsesModel:"gpt-5.3-codex",toolModel:a,action:b?"edit":"generate"}}(a,c.length>0),l={type:"image_generation",output_format:(b.output_format||"png").toLowerCase()};return k.toolModel&&(l.model=k.toolModel,l.action=k.action),b.size&&""!==b.size&&(l.size=b.size),b.quality&&""!==b.quality&&(l.quality=b.quality),b.background&&""!==b.background&&(l.background=b.background),{model:k.responsesModel,instructions:"",input:[{type:"message",role:"user",content:function(a,b,c=h){let d=[];return b.forEach((a,b)=>{d.push({type:"input_text",text:`<image name=image${b+1}>`}),d.push({type:"input_image",image_url:a,detail:c}),d.push({type:"input_text",text:"</image>"})}),d.push({type:"input_text",text:a}),d}(b.prompt,c,j)}],tools:[l],tool_choice:"auto",parallel_tool_calls:!1,prompt_cache_key:(0,d.randomUUID)(),stream:!0,store:!1,reasoning:null}},async parseResponse(a,{log:b,streamToClient:c,onRequestSuccess:d}){if(c)return{sseResponse:new Response(new ReadableStream({async start(c){let f=new TextEncoder,g=(a,b)=>{c.enqueue(f.encode(`event: ${a}
|
|
2
2
|
data: ${JSON.stringify(b)}
|
|
3
3
|
|
|
4
|
-
`))};try{let c=await j(a,b,{onProgress:a=>g("progress",a),onPartialImage:a=>g("partial_image",a)});c?(d&&await d(),g("done",{created:(0,e.kv)(),data:[{b64_json:c}]})):g("error",{message:"Codex did not return an image. Account may not be entitled (Plus/Pro required)."})}catch(a){g("error",{message:a?.message||"Stream failed"})}finally{c.close()}}}),{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache, no-transform",Connection:"keep-alive","X-Accel-Buffering":"no","Access-Control-Allow-Origin":"*"}})};let f=await j(a,b);if(!f)throw Error("Codex did not return an image. Account may not be entitled (Plus/Pro required).");return{created:(0,e.kv)(),data:[{b64_json:f}]}},normalize:a=>a}},10326:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(29975);let e="https://api.dev.runwayml.com/v1",f={async:!0,buildUrl:a=>`${e}/${a.includes("image")?"text_to_image":"image_to_video"}`,buildHeaders:a=>{let b=a?.apiKey||a?.accessToken;return{"Content-Type":"application/json",Authorization:`Bearer ${b}`,"X-Runway-Version":"2024-11-06"}},buildBody:(a,b)=>{let c=!a.includes("image"),e=(0,d.CY)(b.size);return c?{promptText:b.prompt,model:a,ratio:e,duration:5,...b.image?{promptImage:b.image}:{}}:{promptText:b.prompt,model:a,ratio:e,...b.image?{referenceImages:[{uri:b.image}]}:{}}},async parseResponse(a,{headers:b}){let{id:c}=await a.json();if(!c)throw Error("Runway: no task id returned");let f=`${e}/tasks/${c}`,g=Date.now()+d.vv;for(;Date.now()<g;){await (0,d.yy)(d.fv);let a=await fetch(f,{headers:b});if(!a.ok)throw Error(`Runway status ${a.status}`);let c=await a.json();if("SUCCEEDED"===c.status)return c;if("FAILED"===c.status||"CANCELLED"===c.status)throw Error(c.failure||"Runway task failed")}throw Error("Runway polling timeout")},normalize:a=>{let b=Array.isArray(a.output)?a.output:[];return{created:(0,d.kv)(),data:b.map(a=>({url:a}))}}}},16867:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{j:()=>s});var e=c(61613),f=c(38952),g=c(7648),h=c(30782),i=c(24849),j=c(33081),k=c(62796),l=c(45738),m=c(5529),n=c(34566),o=c(10326),p=c(90734),q=c(91285),r=a([q]);q=(r.then?(await r)():r)[0];let t={openai:(0,e.A)("openai"),minimax:(0,e.A)("minimax"),openrouter:(0,e.A)("openrouter"),recraft:(0,e.A)("recraft"),xai:(0,e.A)("xai"),gemini:f.A,codex:g.A,sdwebui:h.A,comfyui:i.A,huggingface:j.A,nanobanana:k.A,"fal-ai":l.A,"stability-ai":m.A,"black-forest-labs":n.A,runwayml:o.A,"cloudflare-ai":p.A,antigravity:q.A};function s(a){return t[a]||null}d()}catch(a){d(a)}})},24849:(a,b,c)=>{c.d(b,{A:()=>d});let d={noAuth:!0,buildUrl:()=>"http://localhost:8188",buildHeaders:()=>({"Content-Type":"application/json"}),buildBody:(a,b)=>({prompt:b.prompt}),normalize:a=>a}},29975:(a,b,c)=>{c.d(b,{CY:()=>g,W6:()=>h,fv:()=>d,kv:()=>i,vv:()=>e,yy:()=>f});let d=1500,e=12e4,f=a=>new Promise(b=>setTimeout(b,a));function g(a){return a&&"string"==typeof a&&({"1024x1024":"1:1","1024x1792":"9:16","1792x1024":"16:9","1024x1536":"2:3","1536x1024":"3:2"})[a]||"1:1"}async function h(a){let b=await fetch(a);if(!b.ok)throw Error(`Failed to fetch image: ${b.status}`);let c=await b.arrayBuffer();return Buffer.from(c).toString("base64")}function i(){return Math.floor(Date.now()/1e3)}},30782:(a,b,c)=>{c.d(b,{A:()=>e});var d=c(29975);let e={noAuth:!0,buildUrl:()=>"http://localhost:7860/sdapi/v1/txt2img",buildHeaders:()=>({"Content-Type":"application/json"}),buildBody:(a,b)=>{let{prompt:c,n:d=1,size:e="1024x1024"}=b,[f,g]=e.split("x").map(Number);return{prompt:c,width:f||512,height:g||512,steps:20,batch_size:d}},normalize:a=>{let b=Array.isArray(a.images)?a.images.map(a=>({b64_json:a})):[];return{created:(0,d.kv)(),data:b}}}},33081:(a,b,c)=>{c.d(b,{A:()=>e});var d=c(29975);let e={buildUrl:a=>`https://api-inference.huggingface.co/models/${a}`,buildHeaders:a=>{let b={"Content-Type":"application/json"},c=a?.apiKey||a?.accessToken;return c&&(b.Authorization=`Bearer ${c}`),b},buildBody:(a,b)=>({inputs:b.prompt}),async parseResponse(a){let b=await a.arrayBuffer(),c=Buffer.from(b).toString("base64");return{created:(0,d.kv)(),data:[{b64_json:c}]}},normalize:a=>a}},34566:(a,b,c)=>{c.d(b,{A:()=>e});var d=c(29975);let e={async:!0,buildUrl:a=>`https://api.bfl.ai/v1/${a}`,buildHeaders:a=>({"Content-Type":"application/json","x-key":a?.apiKey||a?.accessToken}),buildBody:(a,b)=>{let c={prompt:b.prompt};if(b.size){let[a,d]=b.size.split("x").map(Number);a&&(c.width=a),d&&(c.height=d)}return b.image&&(c.image_prompt=b.image),c},async parseResponse(a,{headers:b}){let c=(await a.json()).polling_url;if(!c)throw Error("BFL: no polling_url returned");let e=Date.now()+d.vv;for(;Date.now()<e;){await (0,d.yy)(d.fv);let a=await fetch(c,{headers:{"x-key":b["x-key"],Accept:"application/json"}});if(!a.ok)throw Error(`BFL status ${a.status}`);let e=await a.json();if("Ready"===e.status)return e;if("Error"===e.status||"Failed"===e.status)throw Error(e.error||"BFL generation failed")}throw Error("BFL polling timeout")},normalize:a=>{let b=a.result?.sample;return b?{created:(0,d.kv)(),data:[{url:b}]}:{created:(0,d.kv)(),data:[]}}}},38952:(a,b,c)=>{c.d(b,{A:()=>e});var d=c(29975);let e={buildUrl:(a,b)=>{let c=b?.apiKey||b?.accessToken,d=a.replace(/^models\//,"");return`https://generativelanguage.googleapis.com/v1beta/models/${d}:generateContent?key=${encodeURIComponent(c)}`},buildHeaders:()=>({"Content-Type":"application/json"}),buildBody:(a,b)=>({contents:[{parts:[{text:b.prompt}]}],generationConfig:{responseModalities:["TEXT","IMAGE"]}}),normalize:(a,b)=>{let c=(a.candidates?.[0]?.content?.parts||[]).filter(a=>a.inlineData?.data).map(a=>({b64_json:a.inlineData.data}));return{created:(0,d.kv)(),data:c.length>0?c:[{b64_json:"",revised_prompt:b}]}}}},45738:(a,b,c)=>{c.d(b,{A:()=>e});var d=c(29975);let e={async:!0,buildUrl:a=>`https://queue.fal.run/${a}`,buildHeaders:a=>{let b=a?.apiKey||a?.accessToken;return{"Content-Type":"application/json",Authorization:`Key ${b}`}},buildBody:(a,b)=>{let c={prompt:b.prompt,num_images:b.n||1};return b.size&&(c.image_size=(0,d.CY)(b.size)),b.image&&(c.image_url=b.image),c},async parseResponse(a,{headers:b}){let{status_url:c,response_url:e}=await a.json(),f=Date.now()+d.vv;for(;Date.now()<f;){await (0,d.yy)(d.fv);let a=await fetch(c,{headers:b});if(!a.ok)throw Error(`Fal status ${a.status}`);let f=await a.json();if("COMPLETED"===f.status){let a=await fetch(e,{headers:b});return await a.json()}if("FAILED"===f.status)throw Error(f.error||"Fal generation failed")}throw Error("Fal polling timeout")},normalize:a=>{let b=Array.isArray(a.images)?a.images:a.image?[a.image]:[];return{created:(0,d.kv)(),data:b.map(a=>({url:a.url||a}))}}}},55436:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{k:()=>p});var e=c(80238),f=c(89718),g=c(38775),h=c(72301),i=c(43659),j=c(41004),k=c(58136),l=c(18910),m=c(11410),n=c(7803),o=a([h,m]);[h,m]=o.then?(await o)():o;let r=new Set(["sdwebui","comfyui"]);async function p(a){let b;try{b=await a.json()}catch{return(0,i.yj)(j.gx.BAD_REQUEST,"Invalid JSON body")}let c=new URL(a.url),d=a.headers.get("x-connection-id")||null,h=(a.headers.get("accept")||"").includes("text/event-stream"),k="binary"===c.searchParams.get("response_format"),o=b.model,p=(0,e.Tr)(a),r=await (0,f.mt)();if(r.requireApiKey){if(!p)return(0,i.yj)(j.gx.UNAUTHORIZED,"Missing API key");if(!await (0,e.kI)(p))return(0,i.yj)(j.gx.UNAUTHORIZED,"Invalid API key")}if(!o||"string"!=typeof o)return(0,i.yj)(j.gx.BAD_REQUEST,"Missing model");if(!b.prompt)return(0,i.yj)(j.gx.BAD_REQUEST,"Missing required field: prompt");let s=await (0,m.M)(p,o);if(s.error)return s.error;let t=await (0,g.d_)(o);if(t){let a=r.comboStrategies||{},c=a[o]?.fallbackStrategy||r.comboStrategy||"fallback",e=r.comboStickyRoundRobinLimit;return n.info("IMAGE",`Combo "${o}" with ${t.length} models (strategy: ${c}, sticky: ${e})`),s.finish(await (0,l.Pr)({body:b,models:t,handleSingleModel:(a,b)=>q(a,b,{wantsStream:h,binaryOutput:k,preferredConnectionId:d,apiKey:p}),log:n,comboName:o,comboStrategy:c,comboStickyLimit:e}))}return s.finish(await q(b,o,{wantsStream:h,binaryOutput:k,preferredConnectionId:d,apiKey:p}))}async function q(a,b,{wantsStream:c,binaryOutput:d,preferredConnectionId:f,apiKey:l}={}){let m=await (0,g.mA)(b);if(!m.provider)return(0,i.yj)(j.gx.BAD_REQUEST,"Invalid model format");let{provider:n,model:o}=m;if(r.has(n)){let b=await (0,h.l)({body:a,modelInfo:{provider:n,model:o},credentials:null,binaryOutput:d});return b.success?b.response:(0,i.yj)(b.status||j.gx.BAD_GATEWAY,b.error||"Image generation failed")}let p=new Set,s=null,t=null;for(;;){let b=await (0,e.c1)(n,p,o,{preferredConnectionId:f,...l?{apiKey:l}:{}});if(!b||b.allRateLimited){if(b?.allRateLimited){let a=s||b.lastError||"Unavailable",c=t||Number(b.lastErrorCode)||j.gx.SERVICE_UNAVAILABLE;return(0,i.wO)(c,`[${n}/${o}] ${a}`,b.retryAfter,b.retryAfterHuman)}if(0===p.size)return(0,i.yj)(j.gx.BAD_REQUEST,`No credentials for provider: ${n}`);return(0,i.yj)(t||j.gx.SERVICE_UNAVAILABLE,s||"All accounts unavailable")}let g=await (0,k.eU)(n,b),m=await (0,h.l)({body:a,modelInfo:{provider:n,model:o},credentials:g,streamToClient:c,binaryOutput:d,onCredentialsRefreshed:async a=>{await (0,k.vN)(b.connectionId,{accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{await (0,e.Pt)(b.connectionId,b,o)}});if(m.success)return m.response;let{shouldFallback:q}=await (0,e.vk)(b.connectionId,m.status,m.error,n,o);if(q){p.add(b.connectionId),s=m.error,t=m.status;continue}return m.response}}d()}catch(a){d(a)}})},61613:(a,b,c)=>{c.d(b,{A:()=>e});let d={openai:"https://api.openai.com/v1/images/generations",minimax:"https://api.minimaxi.com/v1/images/generations",openrouter:"https://openrouter.ai/api/v1/images/generations",recraft:"https://external.api.recraft.ai/v1/images/generations",xai:"https://api.x.ai/v1/images/generations"};function e(a){return{buildUrl:()=>d[a],buildHeaders:b=>{let c={"Content-Type":"application/json"},d=b?.apiKey||b?.accessToken;return d&&(c.Authorization=`Bearer ${d}`),"openrouter"===a&&(c["HTTP-Referer"]="https://endpoint-proxy.local",c["X-Title"]="Endpoint Proxy"),c},buildBody:(b,c)=>{let{prompt:d,n:e=1,size:f="1024x1024",quality:g,style:h,response_format:i}=c;if("xai"===a){let a={model:b,prompt:d,n:e};return i&&(a.response_format=i),a}let j={model:b,prompt:d,n:e,size:f};return g&&(j.quality=g),h&&(j.style=h),i&&(j.response_format=i),j},normalize:a=>a}}},62796:(a,b,c)=>{c.d(b,{A:()=>e});var d=c(29975);let e={async:!0,buildUrl:()=>"https://api.nanobananaapi.ai/api/v1/nanobanana/generate",buildHeaders:a=>{let b={"Content-Type":"application/json"},c=a?.apiKey||a?.accessToken;return c&&(b.Authorization=`Bearer ${c}`),b},buildBody:(a,b)=>{let c=(0,d.CY)(b.size),e=!!(b.image||Array.isArray(b.images)&&b.images.length),f={prompt:b.prompt,type:e?"IMAGETOIAMGE":"TEXTTOIAMGE",numImages:b.n||1,image_size:c,callBackUrl:"https://localhost/callback"};if(e){let a=Array.isArray(b.images)?b.images.filter(Boolean):[];b.image&&a.push(b.image),f.imageUrls=a}return f},async parseResponse(a,{headers:b}){let c=await a.json();if(200!==c.code)throw Error(c.msg||"NanoBanana submit failed");let e=c.data?.taskId;if(!e)throw Error("NanoBanana: no taskId returned");let f=`https://api.nanobananaapi.ai/api/v1/nanobanana/record-info?taskId=${encodeURIComponent(e)}`,g=Date.now()+d.vv;for(;Date.now()<g;){await (0,d.yy)(d.fv);let a=await fetch(f,{headers:b});if(!a.ok)throw Error(`NanoBanana status ${a.status}`);let c=await a.json(),e=c.data?.successFlag;if(1===e)return c.data;if(2===e||3===e)throw Error(c.data?.errorMessage||"NanoBanana generation failed")}throw Error("NanoBanana polling timeout")},normalize:(a,b)=>{let c=a.response?.resultImageUrl||a.response?.originImageUrl;return c?{created:(0,d.kv)(),data:[{url:c,revised_prompt:b}]}:{created:(0,d.kv)(),data:[]}}}},72301:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{l:()=>m});var e=c(43659),f=c(41004),g=c(8590),h=c(55330),i=c(16867),j=c(29975),k=a([h,i]);function l(a){return"u">typeof FormData&&a instanceof FormData||"string"==typeof a?a:JSON.stringify(a)}async function m({body:a,modelInfo:b,credentials:c,log:d,streamToClient:k=!1,binaryOutput:n=!1,onCredentialsRefreshed:o,onRequestSuccess:p}){let q,r,s,t,u,{provider:v,model:w}=b;if(!a.prompt)return(0,e.A1)(f.gx.BAD_REQUEST,"Missing required field: prompt");let x=(0,i.j)(v);if(!x)return(0,e.A1)(f.gx.BAD_REQUEST,`Provider '${v}' does not support image generation`);if(x.useExecutor&&x.executeViaExecutor){let b;try{d?.debug?.("IMAGE",`${v.toUpperCase()} | ${w} | prompt="${a.prompt.slice(0,50)}..." (executor)`),b=await x.executeViaExecutor(w,a,c,d)}catch(b){let a=(0,e.lR)(b,v,w,f.gx.BAD_GATEWAY);return d?.debug?.("IMAGE",`Executor error: ${a}`),(0,e.A1)(f.gx.BAD_GATEWAY,a)}p&&await p();let g=x.normalize(b,a.prompt),h=g.created&&Array.isArray(g.data)?g:b;if(n){let b=h.data?.[0],c=b?.b64_json;if(!c&&b?.url)try{c=await (0,j.W6)(b.url)}catch{}if(c){let b=Buffer.from(c,"base64"),d=(a.output_format||"png").toLowerCase();return{success:!0,response:new Response(b,{headers:{"Content-Type":"jpeg"===d||"jpg"===d?"image/jpeg":"webp"===d?"image/webp":"image/png","Content-Disposition":`inline; filename="image.${"jpeg"===d?"jpg":d}"`,"Access-Control-Allow-Origin":"*"}})}}}return{success:!0,response:new Response(JSON.stringify(h),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}}try{q=x.buildUrl(w,c),s=await x.buildBody(w,a),r=x.buildHeaders(c,s,w,a)}catch(a){return(0,e.A1)(f.gx.BAD_REQUEST,a.message||`Invalid ${v} image request`)}d?.debug?.("IMAGE",`${v.toUpperCase()} | ${w} | prompt="${a.prompt.slice(0,50)}..."`);try{t=await fetch(q,{method:"POST",headers:r,body:l(s)})}catch(b){let a=(0,e.lR)(b,v,w,f.gx.BAD_GATEWAY);return d?.debug?.("IMAGE",`Fetch error: ${a}`),(0,e.A1)(f.gx.BAD_GATEWAY,a)}let y=(0,h.SB)(v);if(!y?.noAuth&&!x.noAuth&&(t.status===f.gx.UNAUTHORIZED||t.status===f.gx.FORBIDDEN)){let b=await (0,g.qZ)(()=>y.refreshCredentials(c,d),3,d);if(b?.accessToken||b?.apiKey){d?.info?.("TOKEN",`${v.toUpperCase()} | refreshed for image generation`),Object.assign(c,b),o&&await o(b);try{let b=await x.buildBody(w,a),d=x.buildHeaders(c,b,w,a),e=x.buildUrl(w,c);t=await fetch(e,{method:"POST",headers:d,body:l(b)})}catch{d?.warn?.("TOKEN",`${v.toUpperCase()} | retry after refresh failed`)}}else d?.warn?.("TOKEN",`${v.toUpperCase()} | refresh failed`)}if(!t.ok){let{statusCode:a,message:b}=await (0,e.zL)(t),c=(0,e.lR)(Error(b),v,w,a);return d?.debug?.("IMAGE",`Provider error: ${c}`),(0,e.A1)(a,c)}try{if(x.parseResponse){if(u=await x.parseResponse(t,{headers:r,log:d,streamToClient:k,onRequestSuccess:p,url:q,requestBody:s,model:w,body:a}),u?.sseResponse)return{success:!0,response:u.sseResponse}}else u=await t.json()}catch(a){return(0,e.A1)(f.gx.BAD_GATEWAY,a.message||`Invalid response from ${v}`)}p&&await p();let z=x.normalize(u,a.prompt),A=z.created&&Array.isArray(z.data)?z:u;if(n){let b=A.data?.[0],c=b?.b64_json;if(!c&&b?.url)try{c=await (0,j.W6)(b.url)}catch{}if(c){let b=Buffer.from(c,"base64"),d=(a.output_format||"png").toLowerCase();return{success:!0,response:new Response(b,{headers:{"Content-Type":"jpeg"===d||"jpg"===d?"image/jpeg":"webp"===d?"image/webp":"image/png","Content-Disposition":`inline; filename="image.${"jpeg"===d?"jpg":d}"`,"Access-Control-Allow-Origin":"*"}})}}}return{success:!0,response:new Response(JSON.stringify(A),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}}[h,i]=k.then?(await k)():k,d()}catch(a){d(a)}})},90734:(a,b,c)=>{c.d(b,{A:()=>m});var d=c(29975);let e=new Set(["@cf/black-forest-labs/flux-2-dev","@cf/black-forest-labs/flux-2-klein-4b","@cf/black-forest-labs/flux-2-klein-9b"]),f=["negative_prompt","guidance","seed","num_steps","steps","strength"];function g(a){var b;let c;return{...(b=a.size,!(c=/^(\d+)x(\d+)$/.exec(String(b||"")))?{}:{width:Number(c[1]),height:Number(c[2])}),...Number.isFinite(Number(a.width))?{width:Number(a.width)}:{},...Number.isFinite(Number(a.height))?{height:Number(a.height)}:{}}}async function h(a){if(Array.isArray(a))return{bytes:a,b64:Buffer.from(a).toString("base64")};if("string"!=typeof a)return null;let b=a.trim();if(!b)return null;if(/^https?:\/\//i.test(b)){let a=await (0,d.W6)(b);return{bytes:i(a),b64:a}}let c=/^data:image\/[^;]+;base64,(.+)$/i.exec(b),e=c?c[1]:b;return{bytes:i(e),b64:e}}function i(a){try{return Array.from(Buffer.from(a,"base64"))}catch{return a}}function j(a,b,c){for(let d of f){let e=b[d];null!=e&&""!==e&&c(a,d,e)}}async function k(a){let b={prompt:a.prompt,...g(a)};j(b,a,(a,b,c)=>{a[b]=c});let c=await h(a.image);c&&(b.image_b64=c.b64,b.image=c.bytes);let d=await h(a.mask_image||a.maskImage||a.mask);return d&&(b.mask_b64=d.b64,b.mask=d.bytes,b.mask_image=d.bytes),b}function l(a){var b;if(a?.created&&Array.isArray(a?.data))return a;let c=a?.result??a,e=Array.isArray(c?.responses)?c.responses.find(a=>a?.success!==!1)?.result:null;if(e)return l(e);let f="string"==typeof(b=("string"==typeof c?c:null)||c?.image||c?.data?.[0]?.b64_json||c?.data?.[0]?.url)&&b?/^data:image\/[^;]+;base64,/i.test(b)?{b64_json:b.replace(/^data:image\/[^;]+;base64,/i,"")}:/^https?:\/\//i.test(b)?{url:b}:{b64_json:b}:null;return{created:(0,d.kv)(),data:f?[f]:[]}}let m={buildUrl:(a,b)=>{let c=b?.providerSpecificData?.accountId;if(!c)throw Error("cloudflare-ai requires accountId in providerSpecificData");return`https://api.cloudflare.com/client/v4/accounts/${c}/ai/run/${a}`},buildHeaders:(a,b)=>{let c={};"u">typeof FormData&&b instanceof FormData||(c["Content-Type"]="application/json");let d=a?.apiKey||a?.accessToken;return d&&(c.Authorization=`Bearer ${d}`),c},buildBody:async(a,b)=>e.has(a)?function(a){let b=new FormData;for(let[c,d]of(b.append("prompt",a.prompt),Object.entries(g(a))))b.append(c,String(d));return j(b,a,(a,b,c)=>{a.append(b,String(c))}),b}(b):await k(b),async parseResponse(a){if((a.headers.get("Content-Type")||"").toLowerCase().startsWith("image/")){let b=await a.arrayBuffer();return{created:(0,d.kv)(),data:[{b64_json:Buffer.from(b).toString("base64")}]}}return l(await a.json())},normalize:l}},91285:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{A:()=>h});var e=c(29975),f=c(55330),g=a([f]);f=(g.then?(await g)():g)[0];let h={useExecutor:!0,buildUrl:()=>"",buildHeaders:()=>({}),buildBody:()=>({}),async executeViaExecutor(a,b,c,d){let e=(0,f.SB)("antigravity");if(!e)throw Error("Antigravity executor not found");let g=[{text:b.prompt}],h=b.image||Array.isArray(b.images)&&b.images[0];if(h){let a=function(a){if(!a||"string"!=typeof a)return null;let b=a.match(/^data:(image\/[^;]+);base64,(.+)$/);return b?{inlineData:{mimeType:b[1],data:b[2]}}:/^[A-Za-z0-9+/]/.test(a)&&a.length>100&&!a.startsWith("http")?{inlineData:{mimeType:"image/png",data:a}}:null}(h);a&&g.unshift(a)}let i=await e.execute({model:a,body:{contents:[{role:"user",parts:g}]},stream:!1,credentials:c,log:d});if(!i.response.ok){let a=await i.response.text();throw Error(a||`HTTP ${i.response.status}`)}return i.response.json()},normalize:(a,b)=>{let c=a.candidates||a.response?.candidates||[],d=(c[0]?.content?.parts||[]).filter(a=>a.inlineData?.data).map(a=>({b64_json:a.inlineData.data}));return{created:(0,e.kv)(),data:d.length>0?d:[{b64_json:"",revised_prompt:b}]}}};d()}catch(a){d(a)}})}};
|
|
4
|
+
`))};try{let c=await j(a,b,{onProgress:a=>g("progress",a),onPartialImage:a=>g("partial_image",a)});c?(d&&await d(),g("done",{created:(0,e.kv)(),data:[{b64_json:c}]})):g("error",{message:"Codex did not return an image. Account may not be entitled (Plus/Pro required)."})}catch(a){g("error",{message:a?.message||"Stream failed"})}finally{c.close()}}}),{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache, no-transform",Connection:"keep-alive","X-Accel-Buffering":"no","Access-Control-Allow-Origin":"*"}})};let f=await j(a,b);if(!f)throw Error("Codex did not return an image. Account may not be entitled (Plus/Pro required).");return{created:(0,e.kv)(),data:[{b64_json:f}]}},normalize:a=>a}},10326:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(29975);let e="https://api.dev.runwayml.com/v1",f={async:!0,buildUrl:a=>`${e}/${a.includes("image")?"text_to_image":"image_to_video"}`,buildHeaders:a=>{let b=a?.apiKey||a?.accessToken;return{"Content-Type":"application/json",Authorization:`Bearer ${b}`,"X-Runway-Version":"2024-11-06"}},buildBody:(a,b)=>{let c=!a.includes("image"),e=(0,d.CY)(b.size);return c?{promptText:b.prompt,model:a,ratio:e,duration:5,...b.image?{promptImage:b.image}:{}}:{promptText:b.prompt,model:a,ratio:e,...b.image?{referenceImages:[{uri:b.image}]}:{}}},async parseResponse(a,{headers:b}){let{id:c}=await a.json();if(!c)throw Error("Runway: no task id returned");let f=`${e}/tasks/${c}`,g=Date.now()+d.vv;for(;Date.now()<g;){await (0,d.yy)(d.fv);let a=await fetch(f,{headers:b});if(!a.ok)throw Error(`Runway status ${a.status}`);let c=await a.json();if("SUCCEEDED"===c.status)return c;if("FAILED"===c.status||"CANCELLED"===c.status)throw Error(c.failure||"Runway task failed")}throw Error("Runway polling timeout")},normalize:a=>{let b=Array.isArray(a.output)?a.output:[];return{created:(0,d.kv)(),data:b.map(a=>({url:a}))}}}},12185:(a,b,c)=>{c.d(b,{A:()=>e});var d=c(29975);let e={async:!0,buildUrl:a=>`https://api.bfl.ai/v1/${a}`,buildHeaders:a=>({"Content-Type":"application/json","x-key":a?.apiKey||a?.accessToken}),buildBody:(a,b)=>{let c={prompt:b.prompt};if(b.size){let[a,d]=b.size.split("x").map(Number);a&&(c.width=a),d&&(c.height=d)}return b.image&&(c.image_prompt=b.image),c},async parseResponse(a,{headers:b}){let c=(await a.json()).polling_url;if(!c)throw Error("BFL: no polling_url returned");let e=Date.now()+d.vv;for(;Date.now()<e;){await (0,d.yy)(d.fv);let a=await fetch(c,{headers:{"x-key":b["x-key"],Accept:"application/json"}});if(!a.ok)throw Error(`BFL status ${a.status}`);let e=await a.json();if("Ready"===e.status)return e;if("Error"===e.status||"Failed"===e.status)throw Error(e.error||"BFL generation failed")}throw Error("BFL polling timeout")},normalize:a=>{let b=a.result?.sample;return b?{created:(0,d.kv)(),data:[{url:b}]}:{created:(0,d.kv)(),data:[]}}}},16867:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{j:()=>s});var e=c(61613),f=c(38952),g=c(7648),h=c(30782),i=c(24849),j=c(33081),k=c(62796),l=c(45738),m=c(5529),n=c(12185),o=c(10326),p=c(90734),q=c(91285),r=a([q]);q=(r.then?(await r)():r)[0];let t={openai:(0,e.A)("openai"),minimax:(0,e.A)("minimax"),openrouter:(0,e.A)("openrouter"),recraft:(0,e.A)("recraft"),xai:(0,e.A)("xai"),gemini:f.A,codex:g.A,sdwebui:h.A,comfyui:i.A,huggingface:j.A,nanobanana:k.A,"fal-ai":l.A,"stability-ai":m.A,"black-forest-labs":n.A,runwayml:o.A,"cloudflare-ai":p.A,antigravity:q.A};function s(a){return t[a]||null}d()}catch(a){d(a)}})},24849:(a,b,c)=>{c.d(b,{A:()=>d});let d={noAuth:!0,buildUrl:()=>"http://localhost:8188",buildHeaders:()=>({"Content-Type":"application/json"}),buildBody:(a,b)=>({prompt:b.prompt}),normalize:a=>a}},29975:(a,b,c)=>{c.d(b,{CY:()=>g,W6:()=>h,fv:()=>d,kv:()=>i,vv:()=>e,yy:()=>f});let d=1500,e=12e4,f=a=>new Promise(b=>setTimeout(b,a));function g(a){return a&&"string"==typeof a&&({"1024x1024":"1:1","1024x1792":"9:16","1792x1024":"16:9","1024x1536":"2:3","1536x1024":"3:2"})[a]||"1:1"}async function h(a){let b=await fetch(a);if(!b.ok)throw Error(`Failed to fetch image: ${b.status}`);let c=await b.arrayBuffer();return Buffer.from(c).toString("base64")}function i(){return Math.floor(Date.now()/1e3)}},30782:(a,b,c)=>{c.d(b,{A:()=>e});var d=c(29975);let e={noAuth:!0,buildUrl:()=>"http://localhost:7860/sdapi/v1/txt2img",buildHeaders:()=>({"Content-Type":"application/json"}),buildBody:(a,b)=>{let{prompt:c,n:d=1,size:e="1024x1024"}=b,[f,g]=e.split("x").map(Number);return{prompt:c,width:f||512,height:g||512,steps:20,batch_size:d}},normalize:a=>{let b=Array.isArray(a.images)?a.images.map(a=>({b64_json:a})):[];return{created:(0,d.kv)(),data:b}}}},33081:(a,b,c)=>{c.d(b,{A:()=>e});var d=c(29975);let e={buildUrl:a=>`https://api-inference.huggingface.co/models/${a}`,buildHeaders:a=>{let b={"Content-Type":"application/json"},c=a?.apiKey||a?.accessToken;return c&&(b.Authorization=`Bearer ${c}`),b},buildBody:(a,b)=>({inputs:b.prompt}),async parseResponse(a){let b=await a.arrayBuffer(),c=Buffer.from(b).toString("base64");return{created:(0,d.kv)(),data:[{b64_json:c}]}},normalize:a=>a}},38952:(a,b,c)=>{c.d(b,{A:()=>e});var d=c(29975);let e={buildUrl:(a,b)=>{let c=b?.apiKey||b?.accessToken,d=a.replace(/^models\//,"");return`https://generativelanguage.googleapis.com/v1beta/models/${d}:generateContent?key=${encodeURIComponent(c)}`},buildHeaders:()=>({"Content-Type":"application/json"}),buildBody:(a,b)=>({contents:[{parts:[{text:b.prompt}]}],generationConfig:{responseModalities:["TEXT","IMAGE"]}}),normalize:(a,b)=>{let c=(a.candidates?.[0]?.content?.parts||[]).filter(a=>a.inlineData?.data).map(a=>({b64_json:a.inlineData.data}));return{created:(0,d.kv)(),data:c.length>0?c:[{b64_json:"",revised_prompt:b}]}}}},45738:(a,b,c)=>{c.d(b,{A:()=>e});var d=c(29975);let e={async:!0,buildUrl:a=>`https://queue.fal.run/${a}`,buildHeaders:a=>{let b=a?.apiKey||a?.accessToken;return{"Content-Type":"application/json",Authorization:`Key ${b}`}},buildBody:(a,b)=>{let c={prompt:b.prompt,num_images:b.n||1};return b.size&&(c.image_size=(0,d.CY)(b.size)),b.image&&(c.image_url=b.image),c},async parseResponse(a,{headers:b}){let{status_url:c,response_url:e}=await a.json(),f=Date.now()+d.vv;for(;Date.now()<f;){await (0,d.yy)(d.fv);let a=await fetch(c,{headers:b});if(!a.ok)throw Error(`Fal status ${a.status}`);let f=await a.json();if("COMPLETED"===f.status){let a=await fetch(e,{headers:b});return await a.json()}if("FAILED"===f.status)throw Error(f.error||"Fal generation failed")}throw Error("Fal polling timeout")},normalize:a=>{let b=Array.isArray(a.images)?a.images:a.image?[a.image]:[];return{created:(0,d.kv)(),data:b.map(a=>({url:a.url||a}))}}}},55436:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{k:()=>p});var e=c(80238),f=c(89718),g=c(38775),h=c(72301),i=c(43659),j=c(41004),k=c(58136),l=c(18910),m=c(11410),n=c(7803),o=a([h,m]);[h,m]=o.then?(await o)():o;let r=new Set(["sdwebui","comfyui"]);async function p(a){let b;try{b=await a.json()}catch{return(0,i.yj)(j.gx.BAD_REQUEST,"Invalid JSON body")}let c=new URL(a.url),d=a.headers.get("x-connection-id")||null,h=(a.headers.get("accept")||"").includes("text/event-stream"),k="binary"===c.searchParams.get("response_format"),o=b.model,p=(0,e.Tr)(a),r=await (0,f.mt)();if(r.requireApiKey){if(!p)return(0,i.yj)(j.gx.UNAUTHORIZED,"Missing API key");if(!await (0,e.kI)(p))return(0,i.yj)(j.gx.UNAUTHORIZED,"Invalid API key")}if(!o||"string"!=typeof o)return(0,i.yj)(j.gx.BAD_REQUEST,"Missing model");if(!b.prompt)return(0,i.yj)(j.gx.BAD_REQUEST,"Missing required field: prompt");let s=await (0,m.M)(p,o);if(s.error)return s.error;let t=await (0,g.d_)(o);if(t){let a=r.comboStrategies||{},c=a[o]?.fallbackStrategy||r.comboStrategy||"fallback",e=r.comboStickyRoundRobinLimit;return n.info("IMAGE",`Combo "${o}" with ${t.length} models (strategy: ${c}, sticky: ${e})`),s.finish(await (0,l.Pr)({body:b,models:t,handleSingleModel:(a,b)=>q(a,b,{wantsStream:h,binaryOutput:k,preferredConnectionId:d,apiKey:p}),log:n,comboName:o,comboStrategy:c,comboStickyLimit:e}))}return s.finish(await q(b,o,{wantsStream:h,binaryOutput:k,preferredConnectionId:d,apiKey:p}))}async function q(a,b,{wantsStream:c,binaryOutput:d,preferredConnectionId:f,apiKey:l}={}){let m=await (0,g.mA)(b);if(!m.provider)return(0,i.yj)(j.gx.BAD_REQUEST,"Invalid model format");let{provider:n,model:o}=m;if(r.has(n)){let b=await (0,h.l)({body:a,modelInfo:{provider:n,model:o},credentials:null,binaryOutput:d});return b.success?b.response:(0,i.yj)(b.status||j.gx.BAD_GATEWAY,b.error||"Image generation failed")}let p=new Set,s=null,t=null;for(;;){let b=await (0,e.c1)(n,p,o,{preferredConnectionId:f,...l?{apiKey:l}:{}});if(!b||b.allRateLimited){if(b?.allRateLimited){let a=s||b.lastError||"Unavailable",c=t||Number(b.lastErrorCode)||j.gx.SERVICE_UNAVAILABLE;return(0,i.wO)(c,`[${n}/${o}] ${a}`,b.retryAfter,b.retryAfterHuman)}if(0===p.size)return(0,i.yj)(j.gx.BAD_REQUEST,`No credentials for provider: ${n}`);return(0,i.yj)(t||j.gx.SERVICE_UNAVAILABLE,s||"All accounts unavailable")}let g=await (0,k.eU)(n,b),m=await (0,h.l)({body:a,modelInfo:{provider:n,model:o},credentials:g,streamToClient:c,binaryOutput:d,onCredentialsRefreshed:async a=>{await (0,k.vN)(b.connectionId,{accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{await (0,e.Pt)(b.connectionId,b,o)}});if(m.success)return m.response;let{shouldFallback:q}=await (0,e.vk)(b.connectionId,m.status,m.error,n,o);if(q){p.add(b.connectionId),s=m.error,t=m.status;continue}return m.response}}d()}catch(a){d(a)}})},61613:(a,b,c)=>{c.d(b,{A:()=>e});let d={openai:"https://api.openai.com/v1/images/generations",minimax:"https://api.minimaxi.com/v1/images/generations",openrouter:"https://openrouter.ai/api/v1/images/generations",recraft:"https://external.api.recraft.ai/v1/images/generations",xai:"https://api.x.ai/v1/images/generations"};function e(a){return{buildUrl:()=>d[a],buildHeaders:b=>{let c={"Content-Type":"application/json"},d=b?.apiKey||b?.accessToken;return d&&(c.Authorization=`Bearer ${d}`),"openrouter"===a&&(c["HTTP-Referer"]="https://endpoint-proxy.local",c["X-Title"]="Endpoint Proxy"),c},buildBody:(b,c)=>{let{prompt:d,n:e=1,size:f="1024x1024",quality:g,style:h,response_format:i}=c;if("xai"===a){let a={model:b,prompt:d,n:e};return i&&(a.response_format=i),a}let j={model:b,prompt:d,n:e,size:f};return g&&(j.quality=g),h&&(j.style=h),i&&(j.response_format=i),j},normalize:a=>a}}},62796:(a,b,c)=>{c.d(b,{A:()=>e});var d=c(29975);let e={async:!0,buildUrl:()=>"https://api.nanobananaapi.ai/api/v1/nanobanana/generate",buildHeaders:a=>{let b={"Content-Type":"application/json"},c=a?.apiKey||a?.accessToken;return c&&(b.Authorization=`Bearer ${c}`),b},buildBody:(a,b)=>{let c=(0,d.CY)(b.size),e=!!(b.image||Array.isArray(b.images)&&b.images.length),f={prompt:b.prompt,type:e?"IMAGETOIAMGE":"TEXTTOIAMGE",numImages:b.n||1,image_size:c,callBackUrl:"https://localhost/callback"};if(e){let a=Array.isArray(b.images)?b.images.filter(Boolean):[];b.image&&a.push(b.image),f.imageUrls=a}return f},async parseResponse(a,{headers:b}){let c=await a.json();if(200!==c.code)throw Error(c.msg||"NanoBanana submit failed");let e=c.data?.taskId;if(!e)throw Error("NanoBanana: no taskId returned");let f=`https://api.nanobananaapi.ai/api/v1/nanobanana/record-info?taskId=${encodeURIComponent(e)}`,g=Date.now()+d.vv;for(;Date.now()<g;){await (0,d.yy)(d.fv);let a=await fetch(f,{headers:b});if(!a.ok)throw Error(`NanoBanana status ${a.status}`);let c=await a.json(),e=c.data?.successFlag;if(1===e)return c.data;if(2===e||3===e)throw Error(c.data?.errorMessage||"NanoBanana generation failed")}throw Error("NanoBanana polling timeout")},normalize:(a,b)=>{let c=a.response?.resultImageUrl||a.response?.originImageUrl;return c?{created:(0,d.kv)(),data:[{url:c,revised_prompt:b}]}:{created:(0,d.kv)(),data:[]}}}},72301:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{l:()=>m});var e=c(43659),f=c(41004),g=c(8590),h=c(55330),i=c(16867),j=c(29975),k=a([h,i]);function l(a){return"u">typeof FormData&&a instanceof FormData||"string"==typeof a?a:JSON.stringify(a)}async function m({body:a,modelInfo:b,credentials:c,log:d,streamToClient:k=!1,binaryOutput:n=!1,onCredentialsRefreshed:o,onRequestSuccess:p}){let q,r,s,t,u,{provider:v,model:w}=b;if(!a.prompt)return(0,e.A1)(f.gx.BAD_REQUEST,"Missing required field: prompt");let x=(0,i.j)(v);if(!x)return(0,e.A1)(f.gx.BAD_REQUEST,`Provider '${v}' does not support image generation`);if(x.useExecutor&&x.executeViaExecutor){let b;try{d?.debug?.("IMAGE",`${v.toUpperCase()} | ${w} | prompt="${a.prompt.slice(0,50)}..." (executor)`),b=await x.executeViaExecutor(w,a,c,d)}catch(b){let a=(0,e.lR)(b,v,w,f.gx.BAD_GATEWAY);return d?.debug?.("IMAGE",`Executor error: ${a}`),(0,e.A1)(f.gx.BAD_GATEWAY,a)}p&&await p();let g=x.normalize(b,a.prompt),h=g.created&&Array.isArray(g.data)?g:b;if(n){let b=h.data?.[0],c=b?.b64_json;if(!c&&b?.url)try{c=await (0,j.W6)(b.url)}catch{}if(c){let b=Buffer.from(c,"base64"),d=(a.output_format||"png").toLowerCase();return{success:!0,response:new Response(b,{headers:{"Content-Type":"jpeg"===d||"jpg"===d?"image/jpeg":"webp"===d?"image/webp":"image/png","Content-Disposition":`inline; filename="image.${"jpeg"===d?"jpg":d}"`,"Access-Control-Allow-Origin":"*"}})}}}return{success:!0,response:new Response(JSON.stringify(h),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}}try{q=x.buildUrl(w,c),s=await x.buildBody(w,a),r=x.buildHeaders(c,s,w,a)}catch(a){return(0,e.A1)(f.gx.BAD_REQUEST,a.message||`Invalid ${v} image request`)}d?.debug?.("IMAGE",`${v.toUpperCase()} | ${w} | prompt="${a.prompt.slice(0,50)}..."`);try{t=await fetch(q,{method:"POST",headers:r,body:l(s)})}catch(b){let a=(0,e.lR)(b,v,w,f.gx.BAD_GATEWAY);return d?.debug?.("IMAGE",`Fetch error: ${a}`),(0,e.A1)(f.gx.BAD_GATEWAY,a)}let y=(0,h.SB)(v);if(!y?.noAuth&&!x.noAuth&&(t.status===f.gx.UNAUTHORIZED||t.status===f.gx.FORBIDDEN)){let b=await (0,g.qZ)(()=>y.refreshCredentials(c,d),3,d);if(b?.accessToken||b?.apiKey){d?.info?.("TOKEN",`${v.toUpperCase()} | refreshed for image generation`),Object.assign(c,b),o&&await o(b);try{let b=await x.buildBody(w,a),d=x.buildHeaders(c,b,w,a),e=x.buildUrl(w,c);t=await fetch(e,{method:"POST",headers:d,body:l(b)})}catch{d?.warn?.("TOKEN",`${v.toUpperCase()} | retry after refresh failed`)}}else d?.warn?.("TOKEN",`${v.toUpperCase()} | refresh failed`)}if(!t.ok){let{statusCode:a,message:b}=await (0,e.zL)(t),c=(0,e.lR)(Error(b),v,w,a);return d?.debug?.("IMAGE",`Provider error: ${c}`),(0,e.A1)(a,c)}try{if(x.parseResponse){if(u=await x.parseResponse(t,{headers:r,log:d,streamToClient:k,onRequestSuccess:p,url:q,requestBody:s,model:w,body:a}),u?.sseResponse)return{success:!0,response:u.sseResponse}}else u=await t.json()}catch(a){return(0,e.A1)(f.gx.BAD_GATEWAY,a.message||`Invalid response from ${v}`)}p&&await p();let z=x.normalize(u,a.prompt),A=z.created&&Array.isArray(z.data)?z:u;if(n){let b=A.data?.[0],c=b?.b64_json;if(!c&&b?.url)try{c=await (0,j.W6)(b.url)}catch{}if(c){let b=Buffer.from(c,"base64"),d=(a.output_format||"png").toLowerCase();return{success:!0,response:new Response(b,{headers:{"Content-Type":"jpeg"===d||"jpg"===d?"image/jpeg":"webp"===d?"image/webp":"image/png","Content-Disposition":`inline; filename="image.${"jpeg"===d?"jpg":d}"`,"Access-Control-Allow-Origin":"*"}})}}}return{success:!0,response:new Response(JSON.stringify(A),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}}[h,i]=k.then?(await k)():k,d()}catch(a){d(a)}})},90734:(a,b,c)=>{c.d(b,{A:()=>m});var d=c(29975);let e=new Set(["@cf/black-forest-labs/flux-2-dev","@cf/black-forest-labs/flux-2-klein-4b","@cf/black-forest-labs/flux-2-klein-9b"]),f=["negative_prompt","guidance","seed","num_steps","steps","strength"];function g(a){var b;let c;return{...(b=a.size,!(c=/^(\d+)x(\d+)$/.exec(String(b||"")))?{}:{width:Number(c[1]),height:Number(c[2])}),...Number.isFinite(Number(a.width))?{width:Number(a.width)}:{},...Number.isFinite(Number(a.height))?{height:Number(a.height)}:{}}}async function h(a){if(Array.isArray(a))return{bytes:a,b64:Buffer.from(a).toString("base64")};if("string"!=typeof a)return null;let b=a.trim();if(!b)return null;if(/^https?:\/\//i.test(b)){let a=await (0,d.W6)(b);return{bytes:i(a),b64:a}}let c=/^data:image\/[^;]+;base64,(.+)$/i.exec(b),e=c?c[1]:b;return{bytes:i(e),b64:e}}function i(a){try{return Array.from(Buffer.from(a,"base64"))}catch{return a}}function j(a,b,c){for(let d of f){let e=b[d];null!=e&&""!==e&&c(a,d,e)}}async function k(a){let b={prompt:a.prompt,...g(a)};j(b,a,(a,b,c)=>{a[b]=c});let c=await h(a.image);c&&(b.image_b64=c.b64,b.image=c.bytes);let d=await h(a.mask_image||a.maskImage||a.mask);return d&&(b.mask_b64=d.b64,b.mask=d.bytes,b.mask_image=d.bytes),b}function l(a){var b;if(a?.created&&Array.isArray(a?.data))return a;let c=a?.result??a,e=Array.isArray(c?.responses)?c.responses.find(a=>a?.success!==!1)?.result:null;if(e)return l(e);let f="string"==typeof(b=("string"==typeof c?c:null)||c?.image||c?.data?.[0]?.b64_json||c?.data?.[0]?.url)&&b?/^data:image\/[^;]+;base64,/i.test(b)?{b64_json:b.replace(/^data:image\/[^;]+;base64,/i,"")}:/^https?:\/\//i.test(b)?{url:b}:{b64_json:b}:null;return{created:(0,d.kv)(),data:f?[f]:[]}}let m={buildUrl:(a,b)=>{let c=b?.providerSpecificData?.accountId;if(!c)throw Error("cloudflare-ai requires accountId in providerSpecificData");return`https://api.cloudflare.com/client/v4/accounts/${c}/ai/run/${a}`},buildHeaders:(a,b)=>{let c={};"u">typeof FormData&&b instanceof FormData||(c["Content-Type"]="application/json");let d=a?.apiKey||a?.accessToken;return d&&(c.Authorization=`Bearer ${d}`),c},buildBody:async(a,b)=>e.has(a)?function(a){let b=new FormData;for(let[c,d]of(b.append("prompt",a.prompt),Object.entries(g(a))))b.append(c,String(d));return j(b,a,(a,b,c)=>{a.append(b,String(c))}),b}(b):await k(b),async parseResponse(a){if((a.headers.get("Content-Type")||"").toLowerCase().startsWith("image/")){let b=await a.arrayBuffer();return{created:(0,d.kv)(),data:[{b64_json:Buffer.from(b).toString("base64")}]}}return l(await a.json())},normalize:l}},91285:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{A:()=>h});var e=c(29975),f=c(55330),g=a([f]);f=(g.then?(await g)():g)[0];let h={useExecutor:!0,buildUrl:()=>"",buildHeaders:()=>({}),buildBody:()=>({}),async executeViaExecutor(a,b,c,d){let e=(0,f.SB)("antigravity");if(!e)throw Error("Antigravity executor not found");let g=[{text:b.prompt}],h=b.image||Array.isArray(b.images)&&b.images[0];if(h){let a=function(a){if(!a||"string"!=typeof a)return null;let b=a.match(/^data:(image\/[^;]+);base64,(.+)$/);return b?{inlineData:{mimeType:b[1],data:b[2]}}:/^[A-Za-z0-9+/]/.test(a)&&a.length>100&&!a.startsWith("http")?{inlineData:{mimeType:"image/png",data:a}}:null}(h);a&&g.unshift(a)}let i=await e.execute({model:a,body:{contents:[{role:"user",parts:g}]},stream:!1,credentials:c,log:d});if(!i.response.ok){let a=await i.response.text();throw Error(a||`HTTP ${i.response.status}`)}return i.response.json()},normalize:(a,b)=>{let c=a.candidates||a.response?.candidates||[],d=(c[0]?.content?.parts||[]).filter(a=>a.inlineData?.data).map(a=>({b64_json:a.inlineData.data}));return{created:(0,e.kv)(),data:d.length>0?d:[{b64_json:"",revised_prompt:b}]}}};d()}catch(a){d(a)}})}};
|