omniroute 3.4.5 → 3.4.6
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.js.nft.json +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.js.nft.json +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/monitoring/health/route.js +3 -3
- package/app/.next/server/app/api/provider-models/route.js +2 -2
- package/app/.next/server/app/api/provider-nodes/[id]/route.js +2 -2
- package/app/.next/server/app/api/provider-nodes/route.js +3 -3
- package/app/.next/server/app/api/provider-nodes/validate/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/sync-models/route.js +3 -3
- package/app/.next/server/app/api/providers/[id]/sync-models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route.js +6 -6
- package/app/.next/server/app/api/providers/route.js +4 -4
- package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/test-batch/route.js +5 -5
- package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/validate/route.js +1 -1
- package/app/.next/server/app/api/system/version/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route.js +2 -2
- package/app/.next/server/app/api/usage/provider-limits/route.js +5 -5
- package/app/.next/server/app/api/usage/provider-limits/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/models/route.js +4 -4
- package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/route.js +4 -4
- package/app/.next/server/app/api/v1/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]__0.7zz6j._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0.lz97q._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0.m9_5-._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__00-bzx_._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__00hsd7k._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__00i_ryi._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__01fudn9._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__024slax._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__030_-af._.js +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__03gl9dh._.js +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__03x69ll._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__047np0t._.js +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__04lc9.m._.js +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__05u48b-._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__06dr~pl._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__06hr_sx._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__06r5eje._.js +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__07.ui7z._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__075j.5s._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__07ju0wx._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__07wj.c4._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__08-9vz.._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0908q-_._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__09blmoy._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__09c50mp._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0a.3c_r._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0bkx9sd._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0c4v_hg._.js +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__0c5t729._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0cem6i6._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0d-qyrk._.js +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__0d-rd-n._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0djfz6n._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0dmb7bd._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0e7dp.z._.js +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__0el_v65._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0enebbv._.js +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__0enecpa._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0eps0zu._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0fbv0zh._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0fmf-tk._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0fw0v5q._.js +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__0g0b9au._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0gukblk._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0h-q5l0._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0h1fgwr._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0h86b7i._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0h~a5f1._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0irqapk._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0j0ez8_._.js +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__0jacr87._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0jnihz9._.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]__0llqbda._.js +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__0m-356c._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0mj7x5~._.js +8 -8
- package/app/.next/server/chunks/[root-of-the-server]__0mpnloa._.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]__0n.gjo8._.js +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__0n0nara._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0ncz8xj._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0oph175._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0p3a7_l._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0pl_899._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0prott7._.js +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__0pwiejj._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0pxqo8v._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0q04t~4._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0q9h_5u._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0qaruz-._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0qka2s7._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0rnvi83._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0rpwwig._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0rs2ec_._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0s1dq3.._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0s1ya.l._.js +5 -5
- package/app/.next/server/chunks/[root-of-the-server]__0svm~lc._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0t83olx._.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]__0uctzvq._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0vkqjj1._.js +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__0vwq47l._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0vx1juw._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0vzvfbd._.js +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__0w39cdo._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0wc__c~._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0y2h760._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0y_c7uk._.js +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__0~8fltv._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__0~dj8ev._.js +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__10.x-iq._.js +4 -4
- package/app/.next/server/chunks/[root-of-the-server]__10e1a_z._.js +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__10o_k-p._.js +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__10smy7g._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__11wa4b~._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__11xpr8u._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__122-jdl._.js +8 -8
- package/app/.next/server/chunks/[root-of-the-server]__12e9-l1._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__12gh.g1._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__136nal9._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__13_i443._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__13c-d_4._.js +2 -2
- package/app/.next/server/chunks/_0-jnvci._.js +1 -1
- package/app/.next/server/chunks/_0-~thzo._.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/{_03c-j3o._.js → _02~yzex._.js} +2 -2
- package/app/.next/server/chunks/_036lxbr._.js +1 -1
- package/app/.next/server/chunks/_05reh6o._.js +1 -1
- 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/_0due8oe._.js +2 -2
- package/app/.next/server/chunks/_0h-j8c2._.js +1 -1
- package/app/.next/server/chunks/_0k43pd6._.js +3 -3
- package/app/.next/server/chunks/_0vx-r0i._.js +2 -2
- package/app/.next/server/chunks/_10.rw9f._.js +1 -1
- package/app/.next/server/chunks/_13mo7j5._.js +1 -1
- package/app/.next/server/chunks/src_0f_le~m._.js +1 -1
- package/app/.next/server/chunks/ssr/_008ht2n._.js +2 -2
- package/app/.next/server/chunks/ssr/_0oo1f90._.js +2 -2
- package/app/.next/server/chunks/ssr/_0~laquj._.js +1 -1
- package/app/.next/server/chunks/ssr/src_04gjot1._.js +1 -1
- package/app/.next/server/chunks/ssr/src_app_(dashboard)_dashboard_cache_04_vca6._.js +1 -1
- package/app/.next/server/chunks/ssr/{src_app_(dashboard)_dashboard_settings_0ni3aus._.js → src_app_(dashboard)_dashboard_settings_09gq48u._.js} +2 -2
- package/app/.next/server/chunks/ssr/src_i18n_messages_en_json_[json]_cjs_13rg.m2._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_pt-BR_json_[json]_cjs_01n5fvn._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_pt_json_[json]_cjs_0fwb8p.._.js +1 -1
- package/app/.next/server/chunks/ssr/src_shared_0jy4djq._.js +3 -0
- package/app/.next/server/chunks/ssr/src_shared_components_0v5o286._.js +3 -0
- 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/{03~_6b5~n101_.js → 0.ap2gsi3d-1e.js} +1 -1
- package/app/.next/static/chunks/08iujr48xci8k.js +1 -0
- package/app/.next/static/chunks/{0up_y.7qkqwxz.js → 08n6n76lz~vt6.js} +1 -1
- package/app/.next/static/chunks/{060zmf~qn1q6y.js → 0f611s~575pn8.js} +1 -1
- package/app/.next/static/chunks/0y5kx9rgeb6~_.js +1 -0
- package/app/.next/static/chunks/13xz-222deqiy.js +1 -0
- package/app/CHANGELOG.md +18 -0
- package/app/docs/openapi.yaml +1 -1
- package/app/llm.txt +2 -2
- package/app/open-sse/handlers/chatCore.ts +2 -2
- package/app/open-sse/package.json +1 -1
- package/app/open-sse/translator/request/claude-to-gemini.ts +17 -0
- package/app/open-sse/translator/request/openai-to-gemini.ts +14 -3
- package/app/open-sse/utils/stream.ts +2 -2
- package/app/package-lock.json +3 -3
- package/app/package.json +1 -1
- package/app/src/app/(dashboard)/dashboard/cache/components/CacheTrends.tsx +19 -12
- package/app/src/app/(dashboard)/dashboard/cache/page.tsx +0 -3
- package/app/src/app/(dashboard)/dashboard/memory/page.tsx +20 -20
- package/app/src/i18n/messages/en.json +55 -1
- package/app/src/i18n/messages/pt-BR.json +53 -0
- package/app/src/i18n/messages/pt.json +54 -1
- package/app/src/shared/constants/providers.ts +40 -0
- package/app/src/shared/constants/sidebarVisibility.ts +6 -0
- package/app/src/shared/utils/circuitBreaker.ts +14 -4
- package/package.json +1 -1
- package/app/.next/server/chunks/ssr/src_05ekey-._.js +0 -3
- package/app/.next/server/chunks/ssr/src_100xxow._.js +0 -3
- package/app/.next/static/chunks/05tcrkqknq.20.js +0 -1
- package/app/.next/static/chunks/0eng4c9gz1s4..js +0 -1
- package/app/.next/static/chunks/0go~kwn1zgxnd.js +0 -1
- /package/app/.next/static/{Dbb1D6OoD7WlyZuPBm3L6 → ImZm5czz4prt8gnJPx7vv}/_buildManifest.js +0 -0
- /package/app/.next/static/{Dbb1D6OoD7WlyZuPBm3L6 → ImZm5czz4prt8gnJPx7vv}/_clientMiddlewareManifest.js +0 -0
- /package/app/.next/static/{Dbb1D6OoD7WlyZuPBm3L6 → ImZm5czz4prt8gnJPx7vv}/_ssgManifest.js +0 -0
|
@@ -12,7 +12,7 @@ data: ${JSON.stringify(e)}
|
|
|
12
12
|
`,n=!0)),f&&!(0,a.hasValidUsage)(e.usage)){let o=(0,a.estimateUsage)(S,x,r.FORMATS.OPENAI);e.usage=(0,a.filterUsageForFormat)(o,r.FORMATS.OPENAI),t=`data: ${JSON.stringify(e)}
|
|
13
13
|
`,b=o,n=!0}else if(f&&b){let o=(0,a.addBufferToUsage)(b);e.usage=(0,a.filterUsageForFormat)(o,r.FORMATS.OPENAI),t=`data: ${JSON.stringify(e)}
|
|
14
14
|
`,n=!0}else(s||u)&&(t=`data: ${JSON.stringify(e)}
|
|
15
|
-
`,n=!0)}o=e}catch{}n||(t=e.startsWith("data:")&&!e.startsWith("data: ")?"data: "+e.slice(5)+"\n":e+"\n"),o&&M.push(o),_?.appendConvertedChunk?.(t),i.enqueue(U.encode(t));continue}if(!c)continue;let u=(0,l.parseSSELine)(c);if(!u)continue;if(N.push(u),u&&u.done){if(!P){P=!0,M.push({done:!0});let e="data: [DONE]\n\n";_?.appendConvertedChunk?.(e),i.enqueue(U.encode(e))}continue}if(u.delta?.text){let e=u.delta.text;x+=e.length,w?.accumulatedContent!==void 0&&"string"==typeof e&&(w.accumulatedContent+=e)}if(u.delta?.thinking){let e=u.delta.thinking;x+=e.length,w?.accumulatedContent!==void 0&&"string"==typeof e&&(w.accumulatedContent+=e)}if(u.choices?.[0]?.delta?.content){let e=u.choices[0].delta.content;if("string"==typeof e)x+=e.length,w?.accumulatedContent!==void 0&&(w.accumulatedContent+=e);else if(Array.isArray(e))for(let t of e)t?.text&&"string"==typeof t.text&&(x+=t.text.length,w?.accumulatedContent!==void 0&&(w.accumulatedContent+=t.text))}if(u.choices?.[0]?.delta?.reasoning_content){let e=u.choices[0].delta.reasoning_content;"string"==typeof e&&(x+=e.length,w?.accumulatedContent!==void 0&&(w.accumulatedContent+=e))}if(u.choices?.[0]?.delta?.reasoning&&!u.choices?.[0]?.delta?.reasoning_content){let e=u.choices[0].delta.reasoning;"string"==typeof e&&(u.choices[0].delta.reasoning_content=e,delete u.choices[0].delta.reasoning,x+=e.length,w?.accumulatedContent!==void 0&&(w.accumulatedContent+=e))}let p=n===r.FORMATS.GEMINI||n===r.FORMATS.GEMINI_CLI||n===r.FORMATS.ANTIGRAVITY?(0,l.unwrapGeminiChunk)(u):u;if(p.candidates?.[0]?.content?.parts)for(let e of p.candidates[0].content.parts)e.text&&"string"==typeof e.text&&(x+=e.text.length,w?.accumulatedContent!==void 0&&(w.accumulatedContent+=e.text));if(w?.accumulatedContent!==void 0){if("string"==typeof u.delta){let e=u.delta;w.accumulatedContent+=e,x+=e.length}if("string"==typeof u.content){let e=u.content;w.accumulatedContent+=e,x+=e.length}if("string"==typeof u.text){let e=u.text;w.accumulatedContent+=e,x+=e.length}}let f=(0,a.extractUsage)(u);f&&(w.usage=f);let m=(0,o.translateResponse)(n,s,u,w);for(let e of g(m)){let t=(0,l.formatSSE)(e,r.FORMATS.OPENAI);_?.appendOpenAIChunk?.(t)}if(m?.length>0)for(let e of m){let t=e;if(
|
|
15
|
+
`,n=!0)}o=e}catch{}n||(t=e.startsWith("data:")&&!e.startsWith("data: ")?"data: "+e.slice(5)+"\n":e+"\n"),o&&M.push(o),_?.appendConvertedChunk?.(t),i.enqueue(U.encode(t));continue}if(!c)continue;let u=(0,l.parseSSELine)(c);if(!u)continue;if(N.push(u),u&&u.done){if(!P){P=!0,M.push({done:!0});let e="data: [DONE]\n\n";_?.appendConvertedChunk?.(e),i.enqueue(U.encode(e))}continue}if(u.delta?.text){let e=u.delta.text;x+=e.length,w?.accumulatedContent!==void 0&&"string"==typeof e&&(w.accumulatedContent+=e)}if(u.delta?.thinking){let e=u.delta.thinking;x+=e.length,w?.accumulatedContent!==void 0&&"string"==typeof e&&(w.accumulatedContent+=e)}if(u.choices?.[0]?.delta?.content){let e=u.choices[0].delta.content;if("string"==typeof e)x+=e.length,w?.accumulatedContent!==void 0&&(w.accumulatedContent+=e);else if(Array.isArray(e))for(let t of e)t?.text&&"string"==typeof t.text&&(x+=t.text.length,w?.accumulatedContent!==void 0&&(w.accumulatedContent+=t.text))}if(u.choices?.[0]?.delta?.reasoning_content){let e=u.choices[0].delta.reasoning_content;"string"==typeof e&&(x+=e.length,w?.accumulatedContent!==void 0&&(w.accumulatedContent+=e))}if(u.choices?.[0]?.delta?.reasoning&&!u.choices?.[0]?.delta?.reasoning_content){let e=u.choices[0].delta.reasoning;"string"==typeof e&&(u.choices[0].delta.reasoning_content=e,delete u.choices[0].delta.reasoning,x+=e.length,w?.accumulatedContent!==void 0&&(w.accumulatedContent+=e))}let p=n===r.FORMATS.GEMINI||n===r.FORMATS.GEMINI_CLI||n===r.FORMATS.ANTIGRAVITY?(0,l.unwrapGeminiChunk)(u):u;if(p.candidates?.[0]?.content?.parts)for(let e of p.candidates[0].content.parts)e.text&&"string"==typeof e.text&&(x+=e.text.length,w?.accumulatedContent!==void 0&&(w.accumulatedContent+=e.text));if(w?.accumulatedContent!==void 0){if("string"==typeof u.delta){let e=u.delta;w.accumulatedContent+=e,x+=e.length}if("string"==typeof u.content){let e=u.content;w.accumulatedContent+=e,x+=e.length}if("string"==typeof u.text){let e=u.text;w.accumulatedContent+=e,x+=e.length}}let f=(0,a.extractUsage)(u);f&&(w.usage=f);let m=(0,o.translateResponse)(n,s,u,w);for(let e of g(m)){let t=(0,l.formatSSE)(e,r.FORMATS.OPENAI);_?.appendOpenAIChunk?.(t)}if(m?.length>0)for(let e of m){let t=e;if(s===r.FORMATS.OPENAI||s===r.FORMATS.OPENAI_RESPONSES){t=(0,d.sanitizeStreamingChunk)(t);let e=t?.choices?.[0]?.delta;if(e?.content&&"string"==typeof e.content){let{content:t,thinking:n}=(0,d.extractThinkingFromContent)(e.content);e.content=t,n&&!e.reasoning_content&&(e.reasoning_content=n)}}if(!(0,l.hasValuableContent)(t,s))continue;let n="message_delta"===t.type||t.choices?.[0]?.finish_reason;if(w.finishReason&&n&&!(0,a.hasValidUsage)(t.usage)&&x>0){let e=(0,a.estimateUsage)(S,x,s);t.usage=(0,a.filterUsageForFormat)(e,s),w.usage=e}else if(w.finishReason&&n&&w.usage){let e=(0,a.addBufferToUsage)(w.usage);t.usage=(0,a.filterUsageForFormat)(e,s)}let o=(0,l.formatSSE)(t,s);M.push(t),_?.appendConvertedChunk?.(o),i.enqueue(U.encode(o))}}},flush(e){if(L&&(clearInterval(L),L=null),!j){(0,i.trackPendingRequest)(A,p,T,!1);try{let u=D.decode();if(u&&(R+=u),t===h){if(R){let t=R;R.startsWith("data:")&&!R.startsWith("data: ")&&(t="data: "+R.slice(5));let n=(0,l.parseSSELine)(R.trim());n&&(N.push(n),M.push(n)),_?.appendConvertedChunk?.(t),e.enqueue(U.encode(t))}if(!(0,a.hasValidUsage)(b)&&x>0&&(b=(0,a.estimateUsage)(S,x,s||r.FORMATS.OPENAI)),(0,a.hasValidUsage)(b)?(0,a.logUsage)(p,b,A,T,k):(0,i.appendRequestLog)({model:A,provider:p,connectionId:T,tokens:null,status:"200 OK"}).catch(()=>{}),E)try{let e=b,t=Number(e?.prompt_tokens??e?.input_tokens??0),n=Number(e?.completion_tokens??e?.output_tokens??0),o=I.trim()||"",r={role:"assistant",content:o||null},i=$.trim();i&&(r.reasoning_content=i),C.size>0&&(r.tool_calls=[...C.values()].sort((e,t)=>e.index-t.index));let a={choices:[{message:r,finish_reason:v?"tool_calls":"stop"}],usage:{prompt_tokens:t,completion_tokens:n,total_tokens:t+n},_streamed:!0};E({status:200,usage:b,responseBody:a,providerPayload:N.build((0,c.buildStreamSummaryFromEvents)(N.getEvents(),s,A),{includeEvents:!1}),clientPayload:M.build(a,{includeEvents:!1})})}catch{}return}if(R.trim()){let t=(0,l.parseSSELine)(R.trim());if(t&&!t.done){N.push(t);let i=(0,a.extractUsage)(t);if(i)if(w.usage){let e=w.usage;i.prompt_tokens>0&&(e.prompt_tokens=i.prompt_tokens),i.completion_tokens>0&&(e.completion_tokens=i.completion_tokens),i.total_tokens>0&&(e.total_tokens=i.total_tokens),i.cache_read_input_tokens>0&&(e.cache_read_input_tokens=i.cache_read_input_tokens),i.cache_creation_input_tokens>0&&(e.cache_creation_input_tokens=i.cache_creation_input_tokens),i.cached_tokens>0&&(e.cached_tokens=i.cached_tokens),i.reasoning_tokens>0&&(e.reasoning_tokens=i.reasoning_tokens)}else w.usage=i;let c=(0,o.translateResponse)(n,s,t,w);for(let e of g(c)){let t=(0,l.formatSSE)(e,r.FORMATS.OPENAI);_?.appendOpenAIChunk?.(t)}if(c?.length>0)for(let t of c){let n=(0,l.formatSSE)(t,s);M.push(t),_?.appendConvertedChunk?.(n),e.enqueue(U.encode(n))}}}let d=(0,o.translateResponse)(n,s,null,w);for(let e of g(d)){let t=(0,l.formatSSE)(e,r.FORMATS.OPENAI);_?.appendOpenAIChunk?.(t)}if(d?.length>0)for(let t of d){let n=(0,l.formatSSE)(t,s);M.push(t),_?.appendConvertedChunk?.(n),e.enqueue(U.encode(n))}if(!P){P=!0,M.push({done:!0});let t="data: [DONE]\n\n";_?.appendConvertedChunk?.(t),e.enqueue(U.encode(t))}if(!(0,a.hasValidUsage)(w?.usage)&&x>0&&(w.usage=(0,a.estimateUsage)(S,x,s)),(0,a.hasValidUsage)(w?.usage)?(0,a.logUsage)(w.provider||n,w.usage,A,T,k):(0,i.appendRequestLog)({model:A,provider:p,connectionId:T,tokens:null,status:"200 OK"}).catch(()=>{}),E)try{let e=w?.usage,t=Number(e?.prompt_tokens??e?.input_tokens??0),o=Number(e?.completion_tokens??e?.output_tokens??0),r=(w?.accumulatedContent??"").trim()||"",s={role:"assistant",content:r||null},i=w?.toolCalls?.size>0;i&&(s.tool_calls=[...w.toolCalls.values()].map(e=>({id:e.id??null,index:e.index??e.blockIndex??0,type:e.type??"function",function:e.function??{name:e.name??"",arguments:""}})).sort((e,t)=>e.index-t.index));let a={choices:[{message:s,finish_reason:i?"tool_calls":"stop"}],usage:{prompt_tokens:t,completion_tokens:o,total_tokens:t+o},_streamed:!0};E({status:200,usage:w?.usage,responseBody:a,providerPayload:N.build((0,c.buildStreamSummaryFromEvents)(N.getEvents(),n,A),{includeEvents:!1}),clientPayload:M.build(a,{includeEvents:!1})})}catch{}}catch(e){console.log(`[STREAM] Error in flush (${A||"unknown"}):`,e.message||e)}}}},{highWaterMark:16},{highWaterMark:16})}e.s(["createPassthroughStreamWithLogger",0,function(e=null,t=null,n=null,o=null,r=null,s=null,i=null,a=null){return f({mode:h,provider:e,reqLogger:t,toolNameMap:n,model:o,connectionId:r,apiKeyInfo:a,body:s,onComplete:i})},"createSSETransformStreamWithLogger",0,function(e,t,n=null,o=null,r=null,s=null,i=null,a=null,l=null,c=null){return f({mode:m,targetFormat:e,sourceFormat:t,provider:n,reqLogger:o,toolNameMap:r,model:s,connectionId:i,apiKeyInfo:c,body:a,onComplete:l})}]),n()}catch(e){n(e)}},!1),719485,e=>{"use strict";e.s(["createStreamController",0,function({onDisconnect:e,log:t,provider:n,model:o}={}){let r=new AbortController,s=Date.now(),i=!1,a=null,l=e=>{let t=Date.now()-s,r=n?.toUpperCase()||"UNKNOWN";console.log(`[${new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})}] 🌊 [STREAM] ${r} | ${o||"unknown"} | ${t}ms | ${e}`)};return{signal:r.signal,startTime:s,isConnected:()=>!i,handleDisconnect:(t="client_closed")=>{i||(i=!0,l(`disconnect: ${t}`),a=setTimeout(()=>{r.abort()},500),e?.({reason:t,duration:Date.now()-s}))},handleComplete:()=>{!i&&(i=!0,l("complete"),a&&(clearTimeout(a),a=null))},handleError:e=>{(a&&(clearTimeout(a),a=null),e instanceof Error&&"AbortError"===e.name)?l("aborted"):e instanceof Error?l(`error: ${e.message}`):l("error: unknown")},abort:()=>r.abort()}},"pipeWithDisconnect",0,function(e,t,n){var o;let r,s;return o={readable:e.body.pipeThrough(t),writable:{getWriter:()=>({abort:()=>{}})}},r=o.readable.getReader(),s=o.writable.getWriter(),new ReadableStream({async pull(e){if(!n.isConnected())return void e.close();try{let{done:t,value:o}=await r.read();if(t){n.handleComplete(),e.close();return}e.enqueue(o)}catch(s){n.handleError(s);let t=s instanceof Error?s.message:"Upstream stream error",o="object"==typeof s&&null!==s&&"statusCode"in s&&Number(s.statusCode)||500,r=new TextEncoder;e.enqueue(r.encode(`data: ${JSON.stringify({object:"chat.completion.chunk",choices:[{index:0,delta:{},finish_reason:"error"}],error:{message:t,type:"upstream_error",code:o}})}
|
|
16
16
|
|
|
17
17
|
`)),e.enqueue(r.encode(`data: [DONE]
|
|
18
18
|
|
|
@@ -24,6 +24,6 @@ data: ${JSON.stringify({tokens_generated:r,elapsed_ms:Date.now()-s,done:!0})}
|
|
|
24
24
|
|
|
25
25
|
`;o.enqueue(i.encode(e))}catch{}}})},"wantsProgress",0,function(e){return!!e&&"true"===("function"==typeof e.get?t=>e.get(t):t=>e[t])("x-omniroute-progress")}])},578172,e=>{"use strict";let t={"gemini-3-pro":["gemini-3.1-pro-preview","gemini-3-pro-preview","gemini-3.1-pro-high","gemini-3-pro-high","gemini-3.1-pro-low","gemini-3-pro-low"],"gemini-3.1-pro":["gemini-3.1-pro-preview","gemini-3-pro-preview","gemini-3.1-pro-high","gemini-3-pro-high","gemini-3.1-pro-low","gemini-3-pro-low"],"gemini-3-pro-preview":["gemini-3.1-pro-preview","gemini-3-pro-high","gemini-3.1-pro-high","gemini-3-pro-low","gemini-3.1-pro-low"],"gemini-3.1-pro-preview":["gemini-3-pro-preview","gemini-3.1-pro-high","gemini-3-pro-high","gemini-3.1-pro-low","gemini-3-pro-low"],"gemini-3-pro-high":["gemini-3.1-pro-high","gemini-3-pro-preview","gemini-3.1-pro-preview","gemini-3-pro-low","gemini-3.1-pro-low"],"gemini-3.1-pro-high":["gemini-3-pro-high","gemini-3.1-pro-preview","gemini-3-pro-preview","gemini-3.1-pro-low","gemini-3-pro-low"],"gemini-2.5-pro":["gemini-2.5-pro-preview-06-05","gemini-2.5-pro-exp-03-25"],"gemini-2.5-pro-preview-06-05":["gemini-2.5-pro","gemini-2.5-pro-exp-03-25"],"claude-opus-4-6":["claude-opus-4-6-thinking","claude-opus-4-5-20251101","claude-sonnet-4-6"],"claude-opus-4-6-thinking":["claude-opus-4-6","claude-opus-4-5-20251101"],"claude-sonnet-4-6":["claude-sonnet-4-5-20250929","claude-sonnet-4-20250514"],"claude-sonnet-4-5-20250929":["claude-sonnet-4-6","claude-sonnet-4-20250514"],"gpt-5":["gpt-5-mini","gpt-4o"],"gpt-5.1":["gpt-5.1-mini","gpt-5","gpt-4o"]},n=["model not found","model_not_found","model not available","model is not available","no such model","unsupported model","unknown model","this model does not exist","invalid model","model not supported","does not support","not enabled for","access to model","improperly formed request"];e.s(["getNextFamilyFallback",0,function(e,n){let o=t[e];if(!o)return null;for(let e of o)if(!n.has(e))return e;return null},"isModelUnavailableError",0,function(e,t){if(404===e)return!0;if(400!==e&&403!==e)return!1;let o=t.toLowerCase();return n.some(e=>o.includes(e))}])},167389,e=>{"use strict";let t={enabled:!0,provider:"nvidia",model:"openai/gpt-oss-120b",triggerOn402:!0,triggerOnBudgetKeywords:!0,budgetKeywords:["insufficient funds","insufficient_funds","budget exceeded","budget_exceeded","quota exceeded","quota_exceeded","billing","payment required","out of credits","no credits","credit limit","spending limit","saldo insuficiente","limite de gastos","cota excedida"],skipForToolRequests:!0,maxOutputTokens:4096};e.s(["EMERGENCY_FALLBACK_CONFIG",0,t,"isFallbackDecision",0,function(e){return!0===e.shouldFallback},"shouldUseFallback",0,function(e,n,o,r=t){if(!r.enabled)return{shouldFallback:!1,reason:"emergency fallback disabled"};if(r.skipForToolRequests&&o)return{shouldFallback:!1,reason:"skipped: request has tools"};if(r.triggerOn402&&402===e)return{shouldFallback:!0,reason:`HTTP 402 → emergency fallback to ${r.provider}/${r.model}`,provider:r.provider,model:r.model,maxOutputTokens:r.maxOutputTokens};if(r.triggerOnBudgetKeywords&&n){let e=n.toLowerCase(),t=r.budgetKeywords.find(t=>e.includes(t.toLowerCase()));if(t)return{shouldFallback:!0,reason:`Budget error detected ('${t}') → emergency fallback to ${r.provider}/${r.model}`,provider:r.provider,model:r.model,maxOutputTokens:r.maxOutputTokens}}return{shouldFallback:!1,reason:"no budget error detected"}}])},786022,e=>{"use strict";e.s(["resolveStreamFlag",0,function(e,t){return!0===e||!1!==e&&!function(e){if("string"!=typeof e)return!1;let t=e.toLowerCase();return t.includes("application/json")&&!t.includes("text/event-stream")}(t)},"stripMarkdownCodeFence",0,function(e){if("string"!=typeof e)return e;let t=e.trim().match(/^```(?:json|javascript|typescript|js|ts)?\s*\n?([\s\S]*?)\n?```\s*$/i);return t?t[1].trim():e}])},577122,e=>{"use strict";var t=e.i(478500),n=e.i(254799);new t.AsyncLocalStorage,e.s(["generateRequestId",0,function(){return(0,n.randomUUID)()}])},151011,e=>{"use strict";let t=new Set(["o1","o1-mini","o1-preview"]);e.s(["injectMemory",0,function(e,n,o){if(!n||0===n.length)return e;let r=function(e){if(!e||0===e.length)return"";let t=e.map(e=>e.content.trim()).filter(Boolean).join("\n");return t?`Memory context: ${t}`:""}(n);if(!r)return e;let s=Array.isArray(e.messages)?[...e.messages]:[];return!function(e){if(!e)return!0;let n=e.toLowerCase().trim();return!t.has(n)}(o)?{...e,messages:[{role:"user",content:r},...s]}:{...e,messages:[{role:"system",content:r},...s]}},"shouldInjectMemory",0,function(e,t){return t?.enabled!==!1&&Array.isArray(e.messages)&&e.messages.length>0}])},284948,e=>e.a(async(t,n)=>{try{var o=e.i(731664),r=e.i(85713),s=e.i(352812),i=e.i(496727),a=e.i(949756),l=e.i(954372),c=e.i(719485),u=e.i(928602),d=e.i(54092),p=e.i(878947),g=e.i(705765),f=e.i(828059),m=e.i(719201),h=e.i(16023),_=e.i(33595),y=e.i(385498),A=e.i(575770),T=e.i(439951),k=e.i(688828),S=e.i(312125),E=e.i(400722),R=e.i(397506),b=e.i(239409),v=e.i(362225),C=e.i(15844),O=e.i(578383);e.i(245272);var w=e.i(186920),x=e.i(790883),I=e.i(6751),$=e.i(593404),P=e.i(843303),N=e.i(69373),M=e.i(803285),D=e.i(725538),U=e.i(423525),F=e.i(581631),L=e.i(20870),j=e.i(511695),q=e.i(289130),B=e.i(537981),H=e.i(578172),V=e.i(951700),Y=e.i(464142),J=e.i(167389),G=e.i(786022),K=e.i(577122),W=e.i(764162),z=e.i(151011),X=e.i(929087),Q=e.i(693602),Z=t([a,l,k,S,E,R,I,X]);function ee(e){return"number"==typeof e&&Number.isFinite(e)&&e>0?e:0}function et(e){if(!e||"object"!=typeof e)return null;let t=e.prompt_tokens_details&&"object"==typeof e.prompt_tokens_details?e.prompt_tokens_details:void 0,n="cache_read_input_tokens"in e||"cached_tokens"in e||"cache_creation_input_tokens"in e||!!t&&("cached_tokens"in t||"cache_creation_tokens"in t),o=ee(e.cache_read_input_tokens??e.cached_tokens??t?.cached_tokens),r=ee(e.cache_creation_input_tokens??t?.cache_creation_tokens);return n?{cacheReadTokens:o,cacheCreationTokens:r}:null}function en(e,t){if(!t||"object"!=typeof t)return e;let n=Object.fromEntries(Object.entries(t).filter(([,e])=>null!=e));if(0===Object.keys(n).length)return e;if(!e||"object"!=typeof e||Array.isArray(e))return{_omniroute:n,_payload:e??null};let o=e._omniroute&&"object"==typeof e._omniroute&&!Array.isArray(e._omniroute)?e._omniroute:{};return{...e,_omniroute:{...o,...n}}}[a,l,k,S,E,R,I,X]=Z.then?(await Z)():Z;let es=new Map;async function eo(e){let t=es.get(e);if(t&&Date.now()-t.ts<1e4)return t;let n=await (0,x.getUpstreamProxyConfig)(e).catch(()=>null),o=n?{mode:n.mode,enabled:n.enabled,ts:Date.now()}:{mode:"native",enabled:!1,ts:Date.now()};return es.set(e,o),o}async function er({body:t,modelInfo:n,credentials:S,log:x,onCredentialsRefreshed:Z,onRequestSuccess:es,onDisconnect:ei,clientRawRequest:ea,connectionId:el,apiKeyInfo:ec=null,userAgent:eu,comboName:ed,comboStrategy:ep=null,isCombo:eg=!1}){let ef,em,eh,e_,ey,eA,{provider:eT,model:ek,extendedContext:eS}=n,eE="string"==typeof t?.model&&t.model.trim().length>0?t.model:ek,eR=Date.now(),eb=(e,t)=>{(0,E.saveRequestUsage)({provider:eT||"unknown",model:ek||"unknown",tokens:{input:0,output:0,cacheRead:0,cacheCreation:0,reasoning:0},status:String(e),success:!1,latencyMs:Date.now()-eR,timeToFirstTokenMs:0,errorCode:t||String(e),timestamp:new Date().toISOString(),connectionId:el||void 0,apiKeyId:ec?.id||void 0,apiKeyName:ec?.name||void 0}).catch(()=>{})},ev=async(e,t=0)=>{if("codex"===eT&&el&&e)try{let n=(0,N.parseCodexQuotaHeaders)(e);if(!n)return;let o=S?.providerSpecificData&&"object"==typeof S.providerSpecificData?S.providerSpecificData:{},r=(0,N.getCodexModelScope)(ek||eE||""),s={usage5h:n.usage5h,limit5h:n.limit5h,resetAt5h:n.resetAt5h,usage7d:n.usage7d,limit7d:n.limit7d,resetAt7d:n.resetAt7d,scope:r,updatedAt:new Date().toISOString()},i={...o,codexQuotaState:s};if(429===t){let e=(0,N.getCodexResetTime)(n);if(e&&e>Date.now()){let t=new Date(e).toISOString();i.codexScopeRateLimitedUntil={...o&&"object"==typeof o&&o.codexScopeRateLimitedUntil&&"object"==typeof o.codexScopeRateLimitedUntil?o.codexScopeRateLimitedUntil:{},[r]:t}}}await (0,y.updateProviderConnection)(el,{providerSpecificData:i}),S.providerSpecificData=i}catch(t){let e=t instanceof Error?t.message:String(t);x?.debug?.("CODEX",`Failed to persist codex quota state: ${e}`)}},eC=(0,q.getIdempotencyKey)(ea?.headers),eO=(0,q.checkIdempotency)(eC);if(eO)return x?.debug?.("IDEMPOTENCY",`Hit for key=${eC?.slice(0,12)}...`),{success:!0,response:new Response(JSON.stringify(eO.response),{status:eO.status,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":(0,o.getCorsOrigin)(),"X-OmniRoute-Idempotent":"true"}})};await (0,L.initializeRateLimits)(),el&&S&&!S.connectionId&&(S.connectionId=el);let ew=String(ea?.endpoint||""),ex=(0,r.detectFormatFromEndpoint)(t,ew),eI=/\/responses(?=\/|$)/i.test(ew)||/^responses(?=\/|$)/i.test(ew),e$=function({provider:e,sourceFormat:t,endpointPath:n}){return"codex"===e&&t===i.FORMATS.OPENAI_RESPONSES&&String(n||"").replace(/\/+$/,"").split("/").includes("responses")}({provider:eT,sourceFormat:ex,endpointPath:ew}),eP=(0,k.handleBypassRequest)(t,ek,eu);if(eP)return eP;let eN=(0,Y.getBackgroundDegradationConfig)().enabled?(0,Y.getBackgroundTaskReason)(t,ea?.headers):null;if(eN){let e=(0,Y.getDegradedModel)(ek);if(e!==ek){let n=ek;x?.info?.("BACKGROUND",`Background task redirect (${eN}): ${n} → ${e}`),ek=e,t&&"object"==typeof t&&(t.model=ek),(0,T.logAuditEvent)({action:"routing.background_task_redirect",actor:ec?.name||"system",target:el||eT||"chat",details:{original_model:n,redirected_to:e,reason:eN}})}}let eM=(0,g.resolveModelAlias)(ek),eD=eM!==ek?eM:ek;eM!==ek&&x?.info?.("ALIAS",`Model alias applied: ${ek} → ${eM}`);let eU=p.PROVIDER_ID_TO_ALIAS[eT]||eT,eF=(0,p.getModelTargetFormat)(eU,eM)||(0,r.getTargetFormat)(eT),eL=ec?.noLog===!0,ej=!eL&&await (0,A.isDetailedLoggingEnabled)(),eq=({status:e,tokens:n,responseBody:o,error:r,providerRequest:s,providerResponse:i,clientResponse:a,claudeCacheMeta:l,claudeCacheUsageMeta:c})=>{let u=(0,K.generateRequestId)(),d=ej?eY?.getPipelinePayloads?.():null;d&&(void 0!==i&&(d.providerResponse=i),void 0!==a&&(d.clientResponse=a),r&&(d.error={..."object"==typeof d.error&&d.error?d.error:{},message:r})),(0,R.saveCallLog)({id:u,method:"POST",path:ea?.endpoint||"/v1/chat/completions",status:e,model:ek,requestedModel:eE,provider:eT,connectionId:el,duration:Date.now()-eR,tokens:n||{},requestBody:en(t??void 0,{claudePromptCache:l}),responseBody:en(o??void 0,{claudePromptCache:l?{applied:l.applied,totalBreakpoints:l.totalBreakpoints,anthropicBeta:l.anthropicBeta}:null,claudePromptCacheUsage:c}),error:r||null,sourceFormat:ex,targetFormat:eF,comboName:ed,apiKeyId:ec?.id||null,apiKeyName:ec?.name||null,noLog:eL,pipelinePayloads:d}).catch(()=>{})},eB=e=>{if(e===eD)return{...(0,w.getModelUpstreamExtraHeaders)(eT||"",ek||"",ex),...(0,w.getModelUpstreamExtraHeaders)(eT||"",eM||"",ex)};let t=(0,g.resolveModelAlias)(e);return{...(0,w.getModelUpstreamExtraHeaders)(eT||"",e||"",ex),...(0,w.getModelUpstreamExtraHeaders)(eT||"",t||"",ex)}},eH=ea?.headers&&"function"==typeof ea.headers.get?ea.headers.get("accept")||ea.headers.get("Accept"):(ea?.headers||{}).accept||(ea?.headers||{}).Accept,eV=(0,G.resolveStreamFlag)(t?.stream,eH);if((0,j.isCacheable)(t,ea?.headers)){let e=(0,j.generateSignature)(ek,t.messages,t.temperature,t.top_p),n=(0,j.getCachedResponse)(e);if(n)return x?.debug?.("CACHE",`Semantic cache HIT for ${ek}`),{success:!0,response:new Response(JSON.stringify(n),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":(0,o.getCorsOrigin)(),"X-OmniRoute-Cache":"HIT"}})}}let eY=await (0,d.createRequestLogger)(ex,eF,ek);if(ea&&eY.logClientRawRequest(ea.endpoint,ea.body,ea.headers),x?.debug?.("FORMAT",`${ex} → ${eF} | stream=${eV}`),Array.isArray(t.messages)&&(t.messages=t.messages.map(e=>{if(""===e.name){let{name:t,...n}=e;return n}return e})),Array.isArray(t.input)&&(t.input=t.input.map(e=>{if(""===e.name){let{name:t,...n}=e;return n}return e})),Array.isArray(t.tools)&&(t.tools=t.tools.filter(e=>{let t=e.function,n=t?.name??e.name;return n&&String(n).trim().length>0})),ec?.id&&(0,z.shouldInjectMemory)(t))try{let e=await (0,X.retrieveMemories)(ec.id);e.length>0&&(t=(0,z.injectMemory)(t,e,eT),x?.debug?.("MEMORY",`Injected ${e.length} memories for key=${ec.id}`))}catch(e){x?.debug?.("MEMORY",`Memory injection skipped: ${e instanceof Error?e.message:String(e)}`)}let eJ=t,eG=ex===i.FORMATS.CLAUDE&&eF===i.FORMATS.CLAUDE,eK=(0,Q.isClaudeCodeCompatibleProvider)(eT),eW=eV||eK,ez=null,eX=await (0,$.getCacheControlSettings)().catch(()=>"auto"),eQ=(0,P.shouldPreserveCacheControl)({userAgent:eu,isCombo:eg,comboStrategy:ep,targetProvider:eT,targetFormat:eF,settings:{alwaysPreserveClientCache:eX}});eQ&&x?.debug?.("CACHE",`Preserving client cache_control (client=${eu?.substring(0,20)}, combo=${eg}, strategy=${ep}, provider=${eT})`);try{if(e$)eJ={...t,_nativeCodexPassthrough:!0},x?.debug?.("FORMAT","native codex passthrough enabled");else if(eK){let e={...t};if(ex!==i.FORMATS.OPENAI){let n=(0,w.getModelNormalizeToolCallId)(eT||"",ek||"",ex),o=(0,w.getModelPreserveOpenAIDeveloperRole)(eT||"",ek||"",ex);e=(0,s.translateRequest)(ex,i.FORMATS.OPENAI,ek,{...t},eV,S,eT,eY,{normalizeToolCallId:n,preserveDeveloperRole:o,preserveCacheControl:eQ})}ez=(0,Q.resolveClaudeCodeCompatibleSessionId)(ea?.headers),eJ=(0,Q.buildClaudeCodeCompatibleRequest)({sourceBody:t,normalizedBody:e,model:ek,stream:eW,sessionId:ez,cwd:process.cwd(),now:new Date}),x?.debug?.("FORMAT","claude-code-compatible bridge enabled")}else if(eG&&eQ)(eJ={...t})._disableToolPrefix=!0,x?.debug?.("FORMAT","claude passthrough with cache_control preservation");else if(eG){let e=(0,w.getModelNormalizeToolCallId)(eT||"",ek||"",ex),n=(0,w.getModelPreserveOpenAIDeveloperRole)(eT||"",ek||"",ex);eJ=(0,s.translateRequest)(i.FORMATS.CLAUDE,i.FORMATS.OPENAI,ek,{...t},eV,S,eT,eY,{normalizeToolCallId:e,preserveDeveloperRole:n,preserveCacheControl:eQ}),eJ=(0,s.translateRequest)(i.FORMATS.OPENAI,i.FORMATS.CLAUDE,ek,{...eJ,_disableToolPrefix:!0},eV,S,eT,eY,{normalizeToolCallId:e,preserveDeveloperRole:n,preserveCacheControl:eQ}),x?.debug?.("FORMAT","claude->openai->claude normalized passthrough")}else{if(eJ={...t},eF===i.FORMATS.CLAUDE&&(eJ._disableToolPrefix=!0),Array.isArray(eJ.messages))for(let e of eJ.messages)Array.isArray(e.content)&&(e.content=e.content.filter(e=>"text"!==e.type||"string"==typeof e.text&&e.text.length>0));if(Array.isArray(eJ.messages))for(let e of eJ.messages)"user"===e.role&&Array.isArray(e.content)&&(e.content=e.content.flatMap(e=>{if("text"===e.type||"image_url"===e.type||"image"===e.type)return[e];if("file"===e.type||"document"===e.type){let t=e.file?.content??e.file?.text??e.content??e.text,n=e.file?.name??e.name??"attachment";return"string"==typeof t&&t.length>0?[{type:"text",text:`[${n}]
|
|
26
26
|
${t}`}]:[]}if("tool_result"===e.type){let t=e.tool_use_id??e.id??"unknown",n=e.content??e.text??e.output??"",o="string"==typeof n?n:Array.isArray(n)?n.filter(e=>"text"===e.type).map(e=>e.text).join("\n"):JSON.stringify(n);return o.length>0?[{type:"text",text:`[Tool Result: ${t}]
|
|
27
|
-
${o}`}]:[]}return x?.debug?.("CONTENT",`Dropped unsupported content part type="${e.type}"`),[]}));let e=(0,w.getModelNormalizeToolCallId)(eT||"",ek||"",ex),n=(0,w.getModelPreserveOpenAIDeveloperRole)(eT||"",ek||"",ex);eJ=(0,s.translateRequest)(ex,eF,ek,eJ,eV,S,eT,eY,{normalizeToolCallId:e,preserveDeveloperRole:n,preserveCacheControl:eQ})}}catch(s){let e=Number(s?.statusCode),t=Number.isInteger(e)&&e>=400&&e<=599?e:h.HTTP_STATUS.SERVER_ERROR,n=s?.message||"Invalid request",r="string"==typeof s?.errorType?s.errorType:null;if(x?.warn?.("TRANSLATE",`Request translation failed: ${n}`),r)return{success:!1,status:t,error:n,response:new Response(JSON.stringify({error:{message:n,type:r,code:r}}),{status:t,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":(0,o.getCorsOrigin)()}})};return(0,m.createErrorResult)(t,n)}let eZ=eJ._toolNameMap,e0=eG?function(e){if(!e||!Array.isArray(e.tools))return null;let t=new Map;for(let n of e.tools){let e=n?.type==="function"&&n.function&&"object"==typeof n.function?n.function:n,o="string"==typeof e?.name?e.name.trim():"";o&&t.set(`${O.CLAUDE_OAUTH_TOOL_PREFIX}${o}`,o)}return t.size>0?t:null}(t):null,e1=eZ instanceof Map&&eZ.size>0?eZ:e0;delete eJ._toolNameMap,delete eJ._disableToolPrefix,eJ.model=eD;let e2=(0,f.getUnsupportedParams)(eT,ek);if(e2.length>0){let e=[];for(let t of e2)Object.hasOwn(eJ,t)&&(e.push(t),delete eJ[t]);e.length>0&&x?.warn?.("PARAMS",`Stripped unsupported params for ${ek}: ${e.join(", ")}`)}let e5=h.PROVIDER_MAX_TOKENS[eT];if(e5)for(let e of["max_tokens","max_completion_tokens"])"number"==typeof eJ[e]&&eJ[e]>e5&&(x?.debug?.("PARAMS",`Capping ${e} from ${eJ[e]} to ${e5} for ${eT}`),eJ[e]=e5);let e3=async e=>{let t=await eo(e);if(!t.enabled||"native"===t.mode)return(0,I.getExecutor)(e);if("cliproxyapi"===t.mode)return x?.info?.("UPSTREAM_PROXY",`${e} routed through CLIProxyAPI (passthrough)`),(0,I.getExecutor)("cliproxyapi");let n=(0,I.getExecutor)(e),o=(0,I.getExecutor)("cliproxyapi"),r=Object.create(n);return r.execute=async t=>{try{let r,s=await n.execute(t);if((r=s.response.status)>=500||429===r||0===r){x?.info?.("UPSTREAM_PROXY",`${e} native failed (${s.response.status}), retrying via CLIProxyAPI`);try{return await o.execute(t)}catch(n){let t=n instanceof Error?n.message:String(n);throw x?.error?.("UPSTREAM_PROXY",`${e} CLIProxyAPI fallback also failed: ${t}`),n}}return s}catch(r){let n=r instanceof Error?r.message:String(r);x?.info?.("UPSTREAM_PROXY",`${e} native error (${n}), retrying via CLIProxyAPI`);try{return await o.execute(t)}catch(n){let t=n instanceof Error?n.message:String(n);throw x?.error?.("UPSTREAM_PROXY",`${e} CLIProxyAPI fallback also failed: ${t}`),n}}},r},e4=await e3(eT),e9=()=>{let e=e$?{...S,requestEndpointPath:ew}:S;return ez?{...e,providerSpecificData:{...e?.providerSpecificData||{},ccSessionId:ez}}:e},e7=(0,c.createStreamController)({onDisconnect:ei,log:x,provider:eT,model:ek}),e8={...eJ,model:`${eT}/${ek}`,stream:eV},e6=(0,V.shouldDeduplicate)(e8),te=e6?(0,V.computeRequestHash)(e8):null,tt=async(t=eD,n=!1)=>{let o=async()=>{let n=eJ.model===t?eJ:{...eJ,model:t};if(eF===i.FORMATS.OPENAI&&(0,P.providerSupportsCaching)(eT)&&!n.prompt_cache_key&&Array.isArray(n.messages)&&!["nvidia","codex","xai"].includes(eT)){let{generatePromptCacheKey:t}=await e.A(828068),o=t(n.messages);o&&(n={...n,prompt_cache_key:o})}let o=await (0,L.withRateLimit)(eT,el,t,async()=>{let e=0,o="qwen"===eT?3:1;for(;e<o;){let r=await e4.execute({model:t,body:n,stream:eW,credentials:e9(),signal:e7.signal,log:x,extendedContext:eS,upstreamExtraHeaders:eB(t)});if("qwen"===eT&&429===r.response.status&&e<o-1&&(await r.response.clone().text().catch(()=>"")).toLowerCase().includes("exceeded your current quota")){let t=1500*(e+1);x?.warn?.("QWEN_RETRY",`Quota 429 hit. Retrying in ${t}ms...`),await new Promise(e=>setTimeout(e,t)),e++;continue}return r}});if(eV)return o;let r=o.response.status,s=o.response.statusText,a=Array.from(o.response.headers.entries()),l=await o.response.text();return{...o,response:new Response(l,{status:r,statusText:s,headers:a})}};if(n&&e6&&te){let e=await (0,V.deduplicate)(te,o);return e.wasDeduplicated&&x?.debug?.("DEDUP",`Joined in-flight request hash=${te}`),e.result}return o()};(0,E.trackPendingRequest)(ek,eT,el,!0);let tn=new Set([eD]),to=eD;(0,E.appendRequestLog)({model:ek,provider:eT,connectionId:el,status:"PENDING"}).catch(()=>{});let tr=eJ.messages?.length||eJ.contents?.length||eJ.request?.contents?.length||0;x?.debug?.("REQUEST",`${eT.toUpperCase()} | ${ek} | ${tr} msgs`);let ts=null;try{let e=await tt(eD,!0);ef=e.response,em=e.url,eh=e.headers,e_=e.transformedBody,ts=function(e,t,n){if(e!==i.FORMATS.CLAUDE||!t||"object"!=typeof t)return null;let o=(e,t={})=>({type:e&&"string"==typeof e.type&&e.type.trim()?e.type.trim():"ephemeral",ttl:e&&"string"==typeof e.ttl&&e.ttl.trim()?e.ttl.trim():null,...t}),r=Array.isArray(t.system)?t.system.flatMap((e,t)=>{if(!e||"object"!=typeof e)return[];let n=e.cache_control&&"object"==typeof e.cache_control?e.cache_control:null;return n?[o(n,{index:t})]:[]}):[],s=Array.isArray(t.tools)?t.tools.flatMap((e,t)=>{if(!e||"object"!=typeof e)return[];let n=e.cache_control&&"object"==typeof e.cache_control?e.cache_control:null,r="string"==typeof e.name&&e.name.trim()?e.name.trim():null;return n?[o(n,{index:t,name:r})]:[]}):[],a=Array.isArray(t.messages)?t.messages.flatMap((e,t)=>{if(!e||"object"!=typeof e||!Array.isArray(e.content))return[];let n="string"==typeof e.role&&e.role.trim()?e.role.trim():"unknown";return e.content.flatMap((e,r)=>{if(!e||"object"!=typeof e)return[];let s=e.cache_control&&"object"==typeof e.cache_control?e.cache_control:null;return s?[o(s,{messageIndex:t,contentIndex:r,role:n,blockType:"string"==typeof e.type&&e.type.trim()?e.type.trim():"unknown"})]:[]})}):[],l=r.length+s.length+a.length,c=function(e,t){if(!e||"object"!=typeof e)return null;let n=t.toLowerCase();for(let[t,o]of Object.entries(e))if(t.toLowerCase()===n&&"string"==typeof o&&o.trim())return o.trim();return null}(n,"Anthropic-Beta");return 0!==l||c?{applied:l>0,totalBreakpoints:l,anthropicBeta:c,systemBreakpoints:r,toolBreakpoints:s,messageBreakpoints:a}:null}(eF,e_,eh),eY.logTargetRequest(em,eh,e_),(0,L.updateFromHeaders)(eT,el,ef.headers,ef.status,ek)}catch(n){(0,E.trackPendingRequest)(ek,eT,el,!1);let e="AbortError"===n.name?499:h.HTTP_STATUS.BAD_GATEWAY,t="AbortError"===n.name?"Request aborted":(0,m.formatProviderError)(n,eT,ek,h.HTTP_STATUS.BAD_GATEWAY);if((0,E.appendRequestLog)({model:ek,provider:eT,connectionId:el,status:`FAILED ${e}`}).catch(()=>{}),eq({status:e,error:t,providerRequest:e_||eJ,clientResponse:(0,m.buildErrorBody)(e,t),claudeCacheMeta:ts}),"AbortError"===n.name)return e7.handleError(n),(0,m.createErrorResult)(499,"Request aborted");return eb(h.HTTP_STATUS.BAD_GATEWAY,n instanceof Error&&n.name?n.name:"upstream_error"),console.log(`${l.COLORS.red}[ERROR] ${t}${l.COLORS.reset}`),(0,m.createErrorResult)(h.HTTP_STATUS.BAD_GATEWAY,t)}if(ef.status===h.HTTP_STATUS.UNAUTHORIZED||ef.status===h.HTTP_STATUS.FORBIDDEN){let e=await (0,u.refreshWithRetry)(()=>e4.refreshCredentials(S,x),3,x);if(e?.accessToken||e?.copilotToken){x?.info?.("TOKEN",`${eT.toUpperCase()} | refreshed`),Object.assign(S,e),Z&&e&&await Z(e);try{let e=String(eJ.model||eD),t=await e4.execute({model:e,body:eJ,stream:eW,credentials:e9(),signal:e7.signal,log:x,extendedContext:eS,upstreamExtraHeaders:eB(e)});t.response.ok&&(ef=t.response,em=t.url,eh=t.headers,e_=t.transformedBody,eY.logTargetRequest(em,eh,e_))}catch{x?.warn?.("TOKEN",`${eT.toUpperCase()} | retry after refresh failed`)}}else x?.warn?.("TOKEN",`${eT.toUpperCase()} | refresh failed`)}if(await ev(ef.headers,ef.status),!ef.ok){(0,E.trackPendingRequest)(ek,eT,el,!1);let{statusCode:t,message:n,retryAfterMs:o,responseBody:r}=await (0,m.parseUpstreamError)(ef,eT),s=(0,_.classifyProviderError)(t,n);if(el&&s)try{if(s===_.PROVIDER_ERROR_TYPES.FORBIDDEN)await (0,y.updateProviderConnection)(el,{isActive:!1,testStatus:"banned",lastErrorType:s,lastError:n,errorCode:t}),console.warn(`[provider] Node ${el} banned (${t}) — disabling permanently`);else if(s===_.PROVIDER_ERROR_TYPES.ACCOUNT_DEACTIVATED)await (0,y.updateProviderConnection)(el,{isActive:!1,testStatus:"deactivated",lastErrorType:s,lastError:n,errorCode:t}),console.warn(`[provider] Node ${el} account deactivated (${t}) — disabling permanently`);else if(s===_.PROVIDER_ERROR_TYPES.RATE_LIMITED)if(eT&&(0,f.getPassthroughProviders)().has(eT)){let{lockModel:n}=await e.A(730711),r=o||12e4;n(eT,el,ek,"rate_limited",r),console.warn(`[provider] Node ${el} model-only rate limited (${t}) for ${ek} - ${Math.ceil(r/1e3)}s (connection stays active)`)}else{let e=new Date(Date.now()+o).toISOString();await (0,y.updateProviderConnection)(el,{rateLimitedUntil:e,testStatus:"credits_exhausted",lastErrorType:s,lastError:n,errorCode:t,healthCheckInterval:null,lastHealthCheckAt:null}),console.warn(`[provider] Node ${el} rate limited (${t}) - Next available at ${e}`)}else s===_.PROVIDER_ERROR_TYPES.QUOTA_EXHAUSTED?(await (0,y.updateProviderConnection)(el,{testStatus:"credits_exhausted",lastErrorType:s,lastError:n,errorCode:t}),console.warn(`[provider] Node ${el} exhausted quota (${t})`)):s===_.PROVIDER_ERROR_TYPES.ACCOUNT_DEACTIVATED?(await (0,y.updateProviderConnection)(el,{isActive:!1,testStatus:"expired",lastErrorType:s,lastError:n,errorCode:t}),console.warn(`[provider] Node ${el} account deactivated (${t}) — marked expired`)):s===_.PROVIDER_ERROR_TYPES.UNAUTHORIZED?await (0,y.updateProviderConnection)(el,{lastErrorType:s,lastError:n,errorCode:t}):s===_.PROVIDER_ERROR_TYPES.PROJECT_ROUTE_ERROR&&(await (0,y.updateProviderConnection)(el,{lastErrorType:s,lastError:n,errorCode:t}),console.warn(`[provider] Node ${el} project routing error (${t}) — not banning`))}catch{}(0,E.appendRequestLog)({model:ek,provider:eT,connectionId:el,status:`FAILED ${t}`}).catch(()=>{});let i=(0,m.formatProviderError)(Error(n),eT,ek,t);if(console.log(`${l.COLORS.red}[ERROR] ${i}${l.COLORS.reset}`),o&&"antigravity"===eT){let e=Math.ceil(o/1e3);x?.debug?.("RETRY",`Antigravity quota reset in ${e}s (${o}ms)`)}if(eY.logError(Error(n),e_||eJ),eY.logProviderResponse(ef.status,ef.statusText,ef.headers,r),(0,L.updateFromHeaders)(eT,el,ef.headers,t,ek),!(0,H.isModelUnavailableError)(t,n))return eq({status:t,error:i,providerRequest:e_||eJ,providerResponse:r,clientResponse:(0,m.buildErrorBody)(t,i)}),eb(t,`upstream_${t}`),(0,m.createErrorResult)(t,i,o);{let e=(0,H.getNextFamilyFallback)(to,tn);if(!e)return eq({status:t,error:i,providerRequest:e_||eJ,providerResponse:r,clientResponse:(0,m.buildErrorBody)(t,i)}),eb(t,"model_unavailable"),(0,m.createErrorResult)(t,i,o);tn.add(e),to=e,eJ.model=e,x?.info?.("MODEL_FALLBACK",`${ek} unavailable (${t}) → trying ${e}`);try{let n=await tt(e,!1);if(!n.response.ok)return eq({status:t,error:i,providerRequest:e_||eJ,providerResponse:r,clientResponse:(0,m.buildErrorBody)(t,i)}),eb(t,"model_unavailable"),(0,m.createErrorResult)(t,i,o);ef=n.response,em=n.url,eh=n.headers,e_=n.transformedBody,eY.logTargetRequest(em,eh,e_),x?.info?.("MODEL_FALLBACK",`Serving ${e} as fallback for ${ek}`)}catch{return eq({status:t,error:i,providerRequest:e_||eJ,providerResponse:r,clientResponse:(0,m.buildErrorBody)(t,i)}),eb(t,"model_unavailable"),(0,m.createErrorResult)(t,i,o)}}let a=Array.isArray(eJ.tools)&&eJ.tools.length>0;if(!eV){let e=(0,J.shouldUseFallback)(t,n,a,J.EMERGENCY_FALLBACK_CONFIG);if((0,J.isFallbackDecision)(e)){x?.info?.("EMERGENCY_FALLBACK",e.reason);try{let t=(0,I.getExecutor)(e.provider),n=await t.execute({model:e.model,body:{...eJ,model:e.model,max_tokens:Math.min("number"==typeof eJ.max_tokens?eJ.max_tokens:e.maxOutputTokens,e.maxOutputTokens)},stream:!1,credentials:S,signal:e7.signal,log:x,extendedContext:eS});n.response.ok?(ef=n.response,em=n.url,eh=n.headers,e_=n.transformedBody,eY.logTargetRequest(em,eh,e_),x?.info?.("EMERGENCY_FALLBACK",`Serving ${e.provider}/${e.model} as budget fallback for ${eT}/${ek}`)):x?.warn?.("EMERGENCY_FALLBACK",`Emergency fallback also failed (${n.response.status})`)}catch(t){let e=t instanceof Error?t.message:String(t);x?.warn?.("EMERGENCY_FALLBACK",`Emergency fallback error: ${e}`)}}}}if(!eV){let e;(0,E.trackPendingRequest)(ek,eT,el,!1);let n=(ef.headers.get("content-type")||"").toLowerCase(),r=await ef.text(),a=(0,W.normalizePayloadForLog)(r),c=n.includes("text/event-stream")||/(^|\n)\s*(event|data):/m.test(r);if(c){let t=eF===i.FORMATS.OPENAI_RESPONSES?(0,U.parseSSEToResponsesOutput)(r,ek):eF===i.FORMATS.CLAUDE?(0,U.parseSSEToClaudeResponse)(r,ek):(0,U.parseSSEToOpenAIResponse)(r,ek);if(!t){(0,E.appendRequestLog)({model:ek,provider:eT,connectionId:el,status:`FAILED ${h.HTTP_STATUS.BAD_GATEWAY}`}).catch(()=>{});let e="Invalid SSE response for non-streaming request";return eq({status:h.HTTP_STATUS.BAD_GATEWAY,error:e,providerRequest:e_||eJ,providerResponse:a,clientResponse:(0,m.buildErrorBody)(h.HTTP_STATUS.BAD_GATEWAY,e)}),eb(h.HTTP_STATUS.BAD_GATEWAY,"invalid_sse_payload"),(0,m.createErrorResult)(h.HTTP_STATUS.BAD_GATEWAY,e)}e=t}else try{e=r?JSON.parse(r):{}}catch{(0,E.appendRequestLog)({model:ek,provider:eT,connectionId:el,status:`FAILED ${h.HTTP_STATUS.BAD_GATEWAY}`}).catch(()=>{});let e="Invalid JSON response from provider";return eq({status:h.HTTP_STATUS.BAD_GATEWAY,error:e,providerRequest:e_||eJ,providerResponse:a,clientResponse:(0,m.buildErrorBody)(h.HTTP_STATUS.BAD_GATEWAY,e)}),eb(h.HTTP_STATUS.BAD_GATEWAY,"invalid_json_payload"),(0,m.createErrorResult)(h.HTTP_STATUS.BAD_GATEWAY,e)}ex===i.FORMATS.CLAUDE&&eF===i.FORMATS.CLAUDE&&(e=function(e,t){if(!t||!Array.isArray(e?.content))return e;let n=!1,o=e.content.map(e=>{if(e?.type!=="tool_use"||"string"!=typeof e?.name)return e;let o=t.get(e.name)??e.name;return o===e.name?e:(n=!0,{...e,name:o})});return n?{...e,content:o}:e}(e,e1)),eY.logProviderResponse(ef.status,ef.statusText,ef.headers,c?{_streamed:!0,_format:"sse-json",summary:e}:e),es&&await es();let u=(0,D.extractUsageFromResponse)(e,eT);(0,E.appendRequestLog)({model:ek,provider:eT,connectionId:el,tokens:u,status:"200 OK"}).catch(()=>{});let d=et(u);if(u&&"object"==typeof u){let e=`[${new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit"})}] 📊 [USAGE] ${eT.toUpperCase()} | ${(0,b.formatUsageLog)(u)}${el?` | account=${el.slice(0,8)}...`:""}`;console.log(`${l.COLORS.green}${e}${l.COLORS.reset}`),u.prompt_tokens,ee(u.cache_read_input_tokens??u.cached_tokens??u.prompt_tokens_details?.cached_tokens),ee(u.cache_creation_input_tokens??u.prompt_tokens_details?.cache_creation_tokens),(0,E.saveRequestUsage)({provider:eT||"unknown",model:ek||"unknown",tokens:u,status:"200",success:!0,latencyMs:Date.now()-eR,timeToFirstTokenMs:Date.now()-eR,errorCode:null,timestamp:new Date().toISOString(),connectionId:el||void 0,apiKeyId:ec?.id||void 0,apiKeyName:ec?.name||void 0}).catch(e=>{console.error("Failed to save usage stats:",e.message)})}if(ec?.id&&u){let e=await (0,C.calculateCost)(eT,ek,u);e>0&&(0,v.recordCost)(ec.id,e)}let p=(0,s.needsTranslation)(eF,ex)?(0,M.translateNonStreamingResponse)(e,eF,ex,e1):e;if("claude"!==ex||eV||"string"!=typeof p?.choices?.[0]?.message?.content||(p.choices[0].message.content=(0,G.stripMarkdownCodeFence)(p.choices[0].message.content)),p?.choices)for(let e of p.choices)e.message?.tool_calls&&e.message.tool_calls.length>0&&"tool_calls"!==e.finish_reason&&(e.finish_reason="tool_calls");if((eF===i.FORMATS.OPENAI||eF===i.FORMATS.OPENAI_RESPONSES)&&(p=(0,F.sanitizeOpenAIResponse)(p)),p?.usage){let e=(0,l.addBufferToUsage)(p.usage);p.usage=(0,l.filterUsageForFormat)(e,ex)}else{let e=JSON.stringify(p?.choices?.[0]?.message?.content||"").length;if(e>0){let n=(0,l.estimateUsage)(t,e,ex);p.usage=(0,l.filterUsageForFormat)(n,ex)}}if((0,j.isCacheable)(t,ea?.headers)){let e=(0,j.generateSignature)(ek,t.messages,t.temperature,t.top_p),n=u?.prompt_tokens+u?.completion_tokens||0;(0,j.setCachedResponse)(e,ek,p,n),x?.debug?.("CACHE",`Stored response for ${ek} (${n} tokens)`)}return(0,q.saveIdempotency)(eC,p,200),eY.logConvertedResponse(p),eq({status:200,tokens:u,responseBody:e,providerRequest:e_||eJ,providerResponse:c?{_streamed:!0,_format:"sse-json",summary:e}:e,clientResponse:p,claudeCacheMeta:ts,claudeCacheUsageMeta:d}),{success:!0,response:new Response(JSON.stringify(p),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":(0,o.getCorsOrigin)(),"X-OmniRoute-Cache":"MISS"}})}}es&&await es();let ti={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","Access-Control-Allow-Origin":(0,o.getCorsOrigin)()},ta=({status:e,usage:t,responseBody:n,providerPayload:o,clientPayload:r,ttft:s})=>{let i=et(t);t&&"object"==typeof t&&(t.prompt_tokens,ee(t.cache_read_input_tokens??t.cached_tokens??t.prompt_tokens_details?.cached_tokens),ee(t.cache_creation_input_tokens??t.prompt_tokens_details?.cache_creation_tokens),(0,E.saveRequestUsage)({provider:eT||"unknown",model:ek||"unknown",tokens:t,status:String(e||200),success:200===e,latencyMs:Date.now()-eR,timeToFirstTokenMs:s,errorCode:null,timestamp:new Date().toISOString(),connectionId:el||void 0,apiKeyId:ec?.id||void 0,apiKeyName:ec?.name||void 0}).catch(e=>{console.error("Failed to save usage stats:",e.message)})),eq({status:e||200,tokens:t||{},responseBody:n??void 0,providerRequest:e_||eJ,providerResponse:o,clientResponse:r??n??void 0,claudeCacheMeta:ts,claudeCacheUsageMeta:i}),ec?.id&&t&&(0,C.calculateCost)(eT,ek,t).then(e=>{e>0&&(0,v.recordCost)(ec.id,e)}).catch(()=>{})},tl=eu?.toLowerCase().includes("droid")||eu?.toLowerCase().includes("codex-cli");if(eF!==i.FORMATS.OPENAI_RESPONSES||ex!==i.FORMATS.OPENAI||eI||tl?(0,s.needsTranslation)(eF,ex)?(x?.debug?.("STREAM",`Translation mode: ${eF} → ${ex}`),ey=(0,a.createSSETransformStreamWithLogger)(eF,ex,eT,eY,e1,ek,el,t,ta,ec)):(x?.debug?.("STREAM","Standard passthrough mode"),ey=(0,a.createPassthroughStreamWithLogger)(eT,eY,e1,ek,el,t,ta,ec)):(x?.debug?.("STREAM","Responses translation mode: openai-responses → openai"),ey=(0,a.createSSETransformStreamWithLogger)("openai-responses","openai",eT,eY,e1,ek,el,t,ta,ec)),(0,B.wantsProgress)(ea?.headers)){let e=(0,B.createProgressTransform)({signal:e7.signal});eA=(0,c.pipeWithDisconnect)(ef,ey,e7).pipeThrough(e),ti["X-OmniRoute-Progress"]="enabled"}else eA=(0,c.pipeWithDisconnect)(ef,ey,e7);return{success:!0,response:new Response(eA,{headers:ti})}}e.s(["handleChatCore",0,er]),n()}catch(e){n(e)}},!1),485641,e=>{"use strict";let t=[{name:"system_override",pattern:/\b(ignore|disregard|forget)\s+(all\s+)?(previous|prior|above|earlier)\s+(instructions?|prompts?|rules?|context)/i,severity:"high"},{name:"role_hijack",pattern:/\b(you\s+are\s+now|act\s+as\s+if|pretend\s+(to\s+be|you\s+are)|from\s+now\s+on\s+you\s+are)\b/i,severity:"medium"},{name:"system_prompt_leak",pattern:/\b(reveal|show|display|print|output|repeat)\s+(your\s+)?(system\s+prompt|instructions?|initial\s+prompt|hidden\s+prompt)/i,severity:"high"},{name:"delimiter_injection",pattern:/(\[SYSTEM\]|\[INST\]|<<SYS>>|<\|im_start\|>|<\|system\|>|<\|user\|>)/i,severity:"high"},{name:"jailbreak_dan",pattern:/\b(DAN|do\s+anything\s+now|jailbreak|developer\s+mode|enable\s+developer)\b/i,severity:"medium"},{name:"encoding_evasion",pattern:/\b(base64\s+decode|rot13|hex\s+decode|unicode\s+escape)\b.*\b(instruction|prompt|command)\b/i,severity:"medium"}],n=[{name:"email",pattern:/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g,replacement:"[EMAIL_REDACTED]"},{name:"cpf",pattern:/\b\d{3}\.\d{3}\.\d{3}-\d{2}\b/g,replacement:"[CPF_REDACTED]"},{name:"cnpj",pattern:/\b\d{2}\.\d{3}\.\d{3}\/\d{4}-\d{2}\b/g,replacement:"[CNPJ_REDACTED]"},{name:"credit_card",pattern:/\b(?:\d{4}[-\s]?){3}\d{4}\b/g,replacement:"[CARD_REDACTED]"},{name:"phone_br",pattern:/\b\(?\d{2}\)?\s?\d{4,5}-?\d{4}\b/g,replacement:"[PHONE_REDACTED]"},{name:"ssn_us",pattern:/\b\d{3}-\d{2}-\d{4}\b/g,replacement:"[SSN_REDACTED]"}];function o(e,t=!1){let r=[],s=e;for(let o of n){let n=e.match(o.pattern);n&&n.length>0&&(r.push({type:o.name,count:n.length}),t&&(s=s.replace(o.pattern,o.replacement)))}return{text:s,detections:r}}e.s(["sanitizeRequest",0,function(e,n=console){let r={enabled:"false"!==process.env.INPUT_SANITIZER_ENABLED,mode:process.env.INPUT_SANITIZER_MODE||"warn",piiRedaction:"true"===process.env.PII_REDACTION_ENABLED},s={blocked:!1,modified:!1,detections:[],piiDetections:[],sanitizedBody:null};if(!r.enabled)return s;let i=(function(e){let t=[];for(let n of e.messages||e.input||[])if("string"==typeof n)t.push(n);else if("string"==typeof n.content)t.push(n.content);else if(Array.isArray(n.content))for(let e of n.content)"string"==typeof e?t.push(e):e.text&&t.push(e.text);if("string"==typeof e.system)t.push(e.system);else if(Array.isArray(e.system))for(let n of e.system)"string"==typeof n?t.push(n):n.text&&t.push(n.text);return t})(e).join("\n"),a=function(e){let n=[];for(let o of t){let t=e.match(o.pattern);t&&n.push({pattern:o.name,severity:o.severity,match:t[0].slice(0,50)})}return n}(i);if(a.length>0){s.detections=a;let e=a.filter(e=>"high"===e.severity),t=e.length>0?"warn":"info";if(n[t]&&n[t](`[SANITIZER] Prompt injection detected: ${a.map(e=>e.pattern).join(", ")}`),"block"===r.mode&&e.length>0)return s.blocked=!0,s}if(r.piiRedaction){let t=o(i,"redact"===r.mode);s.piiDetections=t.detections,t.detections.length>0&&(n.warn?.(`[SANITIZER] PII detected: ${t.detections.map(e=>`${e.type}(${e.count})`).join(", ")}`),"redact"===r.mode&&(s.sanitizedBody=function(e){let t=JSON.parse(JSON.stringify(e));for(let e of t.messages||t.input||[])if("string"==typeof e.content)e.content=o(e.content,!0).text;else if(Array.isArray(e.content))for(let t of e.content)if("string"==typeof t){let n=e.content.indexOf(t);e.content[n]=o(t,!0).text}else t.text&&(t.text=o(t.text,!0).text);return"string"==typeof t.system&&(t.system=o(t.system,!0).text),t}(e),s.modified=!0))}return s}])},311250,e=>e.a(async(t,n)=>{try{var o=e.i(287726),r=e.i(192408),s=e.i(85713),i=e.i(284948),a=e.i(719201),l=e.i(928041),c=e.i(16023),u=e.i(878947),d=e.i(444675);e.i(706901);var p=e.i(249157),g=e.i(496973);e.i(245272);var f=e.i(548941),m=e.i(151205),h=e.i(496928),_=e.i(21245),y=e.i(485641),A=e.i(260222),T=e.i(982392),k=e.i(25687),S=e.i(454925),E=e.i(577122),R=e.i(478847),b=e.i(764162),v=e.i(852705),C=e.i(154939),O=e.i(167389),w=t([i]);async function x(e,t=null){let n,s=(0,E.generateRequestId)(),i=new S.RequestTelemetry(s);try{i.startPhase("parse"),n=await e.json(),i.endPhase()}catch{return p.warn("CHAT","Invalid JSON body"),(0,a.errorResponse)(c.HTTP_STATUS.BAD_REQUEST,"Invalid JSON body")}let u=(0,b.cloneLogPayload)(n);t||(t=I(e,u)),i.startPhase("validate");let d=(0,y.sanitizeRequest)(n,p);if(d.blocked)return p.warn("SANITIZER","Request blocked due to prompt injection",{detections:d.detections}),(0,a.errorResponse)(c.HTTP_STATUS.BAD_REQUEST,"Request rejected: suspicious content detected");d.modified&&d.sanitizedBody&&(n=d.sanitizedBody),i.endPhase(),(e.headers.get("accept")||"").includes("text/event-stream")&&void 0===n.stream&&(n={...n,stream:!0},p.debug("STREAM","Accept: text/event-stream header → overriding stream=true (body had no stream field)"));let g=new URL(e.url),h=n.model,_=n.messages?.length||n.input?.length||0,A=n.tools?.length||0,k=n.reasoning_effort||n.reasoning?.effort||null;p.request("POST",`${g.pathname} | ${h} | ${_} msgs${A?` | ${A} tools`:""}${k?` | effort=${k}`:""}`);let O=e.headers.get("Authorization"),w=(0,o.extractApiKey)(e);O&&w?p.debug("AUTH",`API Key: ${p.maskKey(w)}`):p.debug("AUTH","No API key provided (local mode)");let P=e.headers?.get?.("x-internal-test")==="combo-health-check";if("true"!==process.env.REQUIRE_API_KEY||P){if(w&&!P&&!await (0,o.isValidApiKey)(w))return p.warn("AUTH","API key not found or invalid (must be created in API Manager)"),(0,a.errorResponse)(c.HTTP_STATUS.UNAUTHORIZED,"Invalid API key")}else{if(!w)return p.warn("AUTH","Missing API key while REQUIRE_API_KEY=true"),(0,a.errorResponse)(c.HTTP_STATUS.UNAUTHORIZED,"Missing API key");if(!await (0,o.isValidApiKey)(w))return p.warn("AUTH","Invalid API key while REQUIRE_API_KEY=true"),(0,a.errorResponse)(c.HTTP_STATUS.UNAUTHORIZED,"Invalid API key")}if(!h)return p.warn("CHAT","Missing model"),(0,a.errorResponse)(c.HTTP_STATUS.BAD_REQUEST,"Missing model");let N=(0,C.extractExternalSessionId)(e.headers)||(0,C.generateSessionId)(n);N&&(0,C.touchSession)(N),i.startPhase("policy");let M=await (0,R.enforceApiKeyPolicy)(e,h);if(M.rejection)return p.warn("POLICY",`API key policy rejected: ${h} (key=${M.apiKeyInfo?.id||"unknown"})`),M.rejection;let U=M.apiKeyInfo;if(i.endPhase(),U?.id&&N){let e="number"==typeof U.maxSessions&&U.maxSessions>0?U.maxSessions:0;if(e>0&&!(0,C.isSessionRegisteredForKey)(U.id,N)){let t=(0,C.checkSessionLimit)(U.id,e);if(t)return D((0,a.errorResponse)(c.HTTP_STATUS.RATE_LIMITED,t.message),N);(0,C.registerKeySession)(U.id,N)}}let F=h;if((0,v.getTaskRoutingConfig)().enabled){i.startPhase("task-route");let e=(0,v.applyTaskAwareRouting)(h,n);e.wasRouted?(F=e.model,n={...n,model:e.model},p.info("T05",`Task-Aware: detected="${e.taskType}" → model override: ${h} → ${e.model}`)):"chat"!==e.taskType&&p.debug("T05",`Task-Aware: detected="${e.taskType}" (no override configured)`),e.taskType,e.wasRouted,i.endPhase()}i.startPhase("resolve");let L=await (0,r.getComboForModel)(F);if(L){p.info("CHAT",`Combo "${h}" [${L.strategy||"priority"}] with ${L.models.length} models`);let s=async e=>{if(P)return!0;let t=await (0,r.getModelInfo)(e),n=t.provider;if(!n)return!0;if(!(0,T.isModelAvailable)(n,t.model||e))return p.debug("AVAILABILITY",`${n}/${t.model} in cooldown, skipping`),!1;let s=await (0,o.getProviderCredentials)(n,null,U?.allowedConnections??null,t.model||e);return!!s&&!s.allRateLimited},[a,c]=await Promise.all([(0,f.getSettings)().catch(()=>({})),(0,m.getCombos)().catch(()=>[])]);i.endPhase();let u=await l.handleComboChat({body:n,combo:L,handleSingleModel:(n,o)=>$(n,o,t,e,L.name,U,i,{sessionId:N,forceLiveComboTest:P},L.strategy,!0),isModelAvailable:s,log:p,settings:a,allCombos:c});if(!u.ok&&[502,503].includes(u.status)&&"string"==typeof a?.globalFallbackModel&&a.globalFallbackModel.trim()){let o=a.globalFallbackModel.trim();p.info("GLOBAL_FALLBACK",`Combo "${L.name}" exhausted — attempting global fallback: ${o}`);try{let r=await $(n,o,t,e,L.name,U,i,{sessionId:N,emergencyFallbackTried:!0,forceLiveComboTest:P},L.strategy,!0);if(r.ok)return p.info("GLOBAL_FALLBACK",`Global fallback ${o} succeeded`),(0,S.recordTelemetry)(i),D(r,N);p.warn("GLOBAL_FALLBACK",`Global fallback ${o} also failed (${r.status})`)}catch(e){p.warn("GLOBAL_FALLBACK",`Global fallback error: ${e?.message||"unknown"}`)}}return(0,S.recordTelemetry)(i),D(u,N)}i.endPhase();let j=await $(n,h,t,e,null,U,i,{sessionId:N,forceLiveComboTest:P},null,!1);return(0,S.recordTelemetry)(i),D(j,N)}function I(e,t){return{endpoint:new URL(e.url).pathname,body:(0,b.cloneLogPayload)(t),headers:Object.fromEntries(e.headers.entries())}}async function $(e,t,n=null,r=null,s=null,i=null,l=null,u={},d=null,f=!1){let m=await P(t,e,n?.endpoint);if(m.error)return m.error;let{provider:y,model:S,sourceFormat:E,targetFormat:R,extendedContext:b}=m,v=!0===u.forceLiveComboTest,w=function(e,t,n={}){let o=(0,T.isModelAvailable)(e,t);if(!o&&n.ignoreModelCooldown)p.info("AVAILABILITY",`${e}/${t} cooldown bypassed for combo live test`);else if(!o)return p.warn("AVAILABILITY",`${e}/${t} is in cooldown, rejecting request`),a.unavailableResponse(c.HTTP_STATUS.SERVICE_UNAVAILABLE,`Model ${e}/${t} is temporarily unavailable (cooldown)`,30);let r=(0,A.getCircuitBreaker)(e,{failureThreshold:5,resetTimeout:3e4,onStateChange:(e,t,n)=>p.info("CIRCUIT",`${e}: ${t} → ${n}`)});if(n.ignoreCircuitBreaker&&!r.canExecute())p.info("CIRCUIT",`Bypassing OPEN circuit breaker for combo live test: ${e}`);else if(!r.canExecute())return p.warn("CIRCUIT",`Circuit breaker OPEN for ${e}, rejecting request`),a.unavailableResponse(c.HTTP_STATUS.SERVICE_UNAVAILABLE,`Provider ${e} circuit breaker is open`,30);return null}(y,S,{ignoreCircuitBreaker:v,ignoreModelCooldown:v});if(w)return w;let x=(0,A.getCircuitBreaker)(y,{failureThreshold:5,resetTimeout:3e4,onStateChange:(e,t,n)=>p.info("CIRCUIT",`${e}: ${t} → ${n}`)}),I=r?.headers?.get("user-agent")||"",D=null,U=null,F=null;for(;;){let t=await (0,o.getProviderCredentials)(y,D,i?.allowedConnections??null,S,v?{allowSuppressedConnections:!0,bypassQuotaPolicy:!0}:void 0);if(!t||t.allRateLimited)return(429===F||503===F)&&((0,T.setModelUnavailable)(y,S,6e4,`HTTP ${F}`),p.info("AVAILABILITY",`${y}/${S} marked unavailable — all accounts exhausted (HTTP ${F})`)),function(e,t,n,o,r,s){if(e?.allRateLimited){let t=r||e.lastError||"Unavailable",i=s||Number(e.lastErrorCode)||c.HTTP_STATUS.SERVICE_UNAVAILABLE;return p.warn("CHAT",`[${n}/${o}] ${t} (${e.retryAfterHuman})`),(0,a.unavailableResponse)(i,`[${n}/${o}] ${t}`,e.retryAfter,e.retryAfterHuman)}return t?(p.warn("CHAT","No more accounts available",{provider:n}),(0,a.errorResponse)(s||c.HTTP_STATUS.SERVICE_UNAVAILABLE,r||"All accounts unavailable")):(p.error("AUTH",`No credentials for provider: ${n}`),(0,a.errorResponse)(c.HTTP_STATUS.BAD_REQUEST,`No credentials for provider: ${n}`))}(t,D,y,S,U,F);let m=t.connectionId.slice(0,8);p.info("AUTH",`Using ${y} account: ${m}...`),u.sessionId&&(0,C.touchSession)(u.sessionId,t.connectionId);let A=await (0,g.checkAndRefreshToken)(y,t),w=await M(t.connectionId),P=Date.now();l&&l.startPhase("connect");let{result:L,tlsFingerprintUsed:j}=await N({bypassCircuitBreaker:v,breaker:x,body:e,provider:y,model:S,refreshedCredentials:A,proxyInfo:w,log:p,clientRawRequest:n,credentials:t,apiKeyInfo:i,userAgent:I,comboName:s,comboStrategy:d,isCombo:f,extendedContext:b});l&&l.endPhase();let q=Date.now()-P;if(function({result:e,proxyInfo:t,proxyLatency:n,provider:o,model:r,sourceFormat:s,targetFormat:i,credentials:a,comboName:l,clientRawRequest:c,tlsFingerprintUsed:u=!1}){try{(0,h.logProxyEvent)({status:e.success?"success":408===e.status||504===e.status?"timeout":"error",proxy:t?.proxy||null,level:t?.level||"direct",levelId:t?.levelId||null,provider:o,targetUrl:`${o}/${r}`,latencyMs:n,error:e.success?null:e.error||null,connectionId:a.connectionId,comboId:l||null,account:a.connectionId?.slice(0,8)||null,tlsFingerprint:u})}catch{}try{(0,_.logTranslationEvent)({provider:o,model:r,sourceFormat:s,targetFormat:i,status:e.success?"success":"error",statusCode:e.success?200:e.status||500,latency:n,endpoint:c?.endpoint||"/v1/chat/completions",connectionId:a.connectionId||null,comboName:l||null})}catch{}}({result:L,proxyInfo:w,proxyLatency:q,provider:y,model:S,sourceFormat:E,targetFormat:R,credentials:t,comboName:s,clientRawRequest:n,tlsFingerprintUsed:j}),L.success)return(0,T.clearModelUnavailability)(y,S),l&&l.startPhase("finalize"),l&&l.endPhase(),L.response;if(!u.emergencyFallbackTried){let t=(0,O.shouldUseFallback)(Number(L.status||0),String(L.error||""),Array.isArray(e?.tools)&&e.tools.length>0);if((0,O.isFallbackDecision)(t)){let o=`${t.provider}/${t.model}`,a=`${y}/${S}`;if(o!==a){let c={...e,model:o},d=Math.min(Number(c.max_tokens??c.max_completion_tokens??t.maxOutputTokens)||t.maxOutputTokens,t.maxOutputTokens);c.max_tokens=d,c.max_completion_tokens=d,p.warn("EMERGENCY_FALLBACK",`${a} -> ${o} | reason=${t.reason}`);let g=await $(c,o,n,r,s,i,l,{...u,emergencyFallbackTried:!0},null,!!s);if(g.ok)return g;p.warn("EMERGENCY_FALLBACK",`Emergency fallback to ${o} failed with status ${g.status}. Resuming original provider account fallback.`)}}}429===L.status&&(0,k.markAccountExhaustedFrom429)(t.connectionId,y);let{shouldFallback:B}=await (0,o.markAccountUnavailable)(t.connectionId,L.status,L.error,y,S);if(B){p.warn("AUTH",`Account ${m}... unavailable (${L.status}), trying fallback`),D=t.connectionId,U=L.error,F=L.status;continue}return L.response}}async function P(e,t,n=""){let o=await (0,r.getModelInfo)(e);if(!o.provider){if("ambiguous_model"===o.errorType){let t=o.errorMessage||`Ambiguous model '${e}'. Use provider/model prefix (ex: gh/${e} or cc/${e}).`;return p.warn("CHAT",t,{model:e,candidates:o.candidateAliases||o.candidateProviders||[]}),{error:(0,a.errorResponse)(c.HTTP_STATUS.BAD_REQUEST,t)}}return p.warn("CHAT","Invalid model format",{model:e}),{error:(0,a.errorResponse)(c.HTTP_STATUS.BAD_REQUEST,"Invalid model format")}}let{provider:i,model:l,extendedContext:d}=o,g=(0,s.detectFormatFromEndpoint)(t,n),f=u.PROVIDER_ID_TO_ALIAS[i]||i,m=(0,u.getModelTargetFormat)(f,l)||(0,s.getTargetFormat)(i);"responses"===o.apiFormat&&(m="openai-responses",p.info("ROUTING","Custom model apiFormat=responses → targetFormat=openai-responses"));let h=d&&"claude"===f?" [1m]":"";return e!==`${i}/${l}`?p.info("ROUTING",`${e} → ${i}/${l}${h}`):p.info("ROUTING",`Provider: ${i}, Model: ${l}${h}`),{provider:i,model:l,sourceFormat:g,targetFormat:m,extendedContext:d}}async function N({bypassCircuitBreaker:e,breaker:t,body:n,provider:r,model:s,refreshedCredentials:l,proxyInfo:u,log:f,clientRawRequest:m,credentials:h,apiKeyInfo:_,userAgent:y,comboName:T,comboStrategy:k,isCombo:S,extendedContext:E}){try{let a=()=>(0,d.runWithProxyContext)(u?.proxy||null,()=>i.handleChatCore({body:{...n,model:`${r}/${s}`},modelInfo:{provider:r,model:s,extendedContext:E},credentials:l,log:f,clientRawRequest:m,connectionId:h.connectionId,apiKeyInfo:_,userAgent:y,comboName:T,comboStrategy:k,isCombo:S,onCredentialsRefreshed:async e=>{await (0,g.updateProviderCredentials)(h.connectionId,{accessToken:e.accessToken,refreshToken:e.refreshToken,providerSpecificData:e.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{await (0,o.clearAccountError)(h.connectionId,h)}}));if(e){if(!u?.proxy&&(0,d.isTlsFingerprintActive)()){let e=await (0,d.runWithTlsTracking)(a);return{result:e.result,tlsFingerprintUsed:e.tlsFingerprintUsed}}return{result:await a(),tlsFingerprintUsed:!1}}if(!u?.proxy&&(0,d.isTlsFingerprintActive)()){let e=await t.execute(async()=>(0,d.runWithTlsTracking)(a));return{result:e.result,tlsFingerprintUsed:e.tlsFingerprintUsed}}return{result:await t.execute(a),tlsFingerprintUsed:!1}}catch(e){if(e instanceof A.CircuitBreakerOpenError)return p.warn("CIRCUIT",`${r} circuit open during retry: ${e.message}`),{result:{success:!1,response:a.unavailableResponse(c.HTTP_STATUS.SERVICE_UNAVAILABLE,`Provider ${r} circuit breaker is open`,Math.ceil(e.retryAfterMs/1e3)),status:c.HTTP_STATUS.SERVICE_UNAVAILABLE},tlsFingerprintUsed:!1};if(e?.code==="PROXY_UNREACHABLE"||/proxy unreachable/i.test(e?.message||"")){let t=e?.message||"Proxy unreachable";return p.warn("PROXY",t),{result:{success:!1,response:a.unavailableResponse(c.HTTP_STATUS.SERVICE_UNAVAILABLE,t,2),status:c.HTTP_STATUS.SERVICE_UNAVAILABLE,error:t},tlsFingerprintUsed:!1}}throw e}}async function M(e){try{return await (0,f.resolveProxyForConnection)(e)}catch(e){return p.debug("PROXY",`Failed to resolve proxy: ${e.message}`),null}}function D(e,t){if(!e||!t)return e;try{return e.headers.set("X-OmniRoute-Session-Id",t),e}catch{let n=new Response(e.body,{status:e.status,statusText:e.statusText,headers:e.headers});return n.headers.set("X-OmniRoute-Session-Id",t),n}}[i]=w.then?(await w)():w,e.s(["buildClientRawRequest",0,I,"handleChat",0,x]),n()}catch(e){n(e)}},!1)];
|
|
27
|
+
${o}`}]:[]}return x?.debug?.("CONTENT",`Dropped unsupported content part type="${e.type}"`),[]}));let e=(0,w.getModelNormalizeToolCallId)(eT||"",ek||"",ex),n=(0,w.getModelPreserveOpenAIDeveloperRole)(eT||"",ek||"",ex);eJ=(0,s.translateRequest)(ex,eF,ek,eJ,eV,S,eT,eY,{normalizeToolCallId:e,preserveDeveloperRole:n,preserveCacheControl:eQ})}}catch(s){let e=Number(s?.statusCode),t=Number.isInteger(e)&&e>=400&&e<=599?e:h.HTTP_STATUS.SERVER_ERROR,n=s?.message||"Invalid request",r="string"==typeof s?.errorType?s.errorType:null;if(x?.warn?.("TRANSLATE",`Request translation failed: ${n}`),r)return{success:!1,status:t,error:n,response:new Response(JSON.stringify({error:{message:n,type:r,code:r}}),{status:t,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":(0,o.getCorsOrigin)()}})};return(0,m.createErrorResult)(t,n)}let eZ=eJ._toolNameMap,e0=eG?function(e){if(!e||!Array.isArray(e.tools))return null;let t=new Map;for(let n of e.tools){let e=n?.type==="function"&&n.function&&"object"==typeof n.function?n.function:n,o="string"==typeof e?.name?e.name.trim():"";o&&t.set(`${O.CLAUDE_OAUTH_TOOL_PREFIX}${o}`,o)}return t.size>0?t:null}(t):null,e1=eZ instanceof Map&&eZ.size>0?eZ:e0;delete eJ._toolNameMap,delete eJ._disableToolPrefix,eJ.model=eD;let e2=(0,f.getUnsupportedParams)(eT,ek);if(e2.length>0){let e=[];for(let t of e2)Object.hasOwn(eJ,t)&&(e.push(t),delete eJ[t]);e.length>0&&x?.warn?.("PARAMS",`Stripped unsupported params for ${ek}: ${e.join(", ")}`)}let e5=h.PROVIDER_MAX_TOKENS[eT];if(e5)for(let e of["max_tokens","max_completion_tokens"])"number"==typeof eJ[e]&&eJ[e]>e5&&(x?.debug?.("PARAMS",`Capping ${e} from ${eJ[e]} to ${e5} for ${eT}`),eJ[e]=e5);let e3=async e=>{let t=await eo(e);if(!t.enabled||"native"===t.mode)return(0,I.getExecutor)(e);if("cliproxyapi"===t.mode)return x?.info?.("UPSTREAM_PROXY",`${e} routed through CLIProxyAPI (passthrough)`),(0,I.getExecutor)("cliproxyapi");let n=(0,I.getExecutor)(e),o=(0,I.getExecutor)("cliproxyapi"),r=Object.create(n);return r.execute=async t=>{try{let r,s=await n.execute(t);if((r=s.response.status)>=500||429===r||0===r){x?.info?.("UPSTREAM_PROXY",`${e} native failed (${s.response.status}), retrying via CLIProxyAPI`);try{return await o.execute(t)}catch(n){let t=n instanceof Error?n.message:String(n);throw x?.error?.("UPSTREAM_PROXY",`${e} CLIProxyAPI fallback also failed: ${t}`),n}}return s}catch(r){let n=r instanceof Error?r.message:String(r);x?.info?.("UPSTREAM_PROXY",`${e} native error (${n}), retrying via CLIProxyAPI`);try{return await o.execute(t)}catch(n){let t=n instanceof Error?n.message:String(n);throw x?.error?.("UPSTREAM_PROXY",`${e} CLIProxyAPI fallback also failed: ${t}`),n}}},r},e4=await e3(eT),e9=()=>{let e=e$?{...S,requestEndpointPath:ew}:S;return ez?{...e,providerSpecificData:{...e?.providerSpecificData||{},ccSessionId:ez}}:e},e7=(0,c.createStreamController)({onDisconnect:ei,log:x,provider:eT,model:ek}),e8={...eJ,model:`${eT}/${ek}`,stream:eV},e6=(0,V.shouldDeduplicate)(e8),te=e6?(0,V.computeRequestHash)(e8):null,tt=async(t=eD,n=!1)=>{let o=async()=>{let n=eJ.model===t?eJ:{...eJ,model:t};if(eF===i.FORMATS.OPENAI&&(0,P.providerSupportsCaching)(eT)&&!n.prompt_cache_key&&Array.isArray(n.messages)&&!["nvidia","codex","xai"].includes(eT)){let{generatePromptCacheKey:t}=await e.A(828068),o=t(n.messages);o&&(n={...n,prompt_cache_key:o})}let o=await (0,L.withRateLimit)(eT,el,t,async()=>{let e=0,o="qwen"===eT?3:1;for(;e<o;){let r=await e4.execute({model:t,body:n,stream:eW,credentials:e9(),signal:e7.signal,log:x,extendedContext:eS,upstreamExtraHeaders:eB(t)});if("qwen"===eT&&429===r.response.status&&e<o-1&&(await r.response.clone().text().catch(()=>"")).toLowerCase().includes("exceeded your current quota")){let t=1500*(e+1);x?.warn?.("QWEN_RETRY",`Quota 429 hit. Retrying in ${t}ms...`),await new Promise(e=>setTimeout(e,t)),e++;continue}return r}});if(eV)return o;let r=o.response.status,s=o.response.statusText,a=Array.from(o.response.headers.entries()),l=await o.response.text();return{...o,response:new Response(l,{status:r,statusText:s,headers:a})}};if(n&&e6&&te){let e=await (0,V.deduplicate)(te,o);return e.wasDeduplicated&&x?.debug?.("DEDUP",`Joined in-flight request hash=${te}`),e.result}return o()};(0,E.trackPendingRequest)(ek,eT,el,!0);let tn=new Set([eD]),to=eD;(0,E.appendRequestLog)({model:ek,provider:eT,connectionId:el,status:"PENDING"}).catch(()=>{});let tr=eJ.messages?.length||eJ.contents?.length||eJ.request?.contents?.length||0;x?.debug?.("REQUEST",`${eT.toUpperCase()} | ${ek} | ${tr} msgs`);let ts=null;try{let e=await tt(eD,!0);ef=e.response,em=e.url,eh=e.headers,e_=e.transformedBody,ts=function(e,t,n){if(e!==i.FORMATS.CLAUDE||!t||"object"!=typeof t)return null;let o=(e,t={})=>({type:e&&"string"==typeof e.type&&e.type.trim()?e.type.trim():"ephemeral",ttl:e&&"string"==typeof e.ttl&&e.ttl.trim()?e.ttl.trim():null,...t}),r=Array.isArray(t.system)?t.system.flatMap((e,t)=>{if(!e||"object"!=typeof e)return[];let n=e.cache_control&&"object"==typeof e.cache_control?e.cache_control:null;return n?[o(n,{index:t})]:[]}):[],s=Array.isArray(t.tools)?t.tools.flatMap((e,t)=>{if(!e||"object"!=typeof e)return[];let n=e.cache_control&&"object"==typeof e.cache_control?e.cache_control:null,r="string"==typeof e.name&&e.name.trim()?e.name.trim():null;return n?[o(n,{index:t,name:r})]:[]}):[],a=Array.isArray(t.messages)?t.messages.flatMap((e,t)=>{if(!e||"object"!=typeof e||!Array.isArray(e.content))return[];let n="string"==typeof e.role&&e.role.trim()?e.role.trim():"unknown";return e.content.flatMap((e,r)=>{if(!e||"object"!=typeof e)return[];let s=e.cache_control&&"object"==typeof e.cache_control?e.cache_control:null;return s?[o(s,{messageIndex:t,contentIndex:r,role:n,blockType:"string"==typeof e.type&&e.type.trim()?e.type.trim():"unknown"})]:[]})}):[],l=r.length+s.length+a.length,c=function(e,t){if(!e||"object"!=typeof e)return null;let n=t.toLowerCase();for(let[t,o]of Object.entries(e))if(t.toLowerCase()===n&&"string"==typeof o&&o.trim())return o.trim();return null}(n,"Anthropic-Beta");return 0!==l||c?{applied:l>0,totalBreakpoints:l,anthropicBeta:c,systemBreakpoints:r,toolBreakpoints:s,messageBreakpoints:a}:null}(eF,e_,eh),eY.logTargetRequest(em,eh,e_),(0,L.updateFromHeaders)(eT,el,ef.headers,ef.status,ek)}catch(n){(0,E.trackPendingRequest)(ek,eT,el,!1);let e="AbortError"===n.name?499:h.HTTP_STATUS.BAD_GATEWAY,t="AbortError"===n.name?"Request aborted":(0,m.formatProviderError)(n,eT,ek,h.HTTP_STATUS.BAD_GATEWAY);if((0,E.appendRequestLog)({model:ek,provider:eT,connectionId:el,status:`FAILED ${e}`}).catch(()=>{}),eq({status:e,error:t,providerRequest:e_||eJ,clientResponse:(0,m.buildErrorBody)(e,t),claudeCacheMeta:ts}),"AbortError"===n.name)return e7.handleError(n),(0,m.createErrorResult)(499,"Request aborted");return eb(h.HTTP_STATUS.BAD_GATEWAY,n instanceof Error&&n.name?n.name:"upstream_error"),console.log(`${l.COLORS.red}[ERROR] ${t}${l.COLORS.reset}`),(0,m.createErrorResult)(h.HTTP_STATUS.BAD_GATEWAY,t)}if(ef.status===h.HTTP_STATUS.UNAUTHORIZED||ef.status===h.HTTP_STATUS.FORBIDDEN){let e=await (0,u.refreshWithRetry)(()=>e4.refreshCredentials(S,x),3,x);if(e?.accessToken||e?.copilotToken){x?.info?.("TOKEN",`${eT.toUpperCase()} | refreshed`),Object.assign(S,e),Z&&e&&await Z(e);try{let e=String(eJ.model||eD),t=await e4.execute({model:e,body:eJ,stream:eW,credentials:e9(),signal:e7.signal,log:x,extendedContext:eS,upstreamExtraHeaders:eB(e)});t.response.ok&&(ef=t.response,em=t.url,eh=t.headers,e_=t.transformedBody,eY.logTargetRequest(em,eh,e_))}catch{x?.warn?.("TOKEN",`${eT.toUpperCase()} | retry after refresh failed`)}}else x?.warn?.("TOKEN",`${eT.toUpperCase()} | refresh failed`)}if(await ev(ef.headers,ef.status),!ef.ok){(0,E.trackPendingRequest)(ek,eT,el,!1);let{statusCode:t,message:n,retryAfterMs:o,responseBody:r}=await (0,m.parseUpstreamError)(ef,eT),s=(0,_.classifyProviderError)(t,n);if(el&&s)try{if(s===_.PROVIDER_ERROR_TYPES.FORBIDDEN)await (0,y.updateProviderConnection)(el,{isActive:!1,testStatus:"banned",lastErrorType:s,lastError:n,errorCode:t}),console.warn(`[provider] Node ${el} banned (${t}) — disabling permanently`);else if(s===_.PROVIDER_ERROR_TYPES.ACCOUNT_DEACTIVATED)await (0,y.updateProviderConnection)(el,{isActive:!1,testStatus:"deactivated",lastErrorType:s,lastError:n,errorCode:t}),console.warn(`[provider] Node ${el} account deactivated (${t}) — disabling permanently`);else if(s===_.PROVIDER_ERROR_TYPES.RATE_LIMITED)if(eT&&(0,f.getPassthroughProviders)().has(eT)){let{lockModel:n}=await e.A(730711),r=o||12e4;n(eT,el,ek,"rate_limited",r),console.warn(`[provider] Node ${el} model-only rate limited (${t}) for ${ek} - ${Math.ceil(r/1e3)}s (connection stays active)`)}else{let e=new Date(Date.now()+o).toISOString();await (0,y.updateProviderConnection)(el,{rateLimitedUntil:e,testStatus:"credits_exhausted",lastErrorType:s,lastError:n,errorCode:t,healthCheckInterval:null,lastHealthCheckAt:null}),console.warn(`[provider] Node ${el} rate limited (${t}) - Next available at ${e}`)}else s===_.PROVIDER_ERROR_TYPES.QUOTA_EXHAUSTED?(await (0,y.updateProviderConnection)(el,{testStatus:"credits_exhausted",lastErrorType:s,lastError:n,errorCode:t}),console.warn(`[provider] Node ${el} exhausted quota (${t})`)):s===_.PROVIDER_ERROR_TYPES.ACCOUNT_DEACTIVATED?(await (0,y.updateProviderConnection)(el,{isActive:!1,testStatus:"expired",lastErrorType:s,lastError:n,errorCode:t}),console.warn(`[provider] Node ${el} account deactivated (${t}) — marked expired`)):s===_.PROVIDER_ERROR_TYPES.UNAUTHORIZED?await (0,y.updateProviderConnection)(el,{lastErrorType:s,lastError:n,errorCode:t}):s===_.PROVIDER_ERROR_TYPES.PROJECT_ROUTE_ERROR&&(await (0,y.updateProviderConnection)(el,{lastErrorType:s,lastError:n,errorCode:t}),console.warn(`[provider] Node ${el} project routing error (${t}) — not banning`))}catch{}(0,E.appendRequestLog)({model:ek,provider:eT,connectionId:el,status:`FAILED ${t}`}).catch(()=>{});let i=(0,m.formatProviderError)(Error(n),eT,ek,t);if(console.log(`${l.COLORS.red}[ERROR] ${i}${l.COLORS.reset}`),o&&"antigravity"===eT){let e=Math.ceil(o/1e3);x?.debug?.("RETRY",`Antigravity quota reset in ${e}s (${o}ms)`)}if(eY.logError(Error(n),e_||eJ),eY.logProviderResponse(ef.status,ef.statusText,ef.headers,r),(0,L.updateFromHeaders)(eT,el,ef.headers,t,ek),!(0,H.isModelUnavailableError)(t,n))return eq({status:t,error:i,providerRequest:e_||eJ,providerResponse:r,clientResponse:(0,m.buildErrorBody)(t,i)}),eb(t,`upstream_${t}`),(0,m.createErrorResult)(t,i,o);{let e=(0,H.getNextFamilyFallback)(to,tn);if(!e)return eq({status:t,error:i,providerRequest:e_||eJ,providerResponse:r,clientResponse:(0,m.buildErrorBody)(t,i)}),eb(t,"model_unavailable"),(0,m.createErrorResult)(t,i,o);tn.add(e),to=e,eJ.model=e,x?.info?.("MODEL_FALLBACK",`${ek} unavailable (${t}) → trying ${e}`);try{let n=await tt(e,!1);if(!n.response.ok)return eq({status:t,error:i,providerRequest:e_||eJ,providerResponse:r,clientResponse:(0,m.buildErrorBody)(t,i)}),eb(t,"model_unavailable"),(0,m.createErrorResult)(t,i,o);ef=n.response,em=n.url,eh=n.headers,e_=n.transformedBody,eY.logTargetRequest(em,eh,e_),x?.info?.("MODEL_FALLBACK",`Serving ${e} as fallback for ${ek}`)}catch{return eq({status:t,error:i,providerRequest:e_||eJ,providerResponse:r,clientResponse:(0,m.buildErrorBody)(t,i)}),eb(t,"model_unavailable"),(0,m.createErrorResult)(t,i,o)}}let a=Array.isArray(eJ.tools)&&eJ.tools.length>0;if(!eV){let e=(0,J.shouldUseFallback)(t,n,a,J.EMERGENCY_FALLBACK_CONFIG);if((0,J.isFallbackDecision)(e)){x?.info?.("EMERGENCY_FALLBACK",e.reason);try{let t=(0,I.getExecutor)(e.provider),n=await t.execute({model:e.model,body:{...eJ,model:e.model,max_tokens:Math.min("number"==typeof eJ.max_tokens?eJ.max_tokens:e.maxOutputTokens,e.maxOutputTokens)},stream:!1,credentials:S,signal:e7.signal,log:x,extendedContext:eS});n.response.ok?(ef=n.response,em=n.url,eh=n.headers,e_=n.transformedBody,eY.logTargetRequest(em,eh,e_),x?.info?.("EMERGENCY_FALLBACK",`Serving ${e.provider}/${e.model} as budget fallback for ${eT}/${ek}`)):x?.warn?.("EMERGENCY_FALLBACK",`Emergency fallback also failed (${n.response.status})`)}catch(t){let e=t instanceof Error?t.message:String(t);x?.warn?.("EMERGENCY_FALLBACK",`Emergency fallback error: ${e}`)}}}}if(!eV){let e;(0,E.trackPendingRequest)(ek,eT,el,!1);let n=(ef.headers.get("content-type")||"").toLowerCase(),r=await ef.text(),a=(0,W.normalizePayloadForLog)(r),c=n.includes("text/event-stream")||/(^|\n)\s*(event|data):/m.test(r);if(c){let t=eF===i.FORMATS.OPENAI_RESPONSES?(0,U.parseSSEToResponsesOutput)(r,ek):eF===i.FORMATS.CLAUDE?(0,U.parseSSEToClaudeResponse)(r,ek):(0,U.parseSSEToOpenAIResponse)(r,ek);if(!t){(0,E.appendRequestLog)({model:ek,provider:eT,connectionId:el,status:`FAILED ${h.HTTP_STATUS.BAD_GATEWAY}`}).catch(()=>{});let e="Invalid SSE response for non-streaming request";return eq({status:h.HTTP_STATUS.BAD_GATEWAY,error:e,providerRequest:e_||eJ,providerResponse:a,clientResponse:(0,m.buildErrorBody)(h.HTTP_STATUS.BAD_GATEWAY,e)}),eb(h.HTTP_STATUS.BAD_GATEWAY,"invalid_sse_payload"),(0,m.createErrorResult)(h.HTTP_STATUS.BAD_GATEWAY,e)}e=t}else try{e=r?JSON.parse(r):{}}catch{(0,E.appendRequestLog)({model:ek,provider:eT,connectionId:el,status:`FAILED ${h.HTTP_STATUS.BAD_GATEWAY}`}).catch(()=>{});let e="Invalid JSON response from provider";return eq({status:h.HTTP_STATUS.BAD_GATEWAY,error:e,providerRequest:e_||eJ,providerResponse:a,clientResponse:(0,m.buildErrorBody)(h.HTTP_STATUS.BAD_GATEWAY,e)}),eb(h.HTTP_STATUS.BAD_GATEWAY,"invalid_json_payload"),(0,m.createErrorResult)(h.HTTP_STATUS.BAD_GATEWAY,e)}ex===i.FORMATS.CLAUDE&&eF===i.FORMATS.CLAUDE&&(e=function(e,t){if(!t||!Array.isArray(e?.content))return e;let n=!1,o=e.content.map(e=>{if(e?.type!=="tool_use"||"string"!=typeof e?.name)return e;let o=t.get(e.name)??e.name;return o===e.name?e:(n=!0,{...e,name:o})});return n?{...e,content:o}:e}(e,e1)),eY.logProviderResponse(ef.status,ef.statusText,ef.headers,c?{_streamed:!0,_format:"sse-json",summary:e}:e),es&&await es();let u=(0,D.extractUsageFromResponse)(e,eT);(0,E.appendRequestLog)({model:ek,provider:eT,connectionId:el,tokens:u,status:"200 OK"}).catch(()=>{});let d=et(u);if(u&&"object"==typeof u){let e=`[${new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit"})}] 📊 [USAGE] ${eT.toUpperCase()} | ${(0,b.formatUsageLog)(u)}${el?` | account=${el.slice(0,8)}...`:""}`;console.log(`${l.COLORS.green}${e}${l.COLORS.reset}`),u.prompt_tokens,ee(u.cache_read_input_tokens??u.cached_tokens??u.prompt_tokens_details?.cached_tokens),ee(u.cache_creation_input_tokens??u.prompt_tokens_details?.cache_creation_tokens),(0,E.saveRequestUsage)({provider:eT||"unknown",model:ek||"unknown",tokens:u,status:"200",success:!0,latencyMs:Date.now()-eR,timeToFirstTokenMs:Date.now()-eR,errorCode:null,timestamp:new Date().toISOString(),connectionId:el||void 0,apiKeyId:ec?.id||void 0,apiKeyName:ec?.name||void 0}).catch(e=>{console.error("Failed to save usage stats:",e.message)})}if(ec?.id&&u){let e=await (0,C.calculateCost)(eT,ek,u);e>0&&(0,v.recordCost)(ec.id,e)}let p=(0,s.needsTranslation)(eF,ex)?(0,M.translateNonStreamingResponse)(e,eF,ex,e1):e;if("claude"!==ex||eV||"string"!=typeof p?.choices?.[0]?.message?.content||(p.choices[0].message.content=(0,G.stripMarkdownCodeFence)(p.choices[0].message.content)),p?.choices)for(let e of p.choices)e.message?.tool_calls&&e.message.tool_calls.length>0&&"tool_calls"!==e.finish_reason&&(e.finish_reason="tool_calls");if((ex===i.FORMATS.OPENAI||ex===i.FORMATS.OPENAI_RESPONSES)&&(p=(0,F.sanitizeOpenAIResponse)(p)),p?.usage){let e=(0,l.addBufferToUsage)(p.usage);p.usage=(0,l.filterUsageForFormat)(e,ex)}else{let e=JSON.stringify(p?.choices?.[0]?.message?.content||"").length;if(e>0){let n=(0,l.estimateUsage)(t,e,ex);p.usage=(0,l.filterUsageForFormat)(n,ex)}}if((0,j.isCacheable)(t,ea?.headers)){let e=(0,j.generateSignature)(ek,t.messages,t.temperature,t.top_p),n=u?.prompt_tokens+u?.completion_tokens||0;(0,j.setCachedResponse)(e,ek,p,n),x?.debug?.("CACHE",`Stored response for ${ek} (${n} tokens)`)}return(0,q.saveIdempotency)(eC,p,200),eY.logConvertedResponse(p),eq({status:200,tokens:u,responseBody:e,providerRequest:e_||eJ,providerResponse:c?{_streamed:!0,_format:"sse-json",summary:e}:e,clientResponse:p,claudeCacheMeta:ts,claudeCacheUsageMeta:d}),{success:!0,response:new Response(JSON.stringify(p),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":(0,o.getCorsOrigin)(),"X-OmniRoute-Cache":"MISS"}})}}es&&await es();let ti={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","Access-Control-Allow-Origin":(0,o.getCorsOrigin)()},ta=({status:e,usage:t,responseBody:n,providerPayload:o,clientPayload:r,ttft:s})=>{let i=et(t);t&&"object"==typeof t&&(t.prompt_tokens,ee(t.cache_read_input_tokens??t.cached_tokens??t.prompt_tokens_details?.cached_tokens),ee(t.cache_creation_input_tokens??t.prompt_tokens_details?.cache_creation_tokens),(0,E.saveRequestUsage)({provider:eT||"unknown",model:ek||"unknown",tokens:t,status:String(e||200),success:200===e,latencyMs:Date.now()-eR,timeToFirstTokenMs:s,errorCode:null,timestamp:new Date().toISOString(),connectionId:el||void 0,apiKeyId:ec?.id||void 0,apiKeyName:ec?.name||void 0}).catch(e=>{console.error("Failed to save usage stats:",e.message)})),eq({status:e||200,tokens:t||{},responseBody:n??void 0,providerRequest:e_||eJ,providerResponse:o,clientResponse:r??n??void 0,claudeCacheMeta:ts,claudeCacheUsageMeta:i}),ec?.id&&t&&(0,C.calculateCost)(eT,ek,t).then(e=>{e>0&&(0,v.recordCost)(ec.id,e)}).catch(()=>{})},tl=eu?.toLowerCase().includes("droid")||eu?.toLowerCase().includes("codex-cli");if(eF!==i.FORMATS.OPENAI_RESPONSES||ex!==i.FORMATS.OPENAI||eI||tl?(0,s.needsTranslation)(eF,ex)?(x?.debug?.("STREAM",`Translation mode: ${eF} → ${ex}`),ey=(0,a.createSSETransformStreamWithLogger)(eF,ex,eT,eY,e1,ek,el,t,ta,ec)):(x?.debug?.("STREAM","Standard passthrough mode"),ey=(0,a.createPassthroughStreamWithLogger)(eT,eY,e1,ek,el,t,ta,ec)):(x?.debug?.("STREAM","Responses translation mode: openai-responses → openai"),ey=(0,a.createSSETransformStreamWithLogger)("openai-responses","openai",eT,eY,e1,ek,el,t,ta,ec)),(0,B.wantsProgress)(ea?.headers)){let e=(0,B.createProgressTransform)({signal:e7.signal});eA=(0,c.pipeWithDisconnect)(ef,ey,e7).pipeThrough(e),ti["X-OmniRoute-Progress"]="enabled"}else eA=(0,c.pipeWithDisconnect)(ef,ey,e7);return{success:!0,response:new Response(eA,{headers:ti})}}e.s(["handleChatCore",0,er]),n()}catch(e){n(e)}},!1),485641,e=>{"use strict";let t=[{name:"system_override",pattern:/\b(ignore|disregard|forget)\s+(all\s+)?(previous|prior|above|earlier)\s+(instructions?|prompts?|rules?|context)/i,severity:"high"},{name:"role_hijack",pattern:/\b(you\s+are\s+now|act\s+as\s+if|pretend\s+(to\s+be|you\s+are)|from\s+now\s+on\s+you\s+are)\b/i,severity:"medium"},{name:"system_prompt_leak",pattern:/\b(reveal|show|display|print|output|repeat)\s+(your\s+)?(system\s+prompt|instructions?|initial\s+prompt|hidden\s+prompt)/i,severity:"high"},{name:"delimiter_injection",pattern:/(\[SYSTEM\]|\[INST\]|<<SYS>>|<\|im_start\|>|<\|system\|>|<\|user\|>)/i,severity:"high"},{name:"jailbreak_dan",pattern:/\b(DAN|do\s+anything\s+now|jailbreak|developer\s+mode|enable\s+developer)\b/i,severity:"medium"},{name:"encoding_evasion",pattern:/\b(base64\s+decode|rot13|hex\s+decode|unicode\s+escape)\b.*\b(instruction|prompt|command)\b/i,severity:"medium"}],n=[{name:"email",pattern:/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g,replacement:"[EMAIL_REDACTED]"},{name:"cpf",pattern:/\b\d{3}\.\d{3}\.\d{3}-\d{2}\b/g,replacement:"[CPF_REDACTED]"},{name:"cnpj",pattern:/\b\d{2}\.\d{3}\.\d{3}\/\d{4}-\d{2}\b/g,replacement:"[CNPJ_REDACTED]"},{name:"credit_card",pattern:/\b(?:\d{4}[-\s]?){3}\d{4}\b/g,replacement:"[CARD_REDACTED]"},{name:"phone_br",pattern:/\b\(?\d{2}\)?\s?\d{4,5}-?\d{4}\b/g,replacement:"[PHONE_REDACTED]"},{name:"ssn_us",pattern:/\b\d{3}-\d{2}-\d{4}\b/g,replacement:"[SSN_REDACTED]"}];function o(e,t=!1){let r=[],s=e;for(let o of n){let n=e.match(o.pattern);n&&n.length>0&&(r.push({type:o.name,count:n.length}),t&&(s=s.replace(o.pattern,o.replacement)))}return{text:s,detections:r}}e.s(["sanitizeRequest",0,function(e,n=console){let r={enabled:"false"!==process.env.INPUT_SANITIZER_ENABLED,mode:process.env.INPUT_SANITIZER_MODE||"warn",piiRedaction:"true"===process.env.PII_REDACTION_ENABLED},s={blocked:!1,modified:!1,detections:[],piiDetections:[],sanitizedBody:null};if(!r.enabled)return s;let i=(function(e){let t=[];for(let n of e.messages||e.input||[])if("string"==typeof n)t.push(n);else if("string"==typeof n.content)t.push(n.content);else if(Array.isArray(n.content))for(let e of n.content)"string"==typeof e?t.push(e):e.text&&t.push(e.text);if("string"==typeof e.system)t.push(e.system);else if(Array.isArray(e.system))for(let n of e.system)"string"==typeof n?t.push(n):n.text&&t.push(n.text);return t})(e).join("\n"),a=function(e){let n=[];for(let o of t){let t=e.match(o.pattern);t&&n.push({pattern:o.name,severity:o.severity,match:t[0].slice(0,50)})}return n}(i);if(a.length>0){s.detections=a;let e=a.filter(e=>"high"===e.severity),t=e.length>0?"warn":"info";if(n[t]&&n[t](`[SANITIZER] Prompt injection detected: ${a.map(e=>e.pattern).join(", ")}`),"block"===r.mode&&e.length>0)return s.blocked=!0,s}if(r.piiRedaction){let t=o(i,"redact"===r.mode);s.piiDetections=t.detections,t.detections.length>0&&(n.warn?.(`[SANITIZER] PII detected: ${t.detections.map(e=>`${e.type}(${e.count})`).join(", ")}`),"redact"===r.mode&&(s.sanitizedBody=function(e){let t=JSON.parse(JSON.stringify(e));for(let e of t.messages||t.input||[])if("string"==typeof e.content)e.content=o(e.content,!0).text;else if(Array.isArray(e.content))for(let t of e.content)if("string"==typeof t){let n=e.content.indexOf(t);e.content[n]=o(t,!0).text}else t.text&&(t.text=o(t.text,!0).text);return"string"==typeof t.system&&(t.system=o(t.system,!0).text),t}(e),s.modified=!0))}return s}])},311250,e=>e.a(async(t,n)=>{try{var o=e.i(287726),r=e.i(192408),s=e.i(85713),i=e.i(284948),a=e.i(719201),l=e.i(928041),c=e.i(16023),u=e.i(878947),d=e.i(444675);e.i(706901);var p=e.i(249157),g=e.i(496973);e.i(245272);var f=e.i(548941),m=e.i(151205),h=e.i(496928),_=e.i(21245),y=e.i(485641),A=e.i(260222),T=e.i(982392),k=e.i(25687),S=e.i(454925),E=e.i(577122),R=e.i(478847),b=e.i(764162),v=e.i(852705),C=e.i(154939),O=e.i(167389),w=t([i]);async function x(e,t=null){let n,s=(0,E.generateRequestId)(),i=new S.RequestTelemetry(s);try{i.startPhase("parse"),n=await e.json(),i.endPhase()}catch{return p.warn("CHAT","Invalid JSON body"),(0,a.errorResponse)(c.HTTP_STATUS.BAD_REQUEST,"Invalid JSON body")}let u=(0,b.cloneLogPayload)(n);t||(t=I(e,u)),i.startPhase("validate");let d=(0,y.sanitizeRequest)(n,p);if(d.blocked)return p.warn("SANITIZER","Request blocked due to prompt injection",{detections:d.detections}),(0,a.errorResponse)(c.HTTP_STATUS.BAD_REQUEST,"Request rejected: suspicious content detected");d.modified&&d.sanitizedBody&&(n=d.sanitizedBody),i.endPhase(),(e.headers.get("accept")||"").includes("text/event-stream")&&void 0===n.stream&&(n={...n,stream:!0},p.debug("STREAM","Accept: text/event-stream header → overriding stream=true (body had no stream field)"));let g=new URL(e.url),h=n.model,_=n.messages?.length||n.input?.length||0,A=n.tools?.length||0,k=n.reasoning_effort||n.reasoning?.effort||null;p.request("POST",`${g.pathname} | ${h} | ${_} msgs${A?` | ${A} tools`:""}${k?` | effort=${k}`:""}`);let O=e.headers.get("Authorization"),w=(0,o.extractApiKey)(e);O&&w?p.debug("AUTH",`API Key: ${p.maskKey(w)}`):p.debug("AUTH","No API key provided (local mode)");let P=e.headers?.get?.("x-internal-test")==="combo-health-check";if("true"!==process.env.REQUIRE_API_KEY||P){if(w&&!P&&!await (0,o.isValidApiKey)(w))return p.warn("AUTH","API key not found or invalid (must be created in API Manager)"),(0,a.errorResponse)(c.HTTP_STATUS.UNAUTHORIZED,"Invalid API key")}else{if(!w)return p.warn("AUTH","Missing API key while REQUIRE_API_KEY=true"),(0,a.errorResponse)(c.HTTP_STATUS.UNAUTHORIZED,"Missing API key");if(!await (0,o.isValidApiKey)(w))return p.warn("AUTH","Invalid API key while REQUIRE_API_KEY=true"),(0,a.errorResponse)(c.HTTP_STATUS.UNAUTHORIZED,"Invalid API key")}if(!h)return p.warn("CHAT","Missing model"),(0,a.errorResponse)(c.HTTP_STATUS.BAD_REQUEST,"Missing model");let N=(0,C.extractExternalSessionId)(e.headers)||(0,C.generateSessionId)(n);N&&(0,C.touchSession)(N),i.startPhase("policy");let M=await (0,R.enforceApiKeyPolicy)(e,h);if(M.rejection)return p.warn("POLICY",`API key policy rejected: ${h} (key=${M.apiKeyInfo?.id||"unknown"})`),M.rejection;let U=M.apiKeyInfo;if(i.endPhase(),U?.id&&N){let e="number"==typeof U.maxSessions&&U.maxSessions>0?U.maxSessions:0;if(e>0&&!(0,C.isSessionRegisteredForKey)(U.id,N)){let t=(0,C.checkSessionLimit)(U.id,e);if(t)return D((0,a.errorResponse)(c.HTTP_STATUS.RATE_LIMITED,t.message),N);(0,C.registerKeySession)(U.id,N)}}let F=h;if((0,v.getTaskRoutingConfig)().enabled){i.startPhase("task-route");let e=(0,v.applyTaskAwareRouting)(h,n);e.wasRouted?(F=e.model,n={...n,model:e.model},p.info("T05",`Task-Aware: detected="${e.taskType}" → model override: ${h} → ${e.model}`)):"chat"!==e.taskType&&p.debug("T05",`Task-Aware: detected="${e.taskType}" (no override configured)`),e.taskType,e.wasRouted,i.endPhase()}i.startPhase("resolve");let L=await (0,r.getComboForModel)(F);if(L){p.info("CHAT",`Combo "${h}" [${L.strategy||"priority"}] with ${L.models.length} models`);let s=async e=>{if(P)return!0;let t=await (0,r.getModelInfo)(e),n=t.provider;if(!n)return!0;if(!(0,T.isModelAvailable)(n,t.model||e))return p.debug("AVAILABILITY",`${n}/${t.model} in cooldown, skipping`),!1;let s=await (0,o.getProviderCredentials)(n,null,U?.allowedConnections??null,t.model||e);return!!s&&!s.allRateLimited},[a,c]=await Promise.all([(0,f.getSettings)().catch(()=>({})),(0,m.getCombos)().catch(()=>[])]);i.endPhase();let u=await l.handleComboChat({body:n,combo:L,handleSingleModel:(n,o)=>$(n,o,t,e,L.name,U,i,{sessionId:N,forceLiveComboTest:P},L.strategy,!0),isModelAvailable:s,log:p,settings:a,allCombos:c});if(!u.ok&&[502,503].includes(u.status)&&"string"==typeof a?.globalFallbackModel&&a.globalFallbackModel.trim()){let o=a.globalFallbackModel.trim();p.info("GLOBAL_FALLBACK",`Combo "${L.name}" exhausted — attempting global fallback: ${o}`);try{let r=await $(n,o,t,e,L.name,U,i,{sessionId:N,emergencyFallbackTried:!0,forceLiveComboTest:P},L.strategy,!0);if(r.ok)return p.info("GLOBAL_FALLBACK",`Global fallback ${o} succeeded`),(0,S.recordTelemetry)(i),D(r,N);p.warn("GLOBAL_FALLBACK",`Global fallback ${o} also failed (${r.status})`)}catch(e){p.warn("GLOBAL_FALLBACK",`Global fallback error: ${e?.message||"unknown"}`)}}return(0,S.recordTelemetry)(i),D(u,N)}i.endPhase();let j=await $(n,h,t,e,null,U,i,{sessionId:N,forceLiveComboTest:P},null,!1);return(0,S.recordTelemetry)(i),D(j,N)}function I(e,t){return{endpoint:new URL(e.url).pathname,body:(0,b.cloneLogPayload)(t),headers:Object.fromEntries(e.headers.entries())}}async function $(e,t,n=null,r=null,s=null,i=null,l=null,u={},d=null,f=!1){let m=await P(t,e,n?.endpoint);if(m.error)return m.error;let{provider:y,model:S,sourceFormat:E,targetFormat:R,extendedContext:b}=m,v=!0===u.forceLiveComboTest,w=function(e,t,n={}){let o=(0,T.isModelAvailable)(e,t);if(!o&&n.ignoreModelCooldown)p.info("AVAILABILITY",`${e}/${t} cooldown bypassed for combo live test`);else if(!o)return p.warn("AVAILABILITY",`${e}/${t} is in cooldown, rejecting request`),a.unavailableResponse(c.HTTP_STATUS.SERVICE_UNAVAILABLE,`Model ${e}/${t} is temporarily unavailable (cooldown)`,30);let r=(0,A.getCircuitBreaker)(e,{failureThreshold:5,resetTimeout:3e4,onStateChange:(e,t,n)=>p.info("CIRCUIT",`${e}: ${t} → ${n}`)});if(n.ignoreCircuitBreaker&&!r.canExecute())p.info("CIRCUIT",`Bypassing OPEN circuit breaker for combo live test: ${e}`);else if(!r.canExecute())return p.warn("CIRCUIT",`Circuit breaker OPEN for ${e}, rejecting request`),a.unavailableResponse(c.HTTP_STATUS.SERVICE_UNAVAILABLE,`Provider ${e} circuit breaker is open`,30);return null}(y,S,{ignoreCircuitBreaker:v,ignoreModelCooldown:v});if(w)return w;let x=(0,A.getCircuitBreaker)(y,{failureThreshold:5,resetTimeout:3e4,onStateChange:(e,t,n)=>p.info("CIRCUIT",`${e}: ${t} → ${n}`)}),I=r?.headers?.get("user-agent")||"",D=null,U=null,F=null;for(;;){let t=await (0,o.getProviderCredentials)(y,D,i?.allowedConnections??null,S,v?{allowSuppressedConnections:!0,bypassQuotaPolicy:!0}:void 0);if(!t||t.allRateLimited)return(429===F||503===F)&&((0,T.setModelUnavailable)(y,S,6e4,`HTTP ${F}`),p.info("AVAILABILITY",`${y}/${S} marked unavailable — all accounts exhausted (HTTP ${F})`)),function(e,t,n,o,r,s){if(e?.allRateLimited){let t=r||e.lastError||"Unavailable",i=s||Number(e.lastErrorCode)||c.HTTP_STATUS.SERVICE_UNAVAILABLE;return p.warn("CHAT",`[${n}/${o}] ${t} (${e.retryAfterHuman})`),(0,a.unavailableResponse)(i,`[${n}/${o}] ${t}`,e.retryAfter,e.retryAfterHuman)}return t?(p.warn("CHAT","No more accounts available",{provider:n}),(0,a.errorResponse)(s||c.HTTP_STATUS.SERVICE_UNAVAILABLE,r||"All accounts unavailable")):(p.error("AUTH",`No credentials for provider: ${n}`),(0,a.errorResponse)(c.HTTP_STATUS.BAD_REQUEST,`No credentials for provider: ${n}`))}(t,D,y,S,U,F);let m=t.connectionId.slice(0,8);p.info("AUTH",`Using ${y} account: ${m}...`),u.sessionId&&(0,C.touchSession)(u.sessionId,t.connectionId);let A=await (0,g.checkAndRefreshToken)(y,t),w=await M(t.connectionId),P=Date.now();l&&l.startPhase("connect");let{result:L,tlsFingerprintUsed:j}=await N({bypassCircuitBreaker:v,breaker:x,body:e,provider:y,model:S,refreshedCredentials:A,proxyInfo:w,log:p,clientRawRequest:n,credentials:t,apiKeyInfo:i,userAgent:I,comboName:s,comboStrategy:d,isCombo:f,extendedContext:b});l&&l.endPhase();let q=Date.now()-P;if(function({result:e,proxyInfo:t,proxyLatency:n,provider:o,model:r,sourceFormat:s,targetFormat:i,credentials:a,comboName:l,clientRawRequest:c,tlsFingerprintUsed:u=!1}){try{(0,h.logProxyEvent)({status:e.success?"success":408===e.status||504===e.status?"timeout":"error",proxy:t?.proxy||null,level:t?.level||"direct",levelId:t?.levelId||null,provider:o,targetUrl:`${o}/${r}`,latencyMs:n,error:e.success?null:e.error||null,connectionId:a.connectionId,comboId:l||null,account:a.connectionId?.slice(0,8)||null,tlsFingerprint:u})}catch{}try{(0,_.logTranslationEvent)({provider:o,model:r,sourceFormat:s,targetFormat:i,status:e.success?"success":"error",statusCode:e.success?200:e.status||500,latency:n,endpoint:c?.endpoint||"/v1/chat/completions",connectionId:a.connectionId||null,comboName:l||null})}catch{}}({result:L,proxyInfo:w,proxyLatency:q,provider:y,model:S,sourceFormat:E,targetFormat:R,credentials:t,comboName:s,clientRawRequest:n,tlsFingerprintUsed:j}),L.success)return(0,T.clearModelUnavailability)(y,S),l&&l.startPhase("finalize"),l&&l.endPhase(),L.response;if(!u.emergencyFallbackTried){let t=(0,O.shouldUseFallback)(Number(L.status||0),String(L.error||""),Array.isArray(e?.tools)&&e.tools.length>0);if((0,O.isFallbackDecision)(t)){let o=`${t.provider}/${t.model}`,a=`${y}/${S}`;if(o!==a){let c={...e,model:o},d=Math.min(Number(c.max_tokens??c.max_completion_tokens??t.maxOutputTokens)||t.maxOutputTokens,t.maxOutputTokens);c.max_tokens=d,c.max_completion_tokens=d,p.warn("EMERGENCY_FALLBACK",`${a} -> ${o} | reason=${t.reason}`);let g=await $(c,o,n,r,s,i,l,{...u,emergencyFallbackTried:!0},null,!!s);if(g.ok)return g;p.warn("EMERGENCY_FALLBACK",`Emergency fallback to ${o} failed with status ${g.status}. Resuming original provider account fallback.`)}}}429===L.status&&(0,k.markAccountExhaustedFrom429)(t.connectionId,y);let{shouldFallback:B}=await (0,o.markAccountUnavailable)(t.connectionId,L.status,L.error,y,S);if(B){p.warn("AUTH",`Account ${m}... unavailable (${L.status}), trying fallback`),D=t.connectionId,U=L.error,F=L.status;continue}return L.response}}async function P(e,t,n=""){let o=await (0,r.getModelInfo)(e);if(!o.provider){if("ambiguous_model"===o.errorType){let t=o.errorMessage||`Ambiguous model '${e}'. Use provider/model prefix (ex: gh/${e} or cc/${e}).`;return p.warn("CHAT",t,{model:e,candidates:o.candidateAliases||o.candidateProviders||[]}),{error:(0,a.errorResponse)(c.HTTP_STATUS.BAD_REQUEST,t)}}return p.warn("CHAT","Invalid model format",{model:e}),{error:(0,a.errorResponse)(c.HTTP_STATUS.BAD_REQUEST,"Invalid model format")}}let{provider:i,model:l,extendedContext:d}=o,g=(0,s.detectFormatFromEndpoint)(t,n),f=u.PROVIDER_ID_TO_ALIAS[i]||i,m=(0,u.getModelTargetFormat)(f,l)||(0,s.getTargetFormat)(i);"responses"===o.apiFormat&&(m="openai-responses",p.info("ROUTING","Custom model apiFormat=responses → targetFormat=openai-responses"));let h=d&&"claude"===f?" [1m]":"";return e!==`${i}/${l}`?p.info("ROUTING",`${e} → ${i}/${l}${h}`):p.info("ROUTING",`Provider: ${i}, Model: ${l}${h}`),{provider:i,model:l,sourceFormat:g,targetFormat:m,extendedContext:d}}async function N({bypassCircuitBreaker:e,breaker:t,body:n,provider:r,model:s,refreshedCredentials:l,proxyInfo:u,log:f,clientRawRequest:m,credentials:h,apiKeyInfo:_,userAgent:y,comboName:T,comboStrategy:k,isCombo:S,extendedContext:E}){try{let a=()=>(0,d.runWithProxyContext)(u?.proxy||null,()=>i.handleChatCore({body:{...n,model:`${r}/${s}`},modelInfo:{provider:r,model:s,extendedContext:E},credentials:l,log:f,clientRawRequest:m,connectionId:h.connectionId,apiKeyInfo:_,userAgent:y,comboName:T,comboStrategy:k,isCombo:S,onCredentialsRefreshed:async e=>{await (0,g.updateProviderCredentials)(h.connectionId,{accessToken:e.accessToken,refreshToken:e.refreshToken,providerSpecificData:e.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{await (0,o.clearAccountError)(h.connectionId,h)}}));if(e){if(!u?.proxy&&(0,d.isTlsFingerprintActive)()){let e=await (0,d.runWithTlsTracking)(a);return{result:e.result,tlsFingerprintUsed:e.tlsFingerprintUsed}}return{result:await a(),tlsFingerprintUsed:!1}}if(!u?.proxy&&(0,d.isTlsFingerprintActive)()){let e=await t.execute(async()=>(0,d.runWithTlsTracking)(a));return{result:e.result,tlsFingerprintUsed:e.tlsFingerprintUsed}}return{result:await t.execute(a),tlsFingerprintUsed:!1}}catch(e){if(e instanceof A.CircuitBreakerOpenError)return p.warn("CIRCUIT",`${r} circuit open during retry: ${e.message}`),{result:{success:!1,response:a.unavailableResponse(c.HTTP_STATUS.SERVICE_UNAVAILABLE,`Provider ${r} circuit breaker is open`,Math.ceil(e.retryAfterMs/1e3)),status:c.HTTP_STATUS.SERVICE_UNAVAILABLE},tlsFingerprintUsed:!1};if(e?.code==="PROXY_UNREACHABLE"||/proxy unreachable/i.test(e?.message||"")){let t=e?.message||"Proxy unreachable";return p.warn("PROXY",t),{result:{success:!1,response:a.unavailableResponse(c.HTTP_STATUS.SERVICE_UNAVAILABLE,t,2),status:c.HTTP_STATUS.SERVICE_UNAVAILABLE,error:t},tlsFingerprintUsed:!1}}throw e}}async function M(e){try{return await (0,f.resolveProxyForConnection)(e)}catch(e){return p.debug("PROXY",`Failed to resolve proxy: ${e.message}`),null}}function D(e,t){if(!e||!t)return e;try{return e.headers.set("X-OmniRoute-Session-Id",t),e}catch{let n=new Response(e.body,{status:e.status,statusText:e.statusText,headers:e.headers});return n.headers.set("X-OmniRoute-Session-Id",t),n}}[i]=w.then?(await w)():w,e.s(["buildClientRawRequest",0,I,"handleChat",0,x]),n()}catch(e){n(e)}},!1)];
|
|
28
28
|
|
|
29
29
|
//# sourceMappingURL=_0due8oe._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[114902,e=>e.a(async(t,a)=>{try{var r=e.i(745015),n=e.i(89171),i=e.i(924868),o=e.i(814747),s=e.i(446786),l=e.i(266240),u=e.i(841788),d=e.i(197892),c=e.i(676088),p=e.i(200392);e.i(245272);var f=e.i(125852),h=e.i(195975),g=t([c,p]);[c,p]=g.then?(await g)():g;let v=o.default.join(s.default.homedir(),".local","share","kilo"),w=o.default.join(v,"auth.json");o.default.join(s.default.homedir(),".config","kilo");let C=async()=>{try{let e=await i.default.readFile(w,"utf-8");return JSON.parse(e)}catch(e){if("ENOENT"===e.code)return null;throw e}};async function m(){try{let e=await (0,l.getCliRuntimeStatus)("kilo");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?"Kilo Code CLI is installed but not runnable":"Kilo Code CLI is not installed"});let t=await C(),a=null;try{let e=o.default.join(s.default.homedir(),".config","Code","User","settings.json"),t=await i.default.readFile(e,"utf-8"),r=JSON.parse(t);for(let[e,t]of(a={},Object.entries(r)))(e.startsWith("kilocode.")||e.startsWith("kilo-code.")||e.startsWith("kilo."))&&(a[e]=t)}catch{}return n.NextResponse.json({installed:e.installed,runnable:e.runnable,command:e.command,commandPath:e.commandPath,runtimeMode:e.runtimeMode,reason:e.reason,settings:{auth:t?Object.keys(t):[],extensionSettings:a},hasOmniRoute:(e=>{if(!e)return!1;let t=e["openai-compatible"]||e.omniroute;if(!t)return!1;let a=t.baseUrl||t.baseURL||"";return a.includes("localhost")||a.includes("127.0.0.1")||a.includes("omniroute")})(t),authPath:w})}catch(e){return console.log("Error checking kilo settings:",e),n.NextResponse.json({error:"Failed to check kilo settings"},{status:500})}}async function R(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,l.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});let a=(0,p.validateBody)(c.cliModelConfigSchema,t);if((0,p.isValidationFailure)(a))return n.NextResponse.json({error:a.error},{status:400});let{baseUrl:r,model:h}=a.data,{apiKey:g}=a.data,m="string"==typeof t?.keyId?t.keyId.trim():null;if(m)try{let e=await (0,f.getApiKeyById)(m);e?.key&&(g=e.key)}catch{}await i.default.mkdir(v,{recursive:!0}),await (0,u.createBackup)("kilo",w);let R={};try{let e=await i.default.readFile(w,"utf-8");R=JSON.parse(e)}catch{}let y=r.endsWith("/v1")?r:`${r}/v1`;R["openai-compatible"]={type:"api-key",apiKey:g||"sk_omniroute",baseUrl:y,model:h},await i.default.writeFile(w,JSON.stringify(R,null,2));try{let e=o.default.join(s.default.homedir(),".config","Code","User","settings.json"),t={};try{let a=await i.default.readFile(e,"utf-8");t=JSON.parse(a)}catch{}t["kilocode.customProvider"]={name:"OmniRoute",baseURL:y,apiKey:g||"sk_omniroute"},t["kilocode.defaultModel"]=h,await i.default.writeFile(e,JSON.stringify(t,null,2))}catch{}try{(0,d.saveCliToolLastConfigured)("kilo")}catch{}return n.NextResponse.json({success:!0,message:"Kilo Code settings applied successfully!",authPath:w})}catch(e){return console.log("Error updating kilo settings:",e),n.NextResponse.json({error:"Failed to update kilo settings"},{status:500})}}async function y(){try{let e=(0,l.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});await (0,u.createBackup)("kilo",w);let t={};try{let e=await i.default.readFile(w,"utf-8");t=JSON.parse(e)}catch(e){if("ENOENT"===e.code)return n.NextResponse.json({success:!0,message:"No settings file to reset"});throw e}delete t["openai-compatible"],delete t.omniroute,await i.default.writeFile(w,JSON.stringify(t,null,2));try{let e=o.default.join(s.default.homedir(),".config","Code","User","settings.json"),t=await i.default.readFile(e,"utf-8"),a=JSON.parse(t);delete a["kilocode.customProvider"],delete a["kilocode.defaultModel"],await i.default.writeFile(e,JSON.stringify(a,null,2))}catch{}try{(0,d.deleteCliToolLastConfigured)("kilo")}catch{}return n.NextResponse.json({success:!0,message:"OmniRoute settings removed from Kilo Code"})}catch(e){return console.log("Error resetting kilo settings:",e),n.NextResponse.json({error:"Failed to reset kilo settings"},{status:500})}}(0,h.ensureServerEntryExports)([m,R,y]),(0,r.registerServerReference)(m,"00e2e5225802835953d21c95f8e2a80026bab68f9a",null),(0,r.registerServerReference)(R,"40b6b4f14d782a57296c699febc06f4efbd5870d91",null),(0,r.registerServerReference)(y,"005dcde81ab42092c0e2f7ecead6a8e94fb062a3b8",null),e.s(["DELETE",0,y,"GET",0,m,"POST",0,R]),a()}catch(e){a(e)}},!1),472224,e=>e.a(async(t,a)=>{try{var r=e.i(747909),n=e.i(174017),i=e.i(996250),o=e.i(759756),s=e.i(561916),l=e.i(174677),u=e.i(869741),d=e.i(316795),c=e.i(487718),p=e.i(995169),f=e.i(47587),h=e.i(666012),g=e.i(570101),m=e.i(626937),R=e.i(10372),y=e.i(193695);e.i(820232);var v=e.i(600220),w=e.i(114902),C=t([w]);[w]=C.then?(await C)():C;let N=new r.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/cli-tools/kilo-settings/route",pathname:"/api/cli-tools/kilo-settings",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/cli-tools/kilo-settings/route.ts",nextConfigOutput:"standalone",userland:w,...{}}),{workAsyncStorage:b,workUnitAsyncStorage:k,serverHooks:x}=N;async function E(e,t,a){a.requestMeta&&(0,o.setRequestMeta)(e,a.requestMeta),N.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let r="/api/cli-tools/kilo-settings/route";r=r.replace(/\/index$/,"")||"/";let i=await N.prepare(e,t,{srcPage:r,multiZoneDraftMode:!1});if(!i)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:w,params:C,nextConfig:E,parsedUrl:b,isDraftMode:k,prerenderManifest:x,routerServerContext:O,isOnDemandRevalidate:S,revalidateOnlyGenerated:A,resolvedPathname:P,clientReferenceManifest:j,serverActionsManifest:T}=i,_=(0,u.normalizeAppPath)(r),I=!!(x.dynamicRoutes[_]||x.routes[P]),U=async()=>((null==O?void 0:O.render404)?await O.render404(e,t,b,!1):t.end("This page could not be found"),null);if(I&&!k){let e=!!x.routes[P],t=x.dynamicRoutes[_];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await U();throw new y.NoFallbackError}}let F=null;!I||N.isDev||k||(F=P,F="/index"===F?"/":F);let M=!0===N.isDev||!I,q=I&&!M;T&&j&&(0,l.setManifestsSingleton)({page:r,clientReferenceManifest:j,serverActionsManifest:T});let H=e.method||"GET",K=(0,s.getTracer)(),D=K.getActiveScopeSpan(),L=!!(null==O?void 0:O.isWrappedByNextServer),J=!!(0,o.getRequestMeta)(e,"minimalMode"),B=(0,o.getRequestMeta)(e,"incrementalCache")||await N.getIncrementalCache(e,E,x,J);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let $={params:C,previewProps:x.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:M,incrementalCache:B,cacheLifeProfiles:E.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>N.onRequestError(e,t,r,n,O)},sharedContext:{buildId:w}},W=new d.NodeNextRequest(e),G=new d.NodeNextResponse(t),V=c.NextRequestAdapter.fromNodeNextRequest(W,(0,c.signalFromNodeResponse)(t));try{let i,o=async e=>N.handle(V,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=K.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${H} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),i&&i!==e&&(i.setAttribute("http.route",n),i.updateName(t))}else e.updateName(`${H} ${r}`)}),l=async i=>{var s,l;let u=async({previousCacheEntry:n})=>{try{if(!J&&S&&A&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await o(i);e.fetchMetrics=$.renderOpts.fetchMetrics;let s=$.renderOpts.pendingWaitUntil;s&&a.waitUntil&&(a.waitUntil(s),s=void 0);let l=$.renderOpts.collectedTags;if(!I)return await (0,h.sendResponse)(W,G,r,$.renderOpts.pendingWaitUntil),null;{let e=await r.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(r.headers);l&&(t[R.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=R.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,n=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=R.INFINITE_CACHE?void 0:$.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:r.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await N.onRequestError(e,t,{routerKind:"App Router",routePath:r,routeType:"route",revalidateReason:(0,f.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:S})},!1,O),t}},d=await N.handleResponse({req:e,nextConfig:E,cacheKey:F,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:x,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:A,responseGenerator:u,waitUntil:a.waitUntil,isMinimalMode:J});if(!I)return null;if((null==d||null==(s=d.value)?void 0:s.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(l=d.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});J||t.setHeader("x-nextjs-cache",S?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,g.fromNodeOutgoingHttpHeaders)(d.value.headers);return J&&I||c.delete(R.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,m.getCacheControlHeader)(d.cacheControl)),await (0,h.sendResponse)(W,G,new Response(d.value.body,{headers:c,status:d.value.status||200})),null};L&&D?await l(D):(i=K.getActiveScopeSpan(),await K.withPropagatedContext(e.headers,()=>K.trace(p.BaseServerSpan.handleRequest,{spanName:`${H} ${r}`,kind:s.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},l),void 0,!L))}catch(t){if(t instanceof y.NoFallbackError||await N.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,f.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:S})},!1,O),I)throw t;return await (0,h.sendResponse)(W,G,new Response(null,{status:500})),null}}e.s(["handler",0,E,"patchFetch",0,function(){return(0,i.patchFetch)({workAsyncStorage:b,workUnitAsyncStorage:k})},"routeModule",0,N,"serverHooks",0,x,"workAsyncStorage",0,b,"workUnitAsyncStorage",0,k]),a()}catch(e){a(e)}},!1)];
|
|
1
|
+
module.exports=[114902,e=>e.a(async(t,a)=>{try{var r=e.i(745015),n=e.i(89171),i=e.i(924868),o=e.i(814747),s=e.i(446786),l=e.i(266240),d=e.i(841788),u=e.i(197892),c=e.i(676088),p=e.i(200392);e.i(245272);var h=e.i(125852),f=e.i(195975),g=t([c,p]);[c,p]=g.then?(await g)():g;let v=o.default.join(s.default.homedir(),".local","share","kilo"),w=o.default.join(v,"auth.json");o.default.join(s.default.homedir(),".config","kilo");let C=async()=>{try{let e=await i.default.readFile(w,"utf-8");return JSON.parse(e)}catch(e){if("ENOENT"===e.code)return null;throw e}};async function m(){try{let e=await (0,l.getCliRuntimeStatus)("kilo");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?"Kilo Code CLI is installed but not runnable":"Kilo Code CLI is not installed"});let t=await C(),a=null;try{let e=o.default.join(s.default.homedir(),".config","Code","User","settings.json"),t=await i.default.readFile(e,"utf-8"),r=JSON.parse(t);for(let[e,t]of(a={},Object.entries(r)))(e.startsWith("kilocode.")||e.startsWith("kilo-code.")||e.startsWith("kilo."))&&(a[e]=t)}catch{}return n.NextResponse.json({installed:e.installed,runnable:e.runnable,command:e.command,commandPath:e.commandPath,runtimeMode:e.runtimeMode,reason:e.reason,settings:{auth:t?Object.keys(t):[],extensionSettings:a},hasOmniRoute:(e=>{if(!e)return!1;let t=e["openai-compatible"]||e.omniroute;if(!t)return!1;let a=t.baseUrl||t.baseURL||"";return a.includes("localhost")||a.includes("127.0.0.1")||a.includes("omniroute")})(t),authPath:w})}catch(e){return console.log("Error checking kilo settings:",e),n.NextResponse.json({error:"Failed to check kilo settings"},{status:500})}}async function R(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,l.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});let a=(0,p.validateBody)(c.cliModelConfigSchema,t);if((0,p.isValidationFailure)(a))return n.NextResponse.json({error:a.error},{status:400});let{baseUrl:r,model:f}=a.data,{apiKey:g}=a.data,m="string"==typeof t?.keyId?t.keyId.trim():null;if(m)try{let e=await (0,h.getApiKeyById)(m);e?.key&&(g=e.key)}catch{}await i.default.mkdir(v,{recursive:!0}),await (0,d.createBackup)("kilo",w);let R={};try{let e=await i.default.readFile(w,"utf-8");R=JSON.parse(e)}catch{}let y=r.endsWith("/v1")?r:`${r}/v1`;R["openai-compatible"]={type:"api-key",apiKey:g||"sk_omniroute",baseUrl:y,model:f},await i.default.writeFile(w,JSON.stringify(R,null,2));try{let e=o.default.join(s.default.homedir(),".config","Code","User","settings.json"),t={};try{let a=await i.default.readFile(e,"utf-8");t=JSON.parse(a)}catch{}t["kilocode.customProvider"]={name:"OmniRoute",baseURL:y,apiKey:g||"sk_omniroute"},t["kilocode.defaultModel"]=f,await i.default.writeFile(e,JSON.stringify(t,null,2))}catch{}try{(0,u.saveCliToolLastConfigured)("kilo")}catch{}return n.NextResponse.json({success:!0,message:"Kilo Code settings applied successfully!",authPath:w})}catch(e){return console.log("Error updating kilo settings:",e),n.NextResponse.json({error:"Failed to update kilo settings"},{status:500})}}async function y(){try{let e=(0,l.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});await (0,d.createBackup)("kilo",w);let t={};try{let e=await i.default.readFile(w,"utf-8");t=JSON.parse(e)}catch(e){if("ENOENT"===e.code)return n.NextResponse.json({success:!0,message:"No settings file to reset"});throw e}delete t["openai-compatible"],delete t.omniroute,await i.default.writeFile(w,JSON.stringify(t,null,2));try{let e=o.default.join(s.default.homedir(),".config","Code","User","settings.json"),t=await i.default.readFile(e,"utf-8"),a=JSON.parse(t);delete a["kilocode.customProvider"],delete a["kilocode.defaultModel"],await i.default.writeFile(e,JSON.stringify(a,null,2))}catch{}try{(0,u.deleteCliToolLastConfigured)("kilo")}catch{}return n.NextResponse.json({success:!0,message:"OmniRoute settings removed from Kilo Code"})}catch(e){return console.log("Error resetting kilo settings:",e),n.NextResponse.json({error:"Failed to reset kilo settings"},{status:500})}}(0,f.ensureServerEntryExports)([m,R,y]),(0,r.registerServerReference)(m,"007ded8a4d57d01d1262cc7c19b364eede5ace45cf",null),(0,r.registerServerReference)(R,"401ed7ac706e5d943c938a1a589a3e7b3a5ca2843a",null),(0,r.registerServerReference)(y,"00d6a65cfac1380c63d9e0474510cca66f86e1f4e1",null),e.s(["DELETE",0,y,"GET",0,m,"POST",0,R]),a()}catch(e){a(e)}},!1),472224,e=>e.a(async(t,a)=>{try{var r=e.i(747909),n=e.i(174017),i=e.i(996250),o=e.i(759756),s=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),f=e.i(666012),g=e.i(570101),m=e.i(626937),R=e.i(10372),y=e.i(193695);e.i(820232);var v=e.i(600220),w=e.i(114902),C=t([w]);[w]=C.then?(await C)():C;let N=new r.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/cli-tools/kilo-settings/route",pathname:"/api/cli-tools/kilo-settings",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/cli-tools/kilo-settings/route.ts",nextConfigOutput:"standalone",userland:w,...{}}),{workAsyncStorage:k,workUnitAsyncStorage:b,serverHooks:x}=N;async function E(e,t,a){a.requestMeta&&(0,o.setRequestMeta)(e,a.requestMeta),N.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let r="/api/cli-tools/kilo-settings/route";r=r.replace(/\/index$/,"")||"/";let i=await N.prepare(e,t,{srcPage:r,multiZoneDraftMode:!1});if(!i)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:w,params:C,nextConfig:E,parsedUrl:k,isDraftMode:b,prerenderManifest:x,routerServerContext:O,isOnDemandRevalidate:S,revalidateOnlyGenerated:A,resolvedPathname:P,clientReferenceManifest:j,serverActionsManifest:T}=i,_=(0,d.normalizeAppPath)(r),I=!!(x.dynamicRoutes[_]||x.routes[P]),U=async()=>((null==O?void 0:O.render404)?await O.render404(e,t,k,!1):t.end("This page could not be found"),null);if(I&&!b){let e=!!x.routes[P],t=x.dynamicRoutes[_];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await U();throw new y.NoFallbackError}}let F=null;!I||N.isDev||b||(F=P,F="/index"===F?"/":F);let M=!0===N.isDev||!I,q=I&&!M;T&&j&&(0,l.setManifestsSingleton)({page:r,clientReferenceManifest:j,serverActionsManifest:T});let H=e.method||"GET",K=(0,s.getTracer)(),D=K.getActiveScopeSpan(),L=!!(null==O?void 0:O.isWrappedByNextServer),J=!!(0,o.getRequestMeta)(e,"minimalMode"),B=(0,o.getRequestMeta)(e,"incrementalCache")||await N.getIncrementalCache(e,E,x,J);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let $={params:C,previewProps:x.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:M,incrementalCache:B,cacheLifeProfiles:E.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>N.onRequestError(e,t,r,n,O)},sharedContext:{buildId:w}},W=new u.NodeNextRequest(e),G=new u.NodeNextResponse(t),V=c.NextRequestAdapter.fromNodeNextRequest(W,(0,c.signalFromNodeResponse)(t));try{let i,o=async e=>N.handle(V,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=K.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${H} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),i&&i!==e&&(i.setAttribute("http.route",n),i.updateName(t))}else e.updateName(`${H} ${r}`)}),l=async i=>{var s,l;let d=async({previousCacheEntry:n})=>{try{if(!J&&S&&A&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await o(i);e.fetchMetrics=$.renderOpts.fetchMetrics;let s=$.renderOpts.pendingWaitUntil;s&&a.waitUntil&&(a.waitUntil(s),s=void 0);let l=$.renderOpts.collectedTags;if(!I)return await (0,f.sendResponse)(W,G,r,$.renderOpts.pendingWaitUntil),null;{let e=await r.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(r.headers);l&&(t[R.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=R.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,n=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=R.INFINITE_CACHE?void 0:$.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:r.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await N.onRequestError(e,t,{routerKind:"App Router",routePath:r,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:S})},!1,O),t}},u=await N.handleResponse({req:e,nextConfig:E,cacheKey:F,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:x,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:A,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:J});if(!I)return null;if((null==u||null==(s=u.value)?void 0:s.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});J||t.setHeader("x-nextjs-cache",S?"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,g.fromNodeOutgoingHttpHeaders)(u.value.headers);return J&&I||c.delete(R.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,m.getCacheControlHeader)(u.cacheControl)),await (0,f.sendResponse)(W,G,new Response(u.value.body,{headers:c,status:u.value.status||200})),null};L&&D?await l(D):(i=K.getActiveScopeSpan(),await K.withPropagatedContext(e.headers,()=>K.trace(p.BaseServerSpan.handleRequest,{spanName:`${H} ${r}`,kind:s.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},l),void 0,!L))}catch(t){if(t instanceof y.NoFallbackError||await N.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:S})},!1,O),I)throw t;return await (0,f.sendResponse)(W,G,new Response(null,{status:500})),null}}e.s(["handler",0,E,"patchFetch",0,function(){return(0,i.patchFetch)({workAsyncStorage:k,workUnitAsyncStorage:b})},"routeModule",0,N,"serverHooks",0,x,"workAsyncStorage",0,k,"workUnitAsyncStorage",0,b]),a()}catch(e){a(e)}},!1)];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_0h-j8c2._.js.map
|