omniroute 3.4.7 → 3.4.8
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/app/.next/BUILD_ID +1 -1
- package/app/.next/build-manifest.json +3 -3
- package/app/.next/prerender-manifest.json +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/audit/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cache/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/memory/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/search-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error.html +1 -1
- package/app/.next/server/app/_global-error.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/system/version/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/api/chat/route.js +15 -15
- package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/audio/speech/route.js +11 -11
- package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/audio/transcriptions/route.js +5 -5
- package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route.js +14 -14
- package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/completions/route.js +14 -14
- package/app/.next/server/app/api/v1/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/images/generations/route.js +10 -10
- package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/messages/route.js +16 -16
- package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/models/route.js +5 -5
- package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/moderations/route.js +9 -9
- package/app/.next/server/app/api/v1/moderations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/music/generations/route.js +10 -10
- package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js +16 -16
- package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js +7 -7
- package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js +10 -10
- package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/rerank/route.js +9 -9
- package/app/.next/server/app/api/v1/rerank/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/responses/[...path]/route.js +16 -16
- package/app/.next/server/app/api/v1/responses/[...path]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/responses/route.js +16 -16
- package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/route.js +5 -5
- package/app/.next/server/app/api/v1/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/search/analytics/route.js +7 -7
- package/app/.next/server/app/api/v1/search/analytics/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/videos/generations/route.js +10 -10
- package/app/.next/server/app/api/v1beta/models/[...path]/route.js +14 -14
- package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__0nxyldc._.js → [root-of-the-server]__0-zca2p._.js} +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__0urvs3.._.js → [root-of-the-server]__01hbf~_._.js} +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__01ojood._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__030_-af._.js +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__0j~-yu1._.js → [root-of-the-server]__03l6k3k._.js} +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__01b8762._.js → [root-of-the-server]__05~jdzu._.js} +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__07eee_s._.js → [root-of-the-server]__08~6j3q._.js} +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0a8ozdb._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0bd4ccn._.js +2 -2
- package/app/.next/server/chunks/{[root-of-the-server]__0_a98vk._.js → [root-of-the-server]__0d6bqbw._.js} +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__0_c_.ye._.js → [root-of-the-server]__0f2rz58._.js} +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0jp3yj4._.js +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__06stuoz._.js → [root-of-the-server]__0jvnjwl._.js} +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0mj7x5~._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0n-~kvf._.js +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__0-y3k-t._.js → [root-of-the-server]__0nzi7ym._.js} +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0ofxxzh._.js +2 -2
- package/app/.next/server/chunks/{[root-of-the-server]__0uu3t5x._.js → [root-of-the-server]__0pd~24c._.js} +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__0s1dq3.._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0tsl88m._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0u5-mph._.js +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__0vi3.0k._.js → [root-of-the-server]__0uryxsh._.js} +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__0lwc40h._.js → [root-of-the-server]__0v1kwmx._.js} +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__04y3b4q._.js → [root-of-the-server]__0vt49c9._.js} +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__0pylsu2._.js → [root-of-the-server]__0vy97gy._.js} +2 -2
- package/app/.next/server/chunks/{[root-of-the-server]__0~s45~f._.js → [root-of-the-server]__0wd~o5b._.js} +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0x5yxjy._.js +2 -2
- package/app/.next/server/chunks/{[root-of-the-server]__0vmajf6._.js → [root-of-the-server]__0x_hqjb._.js} +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0~0hd.s._.js +2 -2
- package/app/.next/server/chunks/{[root-of-the-server]__10~-ypp._.js → [root-of-the-server]__11ptf~3._.js} +1 -1
- package/app/.next/server/chunks/_00.pgsp._.js +1 -1
- package/app/.next/server/chunks/_013gowh._.js +1 -1
- package/app/.next/server/chunks/{_0ucpa5q._.js → _02._8wx._.js} +1 -1
- package/app/.next/server/chunks/_036lxbr._.js +1 -1
- package/app/.next/server/chunks/_05reh6o._.js +1 -1
- package/app/.next/server/chunks/{_0-~thzo._.js → _083_x9z._.js} +2 -2
- package/app/.next/server/chunks/_083a5zg._.js +1 -1
- package/app/.next/server/chunks/{_004r3br._.js → _08cwbl2._.js} +2 -2
- package/app/.next/server/chunks/_0a3.3sc._.js +1 -1
- package/app/.next/server/chunks/_0c.abwr._.js +1 -1
- package/app/.next/server/chunks/_0dfpto1._.js +1 -1
- package/app/.next/server/chunks/_0due8oe._.js +1 -1
- package/app/.next/server/chunks/_0h-j8c2._.js +1 -1
- package/app/.next/server/chunks/_0vx-r0i._.js +2 -2
- package/app/.next/server/chunks/_0w4f3bm._.js +1 -1
- package/app/.next/server/chunks/_10.rw9f._.js +1 -1
- package/app/.next/server/chunks/open-sse_0dawtxk._.js +2 -2
- package/app/.next/server/chunks/open-sse_0p~.88y._.js +1 -1
- package/app/.next/server/chunks/open-sse_0sthby3._.js +1 -1
- package/app/.next/server/chunks/src_0cbm0~g._.js +1 -1
- package/app/.next/server/chunks/src_shared_utils_apiKey_ts_0gzf59_._.js +1 -1
- package/app/.next/server/chunks/src_shared_utils_apiKey_ts_12~h.oz._.js +1 -1
- package/app/.next/server/chunks/ssr/_008ht2n._.js +1 -1
- package/app/.next/server/chunks/ssr/_0oo1f90._.js +1 -1
- package/app/.next/server/chunks/ssr/src_04s-8a5._.js +1 -1
- package/app/.next/server/chunks/ssr/src_0vjsxxr._.js +1 -1
- package/app/.next/server/chunks/ssr/src_shared_utils_apiKey_ts_0l8g1z8._.js +1 -1
- package/app/.next/server/middleware-build-manifest.js +3 -3
- package/app/.next/server/pages/500.html +1 -1
- package/app/.next/server/server-reference-manifest.js +1 -1
- package/app/.next/server/server-reference-manifest.json +1 -1
- package/app/.next/static/chunks/0ipwpwjb2g0uv.js +1 -0
- package/app/.next/static/chunks/0~c--kcvaumm~.js +1 -0
- package/app/.next/static/chunks/{02q7h~xz7j6i3.js → 0~v1trn07bitv.js} +1 -1
- package/app/CHANGELOG.md +12 -0
- package/app/bin/reset-password.mjs +3 -1
- package/app/docs/openapi.yaml +1 -1
- package/app/open-sse/config/registryUtils.ts +1 -0
- package/app/open-sse/config/videoRegistry.ts +1 -3
- package/app/open-sse/executors/antigravity.ts +22 -12
- package/app/open-sse/executors/gemini-cli.ts +3 -1
- package/app/open-sse/executors/qoder.ts +1 -8
- package/app/open-sse/handlers/audioSpeech.ts +1 -0
- package/app/open-sse/handlers/chatCore.ts +2 -1
- package/app/open-sse/handlers/embeddings.ts +1 -0
- package/app/open-sse/handlers/imageGeneration.ts +6 -2
- package/app/open-sse/handlers/musicGeneration.ts +9 -2
- package/app/open-sse/handlers/search.ts +1 -0
- package/app/open-sse/handlers/videoGeneration.ts +11 -3
- package/app/open-sse/mcp-server/index.ts +0 -1
- package/app/open-sse/package.json +1 -1
- package/app/open-sse/services/claudeCodeCompatible.ts +2 -2
- package/app/open-sse/services/modelCapabilities.ts +3 -4
- package/app/open-sse/services/qoderCli.ts +5 -2
- package/app/open-sse/services/tokenRefresh.ts +3 -1
- package/app/open-sse/services/usage.ts +13 -9
- package/app/open-sse/services/workflowFSM.ts +298 -61
- package/app/open-sse/translator/index.ts +5 -1
- package/app/open-sse/translator/response/gemini-to-openai.ts +5 -1
- package/app/open-sse/utils/progressTracker.ts +4 -1
- package/app/open-sse/utils/stream.ts +7 -1
- package/app/open-sse/utils/streamPayloadCollector.ts +5 -1
- package/app/package-lock.json +3 -3
- package/app/package.json +1 -1
- package/app/scripts/check-route-validation.mjs +3 -1
- package/app/scripts/i18n/apply-priority-overrides.mjs +7 -1
- package/app/scripts/prepublish.mjs +2 -2
- package/app/scripts/run-protocol-clients-tests.mjs +7 -1
- package/app/src/app/(dashboard)/dashboard/analytics/components/DiversityScoreCard.tsx +1 -1
- package/app/src/app/(dashboard)/dashboard/auto-combo/page.tsx +0 -1
- package/app/src/app/(dashboard)/dashboard/media/MediaPageClient.tsx +9 -3
- package/app/src/app/(dashboard)/dashboard/providers/[id]/page.tsx +25 -23
- package/app/src/app/(dashboard)/dashboard/search-tools/components/SearchHistory.tsx +3 -1
- package/app/src/app/api/auth/status/route.ts +1 -3
- package/app/src/app/api/mcp/sse/route.ts +2 -2
- package/app/src/app/api/mcp/status/route.ts +1 -2
- package/app/src/app/api/mcp/stream/route.ts +5 -3
- package/app/src/app/api/openapi/spec/route.ts +4 -1
- package/app/src/app/api/openapi/try/route.ts +4 -1
- package/app/src/app/api/providers/[id]/models/route.ts +4 -4
- package/app/src/app/api/providers/[id]/sync-models/route.ts +9 -3
- package/app/src/app/api/settings/auto-disable-accounts/route.ts +6 -1
- package/app/src/app/api/skills/[id]/route.ts +4 -1
- package/app/src/app/api/v1/issues/report/route.ts +9 -1
- package/app/src/app/api/v1beta/models/route.ts +8 -6
- package/app/src/app/api/webhooks/[id]/route.ts +9 -7
- package/app/src/domain/fallbackPolicy.ts +0 -1
- package/app/src/domain/modelAvailability.ts +0 -1
- package/app/src/domain/providerExpiration.ts +2 -6
- package/app/src/lib/db/models.ts +23 -13
- package/app/src/lib/evals/evalRunner.ts +0 -1
- package/app/src/lib/evals/scheduler.ts +2 -6
- package/app/src/lib/oauth/services/antigravity.ts +6 -1
- package/app/src/lib/oauth/services/kiro.ts +12 -2
- package/app/src/lib/oauth/services/oauth.ts +10 -2
- package/app/src/lib/oauth/utils/server.ts +4 -1
- package/app/src/lib/plugins/index.ts +2 -8
- package/app/src/lib/usageAnalytics.ts +5 -1
- package/app/src/mitm/manager.js +1 -1
- package/app/src/mitm/manager.ts +1 -1
- package/app/src/shared/components/Button.tsx +0 -1
- package/app/src/shared/components/Card.tsx +0 -2
- package/app/src/shared/components/FilterBar.tsx +4 -12
- package/app/src/shared/components/Input.tsx +1 -1
- package/app/src/shared/components/Modal.tsx +0 -1
- package/app/src/shared/components/NotificationToast.tsx +1 -3
- package/app/src/shared/components/Select.tsx +1 -1
- package/app/src/shared/components/Sidebar.tsx +3 -3
- package/app/src/shared/components/ThemeToggle.tsx +7 -1
- package/app/src/shared/constants/cliCompatProviders.ts +0 -1
- package/app/src/shared/constants/errorCodes.ts +114 -19
- package/app/src/shared/utils/apiKey.ts +2 -4
- package/app/src/shared/utils/fetchTimeout.ts +0 -1
- package/app/src/shared/utils/inputSanitizer.ts +8 -4
- package/app/src/shared/utils/requestTimeout.ts +5 -1
- package/app/src/sse/handlers/chat.ts +1 -0
- package/app/src/sse/services/auth.ts +8 -3
- package/app/src/sse/services/streamState.ts +5 -1
- package/app/src/store/notificationStore.ts +3 -7
- package/app/tests/unit/t20-t22-provider-headers.test.mjs +3 -1
- package/bin/reset-password.mjs +3 -1
- package/open-sse/mcp-server/__tests__/glmCodingProviderConfig.test.ts +5 -1
- package/open-sse/mcp-server/index.ts +0 -1
- package/package.json +1 -1
- package/app/.next/server/chunks/_0-jnvci._.js +0 -19
- package/app/.next/static/chunks/0l88mho31mflv.js +0 -1
- package/app/.next/static/chunks/0wt-4zl7_gil8.js +0 -1
- /package/app/.next/static/{ri1SkwBU-ygQ2qIDe8jf2 → 1dZBzAZ8QsddVCQRQtqjg}/_buildManifest.js +0 -0
- /package/app/.next/static/{ri1SkwBU-ygQ2qIDe8jf2 → 1dZBzAZ8QsddVCQRQtqjg}/_clientMiddlewareManifest.js +0 -0
- /package/app/.next/static/{ri1SkwBU-ygQ2qIDe8jf2 → 1dZBzAZ8QsddVCQRQtqjg}/_ssgManifest.js +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
module.exports=[184533,e=>{"use strict";e.i(13572);var t=e.i(543125),r=e.i(248084),o=e.i(413618),n=e.i(950412);let a=process.env.CLOUD_URL||process.env.NEXT_PUBLIC_CLOUD_URL,i=Number(process.env.CLOUD_SYNC_TIMEOUT_MS||12e3);function s(e){return e&&"object"==typeof e&&!Array.isArray(e)?e:{}}function c(e){if("string"==typeof e||"number"==typeof e||e instanceof Date){let t=new Date(e).getTime();return Number.isFinite(t)?t:0}return 0}async function l(e,t={},r=i){let o=new AbortController,n=setTimeout(()=>o.abort(),r);try{return await fetch(e,{...t,signal:o.signal})}finally{clearTimeout(n)}}async function u(e,i=null){let s;if(!a)return{error:"NEXT_PUBLIC_CLOUD_URL is not configured"};let c=await (0,t.getProviderConnections)(),p=await (0,r.getModelAliases)(),h=await (0,o.getCombos)(),f=await (0,n.getApiKeys)();try{s=await l(`${a}/sync/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({providers:c,modelAliases:p,combos:h,apiKeys:f})})}catch(e){return{error:e?.name==="AbortError"?"Cloud sync timeout":"Cloud sync request failed"}}if(!s.ok){let e=await s.text(),t=e.length>200?e.slice(0,200)+"…":e;return console.log(`Cloud sync failed (${s.status}):`,t),{error:"Cloud sync failed"}}let m=await s.json();m.data&&m.data.providers&&await d(m.data.providers);let y={success:!0,message:"Synced successfully",changes:m.changes};return i&&(y.createdKey=i),y}async function d(e){let r=s(e);for(let e of(await (0,t.getProviderConnections)())){var o;let n=s(e),a="string"==typeof(o=n.id)&&o.trim().length>0?o:null;if(!a)continue;let i=s(r[a]);if(0!==Object.keys(i).length){if(c(i.updatedAt)>c(n.updatedAt)){let e={accessToken:i.accessToken,refreshToken:i.refreshToken,expiresAt:i.expiresAt,expiresIn:i.expiresIn,providerSpecificData:i.providerSpecificData||n.providerSpecificData,testStatus:i.status||"active",lastError:i.lastError,lastErrorAt:i.lastErrorAt,errorCode:i.errorCode,rateLimitedUntil:i.rateLimitedUntil,updatedAt:i.updatedAt};await (0,t.updateProviderConnection)(a,e)}}}}e.s(["syncToCloud",0,u])},834993,e=>{"use strict";var t=e.i(233405),r=e.i(522734);async function o(n=null){let a=n||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt";try{let o=function(){try{throw Error("Not Windows")}catch{}try{throw Error("Not macOS")}catch{}try{for(let e of["/etc/machine-id","/var/lib/dbus/machine-id"])if((0,r.existsSync)(e)){let t=(0,r.readFileSync)(e,"utf8").trim().toLowerCase();if(t.length>8)return t}}catch{}try{let e=(0,t.execSync)("hostname",{encoding:"utf8",timeout:5e3}).trim().toLowerCase();if(e)return e}catch{}try{return e.r(446786).hostname().toLowerCase()}catch{}return"unknown-machine"}();return(await e.A(485685)).createHash("sha256").update(o+a).digest("hex").substring(0,16)}catch(t){console.log("Error getting machine ID:",t);try{return(await e.A(485685)).randomUUID()}catch{return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){let t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)})}}}async function n(){return await o()}e.s(["getMachineId",0,n],834993)},393357,e=>e.a(async(t,r)=>{try{var o=e.i(677850),n=t([o]);[o]=n.then?(await n)():n;let a=o.z.object({id:o.z.string().min(1),alias:o.z.string().min(1).optional(),name:o.z.string().min(1),icon:o.z.string().min(1),color:o.z.string().regex(/^#[0-9A-Fa-f]{6}$/,"Must be a valid hex color (#RRGGBB)"),textIcon:o.z.string().optional(),website:o.z.string().url().optional(),passthroughModels:o.z.boolean().optional(),deprecated:o.z.boolean().optional(),deprecationReason:o.z.string().optional(),hasFree:o.z.boolean().optional(),freeNote:o.z.string().optional(),authHint:o.z.string().optional(),apiHint:o.z.string().optional()}),i=o.z.record(o.z.string(),a);e.s(["validateProviders",0,function(e,t){let r=i.safeParse(e);if(!r.success){let e=r.error.issues.map(e=>` ${e.path.join(".")}: ${e.message}`).join("\n");throw console.error(`[PROVIDER VALIDATION] ${t} has invalid entries:
|
|
2
|
-
${e}`),Error(`Provider validation failed for ${t}`)}}]),r()}catch(e){r(e)}},!1),738629,e=>e.a(async(t,r)=>{try{var o=e.i(393357),n=t([o]);[o]=n.then?(await n)():n;let a={qoder:{id:"qoder",alias:"if",name:"Qoder AI",icon:"water_drop",color:"#6366F1"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gemini-cli",name:"Gemini CLI",icon:"terminal",color:"#4285F4",deprecated:!0,deprecationReason:"Google restricts third-party OAuth usage for Gemini CLI (Mar 2026). Pro models require paid plans. Use 'gemini' (API key) provider instead."},kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"}},i={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:void 0,name:"Antigravity",icon:"rocket_launch",color:"#F59E0B"},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6"},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},"kimi-coding":{id:"kimi-coding",alias:"kmc",name:"Kimi Coding",icon:"psychology",color:"#1E40AF",textIcon:"KC"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},s={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai"},glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},"bailian-coding-plan":{id:"bailian-coding-plan",alias:"bcp",name:"Alibaba Coding Plan",icon:"code",color:"#FF6A00",textIcon:"BCP",website:"https://www.alibabacloud.com/help/en/model-studio/coding-plan"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},"kimi-coding-apikey":{id:"kimi-coding-apikey",alias:"kmca",name:"Kimi Coding (API Key)",icon:"psychology",color:"#1E40AF",textIcon:"KC",website:"https://kimi.com"},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com"},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},alicode:{id:"alicode",alias:"alicode",name:"Alibaba",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://bailian.console.aliyun.com"},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://modelstudio.console.alibabacloud.com"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com"},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com"},gemini:{id:"gemini",alias:"gemini",name:"Gemini (Google AI Studio)",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev",hasFree:!0,freeNote:"Free forever: 1,500 req/day for Gemini 2.5 Flash — no credit card, get key at aistudio.google.com"},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com",hasFree:!0,freeNote:"Free tier: 30 RPM / 14.4K RPD — no credit card"},blackbox:{id:"blackbox",alias:"bb",name:"Blackbox AI",icon:"view_in_ar",color:"#1A1A2E",textIcon:"BB",website:"https://blackbox.ai"},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai"},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai"},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai"},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai",hasFree:!0,freeNote:"$25 signup credits + 3 permanently free models: Llama 3.3 70B, Vision, DeepSeek-R1 distill"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://inference.cerebras.ai",hasFree:!0,freeNote:"Free: 1M tokens/day, 60K TPM — world's fastest inference"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://build.nvidia.com",hasFree:!0,freeNote:"Free dev access: ~40 RPM, 70+ models (Kimi K2.5, GLM 4.7, DeepSeek V3.2...)"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com"},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com"},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai"},"ollama-cloud":{id:"ollama-cloud",alias:"ollamacloud",name:"Ollama Cloud",icon:"cloud",color:"#58A6FF",textIcon:"OC",website:"https://ollama.com/settings/api-keys"},elevenlabs:{id:"elevenlabs",alias:"el",name:"ElevenLabs",icon:"record_voice_over",color:"#6C47FF",textIcon:"EL",website:"https://elevenlabs.io"},cartesia:{id:"cartesia",alias:"cartesia",name:"Cartesia",icon:"spatial_audio",color:"#FF4F8B",textIcon:"CA",website:"https://cartesia.ai"},playht:{id:"playht",alias:"playht",name:"PlayHT",icon:"play_circle",color:"#00B4D8",textIcon:"PH",website:"https://play.ht"},inworld:{id:"inworld",alias:"inworld",name:"Inworld",icon:"voice_chat",color:"#7B2EF2",textIcon:"IW",website:"https://inworld.ai"},sdwebui:{id:"sdwebui",alias:"sdwebui",name:"SD WebUI",icon:"brush",color:"#FF7043",textIcon:"SD",website:"https://github.com/AUTOMATIC1111/stable-diffusion-webui"},comfyui:{id:"comfyui",alias:"comfyui",name:"ComfyUI",icon:"account_tree",color:"#4CAF50",textIcon:"CF",website:"https://github.com/comfyanonymous/ComfyUI"},huggingface:{id:"huggingface",alias:"hf",name:"HuggingFace",icon:"face",color:"#FFD21E",textIcon:"HF",website:"https://huggingface.co",hasFree:!0,freeNote:"Free Inference API for thousands of models (Whisper, VITS, SDXL…)"},synthetic:{id:"synthetic",alias:"synthetic",name:"Synthetic",icon:"verified_user",color:"#6366F1",textIcon:"SY",website:"https://synthetic.new",passthroughModels:!0},"kilo-gateway":{id:"kilo-gateway",alias:"kg",name:"Kilo Gateway",icon:"hub",color:"#617A91",textIcon:"KG",website:"https://kilo.ai",passthroughModels:!0},vertex:{id:"vertex",alias:"vertex",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VA",website:"https://cloud.google.com/vertex-ai",authHint:"Provide Service Account JSON or OAuth access_token"},zai:{id:"zai",alias:"zai",name:"Z.AI",icon:"psychology",color:"#2563EB",textIcon:"ZA",website:"https://open.bigmodel.cn",apiHint:"API key from https://open.bigmodel.cn/usercenter/apikeys"},"perplexity-search":{id:"perplexity-search",alias:"pplx-search",name:"Perplexity Search",icon:"search",color:"#20808D",textIcon:"PS",website:"https://docs.perplexity.ai/guides/search-quickstart",authHint:"Same API key as Perplexity (pplx-...)"},"serper-search":{id:"serper-search",alias:"serper-search",name:"Serper Search",icon:"search",color:"#4285F4",textIcon:"SP",website:"https://serper.dev",authHint:"API key from serper.dev dashboard"},"brave-search":{id:"brave-search",alias:"brave-search",name:"Brave Search",icon:"travel_explore",color:"#FB542B",textIcon:"BR",website:"https://brave.com/search/api",authHint:"Subscription token from Brave Search API dashboard"},"exa-search":{id:"exa-search",alias:"exa-search",name:"Exa Search",icon:"neurology",color:"#1E40AF",textIcon:"EX",website:"https://exa.ai",authHint:"API key from dashboard.exa.ai"},"tavily-search":{id:"tavily-search",alias:"tavily-search",name:"Tavily Search",icon:"manage_search",color:"#5B4FDB",textIcon:"TV",website:"https://tavily.com",authHint:"API key from app.tavily.com (format: tvly-...)"},"opencode-zen":{id:"opencode-zen",alias:"opencode-zen",name:"OpenCode Zen",icon:"opencode",color:"#6366f1",website:"https://opencode.ai/zen"},"opencode-go":{id:"opencode-go",alias:"opencode-go",name:"OpenCode Go",icon:"opencode",color:"#6366f1",website:"https://opencode.ai/zen/go"},alibaba:{id:"alibaba",alias:"ali",name:"Alibaba Cloud (DashScope)",icon:"cloud_queue",color:"#FF6600",textIcon:"AL",website:"https://dashscope-intl.aliyuncs.com",hasFree:!1},longcat:{id:"longcat",alias:"lc",name:"LongCat AI",icon:"auto_awesome",color:"#FF6B9D",textIcon:"LC",website:"https://longcat.chat",hasFree:!0,freeNote:"50M tokens/day (Flash-Lite) + 500K/day (Chat/Thinking) — 100% free while public beta"},pollinations:{id:"pollinations",alias:"pol",name:"Pollinations AI",icon:"local_florist",color:"#4CAF50",textIcon:"PO",website:"https://pollinations.ai",hasFree:!0,freeNote:"No API key needed — access GPT-5, Claude, Gemini, DeepSeek V3, Llama 4 free (1 req/15s)"},puter:{id:"puter",alias:"pu",name:"Puter AI",icon:"cloud_circle",color:"#6366F1",textIcon:"PU",website:"https://puter.com",hasFree:!0,freeNote:"500+ models (GPT-5, Claude Opus 4, Gemini 3 Pro, Grok 4, DeepSeek V3...) — Users pay via free Puter account",passthroughModels:!0,authHint:"Get token at puter.com/dashboard → Copy Auth Token"},"cloudflare-ai":{id:"cloudflare-ai",alias:"cf",name:"Cloudflare Workers AI",icon:"cloud",color:"#F48120",textIcon:"CF",website:"https://developers.cloudflare.com/workers-ai/",hasFree:!0,freeNote:"Free 10K Neurons/day: ~150 LLM responses or 500s Whisper audio — edge inference globally",authHint:"Requires API Token AND Account ID (found at dash.cloudflare.com)"},scaleway:{id:"scaleway",alias:"scw",name:"Scaleway AI",icon:"cloud",color:"#4F0599",textIcon:"SCW",website:"https://www.scaleway.com/en/ai/generative-apis/",hasFree:!0,freeNote:"1M free tokens for new accounts — EU/GDPR compliant (Paris), Qwen3 235B & Llama 70B"},aimlapi:{id:"aimlapi",alias:"aiml",name:"AI/ML API",icon:"hub",color:"#6366F1",textIcon:"AI",website:"https://aimlapi.com",hasFree:!0,freeNote:"$0.025/day free credits — 200+ models (GPT-4o, Claude, Gemini, Llama) via single endpoint",passthroughModels:!0},novita:{id:"novita",alias:"novita",name:"Novita AI",icon:"auto_awesome",color:"#FF4081",textIcon:"NV",website:"https://novita.ai",passthroughModels:!0},piapi:{id:"piapi",alias:"pi",name:"PiAPI",icon:"api",color:"#7C4DFF",textIcon:"PI",website:"https://piapi.ai",passthroughModels:!0},getgoapi:{id:"getgoapi",alias:"ggo",name:"GoAPI",icon:"rocket_launch",color:"#FF6D00",textIcon:"GO",website:"https://api.getgoapi.com",passthroughModels:!0},laozhang:{id:"laozhang",alias:"lz",name:"LaoZhang AI",icon:"hub",color:"#FF1744",textIcon:"LZ",website:"https://api.laozhang.ai",passthroughModels:!0}},c={...a,...i,...s,cliproxyapi:{id:"cliproxyapi",alias:"cpa",name:"CLIProxyAPI",icon:"proxy",color:"#6366F1",textIcon:"CPA",website:"https://github.com/router-for-me/CLIProxyAPI",defaultPort:8317,healthEndpoint:"/v1/models",managementPrefix:"/v0/management",configDir:"~/.cli-proxy-api",binaryName:"cli-proxy-api",githubRepo:"router-for-me/CLIProxyAPI"}};Object.values(c).reduce((e,t)=>(t.alias&&(e[t.alias]=t.id),e),{}),Object.values(c).reduce((e,t)=>(e[t.id]=t.alias||t.id,e),{}),(0,o.validateProviders)(a,"FREE_PROVIDERS"),(0,o.validateProviders)(i,"OAUTH_PROVIDERS"),(0,o.validateProviders)(s,"APIKEY_PROVIDERS"),e.s(["USAGE_SUPPORTED_PROVIDERS",0,["antigravity","gemini-cli","kiro","github","codex","claude","kimi-coding","glm"]]),r()}catch(e){r(e)}},!1),606062,e=>{"use strict";var t=e.i(254799),r=e.i(503536),o=e.i(359281);let n=new Set(["gemini-3.1-pro"]);class a extends r.BaseExecutor{constructor(){super("antigravity",o.PROVIDERS.antigravity)}buildUrl(e,t,r=0){let o=this.getBaseUrls(),n=o[r]||o[0];return`${n}/v1internal:streamGenerateContent?alt=sse`}buildHeaders(e,t=!0){return{"Content-Type":"application/json",Authorization:`Bearer ${e.accessToken}`,"User-Agent":this.config.headers?.["User-Agent"]||"antigravity/1.104.0 darwin/arm64","X-OmniRoute-Source":"omniroute",Accept:"text/event-stream"}}transformRequest(e,r,o,a){let i=r?.project,s=a?.projectId,c="1"===process.env.OMNIROUTE_ALLOW_BODY_PROJECT_OVERRIDE&&i?i:s||i;if(!c)return new Response(JSON.stringify({error:{message:"Missing Google projectId for Antigravity account. Please reconnect OAuth in Providers → Antigravity so OmniRoute can fetch your Cloud Code project.",type:"oauth_missing_project_id",code:"missing_project_id"}}),{status:422,headers:{"Content-Type":"application/json"}});let l=(r.request?.contents?.map(e=>{let t=e.role;e.parts?.some(e=>e.functionResponse)&&(t="user");let r=e.parts?.filter(e=>!e.thought&&!e.thoughtSignature)||[];return{...e,role:t,parts:r}})||[]).filter(e=>!Array.isArray(e.parts)||e.parts.length>0),u={...r.request,...l.length>0&&{contents:l},sessionId:r.request?.sessionId||this.generateSessionId(),safetySettings:void 0,toolConfig:r.request?.tools?.length>0?{functionCallingConfig:{mode:"VALIDATED"}}:r.request?.toolConfig},d=function(e){if(!e)return e;let t=e.includes("/")?e.split("/").pop():e;return n.has(t)&&(t=`${t}-low`),t}(e);return{...r,project:c,model:d,userAgent:"antigravity",requestType:"agent",requestId:`agent-${t.default.randomUUID()}`,request:u}}async refreshCredentials(e,t){if(!e.refreshToken)return null;try{let r=await fetch(o.OAUTH_ENDPOINTS.google.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:e.refreshToken,client_id:this.config.clientId,client_secret:this.config.clientSecret})});if(!r.ok)return null;let n=await r.json();return t?.info?.("TOKEN","Antigravity refreshed"),{accessToken:n.access_token,refreshToken:n.refresh_token||e.refreshToken,expiresIn:n.expires_in,projectId:e.projectId}}catch(e){return t?.error?.("TOKEN",`Antigravity refresh error: ${e.message}`),null}}generateSessionId(){return`-${Math.floor(9e18*Math.random())}`}parseRetryHeaders(e){if(!e?.get)return null;let t=e.get("retry-after");if(t){let e=parseInt(t,10);if(!isNaN(e)&&e>0)return 1e3*e;let r=new Date(t);if(!isNaN(r.getTime())){let e=r.getTime()-Date.now();return e>0?e:null}}let r=e.get("x-ratelimit-reset-after");if(r){let e=parseInt(r,10);if(!isNaN(e)&&e>0)return 1e3*e}let o=e.get("x-ratelimit-reset");if(o){let e=1e3*parseInt(o,10)-Date.now();return e>0?e:null}return null}parseRetryFromErrorMessage(e){if(!e||"string"!=typeof e)return null;let t=e.match(/reset (?:after|in) (\d+h)?(\d+m)?(\d+s)?/i);if(!t)return null;let r=0;return t[1]&&(r+=3600*parseInt(t[1])*1e3),t[2]&&(r+=60*parseInt(t[2])*1e3),t[3]&&(r+=1e3*parseInt(t[3])),r>0?r:null}collectStreamToResponse(e,r,o,n,a,i,s){let c=e.body.getReader(),l=new TextDecoder;return(async()=>{let u=[],d=!1,p=AbortSignal.timeout(12e4);try{for(;;){if(s?.aborted)throw Error("Request aborted during SSE collection");let{done:e,value:t}=await Promise.race([c.read(),new Promise((e,t)=>p.addEventListener("abort",()=>t(Error("SSE collection timed out")),{once:!0}))]);if(e)break;u.push(l.decode(t,{stream:!0}))}}catch(t){let e=t?.message||String(t);d=e.includes("timed out"),i?.warn?.("SSE_COLLECT",`Error collecting SSE stream: ${e}`)}let h=u.join(""),f="",m="stop",y=null;for(let e of h.split("\n")){let t=e.trim();if(!t.startsWith("data:"))continue;let r=t.slice(5).trim();if(r&&"[DONE]"!==r)try{let e=JSON.parse(r),t=e?.response?.candidates?.[0];if(t?.content?.parts)for(let e of t.content.parts)"string"!=typeof e.text||e.thought||e.thoughtSignature||(f+=e.text);if(t?.finishReason&&(m="stop"===t.finishReason.toLowerCase()?"stop":t.finishReason.toLowerCase()),e?.response?.usageMetadata){let t=e.response.usageMetadata;y={prompt_tokens:t.promptTokenCount||0,completion_tokens:t.candidatesTokenCount||0,total_tokens:t.totalTokenCount||0}}}catch(e){i?.debug?.("SSE_PARSE",`Skipping malformed SSE line: ${r.slice(0,80)}`)}}let g={id:`chatcmpl-${Date.now()}-${t.default.randomUUID().slice(0,8)}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:r,choices:[{index:0,message:{role:"assistant",content:f},finish_reason:d?"length":m}],...y&&{usage:y}},S=d?504:e.status;return{response:new Response(JSON.stringify(g),{status:S,statusText:d?"Gateway Timeout":e.statusText,headers:[["Content-Type","application/json"]]}),url:o,headers:n,transformedBody:a}})()}async execute({model:e,body:t,stream:n,credentials:a,signal:i,log:s,upstreamExtraHeaders:c}){let l=this.getFallbackCount(),u=null,d=0,p={};for(let h=0;h<l;h++){let f=this.buildUrl(e,!0,h),m=this.buildHeaders(a,!0);(0,r.mergeUpstreamExtraHeaders)(m,c);let y=await this.transformRequest(e,t,!0,a);p[h]||(p[h]=0);try{let t=await fetch(f,{method:"POST",headers:m,body:JSON.stringify(y),signal:i}),r=null;if(t.status===o.HTTP_STATUS.RATE_LIMITED||t.status===o.HTTP_STATUS.SERVICE_UNAVAILABLE){if(!(r=this.parseRetryHeaders(t.headers)))try{let e=await t.clone().text(),o=JSON.parse(e),n=o?.error?.message||o?.message||"";if(!(r=this.parseRetryFromErrorMessage(n))){let e=n.toLowerCase();e.includes("free tier")||e.includes("exhausted your capacity")||e.includes("daily limit")||e.includes("quota exceeded")?r=864e5:(e.includes("pro")||e.includes("per minute")||e.includes("rpm"))&&(r=6e4)}}catch(e){}if(r&&r<=6e4){let e=Math.min(r,6e4);s?.debug?.("RETRY",`${t.status} with Retry-After: ${Math.ceil(e/1e3)}s, waiting...`),await new Promise(t=>setTimeout(t,e)),h--;continue}if(t.status===o.HTTP_STATUS.RATE_LIMITED&&(!r||0===r)&&p[h]<3){p[h]++;let e=Math.min(1e3*2**p[h],6e4);s?.debug?.("RETRY",`429 auto retry ${p[h]}/3 after ${e/1e3}s`),await new Promise(t=>setTimeout(t,e)),h--;continue}if(s?.debug?.("RETRY",`${t.status}, Retry-After ${r?`too long (${Math.ceil(r/1e3)}s)`:"missing"}, trying fallback`),d=t.status,h+1<l)continue}if(this.shouldRetry(t.status,h)){s?.debug?.("RETRY",`${t.status} on ${f}, trying fallback ${h+1}`),d=t.status;continue}if(t.status===o.HTTP_STATUS.RATE_LIMITED&&r&&r>6e4)try{let e,o=await t.clone().text();try{e=JSON.parse(o)}catch{e={}}e.retryAfterMs=r;let n=JSON.stringify(e);return{response:new Response(n,{status:t.status,headers:t.headers}),url:f,headers:m,transformedBody:y}}catch(e){s?.warn?.("RETRY",`Failed to embed retryAfterMs: ${e}`)}if(!n)return this.collectStreamToResponse(t,e,f,m,y,s,i);return{response:t,url:f,headers:m,transformedBody:y}}catch(e){if(u=e,h+1<l){s?.debug?.("RETRY",`Error on ${f}, trying fallback ${h+1}`);continue}throw e}}throw u||Error(`All ${l} URLs failed with status ${d}`)}}e.s(["AntigravityExecutor",0,a])},973033,e=>{"use strict";var t=e.i(503536),r=e.i(359281);let o=new Map,n=new Map;class a extends t.BaseExecutor{constructor(){super("gemini-cli",r.PROVIDERS["gemini-cli"])}buildUrl(e,t,r=0){return`${this.config.baseUrl}:${t?"streamGenerateContent?alt=sse":"generateContent"}`}buildHeaders(e,t=!0){return{"Content-Type":"application/json",Authorization:`Bearer ${e.accessToken}`,"User-Agent":"GeminiCLI/0.31.0/unknown (linux; x64)","X-Goog-Api-Client":"google-genai-sdk/1.41.0 gl-node/v22.19.0",...t&&{Accept:"text/event-stream"}}}async refreshProject(e){let t=o.get(e);if(t&&t.expiresAt>Date.now())return t.projectId;let r=n.get(e);if(r)return r;let a=this._doRefresh(e);n.set(e,a);try{return await a}finally{n.delete(e)}}async _doRefresh(e){try{let t,r=new AbortController,n=setTimeout(()=>r.abort(),1e4);try{t=await fetch("https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json"},body:JSON.stringify({metadata:{ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"}}),signal:r.signal})}finally{clearTimeout(n)}if(!t.ok)return console.warn(`[OmniRoute] loadCodeAssist returned ${t.status} — falling back to stored projectId`),null;let a=await t.json(),i="";if("string"==typeof a.cloudaicompanionProject?i=a.cloudaicompanionProject.trim():"string"==typeof a.cloudaicompanionProject?.id&&(i=a.cloudaicompanionProject.id.trim()),!i)return console.warn("[OmniRoute] loadCodeAssist returned no project — falling back to stored projectId"),null;if(o.size>=100){let e=Date.now();for(let[t,r]of o)r.expiresAt<=e&&o.delete(t);if(o.size>=100){let e=o.keys().next().value;void 0!==e&&o.delete(e)}}return o.set(e,{projectId:i,expiresAt:Date.now()+3e4}),i}catch(t){let e=t instanceof Error?t.message:String(t);return console.warn(`[OmniRoute] loadCodeAssist failed (${e}) — falling back to stored projectId`),null}}async transformRequest(e,t,r,o){if(t&&"object"==typeof t&&t.request&&o.accessToken){let e=await this.refreshProject(o.accessToken);e&&(t.project=e)}return t}async refreshCredentials(e,t){if(!e.refreshToken)return null;try{let o=await fetch(r.OAUTH_ENDPOINTS.google.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:e.refreshToken,client_id:this.config.clientId,client_secret:this.config.clientSecret})});if(!o.ok)return null;let n=await o.json();return t?.info?.("TOKEN","Gemini CLI refreshed"),{accessToken:n.access_token,refreshToken:n.refresh_token||e.refreshToken,expiresIn:n.expires_in,projectId:e.projectId}}catch(e){return t?.error?.("TOKEN",`Gemini CLI refresh error: ${e.message}`),null}}}e.s(["GeminiCLIExecutor",0,a])},714796,e=>{"use strict";var t=e.i(503536),r=e.i(359281),o=e.i(588617);class n extends t.BaseExecutor{constructor(){super("github",r.PROVIDERS.github)}buildUrl(e,t,r=0){return"openai-responses"===(0,o.getModelTargetFormat)("gh",e)?this.config.responsesBaseUrl||this.config.baseUrl?.replace(/\/chat\/completions\/?$/,"/responses")||"https://api.githubcopilot.com/responses":this.config.baseUrl}injectResponseFormat(e,t){if(!t)return e;let r="";if("json_object"===t.type?r="Respond only with valid JSON. Do not include any text before or after the JSON object.":"json_schema"===t.type&&t.json_schema&&(r=`Respond only with valid JSON matching this schema:
|
|
2
|
+
${e}`),Error(`Provider validation failed for ${t}`)}}]),r()}catch(e){r(e)}},!1),738629,e=>e.a(async(t,r)=>{try{var o=e.i(393357),n=t([o]);[o]=n.then?(await n)():n;let a={qoder:{id:"qoder",alias:"if",name:"Qoder AI",icon:"water_drop",color:"#6366F1"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gemini-cli",name:"Gemini CLI",icon:"terminal",color:"#4285F4",deprecated:!0,deprecationReason:"Google restricts third-party OAuth usage for Gemini CLI (Mar 2026). Pro models require paid plans. Use 'gemini' (API key) provider instead."},kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"}},i={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:void 0,name:"Antigravity",icon:"rocket_launch",color:"#F59E0B"},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6"},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},"kimi-coding":{id:"kimi-coding",alias:"kmc",name:"Kimi Coding",icon:"psychology",color:"#1E40AF",textIcon:"KC"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},s={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai"},glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},"bailian-coding-plan":{id:"bailian-coding-plan",alias:"bcp",name:"Alibaba Coding Plan",icon:"code",color:"#FF6A00",textIcon:"BCP",website:"https://www.alibabacloud.com/help/en/model-studio/coding-plan"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},"kimi-coding-apikey":{id:"kimi-coding-apikey",alias:"kmca",name:"Kimi Coding (API Key)",icon:"psychology",color:"#1E40AF",textIcon:"KC",website:"https://kimi.com"},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com"},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},alicode:{id:"alicode",alias:"alicode",name:"Alibaba",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://bailian.console.aliyun.com"},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://modelstudio.console.alibabacloud.com"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com"},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com"},gemini:{id:"gemini",alias:"gemini",name:"Gemini (Google AI Studio)",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev",hasFree:!0,freeNote:"Free forever: 1,500 req/day for Gemini 2.5 Flash — no credit card, get key at aistudio.google.com"},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com",hasFree:!0,freeNote:"Free tier: 30 RPM / 14.4K RPD — no credit card"},blackbox:{id:"blackbox",alias:"bb",name:"Blackbox AI",icon:"view_in_ar",color:"#1A1A2E",textIcon:"BB",website:"https://blackbox.ai"},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai"},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai"},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai"},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai",hasFree:!0,freeNote:"$25 signup credits + 3 permanently free models: Llama 3.3 70B, Vision, DeepSeek-R1 distill"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://inference.cerebras.ai",hasFree:!0,freeNote:"Free: 1M tokens/day, 60K TPM — world's fastest inference"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://build.nvidia.com",hasFree:!0,freeNote:"Free dev access: ~40 RPM, 70+ models (Kimi K2.5, GLM 4.7, DeepSeek V3.2...)"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com"},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com"},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai"},"ollama-cloud":{id:"ollama-cloud",alias:"ollamacloud",name:"Ollama Cloud",icon:"cloud",color:"#58A6FF",textIcon:"OC",website:"https://ollama.com/settings/api-keys"},elevenlabs:{id:"elevenlabs",alias:"el",name:"ElevenLabs",icon:"record_voice_over",color:"#6C47FF",textIcon:"EL",website:"https://elevenlabs.io"},cartesia:{id:"cartesia",alias:"cartesia",name:"Cartesia",icon:"spatial_audio",color:"#FF4F8B",textIcon:"CA",website:"https://cartesia.ai"},playht:{id:"playht",alias:"playht",name:"PlayHT",icon:"play_circle",color:"#00B4D8",textIcon:"PH",website:"https://play.ht"},inworld:{id:"inworld",alias:"inworld",name:"Inworld",icon:"voice_chat",color:"#7B2EF2",textIcon:"IW",website:"https://inworld.ai"},sdwebui:{id:"sdwebui",alias:"sdwebui",name:"SD WebUI",icon:"brush",color:"#FF7043",textIcon:"SD",website:"https://github.com/AUTOMATIC1111/stable-diffusion-webui"},comfyui:{id:"comfyui",alias:"comfyui",name:"ComfyUI",icon:"account_tree",color:"#4CAF50",textIcon:"CF",website:"https://github.com/comfyanonymous/ComfyUI"},huggingface:{id:"huggingface",alias:"hf",name:"HuggingFace",icon:"face",color:"#FFD21E",textIcon:"HF",website:"https://huggingface.co",hasFree:!0,freeNote:"Free Inference API for thousands of models (Whisper, VITS, SDXL…)"},synthetic:{id:"synthetic",alias:"synthetic",name:"Synthetic",icon:"verified_user",color:"#6366F1",textIcon:"SY",website:"https://synthetic.new",passthroughModels:!0},"kilo-gateway":{id:"kilo-gateway",alias:"kg",name:"Kilo Gateway",icon:"hub",color:"#617A91",textIcon:"KG",website:"https://kilo.ai",passthroughModels:!0},vertex:{id:"vertex",alias:"vertex",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VA",website:"https://cloud.google.com/vertex-ai",authHint:"Provide Service Account JSON or OAuth access_token"},zai:{id:"zai",alias:"zai",name:"Z.AI",icon:"psychology",color:"#2563EB",textIcon:"ZA",website:"https://open.bigmodel.cn",apiHint:"API key from https://open.bigmodel.cn/usercenter/apikeys"},"perplexity-search":{id:"perplexity-search",alias:"pplx-search",name:"Perplexity Search",icon:"search",color:"#20808D",textIcon:"PS",website:"https://docs.perplexity.ai/guides/search-quickstart",authHint:"Same API key as Perplexity (pplx-...)"},"serper-search":{id:"serper-search",alias:"serper-search",name:"Serper Search",icon:"search",color:"#4285F4",textIcon:"SP",website:"https://serper.dev",authHint:"API key from serper.dev dashboard"},"brave-search":{id:"brave-search",alias:"brave-search",name:"Brave Search",icon:"travel_explore",color:"#FB542B",textIcon:"BR",website:"https://brave.com/search/api",authHint:"Subscription token from Brave Search API dashboard"},"exa-search":{id:"exa-search",alias:"exa-search",name:"Exa Search",icon:"neurology",color:"#1E40AF",textIcon:"EX",website:"https://exa.ai",authHint:"API key from dashboard.exa.ai"},"tavily-search":{id:"tavily-search",alias:"tavily-search",name:"Tavily Search",icon:"manage_search",color:"#5B4FDB",textIcon:"TV",website:"https://tavily.com",authHint:"API key from app.tavily.com (format: tvly-...)"},"opencode-zen":{id:"opencode-zen",alias:"opencode-zen",name:"OpenCode Zen",icon:"opencode",color:"#6366f1",website:"https://opencode.ai/zen"},"opencode-go":{id:"opencode-go",alias:"opencode-go",name:"OpenCode Go",icon:"opencode",color:"#6366f1",website:"https://opencode.ai/zen/go"},alibaba:{id:"alibaba",alias:"ali",name:"Alibaba Cloud (DashScope)",icon:"cloud_queue",color:"#FF6600",textIcon:"AL",website:"https://dashscope-intl.aliyuncs.com",hasFree:!1},longcat:{id:"longcat",alias:"lc",name:"LongCat AI",icon:"auto_awesome",color:"#FF6B9D",textIcon:"LC",website:"https://longcat.chat",hasFree:!0,freeNote:"50M tokens/day (Flash-Lite) + 500K/day (Chat/Thinking) — 100% free while public beta"},pollinations:{id:"pollinations",alias:"pol",name:"Pollinations AI",icon:"local_florist",color:"#4CAF50",textIcon:"PO",website:"https://pollinations.ai",hasFree:!0,freeNote:"No API key needed — access GPT-5, Claude, Gemini, DeepSeek V3, Llama 4 free (1 req/15s)"},puter:{id:"puter",alias:"pu",name:"Puter AI",icon:"cloud_circle",color:"#6366F1",textIcon:"PU",website:"https://puter.com",hasFree:!0,freeNote:"500+ models (GPT-5, Claude Opus 4, Gemini 3 Pro, Grok 4, DeepSeek V3...) — Users pay via free Puter account",passthroughModels:!0,authHint:"Get token at puter.com/dashboard → Copy Auth Token"},"cloudflare-ai":{id:"cloudflare-ai",alias:"cf",name:"Cloudflare Workers AI",icon:"cloud",color:"#F48120",textIcon:"CF",website:"https://developers.cloudflare.com/workers-ai/",hasFree:!0,freeNote:"Free 10K Neurons/day: ~150 LLM responses or 500s Whisper audio — edge inference globally",authHint:"Requires API Token AND Account ID (found at dash.cloudflare.com)"},scaleway:{id:"scaleway",alias:"scw",name:"Scaleway AI",icon:"cloud",color:"#4F0599",textIcon:"SCW",website:"https://www.scaleway.com/en/ai/generative-apis/",hasFree:!0,freeNote:"1M free tokens for new accounts — EU/GDPR compliant (Paris), Qwen3 235B & Llama 70B"},aimlapi:{id:"aimlapi",alias:"aiml",name:"AI/ML API",icon:"hub",color:"#6366F1",textIcon:"AI",website:"https://aimlapi.com",hasFree:!0,freeNote:"$0.025/day free credits — 200+ models (GPT-4o, Claude, Gemini, Llama) via single endpoint",passthroughModels:!0},novita:{id:"novita",alias:"novita",name:"Novita AI",icon:"auto_awesome",color:"#FF4081",textIcon:"NV",website:"https://novita.ai",passthroughModels:!0},piapi:{id:"piapi",alias:"pi",name:"PiAPI",icon:"api",color:"#7C4DFF",textIcon:"PI",website:"https://piapi.ai",passthroughModels:!0},getgoapi:{id:"getgoapi",alias:"ggo",name:"GoAPI",icon:"rocket_launch",color:"#FF6D00",textIcon:"GO",website:"https://api.getgoapi.com",passthroughModels:!0},laozhang:{id:"laozhang",alias:"lz",name:"LaoZhang AI",icon:"hub",color:"#FF1744",textIcon:"LZ",website:"https://api.laozhang.ai",passthroughModels:!0}},c={...a,...i,...s,cliproxyapi:{id:"cliproxyapi",alias:"cpa",name:"CLIProxyAPI",icon:"proxy",color:"#6366F1",textIcon:"CPA",website:"https://github.com/router-for-me/CLIProxyAPI",defaultPort:8317,healthEndpoint:"/v1/models",managementPrefix:"/v0/management",configDir:"~/.cli-proxy-api",binaryName:"cli-proxy-api",githubRepo:"router-for-me/CLIProxyAPI"}};Object.values(c).reduce((e,t)=>(t.alias&&(e[t.alias]=t.id),e),{}),Object.values(c).reduce((e,t)=>(e[t.id]=t.alias||t.id,e),{}),(0,o.validateProviders)(a,"FREE_PROVIDERS"),(0,o.validateProviders)(i,"OAUTH_PROVIDERS"),(0,o.validateProviders)(s,"APIKEY_PROVIDERS"),e.s(["USAGE_SUPPORTED_PROVIDERS",0,["antigravity","gemini-cli","kiro","github","codex","claude","kimi-coding","glm"]]),r()}catch(e){r(e)}},!1),606062,e=>{"use strict";var t=e.i(254799),r=e.i(503536),o=e.i(359281);let n=new Set(["gemini-3.1-pro"]);class a extends r.BaseExecutor{constructor(){super("antigravity",o.PROVIDERS.antigravity)}buildUrl(e,t,r=0){let o=this.getBaseUrls(),n=o[r]||o[0];return`${n}/v1internal:streamGenerateContent?alt=sse`}buildHeaders(e,t=!0){return{"Content-Type":"application/json",Authorization:`Bearer ${e.accessToken}`,"User-Agent":this.config.headers?.["User-Agent"]||"antigravity/1.104.0 darwin/arm64","X-OmniRoute-Source":"omniroute",Accept:"text/event-stream"}}transformRequest(e,r,o,a){let i=r?.project,s=a?.projectId,c="1"===process.env.OMNIROUTE_ALLOW_BODY_PROJECT_OVERRIDE&&i?i:s||i;if(!c)return new Response(JSON.stringify({error:{message:"Missing Google projectId for Antigravity account. Please reconnect OAuth in Providers → Antigravity so OmniRoute can fetch your Cloud Code project.",type:"oauth_missing_project_id",code:"missing_project_id"}}),{status:422,headers:{"Content-Type":"application/json"}});let l=(r.request?.contents?.map(e=>{let t=e.role;e.parts?.some(e=>e.functionResponse)&&(t="user");let r=e.parts?.filter(e=>!e.thought&&!e.thoughtSignature)||[];return{...e,role:t,parts:r}})||[]).filter(e=>!Array.isArray(e.parts)||e.parts.length>0),u={...r.request,...l.length>0&&{contents:l},sessionId:r.request?.sessionId||this.generateSessionId(),safetySettings:void 0,toolConfig:r.request?.tools?.length>0?{functionCallingConfig:{mode:"VALIDATED"}}:r.request?.toolConfig},d=function(e){if(!e)return e;let t=e.includes("/")?e.split("/").pop():e;return n.has(t)&&(t=`${t}-low`),t}(e);return{...r,project:c,model:d,userAgent:"antigravity",requestType:"agent",requestId:`agent-${t.default.randomUUID()}`,request:u}}async refreshCredentials(e,t){if(!e.refreshToken)return null;try{let r=await fetch(o.OAUTH_ENDPOINTS.google.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:e.refreshToken,client_id:this.config.clientId,client_secret:this.config.clientSecret})});if(!r.ok)return null;let n=await r.json();return t?.info?.("TOKEN","Antigravity refreshed"),{accessToken:n.access_token,refreshToken:n.refresh_token||e.refreshToken,expiresIn:n.expires_in,projectId:e.projectId}}catch(e){return t?.error?.("TOKEN",`Antigravity refresh error: ${e.message}`),null}}generateSessionId(){return`-${parseInt((0,t.randomUUID)().replace(/-/g,"").substring(0,8),16)%9e18}`}parseRetryHeaders(e){if(!e?.get)return null;let t=e.get("retry-after");if(t){let e=parseInt(t,10);if(!isNaN(e)&&e>0)return 1e3*e;let r=new Date(t);if(!isNaN(r.getTime())){let e=r.getTime()-Date.now();return e>0?e:null}}let r=e.get("x-ratelimit-reset-after");if(r){let e=parseInt(r,10);if(!isNaN(e)&&e>0)return 1e3*e}let o=e.get("x-ratelimit-reset");if(o){let e=1e3*parseInt(o,10)-Date.now();return e>0?e:null}return null}parseRetryFromErrorMessage(e){if(!e||"string"!=typeof e)return null;let t=e.match(/reset (?:after|in) (\d+h)?(\d+m)?(\d+s)?/i);if(!t)return null;let r=0;return t[1]&&(r+=3600*parseInt(t[1])*1e3),t[2]&&(r+=60*parseInt(t[2])*1e3),t[3]&&(r+=1e3*parseInt(t[3])),r>0?r:null}collectStreamToResponse(e,r,o,n,a,i,s){let c=e.body.getReader(),l=new TextDecoder;return(async()=>{let u=[],d=!1,p=AbortSignal.timeout(12e4);try{for(;;){if(s?.aborted)throw Error("Request aborted during SSE collection");let{done:e,value:t}=await Promise.race([c.read(),new Promise((e,t)=>p.addEventListener("abort",()=>t(Error("SSE collection timed out")),{once:!0}))]);if(e)break;u.push(l.decode(t,{stream:!0}))}}catch(t){let e=t?.message||String(t);d=e.includes("timed out"),i?.warn?.("SSE_COLLECT",`Error collecting SSE stream: ${e}`)}let h=u.join(""),f="",m="stop",y=null;for(let e of h.split("\n")){let t=e.trim();if(!t.startsWith("data:"))continue;let r=t.slice(5).trim();if(r&&"[DONE]"!==r)try{let e=JSON.parse(r),t=e?.response?.candidates?.[0];if(t?.content?.parts)for(let e of t.content.parts)"string"!=typeof e.text||e.thought||e.thoughtSignature||(f+=e.text);if(t?.finishReason&&(m="stop"===t.finishReason.toLowerCase()?"stop":t.finishReason.toLowerCase()),e?.response?.usageMetadata){let t=e.response.usageMetadata;y={prompt_tokens:t.promptTokenCount||0,completion_tokens:t.candidatesTokenCount||0,total_tokens:t.totalTokenCount||0}}}catch(e){i?.debug?.("SSE_PARSE",`Skipping malformed SSE line: ${r.slice(0,80)}`)}}let g={id:`chatcmpl-${Date.now()}-${t.default.randomUUID().slice(0,8)}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:r,choices:[{index:0,message:{role:"assistant",content:f},finish_reason:d?"length":m}],...y&&{usage:y}},S=d?504:e.status;return{response:new Response(JSON.stringify(g),{status:S,statusText:d?"Gateway Timeout":e.statusText,headers:[["Content-Type","application/json"]]}),url:o,headers:n,transformedBody:a}})()}async execute({model:e,body:t,stream:n,credentials:a,signal:i,log:s,upstreamExtraHeaders:c}){let l=this.getFallbackCount(),u=null,d=0,p={};for(let h=0;h<l;h++){let f=this.buildUrl(e,!0,h),m=this.buildHeaders(a,!0);(0,r.mergeUpstreamExtraHeaders)(m,c);let y=await this.transformRequest(e,t,!0,a);p[h]||(p[h]=0);try{let t=await fetch(f,{method:"POST",headers:m,body:JSON.stringify(y),signal:i}),r=null;if(t.status===o.HTTP_STATUS.RATE_LIMITED||t.status===o.HTTP_STATUS.SERVICE_UNAVAILABLE){if(!(r=this.parseRetryHeaders(t.headers)))try{let e=await t.clone().text(),o=JSON.parse(e),n=o?.error?.message||o?.message||"";if(!(r=this.parseRetryFromErrorMessage(n))){let e=n.toLowerCase();e.includes("free tier")||e.includes("exhausted your capacity")||e.includes("daily limit")||e.includes("quota exceeded")?r=864e5:(e.includes("pro")||e.includes("per minute")||e.includes("rpm"))&&(r=6e4)}}catch(e){}if(r&&r<=6e4){let e=Math.min(r,6e4);s?.debug?.("RETRY",`${t.status} with Retry-After: ${Math.ceil(e/1e3)}s, waiting...`),await new Promise(t=>setTimeout(t,e)),h--;continue}if(t.status===o.HTTP_STATUS.RATE_LIMITED&&(!r||0===r)&&p[h]<3){p[h]++;let e=Math.min(1e3*2**p[h],6e4);s?.debug?.("RETRY",`429 auto retry ${p[h]}/3 after ${e/1e3}s`),await new Promise(t=>setTimeout(t,e)),h--;continue}if(s?.debug?.("RETRY",`${t.status}, Retry-After ${r?`too long (${Math.ceil(r/1e3)}s)`:"missing"}, trying fallback`),d=t.status,h+1<l)continue}if(this.shouldRetry(t.status,h)){s?.debug?.("RETRY",`${t.status} on ${f}, trying fallback ${h+1}`),d=t.status;continue}if(t.status===o.HTTP_STATUS.RATE_LIMITED&&r&&r>6e4)try{let e,o=await t.clone().text();try{e=JSON.parse(o)}catch{e={}}e.retryAfterMs=r;let n=JSON.stringify(e);return{response:new Response(n,{status:t.status,headers:t.headers}),url:f,headers:m,transformedBody:y}}catch(e){s?.warn?.("RETRY",`Failed to embed retryAfterMs: ${e}`)}if(!n)return this.collectStreamToResponse(t,e,f,m,y,s,i);return{response:t,url:f,headers:m,transformedBody:y}}catch(e){if(u=e,h+1<l){s?.debug?.("RETRY",`Error on ${f}, trying fallback ${h+1}`);continue}throw e}}throw u||Error(`All ${l} URLs failed with status ${d}`)}}e.s(["AntigravityExecutor",0,a])},973033,e=>{"use strict";var t=e.i(503536),r=e.i(359281);let o=new Map,n=new Map;class a extends t.BaseExecutor{constructor(){super("gemini-cli",r.PROVIDERS["gemini-cli"])}buildUrl(e,t,r=0){return`${this.config.baseUrl}:${t?"streamGenerateContent?alt=sse":"generateContent"}`}buildHeaders(e,t=!0){return{"Content-Type":"application/json",Authorization:`Bearer ${e.accessToken}`,"User-Agent":"GeminiCLI/0.31.0/unknown (linux; x64)","X-Goog-Api-Client":"google-genai-sdk/1.41.0 gl-node/v22.19.0",...t&&{Accept:"text/event-stream"}}}async refreshProject(e){let t=o.get(e);if(t&&t.expiresAt>Date.now())return t.projectId;let r=n.get(e);if(r)return r;let a=this._doRefresh(e);n.set(e,a);try{return await a}finally{n.delete(e)}}async _doRefresh(e){try{let t,r=new AbortController,n=setTimeout(()=>r.abort(),1e4);try{t=await fetch("https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json"},body:JSON.stringify({metadata:{ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"}}),signal:r.signal})}finally{clearTimeout(n)}if(!t.ok)return console.warn(`[OmniRoute] loadCodeAssist returned ${t.status} — falling back to stored projectId`),null;let a=await t.json(),i="";if("string"==typeof a.cloudaicompanionProject?i=a.cloudaicompanionProject.trim():"string"==typeof a.cloudaicompanionProject?.id&&(i=a.cloudaicompanionProject.id.trim()),!i)return console.warn("[OmniRoute] loadCodeAssist returned no project — falling back to stored projectId"),null;if(o.size>=100){let e=Date.now();for(let[t,r]of o)r.expiresAt<=e&&o.delete(t);if(o.size>=100){let e=o.keys().next().value;void 0!==e&&o.delete(e)}}return o.set(e,{projectId:i,expiresAt:Date.now()+3e4}),i}catch(t){let e=t instanceof Error?t.message:String(t);return console.warn(`[OmniRoute] loadCodeAssist failed (${e}) — falling back to stored projectId`),null}}async transformRequest(e,t,r,o){if(t&&"object"==typeof t&&t.request&&o.accessToken){let e=await this.refreshProject(o.accessToken);e&&(t.project=e)}return t}async refreshCredentials(e,t){if(!e.refreshToken)return null;try{let o=await fetch(r.OAUTH_ENDPOINTS.google.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:e.refreshToken,client_id:this.config.clientId,client_secret:this.config.clientSecret})});if(!o.ok)return null;let n=await o.json();return t?.info?.("TOKEN","Gemini CLI refreshed"),{accessToken:n.access_token,refreshToken:n.refresh_token||e.refreshToken,expiresIn:n.expires_in,projectId:e.projectId}}catch(e){return t?.error?.("TOKEN",`Gemini CLI refresh error: ${e.message}`),null}}}e.s(["GeminiCLIExecutor",0,a])},714796,e=>{"use strict";var t=e.i(503536),r=e.i(359281),o=e.i(588617);class n extends t.BaseExecutor{constructor(){super("github",r.PROVIDERS.github)}buildUrl(e,t,r=0){return"openai-responses"===(0,o.getModelTargetFormat)("gh",e)?this.config.responsesBaseUrl||this.config.baseUrl?.replace(/\/chat\/completions\/?$/,"/responses")||"https://api.githubcopilot.com/responses":this.config.baseUrl}injectResponseFormat(e,t){if(!t)return e;let r="";if("json_object"===t.type?r="Respond only with valid JSON. Do not include any text before or after the JSON object.":"json_schema"===t.type&&t.json_schema&&(r=`Respond only with valid JSON matching this schema:
|
|
3
3
|
${JSON.stringify(t.json_schema.schema,null,2)}
|
|
4
4
|
Do not include any text before or after the JSON.`),!r)return e;let o=e.findIndex(e=>"system"===e.role);return o>=0?e.map((e,t)=>t===o?{...e,content:`${e.content}
|
|
5
5
|
|
|
@@ -39,6 +39,6 @@ ${o}`.trim()}(e);t&&r.push(t)}return r.push("Reply now with the assistant respon
|
|
|
39
39
|
|
|
40
40
|
`);let E=(0,i.estimateUsage)(r,d.length,s.FORMATS.OPENAI);return l.push(`data: ${JSON.stringify({id:o,object:"chat.completion.chunk",created:c,model:t,choices:[{index:0,delta:{},finish_reason:f.length>0?"tool_calls":"stop"}],usage:E})}
|
|
41
41
|
|
|
42
|
-
`),l.push("data: [DONE]\n\n"),new Response(l.join(""),{status:200,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}async refreshCredentials(){return null}}e.s(["CursorExecutor",0,g]),r()}catch(e){r(e)}},!0),585296,e=>{"use strict";var t=e.i(503536),r=e.i(359281),o=e.i(191051),n=e.i(900930),a=e.i(610766),i=e.i(457858);class s extends t.BaseExecutor{constructor(e){super(e,r.PROVIDERS[e]||r.PROVIDERS.openai)}buildUrl(e,t,r=0,o=null){if(this.provider?.startsWith?.("openai-compatible-")){let e=o?.providerSpecificData,t=(e?.baseUrl||"https://api.openai.com/v1").replace(/\/$/,""),r="string"==typeof e?.chatPath&&e.chatPath?e.chatPath:null;if(r)return`${t}${r}`;let n=this.provider.includes("responses")?"/responses":"/chat/completions";return`${t}${n}`}if(this.provider?.startsWith?.("anthropic-compatible-")){let e=o?.providerSpecificData,t=e?.baseUrl||"https://api.anthropic.com/v1",r="string"==typeof e?.chatPath&&e.chatPath?e.chatPath:null;if((0,i.isClaudeCodeCompatible)(this.provider))return(0,a.joinClaudeCodeCompatibleUrl)(t,r||a.CLAUDE_CODE_COMPATIBLE_DEFAULT_CHAT_PATH);let n=t.replace(/\/$/,"");return`${n}${r||"/messages"}`}switch(this.provider){case"claude":case"glm":case"kimi-coding":case"minimax":case"minimax-cn":return`${this.config.baseUrl}?beta=true`;case"gemini":return`${this.config.baseUrl}/${e}:${t?"streamGenerateContent?alt=sse":"generateContent"}`;case"qwen":{let e=o?.providerSpecificData?.resourceUrl;return`https://${e||"portal.qwen.ai"}/v1/chat/completions`}default:return this.config.baseUrl}}buildHeaders(e,t=!0){let r={"Content-Type":"application/json",...this.config.headers},o=e.providerSpecificData?.extraApiKeys??[],s=o.length>0&&e.connectionId&&e.apiKey?(0,n.getRotatingApiKey)(e.connectionId,e.apiKey,o):e.apiKey;switch(this.provider){case"gemini":s?r["x-goog-api-key"]=s:r.Authorization=`Bearer ${e.accessToken}`;break;case"claude":s?r["x-api-key"]=s:r.Authorization=`Bearer ${e.accessToken}`;break;case"glm":case"kimi-coding":case"bailian-coding-plan":case"kimi-coding-apikey":case"minimax":case"minimax-cn":r["x-api-key"]=s||e.accessToken;break;default:if((0,i.isClaudeCodeCompatible)(this.provider))return(0,a.buildClaudeCodeCompatibleHeaders)(s||e.accessToken||"",t,e?.providerSpecificData?.ccSessionId);this.provider?.startsWith?.("anthropic-compatible-")?(s?r["x-api-key"]=s:e.accessToken&&(r.Authorization=`Bearer ${e.accessToken}`),r["anthropic-version"]||(r["anthropic-version"]="2023-06-01")):r.Authorization=`Bearer ${s||e.accessToken}`}return t&&(r.Accept="text/event-stream"),r}transformRequest(e,t,r,o){return t}async refreshCredentials(e,t){if(!e.refreshToken)return null;try{return await (0,o.getAccessToken)(this.provider,e,t)}catch(e){return t?.error?.("TOKEN",`${this.provider} refresh error: ${e.message}`),null}}}e.s(["DefaultExecutor",0,s])},43180,e=>{"use strict";var t=e.i(503536),r=e.i(359281);class o extends t.BaseExecutor{constructor(){super("pollinations",r.PROVIDERS.pollinations||{format:"openai"})}buildUrl(e,t,r=0,o=null){return"https://text.pollinations.ai/openai/chat/completions"}buildHeaders(e,t=!0){let r={"Content-Type":"application/json"},o=e?.apiKey||e?.accessToken;return o&&(r.Authorization=`Bearer ${o}`),t&&(r.Accept="text/event-stream"),r}transformRequest(e,t,r,o){return t}}e.s(["PollinationsExecutor",0,o])},409400,e=>{"use strict";var t=e.i(503536),r=e.i(359281);class o extends t.BaseExecutor{constructor(){super("cloudflare-ai",r.PROVIDERS["cloudflare-ai"]||{format:"openai"})}buildUrl(e,t,r=0,o=null){let n=o?.providerSpecificData?.accountId||o?.accountId||process.env.CLOUDFLARE_ACCOUNT_ID;if(!n)throw Error("Cloudflare Workers AI requires an Account ID. Add it in provider settings under 'Account ID'. Find it at: https://dash.cloudflare.com (right sidebar).");return`https://api.cloudflare.com/client/v4/accounts/${n}/ai/v1/chat/completions`}buildHeaders(e,t=!0){let r={"Content-Type":"application/json",Authorization:`Bearer ${e.apiKey||e.accessToken}`};return t&&(r.Accept="text/event-stream"),r}transformRequest(e,t,r,o){return t}}e.s(["CloudflareAIExecutor",0,o])},398983,e=>{"use strict";var t=e.i(503536),r=e.i(359281),o=e.i(588617);class n extends t.BaseExecutor{_requestFormat=null;constructor(e){super(e,r.PROVIDERS[e]||r.PROVIDERS.openai)}async execute(e){this._requestFormat=(0,o.getModelTargetFormat)(this.provider,e.model)||"openai";try{return await super.execute(e)}finally{this._requestFormat=null}}buildUrl(e,t,r=0,o=null){let n=this.config.baseUrl;switch(this._requestFormat){case"claude":return`${n}/messages`;case"openai-responses":return`${n}/responses`;case"gemini":return`${n}/models/${e}:${t?"streamGenerateContent?alt=sse":"generateContent"}`;default:return`${n}/chat/completions`}}buildHeaders(e,t=!0){let r={"Content-Type":"application/json"},o=e?.apiKey||e?.accessToken;return o&&("claude"===this._requestFormat?r["x-api-key"]=o:r.Authorization=`Bearer ${o}`),"claude"===this._requestFormat&&(r["anthropic-version"]="2023-06-01"),t&&(r.Accept="text/event-stream"),r}}e.s(["OpencodeExecutor",0,n])},201949,e=>{"use strict";var t=e.i(503536),r=e.i(359281);class o extends t.BaseExecutor{constructor(){super("puter",r.PROVIDERS.puter||{format:"openai"})}buildUrl(e,t,r=0,o=null){return"https://api.puter.com/puterai/openai/v1/chat/completions"}buildHeaders(e,t=!0){let r={"Content-Type":"application/json"},o=e?.apiKey||e?.accessToken;return o&&(r.Authorization=`Bearer ${o}`),t&&(r.Accept="text/event-stream"),r}transformRequest(e,t,r,o){return t}}e.s(["PuterExecutor",0,o])},482770,e=>{"use strict";let t,r=new TextEncoder,o=new TextDecoder;function n(e){let t=new Uint8Array(e.length);for(let r=0;r<e.length;r++){let o=e.charCodeAt(r);if(o>127)throw TypeError("non-ASCII string encountered in encode()");t[r]=o}return t}function a(e){if(Uint8Array.fromBase64)return Uint8Array.fromBase64(e);let t=atob(e),r=new Uint8Array(t.length);for(let e=0;e<t.length;e++)r[e]=t.charCodeAt(e);return r}function i(e){let t=e;return("string"==typeof t&&(t=r.encode(t)),Uint8Array.prototype.toBase64)?t.toBase64({alphabet:"base64url",omitPadding:!0}):(function(e){if(Uint8Array.prototype.toBase64)return e.toBase64();let t=[];for(let r=0;r<e.length;r+=32768)t.push(String.fromCharCode.apply(null,e.subarray(r,r+32768)));return btoa(t.join(""))})(t).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}class s extends Error{static code="ERR_JOSE_GENERIC";code="ERR_JOSE_GENERIC";constructor(e,t){super(e,t),this.name=this.constructor.name,Error.captureStackTrace?.(this,this.constructor)}}class c extends s{static code="ERR_JOSE_NOT_SUPPORTED";code="ERR_JOSE_NOT_SUPPORTED"}class l extends s{static code="ERR_JWS_INVALID";code="ERR_JWS_INVALID"}class u extends s{static code="ERR_JWT_INVALID";code="ERR_JWT_INVALID"}class d extends s{[Symbol.asyncIterator];static code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";constructor(e="multiple matching keys found in the JSON Web Key Set",t){super(e,t)}}let p=(e,t="algorithm.name")=>TypeError(`CryptoKey does not support this operation, its ${t} must be ${e}`);function h(e,t){if(parseInt(e.hash.name.slice(4),10)!==t)throw p(`SHA-${t}`,"algorithm.hash")}function f(e,t,...r){if((r=r.filter(Boolean)).length>2){let t=r.pop();e+=`one of type ${r.join(", ")}, or ${t}.`}else 2===r.length?e+=`one of type ${r[0]} or ${r[1]}.`:e+=`of type ${r[0]}.`;return null==t?e+=` Received ${t}`:"function"==typeof t&&t.name?e+=` Received function ${t.name}`:"object"==typeof t&&null!=t&&t.constructor?.name&&(e+=` Received an instance of ${t.constructor.name}`),e}let m=(e,t,...r)=>f(`Key for the ${e} algorithm must be `,t,...r);async function y(e,t,r){if(t instanceof Uint8Array){if(!e.startsWith("HS"))throw TypeError(((e,...t)=>f("Key must be ",e,...t))(t,"CryptoKey","KeyObject","JSON Web Key"));return crypto.subtle.importKey("raw",t,{hash:`SHA-${e.slice(-3)}`,name:"HMAC"},!1,[r])}return!function(e,t,r){switch(t){case"HS256":case"HS384":case"HS512":if("HMAC"!==e.algorithm.name)throw p("HMAC");h(e.algorithm,parseInt(t.slice(2),10));break;case"RS256":case"RS384":case"RS512":if("RSASSA-PKCS1-v1_5"!==e.algorithm.name)throw p("RSASSA-PKCS1-v1_5");h(e.algorithm,parseInt(t.slice(2),10));break;case"PS256":case"PS384":case"PS512":if("RSA-PSS"!==e.algorithm.name)throw p("RSA-PSS");h(e.algorithm,parseInt(t.slice(2),10));break;case"Ed25519":case"EdDSA":if("Ed25519"!==e.algorithm.name)throw p("Ed25519");break;case"ML-DSA-44":case"ML-DSA-65":case"ML-DSA-87":let o;if(o=e.algorithm,o.name!==t)throw p(t);break;case"ES256":case"ES384":case"ES512":{if("ECDSA"!==e.algorithm.name)throw p("ECDSA");let r=function(e){switch(e){case"ES256":return"P-256";case"ES384":return"P-384";case"ES512":return"P-521";default:throw Error("unreachable")}}(t);if(e.algorithm.namedCurve!==r)throw p(r,"algorithm.namedCurve");break}default:throw TypeError("CryptoKey does not support this operation")}if(r&&!e.usages.includes(r))throw TypeError(`CryptoKey does not support this operation, its usages must include ${r}.`)}(t,e,r),t}async function g(e,t,r){let o=await y(e,t,"sign");return!function(e,t){if(e.startsWith("RS")||e.startsWith("PS")){let{modulusLength:r}=t.algorithm;if("number"!=typeof r||r<2048)throw TypeError(`${e} requires key modulusLength to be 2048 bits or larger`)}}(e,o),new Uint8Array(await crypto.subtle.sign(function(e,t){let r=`SHA-${e.slice(-3)}`;switch(e){case"HS256":case"HS384":case"HS512":return{hash:r,name:"HMAC"};case"PS256":case"PS384":case"PS512":return{hash:r,name:"RSA-PSS",saltLength:parseInt(e.slice(-3),10)>>3};case"RS256":case"RS384":case"RS512":return{hash:r,name:"RSASSA-PKCS1-v1_5"};case"ES256":case"ES384":case"ES512":return{hash:r,name:"ECDSA",namedCurve:t.namedCurve};case"Ed25519":case"EdDSA":return{name:"Ed25519"};case"ML-DSA-44":case"ML-DSA-65":case"ML-DSA-87":return{name:e};default:throw new c(`alg ${e} is not supported either by JOSE or your javascript runtime`)}}(e,o.algorithm),o,r))}function S(e){if("object"!=typeof e||null===e||"[object Object]"!==Object.prototype.toString.call(e))return!1;if(null===Object.getPrototypeOf(e))return!0;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}let w=e=>S(e)&&"string"==typeof e.kty,E=e=>{if(e?.[Symbol.toStringTag]==="CryptoKey")return!0;try{return e instanceof CryptoKey}catch{return!1}},b=e=>e?.[Symbol.toStringTag]==="KeyObject",x=e=>E(e)||b(e),A=e=>e?.[Symbol.toStringTag],T=(e,t,r)=>{if(void 0!==t.use){let e;switch(r){case"sign":case"verify":e="sig";break;case"encrypt":case"decrypt":e="enc"}if(t.use!==e)throw TypeError(`Invalid key for this operation, its "use" must be "${e}" when present`)}if(void 0!==t.alg&&t.alg!==e)throw TypeError(`Invalid key for this operation, its "alg" must be "${e}" when present`);if(Array.isArray(t.key_ops)){let o;switch(!0){case"sign"===r||"verify"===r:case"dir"===e:case e.includes("CBC-HS"):o=r;break;case e.startsWith("PBES2"):o="deriveBits";break;case/^A\d{3}(?:GCM)?(?:KW)?$/.test(e):o=!e.includes("GCM")&&e.endsWith("KW")?"encrypt"===r?"wrapKey":"unwrapKey":r;break;case"encrypt"===r&&e.startsWith("RSA"):o="wrapKey";break;case"decrypt"===r:o=e.startsWith("RSA")?"unwrapKey":"deriveBits"}if(o&&t.key_ops?.includes?.(o)===!1)throw TypeError(`Invalid key for this operation, its "key_ops" must include "${o}" when present`)}return!0},v='Invalid or unsupported JWK "alg" (Algorithm) Parameter value';async function k(e){if(!e.alg)throw TypeError('"alg" argument is required when "jwk.alg" is not present');let{algorithm:t,keyUsages:r}=function(e){let t,r;switch(e.kty){case"AKP":switch(e.alg){case"ML-DSA-44":case"ML-DSA-65":case"ML-DSA-87":t={name:e.alg},r=e.priv?["sign"]:["verify"];break;default:throw new c(v)}break;case"RSA":switch(e.alg){case"PS256":case"PS384":case"PS512":t={name:"RSA-PSS",hash:`SHA-${e.alg.slice(-3)}`},r=e.d?["sign"]:["verify"];break;case"RS256":case"RS384":case"RS512":t={name:"RSASSA-PKCS1-v1_5",hash:`SHA-${e.alg.slice(-3)}`},r=e.d?["sign"]:["verify"];break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":t={name:"RSA-OAEP",hash:`SHA-${parseInt(e.alg.slice(-3),10)||1}`},r=e.d?["decrypt","unwrapKey"]:["encrypt","wrapKey"];break;default:throw new c(v)}break;case"EC":switch(e.alg){case"ES256":case"ES384":case"ES512":t={name:"ECDSA",namedCurve:({ES256:"P-256",ES384:"P-384",ES512:"P-521"})[e.alg]},r=e.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":t={name:"ECDH",namedCurve:e.crv},r=e.d?["deriveBits"]:[];break;default:throw new c(v)}break;case"OKP":switch(e.alg){case"Ed25519":case"EdDSA":t={name:"Ed25519"},r=e.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":t={name:e.crv},r=e.d?["deriveBits"]:[];break;default:throw new c(v)}break;default:throw new c('Invalid or unsupported JWK "kty" (Key Type) Parameter value')}return{algorithm:t,keyUsages:r}}(e),o={...e};return"AKP"!==o.kty&&delete o.alg,delete o.use,crypto.subtle.importKey("jwk",o,t,e.ext??(!e.d&&!e.priv),e.key_ops??r)}let C="given KeyObject instance cannot be used for this algorithm",R=async(e,r,o,n=!1)=>{let a=(t||=new WeakMap).get(e);if(a?.[o])return a[o];let i=await k({...r,alg:o});return n&&Object.freeze(e),a?a[o]=i:t.set(e,{[o]:i}),i};async function I(e,r){if(e instanceof Uint8Array||E(e))return e;if(b(e)){if("secret"===e.type)return e.export();if("toCryptoKey"in e&&"function"==typeof e.toCryptoKey)try{return((e,r)=>{let o,n=(t||=new WeakMap).get(e);if(n?.[r])return n[r];let a="public"===e.type,i=!!a;if("x25519"===e.asymmetricKeyType){switch(r){case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":break;default:throw TypeError(C)}o=e.toCryptoKey(e.asymmetricKeyType,i,a?[]:["deriveBits"])}if("ed25519"===e.asymmetricKeyType){if("EdDSA"!==r&&"Ed25519"!==r)throw TypeError(C);o=e.toCryptoKey(e.asymmetricKeyType,i,[a?"verify":"sign"])}switch(e.asymmetricKeyType){case"ml-dsa-44":case"ml-dsa-65":case"ml-dsa-87":if(r!==e.asymmetricKeyType.toUpperCase())throw TypeError(C);o=e.toCryptoKey(e.asymmetricKeyType,i,[a?"verify":"sign"])}if("rsa"===e.asymmetricKeyType){let t;switch(r){case"RSA-OAEP":t="SHA-1";break;case"RS256":case"PS256":case"RSA-OAEP-256":t="SHA-256";break;case"RS384":case"PS384":case"RSA-OAEP-384":t="SHA-384";break;case"RS512":case"PS512":case"RSA-OAEP-512":t="SHA-512";break;default:throw TypeError(C)}if(r.startsWith("RSA-OAEP"))return e.toCryptoKey({name:"RSA-OAEP",hash:t},i,a?["encrypt"]:["decrypt"]);o=e.toCryptoKey({name:r.startsWith("PS")?"RSA-PSS":"RSASSA-PKCS1-v1_5",hash:t},i,[a?"verify":"sign"])}if("ec"===e.asymmetricKeyType){let t=new Map([["prime256v1","P-256"],["secp384r1","P-384"],["secp521r1","P-521"]]).get(e.asymmetricKeyDetails?.namedCurve);if(!t)throw TypeError(C);let n={ES256:"P-256",ES384:"P-384",ES512:"P-521"};n[r]&&t===n[r]&&(o=e.toCryptoKey({name:"ECDSA",namedCurve:t},i,[a?"verify":"sign"])),r.startsWith("ECDH-ES")&&(o=e.toCryptoKey({name:"ECDH",namedCurve:t},i,a?[]:["deriveBits"]))}if(!o)throw TypeError(C);return n?n[r]=o:t.set(e,{[r]:o}),o})(e,r)}catch(e){if(e instanceof TypeError)throw e}let o=e.export({format:"jwk"});return R(e,o,r)}if(w(e)){if(e.k){var n=e.k;if(Uint8Array.fromBase64)return Uint8Array.fromBase64("string"==typeof n?n:o.decode(n),{alphabet:"base64url"});let t=n;t instanceof Uint8Array&&(t=o.decode(t)),t=t.replace(/-/g,"+").replace(/_/g,"/");try{return a(t)}catch{throw TypeError("The input to be decoded is not correctly encoded.")}}return R(e,e,r,!0)}throw Error("unreachable")}function _(e,t){if(e)throw TypeError(`${t} can only be called once`)}Symbol();class O{#e;#t;#r;constructor(e){if(!(e instanceof Uint8Array))throw TypeError("payload must be an instance of Uint8Array");this.#e=e}setProtectedHeader(e){return _(this.#t,"setProtectedHeader"),this.#t=e,this}setUnprotectedHeader(e){return _(this.#r,"setUnprotectedHeader"),this.#r=e,this}async sign(e,t){let r,o,a,s;if(!this.#t&&!this.#r)throw new l("either setProtectedHeader or setUnprotectedHeader must be called before #sign()");if(!function(...e){let t,r=e.filter(Boolean);if(0===r.length||1===r.length)return!0;for(let e of r){let r=Object.keys(e);if(!t||0===t.size){t=new Set(r);continue}for(let e of r){if(t.has(e))return!1;t.add(e)}}return!0}(this.#t,this.#r))throw new l("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let u={...this.#t,...this.#r},d=function(e,t,r,o,n){let a;if(void 0!==n.crit&&o?.crit===void 0)throw new e('"crit" (Critical) Header Parameter MUST be integrity protected');if(!o||void 0===o.crit)return new Set;if(!Array.isArray(o.crit)||0===o.crit.length||o.crit.some(e=>"string"!=typeof e||0===e.length))throw new e('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');for(let i of(a=void 0!==r?new Map([...Object.entries(r),...t.entries()]):t,o.crit)){if(!a.has(i))throw new c(`Extension Header Parameter "${i}" is not recognized`);if(void 0===n[i])throw new e(`Extension Header Parameter "${i}" is missing`);if(a.get(i)&&void 0===o[i])throw new e(`Extension Header Parameter "${i}" MUST be integrity protected`)}return new Set(o.crit)}(l,new Map([["b64",!0]]),t?.crit,this.#t,u),p=!0;if(d.has("b64")&&"boolean"!=typeof(p=this.#t.b64))throw new l('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:h}=u;if("string"!=typeof h||!h)throw new l('JWS "alg" (Algorithm) Header Parameter missing or invalid');var f="sign";switch(h.substring(0,2)){case"A1":case"A2":case"di":case"HS":case"PB":((e,t,r)=>{if(!(t instanceof Uint8Array)){if(w(t)){if("oct"===t.kty&&"string"==typeof t.k&&T(e,t,r))return;throw TypeError('JSON Web Key for symmetric algorithms must have JWK "kty" (Key Type) equal to "oct" and the JWK "k" (Key Value) present')}if(!x(t))throw TypeError(m(e,t,"CryptoKey","KeyObject","JSON Web Key","Uint8Array"));if("secret"!==t.type)throw TypeError(`${A(t)} instances for symmetric algorithms must be of type "secret"`)}})(h,e,f);break;default:((e,t,r)=>{if(w(t))switch(r){case"decrypt":case"sign":if("oct"!==t.kty&&("AKP"===t.kty&&"string"==typeof t.priv||"string"==typeof t.d)&&T(e,t,r))return;throw TypeError("JSON Web Key for this operation must be a private JWK");case"encrypt":case"verify":if("oct"!==t.kty&&void 0===t.d&&void 0===t.priv&&T(e,t,r))return;throw TypeError("JSON Web Key for this operation must be a public JWK")}if(!x(t))throw TypeError(m(e,t,"CryptoKey","KeyObject","JSON Web Key"));if("secret"===t.type)throw TypeError(`${A(t)} instances for asymmetric algorithms must not be of type "secret"`);if("public"===t.type)switch(r){case"sign":throw TypeError(`${A(t)} instances for asymmetric algorithm signing must be of type "private"`);case"decrypt":throw TypeError(`${A(t)} instances for asymmetric algorithm decryption must be of type "private"`)}if("private"===t.type)switch(r){case"verify":throw TypeError(`${A(t)} instances for asymmetric algorithm verifying must be of type "public"`);case"encrypt":throw TypeError(`${A(t)} instances for asymmetric algorithm encryption must be of type "public"`)}})(h,e,f)}p?o=n(r=i(this.#e)):(o=this.#e,r=""),this.#t?s=n(a=i(JSON.stringify(this.#t))):(a="",s=new Uint8Array);let y=function(...e){let t=new Uint8Array(e.reduce((e,{length:t})=>e+t,0)),r=0;for(let o of e)t.set(o,r),r+=o.length;return t}(s,n("."),o),S=await I(e,h),E={signature:i(await g(h,S,y)),payload:r};return this.#r&&(E.header=this.#r),this.#t&&(E.protected=a),E}}class P{#o;constructor(e){this.#o=new O(e)}setProtectedHeader(e){return this.#o.setProtectedHeader(e),this}async sign(e,t){let r=await this.#o.sign(e,t);if(void 0===r.payload)throw TypeError("use the flattened module for creating JWS with b64: false");return`${r.protected}.${r.payload}.${r.signature}`}}let D=e=>Math.floor(e.getTime()/1e3),U=/^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i;function $(e){let t,r=U.exec(e);if(!r||r[4]&&r[1])throw TypeError("Invalid time period format");let o=parseFloat(r[2]);switch(r[3].toLowerCase()){case"sec":case"secs":case"second":case"seconds":case"s":t=Math.round(o);break;case"minute":case"minutes":case"min":case"mins":case"m":t=Math.round(60*o);break;case"hour":case"hours":case"hr":case"hrs":case"h":t=Math.round(3600*o);break;case"day":case"days":case"d":t=Math.round(86400*o);break;case"week":case"weeks":case"w":t=Math.round(604800*o);break;default:t=Math.round(0x1e187e0*o)}return"-"===r[1]||"ago"===r[4]?-t:t}function F(e,t){if(!Number.isFinite(t))throw TypeError(`Invalid ${e} input`);return t}class L{#e;constructor(e){if(!S(e))throw TypeError("JWT Claims Set MUST be an object");this.#e=structuredClone(e)}data(){return r.encode(JSON.stringify(this.#e))}get iss(){return this.#e.iss}set iss(e){this.#e.iss=e}get sub(){return this.#e.sub}set sub(e){this.#e.sub=e}get aud(){return this.#e.aud}set aud(e){this.#e.aud=e}set jti(e){this.#e.jti=e}set nbf(e){"number"==typeof e?this.#e.nbf=F("setNotBefore",e):e instanceof Date?this.#e.nbf=F("setNotBefore",D(e)):this.#e.nbf=D(new Date)+$(e)}set exp(e){"number"==typeof e?this.#e.exp=F("setExpirationTime",e):e instanceof Date?this.#e.exp=F("setExpirationTime",D(e)):this.#e.exp=D(new Date)+$(e)}set iat(e){void 0===e?this.#e.iat=D(new Date):e instanceof Date?this.#e.iat=F("setIssuedAt",D(e)):"string"==typeof e?this.#e.iat=F("setIssuedAt",D(new Date)+$(e)):this.#e.iat=F("setIssuedAt",e)}}class N{#t;#n;constructor(e={}){this.#n=new L(e)}setIssuer(e){return this.#n.iss=e,this}setSubject(e){return this.#n.sub=e,this}setAudience(e){return this.#n.aud=e,this}setJti(e){return this.#n.jti=e,this}setNotBefore(e){return this.#n.nbf=e,this}setExpirationTime(e){return this.#n.exp=e,this}setIssuedAt(e){return this.#n.iat=e,this}setProtectedHeader(e){return this.#t=e,this}async sign(e,t){let r=new P(this.#n.data());if(r.setProtectedHeader(this.#t),Array.isArray(this.#t?.crit)&&this.#t.crit.includes("b64")&&!1===this.#t.b64)throw new u("JWTs MUST NOT use unencoded payload");return r.sign(e,t)}}let j=(e,t)=>{if(e.byteLength!==t.length)return!1;for(let r=0;r<e.byteLength;r++)if(e[r]!==t[r])return!1;return!0},M=e=>{let t=e.data[e.pos++];if(128&t){let r=127&t,o=0;for(let t=0;t<r;t++)o=o<<8|e.data[e.pos++];return o}return t},H=(e,t,r)=>{if(e.data[e.pos++]!==t)throw Error(r)},B=(e,t)=>{let r=e.data.subarray(e.pos,e.pos+t);return e.pos+=t,r},K=async(e,t,r,o)=>{let n,a,i="spki"===e,s=()=>i?["verify"]:["sign"];switch(r){case"PS256":case"PS384":case"PS512":n={name:"RSA-PSS",hash:`SHA-${r.slice(-3)}`},a=s();break;case"RS256":case"RS384":case"RS512":n={name:"RSASSA-PKCS1-v1_5",hash:`SHA-${r.slice(-3)}`},a=s();break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":n={name:"RSA-OAEP",hash:`SHA-${parseInt(r.slice(-3),10)||1}`},a=i?["encrypt","wrapKey"]:["decrypt","unwrapKey"];break;case"ES256":case"ES384":case"ES512":n={name:"ECDSA",namedCurve:({ES256:"P-256",ES384:"P-384",ES512:"P-521"})[r]},a=s();break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":try{let e=o.getNamedCurve(t);n="X25519"===e?{name:"X25519"}:{name:"ECDH",namedCurve:e}}catch(e){throw new c("Invalid or unsupported key format")}a=i?[]:["deriveBits"];break;case"Ed25519":case"EdDSA":n={name:"Ed25519"},a=s();break;case"ML-DSA-44":case"ML-DSA-65":case"ML-DSA-87":n={name:r},a=s();break;default:throw new c('Invalid or unsupported "alg" (Algorithm) value')}return crypto.subtle.importKey(e,t,n,o?.extractable??!!i,a)};async function q(e,t,r){let o,n,i;if("string"!=typeof e||0!==e.indexOf("-----BEGIN PRIVATE KEY-----"))throw TypeError('"pkcs8" must be PKCS#8 formatted string');return o=/(?:-----(?:BEGIN|END) PRIVATE KEY-----|\s)/g,n=a(e.replace(o,"")),i=r,t?.startsWith?.("ECDH-ES")&&((i||={}).getNamedCurve=e=>{let t,r={data:e,pos:0};return H(r,48,"Invalid PKCS#8 structure"),M(r),H(r,2,"Expected version field"),t=M(r),r.pos+=t,H(r,48,"Expected algorithm identifier"),M(r),r.pos,(e=>{let t,r=(H(e,6,"Expected algorithm OID"),t=M(e),B(e,t));if(j(r,[43,101,110]))return"X25519";if(!j(r,[42,134,72,206,61,2,1]))throw Error("Unsupported key algorithm");H(e,6,"Expected curve OID");let o=M(e),n=B(e,o);for(let{name:e,oid:t}of[{name:"P-256",oid:[42,134,72,206,61,3,1,7]},{name:"P-384",oid:[43,129,4,0,34]},{name:"P-521",oid:[43,129,4,0,35]}])if(j(n,t))return e;throw Error("Unsupported named curve")})(r)}),K("pkcs8",n,t,i)}var J=e.i(503536),z=e.i(359281);let G=new Map;function W(e){try{return JSON.parse(e)}catch{throw Error("Vertex AI requires a valid Service Account JSON as the API key")}}async function V(e){if(!e.client_email||!e.private_key)throw Error("Service Account JSON is missing required fields (client_email or private_key)");let t=e.client_email,r=G.get(t);if(r&&Date.now()<r.expiresAt-6e4)return r.token;let o=await q(e.private_key,"RS256"),n=Math.floor(Date.now()/1e3),a=await new N({iss:e.client_email,sub:e.client_email,aud:"https://oauth2.googleapis.com/token",iat:n,exp:n+3600,scope:"https://www.googleapis.com/auth/cloud-platform"}).setProtectedHeader({alg:"RS256",kid:e.private_key_id}).sign(o),i=await fetch("https://oauth2.googleapis.com/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:jwt-bearer",assertion:a})});if(!i.ok){let e=await i.text();throw Error(`Failed to exchange JWT for Vertex access token: ${i.status} ${e}`)}let s=(await i.json()).access_token;if(!s)throw Error("Vertex AI token exchange succeeded but no access_token found");return G.set(t,{token:s,expiresAt:(n+3600)*1e3}),s}let Y=new Set(["claude-3-5-sonnet","claude-3-opus","claude-3-haiku","deepseek-v3","deepseek-v3.2","deepseek-deepseek-r1","qwen3-next-80b","llama-3.1","mistral-","glm-5","meta/llama"]);class X extends J.BaseExecutor{constructor(){super("vertex",z.PROVIDERS.vertex)}async execute(e){let{credentials:t,log:r}=e;if(t.apiKey&&!t.accessToken)try{let e=W(t.apiKey);t.accessToken=await V(e)}catch(e){throw r?.error?.("VERTEX",`Failed to generate JWT token: ${e.message}`),e}return super.execute(e)}buildUrl(e,t,r=0,o=null){let n=o?.providerSpecificData?.region||"us-central1",a="unknown-project";if(o?.apiKey)try{let e=W(o.apiKey);e.project_id&&(a=e.project_id)}catch{}return[...Y].some(t=>e.startsWith(t))?`https://aiplatform.googleapis.com/v1/projects/${a}/locations/global/endpoints/openapi/chat/completions`:`https://aiplatform.googleapis.com/v1/projects/${a}/locations/${n}/publishers/google/models/${e}:${t?"streamGenerateContent?alt=sse":"generateContent"}`}buildHeaders(e,t=!0){let r={"Content-Type":"application/json"};return e.accessToken&&(r.Authorization=`Bearer ${e.accessToken}`),t&&(r.Accept="text/event-stream"),r}}e.s(["VertexExecutor",0,X],482770)},40432,e=>{"use strict";var t=e.i(503536),r=e.i(359281);class o extends t.BaseExecutor{upstreamBaseUrl;constructor(e){const t=e??function(){let e=process.env.CLIPROXYAPI_HOST||"127.0.0.1",t=parseInt(process.env.CLIPROXYAPI_PORT||String(8317),10);return`http://${e}:${t}`}();super("cliproxyapi",{id:"cliproxyapi",baseUrl:t+"/v1/chat/completions",headers:{"Content-Type":"application/json"}}),this.upstreamBaseUrl=t}buildUrl(e,t,r=0){return`${this.upstreamBaseUrl}/v1/chat/completions`}buildHeaders(e,t=!0){let r={"Content-Type":"application/json"},o=e?.apiKey||e?.accessToken;return o&&(r.Authorization=`Bearer ${o}`),t&&(r.Accept="text/event-stream"),r}transformRequest(e,t,r,o){return t&&"object"==typeof t&&t.model!==e?{...t,model:e}:t}async execute(e){let o=this.buildUrl(e.model,e.stream),n=this.buildHeaders(e.credentials,e.stream),a=this.transformRequest(e.model,e.body,e.stream,e.credentials);(0,t.mergeUpstreamExtraHeaders)(n,e.upstreamExtraHeaders);let i=AbortSignal.timeout(r.FETCH_TIMEOUT_MS),s=e.signal?(0,t.mergeAbortSignals)(e.signal,i):i,c=await fetch(o,{method:"POST",headers:n,body:JSON.stringify(a),signal:s});return c.status===r.HTTP_STATUS.RATE_LIMITED&&e.log?.warn?.("CPA",`CLIProxyAPI rate limited: ${c.status}`),{response:c,url:o,headers:n,transformedBody:a}}}e.s(["CliproxyapiExecutor",0,o])},681050,e=>e.a(async(t,r)=>{try{var o=e.i(606062),n=e.i(973033),a=e.i(714796),i=e.i(944368),s=e.i(846871),c=e.i(482191),l=e.i(77586),u=e.i(585296),d=e.i(43180),p=e.i(409400),h=e.i(398983),f=e.i(201949),m=e.i(482770),y=e.i(40432);e.i(503536);var g=t([l]);[l]=g.then?(await g)():g;let S={antigravity:new o.AntigravityExecutor,"gemini-cli":new n.GeminiCLIExecutor,github:new a.GithubExecutor,qoder:new i.QoderExecutor,kiro:new s.KiroExecutor,codex:new c.CodexExecutor,cursor:new l.CursorExecutor,cu:new l.CursorExecutor,pollinations:new d.PollinationsExecutor,pol:new d.PollinationsExecutor,"cloudflare-ai":new p.CloudflareAIExecutor,cf:new p.CloudflareAIExecutor,"opencode-zen":new h.OpencodeExecutor("opencode-zen"),"opencode-go":new h.OpencodeExecutor("opencode-go"),puter:new f.PuterExecutor,pu:new f.PuterExecutor,vertex:new m.VertexExecutor,cliproxyapi:new y.CliproxyapiExecutor,cpa:new y.CliproxyapiExecutor},w=new Map;e.s(["getExecutor",0,function(e){return S[e]?S[e]:(w.has(e)||w.set(e,new u.DefaultExecutor(e)),w.get(e))}]),r()}catch(e){r(e)}},!1),84814,e=>e.a(async(t,r)=>{try{e.i(13572);var o=e.i(543125),n=e.i(974210),a=e.i(874957),i=e.i(184533),s=e.i(435005),c=e.i(834993),l=e.i(738629),u=e.i(681050),d=e.i(412925),p=e.i(907671),h=t([l,u]);[l,u]=h.then?(await h)():h;let v=new Set(["glm"]),k="provider_limits_auto_sync_last_run";function f(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function m(e){return!!e&&!!e.provider&&!!l.USAGE_SUPPORTED_PROVIDERS.includes(e.provider)&&("oauth"===e.authType||"apikey"===e.authType&&v.has(e.provider))}function y(e,t){return Object.assign(e,{status:t})}async function g(){try{let e=await (0,c.getMachineId)();if(!e)return;await (0,i.syncToCloud)(e)}catch(e){console.error("[ProviderLimits] Error syncing refreshed credentials to cloud:",e)}}async function S(e){let t=(0,u.getExecutor)(e.provider),r={accessToken:e.accessToken,refreshToken:e.refreshToken,expiresAt:e.tokenExpiresAt,providerSpecificData:e.providerSpecificData,copilotToken:e.providerSpecificData?.copilotToken,copilotTokenExpiresAt:e.providerSpecificData?.copilotTokenExpiresAt};if(!t.needsRefresh(r))return{connection:e,refreshed:!1};let n=await t.refreshCredentials(r,console);if(!n){if("github"===e.provider&&e.accessToken)return{connection:e,refreshed:!1};throw y(Error("Failed to refresh credentials. Please re-authorize the connection."),401)}let a={updatedAt:new Date().toISOString()};return n.accessToken&&(a.accessToken=n.accessToken),n.refreshToken&&(a.refreshToken=n.refreshToken),n.expiresIn?a.tokenExpiresAt=new Date(Date.now()+1e3*n.expiresIn).toISOString():n.expiresAt&&(a.tokenExpiresAt=n.expiresAt),(n.copilotToken||n.copilotTokenExpiresAt)&&(a.providerSpecificData={...e.providerSpecificData||{},copilotToken:n.copilotToken,copilotTokenExpiresAt:n.copilotTokenExpiresAt}),await (0,o.updateProviderConnection)(e.id,a),{connection:{...e,...a,providerSpecificData:a.providerSpecificData||e.providerSpecificData},refreshed:!0}}async function w(e,t){let r="string"==typeof t.message?t.message.toLowerCase():"";if((r.includes("token expired")||r.includes("access denied")||r.includes("re-authenticate")||r.includes("unauthorized"))&&"expired"!==e.testStatus)try{await (0,o.updateProviderConnection)(e.id,{testStatus:"expired",lastErrorType:"token_expired",lastErrorAt:new Date().toISOString()})}catch(e){console.error("[ProviderLimits] Failed to sync expired status to DB:",e)}}function E(){let e=Number.parseInt(process.env.PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES??"",10);return Number.isFinite(e)&&e>0?e:70}async function b(){try{let e=(await (0,n.getSettings)())[k];return"string"==typeof e&&e.trim()?e:null}catch{return null}}async function x(e){await (0,n.updateSettings)({[k]:e})}async function A(e){var t;let r,a=await (0,o.getProviderConnectionById)(e);if(!a)throw y(Error("Connection not found"),404);if(!m(a))throw y(Error("Usage not available for this connection"),400);if("oauth"!==a.authType){let t=await (0,d.getUsageForProvider)(a);return f(t.quotas)&&(0,s.setQuotaCache)(e,a.provider,t.quotas),await w(a,t),{connection:a,usage:t}}let i=await (0,n.resolveProxyForConnection)(e),c=async e=>(0,p.runWithProxyContext)(e,async()=>{let e=a,t=await S(e);e=t.connection,t.refreshed&&await g();let r=await (0,d.getUsageForProvider)(e);return a=e,{usage:r}}),l=i?.proxy||null;try{r=await c(l)}catch(o){let t=o?.message==="fetch failed"||o?.code==="PROXY_UNREACHABLE"||o?.code==="UND_ERR_CONNECT_TIMEOUT"||o?.cause?.code==="ECONNREFUSED";if(l&&t)console.warn(`[ProviderLimits] Proxy fetch threw for ${e}, retrying without proxy:`,o?.message),r=await c(null);else throw o}return l&&(t=r.usage?.message,"string"==typeof t&&(t.includes("fetch failed")||t.includes("ECONNREFUSED")||t.includes("ETIMEDOUT")||t.includes("Proxy unreachable")||t.includes("UND_ERR_CONNECT_TIMEOUT")))&&(console.warn(`[ProviderLimits] Proxy usage returned network error for ${e}, retrying without proxy:`,r.usage.message),r=await c(null)),f(r.usage.quotas)&&(0,s.setQuotaCache)(e,a.provider,r.usage.quotas),await w(a,r.usage),{connection:a,usage:r.usage}}async function T(e={}){let{source:t="manual",concurrency:r=5}=e,n=(await (0,o.getProviderConnections)({isActive:!0})).filter(m),i=[],s={},c={};for(let e=0;e<n.length;e+=r){let o=n.slice(e,e+r);(await Promise.allSettled(o.map(async e=>{let{usage:r}=await A(e.id),o=function(e,t,r=new Date().toISOString()){return{quotas:f(e.quotas)?e.quotas:null,plan:e.plan??null,message:"string"==typeof e.message?e.message:null,fetchedAt:r,source:t}}(r,t);return{connectionId:e.id,cache:o}}))).forEach((e,t)=>{let r=o[t]?.id;if(!r)return;if("fulfilled"===e.status){i.push({connectionId:e.value.connectionId,entry:e.value.cache}),s[e.value.connectionId]=e.value.cache;return}let n=e.reason;c[r]=n?.message||"Failed to refresh provider limits"})}return i.length>0&&(0,a.setProviderLimitsCacheBatch)(i),"scheduled"===t&&await x(new Date().toISOString()),{total:n.length,succeeded:i.length,failed:n.length-i.length,caches:s,errors:c}}e.s(["getLastProviderLimitsAutoSyncTime",0,b,"getProviderLimitsSyncIntervalMinutes",0,E,"getProviderLimitsSyncIntervalMs",0,function(){return 60*E()*1e3},"syncAllProviderLimits",0,T]),r()}catch(e){r(e)}},!1),348228,e=>e.a(async(t,r)=>{try{var o=e.i(84814),n=t([o]);[o]=n.then?(await n)():n;let i=null,s=null,c=!1;async function a(){if(c)return void console.log("[ProviderLimitsSync] Skipping cycle — previous run still in progress");c=!0;let e=Date.now();try{let t=await (0,o.syncAllProviderLimits)({source:"scheduled"});console.log(`[ProviderLimitsSync] Cycle complete: ${t.succeeded}/${t.total} synced in ${Date.now()-e}ms`)}catch(e){console.warn("[ProviderLimitsSync] Cycle failed:",e.message)}finally{c=!1}}e.s(["startProviderLimitsSyncScheduler",0,function(){if(i||s)return void console.log("[ProviderLimitsSync] Scheduler already running — skipping start");let e=(0,o.getProviderLimitsSyncIntervalMs)(),t=(0,o.getProviderLimitsSyncIntervalMinutes)();console.log(`[ProviderLimitsSync] Scheduler started — interval: ${t}m`),(async()=>{let t=5e3,r=await (0,o.getLastProviderLimitsAutoSyncTime)();if(r){let o=Date.parse(r);if(Number.isFinite(o)){let r=Date.now()-o;r<e&&(t=Math.max(e-r,5e3))}}s=setTimeout(()=>{s=null,a(),i=setInterval(()=>{a()},e),i.unref?.()},t),s.unref?.()})()},"stopProviderLimitsSyncScheduler",0,function(){s&&(clearTimeout(s),s=null),i&&(clearInterval(i),i=null,console.log("[ProviderLimitsSync] Scheduler stopped"))}]),r()}catch(e){r(e)}},!1)];
|
|
42
|
+
`),l.push("data: [DONE]\n\n"),new Response(l.join(""),{status:200,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}async refreshCredentials(){return null}}e.s(["CursorExecutor",0,g]),r()}catch(e){r(e)}},!0),585296,e=>{"use strict";var t=e.i(503536),r=e.i(359281),o=e.i(191051),n=e.i(900930),a=e.i(610766),i=e.i(457858);class s extends t.BaseExecutor{constructor(e){super(e,r.PROVIDERS[e]||r.PROVIDERS.openai)}buildUrl(e,t,r=0,o=null){if(this.provider?.startsWith?.("openai-compatible-")){let e=o?.providerSpecificData,t=(e?.baseUrl||"https://api.openai.com/v1").replace(/\/$/,""),r="string"==typeof e?.chatPath&&e.chatPath?e.chatPath:null;if(r)return`${t}${r}`;let n=this.provider.includes("responses")?"/responses":"/chat/completions";return`${t}${n}`}if(this.provider?.startsWith?.("anthropic-compatible-")){let e=o?.providerSpecificData,t=e?.baseUrl||"https://api.anthropic.com/v1",r="string"==typeof e?.chatPath&&e.chatPath?e.chatPath:null;if((0,i.isClaudeCodeCompatible)(this.provider))return(0,a.joinClaudeCodeCompatibleUrl)(t,r||a.CLAUDE_CODE_COMPATIBLE_DEFAULT_CHAT_PATH);let n=t.replace(/\/$/,"");return`${n}${r||"/messages"}`}switch(this.provider){case"claude":case"glm":case"kimi-coding":case"minimax":case"minimax-cn":return`${this.config.baseUrl}?beta=true`;case"gemini":return`${this.config.baseUrl}/${e}:${t?"streamGenerateContent?alt=sse":"generateContent"}`;case"qwen":{let e=o?.providerSpecificData?.resourceUrl;return`https://${e||"portal.qwen.ai"}/v1/chat/completions`}default:return this.config.baseUrl}}buildHeaders(e,t=!0){let r={"Content-Type":"application/json",...this.config.headers},o=e.providerSpecificData?.extraApiKeys??[],s=o.length>0&&e.connectionId&&e.apiKey?(0,n.getRotatingApiKey)(e.connectionId,e.apiKey,o):e.apiKey;switch(this.provider){case"gemini":s?r["x-goog-api-key"]=s:r.Authorization=`Bearer ${e.accessToken}`;break;case"claude":s?r["x-api-key"]=s:r.Authorization=`Bearer ${e.accessToken}`;break;case"glm":case"kimi-coding":case"bailian-coding-plan":case"kimi-coding-apikey":case"minimax":case"minimax-cn":r["x-api-key"]=s||e.accessToken;break;default:if((0,i.isClaudeCodeCompatible)(this.provider))return(0,a.buildClaudeCodeCompatibleHeaders)(s||e.accessToken||"",t,e?.providerSpecificData?.ccSessionId);this.provider?.startsWith?.("anthropic-compatible-")?(s?r["x-api-key"]=s:e.accessToken&&(r.Authorization=`Bearer ${e.accessToken}`),r["anthropic-version"]||(r["anthropic-version"]="2023-06-01")):r.Authorization=`Bearer ${s||e.accessToken}`}return t&&(r.Accept="text/event-stream"),r}transformRequest(e,t,r,o){return t}async refreshCredentials(e,t){if(!e.refreshToken)return null;try{return await (0,o.getAccessToken)(this.provider,e,t)}catch(e){return t?.error?.("TOKEN",`${this.provider} refresh error: ${e.message}`),null}}}e.s(["DefaultExecutor",0,s])},43180,e=>{"use strict";var t=e.i(503536),r=e.i(359281);class o extends t.BaseExecutor{constructor(){super("pollinations",r.PROVIDERS.pollinations||{format:"openai"})}buildUrl(e,t,r=0,o=null){return"https://text.pollinations.ai/openai/chat/completions"}buildHeaders(e,t=!0){let r={"Content-Type":"application/json"},o=e?.apiKey||e?.accessToken;return o&&(r.Authorization=`Bearer ${o}`),t&&(r.Accept="text/event-stream"),r}transformRequest(e,t,r,o){return t}}e.s(["PollinationsExecutor",0,o])},409400,e=>{"use strict";var t=e.i(503536),r=e.i(359281);class o extends t.BaseExecutor{constructor(){super("cloudflare-ai",r.PROVIDERS["cloudflare-ai"]||{format:"openai"})}buildUrl(e,t,r=0,o=null){let n=o?.providerSpecificData?.accountId||o?.accountId||process.env.CLOUDFLARE_ACCOUNT_ID;if(!n)throw Error("Cloudflare Workers AI requires an Account ID. Add it in provider settings under 'Account ID'. Find it at: https://dash.cloudflare.com (right sidebar).");return`https://api.cloudflare.com/client/v4/accounts/${n}/ai/v1/chat/completions`}buildHeaders(e,t=!0){let r={"Content-Type":"application/json",Authorization:`Bearer ${e.apiKey||e.accessToken}`};return t&&(r.Accept="text/event-stream"),r}transformRequest(e,t,r,o){return t}}e.s(["CloudflareAIExecutor",0,o])},398983,e=>{"use strict";var t=e.i(503536),r=e.i(359281),o=e.i(588617);class n extends t.BaseExecutor{_requestFormat=null;constructor(e){super(e,r.PROVIDERS[e]||r.PROVIDERS.openai)}async execute(e){this._requestFormat=(0,o.getModelTargetFormat)(this.provider,e.model)||"openai";try{return await super.execute(e)}finally{this._requestFormat=null}}buildUrl(e,t,r=0,o=null){let n=this.config.baseUrl;switch(this._requestFormat){case"claude":return`${n}/messages`;case"openai-responses":return`${n}/responses`;case"gemini":return`${n}/models/${e}:${t?"streamGenerateContent?alt=sse":"generateContent"}`;default:return`${n}/chat/completions`}}buildHeaders(e,t=!0){let r={"Content-Type":"application/json"},o=e?.apiKey||e?.accessToken;return o&&("claude"===this._requestFormat?r["x-api-key"]=o:r.Authorization=`Bearer ${o}`),"claude"===this._requestFormat&&(r["anthropic-version"]="2023-06-01"),t&&(r.Accept="text/event-stream"),r}}e.s(["OpencodeExecutor",0,n])},201949,e=>{"use strict";var t=e.i(503536),r=e.i(359281);class o extends t.BaseExecutor{constructor(){super("puter",r.PROVIDERS.puter||{format:"openai"})}buildUrl(e,t,r=0,o=null){return"https://api.puter.com/puterai/openai/v1/chat/completions"}buildHeaders(e,t=!0){let r={"Content-Type":"application/json"},o=e?.apiKey||e?.accessToken;return o&&(r.Authorization=`Bearer ${o}`),t&&(r.Accept="text/event-stream"),r}transformRequest(e,t,r,o){return t}}e.s(["PuterExecutor",0,o])},482770,e=>{"use strict";let t,r=new TextEncoder,o=new TextDecoder;function n(e){let t=new Uint8Array(e.length);for(let r=0;r<e.length;r++){let o=e.charCodeAt(r);if(o>127)throw TypeError("non-ASCII string encountered in encode()");t[r]=o}return t}function a(e){if(Uint8Array.fromBase64)return Uint8Array.fromBase64(e);let t=atob(e),r=new Uint8Array(t.length);for(let e=0;e<t.length;e++)r[e]=t.charCodeAt(e);return r}function i(e){let t=e;return("string"==typeof t&&(t=r.encode(t)),Uint8Array.prototype.toBase64)?t.toBase64({alphabet:"base64url",omitPadding:!0}):(function(e){if(Uint8Array.prototype.toBase64)return e.toBase64();let t=[];for(let r=0;r<e.length;r+=32768)t.push(String.fromCharCode.apply(null,e.subarray(r,r+32768)));return btoa(t.join(""))})(t).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}class s extends Error{static code="ERR_JOSE_GENERIC";code="ERR_JOSE_GENERIC";constructor(e,t){super(e,t),this.name=this.constructor.name,Error.captureStackTrace?.(this,this.constructor)}}class c extends s{static code="ERR_JOSE_NOT_SUPPORTED";code="ERR_JOSE_NOT_SUPPORTED"}class l extends s{static code="ERR_JWS_INVALID";code="ERR_JWS_INVALID"}class u extends s{static code="ERR_JWT_INVALID";code="ERR_JWT_INVALID"}class d extends s{[Symbol.asyncIterator];static code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";constructor(e="multiple matching keys found in the JSON Web Key Set",t){super(e,t)}}let p=(e,t="algorithm.name")=>TypeError(`CryptoKey does not support this operation, its ${t} must be ${e}`);function h(e,t){if(parseInt(e.hash.name.slice(4),10)!==t)throw p(`SHA-${t}`,"algorithm.hash")}function f(e,t,...r){if((r=r.filter(Boolean)).length>2){let t=r.pop();e+=`one of type ${r.join(", ")}, or ${t}.`}else 2===r.length?e+=`one of type ${r[0]} or ${r[1]}.`:e+=`of type ${r[0]}.`;return null==t?e+=` Received ${t}`:"function"==typeof t&&t.name?e+=` Received function ${t.name}`:"object"==typeof t&&null!=t&&t.constructor?.name&&(e+=` Received an instance of ${t.constructor.name}`),e}let m=(e,t,...r)=>f(`Key for the ${e} algorithm must be `,t,...r);async function y(e,t,r){if(t instanceof Uint8Array){if(!e.startsWith("HS"))throw TypeError(((e,...t)=>f("Key must be ",e,...t))(t,"CryptoKey","KeyObject","JSON Web Key"));return crypto.subtle.importKey("raw",t,{hash:`SHA-${e.slice(-3)}`,name:"HMAC"},!1,[r])}return!function(e,t,r){switch(t){case"HS256":case"HS384":case"HS512":if("HMAC"!==e.algorithm.name)throw p("HMAC");h(e.algorithm,parseInt(t.slice(2),10));break;case"RS256":case"RS384":case"RS512":if("RSASSA-PKCS1-v1_5"!==e.algorithm.name)throw p("RSASSA-PKCS1-v1_5");h(e.algorithm,parseInt(t.slice(2),10));break;case"PS256":case"PS384":case"PS512":if("RSA-PSS"!==e.algorithm.name)throw p("RSA-PSS");h(e.algorithm,parseInt(t.slice(2),10));break;case"Ed25519":case"EdDSA":if("Ed25519"!==e.algorithm.name)throw p("Ed25519");break;case"ML-DSA-44":case"ML-DSA-65":case"ML-DSA-87":let o;if(o=e.algorithm,o.name!==t)throw p(t);break;case"ES256":case"ES384":case"ES512":{if("ECDSA"!==e.algorithm.name)throw p("ECDSA");let r=function(e){switch(e){case"ES256":return"P-256";case"ES384":return"P-384";case"ES512":return"P-521";default:throw Error("unreachable")}}(t);if(e.algorithm.namedCurve!==r)throw p(r,"algorithm.namedCurve");break}default:throw TypeError("CryptoKey does not support this operation")}if(r&&!e.usages.includes(r))throw TypeError(`CryptoKey does not support this operation, its usages must include ${r}.`)}(t,e,r),t}async function g(e,t,r){let o=await y(e,t,"sign");return!function(e,t){if(e.startsWith("RS")||e.startsWith("PS")){let{modulusLength:r}=t.algorithm;if("number"!=typeof r||r<2048)throw TypeError(`${e} requires key modulusLength to be 2048 bits or larger`)}}(e,o),new Uint8Array(await crypto.subtle.sign(function(e,t){let r=`SHA-${e.slice(-3)}`;switch(e){case"HS256":case"HS384":case"HS512":return{hash:r,name:"HMAC"};case"PS256":case"PS384":case"PS512":return{hash:r,name:"RSA-PSS",saltLength:parseInt(e.slice(-3),10)>>3};case"RS256":case"RS384":case"RS512":return{hash:r,name:"RSASSA-PKCS1-v1_5"};case"ES256":case"ES384":case"ES512":return{hash:r,name:"ECDSA",namedCurve:t.namedCurve};case"Ed25519":case"EdDSA":return{name:"Ed25519"};case"ML-DSA-44":case"ML-DSA-65":case"ML-DSA-87":return{name:e};default:throw new c(`alg ${e} is not supported either by JOSE or your javascript runtime`)}}(e,o.algorithm),o,r))}function S(e){if("object"!=typeof e||null===e||"[object Object]"!==Object.prototype.toString.call(e))return!1;if(null===Object.getPrototypeOf(e))return!0;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}let w=e=>S(e)&&"string"==typeof e.kty,E=e=>{if(e?.[Symbol.toStringTag]==="CryptoKey")return!0;try{return e instanceof CryptoKey}catch{return!1}},b=e=>e?.[Symbol.toStringTag]==="KeyObject",x=e=>E(e)||b(e),A=e=>e?.[Symbol.toStringTag],T=(e,t,r)=>{if(void 0!==t.use){let e;switch(r){case"sign":case"verify":e="sig";break;case"encrypt":case"decrypt":e="enc"}if(t.use!==e)throw TypeError(`Invalid key for this operation, its "use" must be "${e}" when present`)}if(void 0!==t.alg&&t.alg!==e)throw TypeError(`Invalid key for this operation, its "alg" must be "${e}" when present`);if(Array.isArray(t.key_ops)){let o;switch(!0){case"sign"===r||"verify"===r:case"dir"===e:case e.includes("CBC-HS"):o=r;break;case e.startsWith("PBES2"):o="deriveBits";break;case/^A\d{3}(?:GCM)?(?:KW)?$/.test(e):o=!e.includes("GCM")&&e.endsWith("KW")?"encrypt"===r?"wrapKey":"unwrapKey":r;break;case"encrypt"===r&&e.startsWith("RSA"):o="wrapKey";break;case"decrypt"===r:o=e.startsWith("RSA")?"unwrapKey":"deriveBits"}if(o&&t.key_ops?.includes?.(o)===!1)throw TypeError(`Invalid key for this operation, its "key_ops" must include "${o}" when present`)}return!0},v='Invalid or unsupported JWK "alg" (Algorithm) Parameter value';async function k(e){if(!e.alg)throw TypeError('"alg" argument is required when "jwk.alg" is not present');let{algorithm:t,keyUsages:r}=function(e){let t,r;switch(e.kty){case"AKP":switch(e.alg){case"ML-DSA-44":case"ML-DSA-65":case"ML-DSA-87":t={name:e.alg},r=e.priv?["sign"]:["verify"];break;default:throw new c(v)}break;case"RSA":switch(e.alg){case"PS256":case"PS384":case"PS512":t={name:"RSA-PSS",hash:`SHA-${e.alg.slice(-3)}`},r=e.d?["sign"]:["verify"];break;case"RS256":case"RS384":case"RS512":t={name:"RSASSA-PKCS1-v1_5",hash:`SHA-${e.alg.slice(-3)}`},r=e.d?["sign"]:["verify"];break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":t={name:"RSA-OAEP",hash:`SHA-${parseInt(e.alg.slice(-3),10)||1}`},r=e.d?["decrypt","unwrapKey"]:["encrypt","wrapKey"];break;default:throw new c(v)}break;case"EC":switch(e.alg){case"ES256":case"ES384":case"ES512":t={name:"ECDSA",namedCurve:({ES256:"P-256",ES384:"P-384",ES512:"P-521"})[e.alg]},r=e.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":t={name:"ECDH",namedCurve:e.crv},r=e.d?["deriveBits"]:[];break;default:throw new c(v)}break;case"OKP":switch(e.alg){case"Ed25519":case"EdDSA":t={name:"Ed25519"},r=e.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":t={name:e.crv},r=e.d?["deriveBits"]:[];break;default:throw new c(v)}break;default:throw new c('Invalid or unsupported JWK "kty" (Key Type) Parameter value')}return{algorithm:t,keyUsages:r}}(e),o={...e};return"AKP"!==o.kty&&delete o.alg,delete o.use,crypto.subtle.importKey("jwk",o,t,e.ext??(!e.d&&!e.priv),e.key_ops??r)}let C="given KeyObject instance cannot be used for this algorithm",R=async(e,r,o,n=!1)=>{let a=(t||=new WeakMap).get(e);if(a?.[o])return a[o];let i=await k({...r,alg:o});return n&&Object.freeze(e),a?a[o]=i:t.set(e,{[o]:i}),i};async function I(e,r){if(e instanceof Uint8Array||E(e))return e;if(b(e)){if("secret"===e.type)return e.export();if("toCryptoKey"in e&&"function"==typeof e.toCryptoKey)try{return((e,r)=>{let o,n=(t||=new WeakMap).get(e);if(n?.[r])return n[r];let a="public"===e.type,i=!!a;if("x25519"===e.asymmetricKeyType){switch(r){case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":break;default:throw TypeError(C)}o=e.toCryptoKey(e.asymmetricKeyType,i,a?[]:["deriveBits"])}if("ed25519"===e.asymmetricKeyType){if("EdDSA"!==r&&"Ed25519"!==r)throw TypeError(C);o=e.toCryptoKey(e.asymmetricKeyType,i,[a?"verify":"sign"])}switch(e.asymmetricKeyType){case"ml-dsa-44":case"ml-dsa-65":case"ml-dsa-87":if(r!==e.asymmetricKeyType.toUpperCase())throw TypeError(C);o=e.toCryptoKey(e.asymmetricKeyType,i,[a?"verify":"sign"])}if("rsa"===e.asymmetricKeyType){let t;switch(r){case"RSA-OAEP":t="SHA-1";break;case"RS256":case"PS256":case"RSA-OAEP-256":t="SHA-256";break;case"RS384":case"PS384":case"RSA-OAEP-384":t="SHA-384";break;case"RS512":case"PS512":case"RSA-OAEP-512":t="SHA-512";break;default:throw TypeError(C)}if(r.startsWith("RSA-OAEP"))return e.toCryptoKey({name:"RSA-OAEP",hash:t},i,a?["encrypt"]:["decrypt"]);o=e.toCryptoKey({name:r.startsWith("PS")?"RSA-PSS":"RSASSA-PKCS1-v1_5",hash:t},i,[a?"verify":"sign"])}if("ec"===e.asymmetricKeyType){let t=new Map([["prime256v1","P-256"],["secp384r1","P-384"],["secp521r1","P-521"]]).get(e.asymmetricKeyDetails?.namedCurve);if(!t)throw TypeError(C);let n={ES256:"P-256",ES384:"P-384",ES512:"P-521"};n[r]&&t===n[r]&&(o=e.toCryptoKey({name:"ECDSA",namedCurve:t},i,[a?"verify":"sign"])),r.startsWith("ECDH-ES")&&(o=e.toCryptoKey({name:"ECDH",namedCurve:t},i,a?[]:["deriveBits"]))}if(!o)throw TypeError(C);return n?n[r]=o:t.set(e,{[r]:o}),o})(e,r)}catch(e){if(e instanceof TypeError)throw e}let o=e.export({format:"jwk"});return R(e,o,r)}if(w(e)){if(e.k){var n=e.k;if(Uint8Array.fromBase64)return Uint8Array.fromBase64("string"==typeof n?n:o.decode(n),{alphabet:"base64url"});let t=n;t instanceof Uint8Array&&(t=o.decode(t)),t=t.replace(/-/g,"+").replace(/_/g,"/");try{return a(t)}catch{throw TypeError("The input to be decoded is not correctly encoded.")}}return R(e,e,r,!0)}throw Error("unreachable")}function _(e,t){if(e)throw TypeError(`${t} can only be called once`)}Symbol();class O{#e;#t;#r;constructor(e){if(!(e instanceof Uint8Array))throw TypeError("payload must be an instance of Uint8Array");this.#e=e}setProtectedHeader(e){return _(this.#t,"setProtectedHeader"),this.#t=e,this}setUnprotectedHeader(e){return _(this.#r,"setUnprotectedHeader"),this.#r=e,this}async sign(e,t){let r,o,a,s;if(!this.#t&&!this.#r)throw new l("either setProtectedHeader or setUnprotectedHeader must be called before #sign()");if(!function(...e){let t,r=e.filter(Boolean);if(0===r.length||1===r.length)return!0;for(let e of r){let r=Object.keys(e);if(!t||0===t.size){t=new Set(r);continue}for(let e of r){if(t.has(e))return!1;t.add(e)}}return!0}(this.#t,this.#r))throw new l("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let u={...this.#t,...this.#r},d=function(e,t,r,o,n){let a;if(void 0!==n.crit&&o?.crit===void 0)throw new e('"crit" (Critical) Header Parameter MUST be integrity protected');if(!o||void 0===o.crit)return new Set;if(!Array.isArray(o.crit)||0===o.crit.length||o.crit.some(e=>"string"!=typeof e||0===e.length))throw new e('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');for(let i of(a=void 0!==r?new Map([...Object.entries(r),...t.entries()]):t,o.crit)){if(!a.has(i))throw new c(`Extension Header Parameter "${i}" is not recognized`);if(void 0===n[i])throw new e(`Extension Header Parameter "${i}" is missing`);if(a.get(i)&&void 0===o[i])throw new e(`Extension Header Parameter "${i}" MUST be integrity protected`)}return new Set(o.crit)}(l,new Map([["b64",!0]]),t?.crit,this.#t,u),p=!0;if(d.has("b64")&&"boolean"!=typeof(p=this.#t.b64))throw new l('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:h}=u;if("string"!=typeof h||!h)throw new l('JWS "alg" (Algorithm) Header Parameter missing or invalid');var f="sign";switch(h.substring(0,2)){case"A1":case"A2":case"di":case"HS":case"PB":((e,t,r)=>{if(!(t instanceof Uint8Array)){if(w(t)){if("oct"===t.kty&&"string"==typeof t.k&&T(e,t,r))return;throw TypeError('JSON Web Key for symmetric algorithms must have JWK "kty" (Key Type) equal to "oct" and the JWK "k" (Key Value) present')}if(!x(t))throw TypeError(m(e,t,"CryptoKey","KeyObject","JSON Web Key","Uint8Array"));if("secret"!==t.type)throw TypeError(`${A(t)} instances for symmetric algorithms must be of type "secret"`)}})(h,e,f);break;default:((e,t,r)=>{if(w(t))switch(r){case"decrypt":case"sign":if("oct"!==t.kty&&("AKP"===t.kty&&"string"==typeof t.priv||"string"==typeof t.d)&&T(e,t,r))return;throw TypeError("JSON Web Key for this operation must be a private JWK");case"encrypt":case"verify":if("oct"!==t.kty&&void 0===t.d&&void 0===t.priv&&T(e,t,r))return;throw TypeError("JSON Web Key for this operation must be a public JWK")}if(!x(t))throw TypeError(m(e,t,"CryptoKey","KeyObject","JSON Web Key"));if("secret"===t.type)throw TypeError(`${A(t)} instances for asymmetric algorithms must not be of type "secret"`);if("public"===t.type)switch(r){case"sign":throw TypeError(`${A(t)} instances for asymmetric algorithm signing must be of type "private"`);case"decrypt":throw TypeError(`${A(t)} instances for asymmetric algorithm decryption must be of type "private"`)}if("private"===t.type)switch(r){case"verify":throw TypeError(`${A(t)} instances for asymmetric algorithm verifying must be of type "public"`);case"encrypt":throw TypeError(`${A(t)} instances for asymmetric algorithm encryption must be of type "public"`)}})(h,e,f)}p?o=n(r=i(this.#e)):(o=this.#e,r=""),this.#t?s=n(a=i(JSON.stringify(this.#t))):(a="",s=new Uint8Array);let y=function(...e){let t=new Uint8Array(e.reduce((e,{length:t})=>e+t,0)),r=0;for(let o of e)t.set(o,r),r+=o.length;return t}(s,n("."),o),S=await I(e,h),E={signature:i(await g(h,S,y)),payload:r};return this.#r&&(E.header=this.#r),this.#t&&(E.protected=a),E}}class P{#o;constructor(e){this.#o=new O(e)}setProtectedHeader(e){return this.#o.setProtectedHeader(e),this}async sign(e,t){let r=await this.#o.sign(e,t);if(void 0===r.payload)throw TypeError("use the flattened module for creating JWS with b64: false");return`${r.protected}.${r.payload}.${r.signature}`}}let D=e=>Math.floor(e.getTime()/1e3),U=/^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i;function $(e){let t,r=U.exec(e);if(!r||r[4]&&r[1])throw TypeError("Invalid time period format");let o=parseFloat(r[2]);switch(r[3].toLowerCase()){case"sec":case"secs":case"second":case"seconds":case"s":t=Math.round(o);break;case"minute":case"minutes":case"min":case"mins":case"m":t=Math.round(60*o);break;case"hour":case"hours":case"hr":case"hrs":case"h":t=Math.round(3600*o);break;case"day":case"days":case"d":t=Math.round(86400*o);break;case"week":case"weeks":case"w":t=Math.round(604800*o);break;default:t=Math.round(0x1e187e0*o)}return"-"===r[1]||"ago"===r[4]?-t:t}function F(e,t){if(!Number.isFinite(t))throw TypeError(`Invalid ${e} input`);return t}class L{#e;constructor(e){if(!S(e))throw TypeError("JWT Claims Set MUST be an object");this.#e=structuredClone(e)}data(){return r.encode(JSON.stringify(this.#e))}get iss(){return this.#e.iss}set iss(e){this.#e.iss=e}get sub(){return this.#e.sub}set sub(e){this.#e.sub=e}get aud(){return this.#e.aud}set aud(e){this.#e.aud=e}set jti(e){this.#e.jti=e}set nbf(e){"number"==typeof e?this.#e.nbf=F("setNotBefore",e):e instanceof Date?this.#e.nbf=F("setNotBefore",D(e)):this.#e.nbf=D(new Date)+$(e)}set exp(e){"number"==typeof e?this.#e.exp=F("setExpirationTime",e):e instanceof Date?this.#e.exp=F("setExpirationTime",D(e)):this.#e.exp=D(new Date)+$(e)}set iat(e){void 0===e?this.#e.iat=D(new Date):e instanceof Date?this.#e.iat=F("setIssuedAt",D(e)):"string"==typeof e?this.#e.iat=F("setIssuedAt",D(new Date)+$(e)):this.#e.iat=F("setIssuedAt",e)}}class N{#t;#n;constructor(e={}){this.#n=new L(e)}setIssuer(e){return this.#n.iss=e,this}setSubject(e){return this.#n.sub=e,this}setAudience(e){return this.#n.aud=e,this}setJti(e){return this.#n.jti=e,this}setNotBefore(e){return this.#n.nbf=e,this}setExpirationTime(e){return this.#n.exp=e,this}setIssuedAt(e){return this.#n.iat=e,this}setProtectedHeader(e){return this.#t=e,this}async sign(e,t){let r=new P(this.#n.data());if(r.setProtectedHeader(this.#t),Array.isArray(this.#t?.crit)&&this.#t.crit.includes("b64")&&!1===this.#t.b64)throw new u("JWTs MUST NOT use unencoded payload");return r.sign(e,t)}}let j=(e,t)=>{if(e.byteLength!==t.length)return!1;for(let r=0;r<e.byteLength;r++)if(e[r]!==t[r])return!1;return!0},H=e=>{let t=e.data[e.pos++];if(128&t){let r=127&t,o=0;for(let t=0;t<r;t++)o=o<<8|e.data[e.pos++];return o}return t},M=(e,t,r)=>{if(e.data[e.pos++]!==t)throw Error(r)},B=(e,t)=>{let r=e.data.subarray(e.pos,e.pos+t);return e.pos+=t,r},K=async(e,t,r,o)=>{let n,a,i="spki"===e,s=()=>i?["verify"]:["sign"];switch(r){case"PS256":case"PS384":case"PS512":n={name:"RSA-PSS",hash:`SHA-${r.slice(-3)}`},a=s();break;case"RS256":case"RS384":case"RS512":n={name:"RSASSA-PKCS1-v1_5",hash:`SHA-${r.slice(-3)}`},a=s();break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":n={name:"RSA-OAEP",hash:`SHA-${parseInt(r.slice(-3),10)||1}`},a=i?["encrypt","wrapKey"]:["decrypt","unwrapKey"];break;case"ES256":case"ES384":case"ES512":n={name:"ECDSA",namedCurve:({ES256:"P-256",ES384:"P-384",ES512:"P-521"})[r]},a=s();break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":try{let e=o.getNamedCurve(t);n="X25519"===e?{name:"X25519"}:{name:"ECDH",namedCurve:e}}catch(e){throw new c("Invalid or unsupported key format")}a=i?[]:["deriveBits"];break;case"Ed25519":case"EdDSA":n={name:"Ed25519"},a=s();break;case"ML-DSA-44":case"ML-DSA-65":case"ML-DSA-87":n={name:r},a=s();break;default:throw new c('Invalid or unsupported "alg" (Algorithm) value')}return crypto.subtle.importKey(e,t,n,o?.extractable??!!i,a)};async function q(e,t,r){let o,n,i;if("string"!=typeof e||0!==e.indexOf("-----BEGIN PRIVATE KEY-----"))throw TypeError('"pkcs8" must be PKCS#8 formatted string');return o=/(?:-----(?:BEGIN|END) PRIVATE KEY-----|\s)/g,n=a(e.replace(o,"")),i=r,t?.startsWith?.("ECDH-ES")&&((i||={}).getNamedCurve=e=>{let t,r={data:e,pos:0};return M(r,48,"Invalid PKCS#8 structure"),H(r),M(r,2,"Expected version field"),t=H(r),r.pos+=t,M(r,48,"Expected algorithm identifier"),H(r),r.pos,(e=>{let t,r=(M(e,6,"Expected algorithm OID"),t=H(e),B(e,t));if(j(r,[43,101,110]))return"X25519";if(!j(r,[42,134,72,206,61,2,1]))throw Error("Unsupported key algorithm");M(e,6,"Expected curve OID");let o=H(e),n=B(e,o);for(let{name:e,oid:t}of[{name:"P-256",oid:[42,134,72,206,61,3,1,7]},{name:"P-384",oid:[43,129,4,0,34]},{name:"P-521",oid:[43,129,4,0,35]}])if(j(n,t))return e;throw Error("Unsupported named curve")})(r)}),K("pkcs8",n,t,i)}var J=e.i(503536),z=e.i(359281);let G=new Map;function W(e){try{return JSON.parse(e)}catch{throw Error("Vertex AI requires a valid Service Account JSON as the API key")}}async function V(e){if(!e.client_email||!e.private_key)throw Error("Service Account JSON is missing required fields (client_email or private_key)");let t=e.client_email,r=G.get(t);if(r&&Date.now()<r.expiresAt-6e4)return r.token;let o=await q(e.private_key,"RS256"),n=Math.floor(Date.now()/1e3),a=await new N({iss:e.client_email,sub:e.client_email,aud:"https://oauth2.googleapis.com/token",iat:n,exp:n+3600,scope:"https://www.googleapis.com/auth/cloud-platform"}).setProtectedHeader({alg:"RS256",kid:e.private_key_id}).sign(o),i=await fetch("https://oauth2.googleapis.com/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:jwt-bearer",assertion:a})});if(!i.ok){let e=await i.text();throw Error(`Failed to exchange JWT for Vertex access token: ${i.status} ${e}`)}let s=(await i.json()).access_token;if(!s)throw Error("Vertex AI token exchange succeeded but no access_token found");return G.set(t,{token:s,expiresAt:(n+3600)*1e3}),s}let Y=new Set(["claude-3-5-sonnet","claude-3-opus","claude-3-haiku","deepseek-v3","deepseek-v3.2","deepseek-deepseek-r1","qwen3-next-80b","llama-3.1","mistral-","glm-5","meta/llama"]);class X extends J.BaseExecutor{constructor(){super("vertex",z.PROVIDERS.vertex)}async execute(e){let{credentials:t,log:r}=e;if(t.apiKey&&!t.accessToken)try{let e=W(t.apiKey);t.accessToken=await V(e)}catch(e){throw r?.error?.("VERTEX",`Failed to generate JWT token: ${e.message}`),e}return super.execute(e)}buildUrl(e,t,r=0,o=null){let n=o?.providerSpecificData?.region||"us-central1",a="unknown-project";if(o?.apiKey)try{let e=W(o.apiKey);e.project_id&&(a=e.project_id)}catch{}return[...Y].some(t=>e.startsWith(t))?`https://aiplatform.googleapis.com/v1/projects/${a}/locations/global/endpoints/openapi/chat/completions`:`https://aiplatform.googleapis.com/v1/projects/${a}/locations/${n}/publishers/google/models/${e}:${t?"streamGenerateContent?alt=sse":"generateContent"}`}buildHeaders(e,t=!0){let r={"Content-Type":"application/json"};return e.accessToken&&(r.Authorization=`Bearer ${e.accessToken}`),t&&(r.Accept="text/event-stream"),r}}e.s(["VertexExecutor",0,X],482770)},40432,e=>{"use strict";var t=e.i(503536),r=e.i(359281);class o extends t.BaseExecutor{upstreamBaseUrl;constructor(e){const t=e??function(){let e=process.env.CLIPROXYAPI_HOST||"127.0.0.1",t=parseInt(process.env.CLIPROXYAPI_PORT||String(8317),10);return`http://${e}:${t}`}();super("cliproxyapi",{id:"cliproxyapi",baseUrl:t+"/v1/chat/completions",headers:{"Content-Type":"application/json"}}),this.upstreamBaseUrl=t}buildUrl(e,t,r=0){return`${this.upstreamBaseUrl}/v1/chat/completions`}buildHeaders(e,t=!0){let r={"Content-Type":"application/json"},o=e?.apiKey||e?.accessToken;return o&&(r.Authorization=`Bearer ${o}`),t&&(r.Accept="text/event-stream"),r}transformRequest(e,t,r,o){return t&&"object"==typeof t&&t.model!==e?{...t,model:e}:t}async execute(e){let o=this.buildUrl(e.model,e.stream),n=this.buildHeaders(e.credentials,e.stream),a=this.transformRequest(e.model,e.body,e.stream,e.credentials);(0,t.mergeUpstreamExtraHeaders)(n,e.upstreamExtraHeaders);let i=AbortSignal.timeout(r.FETCH_TIMEOUT_MS),s=e.signal?(0,t.mergeAbortSignals)(e.signal,i):i,c=await fetch(o,{method:"POST",headers:n,body:JSON.stringify(a),signal:s});return c.status===r.HTTP_STATUS.RATE_LIMITED&&e.log?.warn?.("CPA",`CLIProxyAPI rate limited: ${c.status}`),{response:c,url:o,headers:n,transformedBody:a}}}e.s(["CliproxyapiExecutor",0,o])},681050,e=>e.a(async(t,r)=>{try{var o=e.i(606062),n=e.i(973033),a=e.i(714796),i=e.i(944368),s=e.i(846871),c=e.i(482191),l=e.i(77586),u=e.i(585296),d=e.i(43180),p=e.i(409400),h=e.i(398983),f=e.i(201949),m=e.i(482770),y=e.i(40432);e.i(503536);var g=t([l]);[l]=g.then?(await g)():g;let S={antigravity:new o.AntigravityExecutor,"gemini-cli":new n.GeminiCLIExecutor,github:new a.GithubExecutor,qoder:new i.QoderExecutor,kiro:new s.KiroExecutor,codex:new c.CodexExecutor,cursor:new l.CursorExecutor,cu:new l.CursorExecutor,pollinations:new d.PollinationsExecutor,pol:new d.PollinationsExecutor,"cloudflare-ai":new p.CloudflareAIExecutor,cf:new p.CloudflareAIExecutor,"opencode-zen":new h.OpencodeExecutor("opencode-zen"),"opencode-go":new h.OpencodeExecutor("opencode-go"),puter:new f.PuterExecutor,pu:new f.PuterExecutor,vertex:new m.VertexExecutor,cliproxyapi:new y.CliproxyapiExecutor,cpa:new y.CliproxyapiExecutor},w=new Map;e.s(["getExecutor",0,function(e){return S[e]?S[e]:(w.has(e)||w.set(e,new u.DefaultExecutor(e)),w.get(e))}]),r()}catch(e){r(e)}},!1),84814,e=>e.a(async(t,r)=>{try{e.i(13572);var o=e.i(543125),n=e.i(974210),a=e.i(874957),i=e.i(184533),s=e.i(435005),c=e.i(834993),l=e.i(738629),u=e.i(681050),d=e.i(412925),p=e.i(907671),h=t([l,u]);[l,u]=h.then?(await h)():h;let v=new Set(["glm"]),k="provider_limits_auto_sync_last_run";function f(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function m(e){return!!e&&!!e.provider&&!!l.USAGE_SUPPORTED_PROVIDERS.includes(e.provider)&&("oauth"===e.authType||"apikey"===e.authType&&v.has(e.provider))}function y(e,t){return Object.assign(e,{status:t})}async function g(){try{let e=await (0,c.getMachineId)();if(!e)return;await (0,i.syncToCloud)(e)}catch(e){console.error("[ProviderLimits] Error syncing refreshed credentials to cloud:",e)}}async function S(e){let t=(0,u.getExecutor)(e.provider),r={accessToken:e.accessToken,refreshToken:e.refreshToken,expiresAt:e.tokenExpiresAt,providerSpecificData:e.providerSpecificData,copilotToken:e.providerSpecificData?.copilotToken,copilotTokenExpiresAt:e.providerSpecificData?.copilotTokenExpiresAt};if(!t.needsRefresh(r))return{connection:e,refreshed:!1};let n=await t.refreshCredentials(r,console);if(!n){if("github"===e.provider&&e.accessToken)return{connection:e,refreshed:!1};throw y(Error("Failed to refresh credentials. Please re-authorize the connection."),401)}let a={updatedAt:new Date().toISOString()};return n.accessToken&&(a.accessToken=n.accessToken),n.refreshToken&&(a.refreshToken=n.refreshToken),n.expiresIn?a.tokenExpiresAt=new Date(Date.now()+1e3*n.expiresIn).toISOString():n.expiresAt&&(a.tokenExpiresAt=n.expiresAt),(n.copilotToken||n.copilotTokenExpiresAt)&&(a.providerSpecificData={...e.providerSpecificData||{},copilotToken:n.copilotToken,copilotTokenExpiresAt:n.copilotTokenExpiresAt}),await (0,o.updateProviderConnection)(e.id,a),{connection:{...e,...a,providerSpecificData:a.providerSpecificData||e.providerSpecificData},refreshed:!0}}async function w(e,t){let r="string"==typeof t.message?t.message.toLowerCase():"";if((r.includes("token expired")||r.includes("access denied")||r.includes("re-authenticate")||r.includes("unauthorized"))&&"expired"!==e.testStatus)try{await (0,o.updateProviderConnection)(e.id,{testStatus:"expired",lastErrorType:"token_expired",lastErrorAt:new Date().toISOString()})}catch(e){console.error("[ProviderLimits] Failed to sync expired status to DB:",e)}}function E(){let e=Number.parseInt(process.env.PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES??"",10);return Number.isFinite(e)&&e>0?e:70}async function b(){try{let e=(await (0,n.getSettings)())[k];return"string"==typeof e&&e.trim()?e:null}catch{return null}}async function x(e){await (0,n.updateSettings)({[k]:e})}async function A(e){var t;let r,a=await (0,o.getProviderConnectionById)(e);if(!a)throw y(Error("Connection not found"),404);if(!m(a))throw y(Error("Usage not available for this connection"),400);if("oauth"!==a.authType){let t=await (0,d.getUsageForProvider)(a);return f(t.quotas)&&(0,s.setQuotaCache)(e,a.provider,t.quotas),await w(a,t),{connection:a,usage:t}}let i=await (0,n.resolveProxyForConnection)(e),c=async e=>(0,p.runWithProxyContext)(e,async()=>{let e=a,t=await S(e);e=t.connection,t.refreshed&&await g();let r=await (0,d.getUsageForProvider)(e);return a=e,{usage:r}}),l=i?.proxy||null;try{r=await c(l)}catch(o){let t=o?.message==="fetch failed"||o?.code==="PROXY_UNREACHABLE"||o?.code==="UND_ERR_CONNECT_TIMEOUT"||o?.cause?.code==="ECONNREFUSED";if(l&&t)console.warn(`[ProviderLimits] Proxy fetch threw for ${e}, retrying without proxy:`,o?.message),r=await c(null);else throw o}return l&&(t=r.usage?.message,"string"==typeof t&&(t.includes("fetch failed")||t.includes("ECONNREFUSED")||t.includes("ETIMEDOUT")||t.includes("Proxy unreachable")||t.includes("UND_ERR_CONNECT_TIMEOUT")))&&(console.warn(`[ProviderLimits] Proxy usage returned network error for ${e}, retrying without proxy:`,r.usage.message),r=await c(null)),f(r.usage.quotas)&&(0,s.setQuotaCache)(e,a.provider,r.usage.quotas),await w(a,r.usage),{connection:a,usage:r.usage}}async function T(e={}){let{source:t="manual",concurrency:r=5}=e,n=(await (0,o.getProviderConnections)({isActive:!0})).filter(m),i=[],s={},c={};for(let e=0;e<n.length;e+=r){let o=n.slice(e,e+r);(await Promise.allSettled(o.map(async e=>{let{usage:r}=await A(e.id),o=function(e,t,r=new Date().toISOString()){return{quotas:f(e.quotas)?e.quotas:null,plan:e.plan??null,message:"string"==typeof e.message?e.message:null,fetchedAt:r,source:t}}(r,t);return{connectionId:e.id,cache:o}}))).forEach((e,t)=>{let r=o[t]?.id;if(!r)return;if("fulfilled"===e.status){i.push({connectionId:e.value.connectionId,entry:e.value.cache}),s[e.value.connectionId]=e.value.cache;return}let n=e.reason;c[r]=n?.message||"Failed to refresh provider limits"})}return i.length>0&&(0,a.setProviderLimitsCacheBatch)(i),"scheduled"===t&&await x(new Date().toISOString()),{total:n.length,succeeded:i.length,failed:n.length-i.length,caches:s,errors:c}}e.s(["getLastProviderLimitsAutoSyncTime",0,b,"getProviderLimitsSyncIntervalMinutes",0,E,"getProviderLimitsSyncIntervalMs",0,function(){return 60*E()*1e3},"syncAllProviderLimits",0,T]),r()}catch(e){r(e)}},!1),348228,e=>e.a(async(t,r)=>{try{var o=e.i(84814),n=t([o]);[o]=n.then?(await n)():n;let i=null,s=null,c=!1;async function a(){if(c)return void console.log("[ProviderLimitsSync] Skipping cycle — previous run still in progress");c=!0;let e=Date.now();try{let t=await (0,o.syncAllProviderLimits)({source:"scheduled"});console.log(`[ProviderLimitsSync] Cycle complete: ${t.succeeded}/${t.total} synced in ${Date.now()-e}ms`)}catch(e){console.warn("[ProviderLimitsSync] Cycle failed:",e.message)}finally{c=!1}}e.s(["startProviderLimitsSyncScheduler",0,function(){if(i||s)return void console.log("[ProviderLimitsSync] Scheduler already running — skipping start");let e=(0,o.getProviderLimitsSyncIntervalMs)(),t=(0,o.getProviderLimitsSyncIntervalMinutes)();console.log(`[ProviderLimitsSync] Scheduler started — interval: ${t}m`),(async()=>{let t=5e3,r=await (0,o.getLastProviderLimitsAutoSyncTime)();if(r){let o=Date.parse(r);if(Number.isFinite(o)){let r=Date.now()-o;r<e&&(t=Math.max(e-r,5e3))}}s=setTimeout(()=>{s=null,a(),i=setInterval(()=>{a()},e),i.unref?.()},t),s.unref?.()})()},"stopProviderLimitsSyncScheduler",0,function(){s&&(clearTimeout(s),s=null),i&&(clearInterval(i),i=null,console.log("[ProviderLimitsSync] Scheduler stopped"))}]),r()}catch(e){r(e)}},!1)];
|
|
43
43
|
|
|
44
44
|
//# sourceMappingURL=_0vx-r0i._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[71252,e=>{"use strict";e.s(["resolveManagedModelAlias",0,function({modelId:e,fullModel:t,providerDisplayAlias:r,existingAliases:n}){let i=function(e){let t=e.trim();if(!t)return"";let r=t.split("/").map(e=>e.trim()).filter(Boolean);return r[r.length-1]||t}(e);if(!i)return null;for(let[e,r]of Object.entries(n))if(r===t)return e;let a=r.trim(),o=[],s=new Set,l=e=>{let t=e.trim();!t||s.has(t)||(s.add(t),o.push(t))};for(let e of(l(i),a&&l(`${a}-${i}`),o))if(!(e in n)||n[e]===t)return e;for(let e=2;e<=5e3;e+=1){if(a){let r=`${a}-${i}-${e}`;if(!(r in n)||n[r]===t)return r}let r=`${i}-${e}`;if(!(r in n)||n[r]===t)return r}return null}])},738762,e=>e.a(async(t,r)=>{try{e.i(245272);var n=e.i(186920),i=e.i(385498),a=e.i(963219),o=e.i(71252),s=t([a]);function l(e){return(0,a.isOpenAICompatibleProvider)(e)||(0,a.isAnthropicCompatibleProvider)(e)}async function d(e){if(!l(e))return(0,a.getProviderAlias)(e)||e;let t=await (0,i.getProviderNodeById)(e),r=t?.prefix;return"string"==typeof r&&r.trim().length>0?r.trim():e}async function u(e,t){let r=l(e)?e:(0,a.getProviderAlias)(e)||e,i=await d(e),s=await (0,n.getModelAliases)(),u=Object.fromEntries(Object.entries(s).filter(e=>{let[,t]=e;return"string"==typeof t})),p=Array.from(new Set(t.map(e=>"string"==typeof e?e.trim():"").filter(Boolean))),c=new Set(p.map(e=>`${r}/${e}`)),m=[];for(let[e,t]of Object.entries(u))t.startsWith(`${r}/`)&&(c.has(t)||(await (0,n.deleteModelAlias)(e),delete u[e],m.push(e)));let h=[];for(let e of p){let t=`${r}/${e}`,a=(0,o.resolveManagedModelAlias)({modelId:e,fullModel:t,providerDisplayAlias:i,existingAliases:u});a&&(u[a]!==t&&(await (0,n.setModelAlias)(a,t),u[a]=t),h.push(a))}return{assignedAliases:h,removedAliases:m,storagePrefix:r}}[a]=s.then?(await s)():s,e.s(["syncManagedAvailableModelAliases",0,u,"usesManagedAvailableModels",0,function(e){return"openrouter"===e||l(e)}]),r()}catch(e){r(e)}},!1),599630,e=>e.a(async(t,r)=>{try{var n=e.i(89171);e.i(180725);var i=e.i(385498),a=e.i(186920),o=e.i(738762),s=e.i(397506),l=e.i(235328),d=e.i(620415),u=e.i(617325),p=e.i(878947),c=t([o,s,u]);function m(e){return e&&"object"==typeof e&&!Array.isArray(e)?e:{}}function h(e){return"string"==typeof e&&e.trim().length>0?e.trim():null}function f(e){let t=m(e),r=h(t.id)||"",n=h(t.name)||r,i=h(t.source)||"auto-sync",a=h(t.apiFormat)||"chat-completions",o=Array.isArray(t.supportedEndpoints)?Array.from(new Set(t.supportedEndpoints.map(e=>h(e)).filter(e=>!!e))).sort():["chat"];return{id:r,name:n,source:i,apiFormat:a,supportedEndpoints:o}}async function y(e,{params:t}){let r=Date.now(),{id:u}=await t,c="unknown",g=null;try{let t,y;if(!await (0,l.isAuthenticated)(e)&&!(0,d.isModelSyncInternalRequest)(e))return n.NextResponse.json({error:{message:"Authentication required",type:"invalid_api_key"}},{status:401});let v=await (0,i.getProviderConnectionById)(u);if(!v)return n.NextResponse.json({error:"Connection not found"},{status:404});c=h(v.provider)||"unknown",t=m(v),y=m(t.providerSpecificData),g=h(t.displayName)||h(t.email)||h(y.tag)||h(t.name)||h(t.provider)||(h(t.id)?`connection:${String(t.id).slice(0,8)}`:null)||"unknown";let w=new URL(e.url).origin,R=`${w}/api/providers/${u}/models`,A=await fetch(R,{method:"GET",headers:{cookie:e.headers.get("cookie")||"",...(0,d.buildModelSyncInternalHeaders)()}}),E=Date.now()-r,T=await A.json();if(!A.ok)return await (0,s.saveCallLog)({method:"GET",path:`/api/providers/${u}/models`,status:A.status,model:"model-sync",provider:c,sourceFormat:"-",connectionId:u,duration:E,error:T.error||`HTTP ${A.status}`,requestType:"model-sync"}),n.NextResponse.json({error:T.error||"Failed to fetch models"},{status:A.status});let C=T.models||[],b=new Set((0,p.getModelsByProviderId)(c).map(e=>e.id)),M=C.map(e=>({id:e.id||e.name||e.model,name:e.name||e.displayName||e.id||e.model,source:"auto-sync",...Array.isArray(e.supportedEndpoints)&&e.supportedEndpoints.length>0?{supportedEndpoints:e.supportedEndpoints}:{},..."number"==typeof e.inputTokenLimit?{inputTokenLimit:e.inputTokenLimit}:{},..."number"==typeof e.outputTokenLimit?{outputTokenLimit:e.outputTokenLimit}:{},..."string"==typeof e.description?{description:e.description}:{},...!0===e.supportsThinking?{supportsThinking:!0}:{}})).filter(e=>e.id&&!b.has(e.id)),k=await (0,a.getCustomModels)(c),x=await (0,a.replaceCustomModels)(c,M);if("gemini"===c)try{let e=M.map(e=>({id:e.id,name:e.name||e.id,source:"api-sync",...e.supportedEndpoints?{supportedEndpoints:e.supportedEndpoints}:{},..."number"==typeof e.inputTokenLimit?{inputTokenLimit:e.inputTokenLimit}:{},..."number"==typeof e.outputTokenLimit?{outputTokenLimit:e.outputTokenLimit}:{},..."string"==typeof e.description?{description:e.description}:{},...!0===e.supportsThinking?{supportsThinking:!0}:{}}));await (0,a.replaceSyncedAvailableModelsForConnection)(c,u,e)}catch(e){console.error("Failed to union synced available models for gemini:",e)}let S=function(e,t){let r=Array.isArray(e)?e:[],n=Array.isArray(t)?t:[],i=new Map(r.map(e=>f(e)).filter(e=>e.id).map(e=>[e.id,JSON.stringify(e)])),a=new Map(n.map(e=>f(e)).filter(e=>e.id).map(e=>[e.id,JSON.stringify(e)])),o=0,s=0,l=0;for(let[e,t]of a.entries()){let r=i.get(e);if(!r){o+=1;continue}r!==t&&(l+=1)}for(let e of i.keys())a.has(e)||(s+=1);return{added:o,removed:s,updated:l,total:o+s+l}}(k,x),N=0;return(0,o.usesManagedAvailableModels)(c)&&(N=(await (0,o.syncManagedAvailableModelAliases)(c,M.map(e=>e.id))).assignedAliases.length),S.total>0&&await (0,s.saveCallLog)({method:"GET",path:`/api/providers/${u}/models`,status:200,model:"model-sync",provider:c,sourceFormat:"-",connectionId:u,duration:Date.now()-r,requestType:"model-sync",responseBody:{syncedModels:M.length,syncedAliases:N,provider:c,channel:g,modelChanges:S}}),n.NextResponse.json({ok:!0,provider:c,syncedModels:x.length,syncedAliases:N,modelChanges:S,logged:S.total>0,models:x})}catch(e){return await (0,s.saveCallLog)({method:"POST",path:`/api/providers/${u}/sync-models`,status:500,model:"model-sync",provider:c,sourceFormat:"-",connectionId:u,duration:Date.now()-r,error:e.message||"Sync failed",requestType:"model-sync",...g?{responseBody:{channel:g}}:{}}).catch(()=>{}),n.NextResponse.json({error:e.message||"Failed to sync models"},{status:500})}}[o,s,u]=c.then?(await c)():c,e.s(["POST",0,y]),r()}catch(e){r(e)}},!1),571060,e=>e.a(async(t,r)=>{try{var n=e.i(747909),i=e.i(174017),a=e.i(996250),o=e.i(759756),s=e.i(561916),l=e.i(174677),d=e.i(869741),u=e.i(316795),p=e.i(487718),c=e.i(995169),m=e.i(47587),h=e.i(666012),f=e.i(570101),y=e.i(626937),g=e.i(10372),v=e.i(193695);e.i(820232);var w=e.i(600220),R=e.i(599630),A=t([R]);[R]=A.then?(await A)():A;let T=new n.AppRouteRouteModule({definition:{kind:i.RouteKind.APP_ROUTE,page:"/api/providers/[id]/sync-models/route",pathname:"/api/providers/[id]/sync-models",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/providers/[id]/sync-models/route.ts",nextConfigOutput:"standalone",userland:R,...{}}),{workAsyncStorage:C,workUnitAsyncStorage:b,serverHooks:M}=T;async function E(e,t,r){r.requestMeta&&(0,o.setRequestMeta)(e,r.requestMeta),T.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let n="/api/providers/[id]/sync-models/route";n=n.replace(/\/index$/,"")||"/";let a=await T.prepare(e,t,{srcPage:n,multiZoneDraftMode:!1});if(!a)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:R,params:A,nextConfig:E,parsedUrl:C,isDraftMode:b,prerenderManifest:M,routerServerContext:k,isOnDemandRevalidate:x,revalidateOnlyGenerated:S,resolvedPathname:N,clientReferenceManifest:P,serverActionsManifest:O}=a,$=(0,d.normalizeAppPath)(n),I=!!(M.dynamicRoutes[$]||M.routes[N]),_=async()=>((null==k?void 0:k.render404)?await k.render404(e,t,C,!1):t.end("This page could not be found"),null);if(I&&!b){let e=!!M.routes[N],t=M.dynamicRoutes[$];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await _();throw new v.NoFallbackError}}let q=null;!I||T.isDev||b||(q=N,q="/index"===q?"/":q);let L=!0===T.isDev||!I,D=I&&!L;O&&P&&(0,l.setManifestsSingleton)({page:n,clientReferenceManifest:P,serverActionsManifest:O});let H=e.method||"GET",j=(0,s.getTracer)(),U=j.getActiveScopeSpan(),F=!!(null==k?void 0:k.isWrappedByNextServer),B=!!(0,o.getRequestMeta)(e,"minimalMode"),K=(0,o.getRequestMeta)(e,"incrementalCache")||await T.getIncrementalCache(e,E,M,B);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let G={params:A,previewProps:M.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:L,incrementalCache:K,cacheLifeProfiles:E.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,i)=>T.onRequestError(e,t,n,i,k)},sharedContext:{buildId:R}},W=new u.NodeNextRequest(e),V=new u.NodeNextResponse(t),X=p.NextRequestAdapter.fromNodeNextRequest(W,(0,p.signalFromNodeResponse)(t));try{let a,o=async e=>T.handle(X,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=j.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let i=r.get("next.route");if(i){let t=`${H} ${i}`;e.setAttributes({"next.route":i,"http.route":i,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",i),a.updateName(t))}else e.updateName(`${H} ${n}`)}),l=async a=>{var s,l;let d=async({previousCacheEntry:i})=>{try{if(!B&&x&&S&&!i)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await o(a);e.fetchMetrics=G.renderOpts.fetchMetrics;let s=G.renderOpts.pendingWaitUntil;s&&r.waitUntil&&(r.waitUntil(s),s=void 0);let l=G.renderOpts.collectedTags;if(!I)return await (0,h.sendResponse)(W,V,n,G.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[g.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,i=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:i}}}}catch(t){throw(null==i?void 0:i.isStale)&&await T.onRequestError(e,t,{routerKind:"App Router",routePath:n,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:x})},!1,k),t}},u=await T.handleResponse({req:e,nextConfig:E,cacheKey:q,routeKind:i.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:M,isRoutePPREnabled:!1,isOnDemandRevalidate:x,revalidateOnlyGenerated:S,responseGenerator:d,waitUntil:r.waitUntil,isMinimalMode:B});if(!I)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",x?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,f.fromNodeOutgoingHttpHeaders)(u.value.headers);return B&&I||p.delete(g.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,y.getCacheControlHeader)(u.cacheControl)),await (0,h.sendResponse)(W,V,new Response(u.value.body,{headers:p,status:u.value.status||200})),null};F&&U?await l(U):(a=j.getActiveScopeSpan(),await j.withPropagatedContext(e.headers,()=>j.trace(c.BaseServerSpan.handleRequest,{spanName:`${H} ${n}`,kind:s.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},l),void 0,!F))}catch(t){if(t instanceof v.NoFallbackError||await T.onRequestError(e,t,{routerKind:"App Router",routePath:$,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:x})},!1,k),I)throw t;return await (0,h.sendResponse)(W,V,new Response(null,{status:500})),null}}e.s(["handler",0,E,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:b})},"routeModule",0,T,"serverHooks",0,M,"workAsyncStorage",0,C,"workUnitAsyncStorage",0,b]),r()}catch(e){r(e)}},!1)];
|
|
1
|
+
module.exports=[71252,e=>{"use strict";e.s(["resolveManagedModelAlias",0,function({modelId:e,fullModel:t,providerDisplayAlias:r,existingAliases:n}){let i=function(e){let t=e.trim();if(!t)return"";let r=t.split("/").map(e=>e.trim()).filter(Boolean);return r[r.length-1]||t}(e);if(!i)return null;for(let[e,r]of Object.entries(n))if(r===t)return e;let a=r.trim(),o=[],s=new Set,l=e=>{let t=e.trim();!t||s.has(t)||(s.add(t),o.push(t))};for(let e of(l(i),a&&l(`${a}-${i}`),o))if(!(e in n)||n[e]===t)return e;for(let e=2;e<=5e3;e+=1){if(a){let r=`${a}-${i}-${e}`;if(!(r in n)||n[r]===t)return r}let r=`${i}-${e}`;if(!(r in n)||n[r]===t)return r}return null}])},738762,e=>e.a(async(t,r)=>{try{e.i(245272);var n=e.i(186920),i=e.i(385498),a=e.i(963219),o=e.i(71252),s=t([a]);function l(e){return(0,a.isOpenAICompatibleProvider)(e)||(0,a.isAnthropicCompatibleProvider)(e)}async function d(e){if(!l(e))return(0,a.getProviderAlias)(e)||e;let t=await (0,i.getProviderNodeById)(e),r=t?.prefix;return"string"==typeof r&&r.trim().length>0?r.trim():e}async function u(e,t){let r=l(e)?e:(0,a.getProviderAlias)(e)||e,i=await d(e),s=await (0,n.getModelAliases)(),u=Object.fromEntries(Object.entries(s).filter(e=>{let[,t]=e;return"string"==typeof t})),p=Array.from(new Set(t.map(e=>"string"==typeof e?e.trim():"").filter(Boolean))),c=new Set(p.map(e=>`${r}/${e}`)),m=[];for(let[e,t]of Object.entries(u))t.startsWith(`${r}/`)&&(c.has(t)||(await (0,n.deleteModelAlias)(e),delete u[e],m.push(e)));let h=[];for(let e of p){let t=`${r}/${e}`,a=(0,o.resolveManagedModelAlias)({modelId:e,fullModel:t,providerDisplayAlias:i,existingAliases:u});a&&(u[a]!==t&&(await (0,n.setModelAlias)(a,t),u[a]=t),h.push(a))}return{assignedAliases:h,removedAliases:m,storagePrefix:r}}[a]=s.then?(await s)():s,e.s(["syncManagedAvailableModelAliases",0,u,"usesManagedAvailableModels",0,function(e){return"openrouter"===e||l(e)}]),r()}catch(e){r(e)}},!1),599630,e=>e.a(async(t,r)=>{try{var n=e.i(89171);e.i(180725);var i=e.i(385498),a=e.i(186920),o=e.i(738762),s=e.i(397506),l=e.i(235328),d=e.i(620415),u=e.i(617325),p=e.i(878947),c=t([o,s,u]);function m(e){return e&&"object"==typeof e&&!Array.isArray(e)?e:{}}function h(e){return"string"==typeof e&&e.trim().length>0?e.trim():null}function f(e){let t=m(e),r=h(t.id)||"",n=h(t.name)||r,i=h(t.source)||"auto-sync",a=h(t.apiFormat)||"chat-completions",o=Array.isArray(t.supportedEndpoints)?Array.from(new Set(t.supportedEndpoints.map(e=>h(e)).filter(e=>!!e))).sort():["chat"];return{id:r,name:n,source:i,apiFormat:a,supportedEndpoints:o}}async function y(e,{params:t}){let r=Date.now(),{id:u}=await t,c="unknown",g=null;try{let t,y;if(!await (0,l.isAuthenticated)(e)&&!(0,d.isModelSyncInternalRequest)(e))return n.NextResponse.json({error:{message:"Authentication required",type:"invalid_api_key"}},{status:401});let v=await (0,i.getProviderConnectionById)(u);if(!v)return n.NextResponse.json({error:"Connection not found"},{status:404});c=h(v.provider)||"unknown",t=m(v),y=m(t.providerSpecificData),g=h(t.displayName)||h(t.email)||h(y.tag)||h(t.name)||h(t.provider)||(h(t.id)?`connection:${String(t.id).slice(0,8)}`:null)||"unknown";let w=new URL(e.url).origin,R=`${w}/api/providers/${encodeURIComponent(u)}/models`,A=await fetch(R,{method:"GET",headers:{cookie:e.headers.get("cookie")||"",...(0,d.buildModelSyncInternalHeaders)()}}),E=Date.now()-r,T=await A.json();if(!A.ok)return await (0,s.saveCallLog)({method:"GET",path:`/api/providers/${u}/models`,status:A.status,model:"model-sync",provider:c,sourceFormat:"-",connectionId:u,duration:E,error:T.error||`HTTP ${A.status}`,requestType:"model-sync"}),n.NextResponse.json({error:T.error||"Failed to fetch models"},{status:A.status});let C=T.models||[],b=new Set((0,p.getModelsByProviderId)(c).map(e=>e.id)),M=C.map(e=>({id:e.id||e.name||e.model,name:e.name||e.displayName||e.id||e.model,source:"auto-sync",...Array.isArray(e.supportedEndpoints)&&e.supportedEndpoints.length>0?{supportedEndpoints:e.supportedEndpoints}:{},..."number"==typeof e.inputTokenLimit?{inputTokenLimit:e.inputTokenLimit}:{},..."number"==typeof e.outputTokenLimit?{outputTokenLimit:e.outputTokenLimit}:{},..."string"==typeof e.description?{description:e.description}:{},...!0===e.supportsThinking?{supportsThinking:!0}:{}})).filter(e=>e.id&&!b.has(e.id)),k=await (0,a.getCustomModels)(c),x=await (0,a.replaceCustomModels)(c,M);if("gemini"===c)try{let e=M.map(e=>({id:e.id,name:e.name||e.id,source:"api-sync",...e.supportedEndpoints?{supportedEndpoints:e.supportedEndpoints}:{},..."number"==typeof e.inputTokenLimit?{inputTokenLimit:e.inputTokenLimit}:{},..."number"==typeof e.outputTokenLimit?{outputTokenLimit:e.outputTokenLimit}:{},..."string"==typeof e.description?{description:e.description}:{},...!0===e.supportsThinking?{supportsThinking:!0}:{}}));await (0,a.replaceSyncedAvailableModelsForConnection)(c,u,e)}catch(e){console.error("Failed to union synced available models for gemini:",e)}let S=function(e,t){let r=Array.isArray(e)?e:[],n=Array.isArray(t)?t:[],i=new Map(r.map(e=>f(e)).filter(e=>e.id).map(e=>[e.id,JSON.stringify(e)])),a=new Map(n.map(e=>f(e)).filter(e=>e.id).map(e=>[e.id,JSON.stringify(e)])),o=0,s=0,l=0;for(let[e,t]of a.entries()){let r=i.get(e);if(!r){o+=1;continue}r!==t&&(l+=1)}for(let e of i.keys())a.has(e)||(s+=1);return{added:o,removed:s,updated:l,total:o+s+l}}(k,x),N=0;return(0,o.usesManagedAvailableModels)(c)&&(N=(await (0,o.syncManagedAvailableModelAliases)(c,M.map(e=>e.id))).assignedAliases.length),S.total>0&&await (0,s.saveCallLog)({method:"GET",path:`/api/providers/${u}/models`,status:200,model:"model-sync",provider:c,sourceFormat:"-",connectionId:u,duration:Date.now()-r,requestType:"model-sync",responseBody:{syncedModels:M.length,syncedAliases:N,provider:c,channel:g,modelChanges:S}}),n.NextResponse.json({ok:!0,provider:c,syncedModels:x.length,syncedAliases:N,modelChanges:S,logged:S.total>0,models:x})}catch(e){return await (0,s.saveCallLog)({method:"POST",path:`/api/providers/${u}/sync-models`,status:500,model:"model-sync",provider:c,sourceFormat:"-",connectionId:u,duration:Date.now()-r,error:e.message||"Sync failed",requestType:"model-sync",...g?{responseBody:{channel:g}}:{}}).catch(()=>{}),n.NextResponse.json({error:e.message||"Failed to sync models"},{status:500})}}[o,s,u]=c.then?(await c)():c,e.s(["POST",0,y]),r()}catch(e){r(e)}},!1),571060,e=>e.a(async(t,r)=>{try{var n=e.i(747909),i=e.i(174017),a=e.i(996250),o=e.i(759756),s=e.i(561916),l=e.i(174677),d=e.i(869741),u=e.i(316795),p=e.i(487718),c=e.i(995169),m=e.i(47587),h=e.i(666012),f=e.i(570101),y=e.i(626937),g=e.i(10372),v=e.i(193695);e.i(820232);var w=e.i(600220),R=e.i(599630),A=t([R]);[R]=A.then?(await A)():A;let T=new n.AppRouteRouteModule({definition:{kind:i.RouteKind.APP_ROUTE,page:"/api/providers/[id]/sync-models/route",pathname:"/api/providers/[id]/sync-models",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/providers/[id]/sync-models/route.ts",nextConfigOutput:"standalone",userland:R,...{}}),{workAsyncStorage:C,workUnitAsyncStorage:b,serverHooks:M}=T;async function E(e,t,r){r.requestMeta&&(0,o.setRequestMeta)(e,r.requestMeta),T.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let n="/api/providers/[id]/sync-models/route";n=n.replace(/\/index$/,"")||"/";let a=await T.prepare(e,t,{srcPage:n,multiZoneDraftMode:!1});if(!a)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:R,params:A,nextConfig:E,parsedUrl:C,isDraftMode:b,prerenderManifest:M,routerServerContext:k,isOnDemandRevalidate:x,revalidateOnlyGenerated:S,resolvedPathname:N,clientReferenceManifest:P,serverActionsManifest:O}=a,$=(0,d.normalizeAppPath)(n),I=!!(M.dynamicRoutes[$]||M.routes[N]),_=async()=>((null==k?void 0:k.render404)?await k.render404(e,t,C,!1):t.end("This page could not be found"),null);if(I&&!b){let e=!!M.routes[N],t=M.dynamicRoutes[$];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await _();throw new v.NoFallbackError}}let q=null;!I||T.isDev||b||(q=N,q="/index"===q?"/":q);let L=!0===T.isDev||!I,D=I&&!L;O&&P&&(0,l.setManifestsSingleton)({page:n,clientReferenceManifest:P,serverActionsManifest:O});let H=e.method||"GET",j=(0,s.getTracer)(),U=j.getActiveScopeSpan(),F=!!(null==k?void 0:k.isWrappedByNextServer),B=!!(0,o.getRequestMeta)(e,"minimalMode"),K=(0,o.getRequestMeta)(e,"incrementalCache")||await T.getIncrementalCache(e,E,M,B);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let G={params:A,previewProps:M.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:L,incrementalCache:K,cacheLifeProfiles:E.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,i)=>T.onRequestError(e,t,n,i,k)},sharedContext:{buildId:R}},W=new u.NodeNextRequest(e),V=new u.NodeNextResponse(t),X=p.NextRequestAdapter.fromNodeNextRequest(W,(0,p.signalFromNodeResponse)(t));try{let a,o=async e=>T.handle(X,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=j.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let i=r.get("next.route");if(i){let t=`${H} ${i}`;e.setAttributes({"next.route":i,"http.route":i,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",i),a.updateName(t))}else e.updateName(`${H} ${n}`)}),l=async a=>{var s,l;let d=async({previousCacheEntry:i})=>{try{if(!B&&x&&S&&!i)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await o(a);e.fetchMetrics=G.renderOpts.fetchMetrics;let s=G.renderOpts.pendingWaitUntil;s&&r.waitUntil&&(r.waitUntil(s),s=void 0);let l=G.renderOpts.collectedTags;if(!I)return await (0,h.sendResponse)(W,V,n,G.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[g.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,i=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:i}}}}catch(t){throw(null==i?void 0:i.isStale)&&await T.onRequestError(e,t,{routerKind:"App Router",routePath:n,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:x})},!1,k),t}},u=await T.handleResponse({req:e,nextConfig:E,cacheKey:q,routeKind:i.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:M,isRoutePPREnabled:!1,isOnDemandRevalidate:x,revalidateOnlyGenerated:S,responseGenerator:d,waitUntil:r.waitUntil,isMinimalMode:B});if(!I)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",x?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,f.fromNodeOutgoingHttpHeaders)(u.value.headers);return B&&I||p.delete(g.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,y.getCacheControlHeader)(u.cacheControl)),await (0,h.sendResponse)(W,V,new Response(u.value.body,{headers:p,status:u.value.status||200})),null};F&&U?await l(U):(a=j.getActiveScopeSpan(),await j.withPropagatedContext(e.headers,()=>j.trace(c.BaseServerSpan.handleRequest,{spanName:`${H} ${n}`,kind:s.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},l),void 0,!F))}catch(t){if(t instanceof v.NoFallbackError||await T.onRequestError(e,t,{routerKind:"App Router",routePath:$,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:x})},!1,k),I)throw t;return await (0,h.sendResponse)(W,V,new Response(null,{status:500})),null}}e.s(["handler",0,E,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:b})},"routeModule",0,T,"serverHooks",0,M,"workAsyncStorage",0,C,"workUnitAsyncStorage",0,b]),r()}catch(e){r(e)}},!1)];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_0w4f3bm._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[815058,e=>e.a(async(t,r)=>{try{var a=e.i(745015),n=e.i(89171),s=e.i(924868),o=e.i(814747),i=e.i(266240),l=e.i(841788),d=e.i(197892),u=e.i(676088),c=e.i(200392);e.i(245272);var p=e.i(125852),h=e.i(195975),m=t([u,c]);[u,c]=m.then?(await m)():m;let y=()=>(0,i.getCliPrimaryConfigPath)("droid"),v=async()=>{try{let e=y(),t=await s.default.readFile(e,"utf-8");return JSON.parse(t)}catch(e){if("ENOENT"===e.code)return null;throw e}};async function f(){try{let e=await (0,i.getCliRuntimeStatus)("droid");if(!e.installed||!e.runnable)return n.NextResponse.json({installed:e.installed,runnable:e.runnable,command:e.command,commandPath:e.commandPath,runtimeMode:e.runtimeMode,reason:e.reason,settings:null,message:e.installed&&!e.runnable?"Factory Droid CLI is installed but not runnable":"Factory Droid CLI is not installed"});let t=await v();return n.NextResponse.json({installed:e.installed,runnable:e.runnable,command:e.command,commandPath:e.commandPath,runtimeMode:e.runtimeMode,reason:e.reason,settings:t,hasOmniRoute:!!t&&!!t.customModels&&t.customModels.some(e=>"custom:OmniRoute-0"===e.id),settingsPath:y()})}catch(e){return console.log("Error checking droid settings:",e),n.NextResponse.json({error:"Failed to check droid settings"},{status:500})}}async function g(e){let t;try{t=await e.json()}catch{return n.NextResponse.json({error:{message:"Invalid request",details:[{field:"body",message:"Invalid JSON body"}]}},{status:400})}try{let e=(0,i.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});let r=(0,c.validateBody)(u.cliModelConfigSchema,t);if((0,c.isValidationFailure)(r))return n.NextResponse.json({error:r.error},{status:400});let{baseUrl:a,model:h}=r.data,{apiKey:m}=r.data,f="string"==typeof t?.keyId?t.keyId.trim():null;if(f)try{let e=await (0,p.getApiKeyById)(f);e?.key&&(m=e.key)}catch{}let g=o.default.dirname(y()),R=y();await s.default.mkdir(g,{recursive:!0}),await (0,l.createBackup)("droid",R);let v={};try{let e=await s.default.readFile(R,"utf-8");v=JSON.parse(e)}catch{}v.customModels||(v.customModels=[]),v.customModels=v.customModels.filter(e=>"custom:OmniRoute-0"!==e.id);let w=a.endsWith("/v1")?a:`${a}/v1`,E={model:h,id:"custom:OmniRoute-0",index:0,baseUrl:w,apiKey:m||"your_api_key",displayName:h,maxOutputTokens:131072,noImageSupport:!1,provider:"openai"};v.customModels.unshift(E),await s.default.writeFile(R,JSON.stringify(v,null,2));try{(0,d.saveCliToolLastConfigured)("droid")}catch{}return n.NextResponse.json({success:!0,message:"Factory Droid settings applied successfully!",settingsPath:R})}catch(e){return console.log("Error updating droid settings:",e),n.NextResponse.json({error:"Failed to update droid settings"},{status:500})}}async function R(){try{let e=(0,i.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});let t=y();await (0,l.createBackup)("droid",t);let r={};try{let e=await s.default.readFile(t,"utf-8");r=JSON.parse(e)}catch(e){if("ENOENT"===e.code)return n.NextResponse.json({success:!0,message:"No settings file to reset"});throw e}r.customModels&&(r.customModels=r.customModels.filter(e=>"custom:OmniRoute-0"!==e.id),0===r.customModels.length&&delete r.customModels),await s.default.writeFile(t,JSON.stringify(r,null,2));try{(0,d.deleteCliToolLastConfigured)("droid")}catch{}return n.NextResponse.json({success:!0,message:"OmniRoute settings removed successfully"})}catch(e){return console.log("Error resetting droid settings:",e),n.NextResponse.json({error:"Failed to reset droid settings"},{status:500})}}(0,h.ensureServerEntryExports)([f,g,R]),(0,a.registerServerReference)(f,"00e98308c3f0a409d941478ddee6a202c8487725cc",null),(0,a.registerServerReference)(g,"40703c801d09d8b65179c50d0aec89767794d315f2",null),(0,a.registerServerReference)(R,"00fd999caa2457bce4bd0fef174e0a541a6eb374c8",null),e.s(["DELETE",0,R,"GET",0,f,"POST",0,g]),r()}catch(e){r(e)}},!1),122141,e=>e.a(async(t,r)=>{try{var a=e.i(747909),n=e.i(174017),s=e.i(996250),o=e.i(759756),i=e.i(561916),l=e.i(174677),d=e.i(869741),u=e.i(316795),c=e.i(487718),p=e.i(995169),h=e.i(47587),m=e.i(666012),f=e.i(570101),g=e.i(626937),R=e.i(10372),y=e.i(193695);e.i(820232);var v=e.i(600220),w=e.i(815058),E=t([w]);[w]=E.then?(await E)():E;let N=new a.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/cli-tools/droid-settings/route",pathname:"/api/cli-tools/droid-settings",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/cli-tools/droid-settings/route.ts",nextConfigOutput:"standalone",userland:w,...{}}),{workAsyncStorage:x,workUnitAsyncStorage:b,serverHooks:O}=N;async function C(e,t,r){r.requestMeta&&(0,o.setRequestMeta)(e,r.requestMeta),N.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let a="/api/cli-tools/droid-settings/route";a=a.replace(/\/index$/,"")||"/";let s=await N.prepare(e,t,{srcPage:a,multiZoneDraftMode:!1});if(!s)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:w,params:E,nextConfig:C,parsedUrl:x,isDraftMode:b,prerenderManifest:O,routerServerContext:S,isOnDemandRevalidate:A,revalidateOnlyGenerated:T,resolvedPathname:M,clientReferenceManifest:P,serverActionsManifest:k}=s,I=(0,d.normalizeAppPath)(a),_=!!(O.dynamicRoutes[I]||O.routes[M]),j=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,x,!1):t.end("This page could not be found"),null);if(_&&!b){let e=!!O.routes[M],t=O.dynamicRoutes[I];if(t&&!1===t.fallback&&!e){if(C.adapterPath)return await j();throw new y.NoFallbackError}}let F=null;!_||N.isDev||b||(F=M,F="/index"===F?"/":F);let q=!0===N.isDev||!_,D=_&&!q;k&&P&&(0,l.setManifestsSingleton)({page:a,clientReferenceManifest:P,serverActionsManifest:k});let H=e.method||"GET",U=(0,i.getTracer)(),B=U.getActiveScopeSpan(),K=!!(null==S?void 0:S.isWrappedByNextServer),L=!!(0,o.getRequestMeta)(e,"minimalMode"),$=(0,o.getRequestMeta)(e,"incrementalCache")||await N.getIncrementalCache(e,C,O,L);null==$||$.resetRequestCache(),globalThis.__incrementalCache=$;let J={params:E,previewProps:O.preview,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:q,incrementalCache:$,cacheLifeProfiles:C.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>N.onRequestError(e,t,a,n,S)},sharedContext:{buildId:w}},W=new u.NodeNextRequest(e),G=new u.NodeNextResponse(t),V=c.NextRequestAdapter.fromNodeNextRequest(W,(0,c.signalFromNodeResponse)(t));try{let s,o=async e=>N.handle(V,J).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=U.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${H} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),s&&s!==e&&(s.setAttribute("http.route",n),s.updateName(t))}else e.updateName(`${H} ${a}`)}),l=async s=>{var i,l;let d=async({previousCacheEntry:n})=>{try{if(!L&&A&&T&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await o(s);e.fetchMetrics=J.renderOpts.fetchMetrics;let i=J.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let l=J.renderOpts.collectedTags;if(!_)return await (0,m.sendResponse)(W,G,a,J.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(a.headers);l&&(t[R.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==J.renderOpts.collectedRevalidate&&!(J.renderOpts.collectedRevalidate>=R.INFINITE_CACHE)&&J.renderOpts.collectedRevalidate,n=void 0===J.renderOpts.collectedExpire||J.renderOpts.collectedExpire>=R.INFINITE_CACHE?void 0:J.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await N.onRequestError(e,t,{routerKind:"App Router",routePath:a,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:A})},!1,S),t}},u=await N.handleResponse({req:e,nextConfig:C,cacheKey:F,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:O,isRoutePPREnabled:!1,isOnDemandRevalidate:A,revalidateOnlyGenerated:T,responseGenerator:d,waitUntil:r.waitUntil,isMinimalMode:L});if(!_)return null;if((null==u||null==(i=u.value)?void 0:i.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});L||t.setHeader("x-nextjs-cache",A?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,f.fromNodeOutgoingHttpHeaders)(u.value.headers);return L&&_||c.delete(R.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,g.getCacheControlHeader)(u.cacheControl)),await (0,m.sendResponse)(W,G,new Response(u.value.body,{headers:c,status:u.value.status||200})),null};K&&B?await l(B):(s=U.getActiveScopeSpan(),await U.withPropagatedContext(e.headers,()=>U.trace(p.BaseServerSpan.handleRequest,{spanName:`${H} ${a}`,kind:i.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},l),void 0,!K))}catch(t){if(t instanceof y.NoFallbackError||await N.onRequestError(e,t,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:A})},!1,S),_)throw t;return await (0,m.sendResponse)(W,G,new Response(null,{status:500})),null}}e.s(["handler",0,C,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:x,workUnitAsyncStorage:b})},"routeModule",0,N,"serverHooks",0,O,"workAsyncStorage",0,x,"workUnitAsyncStorage",0,b]),r()}catch(e){r(e)}},!1)];
|
|
1
|
+
module.exports=[815058,e=>e.a(async(t,r)=>{try{var a=e.i(745015),n=e.i(89171),s=e.i(924868),o=e.i(814747),i=e.i(266240),l=e.i(841788),d=e.i(197892),u=e.i(676088),c=e.i(200392);e.i(245272);var p=e.i(125852),h=e.i(195975),m=t([u,c]);[u,c]=m.then?(await m)():m;let y=()=>(0,i.getCliPrimaryConfigPath)("droid"),v=async()=>{try{let e=y(),t=await s.default.readFile(e,"utf-8");return JSON.parse(t)}catch(e){if("ENOENT"===e.code)return null;throw e}};async function f(){try{let e=await (0,i.getCliRuntimeStatus)("droid");if(!e.installed||!e.runnable)return n.NextResponse.json({installed:e.installed,runnable:e.runnable,command:e.command,commandPath:e.commandPath,runtimeMode:e.runtimeMode,reason:e.reason,settings:null,message:e.installed&&!e.runnable?"Factory Droid CLI is installed but not runnable":"Factory Droid CLI is not installed"});let t=await v();return n.NextResponse.json({installed:e.installed,runnable:e.runnable,command:e.command,commandPath:e.commandPath,runtimeMode:e.runtimeMode,reason:e.reason,settings:t,hasOmniRoute:!!t&&!!t.customModels&&t.customModels.some(e=>"custom:OmniRoute-0"===e.id),settingsPath:y()})}catch(e){return console.log("Error checking droid settings:",e),n.NextResponse.json({error:"Failed to check droid settings"},{status:500})}}async function g(e){let t;try{t=await e.json()}catch{return n.NextResponse.json({error:{message:"Invalid request",details:[{field:"body",message:"Invalid JSON body"}]}},{status:400})}try{let e=(0,i.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});let r=(0,c.validateBody)(u.cliModelConfigSchema,t);if((0,c.isValidationFailure)(r))return n.NextResponse.json({error:r.error},{status:400});let{baseUrl:a,model:h}=r.data,{apiKey:m}=r.data,f="string"==typeof t?.keyId?t.keyId.trim():null;if(f)try{let e=await (0,p.getApiKeyById)(f);e?.key&&(m=e.key)}catch{}let g=o.default.dirname(y()),R=y();await s.default.mkdir(g,{recursive:!0}),await (0,l.createBackup)("droid",R);let v={};try{let e=await s.default.readFile(R,"utf-8");v=JSON.parse(e)}catch{}v.customModels||(v.customModels=[]),v.customModels=v.customModels.filter(e=>"custom:OmniRoute-0"!==e.id);let w=a.endsWith("/v1")?a:`${a}/v1`,E={model:h,id:"custom:OmniRoute-0",index:0,baseUrl:w,apiKey:m||"your_api_key",displayName:h,maxOutputTokens:131072,noImageSupport:!1,provider:"openai"};v.customModels.unshift(E),await s.default.writeFile(R,JSON.stringify(v,null,2));try{(0,d.saveCliToolLastConfigured)("droid")}catch{}return n.NextResponse.json({success:!0,message:"Factory Droid settings applied successfully!",settingsPath:R})}catch(e){return console.log("Error updating droid settings:",e),n.NextResponse.json({error:"Failed to update droid settings"},{status:500})}}async function R(){try{let e=(0,i.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});let t=y();await (0,l.createBackup)("droid",t);let r={};try{let e=await s.default.readFile(t,"utf-8");r=JSON.parse(e)}catch(e){if("ENOENT"===e.code)return n.NextResponse.json({success:!0,message:"No settings file to reset"});throw e}r.customModels&&(r.customModels=r.customModels.filter(e=>"custom:OmniRoute-0"!==e.id),0===r.customModels.length&&delete r.customModels),await s.default.writeFile(t,JSON.stringify(r,null,2));try{(0,d.deleteCliToolLastConfigured)("droid")}catch{}return n.NextResponse.json({success:!0,message:"OmniRoute settings removed successfully"})}catch(e){return console.log("Error resetting droid settings:",e),n.NextResponse.json({error:"Failed to reset droid settings"},{status:500})}}(0,h.ensureServerEntryExports)([f,g,R]),(0,a.registerServerReference)(f,"00c1d97422f08498fa079430b481e05b9baea32880",null),(0,a.registerServerReference)(g,"40361b8a82cc0567aaedcd0ad5d9606af9444dcdb5",null),(0,a.registerServerReference)(R,"000e8a28a24edfcc095a32fb876037369fe294eabb",null),e.s(["DELETE",0,R,"GET",0,f,"POST",0,g]),r()}catch(e){r(e)}},!1),122141,e=>e.a(async(t,r)=>{try{var a=e.i(747909),n=e.i(174017),s=e.i(996250),o=e.i(759756),i=e.i(561916),l=e.i(174677),d=e.i(869741),u=e.i(316795),c=e.i(487718),p=e.i(995169),h=e.i(47587),m=e.i(666012),f=e.i(570101),g=e.i(626937),R=e.i(10372),y=e.i(193695);e.i(820232);var v=e.i(600220),w=e.i(815058),E=t([w]);[w]=E.then?(await E)():E;let N=new a.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/cli-tools/droid-settings/route",pathname:"/api/cli-tools/droid-settings",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/cli-tools/droid-settings/route.ts",nextConfigOutput:"standalone",userland:w,...{}}),{workAsyncStorage:x,workUnitAsyncStorage:b,serverHooks:O}=N;async function C(e,t,r){r.requestMeta&&(0,o.setRequestMeta)(e,r.requestMeta),N.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let a="/api/cli-tools/droid-settings/route";a=a.replace(/\/index$/,"")||"/";let s=await N.prepare(e,t,{srcPage:a,multiZoneDraftMode:!1});if(!s)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:w,params:E,nextConfig:C,parsedUrl:x,isDraftMode:b,prerenderManifest:O,routerServerContext:S,isOnDemandRevalidate:A,revalidateOnlyGenerated:T,resolvedPathname:M,clientReferenceManifest:P,serverActionsManifest:k}=s,I=(0,d.normalizeAppPath)(a),_=!!(O.dynamicRoutes[I]||O.routes[M]),j=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,x,!1):t.end("This page could not be found"),null);if(_&&!b){let e=!!O.routes[M],t=O.dynamicRoutes[I];if(t&&!1===t.fallback&&!e){if(C.adapterPath)return await j();throw new y.NoFallbackError}}let F=null;!_||N.isDev||b||(F=M,F="/index"===F?"/":F);let q=!0===N.isDev||!_,D=_&&!q;k&&P&&(0,l.setManifestsSingleton)({page:a,clientReferenceManifest:P,serverActionsManifest:k});let H=e.method||"GET",U=(0,i.getTracer)(),B=U.getActiveScopeSpan(),K=!!(null==S?void 0:S.isWrappedByNextServer),L=!!(0,o.getRequestMeta)(e,"minimalMode"),$=(0,o.getRequestMeta)(e,"incrementalCache")||await N.getIncrementalCache(e,C,O,L);null==$||$.resetRequestCache(),globalThis.__incrementalCache=$;let J={params:E,previewProps:O.preview,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:q,incrementalCache:$,cacheLifeProfiles:C.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>N.onRequestError(e,t,a,n,S)},sharedContext:{buildId:w}},W=new u.NodeNextRequest(e),G=new u.NodeNextResponse(t),V=c.NextRequestAdapter.fromNodeNextRequest(W,(0,c.signalFromNodeResponse)(t));try{let s,o=async e=>N.handle(V,J).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=U.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${H} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),s&&s!==e&&(s.setAttribute("http.route",n),s.updateName(t))}else e.updateName(`${H} ${a}`)}),l=async s=>{var i,l;let d=async({previousCacheEntry:n})=>{try{if(!L&&A&&T&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await o(s);e.fetchMetrics=J.renderOpts.fetchMetrics;let i=J.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let l=J.renderOpts.collectedTags;if(!_)return await (0,m.sendResponse)(W,G,a,J.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(a.headers);l&&(t[R.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==J.renderOpts.collectedRevalidate&&!(J.renderOpts.collectedRevalidate>=R.INFINITE_CACHE)&&J.renderOpts.collectedRevalidate,n=void 0===J.renderOpts.collectedExpire||J.renderOpts.collectedExpire>=R.INFINITE_CACHE?void 0:J.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await N.onRequestError(e,t,{routerKind:"App Router",routePath:a,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:A})},!1,S),t}},u=await N.handleResponse({req:e,nextConfig:C,cacheKey:F,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:O,isRoutePPREnabled:!1,isOnDemandRevalidate:A,revalidateOnlyGenerated:T,responseGenerator:d,waitUntil:r.waitUntil,isMinimalMode:L});if(!_)return null;if((null==u||null==(i=u.value)?void 0:i.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});L||t.setHeader("x-nextjs-cache",A?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,f.fromNodeOutgoingHttpHeaders)(u.value.headers);return L&&_||c.delete(R.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,g.getCacheControlHeader)(u.cacheControl)),await (0,m.sendResponse)(W,G,new Response(u.value.body,{headers:c,status:u.value.status||200})),null};K&&B?await l(B):(s=U.getActiveScopeSpan(),await U.withPropagatedContext(e.headers,()=>U.trace(p.BaseServerSpan.handleRequest,{spanName:`${H} ${a}`,kind:i.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},l),void 0,!K))}catch(t){if(t instanceof y.NoFallbackError||await N.onRequestError(e,t,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:A})},!1,S),_)throw t;return await (0,m.sendResponse)(W,G,new Response(null,{status:500})),null}}e.s(["handler",0,C,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:x,workUnitAsyncStorage:b})},"routeModule",0,N,"serverHooks",0,O,"workAsyncStorage",0,x,"workUnitAsyncStorage",0,b]),r()}catch(e){r(e)}},!1)];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_10.rw9f._.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
module.exports=[80513,t=>{"use strict";t.s(["DEFAULT_THINKING_CLAUDE_SIGNATURE",0,"EpwGCkYIChgCKkCzVUuRrg7CcglSUWEef4rH6o35g9UYS8ZPe0/VomQTBsFx6sttYNj5l8GqgW6ejuHyYqpFToxIbZl0bw17l5dJEgzCnqDO0Z8fRlMrNgsaDLS1cnCjC53KBqE0CCIwAADQdo1eO+7qPAmo8J4WR3JPmr92S97kmvr5K1iPMiOpkZNj8mEXW8uzBoOJs/9ZKoMFiqHJ3UObwaJDqFOW70E9oCwDoc6jesaWVAEdN5vWfKMpIkjFJjECdjIdkxyJNJ8Ib8yXVal3qwE7uThoPRqSZDdHB5mmwPEjWE/90cSYCbtX2YsJki1265CabBb8/QEkODXg4kgRrL+c8e8rRXz/dr1RswvaPuzEdGKHRNi9UooNUeOK4/ebx1KkP9YZttyohN9GWqlts36kOoW0Cfie/ABDgF9g534BPth/sstxDM6d79QlRmh6NxizyTF74DXJI34u0M4tTRchqE5pAq85SgdJaa+dix1yJPMji8m6nZkwJbscJb9rdc2MKyKWjz8QL2+rTSSuZ2F1k1qSsW0xNcI7qLcI12Vncfn/VqY6YOIZy/saZBR0ezXvN6g+UYbuIdyVg7AyIFZt3nbrO7/kmOEb2VKzygwklHGEIJHfFgMpH3JSrAzbZIowVHOF7VaJ+KXRFDCFin7hHTOiOsdg+1ij1mML9Z/x/9CP4b7OUcaQm1llDZPSHc6rZMNL3DdB+fW5YfmNgKU35S+7AMtA10nVILzDAk1UV4T2K9Do09JlI6rjOs9UuULlIN2Z0eE8YTlANR6uQcw7lMcdfqYE8tke4rDKc2dDiaS5vVe45VewICNpdXGN11yw8QqH7p27CR1HtN30e0tHXOR3bIwWk/Yb6O5fTaKG6Ri8e5ZCPvdD9HqepVi188nM0iTjJqL58F3ni04ECIhcbyaQWnuTes1Kw4CMwiZDLQkk8Hgz7HkUOf1btQTF/0nhD7ry0n0hAEg2PaDM3V6TjOjf4hEldRmeqERcQF1PfgKb6ZM12rlIIfUqKACczWJSzTV158+47HX36o0cgux6nFlv/DE+sEiRVxgB","DEFAULT_THINKING_GEMINI_SIGNATURE",0,"EuwGCukGAXLI2nxwZIq54WWSoL/YN0P3TsDZ7zRnLi8g0S4aVr2HUGxvaHKySuY6HAVzcE0GPGjXrytLIldxthSvfxgUlJh6Qa9Z+Oj5QZBlYdg6HaJ6yuY5R7waE6rdwBsRf7Ft2j3DJ9rMi9qhWFqApewYtPhls3VHtuvND3l8Rm09+lbAXQs6KKWEWrxNLKTBkfpMgXhRERc/TQRMZu1twAablm6/Zk1tsYRvfWKLsNbeKF+CCojJdXJKvnR/8Ouuoa+Y2Ti20hcW7aZIIjZDFYPU//k6Ybmhg69J/imbFai2ckhfLaisqdDkdoIiBJScTOUvYqP6AE9d4MsydSC+UlhIMk4hoP76R8vUSCZRMkjOaDXstf/QoVZKbt94wyRZgAJ1G0BqI8L5ow86kLpA4wJEtxsRGymOE4bKUvApveBakYDNM9APkf+LbtbzWSseGjoZcSlycF9iN8Q2XNYKRrHbv3Lr5Y8JjdH/5y/6SHkNehTEZugaeGnSPSyCTWto1kQgHpxdWmhkLfJGNUGLmue7Mesj4TSms4J33mRpYVhNB/J333FCqIP0hr/E7BkkjEn7yZ4X7SQlh+xKPurapsnHRwiKmtsilmEFrnTE9iQr+pMr6M29qqFNv1tr5yumbaJw8JW9sB15tNsRv+dW6BjNanbsKz7HCgKUBc8tGy+7YuhXzAfViyRefcjK7eZW0Fbyt7AbybJTKz78W8NH7ye6LAwzOebXpeZ4D43fNIt8bKh26qgduSQv/7o+pAflkuqHZ99YWgHQ8h8OkZFi3eOiSYjsjhdZ/czWOdoPI/OnqIldzMPF5YlrKBLFX8VhRKVmqgsmWf5PHGulHhMkVlS+XG2UIseGy69ARa93D78Gsa+1n1kJr7EEB7Rh+27vUMxVYLdz1yMSvE5nalTAlg/ZeG8+XQ0cHuAI3KbQpHW2Q++RdXfm5JzD5WdJZUU+Zn8t8UUn85BH4RxZLeE0qJikgSsKoYVBc6YhiMjhPgkR95ReimY4Z0xCJdRo1gjexOFeODZMpQF6Yxnoic7IrdgsFA3iePTbFnPp3IAM1fAThWhXJUn3QInUOTd5o1qmTmn6REbL15g/JQNl+dqUoPkhleeb2V3kjqp1okmO3wMZbPknR3S1LZNmlS72/iBQUm+n2b/RCn4PjmM2"])},693602,942399,t=>{"use strict";var e=t.i(666680),n=t.i(80513);function r(t){return Array.isArray(t?.content)?t.content:"string"==typeof t?.content&&t.content.trim()?(t.content=[{type:"text",text:t.content}],t.content):[]}function o(t,e){let n=r(t);if(0===n.length)return!1;let o=n.length-1;return n[o].cache_control=void 0!==e?{type:"ephemeral",ttl:e}:{type:"ephemeral"},!0}function l(t,e=null,i=!1){if(t.system&&Array.isArray(t.system)&&!i&&(t.system=t.system.map((e,n)=>{let{cache_control:r,...o}=e;return n===t.system.length-1?{...o,cache_control:{type:"ephemeral",ttl:"1h"}}:o})),t.messages&&Array.isArray(t.messages)){let l=t.messages.length,s=[];for(let e=0;e<l;e++){let n=t.messages[e];if(Array.isArray(n.content)&&!i)for(let t of n.content)delete t.cache_control;(e===l-1&&"assistant"===n.role||"string"==typeof n.content&&n.content.trim()||Array.isArray(n.content)&&n.content.some(t=>"text"===t.type&&t.text?.trim()||"tool_use"===t.type||"tool_result"===t.type))&&s.push(n)}for(let t of s)Array.isArray(t.content)&&(t.content=t.content.filter(t=>"tool_use"!==t.type||t.name&&t.name?.trim()),t.content=t.content.filter(t=>"tool_result"!==t.type||t.tool_use_id));t.tools&&Array.isArray(t.tools)&&(t.tools=t.tools.filter(t=>t.name&&t.name?.trim())),t.messages=s=function(t){if(t.length<=1)return t;for(let e of t)if("assistant"===e.role&&Array.isArray(e.content)&&e.content.some(t=>"tool_use"===t.type)){let t=[],n=!1;for(let r of e.content)"tool_use"===r.type?(n=!0,t.push(r)):"thinking"===r.type||"redacted_thinking"===r.type?t.push(r):n||t.push(r);e.content=t}let e=[];for(let n of t){let t=e[e.length-1];if(t&&t.role===n.role){let e=Array.isArray(t.content)?t.content:[{type:"text",text:t.content}],r=Array.isArray(n.content)?n.content:[{type:"text",text:n.content}];t.content=[...e.filter(t=>"tool_result"===t.type),...r.filter(t=>"tool_result"===t.type),...e.filter(t=>"tool_result"!==t.type),...r.filter(t=>"tool_result"!==t.type)]}else{let t=Array.isArray(n.content)?n.content:[{type:"text",text:n.content}];e.push({role:n.role,content:[...t]})}}return e}(s);let a=s[s.length-1],c=a?.role==="user",u=t.thinking?.type==="enabled"&&c;if(!i){let t=s.reduce((t,e,n)=>(e?.role==="user"&&t.push(n),t),[]),e=t.length>=2?t[t.length-2]:-1;e>=0&&o(s[e])}let
|
|
1
|
+
module.exports=[80513,t=>{"use strict";t.s(["DEFAULT_THINKING_CLAUDE_SIGNATURE",0,"EpwGCkYIChgCKkCzVUuRrg7CcglSUWEef4rH6o35g9UYS8ZPe0/VomQTBsFx6sttYNj5l8GqgW6ejuHyYqpFToxIbZl0bw17l5dJEgzCnqDO0Z8fRlMrNgsaDLS1cnCjC53KBqE0CCIwAADQdo1eO+7qPAmo8J4WR3JPmr92S97kmvr5K1iPMiOpkZNj8mEXW8uzBoOJs/9ZKoMFiqHJ3UObwaJDqFOW70E9oCwDoc6jesaWVAEdN5vWfKMpIkjFJjECdjIdkxyJNJ8Ib8yXVal3qwE7uThoPRqSZDdHB5mmwPEjWE/90cSYCbtX2YsJki1265CabBb8/QEkODXg4kgRrL+c8e8rRXz/dr1RswvaPuzEdGKHRNi9UooNUeOK4/ebx1KkP9YZttyohN9GWqlts36kOoW0Cfie/ABDgF9g534BPth/sstxDM6d79QlRmh6NxizyTF74DXJI34u0M4tTRchqE5pAq85SgdJaa+dix1yJPMji8m6nZkwJbscJb9rdc2MKyKWjz8QL2+rTSSuZ2F1k1qSsW0xNcI7qLcI12Vncfn/VqY6YOIZy/saZBR0ezXvN6g+UYbuIdyVg7AyIFZt3nbrO7/kmOEb2VKzygwklHGEIJHfFgMpH3JSrAzbZIowVHOF7VaJ+KXRFDCFin7hHTOiOsdg+1ij1mML9Z/x/9CP4b7OUcaQm1llDZPSHc6rZMNL3DdB+fW5YfmNgKU35S+7AMtA10nVILzDAk1UV4T2K9Do09JlI6rjOs9UuULlIN2Z0eE8YTlANR6uQcw7lMcdfqYE8tke4rDKc2dDiaS5vVe45VewICNpdXGN11yw8QqH7p27CR1HtN30e0tHXOR3bIwWk/Yb6O5fTaKG6Ri8e5ZCPvdD9HqepVi188nM0iTjJqL58F3ni04ECIhcbyaQWnuTes1Kw4CMwiZDLQkk8Hgz7HkUOf1btQTF/0nhD7ry0n0hAEg2PaDM3V6TjOjf4hEldRmeqERcQF1PfgKb6ZM12rlIIfUqKACczWJSzTV158+47HX36o0cgux6nFlv/DE+sEiRVxgB","DEFAULT_THINKING_GEMINI_SIGNATURE",0,"EuwGCukGAXLI2nxwZIq54WWSoL/YN0P3TsDZ7zRnLi8g0S4aVr2HUGxvaHKySuY6HAVzcE0GPGjXrytLIldxthSvfxgUlJh6Qa9Z+Oj5QZBlYdg6HaJ6yuY5R7waE6rdwBsRf7Ft2j3DJ9rMi9qhWFqApewYtPhls3VHtuvND3l8Rm09+lbAXQs6KKWEWrxNLKTBkfpMgXhRERc/TQRMZu1twAablm6/Zk1tsYRvfWKLsNbeKF+CCojJdXJKvnR/8Ouuoa+Y2Ti20hcW7aZIIjZDFYPU//k6Ybmhg69J/imbFai2ckhfLaisqdDkdoIiBJScTOUvYqP6AE9d4MsydSC+UlhIMk4hoP76R8vUSCZRMkjOaDXstf/QoVZKbt94wyRZgAJ1G0BqI8L5ow86kLpA4wJEtxsRGymOE4bKUvApveBakYDNM9APkf+LbtbzWSseGjoZcSlycF9iN8Q2XNYKRrHbv3Lr5Y8JjdH/5y/6SHkNehTEZugaeGnSPSyCTWto1kQgHpxdWmhkLfJGNUGLmue7Mesj4TSms4J33mRpYVhNB/J333FCqIP0hr/E7BkkjEn7yZ4X7SQlh+xKPurapsnHRwiKmtsilmEFrnTE9iQr+pMr6M29qqFNv1tr5yumbaJw8JW9sB15tNsRv+dW6BjNanbsKz7HCgKUBc8tGy+7YuhXzAfViyRefcjK7eZW0Fbyt7AbybJTKz78W8NH7ye6LAwzOebXpeZ4D43fNIt8bKh26qgduSQv/7o+pAflkuqHZ99YWgHQ8h8OkZFi3eOiSYjsjhdZ/czWOdoPI/OnqIldzMPF5YlrKBLFX8VhRKVmqgsmWf5PHGulHhMkVlS+XG2UIseGy69ARa93D78Gsa+1n1kJr7EEB7Rh+27vUMxVYLdz1yMSvE5nalTAlg/ZeG8+XQ0cHuAI3KbQpHW2Q++RdXfm5JzD5WdJZUU+Zn8t8UUn85BH4RxZLeE0qJikgSsKoYVBc6YhiMjhPgkR95ReimY4Z0xCJdRo1gjexOFeODZMpQF6Yxnoic7IrdgsFA3iePTbFnPp3IAM1fAThWhXJUn3QInUOTd5o1qmTmn6REbL15g/JQNl+dqUoPkhleeb2V3kjqp1okmO3wMZbPknR3S1LZNmlS72/iBQUm+n2b/RCn4PjmM2"])},693602,942399,t=>{"use strict";var e=t.i(666680),n=t.i(80513);function r(t){return Array.isArray(t?.content)?t.content:"string"==typeof t?.content&&t.content.trim()?(t.content=[{type:"text",text:t.content}],t.content):[]}function o(t,e){let n=r(t);if(0===n.length)return!1;let o=n.length-1;return n[o].cache_control=void 0!==e?{type:"ephemeral",ttl:e}:{type:"ephemeral"},!0}function l(t,e=null,i=!1){if(t.system&&Array.isArray(t.system)&&!i&&(t.system=t.system.map((e,n)=>{let{cache_control:r,...o}=e;return n===t.system.length-1?{...o,cache_control:{type:"ephemeral",ttl:"1h"}}:o})),t.messages&&Array.isArray(t.messages)){let l=t.messages.length,s=[];for(let e=0;e<l;e++){let n=t.messages[e];if(Array.isArray(n.content)&&!i)for(let t of n.content)delete t.cache_control;(e===l-1&&"assistant"===n.role||"string"==typeof n.content&&n.content.trim()||Array.isArray(n.content)&&n.content.some(t=>"text"===t.type&&t.text?.trim()||"tool_use"===t.type||"tool_result"===t.type))&&s.push(n)}for(let t of s)Array.isArray(t.content)&&(t.content=t.content.filter(t=>"tool_use"!==t.type||t.name&&t.name?.trim()),t.content=t.content.filter(t=>"tool_result"!==t.type||t.tool_use_id));t.tools&&Array.isArray(t.tools)&&(t.tools=t.tools.filter(t=>t.name&&t.name?.trim())),t.messages=s=function(t){if(t.length<=1)return t;for(let e of t)if("assistant"===e.role&&Array.isArray(e.content)&&e.content.some(t=>"tool_use"===t.type)){let t=[],n=!1;for(let r of e.content)"tool_use"===r.type?(n=!0,t.push(r)):"thinking"===r.type||"redacted_thinking"===r.type?t.push(r):n||t.push(r);e.content=t}let e=[];for(let n of t){let t=e[e.length-1];if(t&&t.role===n.role){let e=Array.isArray(t.content)?t.content:[{type:"text",text:t.content}],r=Array.isArray(n.content)?n.content:[{type:"text",text:n.content}];t.content=[...e.filter(t=>"tool_result"===t.type),...r.filter(t=>"tool_result"===t.type),...e.filter(t=>"tool_result"!==t.type),...r.filter(t=>"tool_result"!==t.type)]}else{let t=Array.isArray(n.content)?n.content:[{type:"text",text:n.content}];e.push({role:n.role,content:[...t]})}}return e}(s);let a=s[s.length-1],c=a?.role==="user",u=t.thinking?.type==="enabled"&&c;if(!i){let t=s.reduce((t,e,n)=>(e?.role==="user"&&t.push(n),t),[]),e=t.length>=2?t[t.length-2]:-1;e>=0&&o(s[e])}let p=!1;for(let t=s.length-1;t>=0;t--){let l=s[t];if("assistant"===l.role&&Array.isArray(r(l))&&(!i&&!p&&o(l)&&(p=!0),"claude"===e||e?.startsWith?.("anthropic-compatible-"))){let t=!1,e=!1;for(let r of l.content)("thinking"===r.type||"redacted_thinking"===r.type)&&(r.signature=n.DEFAULT_THINKING_CLAUDE_SIGNATURE,e=!0),"tool_use"===r.type&&(t=!0);u&&!e&&t&&l.content.unshift({type:"thinking",thinking:".",signature:n.DEFAULT_THINKING_CLAUDE_SIGNATURE})}}}if(t.tools&&Array.isArray(t.tools)&&!i){t.tools=t.tools.map(t=>{let{cache_control:e,...n}=t;return n});for(let e=t.tools.length-1;e>=0;e--)if(!t.tools[e].defer_loading){t.tools[e].cache_control={type:"ephemeral",ttl:"1h"};break}}return t}t.s(["prepareClaudeRequest",0,l],942399);let i="anthropic-compatible-cc-";function s(t){let e=String(t||"").trim().replace(/\/$/,"");return e?e.split("?")[0].replace(/\/messages$/i,""):""}function a(t){let e=String(t||"").trim().replace(/\/$/,"");return e?e.split("?")[0].replace(/\/(?:v\d+\/)?messages$/i,""):""}function c(t,e){let n=String(t||"").replace(/\/$/,""),r=String(e||"").startsWith("/")?String(e):`/${String(e||"")}`,o=n.match(/(\/v\d+)$/i);return o&&r.toLowerCase().startsWith(`${o[1].toLowerCase()}/`)?`${n}${r.slice(o[1].length)}`:`${n}${r}`}function u({sourceBody:t,normalizedBody:n,claudeBody:r,model:o,stream:s=!1,cwd:a=process.cwd(),now:c=new Date,sessionId:m,preserveCacheControl:d=!1}){var x,k,b,S,E,I,R,U;let D,L,N=n||{},T=r?(x=r,k=d,D=l({system:function(t){if("string"==typeof t){let e=t.trim();return e?[{type:"text",text:e}]:[]}return Array.isArray(t)?t.map(t=>f(t)).filter(t=>!!t):[]}(x.system),messages:Array.isArray(b=x.messages)?b.map(t=>{var e;let n,r=_(t);return r?{...r,content:(n=p(e=r.content)).length>0?n:e}:null}).filter(t=>!!t):[],tools:Array.isArray(S=x.tools)?S.map(t=>_(g(t))).filter(t=>!!t):[],thinking:_(x.thinking)||x.thinking},i,k),_(D)):null,j=T?function(t,e){let n=Array.isArray(t)?t.map(t=>(function(t,e){let n=String(t?.role||"").toLowerCase(),r="user"===n?"user":"assistant"===n?"assistant":null;if(!r)return null;let o=p(t?.content).map(t=>{if(e)return t;let{cache_control:n,...r}=t;return r});return 0===o.length?null:{role:r,content:o}})(t,e)).filter(t=>!!t&&t.content.length>0):[],r=[];for(let t of n){let e=r[r.length-1];if(e&&e.role===t.role){e.content.push(...t.content);continue}r.push({role:t.role,content:[...t.content]})}for(;r.length>0&&"assistant"===r[r.length-1].role;)r.pop();if(!e){for(let t of r){var o=t.content;for(let t of o)delete t.cache_control}y(r)}if(0===r.length){let t=n.flatMap(t=>t.content).map(t=>h(t)).filter(Boolean).join("\n").trim();if(t)return[{role:"user",content:[{type:"text",text:t,cache_control:{type:"ephemeral"}}]}]}return r}(T.messages,d):Array.isArray(N.messages)?function(t){let e=t.map(t=>(function(t){let e=String(t?.role||"").toLowerCase(),n="user"===e?"user":"assistant"===e||"model"===e?"assistant":null;if(!n)return null;let r=h(t?.content);return r?{role:n,content:[{type:"text",text:r}]}:null})(t)).filter(t=>!!t&&t.content.length>0),n=[];for(let t of e){let e=n[n.length-1];if(e&&e.role===t.role){e.content.push(...t.content);continue}n.push({role:t.role,content:[...t.content]})}for(;n.length>0&&"assistant"===n[n.length-1].role;)n.pop();if(0===n.length){let t=e.flatMap(t=>t.content).map(t=>A(t.text)).filter(Boolean).join("\n").trim();if(t)return[{role:"user",content:[{type:"text",text:t,cache_control:{type:"ephemeral"}}]}]}return y(n),n}(N.messages):[],w=function({messages:t,systemBlocks:e,cwd:n,now:r}){var o,l;let i,s,a,c,u=Array.isArray(e)&&e.length>0?e:Array.isArray(o=t)?o.filter(t=>{let e=String(t?.role||"").toLowerCase();return"system"===e||"developer"===e}).map(t=>h(t?.content)).filter(Boolean).map(t=>({type:"text",text:t,cache_control:{type:"ephemeral"}})):[],p=(l=r,i=new Intl.DateTimeFormat("en-CA",{year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(l),s=i.find(t=>"year"===t.type)?.value||"1970",a=i.find(t=>"month"===t.type)?.value||"01",c=i.find(t=>"day"===t.type)?.value||"01",`${s}-${a}-${c}`),f=[{type:"text",text:"x-anthropic-billing-header: cc_version=2.1.89.728; cc_entrypoint=sdk-cli; cch=00000;"},{type:"text",text:"You are a Claude agent, built on Anthropic's Claude Agent SDK.",cache_control:{type:"ephemeral"}},{type:"text",text:`You are Claude Code, Anthropic's official CLI for Claude.
|
|
2
2
|
|
|
3
3
|
CWD: ${n}
|
|
4
|
-
Date: ${
|
|
4
|
+
Date: ${p}`,cache_control:{type:"ephemeral"}}];for(let t of u)f.push(t);return f}({messages:N.messages,systemBlocks:T?.system,cwd:a,now:c}),J=m||(0,e.randomUUID)(),Z=(E=t,I=n,(L=(C(E,["output_config","effort"])||C(E,["reasoning","effort"])||A(E?.reasoning_effort)||C(I,["output_config","effort"])||C(I,["reasoning","effort"])||A(I?.reasoning_effort)||"").toLowerCase())?"low"===L?"low":"medium"===L?"medium":"high"===L?"high":"none"===L||"disabled"===L?"low":"high":"high"),H=function(t,e){for(let n of[t?.max_tokens,t?.max_completion_tokens,t?.max_output_tokens,e?.max_tokens,e?.max_completion_tokens,e?.max_output_tokens]){let t=Number(n);if(Number.isFinite(t)&&t>0)return Math.floor(t)}return 8092}(t,n),O=T?.tools?T.tools:(R=n,U=t,(Array.isArray(R?.tools)?R?.tools:Array.isArray(U?.tools)?U?.tools:[]).map(t=>(function(t){let e=_(t);if(!e)return null;let n="function"===e.type&&_(e.function)||e,r=A(n.name);if(!r)return null;let o=_(n.parameters)||_(n.input_schema)||{type:"object",properties:{},required:[]},l="object"!==o.type||_(o.properties)?o:{...o,properties:{}},i={name:r,description:A(n.description)||"",input_schema:l};return"boolean"==typeof n.defer_loading&&(i.defer_loading=n.defer_loading),i})(t)).filter(t=>!!t).map((t,e,n)=>e!==function(t){for(let e=t.length-1;e>=0;e--)if(!t[e].defer_loading)return e;return -1}(n)?t:{...t,cache_control:{type:"ephemeral",ttl:"1h"}})),v=O.length>0?function(t){if(!t)return null;if("string"==typeof t)return"required"===t?{type:"any"}:null;let e=_(t);if(!e)return null;if("tool"===e.type){let t=A(e.name);return t?{type:"tool",name:t}:null}if("function"===e.type){let t=A(_(e.function)?.name)||A(e.name);return t?{type:"tool",name:t}:null}return"required"===e.type||"any"===e.type?{type:"any"}:null}(n?.tool_choice??t?.tool_choice):void 0;return{model:o,messages:j,system:w,tools:O,metadata:{user_id:JSON.stringify({device_id:(0,e.createHash)("sha256").update(String(a||"")).digest("hex").slice(0,24),account_uuid:"",session_id:J})},max_tokens:H,thinking:{type:"adaptive"},context_management:{edits:[{type:"clear_thinking_20251015",keep:"all"}]},output_config:{effort:Z},...v?{tool_choice:v}:{},...s?{stream:!0}:{}}}function p(t){if("string"==typeof t){let e=t.trim();return e?[{type:"text",text:e}]:[]}if(!Array.isArray(t)){let e=f(t);return e?[e]:[]}return t.map(t=>f(t)).filter(t=>!!t)}function f(t){let e=_(g(t));if(!e)return null;if("text"===e.type||"string"!=typeof e.type&&"string"==typeof e.text){let t=A(e.text);return t?{...e,type:"text",text:t}:null}return e}function y(t){let e=t.reduce((t,e,n)=>("user"===e.role&&t.push(n),t),[]),n=t.some(t=>"assistant"===t.role),r=e.length>=2?e[e.length-2]:-1;r>=0?m(t[r].content):!n&&e.length>0&&m(t[e[e.length-1]].content);for(let e=t.length-1;e>=0&&!("assistant"===t[e].role&&m(t[e].content));e--);}function m(t,e){if(!Array.isArray(t)||0===t.length)return!1;let n=t[t.length-1];return!!n&&(n.cache_control=e?{type:"ephemeral",ttl:e}:{type:"ephemeral"},!0)}function g(t){return"function"==typeof structuredClone?structuredClone(t):JSON.parse(JSON.stringify(t))}function h(t){return"string"==typeof t?t.trim():Array.isArray(t)?t.map(t=>t&&"object"==typeof t&&("text"===t.type&&"string"==typeof t.text||"string"==typeof t.text)?t.text.trim():"").filter(Boolean).join("\n").trim():t&&"object"==typeof t&&"string"==typeof t.text?t.text.trim():""}function d(t,e){if(!t)return null;if("function"==typeof t.get)return t.get(e);let n=e.toLowerCase();for(let[e,r]of Object.entries(t))if(e.toLowerCase()===n)return r??null;return null}function A(t){return"string"!=typeof t?null:t.trim()||null}function _(t){return t&&"object"==typeof t&&!Array.isArray(t)?t:null}function C(t,e){let n=t;for(let t of e){if(!n||"object"!=typeof n||Array.isArray(n))return null;n=n[t]}return A(n)}t.s(["CLAUDE_CODE_COMPATIBLE_DEFAULT_CHAT_PATH",0,"/v1/messages?beta=true","CLAUDE_CODE_COMPATIBLE_DEFAULT_MODELS_PATH",0,"/models","buildClaudeCodeCompatibleHeaders",0,function(t,e=!1,n){return{"Content-Type":"application/json",Accept:e?"text/event-stream":"application/json","x-api-key":t,"anthropic-version":"2023-06-01","anthropic-beta":"claude-code-20250219,interleaved-thinking-2025-05-14,context-management-2025-06-27,prompt-caching-scope-2026-01-05,effort-2025-11-24","anthropic-dangerous-direct-browser-access":"true","x-app":"cli","User-Agent":"claude-cli/2.1.89 (external, sdk-cli)","X-Stainless-Retry-Count":"0","X-Stainless-Timeout":"300","X-Stainless-Lang":"js","X-Stainless-Package-Version":"0.74.0","X-Stainless-OS":"MacOS","X-Stainless-Arch":"arm64","X-Stainless-Runtime":"node","X-Stainless-Runtime-Version":"v25.8.1","accept-language":"*","sec-fetch-mode":"cors","accept-encoding":"identity",...n?{"X-Claude-Code-Session-Id":n}:{}}},"buildClaudeCodeCompatibleRequest",0,u,"buildClaudeCodeCompatibleValidationPayload",0,function(t="claude-sonnet-4-6"){return u({sourceBody:{max_tokens:1},normalizedBody:{messages:[{role:"user",content:"ok"}],max_tokens:1},model:t,stream:!0,sessionId:(0,e.randomUUID)(),cwd:process.cwd(),now:new Date})},"isClaudeCodeCompatibleProvider",0,function(t){return"string"==typeof t&&t.startsWith(i)},"joinBaseUrlAndPath",0,function(t,e){return c(s(t),e)},"joinClaudeCodeCompatibleUrl",0,function(t,e){return c(a(t),e)},"resolveClaudeCodeCompatibleSessionId",0,function(t){let n=d(t,"x-claude-code-session-id")||d(t,"x-session-id")||d(t,"x_session_id")||d(t,"x-omniroute-session")||null;return n&&n.trim()||(0,e.randomUUID)()},"stripAnthropicMessagesSuffix",0,s,"stripClaudeCodeCompatibleEndpointSuffix",0,a],693602)}];
|
|
5
5
|
|
|
6
6
|
//# sourceMappingURL=open-sse_0dawtxk._.js.map
|