omniroute 3.2.6 → 3.2.7

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 (202) hide show
  1. package/README.ar.md +15 -13
  2. package/README.bg.md +3 -0
  3. package/README.cs.md +3 -0
  4. package/README.da.md +3 -0
  5. package/README.fi.md +3 -0
  6. package/README.he.md +40 -37
  7. package/README.hu.md +12 -9
  8. package/README.id.md +3 -0
  9. package/README.in.md +3 -0
  10. package/README.ja.md +3 -0
  11. package/README.ko.md +40 -37
  12. package/README.md +25 -22
  13. package/README.ms.md +18 -15
  14. package/README.nl.md +3 -0
  15. package/README.no.md +3 -0
  16. package/README.phi.md +3 -0
  17. package/README.pl.md +3 -0
  18. package/README.pt.md +3 -0
  19. package/README.ro.md +3 -0
  20. package/README.sk.md +3 -0
  21. package/README.sv.md +3 -0
  22. package/README.th.md +12 -9
  23. package/README.uk-UA.md +3 -0
  24. package/README.vi.md +3 -0
  25. package/app/.next/BUILD_ID +1 -1
  26. package/app/.next/build-manifest.json +2 -2
  27. package/app/.next/prerender-manifest.json +3 -3
  28. package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
  34. package/app/.next/server/app/(dashboard)/dashboard/cache/page_client-reference-manifest.js +1 -1
  35. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  36. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  40. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  42. package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
  43. package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
  44. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  45. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  46. package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  47. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  48. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  50. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/(dashboard)/dashboard/search-tools/page_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  54. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
  58. package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
  59. package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
  60. package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
  61. package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
  62. package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
  63. package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
  64. package/app/.next/server/app/_global-error.html +2 -2
  65. package/app/.next/server/app/_global-error.rsc +1 -1
  66. package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  67. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  68. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  69. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  70. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  71. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  72. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  73. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  74. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  75. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  76. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  77. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  78. package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
  79. package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  80. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  81. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  82. package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
  83. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  84. package/app/.next/server/chunks/[root-of-the-server]__0891af92._.js +3 -1
  85. package/app/.next/server/chunks/[root-of-the-server]__1f27646b._.js +1 -1
  86. package/app/.next/server/chunks/[root-of-the-server]__46e00e59._.js +1 -1
  87. package/app/.next/server/chunks/[root-of-the-server]__6e52619e._.js +1 -1
  88. package/app/.next/server/chunks/[root-of-the-server]__950558b8._.js +1 -1
  89. package/app/.next/server/chunks/[root-of-the-server]__a32d3818._.js +1 -1
  90. package/app/.next/server/chunks/[root-of-the-server]__d5a064d5._.js +2 -2
  91. package/app/.next/server/chunks/_05c48915._.js +1 -1
  92. package/app/.next/server/chunks/_06515a8a._.js +1 -1
  93. package/app/.next/server/chunks/_2115d8de._.js +1 -1
  94. package/app/.next/server/chunks/_3ac953eb._.js +1 -1
  95. package/app/.next/server/chunks/_4b8fd853._.js +1 -1
  96. package/app/.next/server/chunks/_68683848._.js +1 -1
  97. package/app/.next/server/chunks/_ee9b677b._.js +1 -1
  98. package/app/.next/server/chunks/ssr/[root-of-the-server]__9ef96d20._.js +1 -1
  99. package/app/.next/server/chunks/ssr/[root-of-the-server]__a6942102._.js +1 -1
  100. package/app/.next/server/chunks/ssr/src_app_(dashboard)_dashboard_3666f2bd._.js +1 -1
  101. package/app/.next/server/pages/500.html +2 -2
  102. package/app/.next/server/server-reference-manifest.js +1 -1
  103. package/app/.next/server/server-reference-manifest.json +1 -1
  104. package/app/.next/static/chunks/8a7e69530366d349.js +1 -0
  105. package/app/.next/static/chunks/ced99e799397dd8f.css +1 -0
  106. package/app/.next/static/chunks/{a505e70878b9cc4b.js → e0bc7c9ae396f60a.js} +1 -1
  107. package/app/CHANGELOG.md +6 -0
  108. package/app/README.ar.md +15 -13
  109. package/app/README.bg.md +3 -0
  110. package/app/README.cs.md +3 -0
  111. package/app/README.da.md +3 -0
  112. package/app/README.fi.md +3 -0
  113. package/app/README.he.md +40 -37
  114. package/app/README.hu.md +12 -9
  115. package/app/README.id.md +3 -0
  116. package/app/README.in.md +3 -0
  117. package/app/README.ja.md +3 -0
  118. package/app/README.ko.md +40 -37
  119. package/app/README.md +25 -22
  120. package/app/README.ms.md +18 -15
  121. package/app/README.nl.md +3 -0
  122. package/app/README.no.md +3 -0
  123. package/app/README.phi.md +3 -0
  124. package/app/README.pl.md +3 -0
  125. package/app/README.pt.md +3 -0
  126. package/app/README.ro.md +3 -0
  127. package/app/README.sk.md +3 -0
  128. package/app/README.sv.md +3 -0
  129. package/app/README.th.md +12 -9
  130. package/app/README.uk-UA.md +3 -0
  131. package/app/README.vi.md +3 -0
  132. package/app/docs/FEATURES.md +1 -1
  133. package/app/docs/i18n/ar/FEATURES.md +1 -1
  134. package/app/docs/i18n/ar/README.md +23 -20
  135. package/app/docs/i18n/bg/FEATURES.md +1 -1
  136. package/app/docs/i18n/bg/README.md +13 -10
  137. package/app/docs/i18n/cs/README.md +13 -10
  138. package/app/docs/i18n/da/FEATURES.md +1 -1
  139. package/app/docs/i18n/da/README.md +13 -10
  140. package/app/docs/i18n/de/FEATURES.md +1 -1
  141. package/app/docs/i18n/de/README.md +13 -10
  142. package/app/docs/i18n/es/FEATURES.md +1 -1
  143. package/app/docs/i18n/es/README.md +32 -34
  144. package/app/docs/i18n/fi/FEATURES.md +1 -1
  145. package/app/docs/i18n/fi/README.md +13 -10
  146. package/app/docs/i18n/fr/FEATURES.md +1 -1
  147. package/app/docs/i18n/fr/README.md +21 -23
  148. package/app/docs/i18n/he/FEATURES.md +1 -1
  149. package/app/docs/i18n/he/README.md +26 -23
  150. package/app/docs/i18n/hu/FEATURES.md +1 -1
  151. package/app/docs/i18n/hu/README.md +13 -10
  152. package/app/docs/i18n/id/FEATURES.md +1 -1
  153. package/app/docs/i18n/id/README.md +26 -23
  154. package/app/docs/i18n/in/FEATURES.md +1 -1
  155. package/app/docs/i18n/in/README.md +26 -23
  156. package/app/docs/i18n/it/FEATURES.md +1 -1
  157. package/app/docs/i18n/it/README.md +32 -34
  158. package/app/docs/i18n/ja/FEATURES.md +1 -1
  159. package/app/docs/i18n/ja/README.md +26 -23
  160. package/app/docs/i18n/ko/FEATURES.md +1 -1
  161. package/app/docs/i18n/ko/README.md +26 -23
  162. package/app/docs/i18n/ms/FEATURES.md +1 -1
  163. package/app/docs/i18n/ms/README.md +13 -10
  164. package/app/docs/i18n/nl/FEATURES.md +1 -1
  165. package/app/docs/i18n/nl/README.md +13 -10
  166. package/app/docs/i18n/no/FEATURES.md +1 -1
  167. package/app/docs/i18n/no/README.md +26 -23
  168. package/app/docs/i18n/phi/FEATURES.md +1 -1
  169. package/app/docs/i18n/phi/README.md +26 -23
  170. package/app/docs/i18n/pl/FEATURES.md +1 -1
  171. package/app/docs/i18n/pl/README.md +13 -10
  172. package/app/docs/i18n/pt/FEATURES.md +1 -1
  173. package/app/docs/i18n/pt/README.md +13 -10
  174. package/app/docs/i18n/pt-BR/FEATURES.md +1 -1
  175. package/app/docs/i18n/pt-BR/README.md +13 -10
  176. package/app/docs/i18n/ro/FEATURES.md +1 -1
  177. package/app/docs/i18n/ro/README.md +13 -10
  178. package/app/docs/i18n/ru/FEATURES.md +1 -1
  179. package/app/docs/i18n/ru/README.md +32 -34
  180. package/app/docs/i18n/sk/FEATURES.md +1 -1
  181. package/app/docs/i18n/sk/README.md +13 -10
  182. package/app/docs/i18n/sv/FEATURES.md +1 -1
  183. package/app/docs/i18n/sv/README.md +26 -23
  184. package/app/docs/i18n/th/FEATURES.md +1 -1
  185. package/app/docs/i18n/th/README.md +26 -23
  186. package/app/docs/i18n/uk-UA/FEATURES.md +1 -1
  187. package/app/docs/i18n/uk-UA/README.md +13 -10
  188. package/app/docs/i18n/vi/FEATURES.md +1 -1
  189. package/app/docs/i18n/vi/README.md +13 -10
  190. package/app/docs/i18n/zh-CN/FEATURES.md +1 -1
  191. package/app/docs/i18n/zh-CN/README.md +32 -34
  192. package/app/docs/openapi.yaml +1 -1
  193. package/app/package-lock.json +2 -2
  194. package/app/package.json +1 -1
  195. package/app/src/app/(dashboard)/dashboard/HomePageClient.tsx +217 -13
  196. package/app/src/app/api/system/version/route.ts +69 -22
  197. package/package.json +1 -1
  198. package/app/.next/static/chunks/2e25e28a804c74cb.css +0 -1
  199. package/app/.next/static/chunks/786bb016b73be366.js +0 -1
  200. /package/app/.next/static/{y0yR5YnNvU8dlWh7MSaaO → V1AhcZllvKyXSF7QBcufd}/_buildManifest.js +0 -0
  201. /package/app/.next/static/{y0yR5YnNvU8dlWh7MSaaO → V1AhcZllvKyXSF7QBcufd}/_clientMiddlewareManifest.json +0 -0
  202. /package/app/.next/static/{y0yR5YnNvU8dlWh7MSaaO → V1AhcZllvKyXSF7QBcufd}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[522051,e=>e.a(async(t,a)=>{try{var r=e.i(745015),n=e.i(89171),s=e.i(924868),i=e.i(814747),o=e.i(266240),l=e.i(841788),u=e.i(197892),d=e.i(676088),c=e.i(200392);e.i(245272);var p=e.i(125852),h=e.i(195975),R=t([d,c]);[d,c]=R.then?(await R)():R;let m=()=>(0,o.getCliPrimaryConfigPath)("claude"),v=async()=>{try{let e=m(),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,o.getCliRuntimeStatus)("claude");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?"Claude CLI is installed but not runnable":"Claude CLI is not installed"});let t=await v(),a=!!t?.env?.ANTHROPIC_BASE_URL;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:a,settingsPath:m()})}catch(e){return console.log("Error checking claude settings:",e),n.NextResponse.json({error:"Failed to check claude 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,o.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});let a=(0,c.validateBody)(d.cliSettingsEnvSchema,t);if((0,c.isValidationFailure)(a))return n.NextResponse.json({error:a.error},{status:400});let{env:r}=a.data,h="string"==typeof t?.keyId?t.keyId.trim():null;if(h)try{let e=await (0,p.getApiKeyById)(h);e?.key&&(r.ANTHROPIC_AUTH_TOKEN=e.key)}catch{}let R=m(),f=i.default.dirname(R);await s.default.mkdir(f,{recursive:!0}),await (0,l.createBackup)("claude",R);let g={};try{let e=await s.default.readFile(R,"utf-8");g=JSON.parse(e)}catch(e){if("ENOENT"!==e.code)throw e}r.ANTHROPIC_BASE_URL&&(r.ANTHROPIC_BASE_URL=r.ANTHROPIC_BASE_URL.endsWith("/v1")?r.ANTHROPIC_BASE_URL:`${r.ANTHROPIC_BASE_URL}/v1`);let E={...g,env:{...g.env||{},...r}};await s.default.writeFile(R,JSON.stringify(E,null,2));try{(0,u.saveCliToolLastConfigured)("claude")}catch{}return n.NextResponse.json({success:!0,message:"Settings updated successfully"})}catch(e){return console.log("Error updating claude settings:",e),n.NextResponse.json({error:"Failed to update claude settings"},{status:500})}}let N=["ANTHROPIC_BASE_URL","ANTHROPIC_AUTH_TOKEN","ANTHROPIC_DEFAULT_OPUS_MODEL","ANTHROPIC_DEFAULT_SONNET_MODEL","ANTHROPIC_DEFAULT_HAIKU_MODEL","API_TIMEOUT_MS"];async function E(){try{let e=(0,o.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});let t=m(),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}await (0,l.createBackup)("claude",t),a.env&&(N.forEach(e=>{delete a.env[e]}),0===Object.keys(a.env).length&&delete a.env),await s.default.writeFile(t,JSON.stringify(a,null,2));try{(0,u.deleteCliToolLastConfigured)("claude")}catch{}return n.NextResponse.json({success:!0,message:"Settings reset successfully"})}catch(e){return console.log("Error resetting claude settings:",e),n.NextResponse.json({error:"Failed to reset claude settings"},{status:500})}}(0,h.ensureServerEntryExports)([f,g,E]),(0,r.registerServerReference)(f,"00ea9e9edb7071986e1a1744771016b3f58f7d42f9",null),(0,r.registerServerReference)(g,"40f1ab5643fd2d397cba5550ad17c5daa192722ec5",null),(0,r.registerServerReference)(E,"0086d6317499c6388e63bf4ad0b5b2f4b42432336f",null),e.s(["DELETE",()=>E,"GET",()=>f,"POST",()=>g]),a()}catch(e){a(e)}},!1),825593,e=>e.a(async(t,a)=>{try{var r=e.i(747909),n=e.i(174017),s=e.i(996250),i=e.i(759756),o=e.i(561916),l=e.i(174677),u=e.i(869741),d=e.i(316795),c=e.i(487718),p=e.i(995169),h=e.i(47587),R=e.i(666012),f=e.i(570101),g=e.i(626937),E=e.i(10372),m=e.i(193695);e.i(52474);var v=e.i(600220),N=e.i(522051),C=t([N]);[N]=C.then?(await C)():C;let w=new r.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/cli-tools/claude-settings/route",pathname:"/api/cli-tools/claude-settings",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/cli-tools/claude-settings/route.ts",nextConfigOutput:"standalone",userland:N}),{workAsyncStorage:T,workUnitAsyncStorage:O,serverHooks:_}=w;function y(){return(0,s.patchFetch)({workAsyncStorage:T,workUnitAsyncStorage:O})}async function A(e,t,a){w.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let r="/api/cli-tools/claude-settings/route";r=r.replace(/\/index$/,"")||"/";let s=await w.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:N,params:C,nextConfig:y,parsedUrl:A,isDraftMode:T,prerenderManifest:O,routerServerContext:_,isOnDemandRevalidate:P,revalidateOnlyGenerated:S,resolvedPathname:x,clientReferenceManifest:b,serverActionsManifest:I}=s,H=(0,u.normalizeAppPath)(r),U=!!(O.dynamicRoutes[H]||O.routes[x]),k=async()=>((null==_?void 0:_.render404)?await _.render404(e,t,A,!1):t.end("This page could not be found"),null);if(U&&!T){let e=!!O.routes[x],t=O.dynamicRoutes[H];if(t&&!1===t.fallback&&!e){if(y.experimental.adapterPath)return await k();throw new m.NoFallbackError}}let L=null;!U||w.isDev||T||(L=x,L="/index"===L?"/":L);let j=!0===w.isDev||!U,M=U&&!j;I&&b&&(0,l.setManifestsSingleton)({page:r,clientReferenceManifest:b,serverActionsManifest:I});let D=e.method||"GET",F=(0,o.getTracer)(),B=F.getActiveScopeSpan(),q={params:C,prerenderManifest:O,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:j,incrementalCache:(0,i.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:y.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>w.onRequestError(e,t,r,n,_)},sharedContext:{buildId:N}},K=new d.NodeNextRequest(e),$=new d.NodeNextResponse(t),J=c.NextRequestAdapter.fromNodeNextRequest(K,(0,c.signalFromNodeResponse)(t));try{let s=async e=>w.handle(J,q).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=F.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=`${D} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${D} ${r}`)}),l=!!(0,i.getRequestMeta)(e,"minimalMode"),u=async i=>{var o,u;let d=async({previousCacheEntry:n})=>{try{if(!l&&P&&S&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await s(i);e.fetchMetrics=q.renderOpts.fetchMetrics;let o=q.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let u=q.renderOpts.collectedTags;if(!U)return await (0,R.sendResponse)(K,$,r,q.renderOpts.pendingWaitUntil),null;{let e=await r.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(r.headers);u&&(t[E.NEXT_CACHE_TAGS_HEADER]=u),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==q.renderOpts.collectedRevalidate&&!(q.renderOpts.collectedRevalidate>=E.INFINITE_CACHE)&&q.renderOpts.collectedRevalidate,n=void 0===q.renderOpts.collectedExpire||q.renderOpts.collectedExpire>=E.INFINITE_CACHE?void 0:q.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 w.onRequestError(e,t,{routerKind:"App Router",routePath:r,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:P})},!1,_),t}},c=await w.handleResponse({req:e,nextConfig:y,cacheKey:L,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:O,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:S,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:l});if(!U)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(u=c.value)?void 0:u.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});l||t.setHeader("x-nextjs-cache",P?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),T&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,f.fromNodeOutgoingHttpHeaders)(c.value.headers);return l&&U||p.delete(E.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,R.sendResponse)(K,$,new Response(c.value.body,{headers:p,status:c.value.status||200})),null};B?await u(B):await F.withPropagatedContext(e.headers,()=>F.trace(p.BaseServerSpan.handleRequest,{spanName:`${D} ${r}`,kind:o.SpanKind.SERVER,attributes:{"http.method":D,"http.target":e.url}},u))}catch(t){if(t instanceof m.NoFallbackError||await w.onRequestError(e,t,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:P})},!1,_),U)throw t;return await (0,R.sendResponse)(K,$,new Response(null,{status:500})),null}}e.s(["handler",()=>A,"patchFetch",()=>y,"routeModule",()=>w,"serverHooks",()=>_,"workAsyncStorage",()=>T,"workUnitAsyncStorage",()=>O]),a()}catch(e){a(e)}},!1)];
1
+ module.exports=[522051,e=>e.a(async(t,a)=>{try{var r=e.i(745015),n=e.i(89171),s=e.i(924868),i=e.i(814747),o=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),R=t([u,c]);[u,c]=R.then?(await R)():R;let m=()=>(0,o.getCliPrimaryConfigPath)("claude"),v=async()=>{try{let e=m(),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,o.getCliRuntimeStatus)("claude");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?"Claude CLI is installed but not runnable":"Claude CLI is not installed"});let t=await v(),a=!!t?.env?.ANTHROPIC_BASE_URL;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:a,settingsPath:m()})}catch(e){return console.log("Error checking claude settings:",e),n.NextResponse.json({error:"Failed to check claude 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,o.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});let a=(0,c.validateBody)(u.cliSettingsEnvSchema,t);if((0,c.isValidationFailure)(a))return n.NextResponse.json({error:a.error},{status:400});let{env:r}=a.data,h="string"==typeof t?.keyId?t.keyId.trim():null;if(h)try{let e=await (0,p.getApiKeyById)(h);e?.key&&(r.ANTHROPIC_AUTH_TOKEN=e.key)}catch{}let R=m(),g=i.default.dirname(R);await s.default.mkdir(g,{recursive:!0}),await (0,l.createBackup)("claude",R);let f={};try{let e=await s.default.readFile(R,"utf-8");f=JSON.parse(e)}catch(e){if("ENOENT"!==e.code)throw e}r.ANTHROPIC_BASE_URL&&(r.ANTHROPIC_BASE_URL=r.ANTHROPIC_BASE_URL.endsWith("/v1")?r.ANTHROPIC_BASE_URL:`${r.ANTHROPIC_BASE_URL}/v1`);let E={...f,env:{...f.env||{},...r}};await s.default.writeFile(R,JSON.stringify(E,null,2));try{(0,d.saveCliToolLastConfigured)("claude")}catch{}return n.NextResponse.json({success:!0,message:"Settings updated successfully"})}catch(e){return console.log("Error updating claude settings:",e),n.NextResponse.json({error:"Failed to update claude settings"},{status:500})}}let N=["ANTHROPIC_BASE_URL","ANTHROPIC_AUTH_TOKEN","ANTHROPIC_DEFAULT_OPUS_MODEL","ANTHROPIC_DEFAULT_SONNET_MODEL","ANTHROPIC_DEFAULT_HAIKU_MODEL","API_TIMEOUT_MS"];async function E(){try{let e=(0,o.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});let t=m(),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}await (0,l.createBackup)("claude",t),a.env&&(N.forEach(e=>{delete a.env[e]}),0===Object.keys(a.env).length&&delete a.env),await s.default.writeFile(t,JSON.stringify(a,null,2));try{(0,d.deleteCliToolLastConfigured)("claude")}catch{}return n.NextResponse.json({success:!0,message:"Settings reset successfully"})}catch(e){return console.log("Error resetting claude settings:",e),n.NextResponse.json({error:"Failed to reset claude settings"},{status:500})}}(0,h.ensureServerEntryExports)([g,f,E]),(0,r.registerServerReference)(g,"003ebaee6a23db0bcd544edc4e21896c8ad85c1ab0",null),(0,r.registerServerReference)(f,"4070c10a5d2a0e509a2f34cad900bc9344a550dec5",null),(0,r.registerServerReference)(E,"00502d55822848bd59c1620fd050ea75dd0597dd55",null),e.s(["DELETE",()=>E,"GET",()=>g,"POST",()=>f]),a()}catch(e){a(e)}},!1),825593,e=>e.a(async(t,a)=>{try{var r=e.i(747909),n=e.i(174017),s=e.i(996250),i=e.i(759756),o=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),R=e.i(666012),g=e.i(570101),f=e.i(626937),E=e.i(10372),m=e.i(193695);e.i(52474);var v=e.i(600220),N=e.i(522051),C=t([N]);[N]=C.then?(await C)():C;let w=new r.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/cli-tools/claude-settings/route",pathname:"/api/cli-tools/claude-settings",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/cli-tools/claude-settings/route.ts",nextConfigOutput:"standalone",userland:N}),{workAsyncStorage:T,workUnitAsyncStorage:O,serverHooks:_}=w;function y(){return(0,s.patchFetch)({workAsyncStorage:T,workUnitAsyncStorage:O})}async function A(e,t,a){w.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let r="/api/cli-tools/claude-settings/route";r=r.replace(/\/index$/,"")||"/";let s=await w.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:N,params:C,nextConfig:y,parsedUrl:A,isDraftMode:T,prerenderManifest:O,routerServerContext:_,isOnDemandRevalidate:P,revalidateOnlyGenerated:S,resolvedPathname:x,clientReferenceManifest:b,serverActionsManifest:I}=s,H=(0,d.normalizeAppPath)(r),U=!!(O.dynamicRoutes[H]||O.routes[x]),k=async()=>((null==_?void 0:_.render404)?await _.render404(e,t,A,!1):t.end("This page could not be found"),null);if(U&&!T){let e=!!O.routes[x],t=O.dynamicRoutes[H];if(t&&!1===t.fallback&&!e){if(y.experimental.adapterPath)return await k();throw new m.NoFallbackError}}let L=null;!U||w.isDev||T||(L=x,L="/index"===L?"/":L);let j=!0===w.isDev||!U,M=U&&!j;I&&b&&(0,l.setManifestsSingleton)({page:r,clientReferenceManifest:b,serverActionsManifest:I});let D=e.method||"GET",F=(0,o.getTracer)(),B=F.getActiveScopeSpan(),q={params:C,prerenderManifest:O,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:j,incrementalCache:(0,i.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:y.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>w.onRequestError(e,t,r,n,_)},sharedContext:{buildId:N}},K=new u.NodeNextRequest(e),$=new u.NodeNextResponse(t),J=c.NextRequestAdapter.fromNodeNextRequest(K,(0,c.signalFromNodeResponse)(t));try{let s=async e=>w.handle(J,q).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=F.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=`${D} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${D} ${r}`)}),l=!!(0,i.getRequestMeta)(e,"minimalMode"),d=async i=>{var o,d;let u=async({previousCacheEntry:n})=>{try{if(!l&&P&&S&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await s(i);e.fetchMetrics=q.renderOpts.fetchMetrics;let o=q.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let d=q.renderOpts.collectedTags;if(!U)return await (0,R.sendResponse)(K,$,r,q.renderOpts.pendingWaitUntil),null;{let e=await r.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(r.headers);d&&(t[E.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==q.renderOpts.collectedRevalidate&&!(q.renderOpts.collectedRevalidate>=E.INFINITE_CACHE)&&q.renderOpts.collectedRevalidate,n=void 0===q.renderOpts.collectedExpire||q.renderOpts.collectedExpire>=E.INFINITE_CACHE?void 0:q.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 w.onRequestError(e,t,{routerKind:"App Router",routePath:r,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:P})},!1,_),t}},c=await w.handleResponse({req:e,nextConfig:y,cacheKey:L,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:O,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:S,responseGenerator:u,waitUntil:a.waitUntil,isMinimalMode:l});if(!U)return null;if((null==c||null==(o=c.value)?void 0:o.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",P?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),T&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,g.fromNodeOutgoingHttpHeaders)(c.value.headers);return l&&U||p.delete(E.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,R.sendResponse)(K,$,new Response(c.value.body,{headers:p,status:c.value.status||200})),null};B?await d(B):await F.withPropagatedContext(e.headers,()=>F.trace(p.BaseServerSpan.handleRequest,{spanName:`${D} ${r}`,kind:o.SpanKind.SERVER,attributes:{"http.method":D,"http.target":e.url}},d))}catch(t){if(t instanceof m.NoFallbackError||await w.onRequestError(e,t,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:P})},!1,_),U)throw t;return await (0,R.sendResponse)(K,$,new Response(null,{status:500})),null}}e.s(["handler",()=>A,"patchFetch",()=>y,"routeModule",()=>w,"serverHooks",()=>_,"workAsyncStorage",()=>T,"workUnitAsyncStorage",()=>O]),a()}catch(e){a(e)}},!1)];
2
2
 
3
3
  //# sourceMappingURL=_06515a8a._.js.map
@@ -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,"008a327de0e17b3b5179e3b420acf49838bc20125a",null),(0,r.registerServerReference)(g,"408241920793b520efbdfa68b8f14e476892e53546",null),(0,r.registerServerReference)(w,"0020ee4a700197e4e1fe12eadc6022198c0f61e2dc",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 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,"00bcc847b9425f74edeb0f8d9208ddefd2765c4e15",null),(0,r.registerServerReference)(g,"40d365fde0f11a95a9122a754479ff5602cf261d89",null),(0,r.registerServerReference)(w,"009b949d6b62b3dd1409e1443689c0ca1882a80ead",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)];
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 b=y(C);await o.default.writeFile(R,b);let N={};try{let e=await o.default.readFile(E,"utf-8");N=JSON.parse(e)}catch{}N.OPENAI_API_KEY=f,await o.default.writeFile(E,JSON.stringify(N,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,"0070b5c0cab58bb8370e2c83f5506f3f19f92ad0da",null),(0,a.registerServerReference)(g,"4029b5cbc360fc99656ca23cb7fbc839ba1079a07b",null),(0,a.registerServerReference)(R,"004768b1d995ba7308e93f938ad300abec03fde445",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:b,workUnitAsyncStorage:N,serverHooks:O}=_;function E(){return(0,o.patchFetch)({workAsyncStorage:b,workUnitAsyncStorage:N})}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:b,prerenderManifest:N,routerServerContext:O,isOnDemandRevalidate:A,revalidateOnlyGenerated:P,resolvedPathname:S,clientReferenceManifest:T,serverActionsManifest:j}=o,I=(0,d.normalizeAppPath)(a),k=!!(N.dynamicRoutes[I]||N.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&&!b){let e=!!N.routes[S],t=N.dynamicRoutes[I];if(t&&!1===t.fallback&&!e){if(E.experimental.adapterPath)return await F();throw new v.NoFallbackError}}let M=null;!k||_.isDev||b||(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:N,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:N,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"),b&&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",()=>b,"workUnitAsyncStorage",()=>N]),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,"003e2fb2b3dccb33ec05966e1e54a96d7c3e1c059e",null),(0,a.registerServerReference)(g,"40c394a71d826b53dd915deee001296719b8b884a2",null),(0,a.registerServerReference)(R,"00804a5661e6a42386429a2a99aaae44f4befefbc8",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,"00bb3b07e6d0f09380ed6edd1bdd0a1a0c8ebc2d9c",null),(0,a.registerServerReference)(g,"40099bbb2a4a0a881fec54ce723037627bc39ab1a4",null),(0,a.registerServerReference)(R,"405ef325e7f5df2bfda6dad320c87499b9e704b0a2",null),(0,a.registerServerReference)(m,"40e5b37dbf300cba7f48a3a1beda124141978b6dc5",null),e.s(["DELETE",()=>m,"GET",()=>h,"POST",()=>g,"PUT",()=>R]),r()}catch(e){r(e)}},!1),57985,e=>e.a(async(t,r)=>{try{var a=e.i(747909),n=e.i(174017),o=e.i(996250),s=e.i(759756),i=e.i(561916),l=e.i(174677),u=e.i(869741),d=e.i(316795),c=e.i(487718),f=e.i(995169),p=e.i(47587),h=e.i(666012),g=e.i(570101),R=e.i(626937),m=e.i(10372),x=e.i(193695);e.i(52474);var v=e.i(600220),w=e.i(314251),y=t([w]);[w]=y.then?(await y)():y;let C=new a.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/cli-tools/codex-profiles/route",pathname:"/api/cli-tools/codex-profiles",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/cli-tools/codex-profiles/route.ts",nextConfigOutput:"standalone",userland:w}),{workAsyncStorage:b,workUnitAsyncStorage:j,serverHooks:A}=C;function N(){return(0,o.patchFetch)({workAsyncStorage:b,workUnitAsyncStorage:j})}async function E(e,t,r){C.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let a="/api/cli-tools/codex-profiles/route";a=a.replace(/\/index$/,"")||"/";let o=await C.prepare(e,t,{srcPage:a,multiZoneDraftMode:!1});if(!o)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:w,params:y,nextConfig:N,parsedUrl:E,isDraftMode:b,prerenderManifest:j,routerServerContext:A,isOnDemandRevalidate:P,revalidateOnlyGenerated:S,resolvedPathname:O,clientReferenceManifest:T,serverActionsManifest:I}=o,_=(0,u.normalizeAppPath)(a),k=!!(j.dynamicRoutes[_]||j.routes[O]),F=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,E,!1):t.end("This page could not be found"),null);if(k&&!b){let e=!!j.routes[O],t=j.dynamicRoutes[_];if(t&&!1===t.fallback&&!e){if(N.experimental.adapterPath)return await F();throw new x.NoFallbackError}}let $=null;!k||C.isDev||b||($=O,$="/index"===$?"/":$);let q=!0===C.isDev||!k,D=k&&!q;I&&T&&(0,l.setManifestsSingleton)({page:a,clientReferenceManifest:T,serverActionsManifest:I});let H=e.method||"GET",U=(0,i.getTracer)(),J=U.getActiveScopeSpan(),M={params:y,prerenderManifest:j,renderOpts:{experimental:{authInterrupts:!!N.experimental.authInterrupts},cacheComponents:!!N.cacheComponents,supportsDynamicResponse:q,incrementalCache:(0,s.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:N.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>C.onRequestError(e,t,a,n,A)},sharedContext:{buildId:w}},K=new d.NodeNextRequest(e),L=new d.NodeNextResponse(t),B=c.NextRequestAdapter.fromNodeNextRequest(K,(0,c.signalFromNodeResponse)(t));try{let o=async e=>C.handle(B,M).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=U.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==f.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${H} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${H} ${a}`)}),l=!!(0,s.getRequestMeta)(e,"minimalMode"),u=async s=>{var i,u;let d=async({previousCacheEntry:n})=>{try{if(!l&&P&&S&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await o(s);e.fetchMetrics=M.renderOpts.fetchMetrics;let i=M.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let u=M.renderOpts.collectedTags;if(!k)return await (0,h.sendResponse)(K,L,a,M.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(a.headers);u&&(t[m.NEXT_CACHE_TAGS_HEADER]=u),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==M.renderOpts.collectedRevalidate&&!(M.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&M.renderOpts.collectedRevalidate,n=void 0===M.renderOpts.collectedExpire||M.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:M.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await C.onRequestError(e,t,{routerKind:"App Router",routePath:a,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:P})},!1,A),t}},c=await C.handleResponse({req:e,nextConfig:N,cacheKey:$,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:j,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:S,responseGenerator:d,waitUntil:r.waitUntil,isMinimalMode:l});if(!k)return null;if((null==c||null==(i=c.value)?void 0:i.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(u=c.value)?void 0:u.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});l||t.setHeader("x-nextjs-cache",P?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let f=(0,g.fromNodeOutgoingHttpHeaders)(c.value.headers);return l&&k||f.delete(m.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||f.get("Cache-Control")||f.set("Cache-Control",(0,R.getCacheControlHeader)(c.cacheControl)),await (0,h.sendResponse)(K,L,new Response(c.value.body,{headers:f,status:c.value.status||200})),null};J?await u(J):await U.withPropagatedContext(e.headers,()=>U.trace(f.BaseServerSpan.handleRequest,{spanName:`${H} ${a}`,kind:i.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},u))}catch(t){if(t instanceof x.NoFallbackError||await C.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:P})},!1,A),k)throw t;return await (0,h.sendResponse)(K,L,new Response(null,{status:500})),null}}e.s(["handler",()=>E,"patchFetch",()=>N,"routeModule",()=>C,"serverHooks",()=>A,"workAsyncStorage",()=>b,"workUnitAsyncStorage",()=>j]),r()}catch(e){r(e)}},!1)];
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,"005e455f82f6910af9a261b77f9ea2c63bb592f6d1",null),(0,a.registerServerReference)(g,"40cc0641ada90c511ae23c93b37edbbaa76a25c75e",null),(0,a.registerServerReference)(R,"401703243a40188e9a16445b2a8eca667efe679475",null),(0,a.registerServerReference)(m,"40b29c4b5bda93a655c0ab7c10e5597063c3e9d12d",null),e.s(["DELETE",()=>m,"GET",()=>h,"POST",()=>g,"PUT",()=>R]),r()}catch(e){r(e)}},!1),57985,e=>e.a(async(t,r)=>{try{var a=e.i(747909),n=e.i(174017),o=e.i(996250),s=e.i(759756),i=e.i(561916),l=e.i(174677),u=e.i(869741),d=e.i(316795),c=e.i(487718),f=e.i(995169),p=e.i(47587),h=e.i(666012),g=e.i(570101),R=e.i(626937),m=e.i(10372),x=e.i(193695);e.i(52474);var v=e.i(600220),w=e.i(314251),y=t([w]);[w]=y.then?(await y)():y;let C=new a.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/cli-tools/codex-profiles/route",pathname:"/api/cli-tools/codex-profiles",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/cli-tools/codex-profiles/route.ts",nextConfigOutput:"standalone",userland:w}),{workAsyncStorage:b,workUnitAsyncStorage:j,serverHooks:A}=C;function N(){return(0,o.patchFetch)({workAsyncStorage:b,workUnitAsyncStorage:j})}async function E(e,t,r){C.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let a="/api/cli-tools/codex-profiles/route";a=a.replace(/\/index$/,"")||"/";let o=await C.prepare(e,t,{srcPage:a,multiZoneDraftMode:!1});if(!o)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:w,params:y,nextConfig:N,parsedUrl:E,isDraftMode:b,prerenderManifest:j,routerServerContext:A,isOnDemandRevalidate:P,revalidateOnlyGenerated:S,resolvedPathname:O,clientReferenceManifest:T,serverActionsManifest:I}=o,_=(0,u.normalizeAppPath)(a),k=!!(j.dynamicRoutes[_]||j.routes[O]),F=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,E,!1):t.end("This page could not be found"),null);if(k&&!b){let e=!!j.routes[O],t=j.dynamicRoutes[_];if(t&&!1===t.fallback&&!e){if(N.experimental.adapterPath)return await F();throw new x.NoFallbackError}}let $=null;!k||C.isDev||b||($=O,$="/index"===$?"/":$);let q=!0===C.isDev||!k,D=k&&!q;I&&T&&(0,l.setManifestsSingleton)({page:a,clientReferenceManifest:T,serverActionsManifest:I});let H=e.method||"GET",U=(0,i.getTracer)(),J=U.getActiveScopeSpan(),M={params:y,prerenderManifest:j,renderOpts:{experimental:{authInterrupts:!!N.experimental.authInterrupts},cacheComponents:!!N.cacheComponents,supportsDynamicResponse:q,incrementalCache:(0,s.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:N.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>C.onRequestError(e,t,a,n,A)},sharedContext:{buildId:w}},K=new d.NodeNextRequest(e),L=new d.NodeNextResponse(t),B=c.NextRequestAdapter.fromNodeNextRequest(K,(0,c.signalFromNodeResponse)(t));try{let o=async e=>C.handle(B,M).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=U.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==f.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${H} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${H} ${a}`)}),l=!!(0,s.getRequestMeta)(e,"minimalMode"),u=async s=>{var i,u;let d=async({previousCacheEntry:n})=>{try{if(!l&&P&&S&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await o(s);e.fetchMetrics=M.renderOpts.fetchMetrics;let i=M.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let u=M.renderOpts.collectedTags;if(!k)return await (0,h.sendResponse)(K,L,a,M.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(a.headers);u&&(t[m.NEXT_CACHE_TAGS_HEADER]=u),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==M.renderOpts.collectedRevalidate&&!(M.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&M.renderOpts.collectedRevalidate,n=void 0===M.renderOpts.collectedExpire||M.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:M.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await C.onRequestError(e,t,{routerKind:"App Router",routePath:a,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:P})},!1,A),t}},c=await C.handleResponse({req:e,nextConfig:N,cacheKey:$,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:j,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:S,responseGenerator:d,waitUntil:r.waitUntil,isMinimalMode:l});if(!k)return null;if((null==c||null==(i=c.value)?void 0:i.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(u=c.value)?void 0:u.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});l||t.setHeader("x-nextjs-cache",P?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let f=(0,g.fromNodeOutgoingHttpHeaders)(c.value.headers);return l&&k||f.delete(m.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||f.get("Cache-Control")||f.set("Cache-Control",(0,R.getCacheControlHeader)(c.cacheControl)),await (0,h.sendResponse)(K,L,new Response(c.value.body,{headers:f,status:c.value.status||200})),null};J?await u(J):await U.withPropagatedContext(e.headers,()=>U.trace(f.BaseServerSpan.handleRequest,{spanName:`${H} ${a}`,kind:i.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},u))}catch(t){if(t instanceof x.NoFallbackError||await C.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:P})},!1,A),k)throw t;return await (0,h.sendResponse)(K,L,new Response(null,{status:500})),null}}e.s(["handler",()=>E,"patchFetch",()=>N,"routeModule",()=>C,"serverHooks",()=>A,"workAsyncStorage",()=>b,"workUnitAsyncStorage",()=>j]),r()}catch(e){r(e)}},!1)];
2
2
 
3
3
  //# sourceMappingURL=_4b8fd853._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[114902,e=>e.a(async(t,a)=>{try{var r=e.i(745015),n=e.i(89171),i=e.i(924868),o=e.i(814747),s=e.i(446786),l=e.i(266240),d=e.i(841788),u=e.i(197892),c=e.i(676088),p=e.i(200392);e.i(245272);var f=e.i(125852),h=e.i(195975),g=t([c,p]);[c,p]=g.then?(await g)():g;let w=o.default.join(s.default.homedir(),".local","share","kilo"),v=o.default.join(w,"auth.json");o.default.join(s.default.homedir(),".config","kilo");let C=async()=>{try{let e=await i.default.readFile(v,"utf-8");return JSON.parse(e)}catch(e){if("ENOENT"===e.code)return null;throw e}};async function m(){try{let e=await (0,l.getCliRuntimeStatus)("kilo");if(!e.installed||!e.runnable)return n.NextResponse.json({installed:e.installed,runnable:e.runnable,command:e.command,commandPath:e.commandPath,runtimeMode:e.runtimeMode,reason:e.reason,settings:null,message:e.installed&&!e.runnable?"Kilo Code CLI is installed but not runnable":"Kilo Code CLI is not installed"});let t=await C(),a=null;try{let e=o.default.join(s.default.homedir(),".config","Code","User","settings.json"),t=await i.default.readFile(e,"utf-8"),r=JSON.parse(t);for(let[e,t]of(a={},Object.entries(r)))(e.startsWith("kilocode.")||e.startsWith("kilo-code.")||e.startsWith("kilo."))&&(a[e]=t)}catch{}return n.NextResponse.json({installed:e.installed,runnable:e.runnable,command:e.command,commandPath:e.commandPath,runtimeMode:e.runtimeMode,reason:e.reason,settings:{auth:t?Object.keys(t):[],extensionSettings:a},hasOmniRoute:(e=>{if(!e)return!1;let t=e["openai-compatible"]||e.omniroute;if(!t)return!1;let a=t.baseUrl||t.baseURL||"";return a.includes("localhost")||a.includes("127.0.0.1")||a.includes("omniroute")})(t),authPath:v})}catch(e){return console.log("Error checking kilo settings:",e),n.NextResponse.json({error:"Failed to check kilo settings"},{status:500})}}async function R(e){let t;try{t=await e.json()}catch{return n.NextResponse.json({error:{message:"Invalid request",details:[{field:"body",message:"Invalid JSON body"}]}},{status:400})}try{let e=(0,l.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});let a=(0,p.validateBody)(c.cliModelConfigSchema,t);if((0,p.isValidationFailure)(a))return n.NextResponse.json({error:a.error},{status:400});let{baseUrl:r,model:h}=a.data,{apiKey:g}=a.data,m="string"==typeof t?.keyId?t.keyId.trim():null;if(m)try{let e=await (0,f.getApiKeyById)(m);e?.key&&(g=e.key)}catch{}await i.default.mkdir(w,{recursive:!0}),await (0,d.createBackup)("kilo",v);let R={};try{let e=await i.default.readFile(v,"utf-8");R=JSON.parse(e)}catch{}let y=r.endsWith("/v1")?r:`${r}/v1`;R["openai-compatible"]={type:"api-key",apiKey:g||"sk_omniroute",baseUrl:y,model:h},await i.default.writeFile(v,JSON.stringify(R,null,2));try{let e=o.default.join(s.default.homedir(),".config","Code","User","settings.json"),t={};try{let a=await i.default.readFile(e,"utf-8");t=JSON.parse(a)}catch{}t["kilocode.customProvider"]={name:"OmniRoute",baseURL:y,apiKey:g||"sk_omniroute"},t["kilocode.defaultModel"]=h,await i.default.writeFile(e,JSON.stringify(t,null,2))}catch{}try{(0,u.saveCliToolLastConfigured)("kilo")}catch{}return n.NextResponse.json({success:!0,message:"Kilo Code settings applied successfully!",authPath:v})}catch(e){return console.log("Error updating kilo settings:",e),n.NextResponse.json({error:"Failed to update kilo settings"},{status:500})}}async function y(){try{let e=(0,l.ensureCliConfigWriteAllowed)();if(e)return n.NextResponse.json({error:e},{status:403});await (0,d.createBackup)("kilo",v);let t={};try{let e=await i.default.readFile(v,"utf-8");t=JSON.parse(e)}catch(e){if("ENOENT"===e.code)return n.NextResponse.json({success:!0,message:"No settings file to reset"});throw e}delete t["openai-compatible"],delete t.omniroute,await i.default.writeFile(v,JSON.stringify(t,null,2));try{let e=o.default.join(s.default.homedir(),".config","Code","User","settings.json"),t=await i.default.readFile(e,"utf-8"),a=JSON.parse(t);delete a["kilocode.customProvider"],delete a["kilocode.defaultModel"],await i.default.writeFile(e,JSON.stringify(a,null,2))}catch{}try{(0,u.deleteCliToolLastConfigured)("kilo")}catch{}return n.NextResponse.json({success:!0,message:"OmniRoute settings removed from Kilo Code"})}catch(e){return console.log("Error resetting kilo settings:",e),n.NextResponse.json({error:"Failed to reset kilo settings"},{status:500})}}(0,h.ensureServerEntryExports)([m,R,y]),(0,r.registerServerReference)(m,"00826199b74b6501c396221a8b58ff179bd2c0f8e2",null),(0,r.registerServerReference)(R,"40ac51240388e23c1e64c1b4f4fdc449e043ccf309",null),(0,r.registerServerReference)(y,"009728cee6f2bdad539af3899f8fe12846f6d62894",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,"000cc3571c3e5bd623f7a8c19801387d1dda6b4623",null),(0,r.registerServerReference)(R,"4077e2cd570313b01f8293f8be474045636759a61a",null),(0,r.registerServerReference)(y,"00a1561e3605c9aed6a6da1cc320de19edf82423ca",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,"0064c0d13d5f13e20202f0ce5f33c9c317898c314d",null),(0,a.registerServerReference)(g,"409fc1538813b8fc8fd35412f4a994d67bad625185",null),(0,a.registerServerReference)(R,"005349327f7a4e258ee7ccc8e6a925690ae681a909",null),e.s(["DELETE",()=>R,"GET",()=>f,"POST",()=>g]),r()}catch(e){r(e)}},!1),122141,e=>e.a(async(t,r)=>{try{var a=e.i(747909),n=e.i(174017),s=e.i(996250),o=e.i(759756),i=e.i(561916),l=e.i(174677),d=e.i(869741),u=e.i(316795),c=e.i(487718),p=e.i(995169),m=e.i(47587),h=e.i(666012),f=e.i(570101),g=e.i(626937),R=e.i(10372),y=e.i(193695);e.i(52474);var v=e.i(600220),w=e.i(815058),E=t([w]);[w]=E.then?(await E)():E;let x=new a.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/cli-tools/droid-settings/route",pathname:"/api/cli-tools/droid-settings",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/cli-tools/droid-settings/route.ts",nextConfigOutput:"standalone",userland:w}),{workAsyncStorage:O,workUnitAsyncStorage:b,serverHooks:S}=x;function C(){return(0,s.patchFetch)({workAsyncStorage:O,workUnitAsyncStorage:b})}async function N(e,t,r){x.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let a="/api/cli-tools/droid-settings/route";a=a.replace(/\/index$/,"")||"/";let s=await x.prepare(e,t,{srcPage:a,multiZoneDraftMode:!1});if(!s)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:w,params:E,nextConfig:C,parsedUrl:N,isDraftMode:O,prerenderManifest:b,routerServerContext:S,isOnDemandRevalidate:A,revalidateOnlyGenerated:T,resolvedPathname:P,clientReferenceManifest:M,serverActionsManifest:k}=s,I=(0,d.normalizeAppPath)(a),_=!!(b.dynamicRoutes[I]||b.routes[P]),j=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,N,!1):t.end("This page could not be found"),null);if(_&&!O){let e=!!b.routes[P],t=b.dynamicRoutes[I];if(t&&!1===t.fallback&&!e){if(C.experimental.adapterPath)return await j();throw new y.NoFallbackError}}let F=null;!_||x.isDev||O||(F=P,F="/index"===F?"/":F);let D=!0===x.isDev||!_,H=_&&!D;k&&M&&(0,l.setManifestsSingleton)({page:a,clientReferenceManifest:M,serverActionsManifest:k});let U=e.method||"GET",q=(0,i.getTracer)(),K=q.getActiveScopeSpan(),L={params:E,prerenderManifest:b,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:D,incrementalCache:(0,o.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:C.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>x.onRequestError(e,t,a,n,S)},sharedContext:{buildId:w}},$=new u.NodeNextRequest(e),B=new u.NodeNextResponse(t),J=c.NextRequestAdapter.fromNodeNextRequest($,(0,c.signalFromNodeResponse)(t));try{let s=async e=>x.handle(J,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=q.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${U} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${U} ${a}`)}),l=!!(0,o.getRequestMeta)(e,"minimalMode"),d=async o=>{var i,d;let u=async({previousCacheEntry:n})=>{try{if(!l&&A&&T&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await s(o);e.fetchMetrics=L.renderOpts.fetchMetrics;let i=L.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let d=L.renderOpts.collectedTags;if(!_)return await (0,h.sendResponse)($,B,a,L.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(a.headers);d&&(t[R.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=R.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,n=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=R.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await x.onRequestError(e,t,{routerKind:"App Router",routePath:a,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:A})},!1,S),t}},c=await x.handleResponse({req:e,nextConfig:C,cacheKey:F,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:b,isRoutePPREnabled:!1,isOnDemandRevalidate:A,revalidateOnlyGenerated:T,responseGenerator:u,waitUntil:r.waitUntil,isMinimalMode:l});if(!_)return null;if((null==c||null==(i=c.value)?void 0:i.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(d=c.value)?void 0:d.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});l||t.setHeader("x-nextjs-cache",A?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),O&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,f.fromNodeOutgoingHttpHeaders)(c.value.headers);return l&&_||p.delete(R.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,g.getCacheControlHeader)(c.cacheControl)),await (0,h.sendResponse)($,B,new Response(c.value.body,{headers:p,status:c.value.status||200})),null};K?await d(K):await q.withPropagatedContext(e.headers,()=>q.trace(p.BaseServerSpan.handleRequest,{spanName:`${U} ${a}`,kind:i.SpanKind.SERVER,attributes:{"http.method":U,"http.target":e.url}},d))}catch(t){if(t instanceof y.NoFallbackError||await x.onRequestError(e,t,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:A})},!1,S),_)throw t;return await (0,h.sendResponse)($,B,new Response(null,{status:500})),null}}e.s(["handler",()=>N,"patchFetch",()=>C,"routeModule",()=>x,"serverHooks",()=>S,"workAsyncStorage",()=>O,"workUnitAsyncStorage",()=>b]),r()}catch(e){r(e)}},!1)];
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,"006fd2ddbfdf7aa130f26925de1d9fbc3f94879ff0",null),(0,a.registerServerReference)(g,"40b77d77719a2076f5087ac242f1efee4c0be5c1d7",null),(0,a.registerServerReference)(R,"000d27231d172a952a4278477ceaaa11467486e371",null),e.s(["DELETE",()=>R,"GET",()=>f,"POST",()=>g]),r()}catch(e){r(e)}},!1),122141,e=>e.a(async(t,r)=>{try{var a=e.i(747909),n=e.i(174017),s=e.i(996250),o=e.i(759756),i=e.i(561916),l=e.i(174677),d=e.i(869741),u=e.i(316795),c=e.i(487718),p=e.i(995169),m=e.i(47587),h=e.i(666012),f=e.i(570101),g=e.i(626937),R=e.i(10372),y=e.i(193695);e.i(52474);var v=e.i(600220),w=e.i(815058),E=t([w]);[w]=E.then?(await E)():E;let x=new a.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/cli-tools/droid-settings/route",pathname:"/api/cli-tools/droid-settings",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/cli-tools/droid-settings/route.ts",nextConfigOutput:"standalone",userland:w}),{workAsyncStorage:O,workUnitAsyncStorage:b,serverHooks:S}=x;function C(){return(0,s.patchFetch)({workAsyncStorage:O,workUnitAsyncStorage:b})}async function N(e,t,r){x.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let a="/api/cli-tools/droid-settings/route";a=a.replace(/\/index$/,"")||"/";let s=await x.prepare(e,t,{srcPage:a,multiZoneDraftMode:!1});if(!s)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:w,params:E,nextConfig:C,parsedUrl:N,isDraftMode:O,prerenderManifest:b,routerServerContext:S,isOnDemandRevalidate:A,revalidateOnlyGenerated:T,resolvedPathname:P,clientReferenceManifest:M,serverActionsManifest:k}=s,I=(0,d.normalizeAppPath)(a),_=!!(b.dynamicRoutes[I]||b.routes[P]),j=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,N,!1):t.end("This page could not be found"),null);if(_&&!O){let e=!!b.routes[P],t=b.dynamicRoutes[I];if(t&&!1===t.fallback&&!e){if(C.experimental.adapterPath)return await j();throw new y.NoFallbackError}}let F=null;!_||x.isDev||O||(F=P,F="/index"===F?"/":F);let D=!0===x.isDev||!_,H=_&&!D;k&&M&&(0,l.setManifestsSingleton)({page:a,clientReferenceManifest:M,serverActionsManifest:k});let U=e.method||"GET",q=(0,i.getTracer)(),K=q.getActiveScopeSpan(),L={params:E,prerenderManifest:b,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:D,incrementalCache:(0,o.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:C.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>x.onRequestError(e,t,a,n,S)},sharedContext:{buildId:w}},$=new u.NodeNextRequest(e),B=new u.NodeNextResponse(t),J=c.NextRequestAdapter.fromNodeNextRequest($,(0,c.signalFromNodeResponse)(t));try{let s=async e=>x.handle(J,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=q.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${U} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${U} ${a}`)}),l=!!(0,o.getRequestMeta)(e,"minimalMode"),d=async o=>{var i,d;let u=async({previousCacheEntry:n})=>{try{if(!l&&A&&T&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await s(o);e.fetchMetrics=L.renderOpts.fetchMetrics;let i=L.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let d=L.renderOpts.collectedTags;if(!_)return await (0,h.sendResponse)($,B,a,L.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(a.headers);d&&(t[R.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=R.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,n=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=R.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await x.onRequestError(e,t,{routerKind:"App Router",routePath:a,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:A})},!1,S),t}},c=await x.handleResponse({req:e,nextConfig:C,cacheKey:F,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:b,isRoutePPREnabled:!1,isOnDemandRevalidate:A,revalidateOnlyGenerated:T,responseGenerator:u,waitUntil:r.waitUntil,isMinimalMode:l});if(!_)return null;if((null==c||null==(i=c.value)?void 0:i.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(d=c.value)?void 0:d.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});l||t.setHeader("x-nextjs-cache",A?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),O&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,f.fromNodeOutgoingHttpHeaders)(c.value.headers);return l&&_||p.delete(R.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,g.getCacheControlHeader)(c.cacheControl)),await (0,h.sendResponse)($,B,new Response(c.value.body,{headers:p,status:c.value.status||200})),null};K?await d(K):await q.withPropagatedContext(e.headers,()=>q.trace(p.BaseServerSpan.handleRequest,{spanName:`${U} ${a}`,kind:i.SpanKind.SERVER,attributes:{"http.method":U,"http.target":e.url}},d))}catch(t){if(t instanceof y.NoFallbackError||await x.onRequestError(e,t,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,m.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:A})},!1,S),_)throw t;return await (0,h.sendResponse)($,B,new Response(null,{status:500})),null}}e.s(["handler",()=>N,"patchFetch",()=>C,"routeModule",()=>x,"serverHooks",()=>S,"workAsyncStorage",()=>O,"workUnitAsyncStorage",()=>b]),r()}catch(e){r(e)}},!1)];
2
2
 
3
3
  //# sourceMappingURL=_ee9b677b._.js.map
@@ -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.2.6",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":"c8 --exclude=tests/** --exclude=**/*.test.* --reporter=text-summary --reporter=html --reporter=json-summary --reporter=lcov --check-coverage --statements 55 --lines 55 --functions 55 --branches 60 node --import tsx/esm --test tests/unit/*.test.mjs","test:coverage:legacy":"c8 --exclude=open-sse --check-coverage --lines 50 --functions 50 --branches 50 node --import tsx/esm --test tests/unit/*.test.mjs","coverage:report":"c8 report --exclude=tests/** --exclude=**/*.test.* --reporter=text --reporter=text-summary --reporter=html --reporter=json-summary --reporter=lcov","coverage:report:legacy":"c8 report --exclude=open-sse --reporter=text --reporter=text-summary","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",c8:"^11.0.0",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","path-to-regexp":"^8.4.0"}})},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.2.7",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":"c8 --exclude=tests/** --exclude=**/*.test.* --reporter=text-summary --reporter=html --reporter=json-summary --reporter=lcov --check-coverage --statements 55 --lines 55 --functions 55 --branches 60 node --import tsx/esm --test tests/unit/*.test.mjs","test:coverage:legacy":"c8 --exclude=open-sse --check-coverage --lines 50 --functions 50 --branches 50 node --import tsx/esm --test tests/unit/*.test.mjs","coverage:report":"c8 report --exclude=tests/** --exclude=**/*.test.* --reporter=text --reporter=text-summary --reporter=html --reporter=json-summary --reporter=lcov","coverage:report:legacy":"c8 report --exclude=open-sse --reporter=text --reporter=text-summary","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",c8:"^11.0.0",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","path-to-regexp":"^8.4.0"}})},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.2.6",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":"c8 --exclude=tests/** --exclude=**/*.test.* --reporter=text-summary --reporter=html --reporter=json-summary --reporter=lcov --check-coverage --statements 55 --lines 55 --functions 55 --branches 60 node --import tsx/esm --test tests/unit/*.test.mjs","test:coverage:legacy":"c8 --exclude=open-sse --check-coverage --lines 50 --functions 50 --branches 50 node --import tsx/esm --test tests/unit/*.test.mjs","coverage:report":"c8 report --exclude=tests/** --exclude=**/*.test.* --reporter=text --reporter=text-summary --reporter=html --reporter=json-summary --reporter=lcov","coverage:report:legacy":"c8 report --exclude=open-sse --reporter=text --reporter=text-summary","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",c8:"^11.0.0",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","path-to-regexp":"^8.4.0"}})},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.2.7",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":"c8 --exclude=tests/** --exclude=**/*.test.* --reporter=text-summary --reporter=html --reporter=json-summary --reporter=lcov --check-coverage --statements 55 --lines 55 --functions 55 --branches 60 node --import tsx/esm --test tests/unit/*.test.mjs","test:coverage:legacy":"c8 --exclude=open-sse --check-coverage --lines 50 --functions 50 --branches 50 node --import tsx/esm --test tests/unit/*.test.mjs","coverage:report":"c8 report --exclude=tests/** --exclude=**/*.test.* --reporter=text --reporter=text-summary --reporter=html --reporter=json-summary --reporter=lcov","coverage:report:legacy":"c8 report --exclude=open-sse --reporter=text --reporter=text-summary","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",c8:"^11.0.0",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","path-to-regexp":"^8.4.0"}})},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
@@ -1,3 +1,3 @@
1
- module.exports=[514884,a=>a.a(async(b,c)=>{try{var d=a.i(187924),e=a.i(415925),f=a.i(572131),g=a.i(341212),h=a.i(238246),i=a.i(50944),j=a.i(442308),k=a.i(292216),l=a.i(831097),m=a.i(294023),n=a.i(563203),o=a.i(147089),p=a.i(662073),q=a.i(240246),r=a.i(95455),s=b([j,p]);function t({machineId:a}){let b=(0,e.useTranslations)("home"),c=(0,e.useTranslations)("common"),g=(0,e.useTranslations)("sidebar"),[i,j]=(0,f.useState)([]),[n,o]=(0,f.useState)([]),[r,s]=(0,f.useState)(!0),[t,w]=(0,f.useState)("/v1"),[x,y]=(0,f.useState)(null),[z,A]=(0,f.useState)({}),[B,C]=(0,f.useState)(null),[D,E]=(0,f.useState)(!1);(0,f.useEffect)(()=>{},[]);let F=(0,f.useCallback)(async()=>{try{let[a,b,c,d]=await Promise.all([fetch("/api/providers"),fetch("/api/models"),fetch("/api/provider-metrics"),fetch("/api/system/version")]);if(a.ok){let b=await a.json();j(b.connections||[])}if(b.ok){let a=await b.json();o(a.models||[])}if(c.ok){let a=await c.json();A(a.metrics||{})}if(d.ok){let a=await d.json();C(a)}}catch(a){console.log("Error fetching data:",a)}finally{s(!1)}},[]);(0,f.useEffect)(()=>{F()},[F]);let G=(0,f.useMemo)(()=>Object.entries(p.AI_PROVIDERS).map(([a,b])=>{let c=i.filter(b=>b.provider===a),d=c.filter(a=>!1!==a.isActive&&("active"===a.testStatus||"success"===a.testStatus||"unknown"===a.testStatus)).length,e=c.filter(a=>!1!==a.isActive&&("error"===a.testStatus||"expired"===a.testStatus||"unavailable"===a.testStatus)).length,f=new Set([a,b.alias].filter(Boolean)),g=n.filter(a=>f.has(a.provider)),h=p.FREE_PROVIDERS[a]?"free":p.OAUTH_PROVIDERS[a]?"oauth":"apikey";return{id:a,provider:b,total:c.length,connected:d,errors:e,modelCount:g.length,authType:h}}),[i,n]),H=(0,f.useMemo)(()=>{if(!x)return[];let a=new Set([x.id,x.provider?.alias].filter(Boolean));return n.filter(b=>a.has(b.provider))},[x,n]),I=[{label:b("documentation"),href:"/docs",icon:"menu_book"},{label:g("providers"),href:"/dashboard/providers",icon:"dns"},{label:g("combos"),href:"/dashboard/combos",icon:"layers"},{label:g("analytics"),href:"/dashboard/analytics",icon:"analytics"},{label:b("healthMonitor"),href:"/dashboard/health",icon:"health_and_safety"},{label:g("cliTools"),href:"/dashboard/cli-tools",icon:"terminal"},{label:b("reportIssue"),href:"https://github.com/diegosouzapw/OmniRoute/issues",external:!0,icon:"bug_report"}],J=async()=>{let a=q.useNotificationStore.getState();E(!0);try{a.info(b("updateStarted")||"Update process started...");let c=await fetch("/api/system/version",{method:"POST"}),d=await c.json();c.ok&&d.success?a.success(d.message||"Update initiated successfully. The system will restart shortly."):(a.error(d.error||"Failed to start update."),E(!1))}catch{a.error("Network error while trying to update."),E(!1)}};return r?(0,d.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,d.jsx)(l.CardSkeleton,{}),(0,d.jsx)(l.CardSkeleton,{})]}):(0,d.jsxs)("div",{className:"flex flex-col gap-8",children:[B?.updateAvailable&&(0,d.jsxs)("div",{className:"bg-primary/10 border border-primary/20 text-primary px-5 py-4 rounded-xl flex items-center justify-between min-h-[64px]",children:[(0,d.jsxs)("div",{className:"flex items-center gap-4",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[24px]",children:"system_update_alt"}),(0,d.jsxs)("div",{children:[(0,d.jsxs)("p",{className:"font-semibold text-sm",children:["Update Available: v",B.latest]}),(0,d.jsx)("p",{className:"text-xs opacity-80 mt-0.5",children:b("updateAvailableDesc")||`You are currently using v${B.current}. Update to access the latest features and bug fixes.`})]})]}),(0,d.jsx)(m.Button,{size:"sm",onClick:J,disabled:D,className:"shrink-0 ml-4 font-semibold",children:D?b("updating")||"Updating...":b("updateNow")||"Update Now"})]}),(0,d.jsx)(k.Card,{children:(0,d.jsxs)("div",{className:"flex flex-col gap-5",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:b("quickStart")}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:b("quickStartDesc")})]}),(0,d.jsxs)(h.default,{href:"/docs",className:"hidden sm:inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-xs font-medium border border-border text-text-muted hover:text-text-main hover:bg-bg-subtle transition-colors",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"menu_book"}),b("fullDocs")]})]}),(0,d.jsxs)("ol",{className:"grid grid-cols-1 md:grid-cols-2 gap-3 text-sm",children:[(0,d.jsxs)("li",{className:"rounded-lg border border-border bg-bg-subtle p-4 flex gap-3",children:[(0,d.jsx)("div",{className:"flex items-center justify-center size-8 rounded-lg bg-primary/10 text-primary shrink-0",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"key"})}),(0,d.jsxs)("div",{children:[(0,d.jsx)("span",{className:"font-semibold",children:b("step1Title")}),(0,d.jsx)("p",{className:"text-text-muted mt-0.5",children:b.rich("step1Desc",{endpoint:a=>(0,d.jsx)(h.default,{href:"/dashboard/endpoint",className:"text-primary hover:underline",children:a})})})]})]}),(0,d.jsxs)("li",{className:"rounded-lg border border-border bg-bg-subtle p-4 flex gap-3",children:[(0,d.jsx)("div",{className:"flex items-center justify-center size-8 rounded-lg bg-green-500/10 text-green-500 shrink-0",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"dns"})}),(0,d.jsxs)("div",{children:[(0,d.jsx)("span",{className:"font-semibold",children:b("step2Title")}),(0,d.jsx)("p",{className:"text-text-muted mt-0.5",children:b.rich("step2Desc",{providers:a=>(0,d.jsx)(h.default,{href:"/dashboard/providers",className:"text-primary hover:underline",children:a})})})]})]}),(0,d.jsxs)("li",{className:"rounded-lg border border-border bg-bg-subtle p-4 flex gap-3",children:[(0,d.jsx)("div",{className:"flex items-center justify-center size-8 rounded-lg bg-blue-500/10 text-blue-500 shrink-0",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"link"})}),(0,d.jsxs)("div",{children:[(0,d.jsx)("span",{className:"font-semibold",children:b("step3Title")}),(0,d.jsx)("p",{className:"text-text-muted mt-0.5",children:b("step3Desc",{url:t})})]})]}),(0,d.jsxs)("li",{className:"rounded-lg border border-border bg-bg-subtle p-4 flex gap-3",children:[(0,d.jsx)("div",{className:"flex items-center justify-center size-8 rounded-lg bg-amber-500/10 text-amber-500 shrink-0",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"analytics"})}),(0,d.jsxs)("div",{children:[(0,d.jsx)("span",{className:"font-semibold",children:b("step4Title")}),(0,d.jsx)("p",{className:"text-text-muted mt-0.5",children:b.rich("step4Desc",{logs:a=>(0,d.jsx)(h.default,{href:"/dashboard/usage",className:"text-primary hover:underline",children:a}),analytics:a=>(0,d.jsx)(h.default,{href:"/dashboard/analytics",className:"text-primary hover:underline",children:a})})})]})]})]}),(0,d.jsx)("div",{className:"flex flex-wrap gap-2",children:I.map(a=>(0,d.jsxs)("a",{href:a.href,target:a.external?"_blank":void 0,rel:a.external?"noopener noreferrer":void 0,className:"inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-xs font-medium border border-border text-text-muted hover:text-text-main hover:bg-bg-subtle transition-colors",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:a.icon||(a.external?"open_in_new":"arrow_forward")}),a.label]},a.href))})]})}),(0,d.jsxs)(k.Card,{children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:b("providersOverview")}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:b("configuredOf",{configured:G.filter(a=>a.total>0).length,total:G.length})})]}),(0,d.jsxs)("div",{className:"flex items-center gap-4",children:[(0,d.jsxs)("div",{className:"hidden sm:flex items-center gap-3 text-[11px] text-text-muted",children:[(0,d.jsxs)("span",{className:"flex items-center gap-1",children:[(0,d.jsx)("span",{className:"size-2 rounded-full bg-green-500"})," ",c("free")]}),(0,d.jsxs)("span",{className:"flex items-center gap-1",children:[(0,d.jsx)("span",{className:"size-2 rounded-full bg-blue-500"})," ",b("oauthLabel")]}),(0,d.jsxs)("span",{className:"flex items-center gap-1",children:[(0,d.jsx)("span",{className:"size-2 rounded-full bg-amber-500"})," ",b("apiKeyLabel")]})]}),(0,d.jsxs)(h.default,{href:"/dashboard/providers",className:"inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-xs font-medium border border-border text-text-muted hover:text-text-main hover:bg-bg-subtle transition-colors",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"settings"}),c("manage")]})]})]}),(0,d.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-3",children:G.map(a=>(0,d.jsx)(u,{item:a,metrics:z[a.provider.alias]||z[a.id],onClick:()=>y(a)},a.id))})]}),x&&(0,d.jsx)(v,{provider:x,models:H,onClose:()=>y(null)})]})}function u({item:a,metrics:b,onClick:c}){let f=(0,e.useTranslations)("home"),g=(0,e.useTranslations)("common"),h=a.errors>0?"text-red-500":a.connected>0?"text-green-500":"text-text-muted",i={free:{color:"bg-green-500",label:g("free")},oauth:{color:"bg-blue-500",label:f("oauthLabel")},apikey:{color:"bg-amber-500",label:f("apiKeyLabel")}},j=i[a.authType]||i.apikey;return(0,d.jsx)("button",{onClick:c,className:"border border-border rounded-lg p-3 hover:bg-surface/40 transition-colors text-left cursor-pointer w-full",children:(0,d.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,d.jsx)("div",{className:"size-8 rounded-lg flex items-center justify-center shrink-0",style:{backgroundColor:`${a.provider.color||"#888"}15`},children:(0,d.jsx)(o.default,{providerId:a.provider.id,size:26,type:"color"})}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,d.jsx)("p",{className:"text-sm font-semibold truncate",children:a.provider.name}),(0,d.jsx)("span",{className:`size-2 rounded-full ${j.color} shrink-0`,title:j.label})]}),(0,d.jsx)("p",{className:`text-xs ${h}`,children:0===a.total?g("notConfigured"):f("activeError",{active:a.connected,errors:a.errors})}),b&&b.totalRequests>0&&(0,d.jsxs)("div",{className:"flex items-center gap-2 mt-0.5",children:[(0,d.jsxs)("span",{className:"text-[10px] text-text-muted",children:[(0,d.jsx)("span",{className:"text-emerald-500",children:b.totalSuccesses}),"/",f("requestsShort",{count:b.totalRequests})]}),(0,d.jsxs)("span",{className:"text-[10px] text-text-muted",children:[b.successRate,"%"]}),(0,d.jsxs)("span",{className:"text-[10px] text-text-muted",children:["~",b.avgLatencyMs,"ms"]})]})]}),(0,d.jsxs)("div",{className:"text-right shrink-0",children:[(0,d.jsx)("p",{className:"text-xs font-medium text-text-main",children:a.modelCount}),(0,d.jsx)("p",{className:"text-[10px] text-text-muted",children:g("models")})]})]})})}function v({provider:a,models:b,onClose:c}){let[g,h]=(0,f.useState)(null),j=(0,q.useNotificationStore)(),k=(0,i.useRouter)(),l=(0,e.useTranslations)("home"),o=(0,e.useTranslations)("common"),p=(0,e.useTranslations)("sidebar"),s=async a=>{await (0,r.copyToClipboard)(a),h(a),j.success(l("copiedModel",{model:a})),setTimeout(()=>h(null),2e3)};return(0,d.jsx)(n.Modal,{isOpen:!0,title:l("providerModelsTitle",{provider:a.provider.name}),onClose:c,children:(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"token"}),1===b.length?l("modelAvailable",{count:b.length}):l("modelsAvailable",{count:b.length}),a.total>0&&(0,d.jsxs)("span",{className:"ml-auto text-xs text-green-500",children:["●"," ",1===a.connected?l("connectionsActive",{count:a.connected}):l("connectionsActivePlural",{count:a.connected})]})]}),0===b.length?(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[32px] text-text-muted mb-2",children:"search_off"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:l("noModelsAvailable")}),(0,d.jsx)("p",{className:"text-xs text-text-muted mt-1",children:l("configureFirst",{providers:p("providers")})})]}):(0,d.jsx)("div",{className:"flex flex-col gap-1 max-h-[400px] overflow-y-auto",children:b.map(a=>(0,d.jsxs)("div",{className:"flex items-center justify-between px-3 py-2 rounded-lg hover:bg-surface/50 transition-colors group",children:[(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("p",{className:"font-mono text-sm text-text-main truncate",children:a.fullModel}),a.alias!==a.model&&(0,d.jsxs)("p",{className:"text-[10px] text-text-muted",children:[l("aliasLabel"),": ",a.alias]})]}),(0,d.jsx)("button",{onClick:()=>s(a.fullModel),className:"shrink-0 ml-2 p-1.5 rounded-lg text-text-muted hover:text-text-main hover:bg-bg-subtle transition-colors opacity-0 group-hover:opacity-100",title:l("copyModelName"),children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:g===a.fullModel?"check":"content_copy"})})]},a.fullModel))}),(0,d.jsxs)("div",{className:"flex gap-2 pt-2 border-t border-border",children:[(0,d.jsxs)(m.Button,{variant:"secondary",fullWidth:!0,size:"sm",onClick:()=>{var b;return b=`/dashboard/providers/${a.id}`,void(c(),k.push(b))},className:"flex-1",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"settings"}),l("configureProvider")]}),(0,d.jsx)(m.Button,{variant:"ghost",size:"sm",onClick:c,children:o("close")})]})]})})}[j,p]=s.then?(await s)():s,t.propTypes={machineId:g.default.string},u.propTypes={item:g.default.shape({id:g.default.string.isRequired,provider:g.default.shape({id:g.default.string.isRequired,name:g.default.string.isRequired,color:g.default.string,textIcon:g.default.string,alias:g.default.string}).isRequired,total:g.default.number.isRequired,connected:g.default.number.isRequired,errors:g.default.number.isRequired,modelCount:g.default.number.isRequired,authType:g.default.string.isRequired}).isRequired,metrics:g.default.shape({totalRequests:g.default.number,totalSuccesses:g.default.number,successRate:g.default.number,avgLatencyMs:g.default.number}),onClick:g.default.func.isRequired},v.propTypes={provider:g.default.object.isRequired,models:g.default.array.isRequired,onClose:g.default.func.isRequired},a.s(["default",()=>t]),c()}catch(a){c(a)}},!1),1559,a=>{"use strict";var b=a.i(187924),c=a.i(572131);function d(){let[a,d]=(0,c.useState)(!1);if(a)return null;let e="u">typeof navigator&&navigator.platform?.startsWith("Win")?"%APPDATA%\\omniroute\\server.env":"~/.omniroute/server.env";return(0,b.jsxs)("div",{role:"alert",className:"flex items-start gap-3 rounded-lg border border-amber-500/30 bg-amber-500/10 px-4 py-3 text-sm text-amber-200 mb-4",children:[(0,b.jsx)("span",{className:"text-amber-400 text-base shrink-0 mt-0.5",children:"⚠️"}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsx)("p",{className:"font-semibold text-amber-300",children:"Running in zero-config mode"}),(0,b.jsxs)("p",{className:"mt-0.5 text-amber-200/80",children:["OmniRoute auto-generated secure encryption keys on first launch. They are persisted to"," ",(0,b.jsx)("code",{className:"font-mono bg-amber-500/20 px-1 rounded text-xs",children:e}),". No action is required — your data is encrypted and safe. To use custom keys, add"," ",(0,b.jsx)("code",{className:"font-mono bg-amber-500/20 px-1 rounded text-xs",children:"JWT_SECRET"})," and"," ",(0,b.jsx)("code",{className:"font-mono bg-amber-500/20 px-1 rounded text-xs",children:"STORAGE_ENCRYPTION_KEY"})," ","to that file."]})]}),(0,b.jsx)("button",{onClick:()=>d(!0),className:"shrink-0 text-amber-400/60 hover:text-amber-300 transition-colors ml-1","aria-label":"Dismiss",children:"✕"})]})}a.s(["default",()=>d])}];
1
+ module.exports=[514884,a=>a.a(async(b,c)=>{try{var d=a.i(187924),e=a.i(415925),f=a.i(572131),g=a.i(341212),h=a.i(238246),i=a.i(50944),j=a.i(442308),k=a.i(292216),l=a.i(831097),m=a.i(294023),n=a.i(563203),o=a.i(147089),p=a.i(662073),q=a.i(240246),r=a.i(95455),s=b([j,p]);function t({machineId:a}){let b=(0,e.useTranslations)("home"),c=(0,e.useTranslations)("common"),g=(0,e.useTranslations)("sidebar"),[i,j]=(0,f.useState)([]),[n,o]=(0,f.useState)([]),[r,s]=(0,f.useState)(!0),[t,w]=(0,f.useState)("/v1"),[x,y]=(0,f.useState)(null),[z,A]=(0,f.useState)({}),[B,C]=(0,f.useState)(null),[D,E]=(0,f.useState)(!1),[F,G]=(0,f.useState)([]),[H,I]=(0,f.useState)("idle");(0,f.useEffect)(()=>{},[]);let J=(0,f.useCallback)(async()=>{try{let[a,b,c,d]=await Promise.all([fetch("/api/providers"),fetch("/api/models"),fetch("/api/provider-metrics"),fetch("/api/system/version")]);if(a.ok){let b=await a.json();j(b.connections||[])}if(b.ok){let a=await b.json();o(a.models||[])}if(c.ok){let a=await c.json();A(a.metrics||{})}if(d.ok){let a=await d.json();C(a)}}catch(a){console.log("Error fetching data:",a)}finally{s(!1)}},[]);(0,f.useEffect)(()=>{J()},[J]);let K=(0,f.useMemo)(()=>Object.entries(p.AI_PROVIDERS).map(([a,b])=>{let c=i.filter(b=>b.provider===a),d=c.filter(a=>!1!==a.isActive&&("active"===a.testStatus||"success"===a.testStatus||"unknown"===a.testStatus)).length,e=c.filter(a=>!1!==a.isActive&&("error"===a.testStatus||"expired"===a.testStatus||"unavailable"===a.testStatus)).length,f=new Set([a,b.alias].filter(Boolean)),g=n.filter(a=>f.has(a.provider)),h=p.FREE_PROVIDERS[a]?"free":p.OAUTH_PROVIDERS[a]?"oauth":"apikey";return{id:a,provider:b,total:c.length,connected:d,errors:e,modelCount:g.length,authType:h}}),[i,n]),L=(0,f.useMemo)(()=>{if(!x)return[];let a=new Set([x.id,x.provider?.alias].filter(Boolean));return n.filter(b=>a.has(b.provider))},[x,n]),M=[{label:b("documentation"),href:"/docs",icon:"menu_book"},{label:g("providers"),href:"/dashboard/providers",icon:"dns"},{label:g("combos"),href:"/dashboard/combos",icon:"layers"},{label:g("analytics"),href:"/dashboard/analytics",icon:"analytics"},{label:b("healthMonitor"),href:"/dashboard/health",icon:"health_and_safety"},{label:g("cliTools"),href:"/dashboard/cli-tools",icon:"terminal"},{label:b("reportIssue"),href:"https://github.com/diegosouzapw/OmniRoute/issues",external:!0,icon:"bug_report"}],N=async()=>{let a=q.useNotificationStore.getState();E(!0),I("running"),G([]);try{let b=await fetch("/api/system/version",{method:"POST"});if((b.headers.get("content-type")||"").includes("application/json")){let c=await b.json();if(!b.ok||!c.success){a.error(c.error||"Failed to start update."),E(!1),I("idle");return}}if(!b.body){a.error("No response stream received."),E(!1),I("idle");return}let c=b.body.getReader(),d=new TextDecoder,e="";for(;;){let{done:b,value:f}=await c.read();if(b)break;let g=(e+=d.decode(f,{stream:!0})).split("\n");for(let b of(e=g.pop()||"",g))if(b.startsWith("data: "))try{let c=JSON.parse(b.slice(6));G(a=>{let b=a.findIndex(a=>a.step===c.step);if(b>=0){let d=[...a];return d[b]=c,d}return[...a,c]}),"complete"===c.step?(I("done"),a.success(c.message||"Update complete!")):"error"===c.step&&(I("failed"),a.error(c.message||"Update failed."),E(!1))}catch{}}}catch{I("failed"),G(a=>[...a,{step:"error",status:"failed",message:"Network error — connection lost during update."}]),E(!1)}};(0,f.useEffect)(()=>{if("done"!==H)return;let a=setTimeout(()=>{window.location.reload()},8e3);return()=>clearTimeout(a)},[H]);let O={install:"Install Package",rebuild:"Rebuild Native Modules",restart:"Restart Service",complete:"Complete",error:"Error"};return r?(0,d.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,d.jsx)(l.CardSkeleton,{}),(0,d.jsx)(l.CardSkeleton,{})]}):(0,d.jsxs)("div",{className:"flex flex-col gap-8",children:[D&&(0,d.jsx)("div",{className:"fixed inset-0 z-[999] bg-black/60 backdrop-blur-sm flex items-center justify-center p-4",children:(0,d.jsxs)("div",{className:"bg-bg-main border border-border rounded-2xl shadow-2xl max-w-md w-full p-6",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3 mb-5",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary text-[28px] animate-spin",children:"progress_activity"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h3",{className:"text-lg font-bold",children:"done"===H?"Update Complete!":"failed"===H?"Update Failed":"Updating OmniRoute..."}),(0,d.jsx)("p",{className:"text-xs text-text-muted mt-0.5",children:"done"===H?"The page will reload automatically in a few seconds.":"failed"===H?"Please try again or update manually via the CLI.":"Do not close this page. The system will restart automatically."})]})]}),(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[F.filter(a=>"complete"!==a.step&&"error"!==a.step).map(a=>(0,d.jsxs)("div",{className:`flex items-center gap-3 px-3 py-2.5 rounded-lg border transition-all ${"running"===a.status?"border-primary/40 bg-primary/5":"done"===a.status?"border-green-500/30 bg-green-500/5":"failed"===a.status?"border-red-500/30 bg-red-500/5":"border-border bg-bg-subtle"}`,children:["running"===a.status?(0,d.jsx)("span",{className:"material-symbols-outlined text-primary text-[18px] animate-spin",children:"progress_activity"}):"done"===a.status?(0,d.jsx)("span",{className:"material-symbols-outlined text-green-500 text-[18px]",children:"check_circle"}):"failed"===a.status?(0,d.jsx)("span",{className:"material-symbols-outlined text-red-500 text-[18px]",children:"error"}):(0,d.jsx)("span",{className:"material-symbols-outlined text-yellow-500 text-[18px]",children:"warning"}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("p",{className:"text-sm font-medium",children:O[a.step]||a.step}),(0,d.jsx)("p",{className:"text-xs text-text-muted truncate",children:a.message})]})]},a.step)),F.find(a=>"error"===a.step)&&(0,d.jsx)("div",{className:"mt-1 px-3 py-2.5 rounded-lg border border-red-500/30 bg-red-500/5 text-red-500",children:(0,d.jsx)("p",{className:"text-xs font-mono break-all",children:F.find(a=>"error"===a.step)?.message})}),"done"===H&&(0,d.jsxs)("div",{className:"mt-1 px-3 py-2.5 rounded-lg border border-green-500/30 bg-green-500/5",children:[(0,d.jsxs)("p",{className:"text-sm font-semibold text-green-500 flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"check_circle"}),F.find(a=>"complete"===a.step)?.message||"Update complete!"]}),(0,d.jsx)("p",{className:"text-xs text-text-muted mt-1",children:"Reloading page automatically..."})]})]}),("failed"===H||"done"===H)&&(0,d.jsxs)("div",{className:"flex gap-2 mt-4",children:[(0,d.jsx)(m.Button,{size:"sm",fullWidth:!0,onClick:()=>{E(!1),I("idle"),G([]),"done"===H&&window.location.reload()},children:"done"===H?"Reload Now":"Close"}),"failed"===H&&(0,d.jsx)(m.Button,{size:"sm",variant:"secondary",fullWidth:!0,onClick:N,children:"Retry"})]})]})}),B?.updateAvailable&&!D&&(0,d.jsxs)("div",{className:"bg-primary/10 border border-primary/20 text-primary px-5 py-4 rounded-xl flex items-center justify-between min-h-[64px]",children:[(0,d.jsxs)("div",{className:"flex items-center gap-4",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[24px]",children:"system_update_alt"}),(0,d.jsxs)("div",{children:[(0,d.jsxs)("p",{className:"font-semibold text-sm",children:["Update Available: v",B.latest]}),(0,d.jsx)("p",{className:"text-xs opacity-80 mt-0.5",children:b("updateAvailableDesc")||`You are currently using v${B.current}. Update to access the latest features and bug fixes.`})]})]}),(0,d.jsx)(m.Button,{size:"sm",onClick:N,disabled:D,className:"shrink-0 ml-4 font-semibold",children:b("updateNow")||"Update Now"})]}),(0,d.jsx)(k.Card,{children:(0,d.jsxs)("div",{className:"flex flex-col gap-5",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:b("quickStart")}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:b("quickStartDesc")})]}),(0,d.jsxs)(h.default,{href:"/docs",className:"hidden sm:inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-xs font-medium border border-border text-text-muted hover:text-text-main hover:bg-bg-subtle transition-colors",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"menu_book"}),b("fullDocs")]})]}),(0,d.jsxs)("ol",{className:"grid grid-cols-1 md:grid-cols-2 gap-3 text-sm",children:[(0,d.jsxs)("li",{className:"rounded-lg border border-border bg-bg-subtle p-4 flex gap-3",children:[(0,d.jsx)("div",{className:"flex items-center justify-center size-8 rounded-lg bg-primary/10 text-primary shrink-0",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"key"})}),(0,d.jsxs)("div",{children:[(0,d.jsx)("span",{className:"font-semibold",children:b("step1Title")}),(0,d.jsx)("p",{className:"text-text-muted mt-0.5",children:b.rich("step1Desc",{endpoint:a=>(0,d.jsx)(h.default,{href:"/dashboard/endpoint",className:"text-primary hover:underline",children:a})})})]})]}),(0,d.jsxs)("li",{className:"rounded-lg border border-border bg-bg-subtle p-4 flex gap-3",children:[(0,d.jsx)("div",{className:"flex items-center justify-center size-8 rounded-lg bg-green-500/10 text-green-500 shrink-0",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"dns"})}),(0,d.jsxs)("div",{children:[(0,d.jsx)("span",{className:"font-semibold",children:b("step2Title")}),(0,d.jsx)("p",{className:"text-text-muted mt-0.5",children:b.rich("step2Desc",{providers:a=>(0,d.jsx)(h.default,{href:"/dashboard/providers",className:"text-primary hover:underline",children:a})})})]})]}),(0,d.jsxs)("li",{className:"rounded-lg border border-border bg-bg-subtle p-4 flex gap-3",children:[(0,d.jsx)("div",{className:"flex items-center justify-center size-8 rounded-lg bg-blue-500/10 text-blue-500 shrink-0",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"link"})}),(0,d.jsxs)("div",{children:[(0,d.jsx)("span",{className:"font-semibold",children:b("step3Title")}),(0,d.jsx)("p",{className:"text-text-muted mt-0.5",children:b("step3Desc",{url:t})})]})]}),(0,d.jsxs)("li",{className:"rounded-lg border border-border bg-bg-subtle p-4 flex gap-3",children:[(0,d.jsx)("div",{className:"flex items-center justify-center size-8 rounded-lg bg-amber-500/10 text-amber-500 shrink-0",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"analytics"})}),(0,d.jsxs)("div",{children:[(0,d.jsx)("span",{className:"font-semibold",children:b("step4Title")}),(0,d.jsx)("p",{className:"text-text-muted mt-0.5",children:b.rich("step4Desc",{logs:a=>(0,d.jsx)(h.default,{href:"/dashboard/usage",className:"text-primary hover:underline",children:a}),analytics:a=>(0,d.jsx)(h.default,{href:"/dashboard/analytics",className:"text-primary hover:underline",children:a})})})]})]})]}),(0,d.jsx)("div",{className:"flex flex-wrap gap-2",children:M.map(a=>(0,d.jsxs)("a",{href:a.href,target:a.external?"_blank":void 0,rel:a.external?"noopener noreferrer":void 0,className:"inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-xs font-medium border border-border text-text-muted hover:text-text-main hover:bg-bg-subtle transition-colors",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:a.icon||(a.external?"open_in_new":"arrow_forward")}),a.label]},a.href))})]})}),(0,d.jsxs)(k.Card,{children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:b("providersOverview")}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:b("configuredOf",{configured:K.filter(a=>a.total>0).length,total:K.length})})]}),(0,d.jsxs)("div",{className:"flex items-center gap-4",children:[(0,d.jsxs)("div",{className:"hidden sm:flex items-center gap-3 text-[11px] text-text-muted",children:[(0,d.jsxs)("span",{className:"flex items-center gap-1",children:[(0,d.jsx)("span",{className:"size-2 rounded-full bg-green-500"})," ",c("free")]}),(0,d.jsxs)("span",{className:"flex items-center gap-1",children:[(0,d.jsx)("span",{className:"size-2 rounded-full bg-blue-500"})," ",b("oauthLabel")]}),(0,d.jsxs)("span",{className:"flex items-center gap-1",children:[(0,d.jsx)("span",{className:"size-2 rounded-full bg-amber-500"})," ",b("apiKeyLabel")]})]}),(0,d.jsxs)(h.default,{href:"/dashboard/providers",className:"inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-xs font-medium border border-border text-text-muted hover:text-text-main hover:bg-bg-subtle transition-colors",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"settings"}),c("manage")]})]})]}),(0,d.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-3",children:K.map(a=>(0,d.jsx)(u,{item:a,metrics:z[a.provider.alias]||z[a.id],onClick:()=>y(a)},a.id))})]}),x&&(0,d.jsx)(v,{provider:x,models:L,onClose:()=>y(null)})]})}function u({item:a,metrics:b,onClick:c}){let f=(0,e.useTranslations)("home"),g=(0,e.useTranslations)("common"),h=a.errors>0?"text-red-500":a.connected>0?"text-green-500":"text-text-muted",i={free:{color:"bg-green-500",label:g("free")},oauth:{color:"bg-blue-500",label:f("oauthLabel")},apikey:{color:"bg-amber-500",label:f("apiKeyLabel")}},j=i[a.authType]||i.apikey;return(0,d.jsx)("button",{onClick:c,className:"border border-border rounded-lg p-3 hover:bg-surface/40 transition-colors text-left cursor-pointer w-full",children:(0,d.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,d.jsx)("div",{className:"size-8 rounded-lg flex items-center justify-center shrink-0",style:{backgroundColor:`${a.provider.color||"#888"}15`},children:(0,d.jsx)(o.default,{providerId:a.provider.id,size:26,type:"color"})}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,d.jsx)("p",{className:"text-sm font-semibold truncate",children:a.provider.name}),(0,d.jsx)("span",{className:`size-2 rounded-full ${j.color} shrink-0`,title:j.label})]}),(0,d.jsx)("p",{className:`text-xs ${h}`,children:0===a.total?g("notConfigured"):f("activeError",{active:a.connected,errors:a.errors})}),b&&b.totalRequests>0&&(0,d.jsxs)("div",{className:"flex items-center gap-2 mt-0.5",children:[(0,d.jsxs)("span",{className:"text-[10px] text-text-muted",children:[(0,d.jsx)("span",{className:"text-emerald-500",children:b.totalSuccesses}),"/",f("requestsShort",{count:b.totalRequests})]}),(0,d.jsxs)("span",{className:"text-[10px] text-text-muted",children:[b.successRate,"%"]}),(0,d.jsxs)("span",{className:"text-[10px] text-text-muted",children:["~",b.avgLatencyMs,"ms"]})]})]}),(0,d.jsxs)("div",{className:"text-right shrink-0",children:[(0,d.jsx)("p",{className:"text-xs font-medium text-text-main",children:a.modelCount}),(0,d.jsx)("p",{className:"text-[10px] text-text-muted",children:g("models")})]})]})})}function v({provider:a,models:b,onClose:c}){let[g,h]=(0,f.useState)(null),j=(0,q.useNotificationStore)(),k=(0,i.useRouter)(),l=(0,e.useTranslations)("home"),o=(0,e.useTranslations)("common"),p=(0,e.useTranslations)("sidebar"),s=async a=>{await (0,r.copyToClipboard)(a),h(a),j.success(l("copiedModel",{model:a})),setTimeout(()=>h(null),2e3)};return(0,d.jsx)(n.Modal,{isOpen:!0,title:l("providerModelsTitle",{provider:a.provider.name}),onClose:c,children:(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"token"}),1===b.length?l("modelAvailable",{count:b.length}):l("modelsAvailable",{count:b.length}),a.total>0&&(0,d.jsxs)("span",{className:"ml-auto text-xs text-green-500",children:["●"," ",1===a.connected?l("connectionsActive",{count:a.connected}):l("connectionsActivePlural",{count:a.connected})]})]}),0===b.length?(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[32px] text-text-muted mb-2",children:"search_off"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:l("noModelsAvailable")}),(0,d.jsx)("p",{className:"text-xs text-text-muted mt-1",children:l("configureFirst",{providers:p("providers")})})]}):(0,d.jsx)("div",{className:"flex flex-col gap-1 max-h-[400px] overflow-y-auto",children:b.map(a=>(0,d.jsxs)("div",{className:"flex items-center justify-between px-3 py-2 rounded-lg hover:bg-surface/50 transition-colors group",children:[(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("p",{className:"font-mono text-sm text-text-main truncate",children:a.fullModel}),a.alias!==a.model&&(0,d.jsxs)("p",{className:"text-[10px] text-text-muted",children:[l("aliasLabel"),": ",a.alias]})]}),(0,d.jsx)("button",{onClick:()=>s(a.fullModel),className:"shrink-0 ml-2 p-1.5 rounded-lg text-text-muted hover:text-text-main hover:bg-bg-subtle transition-colors opacity-0 group-hover:opacity-100",title:l("copyModelName"),children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:g===a.fullModel?"check":"content_copy"})})]},a.fullModel))}),(0,d.jsxs)("div",{className:"flex gap-2 pt-2 border-t border-border",children:[(0,d.jsxs)(m.Button,{variant:"secondary",fullWidth:!0,size:"sm",onClick:()=>{var b;return b=`/dashboard/providers/${a.id}`,void(c(),k.push(b))},className:"flex-1",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"settings"}),l("configureProvider")]}),(0,d.jsx)(m.Button,{variant:"ghost",size:"sm",onClick:c,children:o("close")})]})]})})}[j,p]=s.then?(await s)():s,t.propTypes={machineId:g.default.string},u.propTypes={item:g.default.shape({id:g.default.string.isRequired,provider:g.default.shape({id:g.default.string.isRequired,name:g.default.string.isRequired,color:g.default.string,textIcon:g.default.string,alias:g.default.string}).isRequired,total:g.default.number.isRequired,connected:g.default.number.isRequired,errors:g.default.number.isRequired,modelCount:g.default.number.isRequired,authType:g.default.string.isRequired}).isRequired,metrics:g.default.shape({totalRequests:g.default.number,totalSuccesses:g.default.number,successRate:g.default.number,avgLatencyMs:g.default.number}),onClick:g.default.func.isRequired},v.propTypes={provider:g.default.object.isRequired,models:g.default.array.isRequired,onClose:g.default.func.isRequired},a.s(["default",()=>t]),c()}catch(a){c(a)}},!1),1559,a=>{"use strict";var b=a.i(187924),c=a.i(572131);function d(){let[a,d]=(0,c.useState)(!1);if(a)return null;let e="u">typeof navigator&&navigator.platform?.startsWith("Win")?"%APPDATA%\\omniroute\\server.env":"~/.omniroute/server.env";return(0,b.jsxs)("div",{role:"alert",className:"flex items-start gap-3 rounded-lg border border-amber-500/30 bg-amber-500/10 px-4 py-3 text-sm text-amber-200 mb-4",children:[(0,b.jsx)("span",{className:"text-amber-400 text-base shrink-0 mt-0.5",children:"⚠️"}),(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsx)("p",{className:"font-semibold text-amber-300",children:"Running in zero-config mode"}),(0,b.jsxs)("p",{className:"mt-0.5 text-amber-200/80",children:["OmniRoute auto-generated secure encryption keys on first launch. They are persisted to"," ",(0,b.jsx)("code",{className:"font-mono bg-amber-500/20 px-1 rounded text-xs",children:e}),". No action is required — your data is encrypted and safe. To use custom keys, add"," ",(0,b.jsx)("code",{className:"font-mono bg-amber-500/20 px-1 rounded text-xs",children:"JWT_SECRET"})," and"," ",(0,b.jsx)("code",{className:"font-mono bg-amber-500/20 px-1 rounded text-xs",children:"STORAGE_ENCRYPTION_KEY"})," ","to that file."]})]}),(0,b.jsx)("button",{onClick:()=>d(!0),className:"shrink-0 text-amber-400/60 hover:text-amber-300 transition-colors ml-1","aria-label":"Dismiss",children:"✕"})]})}a.s(["default",()=>d])}];
2
2
 
3
3
  //# sourceMappingURL=src_app_%28dashboard%29_dashboard_3666f2bd._.js.map