omniroute 3.1.4 → 3.1.5

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.
Files changed (90) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/build-manifest.json +2 -2
  3. package/app/.next/prerender-manifest.json +3 -3
  4. package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
  5. package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
  6. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/search-tools/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
  32. package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
  34. package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
  35. package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
  36. package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/_global-error.html +2 -2
  40. package/app/.next/server/app/_global-error.rsc +1 -1
  41. package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  42. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  43. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  44. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  45. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  46. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  47. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  48. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  50. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
  54. package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
  58. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  59. package/app/.next/server/chunks/[root-of-the-server]__051203a6._.js +2 -2
  60. package/app/.next/server/chunks/[root-of-the-server]__0891af92._.js +1 -1
  61. package/app/.next/server/chunks/[root-of-the-server]__1f2b0d89._.js +1 -1
  62. package/app/.next/server/chunks/[root-of-the-server]__46e00e59._.js +1 -1
  63. package/app/.next/server/chunks/[root-of-the-server]__6e52619e._.js +1 -1
  64. package/app/.next/server/chunks/[root-of-the-server]__7ace0fcd._.js +1 -1
  65. package/app/.next/server/chunks/[root-of-the-server]__7fa4d14e._.js +1 -1
  66. package/app/.next/server/chunks/_05c48915._.js +1 -1
  67. package/app/.next/server/chunks/_06515a8a._.js +1 -1
  68. package/app/.next/server/chunks/_2115d8de._.js +1 -1
  69. package/app/.next/server/chunks/_3ac953eb._.js +1 -1
  70. package/app/.next/server/chunks/_4b8fd853._.js +1 -1
  71. package/app/.next/server/chunks/_68683848._.js +1 -1
  72. package/app/.next/server/chunks/_ee9b677b._.js +1 -1
  73. package/app/.next/server/chunks/src_4787afd3._.js +1 -1
  74. package/app/.next/server/chunks/ssr/[root-of-the-server]__9ef96d20._.js +1 -1
  75. package/app/.next/server/chunks/ssr/[root-of-the-server]__a6942102._.js +1 -1
  76. package/app/.next/server/chunks/ssr/src_i18n_messages_zh-CN_json_f4112d90._.js +1 -1
  77. package/app/.next/server/pages/500.html +2 -2
  78. package/app/.next/server/server-reference-manifest.js +1 -1
  79. package/app/.next/server/server-reference-manifest.json +1 -1
  80. package/app/.next/static/chunks/{d0df17b6e085c981.js → baf0a258e0ffe591.js} +1 -1
  81. package/app/CHANGELOG.md +12 -0
  82. package/app/docs/openapi.yaml +1 -1
  83. package/app/package-lock.json +2 -2
  84. package/app/package.json +1 -1
  85. package/app/src/i18n/messages/zh-CN.json +282 -245
  86. package/app/src/sse/services/auth.ts +23 -0
  87. package/package.json +1 -1
  88. /package/app/.next/static/{lZXIH53lig53hzn5tDll0 → xr28pZiWERP5X_Cmq10cV}/_buildManifest.js +0 -0
  89. /package/app/.next/static/{lZXIH53lig53hzn5tDll0 → xr28pZiWERP5X_Cmq10cV}/_clientMiddlewareManifest.json +0 -0
  90. /package/app/.next/static/{lZXIH53lig53hzn5tDll0 → xr28pZiWERP5X_Cmq10cV}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[495767,e=>e.a(async(t,a)=>{try{var r=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 R=()=>(0,i.getCliPrimaryConfigPath)("openclaw"),v=async()=>{try{let e=R(),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)("openclaw");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?"Open Claw CLI is installed but not runnable":"Open Claw 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.models&&!!t.models.providers&&!!t.models.providers.omniroute,settingsPath:R()})}catch(e){return console.log("Error checking openclaw settings:",e),n.NextResponse.json({error:"Failed to check openclaw 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 a=(0,c.validateBody)(u.cliModelConfigSchema,t);if((0,c.isValidationFailure)(a))return n.NextResponse.json({error:a.error},{status:400});let{baseUrl:r,apiKey:m,model:h}=a.data,f="string"==typeof t?.keyId?t.keyId.trim():null;if(f)try{let e=await (0,p.getApiKeyById)(f);e?.key&&(m=e.key)}catch{}let g=o.default.dirname(R()),w=R();await s.default.mkdir(g,{recursive:!0}),await (0,l.createBackup)("openclaw",w);let v={};try{let e=await s.default.readFile(w,"utf-8");v=JSON.parse(e)}catch{}v.agents||(v.agents={}),v.agents.defaults||(v.agents.defaults={}),v.agents.defaults.model||(v.agents.defaults.model={}),v.models||(v.models={}),v.models.providers||(v.models.providers={});let y=r.endsWith("/v1")?r:`${r}/v1`;v.agents.defaults.model.primary=`omniroute/${h}`,v.models.providers.omniroute={baseUrl:y,apiKey:m||"your_api_key",api:"openai-completions",models:[{id:h,name:h.split("/").pop()||h}]},await s.default.writeFile(w,JSON.stringify(v,null,2));try{(0,d.saveCliToolLastConfigured)("openclaw")}catch{}return n.NextResponse.json({success:!0,message:"Open Claw settings applied successfully!",settingsPath:w})}catch(e){return console.log("Error updating openclaw settings:",e),n.NextResponse.json({error:"Failed to update openclaw settings"},{status:500})}}async function w(){try{let e=(0,i.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});let t=R();await (0,l.createBackup)("openclaw",t);let a={};try{let e=await s.default.readFile(t,"utf-8");a=JSON.parse(e)}catch(e){if("ENOENT"===e.code)return n.NextResponse.json({success:!0,message:"No settings file to reset"});throw e}a.models&&a.models.providers&&(delete a.models.providers.omniroute,0===Object.keys(a.models.providers).length&&delete a.models.providers),a.agents?.defaults?.model?.primary?.startsWith("omniroute/")&&delete a.agents.defaults.model.primary,await s.default.writeFile(t,JSON.stringify(a,null,2));try{(0,d.deleteCliToolLastConfigured)("openclaw")}catch{}return n.NextResponse.json({success:!0,message:"OmniRoute settings removed successfully"})}catch(e){return console.log("Error resetting openclaw settings:",e),n.NextResponse.json({error:"Failed to reset openclaw settings"},{status:500})}}(0,m.ensureServerEntryExports)([f,g,w]),(0,r.registerServerReference)(f,"006d56bfe2b06988c03887e9c41bd69d738562e2d1",null),(0,r.registerServerReference)(g,"40c0636fcbcf681ace4c53f3426ff414204aa956bc",null),(0,r.registerServerReference)(w,"00bdde13ee562d48680ee7ae4a8e36deb0a6c2d846",null),e.s(["DELETE",()=>w,"GET",()=>f,"POST",()=>g]),a()}catch(e){a(e)}},!1),128142,e=>e.a(async(t,a)=>{try{var r=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),w=e.i(10372),R=e.i(193695);e.i(52474);var v=e.i(600220),y=e.i(495767),E=t([y]);[y]=E.then?(await E)():E;let x=new r.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/cli-tools/openclaw-settings/route",pathname:"/api/cli-tools/openclaw-settings",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/cli-tools/openclaw-settings/route.ts",nextConfigOutput:"standalone",userland:y}),{workAsyncStorage:b,workUnitAsyncStorage:O,serverHooks:A}=x;function C(){return(0,s.patchFetch)({workAsyncStorage:b,workUnitAsyncStorage:O})}async function N(e,t,a){x.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let r="/api/cli-tools/openclaw-settings/route";r=r.replace(/\/index$/,"")||"/";let s=await x.prepare(e,t,{srcPage:r,multiZoneDraftMode:!1});if(!s)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:y,params:E,nextConfig:C,parsedUrl:N,isDraftMode:b,prerenderManifest:O,routerServerContext:A,isOnDemandRevalidate:S,revalidateOnlyGenerated:P,resolvedPathname:T,clientReferenceManifest:k,serverActionsManifest:I}=s,_=(0,d.normalizeAppPath)(r),j=!!(O.dynamicRoutes[_]||O.routes[T]),F=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,N,!1):t.end("This page could not be found"),null);if(j&&!b){let e=!!O.routes[T],t=O.dynamicRoutes[_];if(t&&!1===t.fallback&&!e){if(C.experimental.adapterPath)return await F();throw new R.NoFallbackError}}let H=null;!j||x.isDev||b||(H=T,H="/index"===H?"/":H);let M=!0===x.isDev||!j,U=j&&!M;I&&k&&(0,l.setManifestsSingleton)({page:r,clientReferenceManifest:k,serverActionsManifest:I});let q=e.method||"GET",D=(0,i.getTracer)(),$=D.getActiveScopeSpan(),K={params:E,prerenderManifest:O,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:M,incrementalCache:(0,o.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:C.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>x.onRequestError(e,t,r,n,A)},sharedContext:{buildId:y}},L=new u.NodeNextRequest(e),B=new u.NodeNextResponse(t),J=c.NextRequestAdapter.fromNodeNextRequest(L,(0,c.signalFromNodeResponse)(t));try{let s=async e=>x.handle(J,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=D.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 i,d;let u=async({previousCacheEntry:n})=>{try{if(!l&&S&&P&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await s(o);e.fetchMetrics=K.renderOpts.fetchMetrics;let i=K.renderOpts.pendingWaitUntil;i&&a.waitUntil&&(a.waitUntil(i),i=void 0);let d=K.renderOpts.collectedTags;if(!j)return await (0,h.sendResponse)(L,B,r,K.renderOpts.pendingWaitUntil),null;{let e=await r.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(r.headers);d&&(t[w.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=w.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,n=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=w.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:r.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await x.onRequestError(e,t,{routerKind:"App Router",routePath:r,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:S})},!1,A),t}},c=await x.handleResponse({req:e,nextConfig:C,cacheKey:H,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:O,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:P,responseGenerator:u,waitUntil:a.waitUntil,isMinimalMode:l});if(!j)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",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,f.fromNodeOutgoingHttpHeaders)(c.value.headers);return l&&j||p.delete(w.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)(L,B,new Response(c.value.body,{headers:p,status:c.value.status||200})),null};$?await d($):await D.withPropagatedContext(e.headers,()=>D.trace(p.BaseServerSpan.handleRequest,{spanName:`${q} ${r}`,kind:i.SpanKind.SERVER,attributes:{"http.method":q,"http.target":e.url}},d))}catch(t){if(t instanceof R.NoFallbackError||await x.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:S})},!1,A),j)throw t;return await (0,h.sendResponse)(L,B,new Response(null,{status:500})),null}}e.s(["handler",()=>N,"patchFetch",()=>C,"routeModule",()=>x,"serverHooks",()=>A,"workAsyncStorage",()=>b,"workUnitAsyncStorage",()=>O]),a()}catch(e){a(e)}},!1)];
1
+ module.exports=[495767,e=>e.a(async(t,a)=>{try{var r=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 R=()=>(0,i.getCliPrimaryConfigPath)("openclaw"),v=async()=>{try{let e=R(),t=await s.default.readFile(e,"utf-8");return JSON.parse(t)}catch(e){if("ENOENT"===e.code)return null;throw e}};async function g(){try{let e=await (0,i.getCliRuntimeStatus)("openclaw");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?"Open Claw CLI is installed but not runnable":"Open Claw 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.models&&!!t.models.providers&&!!t.models.providers.omniroute,settingsPath:R()})}catch(e){return console.log("Error checking openclaw settings:",e),n.NextResponse.json({error:"Failed to check openclaw settings"},{status:500})}}async function f(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 a=(0,c.validateBody)(u.cliModelConfigSchema,t);if((0,c.isValidationFailure)(a))return n.NextResponse.json({error:a.error},{status:400});let{baseUrl:r,apiKey:m,model:h}=a.data,g="string"==typeof t?.keyId?t.keyId.trim():null;if(g)try{let e=await (0,p.getApiKeyById)(g);e?.key&&(m=e.key)}catch{}let f=o.default.dirname(R()),w=R();await s.default.mkdir(f,{recursive:!0}),await (0,l.createBackup)("openclaw",w);let v={};try{let e=await s.default.readFile(w,"utf-8");v=JSON.parse(e)}catch{}v.agents||(v.agents={}),v.agents.defaults||(v.agents.defaults={}),v.agents.defaults.model||(v.agents.defaults.model={}),v.models||(v.models={}),v.models.providers||(v.models.providers={});let y=r.endsWith("/v1")?r:`${r}/v1`;v.agents.defaults.model.primary=`omniroute/${h}`,v.models.providers.omniroute={baseUrl:y,apiKey:m||"your_api_key",api:"openai-completions",models:[{id:h,name:h.split("/").pop()||h}]},await s.default.writeFile(w,JSON.stringify(v,null,2));try{(0,d.saveCliToolLastConfigured)("openclaw")}catch{}return n.NextResponse.json({success:!0,message:"Open Claw settings applied successfully!",settingsPath:w})}catch(e){return console.log("Error updating openclaw settings:",e),n.NextResponse.json({error:"Failed to update openclaw settings"},{status:500})}}async function w(){try{let e=(0,i.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});let t=R();await (0,l.createBackup)("openclaw",t);let a={};try{let e=await s.default.readFile(t,"utf-8");a=JSON.parse(e)}catch(e){if("ENOENT"===e.code)return n.NextResponse.json({success:!0,message:"No settings file to reset"});throw e}a.models&&a.models.providers&&(delete a.models.providers.omniroute,0===Object.keys(a.models.providers).length&&delete a.models.providers),a.agents?.defaults?.model?.primary?.startsWith("omniroute/")&&delete a.agents.defaults.model.primary,await s.default.writeFile(t,JSON.stringify(a,null,2));try{(0,d.deleteCliToolLastConfigured)("openclaw")}catch{}return n.NextResponse.json({success:!0,message:"OmniRoute settings removed successfully"})}catch(e){return console.log("Error resetting openclaw settings:",e),n.NextResponse.json({error:"Failed to reset openclaw settings"},{status:500})}}(0,m.ensureServerEntryExports)([g,f,w]),(0,r.registerServerReference)(g,"0058a87c25ec9e12939ddfcaaa1a10302eb6b52c3d",null),(0,r.registerServerReference)(f,"400d9d08b46072d8ad959640b9e8318974033e7c2b",null),(0,r.registerServerReference)(w,"00c72ea9092cb5a5a64099f1387cc85c6255dc4a9b",null),e.s(["DELETE",()=>w,"GET",()=>g,"POST",()=>f]),a()}catch(e){a(e)}},!1),128142,e=>e.a(async(t,a)=>{try{var r=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),g=e.i(570101),f=e.i(626937),w=e.i(10372),R=e.i(193695);e.i(52474);var v=e.i(600220),y=e.i(495767),E=t([y]);[y]=E.then?(await E)():E;let x=new r.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/cli-tools/openclaw-settings/route",pathname:"/api/cli-tools/openclaw-settings",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/cli-tools/openclaw-settings/route.ts",nextConfigOutput:"standalone",userland:y}),{workAsyncStorage:b,workUnitAsyncStorage:O,serverHooks:A}=x;function C(){return(0,s.patchFetch)({workAsyncStorage:b,workUnitAsyncStorage:O})}async function N(e,t,a){x.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let r="/api/cli-tools/openclaw-settings/route";r=r.replace(/\/index$/,"")||"/";let s=await x.prepare(e,t,{srcPage:r,multiZoneDraftMode:!1});if(!s)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:y,params:E,nextConfig:C,parsedUrl:N,isDraftMode:b,prerenderManifest:O,routerServerContext:A,isOnDemandRevalidate:S,revalidateOnlyGenerated:P,resolvedPathname:T,clientReferenceManifest:k,serverActionsManifest:I}=s,_=(0,d.normalizeAppPath)(r),j=!!(O.dynamicRoutes[_]||O.routes[T]),F=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,N,!1):t.end("This page could not be found"),null);if(j&&!b){let e=!!O.routes[T],t=O.dynamicRoutes[_];if(t&&!1===t.fallback&&!e){if(C.experimental.adapterPath)return await F();throw new R.NoFallbackError}}let H=null;!j||x.isDev||b||(H=T,H="/index"===H?"/":H);let M=!0===x.isDev||!j,U=j&&!M;I&&k&&(0,l.setManifestsSingleton)({page:r,clientReferenceManifest:k,serverActionsManifest:I});let q=e.method||"GET",D=(0,i.getTracer)(),$=D.getActiveScopeSpan(),K={params:E,prerenderManifest:O,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:M,incrementalCache:(0,o.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:C.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>x.onRequestError(e,t,r,n,A)},sharedContext:{buildId:y}},L=new u.NodeNextRequest(e),B=new u.NodeNextResponse(t),J=c.NextRequestAdapter.fromNodeNextRequest(L,(0,c.signalFromNodeResponse)(t));try{let s=async e=>x.handle(J,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=D.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 i,d;let u=async({previousCacheEntry:n})=>{try{if(!l&&S&&P&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await s(o);e.fetchMetrics=K.renderOpts.fetchMetrics;let i=K.renderOpts.pendingWaitUntil;i&&a.waitUntil&&(a.waitUntil(i),i=void 0);let d=K.renderOpts.collectedTags;if(!j)return await (0,h.sendResponse)(L,B,r,K.renderOpts.pendingWaitUntil),null;{let e=await r.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(r.headers);d&&(t[w.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=w.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,n=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=w.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:r.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await x.onRequestError(e,t,{routerKind:"App Router",routePath:r,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:S})},!1,A),t}},c=await x.handleResponse({req:e,nextConfig:C,cacheKey:H,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:O,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:P,responseGenerator:u,waitUntil:a.waitUntil,isMinimalMode:l});if(!j)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",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&&j||p.delete(w.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,f.getCacheControlHeader)(c.cacheControl)),await (0,h.sendResponse)(L,B,new Response(c.value.body,{headers:p,status:c.value.status||200})),null};$?await d($):await D.withPropagatedContext(e.headers,()=>D.trace(p.BaseServerSpan.handleRequest,{spanName:`${q} ${r}`,kind:i.SpanKind.SERVER,attributes:{"http.method":q,"http.target":e.url}},d))}catch(t){if(t instanceof R.NoFallbackError||await x.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:S})},!1,A),j)throw t;return await (0,h.sendResponse)(L,B,new Response(null,{status:500})),null}}e.s(["handler",()=>N,"patchFetch",()=>C,"routeModule",()=>x,"serverHooks",()=>A,"workAsyncStorage",()=>b,"workUnitAsyncStorage",()=>O]),a()}catch(e){a(e)}},!1)];
2
2
 
3
3
  //# sourceMappingURL=_2115d8de._.js.map
@@ -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,"00ac217f24686c10af58deacec0e2df001238d25b1",null),(0,a.registerServerReference)(g,"40d8f601765bc25bed77daa6dcd92c0e2db1ec8efe",null),(0,a.registerServerReference)(R,"008723e0ff4ecffbaad80f0168b29de549d5ad3cb2",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,"005c26bf396a7a1b680cea629e3c48cafd968dcf81",null),(0,a.registerServerReference)(g,"404142f28c9ecaac7bcbe598685a658ba58c997a59",null),(0,a.registerServerReference)(R,"00ff5aa8a7d05c7dc0ae5e8d454dfea40f5fad4b7a",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,"00f4c7d3ae23764c1694e408e029a3a8ee59f51743",null),(0,a.registerServerReference)(g,"4049effa6318472bc5ce36b77c942add3791804845",null),(0,a.registerServerReference)(R,"4035eea4b47361ad62a7dc359c1e7495ad48f0494a",null),(0,a.registerServerReference)(m,"40d05406d6b92ca9b263d086e9c755a27d3f715123",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:P}=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:P,isOnDemandRevalidate:S,revalidateOnlyGenerated:b,resolvedPathname:O,clientReferenceManifest:T,serverActionsManifest:I}=o,_=(0,u.normalizeAppPath)(a),k=!!(A.dynamicRoutes[_]||A.routes[O]),F=async()=>((null==P?void 0:P.render404)?await P.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,P)},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&&S&&b&&!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:S})},!1,P),t}},c=await C.handleResponse({req:e,nextConfig:N,cacheKey:$,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:b,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",S?"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:S})},!1,P),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",()=>P,"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,"000553b8446686b059cd91f332f6beed32c42d1f46",null),(0,a.registerServerReference)(g,"408e79d4fb716511450bf8dd1a46092b0d489bfd2f",null),(0,a.registerServerReference)(R,"40adf85aadf790a2f3f62e69d93f47124c64c70d04",null),(0,a.registerServerReference)(m,"4056a97494163948ce0ab0555046971c20513eccfc",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:P}=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:P,isOnDemandRevalidate:b,revalidateOnlyGenerated:S,resolvedPathname:O,clientReferenceManifest:T,serverActionsManifest:I}=o,_=(0,u.normalizeAppPath)(a),k=!!(A.dynamicRoutes[_]||A.routes[O]),F=async()=>((null==P?void 0:P.render404)?await P.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,P)},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&&b&&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:b})},!1,P),t}},c=await C.handleResponse({req:e,nextConfig:N,cacheKey:$,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:b,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",b?"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:b})},!1,P),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",()=>P,"workAsyncStorage",()=>j,"workUnitAsyncStorage",()=>A]),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,"008e842b95b68f70de41986f9bd76a8914cd20de41",null),(0,r.registerServerReference)(R,"406a043ff73c7877306239281e26ecc941e1c60933",null),(0,r.registerServerReference)(y,"00c982ef3fc1bdba2ef1c4ece76e5bd70a6d7e7281",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,"003b0d394e37a31397eb0f0f6a3b3ed11070d202b5",null),(0,r.registerServerReference)(R,"4099d63776d68c44e3cd7f4f8106b3c5e004c09978",null),(0,r.registerServerReference)(y,"00c35b359a483277e86bc2f98602f18e6bdda37138",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
@@ -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,"00af358eb1f9d9e16cdd38a41731f6d5524575b856",null),(0,a.registerServerReference)(g,"40b8ce03ea112fc1d1e5da92d039ef05d4689c1629",null),(0,a.registerServerReference)(R,"000c8eeb201bf652de8517911127bd2553723ada6c",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,"0050dbcb3fefc0b22423124941e89f88befd0c21be",null),(0,a.registerServerReference)(g,"40f209f1fe6ce693bae51b8895c3312e680e75342a",null),(0,a.registerServerReference)(R,"00dd375f5c3b9ada6e0029c770934a02f3c3532dbb",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)];
2
2
 
3
3
  //# sourceMappingURL=_ee9b677b._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[287726,e=>{"use strict";e.i(245272);var t=e.i(385498),r=e.i(125852),i=e.i(548941),n=e.i(25687),l=e.i(441637),o=e.i(828059),a=e.i(16023),s=e.i(69373),c=e.i(706901),d=e.i(73114);function u(e){return e&&"object"==typeof e&&!Array.isArray(e)?e:{}}function f(e){return"string"==typeof e&&e.trim().length>0?e:null}function p(e,t=0){if("number"==typeof e&&Number.isFinite(e))return e;if("string"==typeof e&&e.trim().length>0){let r=Number(e);return Number.isFinite(r)?r:t}return t}function m(e){let t=u(e);return{id:f(t.id)||"",isActive:!0===t.isActive,rateLimitedUntil:f(t.rateLimitedUntil),testStatus:f(t.testStatus),apiKey:f(t.apiKey),accessToken:f(t.accessToken),refreshToken:f(t.refreshToken),tokenExpiresAt:f(t.tokenExpiresAt),expiresAt:f(t.expiresAt),projectId:f(t.projectId),providerSpecificData:u(t.providerSpecificData),lastUsedAt:f(t.lastUsedAt),consecutiveUseCount:p(t.consecutiveUseCount,0),priority:p(t.priority,999),lastError:f(t.lastError),lastErrorType:f(t.lastErrorType),lastErrorSource:f(t.lastErrorSource),errorCode:"string"==typeof t.errorCode||"number"==typeof t.errorCode?t.errorCode:null,backoffLevel:p(t.backoffLevel,0)}}function A(e,t){return"boolean"==typeof e?e:t}function h(e,t=90){return Math.min(100,Math.max(1,p(e,t)))}function g(e){if("string"!=typeof e)return null;let t=e.trim().toLowerCase();return t.length>0?t:null}function y(e){if("string"!=typeof e)return null;let t=e.trim().toLowerCase();return"session (5h)"===t||"5h"===t||"five_hour"===t?"session":"weekly (7d)"===t||"7d"===t||"seven_day"===t?"weekly":t}function w(e,t){if(!t)return null;let r=(0,s.getCodexModelScope)(t),i=u(e.codexScopeRateLimitedUntil)[r];return"string"==typeof i&&i.trim().length>0?i:null}function U(e,t){let r=w(e.providerSpecificData,t);return!!r&&new Date(r).getTime()>Date.now()}function T(e){let t=(e.testStatus||"").trim().toLowerCase();return"credits_exhausted"===t||"banned"===t||"expired"===t}function S(e){if(!e)return null;let t=new Date(e).getTime();return!Number.isFinite(t)||t<=Date.now()?null:t}function v(e){return e.map(e=>({raw:e,ms:S(e)})).filter(e=>null!==e.ms).sort((e,t)=>e.ms-t.ms)[0]?.raw||null}let $=Promise.resolve(),b=new Map;async function k(e,r=null,o=null,a=null){let s,f=$;$=new Promise(e=>{s=e});try{let s;await f;let $=await (0,t.getProviderConnections)({provider:e,isActive:!0}),b=(Array.isArray($)?$:[]).map(m).filter(e=>e.id.length>0);if(o&&o.length>0&&(b=b.filter(e=>o.includes(e.id))),c.debug("AUTH",`${e} | total connections: ${b.length}, excludeId: ${r||"none"}`),0===b.length){let r=await (0,t.getProviderConnections)({provider:e}),i=(Array.isArray(r)?r:[]).map(m).filter(e=>e.id.length>0);if(c.debug("AUTH",`${e} | all connections (incl inactive): ${i.length}`),i.length>0){let t=(0,l.getEarliestRateLimitedUntil)(i);if(t)return c.warn("AUTH",`${e} | all ${i.length} accounts rate limited (${(0,l.formatRetryAfter)(t)})`),{allRateLimited:!0,retryAfter:t,retryAfterHuman:(0,l.formatRetryAfter)(t)};c.warn("AUTH",`${e} | ${i.length} accounts found but none active`),i.forEach(e=>{c.debug("AUTH",` → ${e.id?.slice(0,8)} | isActive=${e.isActive} | rateLimitedUntil=${e.rateLimitedUntil||"none"} | testStatus=${e.testStatus}`)})}return c.warn("AUTH",`No credentials for ${e}`),null}let k=b.filter(t=>!(r&&t.id===r||(0,l.isAccountUnavailable)(t.rateLimitedUntil)||T(t)||"codex"===e&&U(t,a)));if(c.debug("AUTH",`${e} | available: ${k.length}/${b.length}`),b.forEach(t=>{let i=r&&t.id===r,n=(0,l.isAccountUnavailable)(t.rateLimitedUntil),o=T(t),s="codex"===e&&U(t,a);if(i||n)c.debug("AUTH",` → ${t.id?.slice(0,8)} | ${i?"excluded":""} ${n?`rateLimited until ${t.rateLimitedUntil}`:""}`);else if(o)c.debug("AUTH",` → ${t.id?.slice(0,8)} | skipped terminal status=${t.testStatus}`);else if(s){let e=w(t.providerSpecificData,a);c.debug("AUTH",` → ${t.id?.slice(0,8)} | codex scope-limited until ${e}`)}}),0===k.length){let t=(0,l.getEarliestRateLimitedUntil)(b)||("codex"===e?function(e,t){let r=null,i=1/0;for(let n of e){let e=w(n.providerSpecificData,t);if(!e)continue;let l=new Date(e).getTime();!(!Number.isFinite(l)||l<=Date.now())&&l<i&&(r=e,i=l)}return r}(b,a):null);if(t){let r=b.filter(e=>e.rateLimitedUntil&&new Date(e.rateLimitedUntil).getTime()>Date.now()).sort((e,t)=>new Date(e.rateLimitedUntil||0).getTime()-new Date(t.rateLimitedUntil||0).getTime())[0];return c.warn("AUTH",`${e} | all ${b.length} active accounts rate limited (${(0,l.formatRetryAfter)(t)}) | lastErrorCode=${r?.errorCode}, lastError=${r?.lastError?.slice(0,50)}`),{allRateLimited:!0,retryAfter:t,retryAfterHuman:(0,l.formatRetryAfter)(t),lastError:r?.lastError||null,lastErrorCode:r?.errorCode||null}}return c.warn("AUTH",`${e} | all ${b.length} accounts unavailable`),null}let D=k,L=[];if(D=k.filter(t=>{let r=function(e,t){let r=function(e,t){let r=u(t.limitPolicy),i=(Array.isArray(r.windows)?r.windows:[]).map(g).filter(Boolean);if("codex"===e){var n,l;let e,o,a,s=(n=i,l=t,o=(e=u(l.codexLimitPolicy),{use5h:A(e.use5h,!0),useWeekly:A(e.useWeekly,!0)}),a=(a=[...n.map(y).filter(Boolean)]).filter(e=>"session"===e?o.use5h:"weekly"!==e||o.useWeekly),o.use5h&&a.push("session"),o.useWeekly&&a.push("weekly"),[...new Set(a)]);return{enabled:A(r.enabled,s.length>0),thresholdPercent:h(r.thresholdPercent),windows:s}}return{enabled:A(r.enabled,!1),thresholdPercent:h(r.thresholdPercent),windows:i}}(e,t.providerSpecificData);if(!r.enabled||0===r.windows.length)return{blocked:!1,reasons:[],resetAt:null};let i=[],l=[];for(let e of r.windows){let o=(0,n.getQuotaWindowStatus)(t.id,e,r.thresholdPercent);o?.reachedThreshold&&(i.push(`${e} usage ${Math.round(o.usedPercentage)}%`),l.push(o.resetAt))}return{blocked:i.length>0,reasons:i,resetAt:v(l)}}(e,t);return!r.blocked||(L.push({id:t.id,reasons:r.reasons,resetAt:r.resetAt}),!1)}),L.length>0&&c.info("AUTH",`${e} | quota policy filtered ${L.length} account(s): ${L.map(e=>`${e.id.slice(0,8)}(${e.reasons.join(", ")})`).join("; ")}`),0===D.length&&k.length>0){let t=v(L.map(e=>e.resetAt)),r=S(t),i=r?new Date(r).toISOString():new Date(Date.now()+3e5).toISOString();return{allRateLimited:!0,retryAfter:i,retryAfterHuman:(0,l.formatRetryAfter)(i),lastError:`All ${e} accounts reached configured quota threshold`,lastErrorCode:429}}let E=D.filter(e=>!(0,n.isAccountQuotaExhausted)(e.id)),P=D.filter(e=>(0,n.isAccountQuotaExhausted)(e.id)),C=E.length>0?[...E,...P]:D;P.length>0&&c.debug("AUTH",`${e} | quota-aware: ${E.length} with quota, ${P.length} exhausted`);let x=await (0,i.getSettings)(),R=x.fallbackStrategy||"fill-first";if("round-robin"===R){let i=p(x.stickyRoundRobinLimit,3);if(null!==r)s=[...C].sort((e,t)=>{let r=e.backoffLevel||0,i=t.backoffLevel||0;return r!==i?r-i:e.lastUsedAt||t.lastUsedAt?e.lastUsedAt?t.lastUsedAt?new Date(e.lastUsedAt).getTime()-new Date(t.lastUsedAt).getTime():1:-1:(e.priority||999)-(t.priority||999)})[0],c.info("AUTH",`${e} round-robin: FALLBACK MODE - excluded ${r?.slice(0,8)}..., picked LRU ${s.id?.slice(0,8)}...`),await (0,t.updateProviderConnection)(s.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1});else{let r=[...C].sort((e,t)=>e.lastUsedAt||t.lastUsedAt?e.lastUsedAt?t.lastUsedAt?new Date(t.lastUsedAt).getTime()-new Date(e.lastUsedAt).getTime():-1:1:(e.priority||999)-(t.priority||999))[0],n=r?.consecutiveUseCount||0;r&&r.lastUsedAt&&n<i?(s=r,c.debug("AUTH",`${e} round-robin: staying with ${r.id?.slice(0,8)}... (count=${n}/${i})`),await (0,t.updateProviderConnection)(s.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:(s.consecutiveUseCount||0)+1})):(s=[...C].sort((e,t)=>{let r=e.backoffLevel||0,i=t.backoffLevel||0;return r!==i?r-i:e.lastUsedAt||t.lastUsedAt?e.lastUsedAt?t.lastUsedAt?new Date(e.lastUsedAt).getTime()-new Date(t.lastUsedAt).getTime():1:-1:(e.priority||999)-(t.priority||999)})[0],c.debug("AUTH",`${e} round-robin: switching to LRU ${s.id?.slice(0,8)}... (current count=${n} >= limit=${i} or no lastUsedAt)`),await (0,t.updateProviderConnection)(s.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1}))}}else if("p2c"===R)if(C.length<=2)s=C[0];else{let e=Math.floor(Math.random()*C.length),t=Math.floor(Math.random()*(C.length-1));t>=e&&t++;let r=C[e],i=C[t],n=(r.consecutiveUseCount||0)+10*!!r.lastError,l=(i.consecutiveUseCount||0)+10*!!i.lastError;s=n<=l?r:i}else if("random"===R){let e=Math.floor(Math.random()*C.length);s=C[e]}else if("least-used"===R)s=[...C].sort((e,t)=>e.lastUsedAt||t.lastUsedAt?e.lastUsedAt?t.lastUsedAt?new Date(e.lastUsedAt).getTime()-new Date(t.lastUsedAt).getTime():1:-1:(e.priority||999)-(t.priority||999))[0];else if("cost-optimized"===R)s=[...C].sort((e,t)=>(e.priority||999)-(t.priority||999))[0];else if("strict-random"===R){let t=C.map(e=>e.id),r=(0,d.getNextFromDeckSync)(`conn:${e}`,t);s=C.find(e=>e.id===r)||C[0]}else s=C[0];return{apiKey:s.apiKey,accessToken:s.accessToken,refreshToken:s.refreshToken,expiresAt:s.tokenExpiresAt||s.expiresAt||null,projectId:s.projectId,copilotToken:"string"==typeof s.providerSpecificData.copilotToken?s.providerSpecificData.copilotToken:null,providerSpecificData:s.providerSpecificData,connectionId:s.id,testStatus:s.testStatus,lastError:s.lastError,lastErrorType:s.lastErrorType,lastErrorSource:s.lastErrorSource,errorCode:s.errorCode,rateLimitedUntil:s.rateLimitedUntil}}finally{s&&s()}}async function D(e,r,i,n=null,d=null){let f,p=b.get(e)||Promise.resolve();b.set(e,new Promise(e=>{f=e}));try{await p;let f=await (0,t.getProviderConnections)({provider:n}),A=(Array.isArray(f)?f:[]).map(m).filter(e=>e.id.length>0).find(t=>t.id===e),h=A?.backoffLevel||0;if(A&&T(A))return c.info("AUTH",`${e.slice(0,8)} terminal status=${A.testStatus}, skipping cooldown overwrite`),{shouldFallback:!0,cooldownMs:0};if(A?.rateLimitedUntil&&new Date(A.rateLimitedUntil).getTime()>Date.now())return c.info("AUTH",`${e.slice(0,8)} already marked unavailable (until ${A.rateLimitedUntil}), skipping duplicate mark`),{shouldFallback:!0,cooldownMs:new Date(A.rateLimitedUntil).getTime()-Date.now()};if("codex"===n&&d){let t=w(A?.providerSpecificData||{},d);if(t&&new Date(t).getTime()>Date.now())return c.info("AUTH",`${e.slice(0,8)} already scope-limited for ${(0,s.getCodexModelScope)(d)} (until ${t}), skipping duplicate mark`),{shouldFallback:!0,cooldownMs:new Date(t).getTime()-Date.now()}}let{shouldFallback:g,cooldownMs:y,newBackoffLevel:U,reason:S}=(0,l.checkFallbackError)(r,i,h,d,n);if(!g)return{shouldFallback:!1,cooldownMs:0};let v=A?.providerSpecificData?.baseUrl;if((0,o.isLocalProvider)(v)&&404===r&&n&&d){let t=a.COOLDOWN_MS.notFoundLocal;return(0,l.lockModel)(n,e,d,"local_not_found",t),c.info("AUTH",`Local 404 for ${d} — model-only lockout ${t/1e3}s (connection stays active)`),{shouldFallback:!0,cooldownMs:t}}let $=(0,l.getUnavailableUntil)(y),b="string"==typeof i?i.slice(0,100):"Provider error";if("codex"===n&&429===r&&d&&A){let i=(0,s.getCodexModelScope)(d),o=u(A.providerSpecificData.codexScopeRateLimitedUntil),a=w(A.providerSpecificData,d)||$,c=Math.max(new Date(a).getTime()-Date.now(),0);return await (0,t.updateProviderConnection)(e,{testStatus:"unavailable",lastError:b,errorCode:r,lastErrorAt:new Date().toISOString(),backoffLevel:U??h,providerSpecificData:{...A.providerSpecificData,codexScopeRateLimitedUntil:{...o,[i]:a}}}),c>0&&(0,l.lockModel)(n,e,d,S||"unknown",c),r&&b&&console.error(`❌ ${n} [${r}] (${i}): ${b}`),{shouldFallback:!0,cooldownMs:c}}return await (0,t.updateProviderConnection)(e,{rateLimitedUntil:$,testStatus:"unavailable",lastError:b,errorCode:r,lastErrorAt:new Date().toISOString(),backoffLevel:U??h}),n&&d&&y>0&&(0,l.lockModel)(n,e,d,S||"unknown",y),n&&r&&b&&console.error(`❌ ${n} [${r}]: ${b}`),{shouldFallback:!0,cooldownMs:y}}finally{f&&f(),b.delete(e)}}async function L(e,r){(r.testStatus&&"active"!==r.testStatus||r.lastError||r.rateLimitedUntil||r.errorCode||r.lastErrorType||r.lastErrorSource)&&(await (0,t.updateProviderConnection)(e,{testStatus:"active",lastError:null,lastErrorAt:null,lastErrorType:null,lastErrorSource:null,errorCode:null,rateLimitedUntil:null,backoffLevel:0}),c.info("AUTH",`Account ${e.slice(0,8)} error cleared`))}async function E(e){e?.connectionId&&await L(e.connectionId,e)}function P(e){let t=e.headers.get("Authorization");return t?.startsWith("Bearer ")?t.slice(7):null}async function C(e){return!!e&&await (0,r.validateApiKey)(e)}e.s(["clearAccountError",()=>L,"clearRecoveredProviderState",()=>E,"extractApiKey",()=>P,"getProviderCredentials",()=>k,"isValidApiKey",()=>C,"markAccountUnavailable",()=>D])},478847,e=>{"use strict";var t=e.i(287726);e.i(245272);var r=e.i(125852),i=e.i(362225),n=e.i(719201),l=e.i(16023),o=e.i(706901);let a=new Map;async function s(e,s){let c=(0,t.extractApiKey)(e);if(!c)return{apiKey:null,apiKeyInfo:null,rejection:null};let d=null;try{d=await (0,r.getApiKeyMetadata)(c)}catch(e){return o.error("API_POLICY","Failed to fetch API key metadata. Request blocked.",{error:e}),{apiKey:c,apiKeyInfo:null,rejection:(0,n.errorResponse)(l.HTTP_STATUS.SERVICE_UNAVAILABLE,"API key policy unavailable")}}if(!d)return{apiKey:c,apiKeyInfo:null,rejection:null};if(!1===d.isActive)return{apiKey:c,apiKeyInfo:d,rejection:(0,n.errorResponse)(l.HTTP_STATUS.FORBIDDEN,"This API key is disabled")};if(d.accessSchedule&&d.accessSchedule.enabled&&!function(e){let t,r;if(!e.enabled)return!0;let i=new Date;try{t=new Intl.DateTimeFormat("en-US",{timeZone:e.tz,hour:"2-digit",minute:"2-digit",hour12:!1}).format(i)}catch{return!0}let[n,l]=t.replace(/^24:/,"00:").split(":").map(Number),o=60*n+l;try{r=new Intl.DateTimeFormat("en-US",{timeZone:e.tz,weekday:"short"}).format(i)}catch{return!0}let a={Sun:0,Mon:1,Tue:2,Wed:3,Thu:4,Fri:5,Sat:6}[r]??i.getDay();if(!e.days.includes(a))return!1;let[s,c]=e.from.split(":").map(Number),[d,u]=e.until.split(":").map(Number),f=60*s+c,p=60*d+u;return p<f?o>=f||o<p:o>=f&&o<p}(d.accessSchedule)){let{from:e,until:t,tz:r}=d.accessSchedule;return{apiKey:c,apiKeyInfo:d,rejection:(0,n.errorResponse)(l.HTTP_STATUS.FORBIDDEN,`Access denied outside allowed hours (${e}–${t} ${r})`)}}if(s&&d.allowedModels&&d.allowedModels.length>0&&!await (0,r.isModelAllowedForKey)(c,s))return{apiKey:c,apiKeyInfo:d,rejection:(0,n.errorResponse)(l.HTTP_STATUS.FORBIDDEN,`Model "${s}" is not allowed for this API key`)};if(d.id)try{let e=(0,i.checkBudget)(d.id);if(!e.allowed)return{apiKey:c,apiKeyInfo:d,rejection:(0,n.errorResponse)(l.HTTP_STATUS.RATE_LIMITED,e.reason||"Budget limit exceeded")}}catch(e){return o.error("API_POLICY","Budget check failed. Request blocked.",{error:e}),{apiKey:c,apiKeyInfo:d,rejection:(0,n.errorResponse)(l.HTTP_STATUS.SERVICE_UNAVAILABLE,"Budget policy unavailable")}}if(d.id&&(d.maxRequestsPerDay||d.maxRequestsPerMinute)){let e=function(e,t,r){if(!t&&!r)return null;let i=Date.now(),n=a.get(e);if(!n&&(n=[],a.set(e,n),a.size>5e3)){let e=a.keys().next().value;e&&a.delete(e)}let l=i-864e5;for(;n.length>0&&n[0]<l;)n.shift();if(r&&r>0){let e=i-6e4;if(n.filter(t=>t>=e).length>=r)return`Per-minute request limit exceeded (${r} RPM). Try again in a few seconds.`}return t&&t>0&&n.length>=t?`Daily request limit exceeded (${t} RPD). Resets in ${Math.ceil((n[0]+864e5-i)/6e4)} minutes.`:(n.push(i),null)}(d.id,d.maxRequestsPerDay,d.maxRequestsPerMinute);if(e)return{apiKey:c,apiKeyInfo:d,rejection:(0,n.errorResponse)(l.HTTP_STATUS.RATE_LIMITED,e)}}return{apiKey:c,apiKeyInfo:d,rejection:null}}e.s(["enforceApiKeyPolicy",()=>s])}];
1
+ module.exports=[287726,e=>{"use strict";e.i(245272);var t=e.i(385498),r=e.i(125852),i=e.i(548941),n=e.i(25687),l=e.i(441637),o=e.i(828059),a=e.i(16023),s=e.i(69373),c=e.i(706901),u=e.i(73114);function d(e){return e&&"object"==typeof e&&!Array.isArray(e)?e:{}}function f(e){return"string"==typeof e&&e.trim().length>0?e:null}function p(e,t=0){if("number"==typeof e&&Number.isFinite(e))return e;if("string"==typeof e&&e.trim().length>0){let r=Number(e);return Number.isFinite(r)?r:t}return t}function m(e){let t=d(e);return{id:f(t.id)||"",isActive:!0===t.isActive,rateLimitedUntil:f(t.rateLimitedUntil),testStatus:f(t.testStatus),apiKey:f(t.apiKey),accessToken:f(t.accessToken),refreshToken:f(t.refreshToken),tokenExpiresAt:f(t.tokenExpiresAt),expiresAt:f(t.expiresAt),projectId:f(t.projectId),providerSpecificData:d(t.providerSpecificData),lastUsedAt:f(t.lastUsedAt),consecutiveUseCount:p(t.consecutiveUseCount,0),priority:p(t.priority,999),lastError:f(t.lastError),lastErrorType:f(t.lastErrorType),lastErrorSource:f(t.lastErrorSource),errorCode:"string"==typeof t.errorCode||"number"==typeof t.errorCode?t.errorCode:null,backoffLevel:p(t.backoffLevel,0)}}function A(e,t){return"boolean"==typeof e?e:t}function h(e,t=90){return Math.min(100,Math.max(1,p(e,t)))}function g(e){if("string"!=typeof e)return null;let t=e.trim().toLowerCase();return t.length>0?t:null}function y(e){if("string"!=typeof e)return null;let t=e.trim().toLowerCase();return"session (5h)"===t||"5h"===t||"five_hour"===t?"session":"weekly (7d)"===t||"7d"===t||"seven_day"===t?"weekly":t}function w(e,t){if(!t)return null;let r=(0,s.getCodexModelScope)(t),i=d(e.codexScopeRateLimitedUntil)[r];return"string"==typeof i&&i.trim().length>0?i:null}function U(e,t){let r=w(e.providerSpecificData,t);return!!r&&new Date(r).getTime()>Date.now()}function T(e){let t=(e.testStatus||"").trim().toLowerCase();return"credits_exhausted"===t||"banned"===t||"expired"===t}function v(e){if(!e)return null;let t=new Date(e).getTime();return!Number.isFinite(t)||t<=Date.now()?null:t}function S(e){return e.map(e=>({raw:e,ms:v(e)})).filter(e=>null!==e.ms).sort((e,t)=>e.ms-t.ms)[0]?.raw||null}let $=Promise.resolve(),b=new Map;async function k(e,r=null,o=null,a=null){let s,f=$;$=new Promise(e=>{s=e});try{let s;await f;let $=await (0,t.getProviderConnections)({provider:e,isActive:!0}),b=(Array.isArray($)?$:[]).map(m).filter(e=>e.id.length>0);if(o&&o.length>0&&(b=b.filter(e=>o.includes(e.id))),c.debug("AUTH",`${e} | total connections: ${b.length}, excludeId: ${r||"none"}`),0===b.length){let r=await (0,t.getProviderConnections)({provider:e}),i=(Array.isArray(r)?r:[]).map(m).filter(e=>e.id.length>0);if(c.debug("AUTH",`${e} | all connections (incl inactive): ${i.length}`),i.length>0){let t=(0,l.getEarliestRateLimitedUntil)(i);if(t)return c.warn("AUTH",`${e} | all ${i.length} accounts rate limited (${(0,l.formatRetryAfter)(t)})`),{allRateLimited:!0,retryAfter:t,retryAfterHuman:(0,l.formatRetryAfter)(t)};c.warn("AUTH",`${e} | ${i.length} accounts found but none active`),i.forEach(e=>{c.debug("AUTH",` → ${e.id?.slice(0,8)} | isActive=${e.isActive} | rateLimitedUntil=${e.rateLimitedUntil||"none"} | testStatus=${e.testStatus}`)})}return c.warn("AUTH",`No credentials for ${e}`),null}for(let e of b)!(e.backoffLevel>0)||T(e)||(0,l.isAccountUnavailable)(e.rateLimitedUntil)||(e.backoffLevel=0,(0,t.updateProviderConnection)(e.id,{backoffLevel:0,testStatus:"active",lastError:null,lastErrorAt:null,lastErrorType:null,lastErrorSource:null,errorCode:null}).catch(()=>{}));let k=b.filter(t=>!(r&&t.id===r||(0,l.isAccountUnavailable)(t.rateLimitedUntil)||T(t)||"codex"===e&&U(t,a)));if(c.debug("AUTH",`${e} | available: ${k.length}/${b.length}`),b.forEach(t=>{let i=r&&t.id===r,n=(0,l.isAccountUnavailable)(t.rateLimitedUntil),o=T(t),s="codex"===e&&U(t,a);if(i||n)c.debug("AUTH",` → ${t.id?.slice(0,8)} | ${i?"excluded":""} ${n?`rateLimited until ${t.rateLimitedUntil}`:""}`);else if(o)c.debug("AUTH",` → ${t.id?.slice(0,8)} | skipped terminal status=${t.testStatus}`);else if(s){let e=w(t.providerSpecificData,a);c.debug("AUTH",` → ${t.id?.slice(0,8)} | codex scope-limited until ${e}`)}}),0===k.length){let t=(0,l.getEarliestRateLimitedUntil)(b)||("codex"===e?function(e,t){let r=null,i=1/0;for(let n of e){let e=w(n.providerSpecificData,t);if(!e)continue;let l=new Date(e).getTime();!(!Number.isFinite(l)||l<=Date.now())&&l<i&&(r=e,i=l)}return r}(b,a):null);if(t){let r=b.filter(e=>e.rateLimitedUntil&&new Date(e.rateLimitedUntil).getTime()>Date.now()).sort((e,t)=>new Date(e.rateLimitedUntil||0).getTime()-new Date(t.rateLimitedUntil||0).getTime())[0];return c.warn("AUTH",`${e} | all ${b.length} active accounts rate limited (${(0,l.formatRetryAfter)(t)}) | lastErrorCode=${r?.errorCode}, lastError=${r?.lastError?.slice(0,50)}`),{allRateLimited:!0,retryAfter:t,retryAfterHuman:(0,l.formatRetryAfter)(t),lastError:r?.lastError||null,lastErrorCode:r?.errorCode||null}}return c.warn("AUTH",`${e} | all ${b.length} accounts unavailable`),null}let D=k,L=[];if(D=k.filter(t=>{let r=function(e,t){let r=function(e,t){let r=d(t.limitPolicy),i=(Array.isArray(r.windows)?r.windows:[]).map(g).filter(Boolean);if("codex"===e){var n,l;let e,o,a,s=(n=i,l=t,o=(e=d(l.codexLimitPolicy),{use5h:A(e.use5h,!0),useWeekly:A(e.useWeekly,!0)}),a=(a=[...n.map(y).filter(Boolean)]).filter(e=>"session"===e?o.use5h:"weekly"!==e||o.useWeekly),o.use5h&&a.push("session"),o.useWeekly&&a.push("weekly"),[...new Set(a)]);return{enabled:A(r.enabled,s.length>0),thresholdPercent:h(r.thresholdPercent),windows:s}}return{enabled:A(r.enabled,!1),thresholdPercent:h(r.thresholdPercent),windows:i}}(e,t.providerSpecificData);if(!r.enabled||0===r.windows.length)return{blocked:!1,reasons:[],resetAt:null};let i=[],l=[];for(let e of r.windows){let o=(0,n.getQuotaWindowStatus)(t.id,e,r.thresholdPercent);o?.reachedThreshold&&(i.push(`${e} usage ${Math.round(o.usedPercentage)}%`),l.push(o.resetAt))}return{blocked:i.length>0,reasons:i,resetAt:S(l)}}(e,t);return!r.blocked||(L.push({id:t.id,reasons:r.reasons,resetAt:r.resetAt}),!1)}),L.length>0&&c.info("AUTH",`${e} | quota policy filtered ${L.length} account(s): ${L.map(e=>`${e.id.slice(0,8)}(${e.reasons.join(", ")})`).join("; ")}`),0===D.length&&k.length>0){let t=S(L.map(e=>e.resetAt)),r=v(t),i=r?new Date(r).toISOString():new Date(Date.now()+3e5).toISOString();return{allRateLimited:!0,retryAfter:i,retryAfterHuman:(0,l.formatRetryAfter)(i),lastError:`All ${e} accounts reached configured quota threshold`,lastErrorCode:429}}let E=D.filter(e=>!(0,n.isAccountQuotaExhausted)(e.id)),P=D.filter(e=>(0,n.isAccountQuotaExhausted)(e.id)),C=E.length>0?[...E,...P]:D;P.length>0&&c.debug("AUTH",`${e} | quota-aware: ${E.length} with quota, ${P.length} exhausted`);let x=await (0,i.getSettings)(),R=x.fallbackStrategy||"fill-first";if("round-robin"===R){let i=p(x.stickyRoundRobinLimit,3);if(null!==r)s=[...C].sort((e,t)=>{let r=e.backoffLevel||0,i=t.backoffLevel||0;return r!==i?r-i:e.lastUsedAt||t.lastUsedAt?e.lastUsedAt?t.lastUsedAt?new Date(e.lastUsedAt).getTime()-new Date(t.lastUsedAt).getTime():1:-1:(e.priority||999)-(t.priority||999)})[0],c.info("AUTH",`${e} round-robin: FALLBACK MODE - excluded ${r?.slice(0,8)}..., picked LRU ${s.id?.slice(0,8)}...`),await (0,t.updateProviderConnection)(s.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1});else{let r=[...C].sort((e,t)=>e.lastUsedAt||t.lastUsedAt?e.lastUsedAt?t.lastUsedAt?new Date(t.lastUsedAt).getTime()-new Date(e.lastUsedAt).getTime():-1:1:(e.priority||999)-(t.priority||999))[0],n=r?.consecutiveUseCount||0;r&&r.lastUsedAt&&n<i?(s=r,c.debug("AUTH",`${e} round-robin: staying with ${r.id?.slice(0,8)}... (count=${n}/${i})`),await (0,t.updateProviderConnection)(s.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:(s.consecutiveUseCount||0)+1})):(s=[...C].sort((e,t)=>{let r=e.backoffLevel||0,i=t.backoffLevel||0;return r!==i?r-i:e.lastUsedAt||t.lastUsedAt?e.lastUsedAt?t.lastUsedAt?new Date(e.lastUsedAt).getTime()-new Date(t.lastUsedAt).getTime():1:-1:(e.priority||999)-(t.priority||999)})[0],c.debug("AUTH",`${e} round-robin: switching to LRU ${s.id?.slice(0,8)}... (current count=${n} >= limit=${i} or no lastUsedAt)`),await (0,t.updateProviderConnection)(s.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1}))}}else if("p2c"===R)if(C.length<=2)s=C[0];else{let e=Math.floor(Math.random()*C.length),t=Math.floor(Math.random()*(C.length-1));t>=e&&t++;let r=C[e],i=C[t],n=(r.consecutiveUseCount||0)+10*!!r.lastError,l=(i.consecutiveUseCount||0)+10*!!i.lastError;s=n<=l?r:i}else if("random"===R){let e=Math.floor(Math.random()*C.length);s=C[e]}else if("least-used"===R)s=[...C].sort((e,t)=>e.lastUsedAt||t.lastUsedAt?e.lastUsedAt?t.lastUsedAt?new Date(e.lastUsedAt).getTime()-new Date(t.lastUsedAt).getTime():1:-1:(e.priority||999)-(t.priority||999))[0];else if("cost-optimized"===R)s=[...C].sort((e,t)=>(e.priority||999)-(t.priority||999))[0];else if("strict-random"===R){let t=C.map(e=>e.id),r=(0,u.getNextFromDeckSync)(`conn:${e}`,t);s=C.find(e=>e.id===r)||C[0]}else s=C[0];return{apiKey:s.apiKey,accessToken:s.accessToken,refreshToken:s.refreshToken,expiresAt:s.tokenExpiresAt||s.expiresAt||null,projectId:s.projectId,copilotToken:"string"==typeof s.providerSpecificData.copilotToken?s.providerSpecificData.copilotToken:null,providerSpecificData:s.providerSpecificData,connectionId:s.id,testStatus:s.testStatus,lastError:s.lastError,lastErrorType:s.lastErrorType,lastErrorSource:s.lastErrorSource,errorCode:s.errorCode,rateLimitedUntil:s.rateLimitedUntil}}finally{s&&s()}}async function D(e,r,i,n=null,u=null){let f,p=b.get(e)||Promise.resolve();b.set(e,new Promise(e=>{f=e}));try{await p;let f=await (0,t.getProviderConnections)({provider:n}),A=(Array.isArray(f)?f:[]).map(m).filter(e=>e.id.length>0).find(t=>t.id===e),h=A?.backoffLevel||0;if(A&&T(A))return c.info("AUTH",`${e.slice(0,8)} terminal status=${A.testStatus}, skipping cooldown overwrite`),{shouldFallback:!0,cooldownMs:0};if(A?.rateLimitedUntil&&new Date(A.rateLimitedUntil).getTime()>Date.now())return c.info("AUTH",`${e.slice(0,8)} already marked unavailable (until ${A.rateLimitedUntil}), skipping duplicate mark`),{shouldFallback:!0,cooldownMs:new Date(A.rateLimitedUntil).getTime()-Date.now()};if("codex"===n&&u){let t=w(A?.providerSpecificData||{},u);if(t&&new Date(t).getTime()>Date.now())return c.info("AUTH",`${e.slice(0,8)} already scope-limited for ${(0,s.getCodexModelScope)(u)} (until ${t}), skipping duplicate mark`),{shouldFallback:!0,cooldownMs:new Date(t).getTime()-Date.now()}}let{shouldFallback:g,cooldownMs:y,newBackoffLevel:U,reason:v}=(0,l.checkFallbackError)(r,i,h,u,n);if(!g)return{shouldFallback:!1,cooldownMs:0};let S=A?.providerSpecificData?.baseUrl;if((0,o.isLocalProvider)(S)&&404===r&&n&&u){let t=a.COOLDOWN_MS.notFoundLocal;return(0,l.lockModel)(n,e,u,"local_not_found",t),c.info("AUTH",`Local 404 for ${u} — model-only lockout ${t/1e3}s (connection stays active)`),{shouldFallback:!0,cooldownMs:t}}let $=(0,l.getUnavailableUntil)(y),b="string"==typeof i?i.slice(0,100):"Provider error";if("codex"===n&&429===r&&u&&A){let i=(0,s.getCodexModelScope)(u),o=d(A.providerSpecificData.codexScopeRateLimitedUntil),a=w(A.providerSpecificData,u)||$,c=Math.max(new Date(a).getTime()-Date.now(),0);return await (0,t.updateProviderConnection)(e,{testStatus:"unavailable",lastError:b,errorCode:r,lastErrorAt:new Date().toISOString(),backoffLevel:U??h,providerSpecificData:{...A.providerSpecificData,codexScopeRateLimitedUntil:{...o,[i]:a}}}),c>0&&(0,l.lockModel)(n,e,u,v||"unknown",c),r&&b&&console.error(`❌ ${n} [${r}] (${i}): ${b}`),{shouldFallback:!0,cooldownMs:c}}return await (0,t.updateProviderConnection)(e,{rateLimitedUntil:$,testStatus:"unavailable",lastError:b,errorCode:r,lastErrorAt:new Date().toISOString(),backoffLevel:U??h}),n&&u&&y>0&&(0,l.lockModel)(n,e,u,v||"unknown",y),n&&r&&b&&console.error(`❌ ${n} [${r}]: ${b}`),{shouldFallback:!0,cooldownMs:y}}finally{f&&f(),b.delete(e)}}async function L(e,r){(r.testStatus&&"active"!==r.testStatus||r.lastError||r.rateLimitedUntil||r.errorCode||r.lastErrorType||r.lastErrorSource)&&(await (0,t.updateProviderConnection)(e,{testStatus:"active",lastError:null,lastErrorAt:null,lastErrorType:null,lastErrorSource:null,errorCode:null,rateLimitedUntil:null,backoffLevel:0}),c.info("AUTH",`Account ${e.slice(0,8)} error cleared`))}async function E(e){e?.connectionId&&await L(e.connectionId,e)}function P(e){let t=e.headers.get("Authorization");return t?.startsWith("Bearer ")?t.slice(7):null}async function C(e){return!!e&&await (0,r.validateApiKey)(e)}e.s(["clearAccountError",()=>L,"clearRecoveredProviderState",()=>E,"extractApiKey",()=>P,"getProviderCredentials",()=>k,"isValidApiKey",()=>C,"markAccountUnavailable",()=>D])},478847,e=>{"use strict";var t=e.i(287726);e.i(245272);var r=e.i(125852),i=e.i(362225),n=e.i(719201),l=e.i(16023),o=e.i(706901);let a=new Map;async function s(e,s){let c=(0,t.extractApiKey)(e);if(!c)return{apiKey:null,apiKeyInfo:null,rejection:null};let u=null;try{u=await (0,r.getApiKeyMetadata)(c)}catch(e){return o.error("API_POLICY","Failed to fetch API key metadata. Request blocked.",{error:e}),{apiKey:c,apiKeyInfo:null,rejection:(0,n.errorResponse)(l.HTTP_STATUS.SERVICE_UNAVAILABLE,"API key policy unavailable")}}if(!u)return{apiKey:c,apiKeyInfo:null,rejection:null};if(!1===u.isActive)return{apiKey:c,apiKeyInfo:u,rejection:(0,n.errorResponse)(l.HTTP_STATUS.FORBIDDEN,"This API key is disabled")};if(u.accessSchedule&&u.accessSchedule.enabled&&!function(e){let t,r;if(!e.enabled)return!0;let i=new Date;try{t=new Intl.DateTimeFormat("en-US",{timeZone:e.tz,hour:"2-digit",minute:"2-digit",hour12:!1}).format(i)}catch{return!0}let[n,l]=t.replace(/^24:/,"00:").split(":").map(Number),o=60*n+l;try{r=new Intl.DateTimeFormat("en-US",{timeZone:e.tz,weekday:"short"}).format(i)}catch{return!0}let a={Sun:0,Mon:1,Tue:2,Wed:3,Thu:4,Fri:5,Sat:6}[r]??i.getDay();if(!e.days.includes(a))return!1;let[s,c]=e.from.split(":").map(Number),[u,d]=e.until.split(":").map(Number),f=60*s+c,p=60*u+d;return p<f?o>=f||o<p:o>=f&&o<p}(u.accessSchedule)){let{from:e,until:t,tz:r}=u.accessSchedule;return{apiKey:c,apiKeyInfo:u,rejection:(0,n.errorResponse)(l.HTTP_STATUS.FORBIDDEN,`Access denied outside allowed hours (${e}–${t} ${r})`)}}if(s&&u.allowedModels&&u.allowedModels.length>0&&!await (0,r.isModelAllowedForKey)(c,s))return{apiKey:c,apiKeyInfo:u,rejection:(0,n.errorResponse)(l.HTTP_STATUS.FORBIDDEN,`Model "${s}" is not allowed for this API key`)};if(u.id)try{let e=(0,i.checkBudget)(u.id);if(!e.allowed)return{apiKey:c,apiKeyInfo:u,rejection:(0,n.errorResponse)(l.HTTP_STATUS.RATE_LIMITED,e.reason||"Budget limit exceeded")}}catch(e){return o.error("API_POLICY","Budget check failed. Request blocked.",{error:e}),{apiKey:c,apiKeyInfo:u,rejection:(0,n.errorResponse)(l.HTTP_STATUS.SERVICE_UNAVAILABLE,"Budget policy unavailable")}}if(u.id&&(u.maxRequestsPerDay||u.maxRequestsPerMinute)){let e=function(e,t,r){if(!t&&!r)return null;let i=Date.now(),n=a.get(e);if(!n&&(n=[],a.set(e,n),a.size>5e3)){let e=a.keys().next().value;e&&a.delete(e)}let l=i-864e5;for(;n.length>0&&n[0]<l;)n.shift();if(r&&r>0){let e=i-6e4;if(n.filter(t=>t>=e).length>=r)return`Per-minute request limit exceeded (${r} RPM). Try again in a few seconds.`}return t&&t>0&&n.length>=t?`Daily request limit exceeded (${t} RPD). Resets in ${Math.ceil((n[0]+864e5-i)/6e4)} minutes.`:(n.push(i),null)}(u.id,u.maxRequestsPerDay,u.maxRequestsPerMinute);if(e)return{apiKey:c,apiKeyInfo:u,rejection:(0,n.errorResponse)(l.HTTP_STATUS.RATE_LIMITED,e)}}return{apiKey:c,apiKeyInfo:u,rejection:null}}e.s(["enforceApiKeyPolicy",()=>s])}];
2
2
 
3
3
  //# sourceMappingURL=src_4787afd3._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[918622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},446786,(a,b,c)=>{b.exports=a.x("os",()=>require("os"))},677850,a=>a.a(async(b,c)=>{try{let b=await a.y("zod");a.n(b),c()}catch(a){c(a)}},!0),342602,(a,b,c)=>{"use strict";b.exports=a.r(918622)},187924,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored["react-ssr"].ReactJsxRuntime},572131,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored["react-ssr"].React},804730,a=>{a.v({name:"omniroute",version:"3.1.4",description:"Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.",type:"module",bin:{omniroute:"bin/omniroute.mjs","omniroute-reset-password":"bin/reset-password.mjs"},files:["bin/","app/","open-sse/mcp-server/","src/shared/contracts/","scripts/postinstall.mjs","scripts/native-binary-compat.mjs","README.md","LICENSE"],workspaces:["open-sse"],engines:{node:">=18.0.0 <24.0.0"},keywords:["ai","router","proxy","openai","claude","anthropic","gemini","fallback","cursor","cline","codex","llm","auto-fallback"],license:"MIT",author:"diegosouzapw",repository:{type:"git",url:"https://github.com/diegosouzapw/OmniRoute"},homepage:"https://omniroute.online",scripts:{dev:"node scripts/run-next.mjs dev",build:"node scripts/build-next-isolated.mjs","build:cli":"node scripts/prepublish.mjs",start:"node scripts/run-next.mjs start",lint:"eslint .","electron:dev":'concurrently "npm run dev" "wait-on http://localhost:20128 && cd electron && npm run dev"',"electron:build":"npm run build && cd electron && npm run build","electron:build:win":"npm run build && cd electron && npm run build:win","electron:build:mac":"npm run build && cd electron && npm run build:mac","electron:build:linux":"npm run build && cd electron && npm run build:linux",test:"node --import tsx/esm --test tests/unit/*.test.mjs","test:unit":"node --import tsx/esm --test tests/unit/*.test.mjs","test:plan3":"node --import tsx/esm --test tests/unit/plan3-p0.test.mjs","test:fixes":"node --import tsx/esm --test tests/unit/fixes-p1.test.mjs","test:security":"node --import tsx/esm --test tests/unit/security-fase01.test.mjs","check:cycles":"node scripts/check-cycles.mjs","check:route-validation:t06":"node scripts/check-route-validation.mjs","check:any-budget:t11":"node scripts/check-t11-any-budget.mjs","check:docs-sync":"node scripts/check-docs-sync.mjs","typecheck:core":"tsc --pretty false -p tsconfig.typecheck-core.json","typecheck:noimplicit:core":"tsc --pretty false -p tsconfig.typecheck-noimplicit-core.json","test:integration":"node --import tsx/esm --test tests/integration/*.test.mjs","test:e2e":"node scripts/run-playwright-tests.mjs test tests/e2e/*.spec.ts","test:protocols:e2e":"node scripts/run-protocol-clients-tests.mjs","test:vitest":"vitest run open-sse/mcp-server/__tests__/*.test.ts open-sse/services/autoCombo/__tests__/*.test.ts","test:ecosystem":"node scripts/run-ecosystem-tests.mjs","test:coverage":"npx c8 --exclude=open-sse --check-coverage --lines 50 --functions 50 --branches 50 node --import tsx/esm --test tests/unit/*.test.mjs","test:all":"npm run test:unit && npm run test:vitest && npm run test:ecosystem && npm run test:e2e",check:"npm run lint && npm run test",prepublishOnly:"npm run build:cli",postinstall:"node scripts/postinstall.mjs",prepare:"husky","system-info":"node scripts/system-info.mjs"},dependencies:{"@lobehub/icons":"^5.0.1","@modelcontextprotocol/sdk":"^1.27.1","@monaco-editor/react":"^4.7.0","@swc/helpers":"0.5.19",bcryptjs:"^3.0.3","better-sqlite3":"^12.6.2",bottleneck:"^2.19.5",dompurify:"^3.3.2",express:"^5.2.1","fetch-socks":"^1.3.2","http-proxy-middleware":"^3.0.5","https-proxy-agent":"^8.0.0",jose:"^6.1.3",keytar:"^7.9.0",lowdb:"^7.0.1","monaco-editor":"^0.55.1",next:"^16.0.10","next-intl":"^4.8.3","node-machine-id":"^1.1.12",open:"^11.0.0",ora:"^9.1.0",pino:"^10.3.1","pino-pretty":"^13.1.3",react:"19.2.4","react-dom":"19.2.4",recharts:"^3.7.0",selfsigned:"^5.5.0",tsx:"^4.21.0",undici:"^7.19.2",uuid:"^13.0.0","wreq-js":"^2.0.1",zod:"^4.3.6",zustand:"^5.0.10"},devDependencies:{"@playwright/test":"^1.58.2","@tailwindcss/postcss":"^4.1.18","@types/bcryptjs":"^3.0.0","@types/better-sqlite3":"^7.6.13","@types/keytar":"^4.4.0","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3",concurrently:"^9.2.1","cross-env":"^10.1.0",eslint:"^9.39.2","eslint-config-next":"^16.0.10",husky:"^9.1.7","lint-staged":"^16.2.7",prettier:"^3.8.1",tailwindcss:"^4",typescript:"^5.9.3","typescript-eslint":"^8.56.0",vitest:"^4.0.18","wait-on":"^9.0.4"},"lint-staged":{"*.{js,jsx,ts,tsx,mjs}":["prettier --write","eslint --fix --no-error-on-unmatched-pattern"],"*.{json,md,yml,yaml,css}":["prettier --write"]},pnpm:{onlyBuiltDependencies:["@parcel/watcher","@swc/core","better-sqlite3","esbuild","omniroute","sharp"]},overrides:{dompurify:"^3.3.2"}})},588788,a=>{"use strict";var b=a.i(32886),c=a.i(187924);function d({locale:a,...d}){if(!a)throw Error(void 0);return(0,c.jsx)(b.IntlProvider,{locale:a,...d})}a.s(["default",()=>d])}];
1
+ module.exports=[918622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},446786,(a,b,c)=>{b.exports=a.x("os",()=>require("os"))},677850,a=>a.a(async(b,c)=>{try{let b=await a.y("zod");a.n(b),c()}catch(a){c(a)}},!0),342602,(a,b,c)=>{"use strict";b.exports=a.r(918622)},187924,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored["react-ssr"].ReactJsxRuntime},572131,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored["react-ssr"].React},804730,a=>{a.v({name:"omniroute",version:"3.1.5",description:"Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.",type:"module",bin:{omniroute:"bin/omniroute.mjs","omniroute-reset-password":"bin/reset-password.mjs"},files:["bin/","app/","open-sse/mcp-server/","src/shared/contracts/","scripts/postinstall.mjs","scripts/native-binary-compat.mjs","README.md","LICENSE"],workspaces:["open-sse"],engines:{node:">=18.0.0 <24.0.0"},keywords:["ai","router","proxy","openai","claude","anthropic","gemini","fallback","cursor","cline","codex","llm","auto-fallback"],license:"MIT",author:"diegosouzapw",repository:{type:"git",url:"https://github.com/diegosouzapw/OmniRoute"},homepage:"https://omniroute.online",scripts:{dev:"node scripts/run-next.mjs dev",build:"node scripts/build-next-isolated.mjs","build:cli":"node scripts/prepublish.mjs",start:"node scripts/run-next.mjs start",lint:"eslint .","electron:dev":'concurrently "npm run dev" "wait-on http://localhost:20128 && cd electron && npm run dev"',"electron:build":"npm run build && cd electron && npm run build","electron:build:win":"npm run build && cd electron && npm run build:win","electron:build:mac":"npm run build && cd electron && npm run build:mac","electron:build:linux":"npm run build && cd electron && npm run build:linux",test:"node --import tsx/esm --test tests/unit/*.test.mjs","test:unit":"node --import tsx/esm --test tests/unit/*.test.mjs","test:plan3":"node --import tsx/esm --test tests/unit/plan3-p0.test.mjs","test:fixes":"node --import tsx/esm --test tests/unit/fixes-p1.test.mjs","test:security":"node --import tsx/esm --test tests/unit/security-fase01.test.mjs","check:cycles":"node scripts/check-cycles.mjs","check:route-validation:t06":"node scripts/check-route-validation.mjs","check:any-budget:t11":"node scripts/check-t11-any-budget.mjs","check:docs-sync":"node scripts/check-docs-sync.mjs","typecheck:core":"tsc --pretty false -p tsconfig.typecheck-core.json","typecheck:noimplicit:core":"tsc --pretty false -p tsconfig.typecheck-noimplicit-core.json","test:integration":"node --import tsx/esm --test tests/integration/*.test.mjs","test:e2e":"node scripts/run-playwright-tests.mjs test tests/e2e/*.spec.ts","test:protocols:e2e":"node scripts/run-protocol-clients-tests.mjs","test:vitest":"vitest run open-sse/mcp-server/__tests__/*.test.ts open-sse/services/autoCombo/__tests__/*.test.ts","test:ecosystem":"node scripts/run-ecosystem-tests.mjs","test:coverage":"npx c8 --exclude=open-sse --check-coverage --lines 50 --functions 50 --branches 50 node --import tsx/esm --test tests/unit/*.test.mjs","test:all":"npm run test:unit && npm run test:vitest && npm run test:ecosystem && npm run test:e2e",check:"npm run lint && npm run test",prepublishOnly:"npm run build:cli",postinstall:"node scripts/postinstall.mjs",prepare:"husky","system-info":"node scripts/system-info.mjs"},dependencies:{"@lobehub/icons":"^5.0.1","@modelcontextprotocol/sdk":"^1.27.1","@monaco-editor/react":"^4.7.0","@swc/helpers":"0.5.19",bcryptjs:"^3.0.3","better-sqlite3":"^12.6.2",bottleneck:"^2.19.5",dompurify:"^3.3.2",express:"^5.2.1","fetch-socks":"^1.3.2","http-proxy-middleware":"^3.0.5","https-proxy-agent":"^8.0.0",jose:"^6.1.3",keytar:"^7.9.0",lowdb:"^7.0.1","monaco-editor":"^0.55.1",next:"^16.0.10","next-intl":"^4.8.3","node-machine-id":"^1.1.12",open:"^11.0.0",ora:"^9.1.0",pino:"^10.3.1","pino-pretty":"^13.1.3",react:"19.2.4","react-dom":"19.2.4",recharts:"^3.7.0",selfsigned:"^5.5.0",tsx:"^4.21.0",undici:"^7.19.2",uuid:"^13.0.0","wreq-js":"^2.0.1",zod:"^4.3.6",zustand:"^5.0.10"},devDependencies:{"@playwright/test":"^1.58.2","@tailwindcss/postcss":"^4.1.18","@types/bcryptjs":"^3.0.0","@types/better-sqlite3":"^7.6.13","@types/keytar":"^4.4.0","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3",concurrently:"^9.2.1","cross-env":"^10.1.0",eslint:"^9.39.2","eslint-config-next":"^16.0.10",husky:"^9.1.7","lint-staged":"^16.2.7",prettier:"^3.8.1",tailwindcss:"^4",typescript:"^5.9.3","typescript-eslint":"^8.56.0",vitest:"^4.0.18","wait-on":"^9.0.4"},"lint-staged":{"*.{js,jsx,ts,tsx,mjs}":["prettier --write","eslint --fix --no-error-on-unmatched-pattern"],"*.{json,md,yml,yaml,css}":["prettier --write"]},pnpm:{onlyBuiltDependencies:["@parcel/watcher","@swc/core","better-sqlite3","esbuild","omniroute","sharp"]},overrides:{dompurify:"^3.3.2"}})},588788,a=>{"use strict";var b=a.i(32886),c=a.i(187924);function d({locale:a,...d}){if(!a)throw Error(void 0);return(0,c.jsx)(b.IntlProvider,{locale:a,...d})}a.s(["default",()=>d])}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__9ef96d20._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[193695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},677850,a=>a.a(async(b,c)=>{try{let b=await a.y("zod");a.n(b),c()}catch(a){c(a)}},!0),804730,a=>{a.v({name:"omniroute",version:"3.1.4",description:"Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.",type:"module",bin:{omniroute:"bin/omniroute.mjs","omniroute-reset-password":"bin/reset-password.mjs"},files:["bin/","app/","open-sse/mcp-server/","src/shared/contracts/","scripts/postinstall.mjs","scripts/native-binary-compat.mjs","README.md","LICENSE"],workspaces:["open-sse"],engines:{node:">=18.0.0 <24.0.0"},keywords:["ai","router","proxy","openai","claude","anthropic","gemini","fallback","cursor","cline","codex","llm","auto-fallback"],license:"MIT",author:"diegosouzapw",repository:{type:"git",url:"https://github.com/diegosouzapw/OmniRoute"},homepage:"https://omniroute.online",scripts:{dev:"node scripts/run-next.mjs dev",build:"node scripts/build-next-isolated.mjs","build:cli":"node scripts/prepublish.mjs",start:"node scripts/run-next.mjs start",lint:"eslint .","electron:dev":'concurrently "npm run dev" "wait-on http://localhost:20128 && cd electron && npm run dev"',"electron:build":"npm run build && cd electron && npm run build","electron:build:win":"npm run build && cd electron && npm run build:win","electron:build:mac":"npm run build && cd electron && npm run build:mac","electron:build:linux":"npm run build && cd electron && npm run build:linux",test:"node --import tsx/esm --test tests/unit/*.test.mjs","test:unit":"node --import tsx/esm --test tests/unit/*.test.mjs","test:plan3":"node --import tsx/esm --test tests/unit/plan3-p0.test.mjs","test:fixes":"node --import tsx/esm --test tests/unit/fixes-p1.test.mjs","test:security":"node --import tsx/esm --test tests/unit/security-fase01.test.mjs","check:cycles":"node scripts/check-cycles.mjs","check:route-validation:t06":"node scripts/check-route-validation.mjs","check:any-budget:t11":"node scripts/check-t11-any-budget.mjs","check:docs-sync":"node scripts/check-docs-sync.mjs","typecheck:core":"tsc --pretty false -p tsconfig.typecheck-core.json","typecheck:noimplicit:core":"tsc --pretty false -p tsconfig.typecheck-noimplicit-core.json","test:integration":"node --import tsx/esm --test tests/integration/*.test.mjs","test:e2e":"node scripts/run-playwright-tests.mjs test tests/e2e/*.spec.ts","test:protocols:e2e":"node scripts/run-protocol-clients-tests.mjs","test:vitest":"vitest run open-sse/mcp-server/__tests__/*.test.ts open-sse/services/autoCombo/__tests__/*.test.ts","test:ecosystem":"node scripts/run-ecosystem-tests.mjs","test:coverage":"npx c8 --exclude=open-sse --check-coverage --lines 50 --functions 50 --branches 50 node --import tsx/esm --test tests/unit/*.test.mjs","test:all":"npm run test:unit && npm run test:vitest && npm run test:ecosystem && npm run test:e2e",check:"npm run lint && npm run test",prepublishOnly:"npm run build:cli",postinstall:"node scripts/postinstall.mjs",prepare:"husky","system-info":"node scripts/system-info.mjs"},dependencies:{"@lobehub/icons":"^5.0.1","@modelcontextprotocol/sdk":"^1.27.1","@monaco-editor/react":"^4.7.0","@swc/helpers":"0.5.19",bcryptjs:"^3.0.3","better-sqlite3":"^12.6.2",bottleneck:"^2.19.5",dompurify:"^3.3.2",express:"^5.2.1","fetch-socks":"^1.3.2","http-proxy-middleware":"^3.0.5","https-proxy-agent":"^8.0.0",jose:"^6.1.3",keytar:"^7.9.0",lowdb:"^7.0.1","monaco-editor":"^0.55.1",next:"^16.0.10","next-intl":"^4.8.3","node-machine-id":"^1.1.12",open:"^11.0.0",ora:"^9.1.0",pino:"^10.3.1","pino-pretty":"^13.1.3",react:"19.2.4","react-dom":"19.2.4",recharts:"^3.7.0",selfsigned:"^5.5.0",tsx:"^4.21.0",undici:"^7.19.2",uuid:"^13.0.0","wreq-js":"^2.0.1",zod:"^4.3.6",zustand:"^5.0.10"},devDependencies:{"@playwright/test":"^1.58.2","@tailwindcss/postcss":"^4.1.18","@types/bcryptjs":"^3.0.0","@types/better-sqlite3":"^7.6.13","@types/keytar":"^4.4.0","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3",concurrently:"^9.2.1","cross-env":"^10.1.0",eslint:"^9.39.2","eslint-config-next":"^16.0.10",husky:"^9.1.7","lint-staged":"^16.2.7",prettier:"^3.8.1",tailwindcss:"^4",typescript:"^5.9.3","typescript-eslint":"^8.56.0",vitest:"^4.0.18","wait-on":"^9.0.4"},"lint-staged":{"*.{js,jsx,ts,tsx,mjs}":["prettier --write","eslint --fix --no-error-on-unmatched-pattern"],"*.{json,md,yml,yaml,css}":["prettier --write"]},pnpm:{onlyBuiltDependencies:["@parcel/watcher","@swc/core","better-sqlite3","esbuild","omniroute","sharp"]},overrides:{dompurify:"^3.3.2"}})},569264,a=>{a.n(a.i(354832))},650645,a=>{a.n(a.i(827572))},923576,a=>{a.n(a.i(104858))},825210,a=>{a.n(a.i(402747))},517537,a=>{a.n(a.i(903363))},13718,a=>{a.n(a.i(47967))},118198,a=>{a.n(a.i(545518))},296736,(a,b,c)=>{"use strict";function d(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(d=function(a){return a?c:b})(a)}c._=function(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=d(b);if(c&&c.has(a))return c.get(a);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a)if("default"!==g&&Object.prototype.hasOwnProperty.call(a,g)){var h=f?Object.getOwnPropertyDescriptor(a,g):null;h&&(h.get||h.set)?Object.defineProperty(e,g,h):e[g]=a[g]}return e.default=a,c&&c.set(a,e),e}},500790,(a,b,c)=>{let{createClientModuleProxy:d}=a.r(211857);a.n(d("[project]/node_modules/next/dist/client/app-dir/link.js <module evaluation>"))},784707,(a,b,c)=>{let{createClientModuleProxy:d}=a.r(211857);a.n(d("[project]/node_modules/next/dist/client/app-dir/link.js"))},297647,a=>{"use strict";a.i(500790);var b=a.i(784707);a.n(b)},395936,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={default:function(){return i},useLinkStatus:function(){return h.useLinkStatus}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(296736),g=a.r(907997),h=f._(a.r(297647));function i(a){let b=a.legacyBehavior,c="string"==typeof a.children||"number"==typeof a.children||"string"==typeof a.children?.type,d=a.children?.type?.$$typeof===Symbol.for("react.client.reference");return!b||c||d||(a.children?.type?.$$typeof===Symbol.for("react.lazy")?console.error("Using a Lazy Component as a direct child of `<Link legacyBehavior>` from a Server Component is not supported. If you need legacyBehavior, wrap your Lazy Component in a Client Component that renders the Link's `<a>` tag."):console.error("Using a Server Component as a direct child of `<Link legacyBehavior>` is not supported. If you need legacyBehavior, wrap your Server Component in a Client Component that renders the Link's `<a>` tag.")),(0,g.jsx)(h.default,{...a})}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},330878,a=>{"use strict";var b=a.i(800717),c=a.i(118845),d=a.i(40953),e=(0,b.cache)(function(a,b){return function({_cache:a=(0,c.b)(),_formatters:b=(0,c.c)(a),getMessageFallback:e=d.d,messages:f,namespace:g,onError:h=d.b,...i}){return function({messages:a,namespace:b,...c},e){return a=a["!"],b=(0,d.r)(b,"!"),(0,d.a)({...c,messages:a,namespace:b})}({...i,onError:h,cache:a,formatters:b,getMessageFallback:e,messages:{"!":f},namespace:g?`!.${g}`:"!"},0)}({...a,namespace:b})});a.s(["default",()=>e],330878)},442979,a=>{"use strict";var b=a.i(330878),c=a.i(767228),d=a.i(800717)["use".trim()];function e(...[a]){let f=function(a){var b=(0,c.default)();try{return d(b)}catch(b){throw b instanceof TypeError&&b.message.includes("Cannot read properties of null (reading 'use')")?Error(`\`${a}\` is not callable within an async component. Please refer to https://next-intl.dev/docs/environments/server-client-components#async-components`,{cause:b}):b}}("useTranslations");return(0,b.default)(f,a)}a.s(["useTranslations",()=>e],442979)}];
1
+ module.exports=[193695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},677850,a=>a.a(async(b,c)=>{try{let b=await a.y("zod");a.n(b),c()}catch(a){c(a)}},!0),804730,a=>{a.v({name:"omniroute",version:"3.1.5",description:"Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.",type:"module",bin:{omniroute:"bin/omniroute.mjs","omniroute-reset-password":"bin/reset-password.mjs"},files:["bin/","app/","open-sse/mcp-server/","src/shared/contracts/","scripts/postinstall.mjs","scripts/native-binary-compat.mjs","README.md","LICENSE"],workspaces:["open-sse"],engines:{node:">=18.0.0 <24.0.0"},keywords:["ai","router","proxy","openai","claude","anthropic","gemini","fallback","cursor","cline","codex","llm","auto-fallback"],license:"MIT",author:"diegosouzapw",repository:{type:"git",url:"https://github.com/diegosouzapw/OmniRoute"},homepage:"https://omniroute.online",scripts:{dev:"node scripts/run-next.mjs dev",build:"node scripts/build-next-isolated.mjs","build:cli":"node scripts/prepublish.mjs",start:"node scripts/run-next.mjs start",lint:"eslint .","electron:dev":'concurrently "npm run dev" "wait-on http://localhost:20128 && cd electron && npm run dev"',"electron:build":"npm run build && cd electron && npm run build","electron:build:win":"npm run build && cd electron && npm run build:win","electron:build:mac":"npm run build && cd electron && npm run build:mac","electron:build:linux":"npm run build && cd electron && npm run build:linux",test:"node --import tsx/esm --test tests/unit/*.test.mjs","test:unit":"node --import tsx/esm --test tests/unit/*.test.mjs","test:plan3":"node --import tsx/esm --test tests/unit/plan3-p0.test.mjs","test:fixes":"node --import tsx/esm --test tests/unit/fixes-p1.test.mjs","test:security":"node --import tsx/esm --test tests/unit/security-fase01.test.mjs","check:cycles":"node scripts/check-cycles.mjs","check:route-validation:t06":"node scripts/check-route-validation.mjs","check:any-budget:t11":"node scripts/check-t11-any-budget.mjs","check:docs-sync":"node scripts/check-docs-sync.mjs","typecheck:core":"tsc --pretty false -p tsconfig.typecheck-core.json","typecheck:noimplicit:core":"tsc --pretty false -p tsconfig.typecheck-noimplicit-core.json","test:integration":"node --import tsx/esm --test tests/integration/*.test.mjs","test:e2e":"node scripts/run-playwright-tests.mjs test tests/e2e/*.spec.ts","test:protocols:e2e":"node scripts/run-protocol-clients-tests.mjs","test:vitest":"vitest run open-sse/mcp-server/__tests__/*.test.ts open-sse/services/autoCombo/__tests__/*.test.ts","test:ecosystem":"node scripts/run-ecosystem-tests.mjs","test:coverage":"npx c8 --exclude=open-sse --check-coverage --lines 50 --functions 50 --branches 50 node --import tsx/esm --test tests/unit/*.test.mjs","test:all":"npm run test:unit && npm run test:vitest && npm run test:ecosystem && npm run test:e2e",check:"npm run lint && npm run test",prepublishOnly:"npm run build:cli",postinstall:"node scripts/postinstall.mjs",prepare:"husky","system-info":"node scripts/system-info.mjs"},dependencies:{"@lobehub/icons":"^5.0.1","@modelcontextprotocol/sdk":"^1.27.1","@monaco-editor/react":"^4.7.0","@swc/helpers":"0.5.19",bcryptjs:"^3.0.3","better-sqlite3":"^12.6.2",bottleneck:"^2.19.5",dompurify:"^3.3.2",express:"^5.2.1","fetch-socks":"^1.3.2","http-proxy-middleware":"^3.0.5","https-proxy-agent":"^8.0.0",jose:"^6.1.3",keytar:"^7.9.0",lowdb:"^7.0.1","monaco-editor":"^0.55.1",next:"^16.0.10","next-intl":"^4.8.3","node-machine-id":"^1.1.12",open:"^11.0.0",ora:"^9.1.0",pino:"^10.3.1","pino-pretty":"^13.1.3",react:"19.2.4","react-dom":"19.2.4",recharts:"^3.7.0",selfsigned:"^5.5.0",tsx:"^4.21.0",undici:"^7.19.2",uuid:"^13.0.0","wreq-js":"^2.0.1",zod:"^4.3.6",zustand:"^5.0.10"},devDependencies:{"@playwright/test":"^1.58.2","@tailwindcss/postcss":"^4.1.18","@types/bcryptjs":"^3.0.0","@types/better-sqlite3":"^7.6.13","@types/keytar":"^4.4.0","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3",concurrently:"^9.2.1","cross-env":"^10.1.0",eslint:"^9.39.2","eslint-config-next":"^16.0.10",husky:"^9.1.7","lint-staged":"^16.2.7",prettier:"^3.8.1",tailwindcss:"^4",typescript:"^5.9.3","typescript-eslint":"^8.56.0",vitest:"^4.0.18","wait-on":"^9.0.4"},"lint-staged":{"*.{js,jsx,ts,tsx,mjs}":["prettier --write","eslint --fix --no-error-on-unmatched-pattern"],"*.{json,md,yml,yaml,css}":["prettier --write"]},pnpm:{onlyBuiltDependencies:["@parcel/watcher","@swc/core","better-sqlite3","esbuild","omniroute","sharp"]},overrides:{dompurify:"^3.3.2"}})},569264,a=>{a.n(a.i(354832))},650645,a=>{a.n(a.i(827572))},923576,a=>{a.n(a.i(104858))},825210,a=>{a.n(a.i(402747))},517537,a=>{a.n(a.i(903363))},13718,a=>{a.n(a.i(47967))},118198,a=>{a.n(a.i(545518))},296736,(a,b,c)=>{"use strict";function d(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(d=function(a){return a?c:b})(a)}c._=function(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=d(b);if(c&&c.has(a))return c.get(a);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a)if("default"!==g&&Object.prototype.hasOwnProperty.call(a,g)){var h=f?Object.getOwnPropertyDescriptor(a,g):null;h&&(h.get||h.set)?Object.defineProperty(e,g,h):e[g]=a[g]}return e.default=a,c&&c.set(a,e),e}},500790,(a,b,c)=>{let{createClientModuleProxy:d}=a.r(211857);a.n(d("[project]/node_modules/next/dist/client/app-dir/link.js <module evaluation>"))},784707,(a,b,c)=>{let{createClientModuleProxy:d}=a.r(211857);a.n(d("[project]/node_modules/next/dist/client/app-dir/link.js"))},297647,a=>{"use strict";a.i(500790);var b=a.i(784707);a.n(b)},395936,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={default:function(){return i},useLinkStatus:function(){return h.useLinkStatus}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(296736),g=a.r(907997),h=f._(a.r(297647));function i(a){let b=a.legacyBehavior,c="string"==typeof a.children||"number"==typeof a.children||"string"==typeof a.children?.type,d=a.children?.type?.$$typeof===Symbol.for("react.client.reference");return!b||c||d||(a.children?.type?.$$typeof===Symbol.for("react.lazy")?console.error("Using a Lazy Component as a direct child of `<Link legacyBehavior>` from a Server Component is not supported. If you need legacyBehavior, wrap your Lazy Component in a Client Component that renders the Link's `<a>` tag."):console.error("Using a Server Component as a direct child of `<Link legacyBehavior>` is not supported. If you need legacyBehavior, wrap your Server Component in a Client Component that renders the Link's `<a>` tag.")),(0,g.jsx)(h.default,{...a})}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},330878,a=>{"use strict";var b=a.i(800717),c=a.i(118845),d=a.i(40953),e=(0,b.cache)(function(a,b){return function({_cache:a=(0,c.b)(),_formatters:b=(0,c.c)(a),getMessageFallback:e=d.d,messages:f,namespace:g,onError:h=d.b,...i}){return function({messages:a,namespace:b,...c},e){return a=a["!"],b=(0,d.r)(b,"!"),(0,d.a)({...c,messages:a,namespace:b})}({...i,onError:h,cache:a,formatters:b,getMessageFallback:e,messages:{"!":f},namespace:g?`!.${g}`:"!"},0)}({...a,namespace:b})});a.s(["default",()=>e],330878)},442979,a=>{"use strict";var b=a.i(330878),c=a.i(767228),d=a.i(800717)["use".trim()];function e(...[a]){let f=function(a){var b=(0,c.default)();try{return d(b)}catch(b){throw b instanceof TypeError&&b.message.includes("Cannot read properties of null (reading 'use')")?Error(`\`${a}\` is not callable within an async component. Please refer to https://next-intl.dev/docs/environments/server-client-components#async-components`,{cause:b}):b}}("useTranslations");return(0,b.default)(f,a)}a.s(["useTranslations",()=>e],442979)}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__a6942102._.js.map