omniroute 3.3.10 → 3.3.11
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 +2 -2
- package/app/.next/prerender-manifest.json +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
- 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/audit-log/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cache/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/mcp/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/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/profile/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/search-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/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 +2 -2
- package/app/.next/server/app/_global-error.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/system/version/route.js.nft.json +1 -1
- package/app/.next/server/app/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]__112a90be._.js +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__46e00e59._.js +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__5c021c68._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__6fba99f4._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__745fa111._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__78f7009e._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__7ace0fcd._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__7d4ffdb3._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__8c57851d._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__9096d2fa._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__a1f12196._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__a32d3818._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__b39d0020._.js +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__bc251fbe._.js +1 -1
- package/app/.next/server/chunks/_05c48915._.js +1 -1
- package/app/.next/server/chunks/_06515a8a._.js +1 -1
- package/app/.next/server/chunks/_2115d8de._.js +1 -1
- package/app/.next/server/chunks/_3ac953eb._.js +1 -1
- package/app/.next/server/chunks/_4b8fd853._.js +1 -1
- package/app/.next/server/chunks/_68683848._.js +1 -1
- package/app/.next/server/chunks/_7badaddf._.js +2 -2
- package/app/.next/server/chunks/_ee9b677b._.js +1 -1
- package/app/.next/server/chunks/open-sse_config_providerModels_ts_04541468._.js +1 -1
- package/app/.next/server/chunks/open-sse_config_providerRegistry_ts_2f74ec2a._.js +1 -1
- package/app/.next/server/chunks/open-sse_config_providerRegistry_ts_dec0f840._.js +1 -1
- package/app/.next/server/chunks/open-sse_executors_01c3e95e._.js +1 -1
- package/app/.next/server/chunks/open-sse_executors_codex_ts_6d18ec4b._.js +1 -1
- package/app/.next/server/chunks/ssr/[root-of-the-server]__9ef96d20._.js +1 -1
- package/app/.next/server/chunks/ssr/[root-of-the-server]__a6942102._.js +1 -1
- package/app/.next/server/chunks/ssr/_19b3d5b1._.js +1 -1
- package/app/.next/server/chunks/ssr/_31f623fe._.js +1 -1
- package/app/.next/server/chunks/ssr/open-sse_config_providerModels_ts_4cac55e2._.js +1 -1
- package/app/.next/server/pages/500.html +2 -2
- 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/{c7acff0f25f46281.js → 7c68da7fb645b441.js} +1 -1
- package/app/.next/static/chunks/{aa0bfbc0b2eb7658.js → 93854a469fd935c2.js} +1 -1
- package/app/.next/static/chunks/{5a0cb6640589f4fa.js → af07e5bb4e2fd5ef.js} +1 -1
- package/app/CHANGELOG.md +24 -0
- package/app/docs/openapi.yaml +1 -1
- package/app/open-sse/config/providerRegistry.ts +2 -1
- package/app/open-sse/executors/codex.ts +5 -0
- package/app/open-sse/handlers/chatCore.ts +35 -13
- package/app/open-sse/package.json +1 -1
- package/app/package-lock.json +3 -3
- package/app/package.json +1 -1
- package/app/src/shared/components/OAuthModal.tsx +6 -1
- package/app/src/shared/services/cliRuntime.ts +7 -3
- package/app/tests/unit/cli-runtime-detection.test.mjs +15 -6
- package/app/tests/unit/t28-model-catalog-updates.test.mjs +2 -2
- package/package.json +1 -1
- /package/app/.next/static/{JHXiVG41z1UrA7MsRLXGd → wq1Ii1uhsKllCHQoeqLBt}/_buildManifest.js +0 -0
- /package/app/.next/static/{JHXiVG41z1UrA7MsRLXGd → wq1Ii1uhsKllCHQoeqLBt}/_clientMiddlewareManifest.json +0 -0
- /package/app/.next/static/{JHXiVG41z1UrA7MsRLXGd → wq1Ii1uhsKllCHQoeqLBt}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[980935,e=>e.a(async(t,r)=>{try{var a=e.i(745015),n=e.i(89171),o=e.i(924868),s=e.i(814747),i=e.i(266240),l=e.i(841788),d=e.i(197892),u=e.i(676088),c=e.i(200392);e.i(245272);var p=e.i(125852),h=e.i(195975),f=t([u,c]);[u,c]=f.then?(await f)():f;let v=()=>(0,i.getCliConfigPaths)("codex").config,x=()=>(0,i.getCliConfigPaths)("codex").auth,w=e=>{let t={_root:{},_sections:{}},r="_root";return e.split("\n").forEach(e=>{let a=e.trim();if(!a||a.startsWith("#"))return;let n=a.match(/^\[(.+)\]$/);if(n){r=n[1],t._sections[r]={};return}let o=a.match(/^([^=]+)\s*=\s*(.+)$/);if(o){let e=o[1].trim(),a=o[2].trim();(a.startsWith('"')&&a.endsWith('"')||a.startsWith("'")&&a.endsWith("'"))&&(a=a.slice(1,-1)),"_root"===r?t._root[e]=a:t._sections[r][e]=a}}),t},y=e=>{let t=[];return Object.entries(e._root).forEach(([e,r])=>{t.push(`${e} = "${r}"`)}),Object.entries(e._sections).forEach(([e,r])=>{t.push(""),t.push(`[${e}]`),Object.entries(r).forEach(([e,r])=>{t.push(`${e} = "${r}"`)})}),t.join("\n")+"\n"},E=async()=>{try{let e=v();return await o.default.readFile(e,"utf-8")}catch(e){if("ENOENT"===e.code)return null;throw e}};async function m(){try{let e=await (0,i.getCliRuntimeStatus)("codex");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,config:null,message:e.installed&&!e.runnable?"Codex CLI is installed but not runnable":"Codex CLI is not installed"});let t=await E();return n.NextResponse.json({installed:e.installed,runnable:e.runnable,command:e.command,commandPath:e.commandPath,runtimeMode:e.runtimeMode,reason:e.reason,config:t,hasOmniRoute:!!t&&(t.includes('model_provider = "omniroute"')||t.includes("[model_providers.omniroute]")),configPath:v()})}catch(e){return console.log("Error checking codex settings:",e),n.NextResponse.json({error:"Failed to check codex settings"},{status:500})}}async function g(e){let t;try{t=await e.json()}catch{return n.NextResponse.json({error:{message:"Invalid request",details:[{field:"body",message:"Invalid JSON body"}]}},{status:400})}try{let e=(0,i.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});let r=(0,c.validateBody)(u.cliModelConfigSchema,t);if((0,c.isValidationFailure)(r))return n.NextResponse.json({error:r.error},{status:400});let{baseUrl:a,model:h}=r.data,{apiKey:f}=r.data;if(!f)return n.NextResponse.json({error:"baseUrl, apiKey and model are required"},{status:400});let m="string"==typeof t?.keyId?t.keyId.trim():null;if(m)try{let e=await (0,p.getApiKeyById)(m);e?.key&&(f=e.key)}catch{}let g=s.default.dirname(v()),R=v(),E=x();await o.default.mkdir(g,{recursive:!0}),await (0,l.createMultiBackup)("codex",[R,E]);let C={_root:{},_sections:{}};try{let e=await o.default.readFile(R,"utf-8");C=w(e)}catch{}C._root.model=h,C._root.model_provider="omniroute";let _=a.endsWith("/v1")?a:`${a}/v1`;C._sections["model_providers.omniroute"]={name:"OmniRoute",base_url:_,wire_api:"responses"};let N=y(C);await o.default.writeFile(R,N);let b={};try{let e=await o.default.readFile(E,"utf-8");b=JSON.parse(e)}catch{}b.OPENAI_API_KEY=f,await o.default.writeFile(E,JSON.stringify(b,null,2));try{(0,d.saveCliToolLastConfigured)("codex")}catch{}return n.NextResponse.json({success:!0,message:"Codex settings applied successfully!",configPath:R})}catch(e){return console.log("Error updating codex settings:",e),n.NextResponse.json({error:"Failed to update codex settings"},{status:500})}}async function R(){try{let e=(0,i.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});let t=v();await (0,l.createMultiBackup)("codex",[t,x()]);let r={_root:{},_sections:{}};try{let e=await o.default.readFile(t,"utf-8");r=w(e)}catch(e){if("ENOENT"===e.code)return n.NextResponse.json({success:!0,message:"No config file to reset"});throw e}"omniroute"===r._root.model_provider&&(delete r._root.model,delete r._root.model_provider),delete r._sections["model_providers.omniroute"];let a=y(r);await o.default.writeFile(t,a);let s=x();try{let e=await o.default.readFile(s,"utf-8"),t=JSON.parse(e);delete t.OPENAI_API_KEY,0===Object.keys(t).length?await o.default.unlink(s):await o.default.writeFile(s,JSON.stringify(t,null,2))}catch{}try{(0,d.deleteCliToolLastConfigured)("codex")}catch{}return n.NextResponse.json({success:!0,message:"OmniRoute settings removed successfully"})}catch(e){return console.log("Error resetting codex settings:",e),n.NextResponse.json({error:"Failed to reset codex settings"},{status:500})}}(0,h.ensureServerEntryExports)([m,g,R]),(0,a.registerServerReference)(m,"005863a41f3db688ea01e1e050390263155f15fcd1",null),(0,a.registerServerReference)(g,"403ac3da26cc4d567de56e58d71102d689e5caec30",null),(0,a.registerServerReference)(R,"001fc0f04489fdaca81951156eb32da0ed4cbf15ab",null),e.s(["DELETE",()=>R,"GET",()=>m,"POST",()=>g]),r()}catch(e){r(e)}},!1),58214,e=>e.a(async(t,r)=>{try{var a=e.i(747909),n=e.i(174017),o=e.i(996250),s=e.i(759756),i=e.i(561916),l=e.i(174677),d=e.i(869741),u=e.i(316795),c=e.i(487718),p=e.i(995169),h=e.i(47587),f=e.i(666012),m=e.i(570101),g=e.i(626937),R=e.i(10372),v=e.i(193695);e.i(52474);var x=e.i(600220),w=e.i(980935),y=t([w]);[w]=y.then?(await y)():y;let _=new a.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/cli-tools/codex-settings/route",pathname:"/api/cli-tools/codex-settings",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/cli-tools/codex-settings/route.ts",nextConfigOutput:"standalone",userland:w}),{workAsyncStorage:N,workUnitAsyncStorage:b,serverHooks:O}=_;function E(){return(0,o.patchFetch)({workAsyncStorage:N,workUnitAsyncStorage:b})}async function C(e,t,r){_.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let a="/api/cli-tools/codex-settings/route";a=a.replace(/\/index$/,"")||"/";let o=await _.prepare(e,t,{srcPage:a,multiZoneDraftMode:!1});if(!o)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:w,params:y,nextConfig:E,parsedUrl:C,isDraftMode:N,prerenderManifest:b,routerServerContext:O,isOnDemandRevalidate:A,revalidateOnlyGenerated:P,resolvedPathname:S,clientReferenceManifest:T,serverActionsManifest:j}=o,I=(0,d.normalizeAppPath)(a),k=!!(b.dynamicRoutes[I]||b.routes[S]),F=async()=>((null==O?void 0:O.render404)?await O.render404(e,t,C,!1):t.end("This page could not be found"),null);if(k&&!N){let e=!!b.routes[S],t=b.dynamicRoutes[I];if(t&&!1===t.fallback&&!e){if(E.experimental.adapterPath)return await F();throw new v.NoFallbackError}}let M=null;!k||_.isDev||N||(M=S,M="/index"===M?"/":M);let H=!0===_.isDev||!k,U=k&&!H;j&&T&&(0,l.setManifestsSingleton)({page:a,clientReferenceManifest:T,serverActionsManifest:j});let $=e.method||"GET",q=(0,i.getTracer)(),D=q.getActiveScopeSpan(),K={params:y,prerenderManifest:b,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:H,incrementalCache:(0,s.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:E.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>_.onRequestError(e,t,a,n,O)},sharedContext:{buildId:w}},L=new u.NodeNextRequest(e),W=new u.NodeNextResponse(t),B=c.NextRequestAdapter.fromNodeNextRequest(L,(0,c.signalFromNodeResponse)(t));try{let o=async e=>_.handle(B,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=q.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${$} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${$} ${a}`)}),l=!!(0,s.getRequestMeta)(e,"minimalMode"),d=async s=>{var i,d;let u=async({previousCacheEntry:n})=>{try{if(!l&&A&&P&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await o(s);e.fetchMetrics=K.renderOpts.fetchMetrics;let i=K.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let d=K.renderOpts.collectedTags;if(!k)return await (0,f.sendResponse)(L,W,a,K.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(a.headers);d&&(t[R.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=R.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,n=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=R.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:x.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await _.onRequestError(e,t,{routerKind:"App Router",routePath:a,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:A})},!1,O),t}},c=await _.handleResponse({req:e,nextConfig:E,cacheKey:M,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:b,isRoutePPREnabled:!1,isOnDemandRevalidate:A,revalidateOnlyGenerated:P,responseGenerator:u,waitUntil:r.waitUntil,isMinimalMode:l});if(!k)return null;if((null==c||null==(i=c.value)?void 0:i.kind)!==x.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(d=c.value)?void 0:d.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});l||t.setHeader("x-nextjs-cache",A?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),N&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,m.fromNodeOutgoingHttpHeaders)(c.value.headers);return l&&k||p.delete(R.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,g.getCacheControlHeader)(c.cacheControl)),await (0,f.sendResponse)(L,W,new Response(c.value.body,{headers:p,status:c.value.status||200})),null};D?await d(D):await q.withPropagatedContext(e.headers,()=>q.trace(p.BaseServerSpan.handleRequest,{spanName:`${$} ${a}`,kind:i.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},d))}catch(t){if(t instanceof v.NoFallbackError||await _.onRequestError(e,t,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:A})},!1,O),k)throw t;return await (0,f.sendResponse)(L,W,new Response(null,{status:500})),null}}e.s(["handler",()=>C,"patchFetch",()=>E,"routeModule",()=>_,"serverHooks",()=>O,"workAsyncStorage",()=>N,"workUnitAsyncStorage",()=>b]),r()}catch(e){r(e)}},!1)];
|
|
1
|
+
module.exports=[980935,e=>e.a(async(t,r)=>{try{var a=e.i(745015),n=e.i(89171),o=e.i(924868),s=e.i(814747),i=e.i(266240),l=e.i(841788),d=e.i(197892),u=e.i(676088),c=e.i(200392);e.i(245272);var p=e.i(125852),h=e.i(195975),f=t([u,c]);[u,c]=f.then?(await f)():f;let v=()=>(0,i.getCliConfigPaths)("codex").config,x=()=>(0,i.getCliConfigPaths)("codex").auth,w=e=>{let t={_root:{},_sections:{}},r="_root";return e.split("\n").forEach(e=>{let a=e.trim();if(!a||a.startsWith("#"))return;let n=a.match(/^\[(.+)\]$/);if(n){r=n[1],t._sections[r]={};return}let o=a.match(/^([^=]+)\s*=\s*(.+)$/);if(o){let e=o[1].trim(),a=o[2].trim();(a.startsWith('"')&&a.endsWith('"')||a.startsWith("'")&&a.endsWith("'"))&&(a=a.slice(1,-1)),"_root"===r?t._root[e]=a:t._sections[r][e]=a}}),t},y=e=>{let t=[];return Object.entries(e._root).forEach(([e,r])=>{t.push(`${e} = "${r}"`)}),Object.entries(e._sections).forEach(([e,r])=>{t.push(""),t.push(`[${e}]`),Object.entries(r).forEach(([e,r])=>{t.push(`${e} = "${r}"`)})}),t.join("\n")+"\n"},E=async()=>{try{let e=v();return await o.default.readFile(e,"utf-8")}catch(e){if("ENOENT"===e.code)return null;throw e}};async function m(){try{let e=await (0,i.getCliRuntimeStatus)("codex");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,config:null,message:e.installed&&!e.runnable?"Codex CLI is installed but not runnable":"Codex CLI is not installed"});let t=await E();return n.NextResponse.json({installed:e.installed,runnable:e.runnable,command:e.command,commandPath:e.commandPath,runtimeMode:e.runtimeMode,reason:e.reason,config:t,hasOmniRoute:!!t&&(t.includes('model_provider = "omniroute"')||t.includes("[model_providers.omniroute]")),configPath:v()})}catch(e){return console.log("Error checking codex settings:",e),n.NextResponse.json({error:"Failed to check codex settings"},{status:500})}}async function g(e){let t;try{t=await e.json()}catch{return n.NextResponse.json({error:{message:"Invalid request",details:[{field:"body",message:"Invalid JSON body"}]}},{status:400})}try{let e=(0,i.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});let r=(0,c.validateBody)(u.cliModelConfigSchema,t);if((0,c.isValidationFailure)(r))return n.NextResponse.json({error:r.error},{status:400});let{baseUrl:a,model:h}=r.data,{apiKey:f}=r.data;if(!f)return n.NextResponse.json({error:"baseUrl, apiKey and model are required"},{status:400});let m="string"==typeof t?.keyId?t.keyId.trim():null;if(m)try{let e=await (0,p.getApiKeyById)(m);e?.key&&(f=e.key)}catch{}let g=s.default.dirname(v()),R=v(),E=x();await o.default.mkdir(g,{recursive:!0}),await (0,l.createMultiBackup)("codex",[R,E]);let C={_root:{},_sections:{}};try{let e=await o.default.readFile(R,"utf-8");C=w(e)}catch{}C._root.model=h,C._root.model_provider="omniroute";let _=a.endsWith("/v1")?a:`${a}/v1`;C._sections["model_providers.omniroute"]={name:"OmniRoute",base_url:_,wire_api:"responses"};let N=y(C);await o.default.writeFile(R,N);let b={};try{let e=await o.default.readFile(E,"utf-8");b=JSON.parse(e)}catch{}b.OPENAI_API_KEY=f,await o.default.writeFile(E,JSON.stringify(b,null,2));try{(0,d.saveCliToolLastConfigured)("codex")}catch{}return n.NextResponse.json({success:!0,message:"Codex settings applied successfully!",configPath:R})}catch(e){return console.log("Error updating codex settings:",e),n.NextResponse.json({error:"Failed to update codex settings"},{status:500})}}async function R(){try{let e=(0,i.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});let t=v();await (0,l.createMultiBackup)("codex",[t,x()]);let r={_root:{},_sections:{}};try{let e=await o.default.readFile(t,"utf-8");r=w(e)}catch(e){if("ENOENT"===e.code)return n.NextResponse.json({success:!0,message:"No config file to reset"});throw e}"omniroute"===r._root.model_provider&&(delete r._root.model,delete r._root.model_provider),delete r._sections["model_providers.omniroute"];let a=y(r);await o.default.writeFile(t,a);let s=x();try{let e=await o.default.readFile(s,"utf-8"),t=JSON.parse(e);delete t.OPENAI_API_KEY,0===Object.keys(t).length?await o.default.unlink(s):await o.default.writeFile(s,JSON.stringify(t,null,2))}catch{}try{(0,d.deleteCliToolLastConfigured)("codex")}catch{}return n.NextResponse.json({success:!0,message:"OmniRoute settings removed successfully"})}catch(e){return console.log("Error resetting codex settings:",e),n.NextResponse.json({error:"Failed to reset codex settings"},{status:500})}}(0,h.ensureServerEntryExports)([m,g,R]),(0,a.registerServerReference)(m,"00845819449fc64b9e33e7046c779a4846ed313f82",null),(0,a.registerServerReference)(g,"40b38a9418ce9803ac3fe6c8e534fbfec2e23052d4",null),(0,a.registerServerReference)(R,"0071dc7d70a64a860304788607d912f5dfe87c54d6",null),e.s(["DELETE",()=>R,"GET",()=>m,"POST",()=>g]),r()}catch(e){r(e)}},!1),58214,e=>e.a(async(t,r)=>{try{var a=e.i(747909),n=e.i(174017),o=e.i(996250),s=e.i(759756),i=e.i(561916),l=e.i(174677),d=e.i(869741),u=e.i(316795),c=e.i(487718),p=e.i(995169),h=e.i(47587),f=e.i(666012),m=e.i(570101),g=e.i(626937),R=e.i(10372),v=e.i(193695);e.i(52474);var x=e.i(600220),w=e.i(980935),y=t([w]);[w]=y.then?(await y)():y;let _=new a.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/cli-tools/codex-settings/route",pathname:"/api/cli-tools/codex-settings",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/cli-tools/codex-settings/route.ts",nextConfigOutput:"standalone",userland:w}),{workAsyncStorage:N,workUnitAsyncStorage:b,serverHooks:O}=_;function E(){return(0,o.patchFetch)({workAsyncStorage:N,workUnitAsyncStorage:b})}async function C(e,t,r){_.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let a="/api/cli-tools/codex-settings/route";a=a.replace(/\/index$/,"")||"/";let o=await _.prepare(e,t,{srcPage:a,multiZoneDraftMode:!1});if(!o)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:w,params:y,nextConfig:E,parsedUrl:C,isDraftMode:N,prerenderManifest:b,routerServerContext:O,isOnDemandRevalidate:A,revalidateOnlyGenerated:P,resolvedPathname:S,clientReferenceManifest:T,serverActionsManifest:j}=o,I=(0,d.normalizeAppPath)(a),k=!!(b.dynamicRoutes[I]||b.routes[S]),F=async()=>((null==O?void 0:O.render404)?await O.render404(e,t,C,!1):t.end("This page could not be found"),null);if(k&&!N){let e=!!b.routes[S],t=b.dynamicRoutes[I];if(t&&!1===t.fallback&&!e){if(E.experimental.adapterPath)return await F();throw new v.NoFallbackError}}let M=null;!k||_.isDev||N||(M=S,M="/index"===M?"/":M);let H=!0===_.isDev||!k,U=k&&!H;j&&T&&(0,l.setManifestsSingleton)({page:a,clientReferenceManifest:T,serverActionsManifest:j});let $=e.method||"GET",q=(0,i.getTracer)(),D=q.getActiveScopeSpan(),K={params:y,prerenderManifest:b,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:H,incrementalCache:(0,s.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:E.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>_.onRequestError(e,t,a,n,O)},sharedContext:{buildId:w}},L=new u.NodeNextRequest(e),W=new u.NodeNextResponse(t),B=c.NextRequestAdapter.fromNodeNextRequest(L,(0,c.signalFromNodeResponse)(t));try{let o=async e=>_.handle(B,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=q.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${$} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${$} ${a}`)}),l=!!(0,s.getRequestMeta)(e,"minimalMode"),d=async s=>{var i,d;let u=async({previousCacheEntry:n})=>{try{if(!l&&A&&P&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await o(s);e.fetchMetrics=K.renderOpts.fetchMetrics;let i=K.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let d=K.renderOpts.collectedTags;if(!k)return await (0,f.sendResponse)(L,W,a,K.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(a.headers);d&&(t[R.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=R.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,n=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=R.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:x.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await _.onRequestError(e,t,{routerKind:"App Router",routePath:a,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:A})},!1,O),t}},c=await _.handleResponse({req:e,nextConfig:E,cacheKey:M,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:b,isRoutePPREnabled:!1,isOnDemandRevalidate:A,revalidateOnlyGenerated:P,responseGenerator:u,waitUntil:r.waitUntil,isMinimalMode:l});if(!k)return null;if((null==c||null==(i=c.value)?void 0:i.kind)!==x.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(d=c.value)?void 0:d.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});l||t.setHeader("x-nextjs-cache",A?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),N&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,m.fromNodeOutgoingHttpHeaders)(c.value.headers);return l&&k||p.delete(R.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,g.getCacheControlHeader)(c.cacheControl)),await (0,f.sendResponse)(L,W,new Response(c.value.body,{headers:p,status:c.value.status||200})),null};D?await d(D):await q.withPropagatedContext(e.headers,()=>q.trace(p.BaseServerSpan.handleRequest,{spanName:`${$} ${a}`,kind:i.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},d))}catch(t){if(t instanceof v.NoFallbackError||await _.onRequestError(e,t,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:A})},!1,O),k)throw t;return await (0,f.sendResponse)(L,W,new Response(null,{status:500})),null}}e.s(["handler",()=>C,"patchFetch",()=>E,"routeModule",()=>_,"serverHooks",()=>O,"workAsyncStorage",()=>N,"workUnitAsyncStorage",()=>b]),r()}catch(e){r(e)}},!1)];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_3ac953eb._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[314251,e=>e.a(async(t,r)=>{try{var a=e.i(745015),n=e.i(89171),o=e.i(924868),s=e.i(814747),i=e.i(266240),l=e.i(256770),u=e.i(676088),d=e.i(200392),c=e.i(195975),f=t([u,d]);[u,d]=f.then?(await f)():f;let x=s.default.join((0,l.resolveDataDir)(),"codex-profiles");async function p(){return await o.default.mkdir(x,{recursive:!0}),x}async function h(){try{let e;await p();try{e=await o.default.readdir(x)}catch{return n.NextResponse.json({profiles:[]})}let t=e.filter(e=>e.endsWith(".json")),r=[];for(let e of t)try{let t=await o.default.readFile(s.default.join(x,e),"utf-8"),a=JSON.parse(t);r.push({id:e.replace(".json",""),name:a.name,authLabel:a.authLabel||"unknown",createdAt:a.createdAt,hasConfig:!!a.configToml,hasAuth:!!a.authJson})}catch{}return r.sort((e,t)=>e.name.localeCompare(t.name)),n.NextResponse.json({profiles:r})}catch(e){return console.log("Error listing codex profiles:",e.message),n.NextResponse.json({error:"Failed to list profiles"},{status:500})}}async function g(e){let t;try{t=await e.json()}catch{return n.NextResponse.json({error:{message:"Invalid request",details:[{field:"body",message:"Invalid JSON body"}]}},{status:400})}try{let e=(0,i.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});let r=(0,d.validateBody)(u.codexProfileNameSchema,t);if((0,d.isValidationFailure)(r))return n.NextResponse.json({error:r.error},{status:400});let{name:a}=r.data,l=(0,i.getCliConfigPaths)("codex");if(!l)return n.NextResponse.json({error:"Codex config paths not found"},{status:500});let c=null,f=null;try{c=await o.default.readFile(l.config,"utf-8")}catch{}try{f=await o.default.readFile(l.auth,"utf-8")}catch{}if(!c&&!f)return n.NextResponse.json({error:"No Codex configuration files found to save"},{status:400});let h=a.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,""),g={name:a.trim(),createdAt:new Date().toISOString(),authLabel:f?function(e){try{let t=JSON.parse(e);if(t.tokens?.id_token){let e=t.tokens.id_token.split(".")[1],r=JSON.parse(Buffer.from(e,"base64").toString());if(r.email)return r.email}if(t.auth_mode)return t.auth_mode;if(t.OPENAI_API_KEY)return`API Key: ${t.OPENAI_API_KEY.slice(0,8)}...`;return"unknown"}catch{return"unknown"}}(f):"no-auth",configToml:c,authJson:f};await p();let R=s.default.join(x,`${h}.json`);return await o.default.writeFile(R,JSON.stringify(g,null,2)),n.NextResponse.json({success:!0,message:`Profile "${a}" saved successfully`,profileId:h})}catch(e){return console.log("Error saving codex profile:",e.message),n.NextResponse.json({error:"Failed to save profile"},{status:500})}}async function R(t){let r;try{r=await t.json()}catch{return n.NextResponse.json({error:{message:"Invalid request",details:[{field:"body",message:"Invalid JSON body"}]}},{status:400})}try{let t,a=(0,i.ensureCliConfigWriteAllowed)();if(a)return n.NextResponse.json({error:a},{status:403});let l=(0,d.validateBody)(u.codexProfileIdSchema,r);if((0,d.isValidationFailure)(l))return n.NextResponse.json({error:l.error},{status:400});let{profileId:c}=l.data,f=s.default.join(x,`${c}.json`);try{let e=await o.default.readFile(f,"utf-8");t=JSON.parse(e)}catch{return n.NextResponse.json({error:`Profile "${c}" not found`},{status:404})}let p=(0,i.getCliConfigPaths)("codex");if(!p)return n.NextResponse.json({error:"Codex config paths not found"},{status:500});let{createMultiBackup:h}=await e.A(452484);return await h("codex",[p.config,p.auth]),await o.default.mkdir(s.default.dirname(p.config),{recursive:!0}),t.configToml&&await o.default.writeFile(p.config,t.configToml),t.authJson&&await o.default.writeFile(p.auth,t.authJson),n.NextResponse.json({success:!0,message:`Profile "${t.name}" activated`,profileId:c,restoredConfig:!!t.configToml,restoredAuth:!!t.authJson})}catch(e){return console.log("Error activating codex profile:",e.message),n.NextResponse.json({error:"Failed to activate profile"},{status:500})}}async function m(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,d.validateBody)(u.codexProfileIdSchema,t);if((0,d.isValidationFailure)(e))return n.NextResponse.json({error:e.error},{status:400});let{profileId:r}=e.data,a=s.default.join(x,`${r}.json`);try{await o.default.unlink(a)}catch(e){if("ENOENT"===e.code)return n.NextResponse.json({error:`Profile "${r}" not found`},{status:404});throw e}return n.NextResponse.json({success:!0,message:`Profile "${r}" deleted`})}catch(e){return console.log("Error deleting codex profile:",e.message),n.NextResponse.json({error:"Failed to delete profile"},{status:500})}}(0,c.ensureServerEntryExports)([h,g,R,m]),(0,a.registerServerReference)(h,"0047af8b2eeb1bea3472ef6800dcd57f31293dc74e",null),(0,a.registerServerReference)(g,"40acbc87335a982c978566a29ecadafb5729d08d79",null),(0,a.registerServerReference)(R,"40044afdf5621b5b0f6ecc6b22a036ada5781908f9",null),(0,a.registerServerReference)(m,"40caa3c8e4991eeb9e9817a9008cc1c8c9e7752b5d",null),e.s(["DELETE",()=>m,"GET",()=>h,"POST",()=>g,"PUT",()=>R]),r()}catch(e){r(e)}},!1),57985,e=>e.a(async(t,r)=>{try{var a=e.i(747909),n=e.i(174017),o=e.i(996250),s=e.i(759756),i=e.i(561916),l=e.i(174677),u=e.i(869741),d=e.i(316795),c=e.i(487718),f=e.i(995169),p=e.i(47587),h=e.i(666012),g=e.i(570101),R=e.i(626937),m=e.i(10372),x=e.i(193695);e.i(52474);var v=e.i(600220),w=e.i(314251),y=t([w]);[w]=y.then?(await y)():y;let C=new a.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/cli-tools/codex-profiles/route",pathname:"/api/cli-tools/codex-profiles",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/cli-tools/codex-profiles/route.ts",nextConfigOutput:"standalone",userland:w}),{workAsyncStorage:j,workUnitAsyncStorage:A,serverHooks:b}=C;function N(){return(0,o.patchFetch)({workAsyncStorage:j,workUnitAsyncStorage:A})}async function E(e,t,r){C.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let a="/api/cli-tools/codex-profiles/route";a=a.replace(/\/index$/,"")||"/";let o=await C.prepare(e,t,{srcPage:a,multiZoneDraftMode:!1});if(!o)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:w,params:y,nextConfig:N,parsedUrl:E,isDraftMode:j,prerenderManifest:A,routerServerContext:b,isOnDemandRevalidate:P,revalidateOnlyGenerated:S,resolvedPathname:O,clientReferenceManifest:T,serverActionsManifest:I}=o,_=(0,u.normalizeAppPath)(a),k=!!(A.dynamicRoutes[_]||A.routes[O]),F=async()=>((null==b?void 0:b.render404)?await b.render404(e,t,E,!1):t.end("This page could not be found"),null);if(k&&!j){let e=!!A.routes[O],t=A.dynamicRoutes[_];if(t&&!1===t.fallback&&!e){if(N.experimental.adapterPath)return await F();throw new x.NoFallbackError}}let $=null;!k||C.isDev||j||($=O,$="/index"===$?"/":$);let q=!0===C.isDev||!k,D=k&&!q;I&&T&&(0,l.setManifestsSingleton)({page:a,clientReferenceManifest:T,serverActionsManifest:I});let H=e.method||"GET",U=(0,i.getTracer)(),J=U.getActiveScopeSpan(),M={params:y,prerenderManifest:A,renderOpts:{experimental:{authInterrupts:!!N.experimental.authInterrupts},cacheComponents:!!N.cacheComponents,supportsDynamicResponse:q,incrementalCache:(0,s.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:N.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>C.onRequestError(e,t,a,n,b)},sharedContext:{buildId:w}},K=new d.NodeNextRequest(e),L=new d.NodeNextResponse(t),B=c.NextRequestAdapter.fromNodeNextRequest(K,(0,c.signalFromNodeResponse)(t));try{let o=async e=>C.handle(B,M).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=U.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==f.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${H} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${H} ${a}`)}),l=!!(0,s.getRequestMeta)(e,"minimalMode"),u=async s=>{var i,u;let d=async({previousCacheEntry:n})=>{try{if(!l&&P&&S&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await o(s);e.fetchMetrics=M.renderOpts.fetchMetrics;let i=M.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let u=M.renderOpts.collectedTags;if(!k)return await (0,h.sendResponse)(K,L,a,M.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(a.headers);u&&(t[m.NEXT_CACHE_TAGS_HEADER]=u),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==M.renderOpts.collectedRevalidate&&!(M.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&M.renderOpts.collectedRevalidate,n=void 0===M.renderOpts.collectedExpire||M.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:M.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await C.onRequestError(e,t,{routerKind:"App Router",routePath:a,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:P})},!1,b),t}},c=await C.handleResponse({req:e,nextConfig:N,cacheKey:$,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:S,responseGenerator:d,waitUntil:r.waitUntil,isMinimalMode:l});if(!k)return null;if((null==c||null==(i=c.value)?void 0:i.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(u=c.value)?void 0:u.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});l||t.setHeader("x-nextjs-cache",P?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),j&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let f=(0,g.fromNodeOutgoingHttpHeaders)(c.value.headers);return l&&k||f.delete(m.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||f.get("Cache-Control")||f.set("Cache-Control",(0,R.getCacheControlHeader)(c.cacheControl)),await (0,h.sendResponse)(K,L,new Response(c.value.body,{headers:f,status:c.value.status||200})),null};J?await u(J):await U.withPropagatedContext(e.headers,()=>U.trace(f.BaseServerSpan.handleRequest,{spanName:`${H} ${a}`,kind:i.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},u))}catch(t){if(t instanceof x.NoFallbackError||await C.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:P})},!1,b),k)throw t;return await (0,h.sendResponse)(K,L,new Response(null,{status:500})),null}}e.s(["handler",()=>E,"patchFetch",()=>N,"routeModule",()=>C,"serverHooks",()=>b,"workAsyncStorage",()=>j,"workUnitAsyncStorage",()=>A]),r()}catch(e){r(e)}},!1)];
|
|
1
|
+
module.exports=[314251,e=>e.a(async(t,r)=>{try{var a=e.i(745015),n=e.i(89171),o=e.i(924868),s=e.i(814747),i=e.i(266240),l=e.i(256770),u=e.i(676088),d=e.i(200392),c=e.i(195975),f=t([u,d]);[u,d]=f.then?(await f)():f;let x=s.default.join((0,l.resolveDataDir)(),"codex-profiles");async function p(){return await o.default.mkdir(x,{recursive:!0}),x}async function h(){try{let e;await p();try{e=await o.default.readdir(x)}catch{return n.NextResponse.json({profiles:[]})}let t=e.filter(e=>e.endsWith(".json")),r=[];for(let e of t)try{let t=await o.default.readFile(s.default.join(x,e),"utf-8"),a=JSON.parse(t);r.push({id:e.replace(".json",""),name:a.name,authLabel:a.authLabel||"unknown",createdAt:a.createdAt,hasConfig:!!a.configToml,hasAuth:!!a.authJson})}catch{}return r.sort((e,t)=>e.name.localeCompare(t.name)),n.NextResponse.json({profiles:r})}catch(e){return console.log("Error listing codex profiles:",e.message),n.NextResponse.json({error:"Failed to list profiles"},{status:500})}}async function g(e){let t;try{t=await e.json()}catch{return n.NextResponse.json({error:{message:"Invalid request",details:[{field:"body",message:"Invalid JSON body"}]}},{status:400})}try{let e=(0,i.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});let r=(0,d.validateBody)(u.codexProfileNameSchema,t);if((0,d.isValidationFailure)(r))return n.NextResponse.json({error:r.error},{status:400});let{name:a}=r.data,l=(0,i.getCliConfigPaths)("codex");if(!l)return n.NextResponse.json({error:"Codex config paths not found"},{status:500});let c=null,f=null;try{c=await o.default.readFile(l.config,"utf-8")}catch{}try{f=await o.default.readFile(l.auth,"utf-8")}catch{}if(!c&&!f)return n.NextResponse.json({error:"No Codex configuration files found to save"},{status:400});let h=a.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,""),g={name:a.trim(),createdAt:new Date().toISOString(),authLabel:f?function(e){try{let t=JSON.parse(e);if(t.tokens?.id_token){let e=t.tokens.id_token.split(".")[1],r=JSON.parse(Buffer.from(e,"base64").toString());if(r.email)return r.email}if(t.auth_mode)return t.auth_mode;if(t.OPENAI_API_KEY)return`API Key: ${t.OPENAI_API_KEY.slice(0,8)}...`;return"unknown"}catch{return"unknown"}}(f):"no-auth",configToml:c,authJson:f};await p();let R=s.default.join(x,`${h}.json`);return await o.default.writeFile(R,JSON.stringify(g,null,2)),n.NextResponse.json({success:!0,message:`Profile "${a}" saved successfully`,profileId:h})}catch(e){return console.log("Error saving codex profile:",e.message),n.NextResponse.json({error:"Failed to save profile"},{status:500})}}async function R(t){let r;try{r=await t.json()}catch{return n.NextResponse.json({error:{message:"Invalid request",details:[{field:"body",message:"Invalid JSON body"}]}},{status:400})}try{let t,a=(0,i.ensureCliConfigWriteAllowed)();if(a)return n.NextResponse.json({error:a},{status:403});let l=(0,d.validateBody)(u.codexProfileIdSchema,r);if((0,d.isValidationFailure)(l))return n.NextResponse.json({error:l.error},{status:400});let{profileId:c}=l.data,f=s.default.join(x,`${c}.json`);try{let e=await o.default.readFile(f,"utf-8");t=JSON.parse(e)}catch{return n.NextResponse.json({error:`Profile "${c}" not found`},{status:404})}let p=(0,i.getCliConfigPaths)("codex");if(!p)return n.NextResponse.json({error:"Codex config paths not found"},{status:500});let{createMultiBackup:h}=await e.A(452484);return await h("codex",[p.config,p.auth]),await o.default.mkdir(s.default.dirname(p.config),{recursive:!0}),t.configToml&&await o.default.writeFile(p.config,t.configToml),t.authJson&&await o.default.writeFile(p.auth,t.authJson),n.NextResponse.json({success:!0,message:`Profile "${t.name}" activated`,profileId:c,restoredConfig:!!t.configToml,restoredAuth:!!t.authJson})}catch(e){return console.log("Error activating codex profile:",e.message),n.NextResponse.json({error:"Failed to activate profile"},{status:500})}}async function m(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,d.validateBody)(u.codexProfileIdSchema,t);if((0,d.isValidationFailure)(e))return n.NextResponse.json({error:e.error},{status:400});let{profileId:r}=e.data,a=s.default.join(x,`${r}.json`);try{await o.default.unlink(a)}catch(e){if("ENOENT"===e.code)return n.NextResponse.json({error:`Profile "${r}" not found`},{status:404});throw e}return n.NextResponse.json({success:!0,message:`Profile "${r}" deleted`})}catch(e){return console.log("Error deleting codex profile:",e.message),n.NextResponse.json({error:"Failed to delete profile"},{status:500})}}(0,c.ensureServerEntryExports)([h,g,R,m]),(0,a.registerServerReference)(h,"0024c12cce12a04ceb3f19ff0022bd19e518a87ff5",null),(0,a.registerServerReference)(g,"40b14730bac22288bd38e1985245a0b7535ed541e4",null),(0,a.registerServerReference)(R,"4071dbe030fda68c0306648707cc38afaf9b50559e",null),(0,a.registerServerReference)(m,"407bbcea350a5e2c9e79ac90936e587bf016a1a194",null),e.s(["DELETE",()=>m,"GET",()=>h,"POST",()=>g,"PUT",()=>R]),r()}catch(e){r(e)}},!1),57985,e=>e.a(async(t,r)=>{try{var a=e.i(747909),n=e.i(174017),o=e.i(996250),s=e.i(759756),i=e.i(561916),l=e.i(174677),u=e.i(869741),d=e.i(316795),c=e.i(487718),f=e.i(995169),p=e.i(47587),h=e.i(666012),g=e.i(570101),R=e.i(626937),m=e.i(10372),x=e.i(193695);e.i(52474);var v=e.i(600220),w=e.i(314251),y=t([w]);[w]=y.then?(await y)():y;let C=new a.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/cli-tools/codex-profiles/route",pathname:"/api/cli-tools/codex-profiles",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/cli-tools/codex-profiles/route.ts",nextConfigOutput:"standalone",userland:w}),{workAsyncStorage:b,workUnitAsyncStorage:j,serverHooks:A}=C;function N(){return(0,o.patchFetch)({workAsyncStorage:b,workUnitAsyncStorage:j})}async function E(e,t,r){C.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let a="/api/cli-tools/codex-profiles/route";a=a.replace(/\/index$/,"")||"/";let o=await C.prepare(e,t,{srcPage:a,multiZoneDraftMode:!1});if(!o)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:w,params:y,nextConfig:N,parsedUrl:E,isDraftMode:b,prerenderManifest:j,routerServerContext:A,isOnDemandRevalidate:P,revalidateOnlyGenerated:S,resolvedPathname:O,clientReferenceManifest:T,serverActionsManifest:I}=o,_=(0,u.normalizeAppPath)(a),k=!!(j.dynamicRoutes[_]||j.routes[O]),F=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,E,!1):t.end("This page could not be found"),null);if(k&&!b){let e=!!j.routes[O],t=j.dynamicRoutes[_];if(t&&!1===t.fallback&&!e){if(N.experimental.adapterPath)return await F();throw new x.NoFallbackError}}let $=null;!k||C.isDev||b||($=O,$="/index"===$?"/":$);let q=!0===C.isDev||!k,D=k&&!q;I&&T&&(0,l.setManifestsSingleton)({page:a,clientReferenceManifest:T,serverActionsManifest:I});let H=e.method||"GET",U=(0,i.getTracer)(),J=U.getActiveScopeSpan(),M={params:y,prerenderManifest:j,renderOpts:{experimental:{authInterrupts:!!N.experimental.authInterrupts},cacheComponents:!!N.cacheComponents,supportsDynamicResponse:q,incrementalCache:(0,s.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:N.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>C.onRequestError(e,t,a,n,A)},sharedContext:{buildId:w}},K=new d.NodeNextRequest(e),L=new d.NodeNextResponse(t),B=c.NextRequestAdapter.fromNodeNextRequest(K,(0,c.signalFromNodeResponse)(t));try{let o=async e=>C.handle(B,M).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=U.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==f.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${H} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${H} ${a}`)}),l=!!(0,s.getRequestMeta)(e,"minimalMode"),u=async s=>{var i,u;let d=async({previousCacheEntry:n})=>{try{if(!l&&P&&S&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await o(s);e.fetchMetrics=M.renderOpts.fetchMetrics;let i=M.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let u=M.renderOpts.collectedTags;if(!k)return await (0,h.sendResponse)(K,L,a,M.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(a.headers);u&&(t[m.NEXT_CACHE_TAGS_HEADER]=u),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==M.renderOpts.collectedRevalidate&&!(M.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&M.renderOpts.collectedRevalidate,n=void 0===M.renderOpts.collectedExpire||M.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:M.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await C.onRequestError(e,t,{routerKind:"App Router",routePath:a,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:P})},!1,A),t}},c=await C.handleResponse({req:e,nextConfig:N,cacheKey:$,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:j,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:S,responseGenerator:d,waitUntil:r.waitUntil,isMinimalMode:l});if(!k)return null;if((null==c||null==(i=c.value)?void 0:i.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(u=c.value)?void 0:u.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});l||t.setHeader("x-nextjs-cache",P?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let f=(0,g.fromNodeOutgoingHttpHeaders)(c.value.headers);return l&&k||f.delete(m.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||f.get("Cache-Control")||f.set("Cache-Control",(0,R.getCacheControlHeader)(c.cacheControl)),await (0,h.sendResponse)(K,L,new Response(c.value.body,{headers:f,status:c.value.status||200})),null};J?await u(J):await U.withPropagatedContext(e.headers,()=>U.trace(f.BaseServerSpan.handleRequest,{spanName:`${H} ${a}`,kind:i.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},u))}catch(t){if(t instanceof x.NoFallbackError||await C.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:P})},!1,A),k)throw t;return await (0,h.sendResponse)(K,L,new Response(null,{status:500})),null}}e.s(["handler",()=>E,"patchFetch",()=>N,"routeModule",()=>C,"serverHooks",()=>A,"workAsyncStorage",()=>b,"workUnitAsyncStorage",()=>j]),r()}catch(e){r(e)}},!1)];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_4b8fd853._.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),d=e.i(841788),u=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 w=o.default.join(s.default.homedir(),".local","share","kilo"),v=o.default.join(w,"auth.json");o.default.join(s.default.homedir(),".config","kilo");let C=async()=>{try{let e=await i.default.readFile(v,"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:v})}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(w,{recursive:!0}),await (0,d.createBackup)("kilo",v);let R={};try{let e=await i.default.readFile(v,"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(v,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,u.saveCliToolLastConfigured)("kilo")}catch{}return n.NextResponse.json({success:!0,message:"Kilo Code settings applied successfully!",authPath:v})}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",v);let t={};try{let e=await i.default.readFile(v,"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(v,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,h.ensureServerEntryExports)([m,R,y]),(0,r.registerServerReference)(m,"00ebc785d7abbea34fad9f0d18c755fa120ce4ac48",null),(0,r.registerServerReference)(R,"40104651406c53179f0ff6a9d41c58c90da4b7778a",null),(0,r.registerServerReference)(y,"000a7c51d8349a3bda1b918df99a86e051bd3a8bcb",null),e.s(["DELETE",()=>y,"GET",()=>m,"POST",()=>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),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(52474);var w=e.i(600220),v=e.i(114902),C=t([v]);[v]=C.then?(await C)():C;let k=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:v}),{workAsyncStorage:b,workUnitAsyncStorage:x,serverHooks:O}=k;function E(){return(0,i.patchFetch)({workAsyncStorage:b,workUnitAsyncStorage:x})}async function N(e,t,a){k.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let r="/api/cli-tools/kilo-settings/route";r=r.replace(/\/index$/,"")||"/";let i=await k.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:v,params:C,nextConfig:E,parsedUrl:N,isDraftMode:b,prerenderManifest:x,routerServerContext:O,isOnDemandRevalidate:S,revalidateOnlyGenerated:j,resolvedPathname:A,clientReferenceManifest:P,serverActionsManifest:T}=i,U=(0,d.normalizeAppPath)(r),F=!!(x.dynamicRoutes[U]||x.routes[A]),I=async()=>((null==O?void 0:O.render404)?await O.render404(e,t,N,!1):t.end("This page could not be found"),null);if(F&&!b){let e=!!x.routes[A],t=x.dynamicRoutes[U];if(t&&!1===t.fallback&&!e){if(E.experimental.adapterPath)return await I();throw new y.NoFallbackError}}let _=null;!F||k.isDev||b||(_=A,_="/index"===_?"/":_);let M=!0===k.isDev||!F,H=F&&!M;T&&P&&(0,l.setManifestsSingleton)({page:r,clientReferenceManifest:P,serverActionsManifest:T});let q=e.method||"GET",K=(0,s.getTracer)(),D=K.getActiveScopeSpan(),L={params:C,prerenderManifest:x,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:M,incrementalCache:(0,o.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:E.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>k.onRequestError(e,t,r,n,O)},sharedContext:{buildId:v}},J=new u.NodeNextRequest(e),$=new u.NodeNextResponse(t),B=c.NextRequestAdapter.fromNodeNextRequest(J,(0,c.signalFromNodeResponse)(t));try{let i=async e=>k.handle(B,L).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=`${q} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${q} ${r}`)}),l=!!(0,o.getRequestMeta)(e,"minimalMode"),d=async o=>{var s,d;let u=async({previousCacheEntry:n})=>{try{if(!l&&S&&j&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await i(o);e.fetchMetrics=L.renderOpts.fetchMetrics;let s=L.renderOpts.pendingWaitUntil;s&&a.waitUntil&&(a.waitUntil(s),s=void 0);let d=L.renderOpts.collectedTags;if(!F)return await (0,h.sendResponse)(J,$,r,L.renderOpts.pendingWaitUntil),null;{let e=await r.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(r.headers);d&&(t[R.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=R.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,n=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=R.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:w.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 k.onRequestError(e,t,{routerKind:"App Router",routePath:r,routeType:"route",revalidateReason:(0,f.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:S})},!1,O),t}},c=await k.handleResponse({req:e,nextConfig:E,cacheKey:_,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:x,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:j,responseGenerator:u,waitUntil:a.waitUntil,isMinimalMode:l});if(!F)return null;if((null==c||null==(s=c.value)?void 0:s.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(d=c.value)?void 0:d.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});l||t.setHeader("x-nextjs-cache",S?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,g.fromNodeOutgoingHttpHeaders)(c.value.headers);return l&&F||p.delete(R.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,m.getCacheControlHeader)(c.cacheControl)),await (0,h.sendResponse)(J,$,new Response(c.value.body,{headers:p,status:c.value.status||200})),null};D?await d(D):await K.withPropagatedContext(e.headers,()=>K.trace(p.BaseServerSpan.handleRequest,{spanName:`${q} ${r}`,kind:s.SpanKind.SERVER,attributes:{"http.method":q,"http.target":e.url}},d))}catch(t){if(t instanceof y.NoFallbackError||await k.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,f.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:S})},!1,O),F)throw t;return await (0,h.sendResponse)(J,$,new Response(null,{status:500})),null}}e.s(["handler",()=>N,"patchFetch",()=>E,"routeModule",()=>k,"serverHooks",()=>O,"workAsyncStorage",()=>b,"workUnitAsyncStorage",()=>x]),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 f=e.i(125852),h=e.i(195975),g=t([c,p]);[c,p]=g.then?(await g)():g;let w=o.default.join(s.default.homedir(),".local","share","kilo"),v=o.default.join(w,"auth.json");o.default.join(s.default.homedir(),".config","kilo");let C=async()=>{try{let e=await i.default.readFile(v,"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:v})}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(w,{recursive:!0}),await (0,d.createBackup)("kilo",v);let R={};try{let e=await i.default.readFile(v,"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(v,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,u.saveCliToolLastConfigured)("kilo")}catch{}return n.NextResponse.json({success:!0,message:"Kilo Code settings applied successfully!",authPath:v})}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",v);let t={};try{let e=await i.default.readFile(v,"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(v,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,h.ensureServerEntryExports)([m,R,y]),(0,r.registerServerReference)(m,"00052482c8f6f6e61cb7b87d8ff3ff3dacf2c55567",null),(0,r.registerServerReference)(R,"4007fe298a0948e56113d39e2dfde3618927f994cf",null),(0,r.registerServerReference)(y,"00b33ac82193d5b0af5d8a12f835e69b5f89ef3742",null),e.s(["DELETE",()=>y,"GET",()=>m,"POST",()=>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),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(52474);var w=e.i(600220),v=e.i(114902),C=t([v]);[v]=C.then?(await C)():C;let k=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:v}),{workAsyncStorage:b,workUnitAsyncStorage:x,serverHooks:O}=k;function E(){return(0,i.patchFetch)({workAsyncStorage:b,workUnitAsyncStorage:x})}async function N(e,t,a){k.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let r="/api/cli-tools/kilo-settings/route";r=r.replace(/\/index$/,"")||"/";let i=await k.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:v,params:C,nextConfig:E,parsedUrl:N,isDraftMode:b,prerenderManifest:x,routerServerContext:O,isOnDemandRevalidate:S,revalidateOnlyGenerated:j,resolvedPathname:A,clientReferenceManifest:P,serverActionsManifest:T}=i,U=(0,d.normalizeAppPath)(r),F=!!(x.dynamicRoutes[U]||x.routes[A]),I=async()=>((null==O?void 0:O.render404)?await O.render404(e,t,N,!1):t.end("This page could not be found"),null);if(F&&!b){let e=!!x.routes[A],t=x.dynamicRoutes[U];if(t&&!1===t.fallback&&!e){if(E.experimental.adapterPath)return await I();throw new y.NoFallbackError}}let _=null;!F||k.isDev||b||(_=A,_="/index"===_?"/":_);let M=!0===k.isDev||!F,H=F&&!M;T&&P&&(0,l.setManifestsSingleton)({page:r,clientReferenceManifest:P,serverActionsManifest:T});let q=e.method||"GET",K=(0,s.getTracer)(),D=K.getActiveScopeSpan(),L={params:C,prerenderManifest:x,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:M,incrementalCache:(0,o.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:E.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>k.onRequestError(e,t,r,n,O)},sharedContext:{buildId:v}},J=new u.NodeNextRequest(e),$=new u.NodeNextResponse(t),B=c.NextRequestAdapter.fromNodeNextRequest(J,(0,c.signalFromNodeResponse)(t));try{let i=async e=>k.handle(B,L).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=`${q} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${q} ${r}`)}),l=!!(0,o.getRequestMeta)(e,"minimalMode"),d=async o=>{var s,d;let u=async({previousCacheEntry:n})=>{try{if(!l&&S&&j&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await i(o);e.fetchMetrics=L.renderOpts.fetchMetrics;let s=L.renderOpts.pendingWaitUntil;s&&a.waitUntil&&(a.waitUntil(s),s=void 0);let d=L.renderOpts.collectedTags;if(!F)return await (0,h.sendResponse)(J,$,r,L.renderOpts.pendingWaitUntil),null;{let e=await r.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(r.headers);d&&(t[R.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=R.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,n=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=R.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:w.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 k.onRequestError(e,t,{routerKind:"App Router",routePath:r,routeType:"route",revalidateReason:(0,f.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:S})},!1,O),t}},c=await k.handleResponse({req:e,nextConfig:E,cacheKey:_,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:x,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:j,responseGenerator:u,waitUntil:a.waitUntil,isMinimalMode:l});if(!F)return null;if((null==c||null==(s=c.value)?void 0:s.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(d=c.value)?void 0:d.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});l||t.setHeader("x-nextjs-cache",S?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,g.fromNodeOutgoingHttpHeaders)(c.value.headers);return l&&F||p.delete(R.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,m.getCacheControlHeader)(c.cacheControl)),await (0,h.sendResponse)(J,$,new Response(c.value.body,{headers:p,status:c.value.status||200})),null};D?await d(D):await K.withPropagatedContext(e.headers,()=>K.trace(p.BaseServerSpan.handleRequest,{spanName:`${q} ${r}`,kind:s.SpanKind.SERVER,attributes:{"http.method":q,"http.target":e.url}},d))}catch(t){if(t instanceof y.NoFallbackError||await k.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,f.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:S})},!1,O),F)throw t;return await (0,h.sendResponse)(J,$,new Response(null,{status:500})),null}}e.s(["handler",()=>N,"patchFetch",()=>E,"routeModule",()=>k,"serverHooks",()=>O,"workAsyncStorage",()=>b,"workUnitAsyncStorage",()=>x]),a()}catch(e){a(e)}},!1)];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_68683848._.js.map
|
|
@@ -22,8 +22,8 @@ data: ${JSON.stringify({tokens_generated:s,elapsed_ms:Date.now()-a})}
|
|
|
22
22
|
`;try{t.enqueue(i.encode(e))}catch{clearInterval(o)}},e),n?.addEventListener("abort",()=>{clearInterval(o)},{once:!0})},transform(e,t){let n=("string"==typeof e?e:new TextDecoder().decode(e)).split("\n").filter(e=>e.startsWith("data: "));s+=n.length,t.enqueue(e)},flush(){if(clearInterval(o),r)try{let e=`event: progress
|
|
23
23
|
data: ${JSON.stringify({tokens_generated:s,elapsed_ms:Date.now()-a,done:!0})}
|
|
24
24
|
|
|
25
|
-
`;r.enqueue(i.encode(e))}catch{}}})}function n(e){return!!e&&"true"===("function"==typeof e.get?t=>e.get(t):t=>e[t])("x-omniroute-progress")}e.s(["createProgressTransform",()=>t,"wantsProgress",()=>n])},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"];function o(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))}function r(e,n){let o=t[e];if(!o)return null;for(let e of o)if(!n.has(e))return e;return null}e.s(["getNextFamilyFallback",()=>r,"isModelUnavailableError",()=>o])},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};function n(e,o,r,s=t){if(!s.enabled)return{shouldFallback:!1,reason:"emergency fallback disabled"};if(s.skipForToolRequests&&r)return{shouldFallback:!1,reason:"skipped: request has tools"};if(s.triggerOn402&&402===e)return{shouldFallback:!0,reason:`HTTP 402 → emergency fallback to ${s.provider}/${s.model}`,provider:s.provider,model:s.model,maxOutputTokens:s.maxOutputTokens};if(s.triggerOnBudgetKeywords&&o){let e=o.toLowerCase(),t=s.budgetKeywords.find(t=>e.includes(t.toLowerCase()));if(t)return{shouldFallback:!0,reason:`Budget error detected ('${t}') → emergency fallback to ${s.provider}/${s.model}`,provider:s.provider,model:s.model,maxOutputTokens:s.maxOutputTokens}}return{shouldFallback:!1,reason:"no budget error detected"}}function o(e){return!0===e.shouldFallback}e.s(["EMERGENCY_FALLBACK_CONFIG",0,t,"isFallbackDecision",()=>o,"shouldUseFallback",()=>n])},786022,e=>{"use strict";function t(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)}function n(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}e.s(["resolveStreamFlag",()=>t,"stripMarkdownCodeFence",()=>n])},577122,e=>{"use strict";var t=e.i(478500),n=e.i(254799);function o(){return(0,n.randomUUID)()}new t.AsyncLocalStorage,e.s(["generateRequestId",()=>o])},284948,e=>e.a(async(t,n)=>{try{var o=e.i(731664),r=e.i(85713),s=e.i(352812),a=e.i(496727),i=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);e.i(312125);var S=e.i(400722),E=e.i(397506),R=e.i(239409),v=e.i(362225),b=e.i(15844),C=e.i(578383);e.i(245272);var w=e.i(186920),O=e.i(6751),I=e.i(593404),x=e.i(843303),$=e.i(69373),P=e.i(803285),N=e.i(725538),U=e.i(423525),D=e.i(581631),M=e.i(20870),F=e.i(511695),L=e.i(289130),j=e.i(537981),q=e.i(578172),B=e.i(951700),H=e.i(464142),K=e.i(167389),G=e.i(786022),V=e.i(577122),W=e.i(764162),Y=t([O]);function J(e){return"number"==typeof e&&Number.isFinite(e)&&e>0?e:0}function z(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=J(e.cache_read_input_tokens??e.cached_tokens??t?.cached_tokens),r=J(e.cache_creation_input_tokens??t?.cache_creation_tokens);return n?{cacheReadTokens:o,cacheCreationTokens:r}:null}function Q(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}}}async function X({body:t,modelInfo:n,credentials:Y,log:X,onCredentialsRefreshed:Z,onRequestSuccess:ee,onDisconnect:et,clientRawRequest:en,connectionId:eo,apiKeyInfo:er=null,userAgent:es,comboName:ea,comboStrategy:ei=null,isCombo:el=!1}){let ec,eu,ed,ep,eg,ef,{provider:em,model:eh,extendedContext:e_}=n,ey="string"==typeof t?.model&&t.model.trim().length>0?t.model:eh,eA=Date.now(),eT=(e,t)=>{(0,S.saveRequestUsage)({provider:em||"unknown",model:eh||"unknown",tokens:{input:0,output:0,cacheRead:0,cacheCreation:0,reasoning:0},status:String(e),success:!1,latencyMs:Date.now()-eA,timeToFirstTokenMs:0,errorCode:t||String(e),timestamp:new Date().toISOString(),connectionId:eo||void 0,apiKeyId:er?.id||void 0,apiKeyName:er?.name||void 0}).catch(()=>{})},ek=async(e,t=0)=>{if("codex"===em&&eo&&e)try{let n=(0,$.parseCodexQuotaHeaders)(e);if(!n)return;let o=Y?.providerSpecificData&&"object"==typeof Y.providerSpecificData?Y.providerSpecificData:{},r=(0,$.getCodexModelScope)(eh||ey||""),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()},a={...o,codexQuotaState:s};if(429===t){let e=(0,$.getCodexResetTime)(n);if(e&&e>Date.now()){let t=new Date(e).toISOString();a.codexScopeRateLimitedUntil={...o&&"object"==typeof o&&o.codexScopeRateLimitedUntil&&"object"==typeof o.codexScopeRateLimitedUntil?o.codexScopeRateLimitedUntil:{},[r]:t}}}await (0,y.updateProviderConnection)(eo,{providerSpecificData:a}),Y.providerSpecificData=a}catch(t){let e=t instanceof Error?t.message:String(t);X?.debug?.("CODEX",`Failed to persist codex quota state: ${e}`)}},eS=(0,L.getIdempotencyKey)(en?.headers),eE=(0,L.checkIdempotency)(eS);if(eE)return X?.debug?.("IDEMPOTENCY",`Hit for key=${eS?.slice(0,12)}...`),{success:!0,response:new Response(JSON.stringify(eE.response),{status:eE.status,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":(0,o.getCorsOrigin)(),"X-OmniRoute-Idempotent":"true"}})};await (0,M.initializeRateLimits)(),eo&&Y&&!Y.connectionId&&(Y.connectionId=eo);let eR=String(en?.endpoint||""),ev=(0,r.detectFormatFromEndpoint)(t,eR),eb=/\/responses(?=\/|$)/i.test(eR)||/^responses(?=\/|$)/i.test(eR),eC=function({provider:e,sourceFormat:t,endpointPath:n}){return"codex"===e&&t===a.FORMATS.OPENAI_RESPONSES&&String(n||"").replace(/\/+$/,"").split("/").includes("responses")}({provider:em,sourceFormat:ev,endpointPath:eR}),ew=(0,k.handleBypassRequest)(t,eh,es);if(ew)return ew;let eO=(0,H.getBackgroundDegradationConfig)().enabled?(0,H.getBackgroundTaskReason)(t,en?.headers):null;if(eO){let e=(0,H.getDegradedModel)(eh);if(e!==eh){let n=eh;X?.info?.("BACKGROUND",`Background task redirect (${eO}): ${n} → ${e}`),eh=e,t&&"object"==typeof t&&(t.model=eh),(0,T.logAuditEvent)({action:"routing.background_task_redirect",actor:er?.name||"system",target:eo||em||"chat",details:{original_model:n,redirected_to:e,reason:eO}})}}let eI=(0,g.resolveModelAlias)(eh),ex=eI!==eh?eI:eh;eI!==eh&&X?.info?.("ALIAS",`Model alias applied: ${eh} → ${eI}`);let e$=p.PROVIDER_ID_TO_ALIAS[em]||em,eP=(0,p.getModelTargetFormat)(e$,eI)||(0,r.getTargetFormat)(em),eN=er?.noLog===!0,eU=!eN&&await (0,A.isDetailedLoggingEnabled)(),eD=({status:e,tokens:n,responseBody:o,error:r,providerRequest:s,providerResponse:a,clientResponse:i,claudeCacheMeta:l,claudeCacheUsageMeta:c})=>{let u=(0,V.generateRequestId)();if((0,E.saveCallLog)({id:u,method:"POST",path:en?.endpoint||"/v1/chat/completions",status:e,model:eh,requestedModel:ey,provider:em,connectionId:eo,duration:Date.now()-eA,tokens:n||{},requestBody:Q(t??void 0,{claudePromptCache:l}),responseBody:Q(o??void 0,{claudePromptCache:l?{applied:l.applied,totalBreakpoints:l.totalBreakpoints,anthropicBeta:l.anthropicBeta}:null,claudePromptCacheUsage:c}),error:r||null,sourceFormat:ev,targetFormat:eP,comboName:ea,apiKeyId:er?.id||null,apiKeyName:er?.name||null,noLog:eN}).catch(()=>{}),eU)try{(0,A.saveRequestDetailLog)({call_log_id:u,client_request:en?.body??t,translated_request:s??null,provider_response:a??null,client_response:i??null,provider:em,model:eh,source_format:ev,target_format:eP,duration_ms:Date.now()-eA,api_key_id:er?.id||null,no_log:eN})}catch(t){let e=t instanceof Error?t.message:String(t);X?.debug?.("DETAIL_LOG",`Failed to save detailed log: ${e}`)}},eM=e=>{if(e===ex)return{...(0,w.getModelUpstreamExtraHeaders)(em||"",eh||"",ev),...(0,w.getModelUpstreamExtraHeaders)(em||"",eI||"",ev)};let t=(0,g.resolveModelAlias)(e);return{...(0,w.getModelUpstreamExtraHeaders)(em||"",e||"",ev),...(0,w.getModelUpstreamExtraHeaders)(em||"",t||"",ev)}},eF=en?.headers&&"function"==typeof en.headers.get?en.headers.get("accept")||en.headers.get("Accept"):(en?.headers||{}).accept||(en?.headers||{}).Accept,eL=(0,G.resolveStreamFlag)(t?.stream,eF);if((0,F.isCacheable)(t,en?.headers)){let e=(0,F.generateSignature)(eh,t.messages,t.temperature,t.top_p),n=(0,F.getCachedResponse)(e);if(n)return X?.debug?.("CACHE",`Semantic cache HIT for ${eh}`),{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 ej=await (0,d.createRequestLogger)(ev,eP,eh);en&&ej.logClientRawRequest(en.endpoint,en.body,en.headers),ej.logRawRequest(t),X?.debug?.("FORMAT",`${ev} → ${eP} | stream=${eL}`),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}));let eq=t,eB=ev===a.FORMATS.CLAUDE&&eP===a.FORMATS.CLAUDE,eH=await (0,I.getCacheControlSettings)().catch(()=>"auto"),eK=(0,x.shouldPreserveCacheControl)({userAgent:es,isCombo:el,comboStrategy:ei,targetProvider:em,settings:{alwaysPreserveClientCache:eH}});eK&&X?.debug?.("CACHE",`Preserving client cache_control (client=${es?.substring(0,20)}, combo=${el}, strategy=${ei}, provider=${em})`);try{if(eC)eq={...t,_nativeCodexPassthrough:!0},X?.debug?.("FORMAT","native codex passthrough enabled");else if(eB){let e=(0,w.getModelNormalizeToolCallId)(em||"",eh||"",ev),n=(0,w.getModelPreserveOpenAIDeveloperRole)(em||"",eh||"",ev);eq=(0,s.translateRequest)(a.FORMATS.CLAUDE,a.FORMATS.OPENAI,eh,{...t},eL,Y,em,ej,{normalizeToolCallId:e,preserveDeveloperRole:n,preserveCacheControl:eK}),eq=(0,s.translateRequest)(a.FORMATS.OPENAI,a.FORMATS.CLAUDE,eh,{...eq,_disableToolPrefix:!0},eL,Y,em,ej,{normalizeToolCallId:e,preserveDeveloperRole:n,preserveCacheControl:eK}),X?.debug?.("FORMAT","claude->openai->claude normalized passthrough")}else{if(eq={...t},eP===a.FORMATS.CLAUDE&&(eq._disableToolPrefix=!0),Array.isArray(eq.messages))for(let e of eq.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(eq.messages))for(let e of eq.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}]
|
|
25
|
+
`;r.enqueue(i.encode(e))}catch{}}})}function n(e){return!!e&&"true"===("function"==typeof e.get?t=>e.get(t):t=>e[t])("x-omniroute-progress")}e.s(["createProgressTransform",()=>t,"wantsProgress",()=>n])},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"];function o(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))}function r(e,n){let o=t[e];if(!o)return null;for(let e of o)if(!n.has(e))return e;return null}e.s(["getNextFamilyFallback",()=>r,"isModelUnavailableError",()=>o])},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};function n(e,o,r,s=t){if(!s.enabled)return{shouldFallback:!1,reason:"emergency fallback disabled"};if(s.skipForToolRequests&&r)return{shouldFallback:!1,reason:"skipped: request has tools"};if(s.triggerOn402&&402===e)return{shouldFallback:!0,reason:`HTTP 402 → emergency fallback to ${s.provider}/${s.model}`,provider:s.provider,model:s.model,maxOutputTokens:s.maxOutputTokens};if(s.triggerOnBudgetKeywords&&o){let e=o.toLowerCase(),t=s.budgetKeywords.find(t=>e.includes(t.toLowerCase()));if(t)return{shouldFallback:!0,reason:`Budget error detected ('${t}') → emergency fallback to ${s.provider}/${s.model}`,provider:s.provider,model:s.model,maxOutputTokens:s.maxOutputTokens}}return{shouldFallback:!1,reason:"no budget error detected"}}function o(e){return!0===e.shouldFallback}e.s(["EMERGENCY_FALLBACK_CONFIG",0,t,"isFallbackDecision",()=>o,"shouldUseFallback",()=>n])},786022,e=>{"use strict";function t(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)}function n(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}e.s(["resolveStreamFlag",()=>t,"stripMarkdownCodeFence",()=>n])},577122,e=>{"use strict";var t=e.i(478500),n=e.i(254799);function o(){return(0,n.randomUUID)()}new t.AsyncLocalStorage,e.s(["generateRequestId",()=>o])},284948,e=>e.a(async(t,n)=>{try{var o=e.i(731664),r=e.i(85713),s=e.i(352812),a=e.i(496727),i=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);e.i(312125);var S=e.i(400722),E=e.i(397506),R=e.i(239409),v=e.i(362225),b=e.i(15844),C=e.i(578383);e.i(245272);var w=e.i(186920),O=e.i(6751),I=e.i(593404),x=e.i(843303),$=e.i(69373),P=e.i(803285),N=e.i(725538),U=e.i(423525),D=e.i(581631),M=e.i(20870),F=e.i(511695),L=e.i(289130),j=e.i(537981),q=e.i(578172),B=e.i(951700),H=e.i(464142),K=e.i(167389),G=e.i(786022),W=e.i(577122),V=e.i(764162),Y=t([O]);function J(e){return"number"==typeof e&&Number.isFinite(e)&&e>0?e:0}function z(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=J(e.cache_read_input_tokens??e.cached_tokens??t?.cached_tokens),r=J(e.cache_creation_input_tokens??t?.cache_creation_tokens);return n?{cacheReadTokens:o,cacheCreationTokens:r}:null}function Q(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}}}async function X({body:t,modelInfo:n,credentials:Y,log:X,onCredentialsRefreshed:Z,onRequestSuccess:ee,onDisconnect:et,clientRawRequest:en,connectionId:eo,apiKeyInfo:er=null,userAgent:es,comboName:ea,comboStrategy:ei=null,isCombo:el=!1}){let ec,eu,ed,ep,eg,ef,{provider:em,model:eh,extendedContext:e_}=n,ey="string"==typeof t?.model&&t.model.trim().length>0?t.model:eh,eA=Date.now(),eT=(e,t)=>{(0,S.saveRequestUsage)({provider:em||"unknown",model:eh||"unknown",tokens:{input:0,output:0,cacheRead:0,cacheCreation:0,reasoning:0},status:String(e),success:!1,latencyMs:Date.now()-eA,timeToFirstTokenMs:0,errorCode:t||String(e),timestamp:new Date().toISOString(),connectionId:eo||void 0,apiKeyId:er?.id||void 0,apiKeyName:er?.name||void 0}).catch(()=>{})},ek=async(e,t=0)=>{if("codex"===em&&eo&&e)try{let n=(0,$.parseCodexQuotaHeaders)(e);if(!n)return;let o=Y?.providerSpecificData&&"object"==typeof Y.providerSpecificData?Y.providerSpecificData:{},r=(0,$.getCodexModelScope)(eh||ey||""),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()},a={...o,codexQuotaState:s};if(429===t){let e=(0,$.getCodexResetTime)(n);if(e&&e>Date.now()){let t=new Date(e).toISOString();a.codexScopeRateLimitedUntil={...o&&"object"==typeof o&&o.codexScopeRateLimitedUntil&&"object"==typeof o.codexScopeRateLimitedUntil?o.codexScopeRateLimitedUntil:{},[r]:t}}}await (0,y.updateProviderConnection)(eo,{providerSpecificData:a}),Y.providerSpecificData=a}catch(t){let e=t instanceof Error?t.message:String(t);X?.debug?.("CODEX",`Failed to persist codex quota state: ${e}`)}},eS=(0,L.getIdempotencyKey)(en?.headers),eE=(0,L.checkIdempotency)(eS);if(eE)return X?.debug?.("IDEMPOTENCY",`Hit for key=${eS?.slice(0,12)}...`),{success:!0,response:new Response(JSON.stringify(eE.response),{status:eE.status,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":(0,o.getCorsOrigin)(),"X-OmniRoute-Idempotent":"true"}})};await (0,M.initializeRateLimits)(),eo&&Y&&!Y.connectionId&&(Y.connectionId=eo);let eR=String(en?.endpoint||""),ev=(0,r.detectFormatFromEndpoint)(t,eR),eb=/\/responses(?=\/|$)/i.test(eR)||/^responses(?=\/|$)/i.test(eR),eC=function({provider:e,sourceFormat:t,endpointPath:n}){return"codex"===e&&t===a.FORMATS.OPENAI_RESPONSES&&String(n||"").replace(/\/+$/,"").split("/").includes("responses")}({provider:em,sourceFormat:ev,endpointPath:eR}),ew=(0,k.handleBypassRequest)(t,eh,es);if(ew)return ew;let eO=(0,H.getBackgroundDegradationConfig)().enabled?(0,H.getBackgroundTaskReason)(t,en?.headers):null;if(eO){let e=(0,H.getDegradedModel)(eh);if(e!==eh){let n=eh;X?.info?.("BACKGROUND",`Background task redirect (${eO}): ${n} → ${e}`),eh=e,t&&"object"==typeof t&&(t.model=eh),(0,T.logAuditEvent)({action:"routing.background_task_redirect",actor:er?.name||"system",target:eo||em||"chat",details:{original_model:n,redirected_to:e,reason:eO}})}}let eI=(0,g.resolveModelAlias)(eh),ex=eI!==eh?eI:eh;eI!==eh&&X?.info?.("ALIAS",`Model alias applied: ${eh} → ${eI}`);let e$=p.PROVIDER_ID_TO_ALIAS[em]||em,eP=(0,p.getModelTargetFormat)(e$,eI)||(0,r.getTargetFormat)(em),eN=er?.noLog===!0,eU=!eN&&await (0,A.isDetailedLoggingEnabled)(),eD=({status:e,tokens:n,responseBody:o,error:r,providerRequest:s,providerResponse:a,clientResponse:i,claudeCacheMeta:l,claudeCacheUsageMeta:c})=>{let u=(0,W.generateRequestId)();if((0,E.saveCallLog)({id:u,method:"POST",path:en?.endpoint||"/v1/chat/completions",status:e,model:eh,requestedModel:ey,provider:em,connectionId:eo,duration:Date.now()-eA,tokens:n||{},requestBody:Q(t??void 0,{claudePromptCache:l}),responseBody:Q(o??void 0,{claudePromptCache:l?{applied:l.applied,totalBreakpoints:l.totalBreakpoints,anthropicBeta:l.anthropicBeta}:null,claudePromptCacheUsage:c}),error:r||null,sourceFormat:ev,targetFormat:eP,comboName:ea,apiKeyId:er?.id||null,apiKeyName:er?.name||null,noLog:eN}).catch(()=>{}),eU)try{(0,A.saveRequestDetailLog)({call_log_id:u,client_request:en?.body??t,translated_request:s??null,provider_response:a??null,client_response:i??null,provider:em,model:eh,source_format:ev,target_format:eP,duration_ms:Date.now()-eA,api_key_id:er?.id||null,no_log:eN})}catch(t){let e=t instanceof Error?t.message:String(t);X?.debug?.("DETAIL_LOG",`Failed to save detailed log: ${e}`)}},eM=e=>{if(e===ex)return{...(0,w.getModelUpstreamExtraHeaders)(em||"",eh||"",ev),...(0,w.getModelUpstreamExtraHeaders)(em||"",eI||"",ev)};let t=(0,g.resolveModelAlias)(e);return{...(0,w.getModelUpstreamExtraHeaders)(em||"",e||"",ev),...(0,w.getModelUpstreamExtraHeaders)(em||"",t||"",ev)}},eF=en?.headers&&"function"==typeof en.headers.get?en.headers.get("accept")||en.headers.get("Accept"):(en?.headers||{}).accept||(en?.headers||{}).Accept,eL=(0,G.resolveStreamFlag)(t?.stream,eF);if((0,F.isCacheable)(t,en?.headers)){let e=(0,F.generateSignature)(eh,t.messages,t.temperature,t.top_p),n=(0,F.getCachedResponse)(e);if(n)return X?.debug?.("CACHE",`Semantic cache HIT for ${eh}`),{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 ej=await (0,d.createRequestLogger)(ev,eP,eh);en&&ej.logClientRawRequest(en.endpoint,en.body,en.headers),ej.logRawRequest(t),X?.debug?.("FORMAT",`${ev} → ${eP} | stream=${eL}`),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}));let eq=t,eB=ev===a.FORMATS.CLAUDE&&eP===a.FORMATS.CLAUDE,eH=await (0,I.getCacheControlSettings)().catch(()=>"auto"),eK=(0,x.shouldPreserveCacheControl)({userAgent:es,isCombo:el,comboStrategy:ei,targetProvider:em,settings:{alwaysPreserveClientCache:eH}});eK&&X?.debug?.("CACHE",`Preserving client cache_control (client=${es?.substring(0,20)}, combo=${el}, strategy=${ei}, provider=${em})`);try{if(eC)eq={...t,_nativeCodexPassthrough:!0},X?.debug?.("FORMAT","native codex passthrough enabled");else if(eB){let e=(0,w.getModelNormalizeToolCallId)(em||"",eh||"",ev),n=(0,w.getModelPreserveOpenAIDeveloperRole)(em||"",eh||"",ev);eq=(0,s.translateRequest)(a.FORMATS.CLAUDE,a.FORMATS.OPENAI,eh,{...t},eL,Y,em,ej,{normalizeToolCallId:e,preserveDeveloperRole:n,preserveCacheControl:eK}),eq=(0,s.translateRequest)(a.FORMATS.OPENAI,a.FORMATS.CLAUDE,eh,{...eq,_disableToolPrefix:!0},eL,Y,em,ej,{normalizeToolCallId:e,preserveDeveloperRole:n,preserveCacheControl:eK}),X?.debug?.("FORMAT","claude->openai->claude normalized passthrough")}else{if(eq={...t},eP===a.FORMATS.CLAUDE&&(eq._disableToolPrefix=!0),Array.isArray(eq.messages))for(let e of eq.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(eq.messages))for(let e of eq.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)(em||"",eh||"",ev),n=(0,w.getModelPreserveOpenAIDeveloperRole)(em||"",eh||"",ev);eq=(0,s.translateRequest)(ev,eP,eh,eq,eL,Y,em,ej,{normalizeToolCallId:e,preserveDeveloperRole:n,preserveCacheControl:eK})}}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 eG=eq._toolNameMap,eV=eB?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(`${C.CLAUDE_OAUTH_TOOL_PREFIX}${o}`,o)}return t.size>0?t:null}(t):null,eW=eG instanceof Map&&eG.size>0?eG:eV;delete eq._toolNameMap,delete eq._disableToolPrefix,eq.model=ex;let eY=(0,f.getUnsupportedParams)(em,eh);if(eY.length>0){let e=[];for(let t of eY)Object.hasOwn(eq,t)&&(e.push(t),delete eq[t]);e.length>0&&X?.warn?.("PARAMS",`Stripped unsupported params for ${eh}: ${e.join(", ")}`)}let eJ=h.PROVIDER_MAX_TOKENS[em];if(eJ)for(let e of["max_tokens","max_completion_tokens"])"number"==typeof eq[e]&&eq[e]>eJ&&(X?.debug?.("PARAMS",`Capping ${e} from ${eq[e]} to ${eJ} for ${em}`),eq[e]=eJ);let ez=(0,O.getExecutor)(em),eQ=()=>eC?{...Y,requestEndpointPath:eR}:Y,eX=(0,c.createStreamController)({onDisconnect:et,log:X,provider:em,model:eh}),eZ={...eq,model:`${em}/${eh}`},e0=(0,B.shouldDeduplicate)(eZ),e1=e0?(0,B.computeRequestHash)(eZ):null,e2=async(t=ex,n=!1)=>{let o=async()=>{let n=eq.model===t?eq:{...eq,model:t};if(eP===a.FORMATS.OPENAI&&!n.prompt_cache_key&&Array.isArray(n.messages)){let{generatePromptCacheKey:t}=await e.A(828068),o=t(n.messages);o&&(n={...n,prompt_cache_key:o})}let o=await (0,M.withRateLimit)(em,eo,t,()=>ez.execute({model:t,body:n,stream:eL,credentials:eQ(),signal:eX.signal,log:X,extendedContext:e_,upstreamExtraHeaders:eM(t)}));if(eL)return o;let r=o.response.status,s=o.response.statusText,i=Array.from(o.response.headers.entries()),l=await o.response.text();return{...o,response:new Response(l,{status:r,statusText:s,headers:i})}};if(n&&e0&&e1){let e=await (0,B.deduplicate)(e1,o);return e.wasDeduplicated&&X?.debug?.("DEDUP",`Joined in-flight request hash=${e1}`),e.result}return o()};(0,S.trackPendingRequest)(eh,em,eo,!0);let e5=new Set([ex]),e3=ex;(0,S.appendRequestLog)({model:eh,provider:em,connectionId:eo,status:"PENDING"}).catch(()=>{});let e4=eq.messages?.length||eq.contents?.length||eq.request?.contents?.length||0;X?.debug?.("REQUEST",`${em.toUpperCase()} | ${eh} | ${e4} msgs`);let e9=null;try{let e=await e2(ex,!0);ec=e.response,eu=e.url,ed=e.headers,ep=e.transformedBody,e9=function(e,t,n){if(e!==a.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})]:[]}):[],i=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+i.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:i}:null}(eP,ep,ed),ej.logTargetRequest(eu,ed,ep),(0,M.updateFromHeaders)(em,eo,ec.headers,ec.status,eh)}catch(n){(0,S.trackPendingRequest)(eh,em,eo,!1);let e="AbortError"===n.name?499:h.HTTP_STATUS.BAD_GATEWAY,t="AbortError"===n.name?"Request aborted":(0,m.formatProviderError)(n,em,eh,h.HTTP_STATUS.BAD_GATEWAY);if((0,S.appendRequestLog)({model:eh,provider:em,connectionId:eo,status:`FAILED ${e}`}).catch(()=>{}),eD({status:e,error:t,providerRequest:ep||eq,clientResponse:(0,m.buildErrorBody)(e,t),claudeCacheMeta:e9}),"AbortError"===n.name)return eX.handleError(n),(0,m.createErrorResult)(499,"Request aborted");return eT(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(ec.status===h.HTTP_STATUS.UNAUTHORIZED||ec.status===h.HTTP_STATUS.FORBIDDEN){let e=await (0,u.refreshWithRetry)(()=>ez.refreshCredentials(Y,X),3,X);if(e?.accessToken||e?.copilotToken){X?.info?.("TOKEN",`${em.toUpperCase()} | refreshed`),Object.assign(Y,e),Z&&e&&await Z(e);try{let e=String(eq.model||ex),t=await ez.execute({model:e,body:eq,stream:eL,credentials:eQ(),signal:eX.signal,log:X,extendedContext:e_,upstreamExtraHeaders:eM(e)});t.response.ok&&(ec=t.response,eu=t.url,ed=t.headers,ep=t.transformedBody,ej.logTargetRequest(eu,ed,ep))}catch{X?.warn?.("TOKEN",`${em.toUpperCase()} | retry after refresh failed`)}}else X?.warn?.("TOKEN",`${em.toUpperCase()} | refresh failed`)}if(await ek(ec.headers,ec.status),!ec.ok){(0,S.trackPendingRequest)(eh,em,eo,!1);let{statusCode:e,message:t,retryAfterMs:n,responseBody:o}=await (0,m.parseUpstreamError)(ec,em),r=(0,_.classifyProviderError)(e,t);if(eo&&r)try{r===_.PROVIDER_ERROR_TYPES.FORBIDDEN?(await (0,y.updateProviderConnection)(eo,{isActive:!1,testStatus:"banned",lastErrorType:r,lastError:t,errorCode:e}),console.warn(`[provider] Node ${eo} banned (${e}) — disabling permanently`)):r===_.PROVIDER_ERROR_TYPES.QUOTA_EXHAUSTED?(await (0,y.updateProviderConnection)(eo,{testStatus:"credits_exhausted",lastErrorType:r,lastError:t,errorCode:e}),console.warn(`[provider] Node ${eo} exhausted quota (${e})`)):r===_.PROVIDER_ERROR_TYPES.ACCOUNT_DEACTIVATED?(await (0,y.updateProviderConnection)(eo,{isActive:!1,testStatus:"expired",lastErrorType:r,lastError:t,errorCode:e}),console.warn(`[provider] Node ${eo} account deactivated (${e}) — marked expired`)):r===_.PROVIDER_ERROR_TYPES.UNAUTHORIZED&&await (0,y.updateProviderConnection)(eo,{lastErrorType:r,lastError:t,errorCode:e})}catch{}(0,S.appendRequestLog)({model:eh,provider:em,connectionId:eo,status:`FAILED ${e}`}).catch(()=>{});let s=(0,m.formatProviderError)(Error(t),em,eh,e);if(console.log(`${l.COLORS.red}[ERROR] ${s}${l.COLORS.reset}`),n&&"antigravity"===em){let e=Math.ceil(n/1e3);X?.debug?.("RETRY",`Antigravity quota reset in ${e}s (${n}ms)`)}if(ej.logError(Error(t),ep||eq),ej.logProviderResponse(ec.status,ec.statusText,ec.headers,o),(0,M.updateFromHeaders)(em,eo,ec.headers,e,eh),!(0,q.isModelUnavailableError)(e,t))return eD({status:e,error:s,providerRequest:ep||eq,providerResponse:o,clientResponse:(0,m.buildErrorBody)(e,s)}),eT(e,`upstream_${e}`),(0,m.createErrorResult)(e,s,n);{let t=(0,q.getNextFamilyFallback)(e3,e5);if(!t)return eD({status:e,error:s,providerRequest:ep||eq,providerResponse:o,clientResponse:(0,m.buildErrorBody)(e,s)}),eT(e,"model_unavailable"),(0,m.createErrorResult)(e,s,n);e5.add(t),e3=t,eq.model=t,X?.info?.("MODEL_FALLBACK",`${eh} unavailable (${e}) → trying ${t}`);try{let r=await e2(t,!1);if(!r.response.ok)return eD({status:e,error:s,providerRequest:ep||eq,providerResponse:o,clientResponse:(0,m.buildErrorBody)(e,s)}),eT(e,"model_unavailable"),(0,m.createErrorResult)(e,s,n);ec=r.response,eu=r.url,ed=r.headers,ep=r.transformedBody,ej.logTargetRequest(eu,ed,ep),X?.info?.("MODEL_FALLBACK",`Serving ${t} as fallback for ${eh}`)}catch{return eD({status:e,error:s,providerRequest:ep||eq,providerResponse:o,clientResponse:(0,m.buildErrorBody)(e,s)}),eT(e,"model_unavailable"),(0,m.createErrorResult)(e,s,n)}}let a=Array.isArray(eq.tools)&&eq.tools.length>0;if(!eL){let n=(0,K.shouldUseFallback)(e,t,a,K.EMERGENCY_FALLBACK_CONFIG);if((0,K.isFallbackDecision)(n)){X?.info?.("EMERGENCY_FALLBACK",n.reason);try{let e=(0,O.getExecutor)(n.provider),t=await e.execute({model:n.model,body:{...eq,model:n.model,max_tokens:Math.min("number"==typeof eq.max_tokens?eq.max_tokens:n.maxOutputTokens,n.maxOutputTokens)},stream:!1,credentials:Y,signal:eX.signal,log:X,extendedContext:e_});t.response.ok?(ec=t.response,eu=t.url,ed=t.headers,ep=t.transformedBody,ej.logTargetRequest(eu,ed,ep),X?.info?.("EMERGENCY_FALLBACK",`Serving ${n.provider}/${n.model} as budget fallback for ${em}/${eh}`)):X?.warn?.("EMERGENCY_FALLBACK",`Emergency fallback also failed (${t.response.status})`)}catch(t){let e=t instanceof Error?t.message:String(t);X?.warn?.("EMERGENCY_FALLBACK",`Emergency fallback error: ${e}`)}}}}if(!eL){let e;(0,S.trackPendingRequest)(eh,em,eo,!1);let n=(ec.headers.get("content-type")||"").toLowerCase(),r=await ec.text(),i=(0,W.normalizePayloadForLog)(r),c=n.includes("text/event-stream")||/(^|\n)\s*(event|data):/m.test(r);if(c){let t=eP===a.FORMATS.OPENAI_RESPONSES?(0,U.parseSSEToResponsesOutput)(r,eh):(0,U.parseSSEToOpenAIResponse)(r,eh);if(!t){(0,S.appendRequestLog)({model:eh,provider:em,connectionId:eo,status:`FAILED ${h.HTTP_STATUS.BAD_GATEWAY}`}).catch(()=>{});let e="Invalid SSE response for non-streaming request";return eD({status:h.HTTP_STATUS.BAD_GATEWAY,error:e,providerRequest:ep||eq,providerResponse:i,clientResponse:(0,m.buildErrorBody)(h.HTTP_STATUS.BAD_GATEWAY,e)}),eT(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,S.appendRequestLog)({model:eh,provider:em,connectionId:eo,status:`FAILED ${h.HTTP_STATUS.BAD_GATEWAY}`}).catch(()=>{});let e="Invalid JSON response from provider";return eD({status:h.HTTP_STATUS.BAD_GATEWAY,error:e,providerRequest:ep||eq,providerResponse:i,clientResponse:(0,m.buildErrorBody)(h.HTTP_STATUS.BAD_GATEWAY,e)}),eT(h.HTTP_STATUS.BAD_GATEWAY,"invalid_json_payload"),(0,m.createErrorResult)(h.HTTP_STATUS.BAD_GATEWAY,e)}ev===a.FORMATS.CLAUDE&&eP===a.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,eW)),ej.logProviderResponse(ec.status,ec.statusText,ec.headers,c?{_streamed:!0,_format:"sse-json",summary:e}:e),ee&&await ee();let u=(0,N.extractUsageFromResponse)(e,em);(0,S.appendRequestLog)({model:eh,provider:em,connectionId:eo,tokens:u,status:"200 OK"}).catch(()=>{});let d=z(u);if(u&&"object"==typeof u){let e=`[${new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit"})}] 📊 [USAGE] ${em.toUpperCase()} | ${(0,R.formatUsageLog)(u)}${eo?` | account=${eo.slice(0,8)}...`:""}`;console.log(`${l.COLORS.green}${e}${l.COLORS.reset}`),u.prompt_tokens,J(u.cache_read_input_tokens??u.cached_tokens??u.prompt_tokens_details?.cached_tokens),J(u.cache_creation_input_tokens??u.prompt_tokens_details?.cache_creation_tokens),(0,S.saveRequestUsage)({provider:em||"unknown",model:eh||"unknown",tokens:u,status:"200",success:!0,latencyMs:Date.now()-eA,timeToFirstTokenMs:Date.now()-eA,errorCode:null,timestamp:new Date().toISOString(),connectionId:eo||void 0,apiKeyId:er?.id||void 0,apiKeyName:er?.name||void 0}).catch(e=>{console.error("Failed to save usage stats:",e.message)})}if(er?.id&&u){let e=await (0,b.calculateCost)(em,eh,u);e>0&&(0,v.recordCost)(er.id,e)}let p=(0,s.needsTranslation)(eP,ev)?(0,P.translateNonStreamingResponse)(e,eP,ev,eW):e;if("claude"!==ev||eL||"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((eP===a.FORMATS.OPENAI||eP===a.FORMATS.OPENAI_RESPONSES)&&(p=(0,D.sanitizeOpenAIResponse)(p)),p?.usage){let e=(0,l.addBufferToUsage)(p.usage);p.usage=(0,l.filterUsageForFormat)(e,ev)}else{let e=JSON.stringify(p?.choices?.[0]?.message?.content||"").length;if(e>0){let n=(0,l.estimateUsage)(t,e,ev);p.usage=(0,l.filterUsageForFormat)(n,ev)}}if((0,F.isCacheable)(t,en?.headers)){let e=(0,F.generateSignature)(eh,t.messages,t.temperature,t.top_p),n=u?.prompt_tokens+u?.completion_tokens||0;(0,F.setCachedResponse)(e,eh,p,n),X?.debug?.("CACHE",`Stored response for ${eh} (${n} tokens)`)}return(0,L.saveIdempotency)(eS,p,200),ej.logConvertedResponse(p),eD({status:200,tokens:u,responseBody:e,providerRequest:ep||eq,providerResponse:c?{_streamed:!0,_format:"sse-json",summary:e}:e,clientResponse:p,claudeCacheMeta:e9,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"}})}}ee&&await ee();let e7={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","Access-Control-Allow-Origin":(0,o.getCorsOrigin)()},e8=({status:e,usage:t,responseBody:n,providerPayload:o,clientPayload:r,ttft:s})=>{let a=z(t);t&&"object"==typeof t&&(t.prompt_tokens,J(t.cache_read_input_tokens??t.cached_tokens??t.prompt_tokens_details?.cached_tokens),J(t.cache_creation_input_tokens??t.prompt_tokens_details?.cache_creation_tokens),(0,S.saveRequestUsage)({provider:em||"unknown",model:eh||"unknown",tokens:t,status:String(e||200),success:200===e,latencyMs:Date.now()-eA,timeToFirstTokenMs:s,errorCode:null,timestamp:new Date().toISOString(),connectionId:eo||void 0,apiKeyId:er?.id||void 0,apiKeyName:er?.name||void 0}).catch(e=>{console.error("Failed to save usage stats:",e.message)})),eD({status:e||200,tokens:t||{},responseBody:n??void 0,providerRequest:ep||eq,providerResponse:o,clientResponse:r??n??void 0,claudeCacheMeta:e9,claudeCacheUsageMeta:a}),er?.id&&t&&(0,b.calculateCost)(em,eh,t).then(e=>{e>0&&(0,v.recordCost)(er.id,e)}).catch(()=>{})},e6=es?.toLowerCase().includes("droid")||es?.toLowerCase().includes("codex-cli");if(eP!==a.FORMATS.OPENAI_RESPONSES||ev!==a.FORMATS.OPENAI||eb||e6?(0,s.needsTranslation)(eP,ev)?(X?.debug?.("STREAM",`Translation mode: ${eP} → ${ev}`),eg=(0,i.createSSETransformStreamWithLogger)(eP,ev,em,ej,eW,eh,eo,t,e8,er)):(X?.debug?.("STREAM","Standard passthrough mode"),eg=(0,i.createPassthroughStreamWithLogger)(em,ej,eW,eh,eo,t,e8,er)):(X?.debug?.("STREAM",`Responses translation mode: openai-responses → openai`),eg=(0,i.createSSETransformStreamWithLogger)("openai-responses","openai",em,ej,eW,eh,eo,t,e8,er)),(0,j.wantsProgress)(en?.headers)){let e=(0,j.createProgressTransform)({signal:eX.signal});ef=(0,c.pipeWithDisconnect)(ec,eg,eX).pipeThrough(e),e7["X-OmniRoute-Progress"]="enabled"}else ef=(0,c.pipeWithDisconnect)(ec,eg,eX);return{success:!0,response:new Response(ef,{headers:e7})}}[O]=Y.then?(await Y)():Y,e.s(["handleChatCore",()=>X]),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}}function r(e,n=console){let s={enabled:"false"!==process.env.INPUT_SANITIZER_ENABLED,mode:process.env.INPUT_SANITIZER_MODE||"warn",piiRedaction:"true"===process.env.PII_REDACTION_ENABLED},a={blocked:!1,modified:!1,detections:[],piiDetections:[],sanitizedBody:null};if(!s.enabled)return a;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"),l=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(l.length>0){a.detections=l;let e=l.filter(e=>"high"===e.severity),t=e.length>0?"warn":"info";if(n[t]&&n[t](`[SANITIZER] Prompt injection detected: ${l.map(e=>e.pattern).join(", ")}`),"block"===s.mode&&e.length>0)return a.blocked=!0,a}if(s.piiRedaction){let t=o(i,"redact"===s.mode);a.piiDetections=t.detections,t.detections.length>0&&(n.warn?.(`[SANITIZER] PII detected: ${t.detections.map(e=>`${e.type}(${e.count})`).join(", ")}`),"redact"===s.mode&&(a.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),a.modified=!0))}return a}e.s(["sanitizeRequest",()=>r])},311250,e=>e.a(async(t,n)=>{try{var o=e.i(287726),r=e.i(192408),s=e.i(85713),a=e.i(284948),i=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),v=e.i(764162),b=e.i(852705),C=e.i(154939),w=e.i(167389),O=t([a]);async function I(e,t=null){let n,s=(0,E.generateRequestId)(),a=new S.RequestTelemetry(s);try{a.startPhase("parse"),n=await e.json(),a.endPhase()}catch{return p.warn("CHAT","Invalid JSON body"),(0,i.errorResponse)(c.HTTP_STATUS.BAD_REQUEST,"Invalid JSON body")}let u=(0,v.cloneLogPayload)(n);t||(t=x(e,u)),a.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,i.errorResponse)(c.HTTP_STATUS.BAD_REQUEST,"Request rejected: suspicious content detected");d.modified&&d.sanitizedBody&&(n=d.sanitizedBody),a.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 w=e.headers.get("Authorization"),O=(0,o.extractApiKey)(e);w&&O?p.debug("AUTH",`API Key: ${p.maskKey(O)}`):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(O&&!P&&!await (0,o.isValidApiKey)(O))return p.warn("AUTH","API key not found or invalid (must be created in API Manager)"),(0,i.errorResponse)(c.HTTP_STATUS.UNAUTHORIZED,"Invalid API key")}else{if(!O)return p.warn("AUTH","Missing API key while REQUIRE_API_KEY=true"),(0,i.errorResponse)(c.HTTP_STATUS.UNAUTHORIZED,"Missing API key");if(!await (0,o.isValidApiKey)(O))return p.warn("AUTH","Invalid API key while REQUIRE_API_KEY=true"),(0,i.errorResponse)(c.HTTP_STATUS.UNAUTHORIZED,"Invalid API key")}if(!h)return p.warn("CHAT","Missing model"),(0,i.errorResponse)(c.HTTP_STATUS.BAD_REQUEST,"Missing model");let N=(0,C.extractExternalSessionId)(e.headers)||(0,C.generateSessionId)(n);N&&(0,C.touchSession)(N),a.startPhase("policy");let U=await (0,R.enforceApiKeyPolicy)(e,h);if(U.rejection)return p.warn("POLICY",`API key policy rejected: ${h} (key=${U.apiKeyInfo?.id||"unknown"})`),U.rejection;let M=U.apiKeyInfo;if(a.endPhase(),M?.id&&N){let e="number"==typeof M.maxSessions&&M.maxSessions>0?M.maxSessions:0;if(e>0&&!(0,C.isSessionRegisteredForKey)(M.id,N)){let t=(0,C.checkSessionLimit)(M.id,e);if(t)return D((0,i.errorResponse)(c.HTTP_STATUS.RATE_LIMITED,t.message),N);(0,C.registerKeySession)(M.id,N)}}let F=h;if((0,b.getTaskRoutingConfig)().enabled){a.startPhase("task-route");let e=(0,b.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,a.endPhase()}a.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,M?.allowedConnections??null,t.model||e);return!!s&&!s.allRateLimited},[i,c]=await Promise.all([(0,f.getSettings)().catch(()=>({})),(0,m.getCombos)().catch(()=>[])]);a.endPhase();let u=await l.handleComboChat({body:n,combo:L,handleSingleModel:(n,o)=>$(n,o,t,e,L.name,M,a,{sessionId:N,forceLiveComboTest:P},L.strategy,!0),isModelAvailable:s,log:p,settings:i,allCombos:c});if(!u.ok&&[502,503].includes(u.status)&&"string"==typeof i?.globalFallbackModel&&i.globalFallbackModel.trim()){let o=i.globalFallbackModel.trim();p.info("GLOBAL_FALLBACK",`Combo "${L.name}" exhausted — attempting global fallback: ${o}`);try{let r=await $(n,o,t,e,L.name,M,a,{sessionId:N,emergencyFallbackTried:!0,forceLiveComboTest:P},L.strategy,!0);if(r.ok)return p.info("GLOBAL_FALLBACK",`Global fallback ${o} succeeded`),(0,S.recordTelemetry)(a),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)(a),D(u,N)}a.endPhase();let j=await $(n,h,t,e,null,M,a,{sessionId:N,forceLiveComboTest:P},null,!1);return(0,S.recordTelemetry)(a),D(j,N)}function x(e,t){return{endpoint:new URL(e.url).pathname,body:(0,v.cloneLogPayload)(t),headers:Object.fromEntries(e.headers.entries())}}async function $(e,t,n=null,r=null,s=null,a=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:v}=m,b=!0===u.forceLiveComboTest,O=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`),i.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`),i.unavailableResponse(c.HTTP_STATUS.SERVICE_UNAVAILABLE,`Provider ${e} circuit breaker is open`,30);return null}(y,S,{ignoreCircuitBreaker:b,ignoreModelCooldown:b});if(O)return O;let I=(0,A.getCircuitBreaker)(y,{failureThreshold:5,resetTimeout:3e4,onStateChange:(e,t,n)=>p.info("CIRCUIT",`${e}: ${t} → ${n}`)}),x=r?.headers?.get("user-agent")||"",D=null,M=null,F=null;for(;;){let t=await (0,o.getProviderCredentials)(y,D,a?.allowedConnections??null,S,b?{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",a=s||Number(e.lastErrorCode)||c.HTTP_STATUS.SERVICE_UNAVAILABLE;return p.warn("CHAT",`[${n}/${o}] ${t} (${e.retryAfterHuman})`),(0,i.unavailableResponse)(a,`[${n}/${o}] ${t}`,e.retryAfter,e.retryAfterHuman)}return t?(p.warn("CHAT","No more accounts available",{provider:n}),(0,i.errorResponse)(s||c.HTTP_STATUS.SERVICE_UNAVAILABLE,r||"All accounts unavailable")):(p.error("AUTH",`No credentials for provider: ${n}`),(0,i.errorResponse)(c.HTTP_STATUS.BAD_REQUEST,`No credentials for provider: ${n}`))}(t,D,y,S,M,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),O=await U(t.connectionId),P=Date.now();l&&l.startPhase("connect");let{result:L,tlsFingerprintUsed:j}=await N({bypassCircuitBreaker:b,breaker:I,body:e,provider:y,model:S,refreshedCredentials:A,proxyInfo:O,log:p,clientRawRequest:n,credentials:t,apiKeyInfo:a,userAgent:x,comboName:s,comboStrategy:d,isCombo:f,extendedContext:v});l&&l.endPhase();let q=Date.now()-P;if(function({result:e,proxyInfo:t,proxyLatency:n,provider:o,model:r,sourceFormat:s,targetFormat:a,credentials:i,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:i.connectionId,comboId:l||null,account:i.connectionId?.slice(0,8)||null,tlsFingerprint:u})}catch{}try{(0,_.logTranslationEvent)({provider:o,model:r,sourceFormat:s,targetFormat:a,status:e.success?"success":"error",statusCode:e.success?200:e.status||500,latency:n,endpoint:c?.endpoint||"/v1/chat/completions",connectionId:i.connectionId||null,comboName:l||null})}catch{}}({result:L,proxyInfo:O,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,w.shouldUseFallback)(Number(L.status||0),String(L.error||""),Array.isArray(e?.tools)&&e.tools.length>0);if((0,w.isFallbackDecision)(t)){let o=`${t.provider}/${t.model}`,i=`${y}/${S}`;if(o!==i){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",`${i} -> ${o} | reason=${t.reason}`);let g=await $(c,o,n,r,s,a,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,M=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,i.errorResponse)(c.HTTP_STATUS.BAD_REQUEST,t)}}return p.warn("CHAT","Invalid model format",{model:e}),{error:(0,i.errorResponse)(c.HTTP_STATUS.BAD_REQUEST,"Invalid model format")}}let{provider:a,model:l,extendedContext:d}=o,g=(0,s.detectFormatFromEndpoint)(t,n),f=u.PROVIDER_ID_TO_ALIAS[a]||a,m=(0,u.getModelTargetFormat)(f,l)||(0,s.getTargetFormat)(a);"responses"===o.apiFormat&&(m="openai-responses",p.info("ROUTING",`Custom model apiFormat=responses → targetFormat=openai-responses`));let h=d&&"claude"===f?" [1m]":"";return e!==`${a}/${l}`?p.info("ROUTING",`${e} → ${a}/${l}${h}`):p.info("ROUTING",`Provider: ${a}, Model: ${l}${h}`),{provider:a,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 i=()=>(0,d.runWithProxyContext)(u?.proxy||null,()=>a.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)(i);return{result:e.result,tlsFingerprintUsed:e.tlsFingerprintUsed}}return{result:await i(),tlsFingerprintUsed:!1}}if(!u?.proxy&&(0,d.isTlsFingerprintActive)()){let e=await t.execute(async()=>(0,d.runWithTlsTracking)(i));return{result:e.result,tlsFingerprintUsed:e.tlsFingerprintUsed}}return{result:await t.execute(i),tlsFingerprintUsed:!1}}catch(e){if(e instanceof A.CircuitBreakerOpenError)return p.warn("CIRCUIT",`${r} circuit open during retry: ${e.message}`),{result:{success:!1,response:i.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:i.unavailableResponse(c.HTTP_STATUS.SERVICE_UNAVAILABLE,t,2),status:c.HTTP_STATUS.SERVICE_UNAVAILABLE,error:t},tlsFingerprintUsed:!1}}throw e}}async function U(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}}[a]=O.then?(await O)():O,e.s(["buildClientRawRequest",()=>x,"handleChat",()=>I]),n()}catch(e){n(e)}},!1)];
|
|
27
|
+
${o}`}]:[]}return X?.debug?.("CONTENT",`Dropped unsupported content part type="${e.type}"`),[]}));let e=(0,w.getModelNormalizeToolCallId)(em||"",eh||"",ev),n=(0,w.getModelPreserveOpenAIDeveloperRole)(em||"",eh||"",ev);eq=(0,s.translateRequest)(ev,eP,eh,eq,eL,Y,em,ej,{normalizeToolCallId:e,preserveDeveloperRole:n,preserveCacheControl:eK})}}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 eG=eq._toolNameMap,eW=eB?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(`${C.CLAUDE_OAUTH_TOOL_PREFIX}${o}`,o)}return t.size>0?t:null}(t):null,eV=eG instanceof Map&&eG.size>0?eG:eW;delete eq._toolNameMap,delete eq._disableToolPrefix,eq.model=ex;let eY=(0,f.getUnsupportedParams)(em,eh);if(eY.length>0){let e=[];for(let t of eY)Object.hasOwn(eq,t)&&(e.push(t),delete eq[t]);e.length>0&&X?.warn?.("PARAMS",`Stripped unsupported params for ${eh}: ${e.join(", ")}`)}let eJ=h.PROVIDER_MAX_TOKENS[em];if(eJ)for(let e of["max_tokens","max_completion_tokens"])"number"==typeof eq[e]&&eq[e]>eJ&&(X?.debug?.("PARAMS",`Capping ${e} from ${eq[e]} to ${eJ} for ${em}`),eq[e]=eJ);let ez=(0,O.getExecutor)(em),eQ=()=>eC?{...Y,requestEndpointPath:eR}:Y,eX=(0,c.createStreamController)({onDisconnect:et,log:X,provider:em,model:eh}),eZ={...eq,model:`${em}/${eh}`},e0=(0,B.shouldDeduplicate)(eZ),e1=e0?(0,B.computeRequestHash)(eZ):null,e2=async(t=ex,n=!1)=>{let o=async()=>{let n=eq.model===t?eq:{...eq,model:t};if(eP===a.FORMATS.OPENAI&&!n.prompt_cache_key&&Array.isArray(n.messages)&&!["nvidia","codex","xai"].includes(em)){let{generatePromptCacheKey:t}=await e.A(828068),o=t(n.messages);o&&(n={...n,prompt_cache_key:o})}let o=await (0,M.withRateLimit)(em,eo,t,async()=>{let e=0,o="qwen"===em?3:1;for(;e<o;){let r=await ez.execute({model:t,body:n,stream:eL,credentials:eQ(),signal:eX.signal,log:X,extendedContext:e_,upstreamExtraHeaders:eM(t)});if("qwen"===em&&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(eL)return o;let r=o.response.status,s=o.response.statusText,i=Array.from(o.response.headers.entries()),l=await o.response.text();return{...o,response:new Response(l,{status:r,statusText:s,headers:i})}};if(n&&e0&&e1){let e=await (0,B.deduplicate)(e1,o);return e.wasDeduplicated&&X?.debug?.("DEDUP",`Joined in-flight request hash=${e1}`),e.result}return o()};(0,S.trackPendingRequest)(eh,em,eo,!0);let e5=new Set([ex]),e3=ex;(0,S.appendRequestLog)({model:eh,provider:em,connectionId:eo,status:"PENDING"}).catch(()=>{});let e4=eq.messages?.length||eq.contents?.length||eq.request?.contents?.length||0;X?.debug?.("REQUEST",`${em.toUpperCase()} | ${eh} | ${e4} msgs`);let e9=null;try{let e=await e2(ex,!0);ec=e.response,eu=e.url,ed=e.headers,ep=e.transformedBody,e9=function(e,t,n){if(e!==a.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})]:[]}):[],i=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+i.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:i}:null}(eP,ep,ed),ej.logTargetRequest(eu,ed,ep),(0,M.updateFromHeaders)(em,eo,ec.headers,ec.status,eh)}catch(n){(0,S.trackPendingRequest)(eh,em,eo,!1);let e="AbortError"===n.name?499:h.HTTP_STATUS.BAD_GATEWAY,t="AbortError"===n.name?"Request aborted":(0,m.formatProviderError)(n,em,eh,h.HTTP_STATUS.BAD_GATEWAY);if((0,S.appendRequestLog)({model:eh,provider:em,connectionId:eo,status:`FAILED ${e}`}).catch(()=>{}),eD({status:e,error:t,providerRequest:ep||eq,clientResponse:(0,m.buildErrorBody)(e,t),claudeCacheMeta:e9}),"AbortError"===n.name)return eX.handleError(n),(0,m.createErrorResult)(499,"Request aborted");return eT(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(ec.status===h.HTTP_STATUS.UNAUTHORIZED||ec.status===h.HTTP_STATUS.FORBIDDEN){let e=await (0,u.refreshWithRetry)(()=>ez.refreshCredentials(Y,X),3,X);if(e?.accessToken||e?.copilotToken){X?.info?.("TOKEN",`${em.toUpperCase()} | refreshed`),Object.assign(Y,e),Z&&e&&await Z(e);try{let e=String(eq.model||ex),t=await ez.execute({model:e,body:eq,stream:eL,credentials:eQ(),signal:eX.signal,log:X,extendedContext:e_,upstreamExtraHeaders:eM(e)});t.response.ok&&(ec=t.response,eu=t.url,ed=t.headers,ep=t.transformedBody,ej.logTargetRequest(eu,ed,ep))}catch{X?.warn?.("TOKEN",`${em.toUpperCase()} | retry after refresh failed`)}}else X?.warn?.("TOKEN",`${em.toUpperCase()} | refresh failed`)}if(await ek(ec.headers,ec.status),!ec.ok){(0,S.trackPendingRequest)(eh,em,eo,!1);let{statusCode:e,message:t,retryAfterMs:n,responseBody:o}=await (0,m.parseUpstreamError)(ec,em),r=(0,_.classifyProviderError)(e,t);if(eo&&r)try{r===_.PROVIDER_ERROR_TYPES.FORBIDDEN?(await (0,y.updateProviderConnection)(eo,{isActive:!1,testStatus:"banned",lastErrorType:r,lastError:t,errorCode:e}),console.warn(`[provider] Node ${eo} banned (${e}) — disabling permanently`)):r===_.PROVIDER_ERROR_TYPES.QUOTA_EXHAUSTED?(await (0,y.updateProviderConnection)(eo,{testStatus:"credits_exhausted",lastErrorType:r,lastError:t,errorCode:e}),console.warn(`[provider] Node ${eo} exhausted quota (${e})`)):r===_.PROVIDER_ERROR_TYPES.ACCOUNT_DEACTIVATED?(await (0,y.updateProviderConnection)(eo,{isActive:!1,testStatus:"expired",lastErrorType:r,lastError:t,errorCode:e}),console.warn(`[provider] Node ${eo} account deactivated (${e}) — marked expired`)):r===_.PROVIDER_ERROR_TYPES.UNAUTHORIZED&&await (0,y.updateProviderConnection)(eo,{lastErrorType:r,lastError:t,errorCode:e})}catch{}(0,S.appendRequestLog)({model:eh,provider:em,connectionId:eo,status:`FAILED ${e}`}).catch(()=>{});let s=(0,m.formatProviderError)(Error(t),em,eh,e);if(console.log(`${l.COLORS.red}[ERROR] ${s}${l.COLORS.reset}`),n&&"antigravity"===em){let e=Math.ceil(n/1e3);X?.debug?.("RETRY",`Antigravity quota reset in ${e}s (${n}ms)`)}if(ej.logError(Error(t),ep||eq),ej.logProviderResponse(ec.status,ec.statusText,ec.headers,o),(0,M.updateFromHeaders)(em,eo,ec.headers,e,eh),!(0,q.isModelUnavailableError)(e,t))return eD({status:e,error:s,providerRequest:ep||eq,providerResponse:o,clientResponse:(0,m.buildErrorBody)(e,s)}),eT(e,`upstream_${e}`),(0,m.createErrorResult)(e,s,n);{let t=(0,q.getNextFamilyFallback)(e3,e5);if(!t)return eD({status:e,error:s,providerRequest:ep||eq,providerResponse:o,clientResponse:(0,m.buildErrorBody)(e,s)}),eT(e,"model_unavailable"),(0,m.createErrorResult)(e,s,n);e5.add(t),e3=t,eq.model=t,X?.info?.("MODEL_FALLBACK",`${eh} unavailable (${e}) → trying ${t}`);try{let r=await e2(t,!1);if(!r.response.ok)return eD({status:e,error:s,providerRequest:ep||eq,providerResponse:o,clientResponse:(0,m.buildErrorBody)(e,s)}),eT(e,"model_unavailable"),(0,m.createErrorResult)(e,s,n);ec=r.response,eu=r.url,ed=r.headers,ep=r.transformedBody,ej.logTargetRequest(eu,ed,ep),X?.info?.("MODEL_FALLBACK",`Serving ${t} as fallback for ${eh}`)}catch{return eD({status:e,error:s,providerRequest:ep||eq,providerResponse:o,clientResponse:(0,m.buildErrorBody)(e,s)}),eT(e,"model_unavailable"),(0,m.createErrorResult)(e,s,n)}}let a=Array.isArray(eq.tools)&&eq.tools.length>0;if(!eL){let n=(0,K.shouldUseFallback)(e,t,a,K.EMERGENCY_FALLBACK_CONFIG);if((0,K.isFallbackDecision)(n)){X?.info?.("EMERGENCY_FALLBACK",n.reason);try{let e=(0,O.getExecutor)(n.provider),t=await e.execute({model:n.model,body:{...eq,model:n.model,max_tokens:Math.min("number"==typeof eq.max_tokens?eq.max_tokens:n.maxOutputTokens,n.maxOutputTokens)},stream:!1,credentials:Y,signal:eX.signal,log:X,extendedContext:e_});t.response.ok?(ec=t.response,eu=t.url,ed=t.headers,ep=t.transformedBody,ej.logTargetRequest(eu,ed,ep),X?.info?.("EMERGENCY_FALLBACK",`Serving ${n.provider}/${n.model} as budget fallback for ${em}/${eh}`)):X?.warn?.("EMERGENCY_FALLBACK",`Emergency fallback also failed (${t.response.status})`)}catch(t){let e=t instanceof Error?t.message:String(t);X?.warn?.("EMERGENCY_FALLBACK",`Emergency fallback error: ${e}`)}}}}if(!eL){let e;(0,S.trackPendingRequest)(eh,em,eo,!1);let n=(ec.headers.get("content-type")||"").toLowerCase(),r=await ec.text(),i=(0,V.normalizePayloadForLog)(r),c=n.includes("text/event-stream")||/(^|\n)\s*(event|data):/m.test(r);if(c){let t=eP===a.FORMATS.OPENAI_RESPONSES?(0,U.parseSSEToResponsesOutput)(r,eh):(0,U.parseSSEToOpenAIResponse)(r,eh);if(!t){(0,S.appendRequestLog)({model:eh,provider:em,connectionId:eo,status:`FAILED ${h.HTTP_STATUS.BAD_GATEWAY}`}).catch(()=>{});let e="Invalid SSE response for non-streaming request";return eD({status:h.HTTP_STATUS.BAD_GATEWAY,error:e,providerRequest:ep||eq,providerResponse:i,clientResponse:(0,m.buildErrorBody)(h.HTTP_STATUS.BAD_GATEWAY,e)}),eT(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,S.appendRequestLog)({model:eh,provider:em,connectionId:eo,status:`FAILED ${h.HTTP_STATUS.BAD_GATEWAY}`}).catch(()=>{});let e="Invalid JSON response from provider";return eD({status:h.HTTP_STATUS.BAD_GATEWAY,error:e,providerRequest:ep||eq,providerResponse:i,clientResponse:(0,m.buildErrorBody)(h.HTTP_STATUS.BAD_GATEWAY,e)}),eT(h.HTTP_STATUS.BAD_GATEWAY,"invalid_json_payload"),(0,m.createErrorResult)(h.HTTP_STATUS.BAD_GATEWAY,e)}ev===a.FORMATS.CLAUDE&&eP===a.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,eV)),ej.logProviderResponse(ec.status,ec.statusText,ec.headers,c?{_streamed:!0,_format:"sse-json",summary:e}:e),ee&&await ee();let u=(0,N.extractUsageFromResponse)(e,em);(0,S.appendRequestLog)({model:eh,provider:em,connectionId:eo,tokens:u,status:"200 OK"}).catch(()=>{});let d=z(u);if(u&&"object"==typeof u){let e=`[${new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit"})}] 📊 [USAGE] ${em.toUpperCase()} | ${(0,R.formatUsageLog)(u)}${eo?` | account=${eo.slice(0,8)}...`:""}`;console.log(`${l.COLORS.green}${e}${l.COLORS.reset}`),u.prompt_tokens,J(u.cache_read_input_tokens??u.cached_tokens??u.prompt_tokens_details?.cached_tokens),J(u.cache_creation_input_tokens??u.prompt_tokens_details?.cache_creation_tokens),(0,S.saveRequestUsage)({provider:em||"unknown",model:eh||"unknown",tokens:u,status:"200",success:!0,latencyMs:Date.now()-eA,timeToFirstTokenMs:Date.now()-eA,errorCode:null,timestamp:new Date().toISOString(),connectionId:eo||void 0,apiKeyId:er?.id||void 0,apiKeyName:er?.name||void 0}).catch(e=>{console.error("Failed to save usage stats:",e.message)})}if(er?.id&&u){let e=await (0,b.calculateCost)(em,eh,u);e>0&&(0,v.recordCost)(er.id,e)}let p=(0,s.needsTranslation)(eP,ev)?(0,P.translateNonStreamingResponse)(e,eP,ev,eV):e;if("claude"!==ev||eL||"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((eP===a.FORMATS.OPENAI||eP===a.FORMATS.OPENAI_RESPONSES)&&(p=(0,D.sanitizeOpenAIResponse)(p)),p?.usage){let e=(0,l.addBufferToUsage)(p.usage);p.usage=(0,l.filterUsageForFormat)(e,ev)}else{let e=JSON.stringify(p?.choices?.[0]?.message?.content||"").length;if(e>0){let n=(0,l.estimateUsage)(t,e,ev);p.usage=(0,l.filterUsageForFormat)(n,ev)}}if((0,F.isCacheable)(t,en?.headers)){let e=(0,F.generateSignature)(eh,t.messages,t.temperature,t.top_p),n=u?.prompt_tokens+u?.completion_tokens||0;(0,F.setCachedResponse)(e,eh,p,n),X?.debug?.("CACHE",`Stored response for ${eh} (${n} tokens)`)}return(0,L.saveIdempotency)(eS,p,200),ej.logConvertedResponse(p),eD({status:200,tokens:u,responseBody:e,providerRequest:ep||eq,providerResponse:c?{_streamed:!0,_format:"sse-json",summary:e}:e,clientResponse:p,claudeCacheMeta:e9,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"}})}}ee&&await ee();let e7={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","Access-Control-Allow-Origin":(0,o.getCorsOrigin)()},e8=({status:e,usage:t,responseBody:n,providerPayload:o,clientPayload:r,ttft:s})=>{let a=z(t);t&&"object"==typeof t&&(t.prompt_tokens,J(t.cache_read_input_tokens??t.cached_tokens??t.prompt_tokens_details?.cached_tokens),J(t.cache_creation_input_tokens??t.prompt_tokens_details?.cache_creation_tokens),(0,S.saveRequestUsage)({provider:em||"unknown",model:eh||"unknown",tokens:t,status:String(e||200),success:200===e,latencyMs:Date.now()-eA,timeToFirstTokenMs:s,errorCode:null,timestamp:new Date().toISOString(),connectionId:eo||void 0,apiKeyId:er?.id||void 0,apiKeyName:er?.name||void 0}).catch(e=>{console.error("Failed to save usage stats:",e.message)})),eD({status:e||200,tokens:t||{},responseBody:n??void 0,providerRequest:ep||eq,providerResponse:o,clientResponse:r??n??void 0,claudeCacheMeta:e9,claudeCacheUsageMeta:a}),er?.id&&t&&(0,b.calculateCost)(em,eh,t).then(e=>{e>0&&(0,v.recordCost)(er.id,e)}).catch(()=>{})},e6=es?.toLowerCase().includes("droid")||es?.toLowerCase().includes("codex-cli");if(eP!==a.FORMATS.OPENAI_RESPONSES||ev!==a.FORMATS.OPENAI||eb||e6?(0,s.needsTranslation)(eP,ev)?(X?.debug?.("STREAM",`Translation mode: ${eP} → ${ev}`),eg=(0,i.createSSETransformStreamWithLogger)(eP,ev,em,ej,eV,eh,eo,t,e8,er)):(X?.debug?.("STREAM","Standard passthrough mode"),eg=(0,i.createPassthroughStreamWithLogger)(em,ej,eV,eh,eo,t,e8,er)):(X?.debug?.("STREAM",`Responses translation mode: openai-responses → openai`),eg=(0,i.createSSETransformStreamWithLogger)("openai-responses","openai",em,ej,eV,eh,eo,t,e8,er)),(0,j.wantsProgress)(en?.headers)){let e=(0,j.createProgressTransform)({signal:eX.signal});ef=(0,c.pipeWithDisconnect)(ec,eg,eX).pipeThrough(e),e7["X-OmniRoute-Progress"]="enabled"}else ef=(0,c.pipeWithDisconnect)(ec,eg,eX);return{success:!0,response:new Response(ef,{headers:e7})}}[O]=Y.then?(await Y)():Y,e.s(["handleChatCore",()=>X]),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}}function r(e,n=console){let s={enabled:"false"!==process.env.INPUT_SANITIZER_ENABLED,mode:process.env.INPUT_SANITIZER_MODE||"warn",piiRedaction:"true"===process.env.PII_REDACTION_ENABLED},a={blocked:!1,modified:!1,detections:[],piiDetections:[],sanitizedBody:null};if(!s.enabled)return a;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"),l=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(l.length>0){a.detections=l;let e=l.filter(e=>"high"===e.severity),t=e.length>0?"warn":"info";if(n[t]&&n[t](`[SANITIZER] Prompt injection detected: ${l.map(e=>e.pattern).join(", ")}`),"block"===s.mode&&e.length>0)return a.blocked=!0,a}if(s.piiRedaction){let t=o(i,"redact"===s.mode);a.piiDetections=t.detections,t.detections.length>0&&(n.warn?.(`[SANITIZER] PII detected: ${t.detections.map(e=>`${e.type}(${e.count})`).join(", ")}`),"redact"===s.mode&&(a.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),a.modified=!0))}return a}e.s(["sanitizeRequest",()=>r])},311250,e=>e.a(async(t,n)=>{try{var o=e.i(287726),r=e.i(192408),s=e.i(85713),a=e.i(284948),i=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),v=e.i(764162),b=e.i(852705),C=e.i(154939),w=e.i(167389),O=t([a]);async function I(e,t=null){let n,s=(0,E.generateRequestId)(),a=new S.RequestTelemetry(s);try{a.startPhase("parse"),n=await e.json(),a.endPhase()}catch{return p.warn("CHAT","Invalid JSON body"),(0,i.errorResponse)(c.HTTP_STATUS.BAD_REQUEST,"Invalid JSON body")}let u=(0,v.cloneLogPayload)(n);t||(t=x(e,u)),a.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,i.errorResponse)(c.HTTP_STATUS.BAD_REQUEST,"Request rejected: suspicious content detected");d.modified&&d.sanitizedBody&&(n=d.sanitizedBody),a.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 w=e.headers.get("Authorization"),O=(0,o.extractApiKey)(e);w&&O?p.debug("AUTH",`API Key: ${p.maskKey(O)}`):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(O&&!P&&!await (0,o.isValidApiKey)(O))return p.warn("AUTH","API key not found or invalid (must be created in API Manager)"),(0,i.errorResponse)(c.HTTP_STATUS.UNAUTHORIZED,"Invalid API key")}else{if(!O)return p.warn("AUTH","Missing API key while REQUIRE_API_KEY=true"),(0,i.errorResponse)(c.HTTP_STATUS.UNAUTHORIZED,"Missing API key");if(!await (0,o.isValidApiKey)(O))return p.warn("AUTH","Invalid API key while REQUIRE_API_KEY=true"),(0,i.errorResponse)(c.HTTP_STATUS.UNAUTHORIZED,"Invalid API key")}if(!h)return p.warn("CHAT","Missing model"),(0,i.errorResponse)(c.HTTP_STATUS.BAD_REQUEST,"Missing model");let N=(0,C.extractExternalSessionId)(e.headers)||(0,C.generateSessionId)(n);N&&(0,C.touchSession)(N),a.startPhase("policy");let U=await (0,R.enforceApiKeyPolicy)(e,h);if(U.rejection)return p.warn("POLICY",`API key policy rejected: ${h} (key=${U.apiKeyInfo?.id||"unknown"})`),U.rejection;let M=U.apiKeyInfo;if(a.endPhase(),M?.id&&N){let e="number"==typeof M.maxSessions&&M.maxSessions>0?M.maxSessions:0;if(e>0&&!(0,C.isSessionRegisteredForKey)(M.id,N)){let t=(0,C.checkSessionLimit)(M.id,e);if(t)return D((0,i.errorResponse)(c.HTTP_STATUS.RATE_LIMITED,t.message),N);(0,C.registerKeySession)(M.id,N)}}let F=h;if((0,b.getTaskRoutingConfig)().enabled){a.startPhase("task-route");let e=(0,b.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,a.endPhase()}a.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,M?.allowedConnections??null,t.model||e);return!!s&&!s.allRateLimited},[i,c]=await Promise.all([(0,f.getSettings)().catch(()=>({})),(0,m.getCombos)().catch(()=>[])]);a.endPhase();let u=await l.handleComboChat({body:n,combo:L,handleSingleModel:(n,o)=>$(n,o,t,e,L.name,M,a,{sessionId:N,forceLiveComboTest:P},L.strategy,!0),isModelAvailable:s,log:p,settings:i,allCombos:c});if(!u.ok&&[502,503].includes(u.status)&&"string"==typeof i?.globalFallbackModel&&i.globalFallbackModel.trim()){let o=i.globalFallbackModel.trim();p.info("GLOBAL_FALLBACK",`Combo "${L.name}" exhausted — attempting global fallback: ${o}`);try{let r=await $(n,o,t,e,L.name,M,a,{sessionId:N,emergencyFallbackTried:!0,forceLiveComboTest:P},L.strategy,!0);if(r.ok)return p.info("GLOBAL_FALLBACK",`Global fallback ${o} succeeded`),(0,S.recordTelemetry)(a),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)(a),D(u,N)}a.endPhase();let j=await $(n,h,t,e,null,M,a,{sessionId:N,forceLiveComboTest:P},null,!1);return(0,S.recordTelemetry)(a),D(j,N)}function x(e,t){return{endpoint:new URL(e.url).pathname,body:(0,v.cloneLogPayload)(t),headers:Object.fromEntries(e.headers.entries())}}async function $(e,t,n=null,r=null,s=null,a=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:v}=m,b=!0===u.forceLiveComboTest,O=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`),i.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`),i.unavailableResponse(c.HTTP_STATUS.SERVICE_UNAVAILABLE,`Provider ${e} circuit breaker is open`,30);return null}(y,S,{ignoreCircuitBreaker:b,ignoreModelCooldown:b});if(O)return O;let I=(0,A.getCircuitBreaker)(y,{failureThreshold:5,resetTimeout:3e4,onStateChange:(e,t,n)=>p.info("CIRCUIT",`${e}: ${t} → ${n}`)}),x=r?.headers?.get("user-agent")||"",D=null,M=null,F=null;for(;;){let t=await (0,o.getProviderCredentials)(y,D,a?.allowedConnections??null,S,b?{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",a=s||Number(e.lastErrorCode)||c.HTTP_STATUS.SERVICE_UNAVAILABLE;return p.warn("CHAT",`[${n}/${o}] ${t} (${e.retryAfterHuman})`),(0,i.unavailableResponse)(a,`[${n}/${o}] ${t}`,e.retryAfter,e.retryAfterHuman)}return t?(p.warn("CHAT","No more accounts available",{provider:n}),(0,i.errorResponse)(s||c.HTTP_STATUS.SERVICE_UNAVAILABLE,r||"All accounts unavailable")):(p.error("AUTH",`No credentials for provider: ${n}`),(0,i.errorResponse)(c.HTTP_STATUS.BAD_REQUEST,`No credentials for provider: ${n}`))}(t,D,y,S,M,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),O=await U(t.connectionId),P=Date.now();l&&l.startPhase("connect");let{result:L,tlsFingerprintUsed:j}=await N({bypassCircuitBreaker:b,breaker:I,body:e,provider:y,model:S,refreshedCredentials:A,proxyInfo:O,log:p,clientRawRequest:n,credentials:t,apiKeyInfo:a,userAgent:x,comboName:s,comboStrategy:d,isCombo:f,extendedContext:v});l&&l.endPhase();let q=Date.now()-P;if(function({result:e,proxyInfo:t,proxyLatency:n,provider:o,model:r,sourceFormat:s,targetFormat:a,credentials:i,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:i.connectionId,comboId:l||null,account:i.connectionId?.slice(0,8)||null,tlsFingerprint:u})}catch{}try{(0,_.logTranslationEvent)({provider:o,model:r,sourceFormat:s,targetFormat:a,status:e.success?"success":"error",statusCode:e.success?200:e.status||500,latency:n,endpoint:c?.endpoint||"/v1/chat/completions",connectionId:i.connectionId||null,comboName:l||null})}catch{}}({result:L,proxyInfo:O,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,w.shouldUseFallback)(Number(L.status||0),String(L.error||""),Array.isArray(e?.tools)&&e.tools.length>0);if((0,w.isFallbackDecision)(t)){let o=`${t.provider}/${t.model}`,i=`${y}/${S}`;if(o!==i){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",`${i} -> ${o} | reason=${t.reason}`);let g=await $(c,o,n,r,s,a,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,M=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,i.errorResponse)(c.HTTP_STATUS.BAD_REQUEST,t)}}return p.warn("CHAT","Invalid model format",{model:e}),{error:(0,i.errorResponse)(c.HTTP_STATUS.BAD_REQUEST,"Invalid model format")}}let{provider:a,model:l,extendedContext:d}=o,g=(0,s.detectFormatFromEndpoint)(t,n),f=u.PROVIDER_ID_TO_ALIAS[a]||a,m=(0,u.getModelTargetFormat)(f,l)||(0,s.getTargetFormat)(a);"responses"===o.apiFormat&&(m="openai-responses",p.info("ROUTING",`Custom model apiFormat=responses → targetFormat=openai-responses`));let h=d&&"claude"===f?" [1m]":"";return e!==`${a}/${l}`?p.info("ROUTING",`${e} → ${a}/${l}${h}`):p.info("ROUTING",`Provider: ${a}, Model: ${l}${h}`),{provider:a,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 i=()=>(0,d.runWithProxyContext)(u?.proxy||null,()=>a.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)(i);return{result:e.result,tlsFingerprintUsed:e.tlsFingerprintUsed}}return{result:await i(),tlsFingerprintUsed:!1}}if(!u?.proxy&&(0,d.isTlsFingerprintActive)()){let e=await t.execute(async()=>(0,d.runWithTlsTracking)(i));return{result:e.result,tlsFingerprintUsed:e.tlsFingerprintUsed}}return{result:await t.execute(i),tlsFingerprintUsed:!1}}catch(e){if(e instanceof A.CircuitBreakerOpenError)return p.warn("CIRCUIT",`${r} circuit open during retry: ${e.message}`),{result:{success:!1,response:i.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:i.unavailableResponse(c.HTTP_STATUS.SERVICE_UNAVAILABLE,t,2),status:c.HTTP_STATUS.SERVICE_UNAVAILABLE,error:t},tlsFingerprintUsed:!1}}throw e}}async function U(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}}[a]=O.then?(await O)():O,e.s(["buildClientRawRequest",()=>x,"handleChat",()=>I]),n()}catch(e){n(e)}},!1)];
|
|
28
28
|
|
|
29
29
|
//# sourceMappingURL=_7badaddf._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[815058,e=>e.a(async(t,r)=>{try{var a=e.i(745015),n=e.i(89171),s=e.i(924868),o=e.i(814747),i=e.i(266240),l=e.i(841788),d=e.i(197892),u=e.i(676088),c=e.i(200392);e.i(245272);var p=e.i(125852),m=e.i(195975),h=t([u,c]);[u,c]=h.then?(await h)():h;let y=()=>(0,i.getCliPrimaryConfigPath)("droid"),v=async()=>{try{let e=y(),t=await s.default.readFile(e,"utf-8");return JSON.parse(t)}catch(e){if("ENOENT"===e.code)return null;throw e}};async function f(){try{let e=await (0,i.getCliRuntimeStatus)("droid");if(!e.installed||!e.runnable)return n.NextResponse.json({installed:e.installed,runnable:e.runnable,command:e.command,commandPath:e.commandPath,runtimeMode:e.runtimeMode,reason:e.reason,settings:null,message:e.installed&&!e.runnable?"Factory Droid CLI is installed but not runnable":"Factory Droid CLI is not installed"});let t=await v();return n.NextResponse.json({installed:e.installed,runnable:e.runnable,command:e.command,commandPath:e.commandPath,runtimeMode:e.runtimeMode,reason:e.reason,settings:t,hasOmniRoute:!!t&&!!t.customModels&&t.customModels.some(e=>"custom:OmniRoute-0"===e.id),settingsPath:y()})}catch(e){return console.log("Error checking droid settings:",e),n.NextResponse.json({error:"Failed to check droid settings"},{status:500})}}async function g(e){let t;try{t=await e.json()}catch{return n.NextResponse.json({error:{message:"Invalid request",details:[{field:"body",message:"Invalid JSON body"}]}},{status:400})}try{let e=(0,i.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});let r=(0,c.validateBody)(u.cliModelConfigSchema,t);if((0,c.isValidationFailure)(r))return n.NextResponse.json({error:r.error},{status:400});let{baseUrl:a,model:m}=r.data,{apiKey:h}=r.data,f="string"==typeof t?.keyId?t.keyId.trim():null;if(f)try{let e=await (0,p.getApiKeyById)(f);e?.key&&(h=e.key)}catch{}let g=o.default.dirname(y()),R=y();await s.default.mkdir(g,{recursive:!0}),await (0,l.createBackup)("droid",R);let v={};try{let e=await s.default.readFile(R,"utf-8");v=JSON.parse(e)}catch{}v.customModels||(v.customModels=[]),v.customModels=v.customModels.filter(e=>"custom:OmniRoute-0"!==e.id);let w=a.endsWith("/v1")?a:`${a}/v1`,E={model:m,id:"custom:OmniRoute-0",index:0,baseUrl:w,apiKey:h||"your_api_key",displayName:m,maxOutputTokens:131072,noImageSupport:!1,provider:"openai"};v.customModels.unshift(E),await s.default.writeFile(R,JSON.stringify(v,null,2));try{(0,d.saveCliToolLastConfigured)("droid")}catch{}return n.NextResponse.json({success:!0,message:"Factory Droid settings applied successfully!",settingsPath:R})}catch(e){return console.log("Error updating droid settings:",e),n.NextResponse.json({error:"Failed to update droid settings"},{status:500})}}async function R(){try{let e=(0,i.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});let t=y();await (0,l.createBackup)("droid",t);let r={};try{let e=await s.default.readFile(t,"utf-8");r=JSON.parse(e)}catch(e){if("ENOENT"===e.code)return n.NextResponse.json({success:!0,message:"No settings file to reset"});throw e}r.customModels&&(r.customModels=r.customModels.filter(e=>"custom:OmniRoute-0"!==e.id),0===r.customModels.length&&delete r.customModels),await s.default.writeFile(t,JSON.stringify(r,null,2));try{(0,d.deleteCliToolLastConfigured)("droid")}catch{}return n.NextResponse.json({success:!0,message:"OmniRoute settings removed successfully"})}catch(e){return console.log("Error resetting droid settings:",e),n.NextResponse.json({error:"Failed to reset droid settings"},{status:500})}}(0,m.ensureServerEntryExports)([f,g,R]),(0,a.registerServerReference)(f,"00ab32be95740919b8a45b267f27bd52b79dbf253d",null),(0,a.registerServerReference)(g,"403ed8b171781aacf41c628bbd216e15137734f8a5",null),(0,a.registerServerReference)(R,"00e2a4f0a351dd83540963e0e63fd1751029efe5e8",null),e.s(["DELETE",()=>R,"GET",()=>f,"POST",()=>g]),r()}catch(e){r(e)}},!1),122141,e=>e.a(async(t,r)=>{try{var a=e.i(747909),n=e.i(174017),s=e.i(996250),o=e.i(759756),i=e.i(561916),l=e.i(174677),d=e.i(869741),u=e.i(316795),c=e.i(487718),p=e.i(995169),m=e.i(47587),h=e.i(666012),f=e.i(570101),g=e.i(626937),R=e.i(10372),y=e.i(193695);e.i(52474);var v=e.i(600220),w=e.i(815058),E=t([w]);[w]=E.then?(await E)():E;let x=new a.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/cli-tools/droid-settings/route",pathname:"/api/cli-tools/droid-settings",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/cli-tools/droid-settings/route.ts",nextConfigOutput:"standalone",userland:w}),{workAsyncStorage:b,workUnitAsyncStorage:O,serverHooks:S}=x;function C(){return(0,s.patchFetch)({workAsyncStorage:b,workUnitAsyncStorage:O})}async function N(e,t,r){x.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let a="/api/cli-tools/droid-settings/route";a=a.replace(/\/index$/,"")||"/";let s=await x.prepare(e,t,{srcPage:a,multiZoneDraftMode:!1});if(!s)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:w,params:E,nextConfig:C,parsedUrl:N,isDraftMode:b,prerenderManifest:O,routerServerContext:S,isOnDemandRevalidate:A,revalidateOnlyGenerated:T,resolvedPathname:P,clientReferenceManifest:M,serverActionsManifest:k}=s,I=(0,d.normalizeAppPath)(a),_=!!(O.dynamicRoutes[I]||O.routes[P]),j=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,N,!1):t.end("This page could not be found"),null);if(_&&!b){let e=!!O.routes[P],t=O.dynamicRoutes[I];if(t&&!1===t.fallback&&!e){if(C.experimental.adapterPath)return await j();throw new y.NoFallbackError}}let F=null;!_||x.isDev||b||(F=P,F="/index"===F?"/":F);let D=!0===x.isDev||!_,H=_&&!D;k&&M&&(0,l.setManifestsSingleton)({page:a,clientReferenceManifest:M,serverActionsManifest:k});let U=e.method||"GET",q=(0,i.getTracer)(),K=q.getActiveScopeSpan(),L={params:E,prerenderManifest:O,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:D,incrementalCache:(0,o.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:C.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>x.onRequestError(e,t,a,n,S)},sharedContext:{buildId:w}},$=new u.NodeNextRequest(e),B=new u.NodeNextResponse(t),J=c.NextRequestAdapter.fromNodeNextRequest($,(0,c.signalFromNodeResponse)(t));try{let s=async e=>x.handle(J,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=q.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${U} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${U} ${a}`)}),l=!!(0,o.getRequestMeta)(e,"minimalMode"),d=async o=>{var i,d;let u=async({previousCacheEntry:n})=>{try{if(!l&&A&&T&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await s(o);e.fetchMetrics=L.renderOpts.fetchMetrics;let i=L.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let d=L.renderOpts.collectedTags;if(!_)return await (0,h.sendResponse)($,B,a,L.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(a.headers);d&&(t[R.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=R.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,n=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=R.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await x.onRequestError(e,t,{routerKind:"App Router",routePath:a,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:A})},!1,S),t}},c=await x.handleResponse({req:e,nextConfig:C,cacheKey:F,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:O,isRoutePPREnabled:!1,isOnDemandRevalidate:A,revalidateOnlyGenerated:T,responseGenerator:u,waitUntil:r.waitUntil,isMinimalMode:l});if(!_)return null;if((null==c||null==(i=c.value)?void 0:i.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(d=c.value)?void 0:d.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});l||t.setHeader("x-nextjs-cache",A?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,f.fromNodeOutgoingHttpHeaders)(c.value.headers);return l&&_||p.delete(R.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,g.getCacheControlHeader)(c.cacheControl)),await (0,h.sendResponse)($,B,new Response(c.value.body,{headers:p,status:c.value.status||200})),null};K?await d(K):await q.withPropagatedContext(e.headers,()=>q.trace(p.BaseServerSpan.handleRequest,{spanName:`${U} ${a}`,kind:i.SpanKind.SERVER,attributes:{"http.method":U,"http.target":e.url}},d))}catch(t){if(t instanceof y.NoFallbackError||await x.onRequestError(e,t,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:A})},!1,S),_)throw t;return await (0,h.sendResponse)($,B,new Response(null,{status:500})),null}}e.s(["handler",()=>N,"patchFetch",()=>C,"routeModule",()=>x,"serverHooks",()=>S,"workAsyncStorage",()=>b,"workUnitAsyncStorage",()=>O]),r()}catch(e){r(e)}},!1)];
|
|
1
|
+
module.exports=[815058,e=>e.a(async(t,r)=>{try{var a=e.i(745015),n=e.i(89171),s=e.i(924868),o=e.i(814747),i=e.i(266240),l=e.i(841788),d=e.i(197892),u=e.i(676088),c=e.i(200392);e.i(245272);var p=e.i(125852),m=e.i(195975),h=t([u,c]);[u,c]=h.then?(await h)():h;let y=()=>(0,i.getCliPrimaryConfigPath)("droid"),v=async()=>{try{let e=y(),t=await s.default.readFile(e,"utf-8");return JSON.parse(t)}catch(e){if("ENOENT"===e.code)return null;throw e}};async function f(){try{let e=await (0,i.getCliRuntimeStatus)("droid");if(!e.installed||!e.runnable)return n.NextResponse.json({installed:e.installed,runnable:e.runnable,command:e.command,commandPath:e.commandPath,runtimeMode:e.runtimeMode,reason:e.reason,settings:null,message:e.installed&&!e.runnable?"Factory Droid CLI is installed but not runnable":"Factory Droid CLI is not installed"});let t=await v();return n.NextResponse.json({installed:e.installed,runnable:e.runnable,command:e.command,commandPath:e.commandPath,runtimeMode:e.runtimeMode,reason:e.reason,settings:t,hasOmniRoute:!!t&&!!t.customModels&&t.customModels.some(e=>"custom:OmniRoute-0"===e.id),settingsPath:y()})}catch(e){return console.log("Error checking droid settings:",e),n.NextResponse.json({error:"Failed to check droid settings"},{status:500})}}async function g(e){let t;try{t=await e.json()}catch{return n.NextResponse.json({error:{message:"Invalid request",details:[{field:"body",message:"Invalid JSON body"}]}},{status:400})}try{let e=(0,i.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});let r=(0,c.validateBody)(u.cliModelConfigSchema,t);if((0,c.isValidationFailure)(r))return n.NextResponse.json({error:r.error},{status:400});let{baseUrl:a,model:m}=r.data,{apiKey:h}=r.data,f="string"==typeof t?.keyId?t.keyId.trim():null;if(f)try{let e=await (0,p.getApiKeyById)(f);e?.key&&(h=e.key)}catch{}let g=o.default.dirname(y()),R=y();await s.default.mkdir(g,{recursive:!0}),await (0,l.createBackup)("droid",R);let v={};try{let e=await s.default.readFile(R,"utf-8");v=JSON.parse(e)}catch{}v.customModels||(v.customModels=[]),v.customModels=v.customModels.filter(e=>"custom:OmniRoute-0"!==e.id);let w=a.endsWith("/v1")?a:`${a}/v1`,E={model:m,id:"custom:OmniRoute-0",index:0,baseUrl:w,apiKey:h||"your_api_key",displayName:m,maxOutputTokens:131072,noImageSupport:!1,provider:"openai"};v.customModels.unshift(E),await s.default.writeFile(R,JSON.stringify(v,null,2));try{(0,d.saveCliToolLastConfigured)("droid")}catch{}return n.NextResponse.json({success:!0,message:"Factory Droid settings applied successfully!",settingsPath:R})}catch(e){return console.log("Error updating droid settings:",e),n.NextResponse.json({error:"Failed to update droid settings"},{status:500})}}async function R(){try{let e=(0,i.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});let t=y();await (0,l.createBackup)("droid",t);let r={};try{let e=await s.default.readFile(t,"utf-8");r=JSON.parse(e)}catch(e){if("ENOENT"===e.code)return n.NextResponse.json({success:!0,message:"No settings file to reset"});throw e}r.customModels&&(r.customModels=r.customModels.filter(e=>"custom:OmniRoute-0"!==e.id),0===r.customModels.length&&delete r.customModels),await s.default.writeFile(t,JSON.stringify(r,null,2));try{(0,d.deleteCliToolLastConfigured)("droid")}catch{}return n.NextResponse.json({success:!0,message:"OmniRoute settings removed successfully"})}catch(e){return console.log("Error resetting droid settings:",e),n.NextResponse.json({error:"Failed to reset droid settings"},{status:500})}}(0,m.ensureServerEntryExports)([f,g,R]),(0,a.registerServerReference)(f,"00f92543126ce0feec17e0c09ecc34c02ccb7e1e40",null),(0,a.registerServerReference)(g,"40c0316cab3c5d296ec6e550763dd86ccab4987bcf",null),(0,a.registerServerReference)(R,"0011c67513a6d0ced51a3661645ce463c9c1d6294e",null),e.s(["DELETE",()=>R,"GET",()=>f,"POST",()=>g]),r()}catch(e){r(e)}},!1),122141,e=>e.a(async(t,r)=>{try{var a=e.i(747909),n=e.i(174017),s=e.i(996250),o=e.i(759756),i=e.i(561916),l=e.i(174677),d=e.i(869741),u=e.i(316795),c=e.i(487718),p=e.i(995169),m=e.i(47587),h=e.i(666012),f=e.i(570101),g=e.i(626937),R=e.i(10372),y=e.i(193695);e.i(52474);var v=e.i(600220),w=e.i(815058),E=t([w]);[w]=E.then?(await E)():E;let x=new a.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/cli-tools/droid-settings/route",pathname:"/api/cli-tools/droid-settings",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/cli-tools/droid-settings/route.ts",nextConfigOutput:"standalone",userland:w}),{workAsyncStorage:O,workUnitAsyncStorage:b,serverHooks:S}=x;function C(){return(0,s.patchFetch)({workAsyncStorage:O,workUnitAsyncStorage:b})}async function N(e,t,r){x.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let a="/api/cli-tools/droid-settings/route";a=a.replace(/\/index$/,"")||"/";let s=await x.prepare(e,t,{srcPage:a,multiZoneDraftMode:!1});if(!s)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:w,params:E,nextConfig:C,parsedUrl:N,isDraftMode:O,prerenderManifest:b,routerServerContext:S,isOnDemandRevalidate:A,revalidateOnlyGenerated:T,resolvedPathname:P,clientReferenceManifest:M,serverActionsManifest:k}=s,I=(0,d.normalizeAppPath)(a),_=!!(b.dynamicRoutes[I]||b.routes[P]),j=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,N,!1):t.end("This page could not be found"),null);if(_&&!O){let e=!!b.routes[P],t=b.dynamicRoutes[I];if(t&&!1===t.fallback&&!e){if(C.experimental.adapterPath)return await j();throw new y.NoFallbackError}}let F=null;!_||x.isDev||O||(F=P,F="/index"===F?"/":F);let D=!0===x.isDev||!_,H=_&&!D;k&&M&&(0,l.setManifestsSingleton)({page:a,clientReferenceManifest:M,serverActionsManifest:k});let U=e.method||"GET",q=(0,i.getTracer)(),K=q.getActiveScopeSpan(),L={params:E,prerenderManifest:b,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:D,incrementalCache:(0,o.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:C.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>x.onRequestError(e,t,a,n,S)},sharedContext:{buildId:w}},$=new u.NodeNextRequest(e),B=new u.NodeNextResponse(t),J=c.NextRequestAdapter.fromNodeNextRequest($,(0,c.signalFromNodeResponse)(t));try{let s=async e=>x.handle(J,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=q.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${U} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${U} ${a}`)}),l=!!(0,o.getRequestMeta)(e,"minimalMode"),d=async o=>{var i,d;let u=async({previousCacheEntry:n})=>{try{if(!l&&A&&T&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await s(o);e.fetchMetrics=L.renderOpts.fetchMetrics;let i=L.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let d=L.renderOpts.collectedTags;if(!_)return await (0,h.sendResponse)($,B,a,L.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(a.headers);d&&(t[R.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=R.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,n=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=R.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await x.onRequestError(e,t,{routerKind:"App Router",routePath:a,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:A})},!1,S),t}},c=await x.handleResponse({req:e,nextConfig:C,cacheKey:F,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:b,isRoutePPREnabled:!1,isOnDemandRevalidate:A,revalidateOnlyGenerated:T,responseGenerator:u,waitUntil:r.waitUntil,isMinimalMode:l});if(!_)return null;if((null==c||null==(i=c.value)?void 0:i.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(d=c.value)?void 0:d.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});l||t.setHeader("x-nextjs-cache",A?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),O&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,f.fromNodeOutgoingHttpHeaders)(c.value.headers);return l&&_||p.delete(R.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,g.getCacheControlHeader)(c.cacheControl)),await (0,h.sendResponse)($,B,new Response(c.value.body,{headers:p,status:c.value.status||200})),null};K?await d(K):await q.withPropagatedContext(e.headers,()=>q.trace(p.BaseServerSpan.handleRequest,{spanName:`${U} ${a}`,kind:i.SpanKind.SERVER,attributes:{"http.method":U,"http.target":e.url}},d))}catch(t){if(t instanceof y.NoFallbackError||await x.onRequestError(e,t,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:A})},!1,S),_)throw t;return await (0,h.sendResponse)($,B,new Response(null,{status:500})),null}}e.s(["handler",()=>N,"patchFetch",()=>C,"routeModule",()=>x,"serverHooks",()=>S,"workAsyncStorage",()=>O,"workUnitAsyncStorage",()=>b]),r()}catch(e){r(e)}},!1)];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_ee9b677b._.js.map
|