omniroute 3.0.0 → 3.0.1

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 (116) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/build-manifest.json +2 -2
  3. package/app/.next/prerender-manifest.json +3 -3
  4. package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
  5. package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
  6. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/search-tools/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
  32. package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
  34. package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
  35. package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
  36. package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/_global-error.html +2 -2
  40. package/app/.next/server/app/_global-error.rsc +1 -1
  41. package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  42. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  43. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  44. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  45. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  46. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  47. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  48. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  50. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
  54. package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
  58. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  59. package/app/.next/server/chunks/[root-of-the-server]__051203a6._.js +2 -2
  60. package/app/.next/server/chunks/[root-of-the-server]__0891af92._.js +1 -1
  61. package/app/.next/server/chunks/[root-of-the-server]__1f2b0d89._.js +1 -1
  62. package/app/.next/server/chunks/[root-of-the-server]__61d78f9d._.js +2 -2
  63. package/app/.next/server/chunks/[root-of-the-server]__6e52619e._.js +1 -1
  64. package/app/.next/server/chunks/[root-of-the-server]__afddb4ce._.js +1 -1
  65. package/app/.next/server/chunks/[root-of-the-server]__e27a89bd._.js +1 -1
  66. package/app/.next/server/chunks/[root-of-the-server]__fd2fbc93._.js +1 -1
  67. package/app/.next/server/chunks/_05c48915._.js +1 -1
  68. package/app/.next/server/chunks/_06515a8a._.js +1 -1
  69. package/app/.next/server/chunks/_2115d8de._.js +1 -1
  70. package/app/.next/server/chunks/_3ac953eb._.js +1 -1
  71. package/app/.next/server/chunks/_4b8fd853._.js +1 -1
  72. package/app/.next/server/chunks/_68683848._.js +1 -1
  73. package/app/.next/server/chunks/_6f1b3c3f._.js +1 -1
  74. package/app/.next/server/chunks/_ee9b677b._.js +1 -1
  75. package/app/.next/server/chunks/_efd5ede2._.js +2 -2
  76. package/app/.next/server/chunks/_ffda39da._.js +1 -1
  77. package/app/.next/server/chunks/open-sse_translator_index_ts_f5fd0821._.js +1 -1
  78. package/app/.next/server/chunks/src_6320c728._.js +1 -1
  79. package/app/.next/server/chunks/ssr/[root-of-the-server]__9ef96d20._.js +1 -1
  80. package/app/.next/server/chunks/ssr/[root-of-the-server]__a6942102._.js +1 -1
  81. package/app/.next/server/chunks/ssr/_f3674909._.js +1 -1
  82. package/app/.next/server/chunks/ssr/src_a82a42f9._.js +1 -1
  83. package/app/.next/server/chunks/ssr/src_app_(dashboard)_dashboard_936a9ee0._.js +1 -1
  84. package/app/.next/server/chunks/ssr/src_app_(dashboard)_dashboard_settings_9e20fb8d._.js +1 -1
  85. package/app/.next/server/pages/500.html +2 -2
  86. package/app/.next/server/server-reference-manifest.js +1 -1
  87. package/app/.next/server/server-reference-manifest.json +1 -1
  88. package/app/.next/static/chunks/26aeb12cf79339b1.js +1 -0
  89. package/app/.next/static/chunks/{80658e0c2b2c7004.js → 633a312ddcf9fa11.js} +1 -1
  90. package/app/.next/static/chunks/7df0b3c357097db5.js +1 -0
  91. package/app/.next/static/chunks/a051245b46459ad2.css +1 -0
  92. package/app/.next/static/chunks/d188e358e1ec0a7d.js +1 -0
  93. package/app/.next/static/chunks/{4e3fe685e3218d24.js → fa9e2a946d2cdbc7.js} +1 -1
  94. package/app/CHANGELOG.md +122 -68
  95. package/app/docs/i18n/ru/README.md +3 -3
  96. package/app/docs/openapi.yaml +1 -1
  97. package/app/open-sse/handlers/chatCore.ts +9 -2
  98. package/app/open-sse/handlers/responseTranslator.ts +13 -3
  99. package/app/open-sse/services/usage.ts +22 -9
  100. package/app/open-sse/translator/request/openai-to-claude.ts +10 -2
  101. package/app/package-lock.json +2 -2
  102. package/app/package.json +1 -1
  103. package/app/src/app/(dashboard)/dashboard/providers/[id]/page.tsx +198 -63
  104. package/app/src/app/(dashboard)/dashboard/settings/components/ProxyRegistryManager.tsx +123 -19
  105. package/app/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.tsx +22 -24
  106. package/app/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/utils.tsx +5 -0
  107. package/app/src/lib/providers/validation.ts +21 -0
  108. package/app/src/shared/components/ProxyConfigModal.tsx +42 -13
  109. package/package.json +1 -1
  110. package/app/.next/static/chunks/594bdf69c19b5310.js +0 -1
  111. package/app/.next/static/chunks/643428fcd3f9bb51.js +0 -1
  112. package/app/.next/static/chunks/8efe14530c87d9f6.css +0 -1
  113. package/app/.next/static/chunks/d0cff7a6c3a66c7d.js +0 -1
  114. /package/app/.next/static/{cQZnxkFFvb8O7T4x7OSsG → bF7pUIj1e9VsHgSW5x9WX}/_buildManifest.js +0 -0
  115. /package/app/.next/static/{cQZnxkFFvb8O7T4x7OSsG → bF7pUIj1e9VsHgSW5x9WX}/_clientMiddlewareManifest.json +0 -0
  116. /package/app/.next/static/{cQZnxkFFvb8O7T4x7OSsG → bF7pUIj1e9VsHgSW5x9WX}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- module.exports=[352812,e=>{"use strict";var t=e.i(496727);let n="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";function o(){return`call_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,9)}`}function s(e,t){if(!e.messages||!Array.isArray(e.messages))return e;let s=t?.use9CharId===!0;for(let t=0;t<e.messages.length;t++){let r=e.messages[t];if("assistant"!==r.role||!r.tool_calls||!Array.isArray(r.tool_calls))continue;let i=new Set,l=[];for(let e of r.tool_calls)if(e.type||(e.type="function"),e.function?.arguments&&"string"!=typeof e.function.arguments&&(e.function.arguments=JSON.stringify(e.function.arguments)),s){let t;do t=function(){let e="";for(let t=0;t<9;t++)e+=n[Math.floor(Math.random()*n.length)];return e}();while(i.has(t))i.add(t),l.push(t),e.id=t}else{let t=null!=e.id&&""!==String(e.id).trim()?String(e.id):o();e.id=t,l.push(t)}if(l.length>0){let n=0;for(let o=t+1;o<e.messages.length;o++){let t=e.messages[o];if("assistant"===t.role)break;"tool"===t.role&&n<l.length&&(t.tool_call_id=l[n],n++)}}}return e}function r(e){if(!e.messages||!Array.isArray(e.messages))return e;let t=[];for(let n=0;n<e.messages.length;n++){let o=e.messages[n],s=e.messages[n+1];t.push(o);let r=function(e){if("assistant"!==e.role)return[];let t=[];if(e.tool_calls&&Array.isArray(e.tool_calls))for(let n of e.tool_calls)n.id&&t.push(n.id);if(Array.isArray(e.content))for(let n of e.content)"tool_use"===n.type&&n.id&&t.push(n.id);return t}(o);if(0!==r.length&&s&&!function(e,t){if(!e||!t.length)return!1;if("tool"===e.role&&e.tool_call_id)return t.includes(e.tool_call_id);if("user"===e.role&&Array.isArray(e.content)){for(let n of e.content)if("tool_result"===n.type&&t.includes(n.tool_use_id))return!0}return!1}(s,r))for(let e of r)t.push({role:"tool",tool_call_id:e,content:""})}return e.messages=t,e}let i="EpwGCkYIChgCKkCzVUuRrg7CcglSUWEef4rH6o35g9UYS8ZPe0/VomQTBsFx6sttYNj5l8GqgW6ejuHyYqpFToxIbZl0bw17l5dJEgzCnqDO0Z8fRlMrNgsaDLS1cnCjC53KBqE0CCIwAADQdo1eO+7qPAmo8J4WR3JPmr92S97kmvr5K1iPMiOpkZNj8mEXW8uzBoOJs/9ZKoMFiqHJ3UObwaJDqFOW70E9oCwDoc6jesaWVAEdN5vWfKMpIkjFJjECdjIdkxyJNJ8Ib8yXVal3qwE7uThoPRqSZDdHB5mmwPEjWE/90cSYCbtX2YsJki1265CabBb8/QEkODXg4kgRrL+c8e8rRXz/dr1RswvaPuzEdGKHRNi9UooNUeOK4/ebx1KkP9YZttyohN9GWqlts36kOoW0Cfie/ABDgF9g534BPth/sstxDM6d79QlRmh6NxizyTF74DXJI34u0M4tTRchqE5pAq85SgdJaa+dix1yJPMji8m6nZkwJbscJb9rdc2MKyKWjz8QL2+rTSSuZ2F1k1qSsW0xNcI7qLcI12Vncfn/VqY6YOIZy/saZBR0ezXvN6g+UYbuIdyVg7AyIFZt3nbrO7/kmOEb2VKzygwklHGEIJHfFgMpH3JSrAzbZIowVHOF7VaJ+KXRFDCFin7hHTOiOsdg+1ij1mML9Z/x/9CP4b7OUcaQm1llDZPSHc6rZMNL3DdB+fW5YfmNgKU35S+7AMtA10nVILzDAk1UV4T2K9Do09JlI6rjOs9UuULlIN2Z0eE8YTlANR6uQcw7lMcdfqYE8tke4rDKc2dDiaS5vVe45VewICNpdXGN11yw8QqH7p27CR1HtN30e0tHXOR3bIwWk/Yb6O5fTaKG6Ri8e5ZCPvdD9HqepVi188nM0iTjJqL58F3ni04ECIhcbyaQWnuTes1Kw4CMwiZDLQkk8Hgz7HkUOf1btQTF/0nhD7ry0n0hAEg2PaDM3V6TjOjf4hEldRmeqERcQF1PfgKb6ZM12rlIIfUqKACczWJSzTV158+47HX36o0cgux6nFlv/DE+sEiRVxgB",l="EuwGCukGAXLI2nxwZIq54WWSoL/YN0P3TsDZ7zRnLi8g0S4aVr2HUGxvaHKySuY6HAVzcE0GPGjXrytLIldxthSvfxgUlJh6Qa9Z+Oj5QZBlYdg6HaJ6yuY5R7waE6rdwBsRf7Ft2j3DJ9rMi9qhWFqApewYtPhls3VHtuvND3l8Rm09+lbAXQs6KKWEWrxNLKTBkfpMgXhRERc/TQRMZu1twAablm6/Zk1tsYRvfWKLsNbeKF+CCojJdXJKvnR/8Ouuoa+Y2Ti20hcW7aZIIjZDFYPU//k6Ybmhg69J/imbFai2ckhfLaisqdDkdoIiBJScTOUvYqP6AE9d4MsydSC+UlhIMk4hoP76R8vUSCZRMkjOaDXstf/QoVZKbt94wyRZgAJ1G0BqI8L5ow86kLpA4wJEtxsRGymOE4bKUvApveBakYDNM9APkf+LbtbzWSseGjoZcSlycF9iN8Q2XNYKRrHbv3Lr5Y8JjdH/5y/6SHkNehTEZugaeGnSPSyCTWto1kQgHpxdWmhkLfJGNUGLmue7Mesj4TSms4J33mRpYVhNB/J333FCqIP0hr/E7BkkjEn7yZ4X7SQlh+xKPurapsnHRwiKmtsilmEFrnTE9iQr+pMr6M29qqFNv1tr5yumbaJw8JW9sB15tNsRv+dW6BjNanbsKz7HCgKUBc8tGy+7YuhXzAfViyRefcjK7eZW0Fbyt7AbybJTKz78W8NH7ye6LAwzOebXpeZ4D43fNIt8bKh26qgduSQv/7o+pAflkuqHZ99YWgHQ8h8OkZFi3eOiSYjsjhdZ/czWOdoPI/OnqIldzMPF5YlrKBLFX8VhRKVmqgsmWf5PHGulHhMkVlS+XG2UIseGy69ARa93D78Gsa+1n1kJr7EEB7Rh+27vUMxVYLdz1yMSvE5nalTAlg/ZeG8+XQ0cHuAI3KbQpHW2Q++RdXfm5JzD5WdJZUU+Zn8t8UUn85BH4RxZLeE0qJikgSsKoYVBc6YhiMjhPgkR95ReimY4Z0xCJdRo1gjexOFeODZMpQF6Yxnoic7IrdgsFA3iePTbFnPp3IAM1fAThWhXJUn3QInUOTd5o1qmTmn6REbL15g/JQNl+dqUoPkhleeb2V3kjqp1okmO3wMZbPknR3S1LZNmlS72/iBQUm+n2b/RCn4PjmM2",a=["text","image_url","image"],u=new Map,c=new Map;function p(e,t){return`${e}:${t}`}function f(e,t,n,o){let s=p(e,t);n&&u.set(s,n),o&&c.set(s,o)}function d(e,t){return u.get(p(e,t))}function m(e,t){return c.get(p(e,t))}var g=e.i(16023);function y(e){let t=e.max_tokens||g.DEFAULT_MAX_TOKENS;return e.tools&&Array.isArray(e.tools)&&e.tools.length>0&&t<g.DEFAULT_MIN_TOKENS&&(t=g.DEFAULT_MIN_TOKENS),t}f(t.FORMATS.CLAUDE,t.FORMATS.OPENAI,function(e,t,n){let o={model:e,messages:[],stream:n};if(t.max_tokens&&(o.max_tokens=y(t)),void 0!==t.temperature&&(o.temperature=t.temperature),t.system){let e=Array.isArray(t.system)?t.system.map(e=>e.text||"").join("\n"):t.system;e&&o.messages.push({role:"system",content:e})}if(t.messages&&Array.isArray(t.messages))for(let e=0;e<t.messages.length;e++){let n=function(e){let t="user"===e.role||"tool"===e.role?"user":"assistant";if("string"==typeof e.content)return{role:t,content:e.content};if(Array.isArray(e.content)){let n=[],o=[],s=[];for(let t of e.content)switch(t.type){case"text":n.push({type:"text",text:t.text});break;case"image":t.source?.type==="base64"&&n.push({type:"image_url",image_url:{url:`data:${t.source.media_type};base64,${t.source.data}`}});break;case"tool_use":o.push({id:t.id,type:"function",function:{name:t.name,arguments:JSON.stringify(t.input||{})}});break;case"tool_result":let e="";"string"==typeof t.content?e=t.content:Array.isArray(t.content)?e=t.content.filter(e=>"text"===e.type).map(e=>e.text).join("\n")||JSON.stringify(t.content):t.content&&(e=JSON.stringify(t.content)),s.push({role:"tool",tool_call_id:t.tool_use_id,content:e})}if(s.length>0)return n.length>0?[...s,{role:"user",content:1===n.length&&"text"===n[0].type?n[0].text:n}]:s;if(o.length>0){let e={role:"assistant"};return n.length>0&&(e.content=1===n.length&&"text"===n[0].type?n[0].text:n),e.tool_calls=o,e}if(n.length>0)return{role:t,content:1===n.length&&"text"===n[0].type?n[0].text:n};if(0===e.content.length)return{role:t,content:""}}return null}(t.messages[e]);n&&(Array.isArray(n)?o.messages.push(...n):o.messages.push(n))}if(function(e){for(let t=0;t<e.length;t++){let n=e[t];if("assistant"===n.role&&n.tool_calls&&n.tool_calls.length>0){let o=n.tool_calls.map(e=>e.id),s=new Set,r=t+1;for(let n=t+1;n<e.length;n++){let t=e[n];if("tool"===t.role&&t.tool_call_id)s.add(t.tool_call_id),r=n+1;else break}let i=o.filter(e=>!s.has(e));if(i.length>0){let n=i.map(e=>({role:"tool",tool_call_id:e,content:"[No response received]"}));e.splice(r,0,...n),t=r+n.length-1}}}}(o.messages),t.tools&&Array.isArray(t.tools)){let e=t.tools.map(e=>{let t="string"==typeof e.name?e.name.trim():"";return t?{type:"function",function:{name:t,description:"string"==typeof e.description?e.description:"",parameters:e.input_schema||{type:"object",properties:{}}}}:null}).filter(e=>!!e);e.length>0&&(o.tools=e)}return t.tool_choice&&(o.tool_choice=function(e){if(!e)return"auto";if("string"==typeof e)return e;switch(e.type){case"auto":default:return"auto";case"any":return"required";case"tool":return{type:"function",function:{name:e.name}}}}(t.tool_choice)),o},null);let _="proxy_";function h(e){return Array.isArray(e)?e.filter(e=>{if(e&&"object"==typeof e&&"text"===e.type){let t=e.text;if(""===t||null==t)return!1}return!0}).map(e=>e&&"object"==typeof e&&"tool_result"===e.type&&Array.isArray(e.content)?{...e,content:h(e.content)}:e):e??[]}function x(e,t,n){var o,s;let r=t?._disableToolPrefix===!0,l=new Map,a={model:e,max_tokens:y(t),stream:n,messages:[]};void 0!==t.temperature&&(a.temperature=t.temperature);let u=[];if(t.messages&&Array.isArray(t.messages)){let e;for(let e of t.messages){"system"===e.role&&u.push("string"==typeof e.content?e.content:(o=e.content)?"string"==typeof o?o:Array.isArray(o)?o.filter(e=>"text"===e.type).map(e=>String(e.text??"")).join("\n"):"":"")}let n=t.messages.filter(e=>"system"!==e.role),s=[],c=()=>{e&&s.length>0&&(a.messages.push({role:e,content:s}),s=[])};for(let t of n){let n="user"===t.role||"tool"===t.role?"user":"assistant",o=function(e,t=new Map,n=!1){let o=[];if("tool"===e.role){let t=Array.isArray(e.content)?h(e.content):e.content;o.push({type:"tool_result",tool_use_id:e.tool_call_id,content:t})}else if("user"===e.role){if("string"==typeof e.content)e.content&&o.push({type:"text",text:e.content});else if(Array.isArray(e.content))for(let t of e.content)if("text"===t.type&&t.text)o.push({type:"text",text:t.text});else if("tool_result"===t.type){if(!t.tool_use_id)continue;let e=Array.isArray(t.content)?h(t.content):t.content;o.push({type:"tool_result",tool_use_id:t.tool_use_id,content:e,...t.is_error&&{is_error:t.is_error}})}else if("image_url"===t.type){let e=t.image_url.url.match(/^data:([^;]+);base64,(.+)$/);e&&o.push({type:"image",source:{type:"base64",media_type:e[1],data:e[2]}})}else"image"===t.type&&t.source&&o.push({type:"image",source:t.source})}else if("assistant"===e.role){if(e.reasoning_content&&o.push({type:"thinking",thinking:e.reasoning_content,signature:i}),Array.isArray(e.content))for(let t of e.content)"text"===t.type&&t.text?o.push({type:"text",text:t.text}):"thinking"===t.type||"redacted_thinking"===t.type?o.push({...t,signature:t.signature||i}):"tool_use"===t.type&&t.name&&t.name.trim()&&o.push({type:"tool_use",id:t.id,name:t.name,input:t.input});else if(e.content){var s;let t="string"==typeof e.content?e.content:"string"==typeof(s=e.content)?s:Array.isArray(s)?s.filter(e=>"text"===e.type).map(e=>e.text).join("\n"):"";t&&o.push({type:"text",text:t})}if(e.tool_calls&&Array.isArray(e.tool_calls)){for(let t of e.tool_calls)if("function"===t.type){let e=t.function?.name;if(!e||!e.trim())continue;let s=n?e:_+e;o.push({type:"tool_use",id:t.id,name:s,input:function(e){if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return e}}(t.function.arguments)})}}}return o}(t,l,r),u=o.some(e=>"tool_use"===e.type);if(o.some(e=>"tool_result"===e.type)){let t=o.filter(e=>"tool_result"===e.type),r=o.filter(e=>"tool_result"!==e.type);c(),t.length>0&&a.messages.push({role:"user",content:t}),r.length>0&&(e=n,s.push(...r));continue}e!==n&&(c(),e=n),s.push(...o),u&&c()}c(),a.messages=a.messages.filter(e=>!("assistant"===e.role&&Array.isArray(e.content))||0!==e.content.length);let p=new Set;for(let e of a.messages)if("assistant"===e.role&&Array.isArray(e.content))for(let t of e.content)"tool_use"===t.type&&t.id&&p.add(String(t.id));for(let e of a.messages)"user"===e.role&&Array.isArray(e.content)&&(e.content=e.content.filter(e=>"tool_result"!==e.type||!e.tool_use_id||p.has(String(e.tool_use_id))));a.messages=a.messages.filter(e=>!("user"===e.role&&Array.isArray(e.content))||0!==e.content.length);for(let e=a.messages.length-1;e>=0;e--){let t=a.messages[e];if("assistant"===t.role&&Array.isArray(t.content)&&t.content.length>0){let e=t.content[t.content.length-1];if(e){e.cache_control={type:"ephemeral"};break}}}}let c={type:"text",text:g.CLAUDE_SYSTEM_PROMPT};if(u.length>0?a.system=[c,{type:"text",text:u.join("\n"),cache_control:{type:"ephemeral",ttl:"1h"}}]:a.system=[c],t.tools&&Array.isArray(t.tools)){a.tools=t.tools.map(e=>{let t="function"===e.type&&e.function?e.function:e,n=t.name,o=r?n:_+n;return r||l.set(o,n),{name:o,description:t.description||"",input_schema:t.parameters||t.input_schema||{type:"object",properties:{},required:[]}}}),a.tools=a.tools.filter(e=>e.name&&e.name?.trim());for(let e=a.tools.length-1;e>=0;e--)if(!a.tools[e].defer_loading){a.tools[e].cache_control={type:"ephemeral",ttl:"1h"};break}}if(t.tool_choice&&(a.tool_choice=(s=t.tool_choice)?"object"==typeof s&&s.type?s:"auto"===s||"none"===s?{type:"auto"}:"required"===s?{type:"any"}:"object"==typeof s&&s.function?{type:"tool",name:s.function.name}:{type:"auto"}:{type:"auto"}),t.response_format){let e=t.response_format;if("json_schema"===e.type&&e.json_schema?.schema){let t=JSON.stringify(e.json_schema.schema,null,2);u.push(`You must respond with valid JSON that strictly follows this JSON schema:
1
+ module.exports=[352812,e=>{"use strict";var t=e.i(496727);let n="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";function o(){return`call_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,9)}`}function s(e,t){if(!e.messages||!Array.isArray(e.messages))return e;let s=t?.use9CharId===!0;for(let t=0;t<e.messages.length;t++){let r=e.messages[t];if("assistant"!==r.role||!r.tool_calls||!Array.isArray(r.tool_calls))continue;let i=new Set,l=[];for(let e of r.tool_calls)if(e.type||(e.type="function"),e.function?.arguments&&"string"!=typeof e.function.arguments&&(e.function.arguments=JSON.stringify(e.function.arguments)),s){let t;do t=function(){let e="";for(let t=0;t<9;t++)e+=n[Math.floor(Math.random()*n.length)];return e}();while(i.has(t))i.add(t),l.push(t),e.id=t}else{let t=null!=e.id&&""!==String(e.id).trim()?String(e.id):o();e.id=t,l.push(t)}if(l.length>0){let n=0;for(let o=t+1;o<e.messages.length;o++){let t=e.messages[o];if("assistant"===t.role)break;"tool"===t.role&&n<l.length&&(t.tool_call_id=l[n],n++)}}}return e}function r(e){if(!e.messages||!Array.isArray(e.messages))return e;let t=[];for(let n=0;n<e.messages.length;n++){let o=e.messages[n],s=e.messages[n+1];t.push(o);let r=function(e){if("assistant"!==e.role)return[];let t=[];if(e.tool_calls&&Array.isArray(e.tool_calls))for(let n of e.tool_calls)n.id&&t.push(n.id);if(Array.isArray(e.content))for(let n of e.content)"tool_use"===n.type&&n.id&&t.push(n.id);return t}(o);if(0!==r.length&&s&&!function(e,t){if(!e||!t.length)return!1;if("tool"===e.role&&e.tool_call_id)return t.includes(e.tool_call_id);if("user"===e.role&&Array.isArray(e.content)){for(let n of e.content)if("tool_result"===n.type&&t.includes(n.tool_use_id))return!0}return!1}(s,r))for(let e of r)t.push({role:"tool",tool_call_id:e,content:""})}return e.messages=t,e}let i="EpwGCkYIChgCKkCzVUuRrg7CcglSUWEef4rH6o35g9UYS8ZPe0/VomQTBsFx6sttYNj5l8GqgW6ejuHyYqpFToxIbZl0bw17l5dJEgzCnqDO0Z8fRlMrNgsaDLS1cnCjC53KBqE0CCIwAADQdo1eO+7qPAmo8J4WR3JPmr92S97kmvr5K1iPMiOpkZNj8mEXW8uzBoOJs/9ZKoMFiqHJ3UObwaJDqFOW70E9oCwDoc6jesaWVAEdN5vWfKMpIkjFJjECdjIdkxyJNJ8Ib8yXVal3qwE7uThoPRqSZDdHB5mmwPEjWE/90cSYCbtX2YsJki1265CabBb8/QEkODXg4kgRrL+c8e8rRXz/dr1RswvaPuzEdGKHRNi9UooNUeOK4/ebx1KkP9YZttyohN9GWqlts36kOoW0Cfie/ABDgF9g534BPth/sstxDM6d79QlRmh6NxizyTF74DXJI34u0M4tTRchqE5pAq85SgdJaa+dix1yJPMji8m6nZkwJbscJb9rdc2MKyKWjz8QL2+rTSSuZ2F1k1qSsW0xNcI7qLcI12Vncfn/VqY6YOIZy/saZBR0ezXvN6g+UYbuIdyVg7AyIFZt3nbrO7/kmOEb2VKzygwklHGEIJHfFgMpH3JSrAzbZIowVHOF7VaJ+KXRFDCFin7hHTOiOsdg+1ij1mML9Z/x/9CP4b7OUcaQm1llDZPSHc6rZMNL3DdB+fW5YfmNgKU35S+7AMtA10nVILzDAk1UV4T2K9Do09JlI6rjOs9UuULlIN2Z0eE8YTlANR6uQcw7lMcdfqYE8tke4rDKc2dDiaS5vVe45VewICNpdXGN11yw8QqH7p27CR1HtN30e0tHXOR3bIwWk/Yb6O5fTaKG6Ri8e5ZCPvdD9HqepVi188nM0iTjJqL58F3ni04ECIhcbyaQWnuTes1Kw4CMwiZDLQkk8Hgz7HkUOf1btQTF/0nhD7ry0n0hAEg2PaDM3V6TjOjf4hEldRmeqERcQF1PfgKb6ZM12rlIIfUqKACczWJSzTV158+47HX36o0cgux6nFlv/DE+sEiRVxgB",l="EuwGCukGAXLI2nxwZIq54WWSoL/YN0P3TsDZ7zRnLi8g0S4aVr2HUGxvaHKySuY6HAVzcE0GPGjXrytLIldxthSvfxgUlJh6Qa9Z+Oj5QZBlYdg6HaJ6yuY5R7waE6rdwBsRf7Ft2j3DJ9rMi9qhWFqApewYtPhls3VHtuvND3l8Rm09+lbAXQs6KKWEWrxNLKTBkfpMgXhRERc/TQRMZu1twAablm6/Zk1tsYRvfWKLsNbeKF+CCojJdXJKvnR/8Ouuoa+Y2Ti20hcW7aZIIjZDFYPU//k6Ybmhg69J/imbFai2ckhfLaisqdDkdoIiBJScTOUvYqP6AE9d4MsydSC+UlhIMk4hoP76R8vUSCZRMkjOaDXstf/QoVZKbt94wyRZgAJ1G0BqI8L5ow86kLpA4wJEtxsRGymOE4bKUvApveBakYDNM9APkf+LbtbzWSseGjoZcSlycF9iN8Q2XNYKRrHbv3Lr5Y8JjdH/5y/6SHkNehTEZugaeGnSPSyCTWto1kQgHpxdWmhkLfJGNUGLmue7Mesj4TSms4J33mRpYVhNB/J333FCqIP0hr/E7BkkjEn7yZ4X7SQlh+xKPurapsnHRwiKmtsilmEFrnTE9iQr+pMr6M29qqFNv1tr5yumbaJw8JW9sB15tNsRv+dW6BjNanbsKz7HCgKUBc8tGy+7YuhXzAfViyRefcjK7eZW0Fbyt7AbybJTKz78W8NH7ye6LAwzOebXpeZ4D43fNIt8bKh26qgduSQv/7o+pAflkuqHZ99YWgHQ8h8OkZFi3eOiSYjsjhdZ/czWOdoPI/OnqIldzMPF5YlrKBLFX8VhRKVmqgsmWf5PHGulHhMkVlS+XG2UIseGy69ARa93D78Gsa+1n1kJr7EEB7Rh+27vUMxVYLdz1yMSvE5nalTAlg/ZeG8+XQ0cHuAI3KbQpHW2Q++RdXfm5JzD5WdJZUU+Zn8t8UUn85BH4RxZLeE0qJikgSsKoYVBc6YhiMjhPgkR95ReimY4Z0xCJdRo1gjexOFeODZMpQF6Yxnoic7IrdgsFA3iePTbFnPp3IAM1fAThWhXJUn3QInUOTd5o1qmTmn6REbL15g/JQNl+dqUoPkhleeb2V3kjqp1okmO3wMZbPknR3S1LZNmlS72/iBQUm+n2b/RCn4PjmM2",a=["text","image_url","image"],u=new Map,c=new Map;function p(e,t){return`${e}:${t}`}function f(e,t,n,o){let s=p(e,t);n&&u.set(s,n),o&&c.set(s,o)}function d(e,t){return u.get(p(e,t))}function m(e,t){return c.get(p(e,t))}var g=e.i(16023);function y(e){let t=e.max_tokens||g.DEFAULT_MAX_TOKENS;return e.tools&&Array.isArray(e.tools)&&e.tools.length>0&&t<g.DEFAULT_MIN_TOKENS&&(t=g.DEFAULT_MIN_TOKENS),t}f(t.FORMATS.CLAUDE,t.FORMATS.OPENAI,function(e,t,n){let o={model:e,messages:[],stream:n};if(t.max_tokens&&(o.max_tokens=y(t)),void 0!==t.temperature&&(o.temperature=t.temperature),t.system){let e=Array.isArray(t.system)?t.system.map(e=>e.text||"").join("\n"):t.system;e&&o.messages.push({role:"system",content:e})}if(t.messages&&Array.isArray(t.messages))for(let e=0;e<t.messages.length;e++){let n=function(e){let t="user"===e.role||"tool"===e.role?"user":"assistant";if("string"==typeof e.content)return{role:t,content:e.content};if(Array.isArray(e.content)){let n=[],o=[],s=[];for(let t of e.content)switch(t.type){case"text":n.push({type:"text",text:t.text});break;case"image":t.source?.type==="base64"&&n.push({type:"image_url",image_url:{url:`data:${t.source.media_type};base64,${t.source.data}`}});break;case"tool_use":o.push({id:t.id,type:"function",function:{name:t.name,arguments:JSON.stringify(t.input||{})}});break;case"tool_result":let e="";"string"==typeof t.content?e=t.content:Array.isArray(t.content)?e=t.content.filter(e=>"text"===e.type).map(e=>e.text).join("\n")||JSON.stringify(t.content):t.content&&(e=JSON.stringify(t.content)),s.push({role:"tool",tool_call_id:t.tool_use_id,content:e})}if(s.length>0)return n.length>0?[...s,{role:"user",content:1===n.length&&"text"===n[0].type?n[0].text:n}]:s;if(o.length>0){let e={role:"assistant"};return n.length>0&&(e.content=1===n.length&&"text"===n[0].type?n[0].text:n),e.tool_calls=o,e}if(n.length>0)return{role:t,content:1===n.length&&"text"===n[0].type?n[0].text:n};if(0===e.content.length)return{role:t,content:""}}return null}(t.messages[e]);n&&(Array.isArray(n)?o.messages.push(...n):o.messages.push(n))}if(function(e){for(let t=0;t<e.length;t++){let n=e[t];if("assistant"===n.role&&n.tool_calls&&n.tool_calls.length>0){let o=n.tool_calls.map(e=>e.id),s=new Set,r=t+1;for(let n=t+1;n<e.length;n++){let t=e[n];if("tool"===t.role&&t.tool_call_id)s.add(t.tool_call_id),r=n+1;else break}let i=o.filter(e=>!s.has(e));if(i.length>0){let n=i.map(e=>({role:"tool",tool_call_id:e,content:"[No response received]"}));e.splice(r,0,...n),t=r+n.length-1}}}}(o.messages),t.tools&&Array.isArray(t.tools)){let e=t.tools.map(e=>{let t="string"==typeof e.name?e.name.trim():"";return t?{type:"function",function:{name:t,description:"string"==typeof e.description?e.description:"",parameters:e.input_schema||{type:"object",properties:{}}}}:null}).filter(e=>!!e);e.length>0&&(o.tools=e)}return t.tool_choice&&(o.tool_choice=function(e){if(!e)return"auto";if("string"==typeof e)return e;switch(e.type){case"auto":default:return"auto";case"any":return"required";case"tool":return{type:"function",function:{name:e.name}}}}(t.tool_choice)),o},null);let _="proxy_";function h(e){return Array.isArray(e)?e.filter(e=>{if(e&&"object"==typeof e&&"text"===e.type){let t=e.text;if(""===t||null==t)return!1}return!0}).map(e=>e&&"object"==typeof e&&"tool_result"===e.type&&Array.isArray(e.content)?{...e,content:h(e.content)}:e):e??[]}function x(e,t,n){var o,s;let r=t?._disableToolPrefix===!0,l=new Map,a={model:e,max_tokens:y(t),stream:n,messages:[]};void 0!==t.temperature&&(a.temperature=t.temperature);let u=[];if(t.messages&&Array.isArray(t.messages)){let e;for(let e of t.messages){"system"===e.role&&u.push("string"==typeof e.content?e.content:(o=e.content)?"string"==typeof o?o:Array.isArray(o)?o.filter(e=>"text"===e.type).map(e=>String(e.text??"")).join("\n"):"":"")}let n=t.messages.filter(e=>"system"!==e.role),s=[],c=()=>{e&&s.length>0&&(a.messages.push({role:e,content:s}),s=[])};for(let t of n){let n="user"===t.role||"tool"===t.role?"user":"assistant",o=function(e,t=new Map,n=!1){let o=[];if("tool"===e.role){let t=Array.isArray(e.content)?h(e.content):e.content;o.push({type:"tool_result",tool_use_id:e.tool_call_id,content:t})}else if("user"===e.role){if("string"==typeof e.content)e.content&&o.push({type:"text",text:e.content});else if(Array.isArray(e.content))for(let t of e.content)if("text"===t.type&&t.text)o.push({type:"text",text:t.text});else if("tool_result"===t.type){if(!t.tool_use_id)continue;let e=Array.isArray(t.content)?h(t.content):t.content;o.push({type:"tool_result",tool_use_id:t.tool_use_id,content:e,...t.is_error&&{is_error:t.is_error}})}else if("image_url"===t.type){let e=t.image_url.url.match(/^data:([^;]+);base64,(.+)$/);e&&o.push({type:"image",source:{type:"base64",media_type:e[1],data:e[2]}})}else"image"===t.type&&t.source&&o.push({type:"image",source:t.source})}else if("assistant"===e.role){if(e.reasoning_content&&o.push({type:"thinking",thinking:e.reasoning_content,signature:i}),Array.isArray(e.content))for(let t of e.content)"text"===t.type&&t.text?o.push({type:"text",text:t.text}):"thinking"===t.type||"redacted_thinking"===t.type?o.push({...t,signature:t.signature||i}):"tool_use"===t.type&&t.name&&t.name.trim()&&o.push({type:"tool_use",id:t.id,name:t.name,input:t.input});else if(e.content){var s;let t="string"==typeof e.content?e.content:"string"==typeof(s=e.content)?s:Array.isArray(s)?s.filter(e=>"text"===e.type).map(e=>e.text).join("\n"):"";t&&o.push({type:"text",text:t})}if(e.tool_calls&&Array.isArray(e.tool_calls)){for(let t of e.tool_calls)if("function"===t.type){let e=t.function?.name;if(!e||!e.trim())continue;let s=n?e:_+e;o.push({type:"tool_use",id:t.id,name:s,input:function(e){if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return e}}(t.function.arguments)})}}}return o}(t,l,r),u=o.some(e=>"tool_use"===e.type);if(o.some(e=>"tool_result"===e.type)){let t=o.filter(e=>"tool_result"===e.type),r=o.filter(e=>"tool_result"!==e.type);c(),t.length>0&&a.messages.push({role:"user",content:t}),r.length>0&&(e=n,s.push(...r));continue}e!==n&&(c(),e=n),s.push(...o),u&&c()}c(),a.messages=a.messages.filter(e=>!("assistant"===e.role&&Array.isArray(e.content))||0!==e.content.length);let p=new Set;for(let e of a.messages)if("assistant"===e.role&&Array.isArray(e.content))for(let t of e.content)"tool_use"===t.type&&t.id&&p.add(String(t.id));for(let e of a.messages)"user"===e.role&&Array.isArray(e.content)&&(e.content=e.content.filter(e=>"tool_result"!==e.type||!e.tool_use_id||p.has(String(e.tool_use_id))));a.messages=a.messages.filter(e=>!("user"===e.role&&Array.isArray(e.content))||0!==e.content.length);for(let e=a.messages.length-1;e>=0;e--){let t=a.messages[e];if("assistant"===t.role&&Array.isArray(t.content)&&t.content.length>0){let e=t.content[t.content.length-1];if(e){e.cache_control={type:"ephemeral"};break}}}}let c={type:"text",text:g.CLAUDE_SYSTEM_PROMPT};if(u.length>0?a.system=[c,{type:"text",text:u.join("\n"),cache_control:{type:"ephemeral",ttl:"1h"}}]:a.system=[c],t.tools&&Array.isArray(t.tools)){a.tools=t.tools.map(e=>{let t="function"===e.type&&e.function?e.function:e,n=t.name,o=r?n:_+n;r||l.set(o,n);let s=t.parameters||t.input_schema||{type:"object",properties:{},required:[]},i="object"!==s.type||s.properties?s:{...s,properties:{}};return{name:o,description:t.description||"",input_schema:i}}),a.tools=a.tools.filter(e=>e.name&&e.name?.trim());for(let e=a.tools.length-1;e>=0;e--)if(!a.tools[e].defer_loading){a.tools[e].cache_control={type:"ephemeral",ttl:"1h"};break}}if(t.tool_choice&&(a.tool_choice=(s=t.tool_choice)?"object"==typeof s&&s.type?s:"auto"===s||"none"===s?{type:"auto"}:"required"===s?{type:"any"}:"object"==typeof s&&s.function?{type:"tool",name:s.function.name}:{type:"auto"}:{type:"auto"}),t.response_format){let e=t.response_format;if("json_schema"===e.type&&e.json_schema?.schema){let t=JSON.stringify(e.json_schema.schema,null,2);u.push(`You must respond with valid JSON that strictly follows this JSON schema:
2
2
  \`\`\`json
3
3
  ${t}
4
4
  \`\`\`
@@ -1,3 +1,3 @@
1
- module.exports=[383368,e=>e.a(async(r,t)=>{try{var a=e.i(828059),i=e.i(963219),n=r([i]);[i]=n.then?(await n)():n;let b=new Set(["openai","openai-responses"]),T=new Set(["gemini","gemini-cli"]);function o(e){return(e||"").trim().replace(/\/$/,"")}function s(e){return{"Content-Type":"application/json",Authorization:`Bearer ${e}`}}async function l({provider:e,apiKey:r,baseUrl:t,providerSpecificData:a={},modelId:n="gpt-4o-mini",modelsUrl:l}){if(!t)return{valid:!1,error:"Missing base URL"};let d=l||function(e){let r=o(e);if(!r)return"";for(let e of["/chat/completions","/responses","/chat","/messages"])if(r.endsWith(e))return`${r.slice(0,-e.length)}/models`;return`${r}/models`}(t);if(!d)return{valid:!1,error:"Invalid models endpoint"};let u=await fetch(d,{method:"GET",headers:s(r)});if(u.ok)return{valid:!0,error:null};if(401===u.status||403===u.status)return{valid:!1,error:"Invalid API key"};let c=function(e,r,t={}){let a=o(r);return a?(0,i.isOpenAICompatibleProvider)(e)?t?.apiType==="responses"?`${a}/responses`:`${a}/chat/completions`:a.endsWith("/chat/completions")||a.endsWith("/responses")||a.endsWith("/chat")?a:a.endsWith("/v1")?`${a}/chat/completions`:a:""}(e,t,a);if(!c)return{valid:!1,error:`Validation failed: ${u.status}`};let p=a?.validationModelId||n,h=await fetch(c,{method:"POST",headers:s(r),body:JSON.stringify({model:p,messages:[{role:"user",content:"test"}],max_tokens:1})});return h.ok?{valid:!0,error:null}:401===h.status||403===h.status?{valid:!1,error:"Invalid API key"}:404===h.status||405===h.status?{valid:!1,error:"Provider validation endpoint not supported"}:h.status>=500?{valid:!1,error:`Provider unavailable (${h.status})`}:{valid:!0,error:null}}async function d({apiKey:e,baseUrl:r,modelId:t,headers:a={},providerSpecificData:i={}}){if(!r)return{valid:!1,error:"Missing base URL"};let n={"Content-Type":"application/json",...a};n["x-api-key"]||n["X-API-Key"]||(n["x-api-key"]=e),n["anthropic-version"]||n["Anthropic-Version"]||(n["anthropic-version"]="2023-06-01");let o=i?.validationModelId||t||"claude-3-5-sonnet-20241022",s=await fetch(r,{method:"POST",headers:n,body:JSON.stringify({model:o,max_tokens:1,messages:[{role:"user",content:"test"}]})});return 401===s.status||403===s.status?{valid:!1,error:"Invalid API key"}:{valid:!0,error:null}}async function u({apiKey:e,baseUrl:r}){if(!r)return{valid:!1,error:"Missing base URL"};let t=r.includes("?")?"&":"?",a=await fetch(`${r}${t}key=${encodeURIComponent(e)}`,{method:"GET",headers:{"Content-Type":"application/json"}});return a.ok?{valid:!0,error:null}:401===a.status||403===a.status?{valid:!1,error:"Invalid API key"}:{valid:!1,error:`Validation failed: ${a.status}`}}async function c({apiKey:e}){try{let r=await fetch("https://api.deepgram.com/v1/auth/token",{method:"GET",headers:{Authorization:`Token ${e}`}});if(r.ok)return{valid:!0,error:null};if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${r.status}`}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function p({apiKey:e}){try{let r=await fetch("https://api.assemblyai.com/v2/transcript?limit=1",{method:"GET",headers:{Authorization:e,"Content-Type":"application/json"}});if(r.ok)return{valid:!0,error:null};if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${r.status}`}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function h({apiKey:e}){try{let r=await fetch("https://api.nanobananaapi.ai/api/v1/nanobanana/generate",{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json"},body:JSON.stringify({prompt:"test",model:"nanobanana-flash"})});if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};return{valid:!0,error:null}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function f({apiKey:e}){try{let r=await fetch("https://api.elevenlabs.io/v1/voices",{method:"GET",headers:{"xi-api-key":e,"Content-Type":"application/json"}});if(r.ok)return{valid:!0,error:null};if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${r.status}`}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function v({apiKey:e}){try{let r=await fetch("https://api.inworld.ai/tts/v1/voice",{method:"POST",headers:{Authorization:`Basic ${e}`,"Content-Type":"application/json"},body:JSON.stringify({text:"test",modelId:"inworld-tts-1.5-mini",audioConfig:{audioEncoding:"MP3"}})});if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};return{valid:!0,error:null}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function m({apiKey:e,providerSpecificData:r={}}){try{let t=o(r.baseUrl)||"https://coding-intl.dashscope.aliyuncs.com/apps/anthropic/v1",a=t.endsWith("/messages")?t.slice(0,-9):t,i=`${a}/messages`,n=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json","x-api-key":e,"anthropic-version":"2023-06-01"},body:JSON.stringify({model:"qwen3-coder-plus",max_tokens:1,messages:[{role:"user",content:"test"}]})});if(401===n.status||403===n.status)return{valid:!1,error:"Invalid API key"};if(n.status>=400&&n.status<500||n.ok)return{valid:!0,error:null};return{valid:!1,error:`Validation failed: ${n.status}`}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function y({apiKey:e,providerSpecificData:r={}}){let t=o(r.baseUrl);if(!t)return{valid:!1,error:"No base URL configured for OpenAI compatible provider"};let a="string"==typeof r?.validationModelId?r.validationModelId.trim():"",i=!1;try{let r=await fetch(`${t}/models`,{method:"GET",headers:s(e)});if(i=!0,r.ok)return{valid:!0,error:null,method:"models_endpoint"};if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};if(429===r.status)return{valid:!0,error:null,method:"models_endpoint",warning:"Rate limited, but credentials are valid"}}catch{}if(!a)return{valid:!1,error:"Endpoint /models unavailable. Provide a Model ID to validate via /chat/completions."};let n=r.apiType||"chat",l=`${t}${"responses"===n?"/responses":"/chat/completions"}`;try{let r=await fetch(l,{method:"POST",headers:s(e),body:JSON.stringify({model:a,messages:[{role:"user",content:"test"}],max_tokens:1})});if(r.ok)return{valid:!0,error:null,method:"chat_completions"};if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};if(429===r.status)return{valid:!0,error:null,method:"chat_completions",warning:"Rate limited, but credentials are valid"};if(400===r.status)return{valid:!0,error:null,method:"inference_available",warning:"Model ID may be invalid, but credentials are valid"};if(r.status>=400&&r.status<500)return{valid:!0,error:null,method:"inference_available"};if(r.status>=500)return{valid:!1,error:`Provider unavailable (${r.status})`}}catch{}if(!i)return{valid:!1,error:"Connection failed while testing /chat/completions"};try{let r=await fetch(t,{method:"GET",headers:s(e),signal:AbortSignal.timeout(5e3)});if(r.status<500)return{valid:!0,error:null};return{valid:!1,error:`Provider unavailable (${r.status})`}}catch(e){return{valid:!1,error:e.message||"Connection failed"}}}async function g({apiKey:e,providerSpecificData:r={}}){let t=o(r.baseUrl);if(!t)return{valid:!1,error:"No base URL configured for Anthropic compatible provider"};t.endsWith("/messages")&&(t=t.slice(0,-9));let a={"Content-Type":"application/json","x-api-key":e,"anthropic-version":"2023-06-01",Authorization:`Bearer ${e}`};try{let e=await fetch(`${t}/models`,{method:"GET",headers:a});if(e.ok)return{valid:!0,error:null};if(401===e.status||403===e.status)return{valid:!1,error:"Invalid API key"}}catch{}let i=r?.validationModelId||"claude-3-5-sonnet-20241022";try{let e=await fetch(`${t}/messages`,{method:"POST",headers:a,body:JSON.stringify({model:i,max_tokens:1,messages:[{role:"user",content:"test"}]})});if(401===e.status||403===e.status)return{valid:!1,error:"Invalid API key"};return{valid:!0,error:null}}catch(e){return{valid:!1,error:e.message||"Connection failed"}}}async function k(e,r){try{let t=await fetch(e,r);if(t.ok)return{valid:!0,error:null,unsupported:!1};if(401===t.status||403===t.status)return{valid:!1,error:"Invalid API key",unsupported:!1};if(t.status<500)return{valid:!0,error:null,unsupported:!1};return{valid:!1,error:`Validation failed: ${t.status}`,unsupported:!1}}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}}let x={"serper-search":e=>({url:"https://google.serper.dev/search",init:{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":e},body:JSON.stringify({q:"test",num:1})}}),"brave-search":e=>({url:"https://api.search.brave.com/res/v1/web/search?q=test&count=1",init:{method:"GET",headers:{Accept:"application/json","X-Subscription-Token":e}}}),"perplexity-search":e=>({url:"https://api.perplexity.ai/search",init:{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify({query:"test",max_results:1})}}),"exa-search":e=>({url:"https://api.exa.ai/search",init:{method:"POST",headers:{"Content-Type":"application/json","x-api-key":e},body:JSON.stringify({query:"test",numResults:1})}}),"tavily-search":e=>({url:"https://api.tavily.com/search",init:{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify({query:"test",max_results:1})}})};async function w({provider:e,apiKey:r,providerSpecificData:t={}}){if(!e||!r)return{valid:!1,error:"Provider and API key required",unsupported:!1};if((0,i.isOpenAICompatibleProvider)(e))try{return await y({apiKey:r,providerSpecificData:t})}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}if((0,i.isAnthropicCompatibleProvider)(e))try{return await g({apiKey:r,providerSpecificData:t})}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}let n={deepgram:c,assemblyai:p,nanobanana:h,elevenlabs:f,inworld:v,"bailian-coding-plan":m,...Object.fromEntries(Object.entries(x).map(([e,r])=>[e,({apiKey:e})=>{let{url:t,init:a}=r(e);return k(t,a)}]))};if(n[e])try{return await n[e]({apiKey:r,providerSpecificData:t})}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}let s=(0,a.getRegistryEntry)(e);if(!s)return{valid:!1,error:"Provider validation not supported",unsupported:!0};let w=s.models?.[0]?.id||null,I=s.testKeyBaseUrl?{...s,baseUrl:s.testKeyBaseUrl}:s,P=function(e,r={}){return r?.baseUrl?o(r.baseUrl):e?.baseUrl?o(e.baseUrl):""}(I,t);try{if(b.has(s.format))return await l({provider:e,apiKey:r,baseUrl:P,providerSpecificData:t,modelId:w,modelsUrl:s.modelsUrl});if("claude"===s.format){let e=`${P}${s.urlSuffix||""}`,a={...s.headers||{}};return"x-api-key"===(s.authHeader||"").toLowerCase()?a["x-api-key"]=r:a.Authorization=`Bearer ${r}`,await d({apiKey:r,baseUrl:e,modelId:w,headers:a,providerSpecificData:t})}if(T.has(s.format))return await u({apiKey:r,baseUrl:P});return{valid:!1,error:"Provider validation not supported",unsupported:!0}}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}}e.s(["validateProviderApiKey",()=>w]),t()}catch(e){t(e)}},!1),910660,e=>e.a(async(r,t)=>{try{var a=e.i(89171),i=e.i(677850),n=e.i(200392);e.i(245272);var o=e.i(385498),s=e.i(548941),l=e.i(250875),d=e.i(639173),u=e.i(383368),c=e.i(266240),p=e.i(928602);e.i(312125);var h=e.i(397506),f=e.i(496928),v=e.i(444675),m=r([i,n,u]);[i,n,u]=m.then?(await m)():m;let _={claude:{checkExpiry:!0,refreshable:!0},codex:{checkExpiry:!0,refreshable:!0},"gemini-cli":{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},antigravity:{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},github:{url:"https://api.github.com/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{"User-Agent":"OmniRoute",Accept:"application/vnd.github+json"}},iflow:{checkExpiry:!0,refreshable:!0},qwen:{checkExpiry:!0,refreshable:!0},cursor:{checkExpiry:!0},"kimi-coding":{checkExpiry:!0,refreshable:!0},kilocode:{checkExpiry:!0},cline:{checkExpiry:!0,refreshable:!0},kiro:{checkExpiry:!0,refreshable:!0}},S={cline:"cline",kilocode:"kilo"},$=i.z.object({validationModelId:i.z.string().max(500).optional()});function y(e,r="Unknown error"){return"string"!=typeof e?r:e.trim()||r}function g(e,r,t,a=null){return{type:e,source:r,message:t||null,code:a??null}}function k({error:e,statusCode:r=null,refreshFailed:t=!1,unsupported:a=!1}){let i=y(e,"Connection test failed"),n=i.toLowerCase(),o=Number.isFinite(r)?Number(r):null;return a?g("unsupported","validation",i,"unsupported"):t||n.includes("refresh failed")?g("token_refresh_failed","oauth",i,"refresh_failed"):401===o||403===o?g("upstream_auth_error","upstream",i,String(o)):429===o?g("upstream_rate_limited","upstream",i,"429"):o&&o>=500?g("upstream_unavailable","upstream",i,String(o)):n.includes("token expired")||n.includes("expired")?g("token_expired","oauth",i,"token_expired"):n.includes("invalid api key")||n.includes("token invalid")||n.includes("revoked")||n.includes("access denied")||n.includes("unauthorized")||n.includes("forbidden")?g("upstream_auth_error","upstream",i,o?String(o):"auth_failed"):n.includes("rate limit")||n.includes("quota")||n.includes("too many requests")?g("upstream_rate_limited","upstream",i,o?String(o):"rate_limited"):n.includes("fetch failed")||n.includes("network")||n.includes("timeout")||n.includes("econn")||n.includes("enotfound")||n.includes("socket")?g("network_error","upstream",i,"network_error"):g("upstream_error","upstream",i,o?String(o):"upstream_error")}async function w(e){let r=S[e];if(!r)return null;try{let e=await (0,c.getCliRuntimeStatus)(r);if(e.installed&&e.runnable)return e;let t=e.installed?`Local CLI runtime is installed but not runnable (${e.reason||"healthcheck_failed"})`:"Local CLI runtime is not installed";return{...e,diagnosis:g("runtime_error","local",t,e.reason||"runtime_error"),error:t}}catch(r){let e=`Failed to check local CLI runtime: ${r?.message||"runtime_check_failed"}`;return{installed:!1,runnable:!1,reason:"runtime_check_failed",diagnosis:g("runtime_error","local",e,"runtime_check_failed"),error:e}}}async function b(e){let{provider:r,refreshToken:t}=e;if(!t)return null;try{let a={refreshToken:t,providerSpecificData:e.providerSpecificData||{}};return await (0,p.getAccessToken)(r,a,console)}catch(e){return console.log(`Error refreshing ${r} token:`,e.message),null}}function T(e){let r=e.expiresAt||e.tokenExpiresAt;return!!r&&new Date(r).getTime()<=Date.now()+3e5}async function x(){try{if(!await (0,s.isCloudEnabled)())return;let e=await (0,l.getConsistentMachineId)();await (0,d.syncToCloud)(e)}catch(e){console.log("Error syncing to cloud after token refresh:",e)}}async function I(e){let r=_[e.provider];if(!r){let e="Provider test not supported";return{valid:!1,error:e,refreshed:!1,diagnosis:k({error:e,unsupported:!0})}}if(!e.accessToken){if(r.refreshable&&!e.refreshToken){let e="Refresh token expired. Please re-authenticate this account.";return{valid:!1,error:e,refreshed:!1,diagnosis:g("reauth_required","oauth",e,"reauth_required")}}let t="No access token";return{valid:!1,error:t,refreshed:!1,diagnosis:g("auth_missing","local",t,"missing_access_token")}}let t=e.accessToken,a=!1,i=null,n=T(e);if(r.refreshable&&n&&e.refreshToken){let r=await b(e);if(r)t=r.accessToken,a=!0,i=r;else{let e="Token expired and refresh failed";return{valid:!1,error:e,refreshed:!1,diagnosis:k({error:e,refreshFailed:!0})}}}if(r.checkExpiry){if(a)return{valid:!0,error:null,refreshed:a,newTokens:i,diagnosis:g("ok","oauth",null,null)};if(n){let e="Token expired";return{valid:!1,error:e,refreshed:!1,diagnosis:k({error:e})}}return{valid:!0,error:null,refreshed:!1,newTokens:null,diagnosis:g("ok","local",null,null)}}try{let n={[r.authHeader]:`${r.authPrefix}${t}`,...r.extraHeaders},o=await fetch(r.url,{method:r.method,headers:n});if(o.ok)return{valid:!0,error:null,refreshed:a,newTokens:i,diagnosis:g("ok","upstream",null,null)};if((401===o.status||403===o.status)&&!a&&T(e)&&e.refreshToken&&"string"==typeof e.refreshToken){let t=await b(e);if(t){let e=await fetch(r.url,{method:r.method,headers:{[r.authHeader]:`${r.authPrefix}${t.accessToken}`,...r.extraHeaders}});if(e.ok)return{valid:!0,error:null,refreshed:!0,newTokens:t,diagnosis:g("ok","upstream",null,null)};let a=`API returned ${e.status} after token refresh`;return{valid:!1,error:a,refreshed:!0,statusCode:e.status,diagnosis:k({error:a,statusCode:e.status})}}let a="Token expired and refresh failed";return{valid:!1,error:a,refreshed:!1,statusCode:401,diagnosis:k({error:a,statusCode:401,refreshFailed:!0})}}let s=401===o.status?"Token invalid or revoked":403===o.status?"Access denied":`API returned ${o.status}`;return{valid:!1,error:s,refreshed:a,statusCode:o.status,diagnosis:k({error:s,statusCode:o.status})}}catch(r){let e=y(r?.message,"Connection test failed");return{valid:!1,error:e,refreshed:a,diagnosis:k({error:e})}}}async function P(e){if(!e.apiKey){let e="Missing API key";return{valid:!1,error:e,diagnosis:g("auth_missing","local",e,"missing_api_key")}}let r=await (0,u.validateProviderApiKey)({provider:e.provider,apiKey:e.apiKey,providerSpecificData:e.providerSpecificData});if(r.unsupported){let e="Provider test not supported";return{valid:!1,error:e,diagnosis:k({error:e,unsupported:!0})}}let t=r.valid?null:r.error||"Invalid API key",a=r.valid?g("ok","upstream",null,null):k({error:t});return{valid:!!r.valid,error:t,warning:r.warning||null,diagnosis:a}}async function C(e,r){let t,a=await (0,o.getProviderConnectionById)(e);if(!a)return{valid:!1,error:"Connection not found",diagnosis:null,latencyMs:0};let i="string"==typeof a.provider?a.provider:"";if(!i)return{valid:!1,error:"Connection provider is invalid",diagnosis:g("validation_error","local","Connection provider is invalid","provider_invalid"),latencyMs:0};let n=null;try{n=await (0,s.resolveProxyForConnection)(e)}catch(r){console.log(`[ConnectionTest] Failed to resolve proxy for ${e}:`,r?.message)}let l=Date.now(),d=await w(i);if(d?.diagnosis)t={valid:!1,error:d.error,refreshed:!1,diagnosis:d.diagnosis};else if("apikey"===a.authType){let e=r?{...a,providerSpecificData:{...a.providerSpecificData||{},validationModelId:r}}:a;t=await (0,v.runWithProxyContext)(n?.proxy||null,()=>P(e))}else t=await (0,v.runWithProxyContext)(n?.proxy||null,()=>I(a));let u=Date.now()-l,c=new Date().toISOString(),p=t.diagnosis||(t.valid?g("ok","local",null,null):k({error:t.error,statusCode:t.statusCode})),m={testStatus:t.valid?"active":"error",lastError:t.valid?null:t.error,lastErrorAt:t.valid?null:c,lastTested:c,lastErrorType:t.valid?null:p.type,lastErrorSource:t.valid?null:p.source,errorCode:t.valid?null:p.code||t.statusCode||null,rateLimitedUntil:t.valid?null:a.rateLimitedUntil||null};t.valid&&(m.backoffLevel=0),t.refreshed&&t.newTokens&&(m.accessToken=t.newTokens.accessToken,t.newTokens.refreshToken&&(m.refreshToken=t.newTokens.refreshToken),t.newTokens.expiresIn&&(m.expiresAt=new Date(Date.now()+1e3*t.newTokens.expiresIn).toISOString())),await (0,o.updateProviderConnection)(e,m),t.refreshed&&await x();try{(0,h.saveCallLog)({method:"POST",path:"/api/providers/test",status:t.valid?200:t.statusCode||401,model:"connection-test",provider:i,connectionId:e,duration:u,error:t.valid?null:t.error||null,sourceFormat:"test",targetFormat:"test"}).catch(()=>{})}catch{}try{(0,f.logProxyEvent)({status:t.valid?"success":"error",proxy:n?.proxy||null,level:n?.level||"provider-test",levelId:n?.levelId||null,provider:i,targetUrl:`${i}/connection-test`,latencyMs:u,error:t.valid?null:t.error||null,connectionId:e,comboId:null,account:e?.slice(0,8)||null,tlsFingerprint:!1})}catch{}return{valid:t.valid,error:t.error,warning:t.warning||null,refreshed:t.refreshed||!1,diagnosis:p,latencyMs:u,statusCode:t.statusCode||null,runtime:d||null,testedAt:c}}async function A(e,{params:r}){try{let{id:t}=await r,i={};try{i=await e.json()}catch{}let o=(0,n.validateBody)($,i);if((0,n.isValidationFailure)(o))return a.NextResponse.json({error:o.error},{status:400});let{validationModelId:s}=o.data,l=await C(t,s);if("Connection not found"===l.error)return a.NextResponse.json({error:"Connection not found"},{status:404});return a.NextResponse.json(l)}catch(e){return console.log("Error testing connection:",e),a.NextResponse.json({error:"Test failed"},{status:500})}}e.s(["POST",()=>A,"testSingleConnection",()=>C]),t()}catch(e){t(e)}},!1)];
1
+ module.exports=[383368,e=>e.a(async(r,t)=>{try{var a=e.i(828059),i=e.i(963219),n=r([i]);[i]=n.then?(await n)():n;let b=new Set(["openai","openai-responses"]),T=new Set(["gemini","gemini-cli"]);function o(e){return(e||"").trim().replace(/\/$/,"")}function s(e){return{"Content-Type":"application/json",Authorization:`Bearer ${e}`}}async function l({provider:e,apiKey:r,baseUrl:t,providerSpecificData:a={},modelId:n="gpt-4o-mini",modelsUrl:l}){if(!t)return{valid:!1,error:"Missing base URL"};let d=l||function(e){let r=o(e);if(!r)return"";for(let e of["/chat/completions","/responses","/chat","/messages"])if(r.endsWith(e))return`${r.slice(0,-e.length)}/models`;return`${r}/models`}(t);if(!d)return{valid:!1,error:"Invalid models endpoint"};let u=await fetch(d,{method:"GET",headers:s(r)});if(u.ok)return{valid:!0,error:null};if(401===u.status||403===u.status)return{valid:!1,error:"Invalid API key"};let c=function(e,r,t={}){let a=o(r);return a?(0,i.isOpenAICompatibleProvider)(e)?t?.apiType==="responses"?`${a}/responses`:`${a}/chat/completions`:a.endsWith("/chat/completions")||a.endsWith("/responses")||a.endsWith("/chat")?a:a.endsWith("/v1")?`${a}/chat/completions`:a:""}(e,t,a);if(!c)return{valid:!1,error:`Validation failed: ${u.status}`};let p=a?.validationModelId||n,h=await fetch(c,{method:"POST",headers:s(r),body:JSON.stringify({model:p,messages:[{role:"user",content:"test"}],max_tokens:1})});return h.ok?{valid:!0,error:null}:401===h.status||403===h.status?{valid:!1,error:"Invalid API key"}:404===h.status||405===h.status?{valid:!1,error:"Provider validation endpoint not supported"}:h.status>=500?{valid:!1,error:`Provider unavailable (${h.status})`}:{valid:!0,error:null}}async function d({apiKey:e,baseUrl:r,modelId:t,headers:a={},providerSpecificData:i={}}){if(!r)return{valid:!1,error:"Missing base URL"};let n={"Content-Type":"application/json",...a};n["x-api-key"]||n["X-API-Key"]||(n["x-api-key"]=e),n["anthropic-version"]||n["Anthropic-Version"]||(n["anthropic-version"]="2023-06-01");let o=i?.validationModelId||t||"claude-3-5-sonnet-20241022",s=await fetch(r,{method:"POST",headers:n,body:JSON.stringify({model:o,max_tokens:1,messages:[{role:"user",content:"test"}]})});return 401===s.status||403===s.status?{valid:!1,error:"Invalid API key"}:{valid:!0,error:null}}async function u({apiKey:e,baseUrl:r}){if(!r)return{valid:!1,error:"Missing base URL"};let t=r.includes("?")?"&":"?",a=await fetch(`${r}${t}key=${encodeURIComponent(e)}`,{method:"GET",headers:{"Content-Type":"application/json"}});return a.ok?{valid:!0,error:null}:401===a.status||403===a.status?{valid:!1,error:"Invalid API key"}:{valid:!1,error:`Validation failed: ${a.status}`}}async function c({apiKey:e}){try{let r=await fetch("https://api.deepgram.com/v1/auth/token",{method:"GET",headers:{Authorization:`Token ${e}`}});if(r.ok)return{valid:!0,error:null};if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${r.status}`}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function p({apiKey:e}){try{let r=await fetch("https://api.assemblyai.com/v2/transcript?limit=1",{method:"GET",headers:{Authorization:e,"Content-Type":"application/json"}});if(r.ok)return{valid:!0,error:null};if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${r.status}`}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function h({apiKey:e}){try{let r=await fetch("https://api.nanobananaapi.ai/api/v1/nanobanana/generate",{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json"},body:JSON.stringify({prompt:"test",model:"nanobanana-flash"})});if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};return{valid:!0,error:null}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function f({apiKey:e}){try{let r=await fetch("https://api.elevenlabs.io/v1/voices",{method:"GET",headers:{"xi-api-key":e,"Content-Type":"application/json"}});if(r.ok)return{valid:!0,error:null};if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${r.status}`}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function v({apiKey:e}){try{let r=await fetch("https://api.inworld.ai/tts/v1/voice",{method:"POST",headers:{Authorization:`Basic ${e}`,"Content-Type":"application/json"},body:JSON.stringify({text:"test",modelId:"inworld-tts-1.5-mini",audioConfig:{audioEncoding:"MP3"}})});if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};return{valid:!0,error:null}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function m({apiKey:e,providerSpecificData:r={}}){try{let t=o(r.baseUrl)||"https://coding-intl.dashscope.aliyuncs.com/apps/anthropic/v1",a=t.endsWith("/messages")?t.slice(0,-9):t,i=`${a}/messages`,n=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json","x-api-key":e,"anthropic-version":"2023-06-01"},body:JSON.stringify({model:"qwen3-coder-plus",max_tokens:1,messages:[{role:"user",content:"test"}]})});if(401===n.status||403===n.status)return{valid:!1,error:"Invalid API key"};if(n.status>=400&&n.status<500||n.ok)return{valid:!0,error:null};return{valid:!1,error:`Validation failed: ${n.status}`}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function y({apiKey:e,providerSpecificData:r={}}){let t=o(r.baseUrl);if(!t)return{valid:!1,error:"No base URL configured for OpenAI compatible provider"};let a="string"==typeof r?.validationModelId?r.validationModelId.trim():"",i=!1;try{let r=await fetch(`${t}/models`,{method:"GET",headers:s(e)});if(i=!0,r.ok)return{valid:!0,error:null,method:"models_endpoint"};if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};if(429===r.status)return{valid:!0,error:null,method:"models_endpoint",warning:"Rate limited, but credentials are valid"}}catch{}if(!a)return{valid:!1,error:"Endpoint /models unavailable. Provide a Model ID to validate via /chat/completions."};let n=r.apiType||"chat",l=`${t}${"responses"===n?"/responses":"/chat/completions"}`;try{let r=await fetch(l,{method:"POST",headers:s(e),body:JSON.stringify({model:a,messages:[{role:"user",content:"test"}],max_tokens:1})});if(r.ok)return{valid:!0,error:null,method:"chat_completions"};if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};if(429===r.status)return{valid:!0,error:null,method:"chat_completions",warning:"Rate limited, but credentials are valid"};if(400===r.status)return{valid:!0,error:null,method:"inference_available",warning:"Model ID may be invalid, but credentials are valid"};if(r.status>=400&&r.status<500)return{valid:!0,error:null,method:"inference_available"};if(r.status>=500)return{valid:!1,error:`Provider unavailable (${r.status})`}}catch{}if(!i)return{valid:!1,error:"Connection failed while testing /chat/completions"};try{let r=await fetch(t,{method:"GET",headers:s(e),signal:AbortSignal.timeout(5e3)});if(r.status<500)return{valid:!0,error:null};return{valid:!1,error:`Provider unavailable (${r.status})`}}catch(e){return{valid:!1,error:e.message||"Connection failed"}}}async function g({apiKey:e,providerSpecificData:r={}}){let t=o(r.baseUrl);if(!t)return{valid:!1,error:"No base URL configured for Anthropic compatible provider"};t.endsWith("/messages")&&(t=t.slice(0,-9));let a={"Content-Type":"application/json","x-api-key":e,"anthropic-version":"2023-06-01",Authorization:`Bearer ${e}`};try{let e=await fetch(`${t}/models`,{method:"GET",headers:a});if(e.ok)return{valid:!0,error:null};if(401===e.status||403===e.status)return{valid:!1,error:"Invalid API key"}}catch{}let i=r?.validationModelId||"claude-3-5-sonnet-20241022";try{let e=await fetch(`${t}/messages`,{method:"POST",headers:a,body:JSON.stringify({model:i,max_tokens:1,messages:[{role:"user",content:"test"}]})});if(401===e.status||403===e.status)return{valid:!1,error:"Invalid API key"};return{valid:!0,error:null}}catch(e){return{valid:!1,error:e.message||"Connection failed"}}}async function k(e,r){try{let t=await fetch(e,r);if(t.ok)return{valid:!0,error:null,unsupported:!1};if(401===t.status||403===t.status)return{valid:!1,error:"Invalid API key",unsupported:!1};if(t.status<500)return{valid:!0,error:null,unsupported:!1};return{valid:!1,error:`Validation failed: ${t.status}`,unsupported:!1}}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}}let x={"serper-search":e=>({url:"https://google.serper.dev/search",init:{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":e},body:JSON.stringify({q:"test",num:1})}}),"brave-search":e=>({url:"https://api.search.brave.com/res/v1/web/search?q=test&count=1",init:{method:"GET",headers:{Accept:"application/json","X-Subscription-Token":e}}}),"perplexity-search":e=>({url:"https://api.perplexity.ai/search",init:{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify({query:"test",max_results:1})}}),"exa-search":e=>({url:"https://api.exa.ai/search",init:{method:"POST",headers:{"Content-Type":"application/json","x-api-key":e},body:JSON.stringify({query:"test",numResults:1})}}),"tavily-search":e=>({url:"https://api.tavily.com/search",init:{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify({query:"test",max_results:1})}})};async function w({provider:e,apiKey:r,providerSpecificData:t={}}){if(!e||!r)return{valid:!1,error:"Provider and API key required",unsupported:!1};if((0,i.isOpenAICompatibleProvider)(e))try{return await y({apiKey:r,providerSpecificData:t})}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}if((0,i.isAnthropicCompatibleProvider)(e))try{return await g({apiKey:r,providerSpecificData:t})}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}let n={deepgram:c,assemblyai:p,nanobanana:h,elevenlabs:f,inworld:v,"bailian-coding-plan":m,longcat:async({apiKey:e})=>{try{let r=await fetch("https://longcat.chat/api/v1/chat/completions",{method:"POST",headers:s(e),body:JSON.stringify({model:"longcat",messages:[{role:"user",content:"test"}],max_tokens:1})});if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};return{valid:!0,error:null}}catch(e){return{valid:!1,error:e.message||"Connection failed"}}},...Object.fromEntries(Object.entries(x).map(([e,r])=>[e,({apiKey:e})=>{let{url:t,init:a}=r(e);return k(t,a)}]))};if(n[e])try{return await n[e]({apiKey:r,providerSpecificData:t})}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}let w=(0,a.getRegistryEntry)(e);if(!w)return{valid:!1,error:"Provider validation not supported",unsupported:!0};let I=w.models?.[0]?.id||null,P=w.testKeyBaseUrl?{...w,baseUrl:w.testKeyBaseUrl}:w,C=function(e,r={}){return r?.baseUrl?o(r.baseUrl):e?.baseUrl?o(e.baseUrl):""}(P,t);try{if(b.has(w.format))return await l({provider:e,apiKey:r,baseUrl:C,providerSpecificData:t,modelId:I,modelsUrl:w.modelsUrl});if("claude"===w.format){let e=`${C}${w.urlSuffix||""}`,a={...w.headers||{}};return"x-api-key"===(w.authHeader||"").toLowerCase()?a["x-api-key"]=r:a.Authorization=`Bearer ${r}`,await d({apiKey:r,baseUrl:e,modelId:I,headers:a,providerSpecificData:t})}if(T.has(w.format))return await u({apiKey:r,baseUrl:C});return{valid:!1,error:"Provider validation not supported",unsupported:!0}}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}}e.s(["validateProviderApiKey",()=>w]),t()}catch(e){t(e)}},!1),910660,e=>e.a(async(r,t)=>{try{var a=e.i(89171),i=e.i(677850),n=e.i(200392);e.i(245272);var o=e.i(385498),s=e.i(548941),l=e.i(250875),d=e.i(639173),u=e.i(383368),c=e.i(266240),p=e.i(928602);e.i(312125);var h=e.i(397506),f=e.i(496928),v=e.i(444675),m=r([i,n,u]);[i,n,u]=m.then?(await m)():m;let _={claude:{checkExpiry:!0,refreshable:!0},codex:{checkExpiry:!0,refreshable:!0},"gemini-cli":{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},antigravity:{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},github:{url:"https://api.github.com/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{"User-Agent":"OmniRoute",Accept:"application/vnd.github+json"}},iflow:{checkExpiry:!0,refreshable:!0},qwen:{checkExpiry:!0,refreshable:!0},cursor:{checkExpiry:!0},"kimi-coding":{checkExpiry:!0,refreshable:!0},kilocode:{checkExpiry:!0},cline:{checkExpiry:!0,refreshable:!0},kiro:{checkExpiry:!0,refreshable:!0}},S={cline:"cline",kilocode:"kilo"},$=i.z.object({validationModelId:i.z.string().max(500).optional()});function y(e,r="Unknown error"){return"string"!=typeof e?r:e.trim()||r}function g(e,r,t,a=null){return{type:e,source:r,message:t||null,code:a??null}}function k({error:e,statusCode:r=null,refreshFailed:t=!1,unsupported:a=!1}){let i=y(e,"Connection test failed"),n=i.toLowerCase(),o=Number.isFinite(r)?Number(r):null;return a?g("unsupported","validation",i,"unsupported"):t||n.includes("refresh failed")?g("token_refresh_failed","oauth",i,"refresh_failed"):401===o||403===o?g("upstream_auth_error","upstream",i,String(o)):429===o?g("upstream_rate_limited","upstream",i,"429"):o&&o>=500?g("upstream_unavailable","upstream",i,String(o)):n.includes("token expired")||n.includes("expired")?g("token_expired","oauth",i,"token_expired"):n.includes("invalid api key")||n.includes("token invalid")||n.includes("revoked")||n.includes("access denied")||n.includes("unauthorized")||n.includes("forbidden")?g("upstream_auth_error","upstream",i,o?String(o):"auth_failed"):n.includes("rate limit")||n.includes("quota")||n.includes("too many requests")?g("upstream_rate_limited","upstream",i,o?String(o):"rate_limited"):n.includes("fetch failed")||n.includes("network")||n.includes("timeout")||n.includes("econn")||n.includes("enotfound")||n.includes("socket")?g("network_error","upstream",i,"network_error"):g("upstream_error","upstream",i,o?String(o):"upstream_error")}async function w(e){let r=S[e];if(!r)return null;try{let e=await (0,c.getCliRuntimeStatus)(r);if(e.installed&&e.runnable)return e;let t=e.installed?`Local CLI runtime is installed but not runnable (${e.reason||"healthcheck_failed"})`:"Local CLI runtime is not installed";return{...e,diagnosis:g("runtime_error","local",t,e.reason||"runtime_error"),error:t}}catch(r){let e=`Failed to check local CLI runtime: ${r?.message||"runtime_check_failed"}`;return{installed:!1,runnable:!1,reason:"runtime_check_failed",diagnosis:g("runtime_error","local",e,"runtime_check_failed"),error:e}}}async function b(e){let{provider:r,refreshToken:t}=e;if(!t)return null;try{let a={refreshToken:t,providerSpecificData:e.providerSpecificData||{}};return await (0,p.getAccessToken)(r,a,console)}catch(e){return console.log(`Error refreshing ${r} token:`,e.message),null}}function T(e){let r=e.expiresAt||e.tokenExpiresAt;return!!r&&new Date(r).getTime()<=Date.now()+3e5}async function x(){try{if(!await (0,s.isCloudEnabled)())return;let e=await (0,l.getConsistentMachineId)();await (0,d.syncToCloud)(e)}catch(e){console.log("Error syncing to cloud after token refresh:",e)}}async function I(e){let r=_[e.provider];if(!r){let e="Provider test not supported";return{valid:!1,error:e,refreshed:!1,diagnosis:k({error:e,unsupported:!0})}}if(!e.accessToken){if(r.refreshable&&!e.refreshToken){let e="Refresh token expired. Please re-authenticate this account.";return{valid:!1,error:e,refreshed:!1,diagnosis:g("reauth_required","oauth",e,"reauth_required")}}let t="No access token";return{valid:!1,error:t,refreshed:!1,diagnosis:g("auth_missing","local",t,"missing_access_token")}}let t=e.accessToken,a=!1,i=null,n=T(e);if(r.refreshable&&n&&e.refreshToken){let r=await b(e);if(r)t=r.accessToken,a=!0,i=r;else{let e="Token expired and refresh failed";return{valid:!1,error:e,refreshed:!1,diagnosis:k({error:e,refreshFailed:!0})}}}if(r.checkExpiry){if(a)return{valid:!0,error:null,refreshed:a,newTokens:i,diagnosis:g("ok","oauth",null,null)};if(n){let e="Token expired";return{valid:!1,error:e,refreshed:!1,diagnosis:k({error:e})}}return{valid:!0,error:null,refreshed:!1,newTokens:null,diagnosis:g("ok","local",null,null)}}try{let n={[r.authHeader]:`${r.authPrefix}${t}`,...r.extraHeaders},o=await fetch(r.url,{method:r.method,headers:n});if(o.ok)return{valid:!0,error:null,refreshed:a,newTokens:i,diagnosis:g("ok","upstream",null,null)};if((401===o.status||403===o.status)&&!a&&T(e)&&e.refreshToken&&"string"==typeof e.refreshToken){let t=await b(e);if(t){let e=await fetch(r.url,{method:r.method,headers:{[r.authHeader]:`${r.authPrefix}${t.accessToken}`,...r.extraHeaders}});if(e.ok)return{valid:!0,error:null,refreshed:!0,newTokens:t,diagnosis:g("ok","upstream",null,null)};let a=`API returned ${e.status} after token refresh`;return{valid:!1,error:a,refreshed:!0,statusCode:e.status,diagnosis:k({error:a,statusCode:e.status})}}let a="Token expired and refresh failed";return{valid:!1,error:a,refreshed:!1,statusCode:401,diagnosis:k({error:a,statusCode:401,refreshFailed:!0})}}let s=401===o.status?"Token invalid or revoked":403===o.status?"Access denied":`API returned ${o.status}`;return{valid:!1,error:s,refreshed:a,statusCode:o.status,diagnosis:k({error:s,statusCode:o.status})}}catch(r){let e=y(r?.message,"Connection test failed");return{valid:!1,error:e,refreshed:a,diagnosis:k({error:e})}}}async function P(e){if(!e.apiKey){let e="Missing API key";return{valid:!1,error:e,diagnosis:g("auth_missing","local",e,"missing_api_key")}}let r=await (0,u.validateProviderApiKey)({provider:e.provider,apiKey:e.apiKey,providerSpecificData:e.providerSpecificData});if(r.unsupported){let e="Provider test not supported";return{valid:!1,error:e,diagnosis:k({error:e,unsupported:!0})}}let t=r.valid?null:r.error||"Invalid API key",a=r.valid?g("ok","upstream",null,null):k({error:t});return{valid:!!r.valid,error:t,warning:r.warning||null,diagnosis:a}}async function C(e,r){let t,a=await (0,o.getProviderConnectionById)(e);if(!a)return{valid:!1,error:"Connection not found",diagnosis:null,latencyMs:0};let i="string"==typeof a.provider?a.provider:"";if(!i)return{valid:!1,error:"Connection provider is invalid",diagnosis:g("validation_error","local","Connection provider is invalid","provider_invalid"),latencyMs:0};let n=null;try{n=await (0,s.resolveProxyForConnection)(e)}catch(r){console.log(`[ConnectionTest] Failed to resolve proxy for ${e}:`,r?.message)}let l=Date.now(),d=await w(i);if(d?.diagnosis)t={valid:!1,error:d.error,refreshed:!1,diagnosis:d.diagnosis};else if("apikey"===a.authType){let e=r?{...a,providerSpecificData:{...a.providerSpecificData||{},validationModelId:r}}:a;t=await (0,v.runWithProxyContext)(n?.proxy||null,()=>P(e))}else t=await (0,v.runWithProxyContext)(n?.proxy||null,()=>I(a));let u=Date.now()-l,c=new Date().toISOString(),p=t.diagnosis||(t.valid?g("ok","local",null,null):k({error:t.error,statusCode:t.statusCode})),m={testStatus:t.valid?"active":"error",lastError:t.valid?null:t.error,lastErrorAt:t.valid?null:c,lastTested:c,lastErrorType:t.valid?null:p.type,lastErrorSource:t.valid?null:p.source,errorCode:t.valid?null:p.code||t.statusCode||null,rateLimitedUntil:t.valid?null:a.rateLimitedUntil||null};t.valid&&(m.backoffLevel=0),t.refreshed&&t.newTokens&&(m.accessToken=t.newTokens.accessToken,t.newTokens.refreshToken&&(m.refreshToken=t.newTokens.refreshToken),t.newTokens.expiresIn&&(m.expiresAt=new Date(Date.now()+1e3*t.newTokens.expiresIn).toISOString())),await (0,o.updateProviderConnection)(e,m),t.refreshed&&await x();try{(0,h.saveCallLog)({method:"POST",path:"/api/providers/test",status:t.valid?200:t.statusCode||401,model:"connection-test",provider:i,connectionId:e,duration:u,error:t.valid?null:t.error||null,sourceFormat:"test",targetFormat:"test"}).catch(()=>{})}catch{}try{(0,f.logProxyEvent)({status:t.valid?"success":"error",proxy:n?.proxy||null,level:n?.level||"provider-test",levelId:n?.levelId||null,provider:i,targetUrl:`${i}/connection-test`,latencyMs:u,error:t.valid?null:t.error||null,connectionId:e,comboId:null,account:e?.slice(0,8)||null,tlsFingerprint:!1})}catch{}return{valid:t.valid,error:t.error,warning:t.warning||null,refreshed:t.refreshed||!1,diagnosis:p,latencyMs:u,statusCode:t.statusCode||null,runtime:d||null,testedAt:c}}async function A(e,{params:r}){try{let{id:t}=await r,i={};try{i=await e.json()}catch{}let o=(0,n.validateBody)($,i);if((0,n.isValidationFailure)(o))return a.NextResponse.json({error:o.error},{status:400});let{validationModelId:s}=o.data,l=await C(t,s);if("Connection not found"===l.error)return a.NextResponse.json({error:"Connection not found"},{status:404});return a.NextResponse.json(l)}catch(e){return console.log("Error testing connection:",e),a.NextResponse.json({error:"Test failed"},{status:500})}}e.s(["POST",()=>A,"testSingleConnection",()=>C]),t()}catch(e){t(e)}},!1)];
2
2
 
3
3
  //# sourceMappingURL=src_6320c728._.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.0.0",description:"Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.",type:"module",bin:{omniroute:"bin/omniroute.mjs","omniroute-reset-password":"bin/reset-password.mjs"},files:["bin/","app/","open-sse/mcp-server/","src/shared/contracts/","scripts/postinstall.mjs","scripts/native-binary-compat.mjs","README.md","LICENSE"],workspaces:["open-sse"],engines:{node:">=18.0.0 <24.0.0"},keywords:["ai","router","proxy","openai","claude","anthropic","gemini","fallback","cursor","cline","codex","llm","auto-fallback"],license:"MIT",author:"diegosouzapw",repository:{type:"git",url:"https://github.com/diegosouzapw/OmniRoute"},homepage:"https://omniroute.online",scripts:{dev:"node scripts/run-next.mjs dev",build:"node scripts/build-next-isolated.mjs","build:cli":"node scripts/prepublish.mjs",start:"node scripts/run-next.mjs start",lint:"eslint .","electron:dev":'concurrently "npm run dev" "wait-on http://localhost:20128 && cd electron && npm run dev"',"electron:build":"npm run build && cd electron && npm run build","electron:build:win":"npm run build && cd electron && npm run build:win","electron:build:mac":"npm run build && cd electron && npm run build:mac","electron:build:linux":"npm run build && cd electron && npm run build:linux",test:"node --import tsx/esm --test tests/unit/*.test.mjs","test:unit":"node --import tsx/esm --test tests/unit/*.test.mjs","test:plan3":"node --import tsx/esm --test tests/unit/plan3-p0.test.mjs","test:fixes":"node --import tsx/esm --test tests/unit/fixes-p1.test.mjs","test:security":"node --import tsx/esm --test tests/unit/security-fase01.test.mjs","check:cycles":"node scripts/check-cycles.mjs","check:route-validation:t06":"node scripts/check-route-validation.mjs","check:any-budget:t11":"node scripts/check-t11-any-budget.mjs","check:docs-sync":"node scripts/check-docs-sync.mjs","typecheck:core":"tsc --pretty false -p tsconfig.typecheck-core.json","typecheck:noimplicit:core":"tsc --pretty false -p tsconfig.typecheck-noimplicit-core.json","test:integration":"node --import tsx/esm --test tests/integration/*.test.mjs","test:e2e":"node scripts/run-playwright-tests.mjs test tests/e2e/*.spec.ts","test:protocols:e2e":"node scripts/run-protocol-clients-tests.mjs","test:vitest":"vitest run open-sse/mcp-server/__tests__/*.test.ts open-sse/services/autoCombo/__tests__/*.test.ts","test:ecosystem":"node scripts/run-ecosystem-tests.mjs","test:coverage":"npx c8 --exclude=open-sse --check-coverage --lines 50 --functions 50 --branches 50 node --import tsx/esm --test tests/unit/*.test.mjs","test:all":"npm run test:unit && npm run test:vitest && npm run test:ecosystem && npm run test:e2e",check:"npm run lint && npm run test",prepublishOnly:"npm run build:cli",postinstall:"node scripts/postinstall.mjs",prepare:"husky","system-info":"node scripts/system-info.mjs"},dependencies:{"@lobehub/icons":"^5.0.1","@modelcontextprotocol/sdk":"^1.27.1","@monaco-editor/react":"^4.7.0","@swc/helpers":"0.5.19",bcryptjs:"^3.0.3","better-sqlite3":"^12.6.2",bottleneck:"^2.19.5",dompurify:"^3.3.2",express:"^5.2.1","fetch-socks":"^1.3.2","http-proxy-middleware":"^3.0.5","https-proxy-agent":"^8.0.0",jose:"^6.1.3",keytar:"^7.9.0",lowdb:"^7.0.1","monaco-editor":"^0.55.1",next:"^16.0.10","next-intl":"^4.8.3","node-machine-id":"^1.1.12",open:"^11.0.0",ora:"^9.1.0",pino:"^10.3.1","pino-pretty":"^13.1.3",react:"19.2.4","react-dom":"19.2.4",recharts:"^3.7.0",selfsigned:"^5.5.0",tsx:"^4.21.0",undici:"^7.19.2",uuid:"^13.0.0","wreq-js":"^2.0.1",zod:"^4.3.6",zustand:"^5.0.10"},devDependencies:{"@playwright/test":"^1.58.2","@tailwindcss/postcss":"^4.1.18","@types/bcryptjs":"^3.0.0","@types/better-sqlite3":"^7.6.13","@types/keytar":"^4.4.0","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3",concurrently:"^9.2.1","cross-env":"^10.1.0",eslint:"^9.39.2","eslint-config-next":"^16.0.10",husky:"^9.1.7","lint-staged":"^16.2.7",prettier:"^3.8.1",tailwindcss:"^4",typescript:"^5.9.3","typescript-eslint":"^8.56.0",vitest:"^4.0.18","wait-on":"^9.0.4"},"lint-staged":{"*.{js,jsx,ts,tsx,mjs}":["prettier --write","eslint --fix --no-error-on-unmatched-pattern"],"*.{json,md,yml,yaml,css}":["prettier --write"]},pnpm:{onlyBuiltDependencies:["@parcel/watcher","@swc/core","better-sqlite3","esbuild","omniroute","sharp"]},overrides:{dompurify:"^3.3.2"}})},588788,a=>{"use strict";var b=a.i(32886),c=a.i(187924);function d({locale:a,...d}){if(!a)throw Error(void 0);return(0,c.jsx)(b.IntlProvider,{locale:a,...d})}a.s(["default",()=>d])}];
1
+ module.exports=[918622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},446786,(a,b,c)=>{b.exports=a.x("os",()=>require("os"))},677850,a=>a.a(async(b,c)=>{try{let b=await a.y("zod");a.n(b),c()}catch(a){c(a)}},!0),342602,(a,b,c)=>{"use strict";b.exports=a.r(918622)},187924,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored["react-ssr"].ReactJsxRuntime},572131,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored["react-ssr"].React},804730,a=>{a.v({name:"omniroute",version:"3.0.1",description:"Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.",type:"module",bin:{omniroute:"bin/omniroute.mjs","omniroute-reset-password":"bin/reset-password.mjs"},files:["bin/","app/","open-sse/mcp-server/","src/shared/contracts/","scripts/postinstall.mjs","scripts/native-binary-compat.mjs","README.md","LICENSE"],workspaces:["open-sse"],engines:{node:">=18.0.0 <24.0.0"},keywords:["ai","router","proxy","openai","claude","anthropic","gemini","fallback","cursor","cline","codex","llm","auto-fallback"],license:"MIT",author:"diegosouzapw",repository:{type:"git",url:"https://github.com/diegosouzapw/OmniRoute"},homepage:"https://omniroute.online",scripts:{dev:"node scripts/run-next.mjs dev",build:"node scripts/build-next-isolated.mjs","build:cli":"node scripts/prepublish.mjs",start:"node scripts/run-next.mjs start",lint:"eslint .","electron:dev":'concurrently "npm run dev" "wait-on http://localhost:20128 && cd electron && npm run dev"',"electron:build":"npm run build && cd electron && npm run build","electron:build:win":"npm run build && cd electron && npm run build:win","electron:build:mac":"npm run build && cd electron && npm run build:mac","electron:build:linux":"npm run build && cd electron && npm run build:linux",test:"node --import tsx/esm --test tests/unit/*.test.mjs","test:unit":"node --import tsx/esm --test tests/unit/*.test.mjs","test:plan3":"node --import tsx/esm --test tests/unit/plan3-p0.test.mjs","test:fixes":"node --import tsx/esm --test tests/unit/fixes-p1.test.mjs","test:security":"node --import tsx/esm --test tests/unit/security-fase01.test.mjs","check:cycles":"node scripts/check-cycles.mjs","check:route-validation:t06":"node scripts/check-route-validation.mjs","check:any-budget:t11":"node scripts/check-t11-any-budget.mjs","check:docs-sync":"node scripts/check-docs-sync.mjs","typecheck:core":"tsc --pretty false -p tsconfig.typecheck-core.json","typecheck:noimplicit:core":"tsc --pretty false -p tsconfig.typecheck-noimplicit-core.json","test:integration":"node --import tsx/esm --test tests/integration/*.test.mjs","test:e2e":"node scripts/run-playwright-tests.mjs test tests/e2e/*.spec.ts","test:protocols:e2e":"node scripts/run-protocol-clients-tests.mjs","test:vitest":"vitest run open-sse/mcp-server/__tests__/*.test.ts open-sse/services/autoCombo/__tests__/*.test.ts","test:ecosystem":"node scripts/run-ecosystem-tests.mjs","test:coverage":"npx c8 --exclude=open-sse --check-coverage --lines 50 --functions 50 --branches 50 node --import tsx/esm --test tests/unit/*.test.mjs","test:all":"npm run test:unit && npm run test:vitest && npm run test:ecosystem && npm run test:e2e",check:"npm run lint && npm run test",prepublishOnly:"npm run build:cli",postinstall:"node scripts/postinstall.mjs",prepare:"husky","system-info":"node scripts/system-info.mjs"},dependencies:{"@lobehub/icons":"^5.0.1","@modelcontextprotocol/sdk":"^1.27.1","@monaco-editor/react":"^4.7.0","@swc/helpers":"0.5.19",bcryptjs:"^3.0.3","better-sqlite3":"^12.6.2",bottleneck:"^2.19.5",dompurify:"^3.3.2",express:"^5.2.1","fetch-socks":"^1.3.2","http-proxy-middleware":"^3.0.5","https-proxy-agent":"^8.0.0",jose:"^6.1.3",keytar:"^7.9.0",lowdb:"^7.0.1","monaco-editor":"^0.55.1",next:"^16.0.10","next-intl":"^4.8.3","node-machine-id":"^1.1.12",open:"^11.0.0",ora:"^9.1.0",pino:"^10.3.1","pino-pretty":"^13.1.3",react:"19.2.4","react-dom":"19.2.4",recharts:"^3.7.0",selfsigned:"^5.5.0",tsx:"^4.21.0",undici:"^7.19.2",uuid:"^13.0.0","wreq-js":"^2.0.1",zod:"^4.3.6",zustand:"^5.0.10"},devDependencies:{"@playwright/test":"^1.58.2","@tailwindcss/postcss":"^4.1.18","@types/bcryptjs":"^3.0.0","@types/better-sqlite3":"^7.6.13","@types/keytar":"^4.4.0","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3",concurrently:"^9.2.1","cross-env":"^10.1.0",eslint:"^9.39.2","eslint-config-next":"^16.0.10",husky:"^9.1.7","lint-staged":"^16.2.7",prettier:"^3.8.1",tailwindcss:"^4",typescript:"^5.9.3","typescript-eslint":"^8.56.0",vitest:"^4.0.18","wait-on":"^9.0.4"},"lint-staged":{"*.{js,jsx,ts,tsx,mjs}":["prettier --write","eslint --fix --no-error-on-unmatched-pattern"],"*.{json,md,yml,yaml,css}":["prettier --write"]},pnpm:{onlyBuiltDependencies:["@parcel/watcher","@swc/core","better-sqlite3","esbuild","omniroute","sharp"]},overrides:{dompurify:"^3.3.2"}})},588788,a=>{"use strict";var b=a.i(32886),c=a.i(187924);function d({locale:a,...d}){if(!a)throw Error(void 0);return(0,c.jsx)(b.IntlProvider,{locale:a,...d})}a.s(["default",()=>d])}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__9ef96d20._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[193695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},677850,a=>a.a(async(b,c)=>{try{let b=await a.y("zod");a.n(b),c()}catch(a){c(a)}},!0),804730,a=>{a.v({name:"omniroute",version:"3.0.0",description:"Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.",type:"module",bin:{omniroute:"bin/omniroute.mjs","omniroute-reset-password":"bin/reset-password.mjs"},files:["bin/","app/","open-sse/mcp-server/","src/shared/contracts/","scripts/postinstall.mjs","scripts/native-binary-compat.mjs","README.md","LICENSE"],workspaces:["open-sse"],engines:{node:">=18.0.0 <24.0.0"},keywords:["ai","router","proxy","openai","claude","anthropic","gemini","fallback","cursor","cline","codex","llm","auto-fallback"],license:"MIT",author:"diegosouzapw",repository:{type:"git",url:"https://github.com/diegosouzapw/OmniRoute"},homepage:"https://omniroute.online",scripts:{dev:"node scripts/run-next.mjs dev",build:"node scripts/build-next-isolated.mjs","build:cli":"node scripts/prepublish.mjs",start:"node scripts/run-next.mjs start",lint:"eslint .","electron:dev":'concurrently "npm run dev" "wait-on http://localhost:20128 && cd electron && npm run dev"',"electron:build":"npm run build && cd electron && npm run build","electron:build:win":"npm run build && cd electron && npm run build:win","electron:build:mac":"npm run build && cd electron && npm run build:mac","electron:build:linux":"npm run build && cd electron && npm run build:linux",test:"node --import tsx/esm --test tests/unit/*.test.mjs","test:unit":"node --import tsx/esm --test tests/unit/*.test.mjs","test:plan3":"node --import tsx/esm --test tests/unit/plan3-p0.test.mjs","test:fixes":"node --import tsx/esm --test tests/unit/fixes-p1.test.mjs","test:security":"node --import tsx/esm --test tests/unit/security-fase01.test.mjs","check:cycles":"node scripts/check-cycles.mjs","check:route-validation:t06":"node scripts/check-route-validation.mjs","check:any-budget:t11":"node scripts/check-t11-any-budget.mjs","check:docs-sync":"node scripts/check-docs-sync.mjs","typecheck:core":"tsc --pretty false -p tsconfig.typecheck-core.json","typecheck:noimplicit:core":"tsc --pretty false -p tsconfig.typecheck-noimplicit-core.json","test:integration":"node --import tsx/esm --test tests/integration/*.test.mjs","test:e2e":"node scripts/run-playwright-tests.mjs test tests/e2e/*.spec.ts","test:protocols:e2e":"node scripts/run-protocol-clients-tests.mjs","test:vitest":"vitest run open-sse/mcp-server/__tests__/*.test.ts open-sse/services/autoCombo/__tests__/*.test.ts","test:ecosystem":"node scripts/run-ecosystem-tests.mjs","test:coverage":"npx c8 --exclude=open-sse --check-coverage --lines 50 --functions 50 --branches 50 node --import tsx/esm --test tests/unit/*.test.mjs","test:all":"npm run test:unit && npm run test:vitest && npm run test:ecosystem && npm run test:e2e",check:"npm run lint && npm run test",prepublishOnly:"npm run build:cli",postinstall:"node scripts/postinstall.mjs",prepare:"husky","system-info":"node scripts/system-info.mjs"},dependencies:{"@lobehub/icons":"^5.0.1","@modelcontextprotocol/sdk":"^1.27.1","@monaco-editor/react":"^4.7.0","@swc/helpers":"0.5.19",bcryptjs:"^3.0.3","better-sqlite3":"^12.6.2",bottleneck:"^2.19.5",dompurify:"^3.3.2",express:"^5.2.1","fetch-socks":"^1.3.2","http-proxy-middleware":"^3.0.5","https-proxy-agent":"^8.0.0",jose:"^6.1.3",keytar:"^7.9.0",lowdb:"^7.0.1","monaco-editor":"^0.55.1",next:"^16.0.10","next-intl":"^4.8.3","node-machine-id":"^1.1.12",open:"^11.0.0",ora:"^9.1.0",pino:"^10.3.1","pino-pretty":"^13.1.3",react:"19.2.4","react-dom":"19.2.4",recharts:"^3.7.0",selfsigned:"^5.5.0",tsx:"^4.21.0",undici:"^7.19.2",uuid:"^13.0.0","wreq-js":"^2.0.1",zod:"^4.3.6",zustand:"^5.0.10"},devDependencies:{"@playwright/test":"^1.58.2","@tailwindcss/postcss":"^4.1.18","@types/bcryptjs":"^3.0.0","@types/better-sqlite3":"^7.6.13","@types/keytar":"^4.4.0","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3",concurrently:"^9.2.1","cross-env":"^10.1.0",eslint:"^9.39.2","eslint-config-next":"^16.0.10",husky:"^9.1.7","lint-staged":"^16.2.7",prettier:"^3.8.1",tailwindcss:"^4",typescript:"^5.9.3","typescript-eslint":"^8.56.0",vitest:"^4.0.18","wait-on":"^9.0.4"},"lint-staged":{"*.{js,jsx,ts,tsx,mjs}":["prettier --write","eslint --fix --no-error-on-unmatched-pattern"],"*.{json,md,yml,yaml,css}":["prettier --write"]},pnpm:{onlyBuiltDependencies:["@parcel/watcher","@swc/core","better-sqlite3","esbuild","omniroute","sharp"]},overrides:{dompurify:"^3.3.2"}})},569264,a=>{a.n(a.i(354832))},650645,a=>{a.n(a.i(827572))},923576,a=>{a.n(a.i(104858))},825210,a=>{a.n(a.i(402747))},517537,a=>{a.n(a.i(903363))},13718,a=>{a.n(a.i(47967))},118198,a=>{a.n(a.i(545518))},296736,(a,b,c)=>{"use strict";function d(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(d=function(a){return a?c:b})(a)}c._=function(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=d(b);if(c&&c.has(a))return c.get(a);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a)if("default"!==g&&Object.prototype.hasOwnProperty.call(a,g)){var h=f?Object.getOwnPropertyDescriptor(a,g):null;h&&(h.get||h.set)?Object.defineProperty(e,g,h):e[g]=a[g]}return e.default=a,c&&c.set(a,e),e}},500790,(a,b,c)=>{let{createClientModuleProxy:d}=a.r(211857);a.n(d("[project]/node_modules/next/dist/client/app-dir/link.js <module evaluation>"))},784707,(a,b,c)=>{let{createClientModuleProxy:d}=a.r(211857);a.n(d("[project]/node_modules/next/dist/client/app-dir/link.js"))},297647,a=>{"use strict";a.i(500790);var b=a.i(784707);a.n(b)},395936,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={default:function(){return i},useLinkStatus:function(){return h.useLinkStatus}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(296736),g=a.r(907997),h=f._(a.r(297647));function i(a){let b=a.legacyBehavior,c="string"==typeof a.children||"number"==typeof a.children||"string"==typeof a.children?.type,d=a.children?.type?.$$typeof===Symbol.for("react.client.reference");return!b||c||d||(a.children?.type?.$$typeof===Symbol.for("react.lazy")?console.error("Using a Lazy Component as a direct child of `<Link legacyBehavior>` from a Server Component is not supported. If you need legacyBehavior, wrap your Lazy Component in a Client Component that renders the Link's `<a>` tag."):console.error("Using a Server Component as a direct child of `<Link legacyBehavior>` is not supported. If you need legacyBehavior, wrap your Server Component in a Client Component that renders the Link's `<a>` tag.")),(0,g.jsx)(h.default,{...a})}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},330878,a=>{"use strict";var b=a.i(800717),c=a.i(118845),d=a.i(40953),e=(0,b.cache)(function(a,b){return function({_cache:a=(0,c.b)(),_formatters:b=(0,c.c)(a),getMessageFallback:e=d.d,messages:f,namespace:g,onError:h=d.b,...i}){return function({messages:a,namespace:b,...c},e){return a=a["!"],b=(0,d.r)(b,"!"),(0,d.a)({...c,messages:a,namespace:b})}({...i,onError:h,cache:a,formatters:b,getMessageFallback:e,messages:{"!":f},namespace:g?`!.${g}`:"!"},0)}({...a,namespace:b})});a.s(["default",()=>e],330878)},442979,a=>{"use strict";var b=a.i(330878),c=a.i(767228),d=a.i(800717)["use".trim()];function e(...[a]){let f=function(a){var b=(0,c.default)();try{return d(b)}catch(b){throw b instanceof TypeError&&b.message.includes("Cannot read properties of null (reading 'use')")?Error(`\`${a}\` is not callable within an async component. Please refer to https://next-intl.dev/docs/environments/server-client-components#async-components`,{cause:b}):b}}("useTranslations");return(0,b.default)(f,a)}a.s(["useTranslations",()=>e],442979)}];
1
+ module.exports=[193695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},677850,a=>a.a(async(b,c)=>{try{let b=await a.y("zod");a.n(b),c()}catch(a){c(a)}},!0),804730,a=>{a.v({name:"omniroute",version:"3.0.1",description:"Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.",type:"module",bin:{omniroute:"bin/omniroute.mjs","omniroute-reset-password":"bin/reset-password.mjs"},files:["bin/","app/","open-sse/mcp-server/","src/shared/contracts/","scripts/postinstall.mjs","scripts/native-binary-compat.mjs","README.md","LICENSE"],workspaces:["open-sse"],engines:{node:">=18.0.0 <24.0.0"},keywords:["ai","router","proxy","openai","claude","anthropic","gemini","fallback","cursor","cline","codex","llm","auto-fallback"],license:"MIT",author:"diegosouzapw",repository:{type:"git",url:"https://github.com/diegosouzapw/OmniRoute"},homepage:"https://omniroute.online",scripts:{dev:"node scripts/run-next.mjs dev",build:"node scripts/build-next-isolated.mjs","build:cli":"node scripts/prepublish.mjs",start:"node scripts/run-next.mjs start",lint:"eslint .","electron:dev":'concurrently "npm run dev" "wait-on http://localhost:20128 && cd electron && npm run dev"',"electron:build":"npm run build && cd electron && npm run build","electron:build:win":"npm run build && cd electron && npm run build:win","electron:build:mac":"npm run build && cd electron && npm run build:mac","electron:build:linux":"npm run build && cd electron && npm run build:linux",test:"node --import tsx/esm --test tests/unit/*.test.mjs","test:unit":"node --import tsx/esm --test tests/unit/*.test.mjs","test:plan3":"node --import tsx/esm --test tests/unit/plan3-p0.test.mjs","test:fixes":"node --import tsx/esm --test tests/unit/fixes-p1.test.mjs","test:security":"node --import tsx/esm --test tests/unit/security-fase01.test.mjs","check:cycles":"node scripts/check-cycles.mjs","check:route-validation:t06":"node scripts/check-route-validation.mjs","check:any-budget:t11":"node scripts/check-t11-any-budget.mjs","check:docs-sync":"node scripts/check-docs-sync.mjs","typecheck:core":"tsc --pretty false -p tsconfig.typecheck-core.json","typecheck:noimplicit:core":"tsc --pretty false -p tsconfig.typecheck-noimplicit-core.json","test:integration":"node --import tsx/esm --test tests/integration/*.test.mjs","test:e2e":"node scripts/run-playwright-tests.mjs test tests/e2e/*.spec.ts","test:protocols:e2e":"node scripts/run-protocol-clients-tests.mjs","test:vitest":"vitest run open-sse/mcp-server/__tests__/*.test.ts open-sse/services/autoCombo/__tests__/*.test.ts","test:ecosystem":"node scripts/run-ecosystem-tests.mjs","test:coverage":"npx c8 --exclude=open-sse --check-coverage --lines 50 --functions 50 --branches 50 node --import tsx/esm --test tests/unit/*.test.mjs","test:all":"npm run test:unit && npm run test:vitest && npm run test:ecosystem && npm run test:e2e",check:"npm run lint && npm run test",prepublishOnly:"npm run build:cli",postinstall:"node scripts/postinstall.mjs",prepare:"husky","system-info":"node scripts/system-info.mjs"},dependencies:{"@lobehub/icons":"^5.0.1","@modelcontextprotocol/sdk":"^1.27.1","@monaco-editor/react":"^4.7.0","@swc/helpers":"0.5.19",bcryptjs:"^3.0.3","better-sqlite3":"^12.6.2",bottleneck:"^2.19.5",dompurify:"^3.3.2",express:"^5.2.1","fetch-socks":"^1.3.2","http-proxy-middleware":"^3.0.5","https-proxy-agent":"^8.0.0",jose:"^6.1.3",keytar:"^7.9.0",lowdb:"^7.0.1","monaco-editor":"^0.55.1",next:"^16.0.10","next-intl":"^4.8.3","node-machine-id":"^1.1.12",open:"^11.0.0",ora:"^9.1.0",pino:"^10.3.1","pino-pretty":"^13.1.3",react:"19.2.4","react-dom":"19.2.4",recharts:"^3.7.0",selfsigned:"^5.5.0",tsx:"^4.21.0",undici:"^7.19.2",uuid:"^13.0.0","wreq-js":"^2.0.1",zod:"^4.3.6",zustand:"^5.0.10"},devDependencies:{"@playwright/test":"^1.58.2","@tailwindcss/postcss":"^4.1.18","@types/bcryptjs":"^3.0.0","@types/better-sqlite3":"^7.6.13","@types/keytar":"^4.4.0","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3",concurrently:"^9.2.1","cross-env":"^10.1.0",eslint:"^9.39.2","eslint-config-next":"^16.0.10",husky:"^9.1.7","lint-staged":"^16.2.7",prettier:"^3.8.1",tailwindcss:"^4",typescript:"^5.9.3","typescript-eslint":"^8.56.0",vitest:"^4.0.18","wait-on":"^9.0.4"},"lint-staged":{"*.{js,jsx,ts,tsx,mjs}":["prettier --write","eslint --fix --no-error-on-unmatched-pattern"],"*.{json,md,yml,yaml,css}":["prettier --write"]},pnpm:{onlyBuiltDependencies:["@parcel/watcher","@swc/core","better-sqlite3","esbuild","omniroute","sharp"]},overrides:{dompurify:"^3.3.2"}})},569264,a=>{a.n(a.i(354832))},650645,a=>{a.n(a.i(827572))},923576,a=>{a.n(a.i(104858))},825210,a=>{a.n(a.i(402747))},517537,a=>{a.n(a.i(903363))},13718,a=>{a.n(a.i(47967))},118198,a=>{a.n(a.i(545518))},296736,(a,b,c)=>{"use strict";function d(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(d=function(a){return a?c:b})(a)}c._=function(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=d(b);if(c&&c.has(a))return c.get(a);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a)if("default"!==g&&Object.prototype.hasOwnProperty.call(a,g)){var h=f?Object.getOwnPropertyDescriptor(a,g):null;h&&(h.get||h.set)?Object.defineProperty(e,g,h):e[g]=a[g]}return e.default=a,c&&c.set(a,e),e}},500790,(a,b,c)=>{let{createClientModuleProxy:d}=a.r(211857);a.n(d("[project]/node_modules/next/dist/client/app-dir/link.js <module evaluation>"))},784707,(a,b,c)=>{let{createClientModuleProxy:d}=a.r(211857);a.n(d("[project]/node_modules/next/dist/client/app-dir/link.js"))},297647,a=>{"use strict";a.i(500790);var b=a.i(784707);a.n(b)},395936,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={default:function(){return i},useLinkStatus:function(){return h.useLinkStatus}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(296736),g=a.r(907997),h=f._(a.r(297647));function i(a){let b=a.legacyBehavior,c="string"==typeof a.children||"number"==typeof a.children||"string"==typeof a.children?.type,d=a.children?.type?.$$typeof===Symbol.for("react.client.reference");return!b||c||d||(a.children?.type?.$$typeof===Symbol.for("react.lazy")?console.error("Using a Lazy Component as a direct child of `<Link legacyBehavior>` from a Server Component is not supported. If you need legacyBehavior, wrap your Lazy Component in a Client Component that renders the Link's `<a>` tag."):console.error("Using a Server Component as a direct child of `<Link legacyBehavior>` is not supported. If you need legacyBehavior, wrap your Server Component in a Client Component that renders the Link's `<a>` tag.")),(0,g.jsx)(h.default,{...a})}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},330878,a=>{"use strict";var b=a.i(800717),c=a.i(118845),d=a.i(40953),e=(0,b.cache)(function(a,b){return function({_cache:a=(0,c.b)(),_formatters:b=(0,c.c)(a),getMessageFallback:e=d.d,messages:f,namespace:g,onError:h=d.b,...i}){return function({messages:a,namespace:b,...c},e){return a=a["!"],b=(0,d.r)(b,"!"),(0,d.a)({...c,messages:a,namespace:b})}({...i,onError:h,cache:a,formatters:b,getMessageFallback:e,messages:{"!":f},namespace:g?`!.${g}`:"!"},0)}({...a,namespace:b})});a.s(["default",()=>e],330878)},442979,a=>{"use strict";var b=a.i(330878),c=a.i(767228),d=a.i(800717)["use".trim()];function e(...[a]){let f=function(a){var b=(0,c.default)();try{return d(b)}catch(b){throw b instanceof TypeError&&b.message.includes("Cannot read properties of null (reading 'use')")?Error(`\`${a}\` is not callable within an async component. Please refer to https://next-intl.dev/docs/environments/server-client-components#async-components`,{cause:b}):b}}("useTranslations");return(0,b.default)(f,a)}a.s(["useTranslations",()=>e],442979)}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__a6942102._.js.map