omniroute 3.0.5 → 3.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/build-manifest.json +2 -2
  3. package/app/.next/prerender-manifest.json +3 -3
  4. package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
  5. package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
  6. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/search-tools/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
  32. package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
  34. package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
  35. package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
  36. package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/_global-error.html +2 -2
  40. package/app/.next/server/app/_global-error.rsc +1 -1
  41. package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  42. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  43. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  44. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  45. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  46. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  47. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  48. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  50. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
  54. package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
  58. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  59. package/app/.next/server/chunks/[root-of-the-server]__051203a6._.js +2 -2
  60. package/app/.next/server/chunks/[root-of-the-server]__0891af92._.js +1 -1
  61. package/app/.next/server/chunks/[root-of-the-server]__1f2b0d89._.js +1 -1
  62. package/app/.next/server/chunks/[root-of-the-server]__46e00e59._.js +1 -1
  63. package/app/.next/server/chunks/[root-of-the-server]__5dcab57b._.js +2 -2
  64. package/app/.next/server/chunks/[root-of-the-server]__61d78f9d._.js +1 -1
  65. package/app/.next/server/chunks/[root-of-the-server]__6e52619e._.js +1 -1
  66. package/app/.next/server/chunks/[root-of-the-server]__7ace0fcd._.js +1 -1
  67. package/app/.next/server/chunks/[root-of-the-server]__7fa4d14e._.js +1 -1
  68. package/app/.next/server/chunks/_05c48915._.js +1 -1
  69. package/app/.next/server/chunks/_06515a8a._.js +1 -1
  70. package/app/.next/server/chunks/_2115d8de._.js +1 -1
  71. package/app/.next/server/chunks/_3ac953eb._.js +1 -1
  72. package/app/.next/server/chunks/_4b8fd853._.js +1 -1
  73. package/app/.next/server/chunks/_68683848._.js +1 -1
  74. package/app/.next/server/chunks/_ee9b677b._.js +1 -1
  75. package/app/.next/server/chunks/open-sse_config_providerModels_ts_04541468._.js +1 -1
  76. package/app/.next/server/chunks/open-sse_config_providerRegistry_ts_2f74ec2a._.js +1 -1
  77. package/app/.next/server/chunks/open-sse_config_providerRegistry_ts_dec0f840._.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/_19b3d5b1._.js +1 -1
  82. package/app/.next/server/chunks/ssr/open-sse_config_providerModels_ts_4cac55e2._.js +1 -1
  83. package/app/.next/server/chunks/ssr/src_app_(dashboard)_dashboard_playground_page_tsx_06c08266._.js +2 -2
  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/0e39e279bf7e4cd9.js +2 -0
  89. package/app/.next/static/chunks/{25a3e05da8e1a7ec.js → 339b27cecfee41d1.js} +1 -1
  90. package/app/.next/static/chunks/{37063ea02716537b.js → 98a065e472ead1c5.js} +1 -1
  91. package/app/.next/static/chunks/{b7c366e286771d50.js → f62c550263d8bca8.js} +1 -1
  92. package/app/CHANGELOG.md +18 -0
  93. package/app/docs/openapi.yaml +1 -1
  94. package/app/open-sse/config/providerRegistry.ts +1 -4
  95. package/app/package-lock.json +2 -2
  96. package/app/package.json +1 -1
  97. package/app/src/app/(dashboard)/dashboard/playground/page.tsx +79 -4
  98. package/app/src/app/(dashboard)/dashboard/settings/components/ProxyRegistryManager.tsx +7 -7
  99. package/app/src/app/api/usage/[connectionId]/route.ts +42 -23
  100. package/app/src/lib/providers/validation.ts +1 -1
  101. package/app/tests/integration/v1-contracts-behavior.test.mjs +8 -6
  102. package/package.json +1 -1
  103. package/app/.next/static/chunks/f3640b442f6de1d4.js +0 -2
  104. /package/app/.next/static/{_Ub91T2wbB96WfkKKwhDH → 4vzx2qUM_tiJPdpx_Hiqj}/_buildManifest.js +0 -0
  105. /package/app/.next/static/{_Ub91T2wbB96WfkKKwhDH → 4vzx2qUM_tiJPdpx_Hiqj}/_clientMiddlewareManifest.json +0 -0
  106. /package/app/.next/static/{_Ub91T2wbB96WfkKKwhDH → 4vzx2qUM_tiJPdpx_Hiqj}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
1
  module.exports=[446786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},522734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},918622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},324725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},270406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},193695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},442315,(e,t,r)=>{"use strict";t.exports=e.r(918622)},347540,(e,t,r)=>{"use strict";t.exports=e.r(442315).vendored["react-rsc"].React},819481,(e,t,r)=>{"use strict";var n=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,s=Object.prototype.hasOwnProperty,i={},l={RequestCookies:()=>h,ResponseCookies:()=>g,parseCookie:()=>c,parseSetCookie:()=>p,stringifyCookie:()=>d};for(var u in l)n(i,u,{get:l[u],enumerable:!0});function d(e){var t;let r=["path"in e&&e.path&&`Path=${e.path}`,"expires"in e&&(e.expires||0===e.expires)&&`Expires=${("number"==typeof e.expires?new Date(e.expires):e.expires).toUTCString()}`,"maxAge"in e&&"number"==typeof e.maxAge&&`Max-Age=${e.maxAge}`,"domain"in e&&e.domain&&`Domain=${e.domain}`,"secure"in e&&e.secure&&"Secure","httpOnly"in e&&e.httpOnly&&"HttpOnly","sameSite"in e&&e.sameSite&&`SameSite=${e.sameSite}`,"partitioned"in e&&e.partitioned&&"Partitioned","priority"in e&&e.priority&&`Priority=${e.priority}`].filter(Boolean),n=`${e.name}=${encodeURIComponent(null!=(t=e.value)?t:"")}`;return 0===r.length?n:`${n}; ${r.join("; ")}`}function c(e){let t=new Map;for(let r of e.split(/; */)){if(!r)continue;let e=r.indexOf("=");if(-1===e){t.set(r,"true");continue}let[n,a]=[r.slice(0,e),r.slice(e+1)];try{t.set(n,decodeURIComponent(null!=a?a:"true"))}catch{}}return t}function p(e){if(!e)return;let[[t,r],...n]=c(e),{domain:a,expires:o,httponly:s,maxage:i,path:l,samesite:u,secure:d,partitioned:p,priority:h}=Object.fromEntries(n.map(([e,t])=>[e.toLowerCase().replace(/-/g,""),t]));{var g,y,x={name:t,value:decodeURIComponent(r),domain:a,...o&&{expires:new Date(o)},...s&&{httpOnly:!0},..."string"==typeof i&&{maxAge:Number(i)},path:l,...u&&{sameSite:m.includes(g=(g=u).toLowerCase())?g:void 0},...d&&{secure:!0},...h&&{priority:f.includes(y=(y=h).toLowerCase())?y:void 0},...p&&{partitioned:!0}};let e={};for(let t in x)x[t]&&(e[t]=x[t]);return e}}t.exports=((e,t,r,i)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let r of o(t))s.call(e,r)||void 0===r||n(e,r,{get:()=>t[r],enumerable:!(i=a(t,r))||i.enumerable});return e})(n({},"__esModule",{value:!0}),i);var m=["strict","lax","none"],f=["low","medium","high"],h=class{constructor(e){this._parsed=new Map,this._headers=e;const t=e.get("cookie");if(t)for(const[e,r]of c(t))this._parsed.set(e,{name:e,value:r})}[Symbol.iterator](){return this._parsed[Symbol.iterator]()}get size(){return this._parsed.size}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed);if(!e.length)return r.map(([e,t])=>t);let n="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(([e])=>e===n).map(([e,t])=>t)}has(e){return this._parsed.has(e)}set(...e){let[t,r]=1===e.length?[e[0].name,e[0].value]:e,n=this._parsed;return n.set(t,{name:t,value:r}),this._headers.set("cookie",Array.from(n).map(([e,t])=>d(t)).join("; ")),this}delete(e){let t=this._parsed,r=Array.isArray(e)?e.map(e=>t.delete(e)):t.delete(e);return this._headers.set("cookie",Array.from(t).map(([e,t])=>d(t)).join("; ")),r}clear(){return this.delete(Array.from(this._parsed.keys())),this}[Symbol.for("edge-runtime.inspect.custom")](){return`RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(e=>`${e.name}=${encodeURIComponent(e.value)}`).join("; ")}},g=class{constructor(e){var t,r,n;this._parsed=new Map,this._headers=e;const a=null!=(n=null!=(r=null==(t=e.getSetCookie)?void 0:t.call(e))?r:e.get("set-cookie"))?n:[];for(const e of Array.isArray(a)?a:function(e){if(!e)return[];var t,r,n,a,o,s=[],i=0;function l(){for(;i<e.length&&/\s/.test(e.charAt(i));)i+=1;return i<e.length}for(;i<e.length;){for(t=i,o=!1;l();)if(","===(r=e.charAt(i))){for(n=i,i+=1,l(),a=i;i<e.length&&"="!==(r=e.charAt(i))&&";"!==r&&","!==r;)i+=1;i<e.length&&"="===e.charAt(i)?(o=!0,i=a,s.push(e.substring(t,n)),t=i):i=n+1}else i+=1;(!o||i>=e.length)&&s.push(e.substring(t,e.length))}return s}(a)){const t=p(e);t&&this._parsed.set(t.name,t)}}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed.values());if(!e.length)return r;let n="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(e=>e.name===n)}has(e){return this._parsed.has(e)}set(...e){let[t,r,n]=1===e.length?[e[0].name,e[0].value,e[0]]:e,a=this._parsed;return a.set(t,function(e={name:"",value:""}){return"number"==typeof e.expires&&(e.expires=new Date(e.expires)),e.maxAge&&(e.expires=new Date(Date.now()+1e3*e.maxAge)),(null===e.path||void 0===e.path)&&(e.path="/"),e}({name:t,value:r,...n})),function(e,t){for(let[,r]of(t.delete("set-cookie"),e)){let e=d(r);t.append("set-cookie",e)}}(a,this._headers),this}delete(...e){let[t,r]="string"==typeof e[0]?[e[0]]:[e[0].name,e[0]];return this.set({...r,name:t,value:"",expires:new Date(0)})}[Symbol.for("edge-runtime.inspect.custom")](){return`ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(d).join("; ")}}},233405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},924868,(e,t,r)=>{t.exports=e.x("fs/promises",()=>require("fs/promises"))},266240,e=>{"use strict";let t,r,n,a,o,s;var i=e.i(924868),l=e.i(522734),u=e.i(446786),d=e.i(814747),c=e.i(233405);let p=new Set(["auto","host","container"]),m=new Set(["0","false","no","off"]),f={claude:{defaultCommand:"claude",envBinKey:"CLI_CLAUDE_BIN",requiresBinary:!0,healthcheckTimeoutMs:4e3,paths:{settings:".claude/settings.json"}},codex:{defaultCommand:"codex",envBinKey:"CLI_CODEX_BIN",requiresBinary:!0,healthcheckTimeoutMs:4e3,paths:{config:".codex/config.toml",auth:".codex/auth.json"}},droid:{defaultCommand:"droid",envBinKey:"CLI_DROID_BIN",requiresBinary:!0,healthcheckTimeoutMs:8e3,paths:{settings:".factory/settings.json"}},openclaw:{defaultCommand:"openclaw",envBinKey:"CLI_OPENCLAW_BIN",requiresBinary:!0,healthcheckTimeoutMs:15e3,paths:{settings:".openclaw/openclaw.json"}},cursor:{defaultCommands:["agent","cursor"],envBinKey:"CLI_CURSOR_BIN",requiresBinary:!0,healthcheckTimeoutMs:15e3,paths:{config:".cursor/cli-config.json",auth:".config/cursor/auth.json",state:".cursor/agent-cli-state.json"}},cline:{defaultCommand:"cline",envBinKey:"CLI_CLINE_BIN",requiresBinary:!0,healthcheckTimeoutMs:12e3,paths:{globalState:".cline/data/globalState.json",secrets:".cline/data/secrets.json"}},kilo:{defaultCommand:"kilocode",envBinKey:"CLI_KILO_BIN",requiresBinary:!0,healthcheckTimeoutMs:15e3,paths:{auth:".local/share/kilo/auth.json"}},continue:{defaultCommand:null,envBinKey:"CLI_CONTINUE_BIN",requiresBinary:!1,healthcheckTimeoutMs:15e3,paths:{settings:".continue/config.json"}},opencode:{defaultCommand:"opencode",envBinKey:"CLI_OPENCODE_BIN",requiresBinary:!0,healthcheckTimeoutMs:15e3,paths:{config:".config/opencode/opencode.json"}}},h=(e,t,{env:r,timeoutMs:n=3e3}={})=>new Promise(a=>{let o="",s="",i=!1,l=!1,u=(0,c.spawn)(e,t,{env:r,stdio:["ignore","pipe","pipe"],..."win32"===process.platform?"TURBOPACK unreachable":{}}),d=setTimeout(()=>{i=!0,u.kill("SIGKILL")},n),p=e=>{l||(l=!0,clearTimeout(d),a(e))};u.stdout.on("data",e=>{o+=e.toString()}),u.stderr.on("data",e=>{s+=e.toString()}),u.on("error",e=>{p({ok:!1,code:null,stdout:o.trim(),stderr:s.trim(),timedOut:i,error:e?.message||"spawn_error"})}),u.on("close",e=>{p({ok:!i&&0===e,code:e,stdout:o.trim(),stderr:s.trim(),timedOut:i,error:i?"timeout":null})})}),g=["&","|",";","<",">","(",")","`","$","^","%","!"],y=(e,t)=>{let r=e=>d.default.normalize(e).toLowerCase().replace(/\\/g,"/"),n=r(e),a=r(t);if(n===a)return!0;let o=a.endsWith("/")?a:a+"/";return n.startsWith(o)},x=e=>!(!e||!d.default.isAbsolute(e)||g.some(t=>e.includes(t))),v=(e,t)=>{if(!e)return"";let r=e.trim();if(!d.default.isAbsolute(r)||g.some(e=>r.includes(e)))return"";let n=d.default.normalize(r);return n.includes("..")||t.length>0&&!t.some(e=>y(n,e))?"":n},C=()=>{if(void 0!==t)return t;let e=String(process.env.npm_config_prefix||"").trim();if(e&&d.default.isAbsolute(e))return t=e;try{let e=(0,c.execFileSync)("npm",["config","get","prefix"],{timeout:5e3,encoding:"utf8",stdio:["ignore","pipe","ignore"],..."win32"===process.platform?"TURBOPACK unreachable":{}}).trim();if(e&&d.default.isAbsolute(e)&&!g.some(t=>e.includes(t)))return t=e}catch{}return t=""},_=(r=u.default.homedir(),n=process.env.USERPROFILE||r,a=v(process.env.APPDATA,[r,n]),o=v(process.env.LOCALAPPDATA,[d.default.join(r,"AppData","Local"),d.default.join(n,"AppData","Local"),n]),s=v(process.env.ProgramFiles,["C:\\Program Files","C:\\Program Files (x86)"]),[r,n,a,o,s,v(process.env["ProgramFiles(x86)"],["C:\\Program Files","C:\\Program Files (x86)"]),C()].filter(Boolean)),b=async e=>{if(!x(e))return{installed:!1,commandPath:null,reason:"unsafe_path"};try{await i.default.access(e,i.default.constants.F_OK)}catch{return{installed:!1,commandPath:null,reason:"not_found"}}try{return await i.default.access(e,i.default.constants.X_OK),{installed:!0,commandPath:e,reason:null}}catch{return{installed:!0,commandPath:e,reason:"not_executable"}}},P=async(e,t)=>{if(!e)return{installed:!1,commandPath:null,reason:"missing_command"};if(e.includes("/")||e.includes("\\"))return b(e);process.platform;let r=await h("sh",["-c",'command -v -- "$1"',"sh",e],{env:t,timeoutMs:3e3});if(!r.ok||!r.stdout)return{installed:!1,commandPath:null,reason:"not_found"};let n=r.stdout.split(/\r?\n/).map(e=>(e=>{if(!e||"win32"!==process.platform)return e})(e.trim())).find(Boolean)||null;return{installed:!!n,commandPath:n,reason:n?null:"not_found"}},w=async e=>{if(!d.default.isAbsolute(e))return{installed:!1,commandPath:null,reason:"not_absolute"};if(!x(e))return{installed:!1,commandPath:null,reason:"unsafe_path"};try{let t=await i.default.realpath(e);if(!_.some(e=>y(t,e)))return{installed:!1,commandPath:null,reason:"symlink_escape"};let r=await i.default.stat(t);if(!r.isFile())return{installed:!1,commandPath:null,reason:"not_file"};if(r.size<30||r.size>0x6400000)return{installed:!1,commandPath:null,reason:"suspicious_size"}}catch(t){let e=t.code;if("ENOENT"===e)return{installed:!1,commandPath:null,reason:"not_found"};if("EINVAL"===e)return{installed:!1,commandPath:null,reason:"invalid_path"};return{installed:!1,commandPath:null,reason:"access_error"}}try{return await i.default.access(e,i.default.constants.X_OK),{installed:!0,commandPath:e,reason:null}}catch{return{installed:!0,commandPath:e,reason:"not_executable"}}},R=async(e,t,r)=>{if(!Array.isArray(e)||0===e.length)return{command:null,installed:!1,commandPath:null,reason:"missing_command"};if(r)for(let t of(e=>{let t=u.default.homedir(),r=[],n=C();if(process.execPath.toLowerCase().includes("nvm")&&d.default.dirname(process.execPath),"win32"===process.platform);else for(let[,a]of({claude:[["claude.cmd","claude"],["claude.exe","claude"]],codex:[["codex.cmd","codex"]],droid:[["droid.cmd","droid"]],openclaw:[["openclaw.cmd","openclaw"]],cursor:[["agent.cmd","agent"],["cursor.cmd","cursor"]],cline:[["cline.cmd","cline"]],kilo:[["kilocode.cmd","kilocode"]],opencode:[["opencode.cmd","opencode"]]})[e]||[]){let o=d.default.dirname(process.execPath);r.push(d.default.join(o,a)),n&&r.push(d.default.join(n,"bin",a)),r.push(d.default.join(t,".local","bin",a)),l.default.existsSync("/usr/local/bin")&&r.push(d.default.join("/usr","local","bin",a)),l.default.existsSync("/usr/bin")&&r.push(d.default.join("/usr","bin",a)),"opencode"===e&&r.push(d.default.join(t,".opencode","bin",a)),"claude"===e&&r.push(d.default.join(t,".claude","bin",a))}return r})(r)){let r=await w(t);if(r.installed&&null===r.reason)return{command:e[0],installed:!0,commandPath:r.commandPath,reason:null}}for(let r of e){let e=await P(r,t);if(e.installed||"not_found"!==e.reason)return{command:r,...e}}return{command:e[0],installed:!1,commandPath:null,reason:"not_found"}},A=async(e,t,r=4e3)=>{let n={PATH:t.PATH,HOME:t.HOME||t.USERPROFILE,SystemRoot:t.SystemRoot,PATHEXT:t.PATHEXT};for(let t of[["--version"],["-v"]]){let a=await h(e,t,{env:n,timeoutMs:r});if(a.ok&&a.stdout.length>0&&a.stdout.length<4096)return{runnable:!0,reason:null,version:a.stdout.trim()}}return{runnable:!1,reason:"healthcheck_failed"}},O=()=>((e=process.platform,t=process.env,r=u.default.homedir())=>d.default.join(((e=process.platform,t=process.env,r=u.default.homedir())=>"win32"===e?String(t.APPDATA||"").trim()||d.default.join(r,"AppData","Roaming"):String(t.XDG_CONFIG_HOME||"").trim()||d.default.join(r,".config"))(e,t,r),"opencode","opencode.json"))(),E=e=>{let t=f[e];if(!t)return null;if("opencode"===e)return{config:O()};let r=(()=>{let e=String(process.env.CLI_CONFIG_HOME||"").trim();if(!e||!d.default.isAbsolute(e)||g.some(t=>e.includes(t))||d.default.normalize(e).includes(".."))return u.default.homedir();let t=u.default.homedir(),r=d.default.normalize(e);return y(r,t)?r:t})();return Object.fromEntries(Object.entries(t.paths).map(([e,t])=>[e,d.default.join(r,t)]))},S=async e=>{let t,r,n,a=f[e],o=(t=String(process.env.CLI_MODE||"auto").trim().toLowerCase(),p.has(t)?t:"auto");if(!a)return{installed:!1,runnable:!1,command:null,commandPath:null,reason:"unknown_tool",runtimeMode:o,requiresBinary:!1};let s=(r={...process.env},(n=String(process.env.CLI_EXTRA_PATHS||"").split(d.default.delimiter).map(e=>e.trim()).filter(Boolean).filter(e=>!(!d.default.isAbsolute(e)||g.some(t=>e.includes(t))||d.default.normalize(e).includes("..")))).length>0&&(r.PATH=[...n,r.PATH||""].filter(Boolean).join(d.default.delimiter)),r),i=(e=>{let t=f[e];if(!t)return[];let r=String(process.env[t.envBinKey]||"").trim();return r?[r]:Array.isArray(t.defaultCommands)&&t.defaultCommands.length>0?t.defaultCommands.filter(Boolean):t.defaultCommand?[t.defaultCommand]:[]})(e),l=!1!==a.requiresBinary;if(!l&&0===i.length)return{installed:!0,runnable:!0,command:null,commandPath:null,reason:"not_required",runtimeMode:o,requiresBinary:l};let u=await R(i,s,e),c=u.command;if(!u.installed)return{installed:!1,runnable:!1,command:c,commandPath:null,reason:u.reason||"not_found",runtimeMode:o,requiresBinary:l};if("not_executable"===u.reason)return{installed:!0,runnable:!1,command:c,commandPath:u.commandPath,reason:"not_executable",runtimeMode:o,requiresBinary:l};let m=await A(u.commandPath,s,Number(a.healthcheckTimeoutMs||4e3));return{installed:!0,runnable:m.runnable,command:c,commandPath:u.commandPath,reason:m.reason,runtimeMode:o,requiresBinary:l}},I=Object.keys(f);e.s(["CLI_TOOL_IDS",0,I,"ensureCliConfigWriteAllowed",0,()=>((e,t=!0)=>null==e||""===e?t:!m.has(String(e).trim().toLowerCase()))(process.env.CLI_ALLOW_CONFIG_WRITES,!0)?null:"CLI config writes are disabled (CLI_ALLOW_CONFIG_WRITES=false)","getCliConfigPaths",0,E,"getCliPrimaryConfigPath",0,e=>{let t=E(e);if(!t)return null;let r=Object.keys(t)[0];return r?t[r]:null},"getCliRuntimeStatus",0,S,"getOpenCodeConfigPath",0,O])},997953,(e,t,r)=>{"use strict";t.exports=e.r(442315).vendored["react-rsc"].ReactServerDOMTurbopackServer},745015,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"registerServerReference",{enumerable:!0,get:function(){return n.registerServerReference}});let n=e.r(997953)},195975,(e,t,r)=>{"use strict";function n(e){for(let t=0;t<e.length;t++){let r=e[t];if("function"!=typeof r)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof r}.
2
- Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ensureServerEntryExports",{enumerable:!0,get:function(){return n}})},653870,e=>{"use strict";var t=e.i(747909),r=e.i(174017),n=e.i(996250),a=e.i(759756),o=e.i(561916),s=e.i(174677),i=e.i(869741),l=e.i(316795),u=e.i(487718),d=e.i(995169),c=e.i(47587),p=e.i(666012),m=e.i(570101),f=e.i(626937),h=e.i(10372),g=e.i(193695);e.i(52474);var y=e.i(600220),x=e.i(745015),v=e.i(89171),C=e.i(266240);async function _(e,{params:t}){try{let{toolId:e}=await t,r=String(e||"").trim().toLowerCase();if(!C.CLI_TOOL_IDS.includes(r))return v.NextResponse.json({error:"Unsupported CLI tool"},{status:404});let n=await (0,C.getCliRuntimeStatus)(r);return v.NextResponse.json({...n,toolId:r,configPath:(0,C.getCliPrimaryConfigPath)(r),message:"not_required"===n.reason?"This integration is guide-based and does not require a local CLI binary":n.installed&&n.runnable?"CLI detected and runnable":n.installed?"CLI detected but not runnable":"CLI not detected"})}catch(e){return console.log("Error checking CLI runtime:",e),v.NextResponse.json({error:"Failed to check CLI runtime"},{status:500})}}(0,e.i(195975).ensureServerEntryExports)([_]),(0,x.registerServerReference)(_,"604d15c9136e6506587f6f30fc2101ac1810dea6b3",null),e.s(["GET",()=>_],735115);var b=e.i(735115);let P=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/cli-tools/runtime/[toolId]/route",pathname:"/api/cli-tools/runtime/[toolId]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/cli-tools/runtime/[toolId]/route.ts",nextConfigOutput:"standalone",userland:b}),{workAsyncStorage:w,workUnitAsyncStorage:R,serverHooks:A}=P;function O(){return(0,n.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:R})}async function E(e,t,n){P.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let x="/api/cli-tools/runtime/[toolId]/route";x=x.replace(/\/index$/,"")||"/";let v=await P.prepare(e,t,{srcPage:x,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:C,params:_,nextConfig:b,parsedUrl:w,isDraftMode:R,prerenderManifest:A,routerServerContext:O,isOnDemandRevalidate:E,revalidateOnlyGenerated:S,resolvedPathname:I,clientReferenceManifest:j,serverActionsManifest:k}=v,T=(0,i.normalizeAppPath)(x),L=!!(A.dynamicRoutes[T]||A.routes[I]),N=async()=>((null==O?void 0:O.render404)?await O.render404(e,t,w,!1):t.end("This page could not be found"),null);if(L&&!R){let e=!!A.routes[I],t=A.dynamicRoutes[T];if(t&&!1===t.fallback&&!e){if(b.experimental.adapterPath)return await N();throw new g.NoFallbackError}}let B=null;!L||P.isDev||R||(B="/index"===(B=I)?"/":B);let q=!0===P.isDev||!L,D=L&&!q;k&&j&&(0,s.setManifestsSingleton)({page:x,clientReferenceManifest:j,serverActionsManifest:k});let M=e.method||"GET",H=(0,o.getTracer)(),U=H.getActiveScopeSpan(),$={params:_,prerenderManifest:A,renderOpts:{experimental:{authInterrupts:!!b.experimental.authInterrupts},cacheComponents:!!b.cacheComponents,supportsDynamicResponse:q,incrementalCache:(0,a.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:b.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>P.onRequestError(e,t,n,a,O)},sharedContext:{buildId:C}},K=new l.NodeNextRequest(e),F=new l.NodeNextResponse(t),z=u.NextRequestAdapter.fromNodeNextRequest(K,(0,u.signalFromNodeResponse)(t));try{let s=async e=>P.handle(z,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${M} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${M} ${x}`)}),i=!!(0,a.getRequestMeta)(e,"minimalMode"),l=async a=>{var o,l;let u=async({previousCacheEntry:r})=>{try{if(!i&&E&&S&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await s(a);e.fetchMetrics=$.renderOpts.fetchMetrics;let l=$.renderOpts.pendingWaitUntil;l&&n.waitUntil&&(n.waitUntil(l),l=void 0);let u=$.renderOpts.collectedTags;if(!L)return await (0,p.sendResponse)(K,F,o,$.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(o.headers);u&&(t[h.NEXT_CACHE_TAGS_HEADER]=u),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,n=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:$.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await P.onRequestError(e,t,{routerKind:"App Router",routePath:x,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:E})},!1,O),t}},d=await P.handleResponse({req:e,nextConfig:b,cacheKey:B,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:S,responseGenerator:u,waitUntil:n.waitUntil,isMinimalMode:i});if(!L)return null;if((null==d||null==(o=d.value)?void 0:o.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(l=d.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});i||t.setHeader("x-nextjs-cache",E?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),R&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let g=(0,m.fromNodeOutgoingHttpHeaders)(d.value.headers);return i&&L||g.delete(h.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||g.get("Cache-Control")||g.set("Cache-Control",(0,f.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(K,F,new Response(d.value.body,{headers:g,status:d.value.status||200})),null};U?await l(U):await H.withPropagatedContext(e.headers,()=>H.trace(d.BaseServerSpan.handleRequest,{spanName:`${M} ${x}`,kind:o.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},l))}catch(t){if(t instanceof g.NoFallbackError||await P.onRequestError(e,t,{routerKind:"App Router",routePath:T,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:E})},!1,O),L)throw t;return await (0,p.sendResponse)(K,F,new Response(null,{status:500})),null}}e.s(["handler",()=>E,"patchFetch",()=>O,"routeModule",()=>P,"serverHooks",()=>A,"workAsyncStorage",()=>w,"workUnitAsyncStorage",()=>R],653870)}];
2
+ Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ensureServerEntryExports",{enumerable:!0,get:function(){return n}})},653870,e=>{"use strict";var t=e.i(747909),r=e.i(174017),n=e.i(996250),a=e.i(759756),o=e.i(561916),s=e.i(174677),i=e.i(869741),l=e.i(316795),u=e.i(487718),d=e.i(995169),c=e.i(47587),p=e.i(666012),m=e.i(570101),f=e.i(626937),h=e.i(10372),g=e.i(193695);e.i(52474);var y=e.i(600220),x=e.i(745015),v=e.i(89171),C=e.i(266240);async function _(e,{params:t}){try{let{toolId:e}=await t,r=String(e||"").trim().toLowerCase();if(!C.CLI_TOOL_IDS.includes(r))return v.NextResponse.json({error:"Unsupported CLI tool"},{status:404});let n=await (0,C.getCliRuntimeStatus)(r);return v.NextResponse.json({...n,toolId:r,configPath:(0,C.getCliPrimaryConfigPath)(r),message:"not_required"===n.reason?"This integration is guide-based and does not require a local CLI binary":n.installed&&n.runnable?"CLI detected and runnable":n.installed?"CLI detected but not runnable":"CLI not detected"})}catch(e){return console.log("Error checking CLI runtime:",e),v.NextResponse.json({error:"Failed to check CLI runtime"},{status:500})}}(0,e.i(195975).ensureServerEntryExports)([_]),(0,x.registerServerReference)(_,"60107ddca90fbd412f04c0fe3301b992c0556fd337",null),e.s(["GET",()=>_],735115);var b=e.i(735115);let P=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/cli-tools/runtime/[toolId]/route",pathname:"/api/cli-tools/runtime/[toolId]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/cli-tools/runtime/[toolId]/route.ts",nextConfigOutput:"standalone",userland:b}),{workAsyncStorage:w,workUnitAsyncStorage:R,serverHooks:A}=P;function O(){return(0,n.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:R})}async function E(e,t,n){P.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let x="/api/cli-tools/runtime/[toolId]/route";x=x.replace(/\/index$/,"")||"/";let v=await P.prepare(e,t,{srcPage:x,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:C,params:_,nextConfig:b,parsedUrl:w,isDraftMode:R,prerenderManifest:A,routerServerContext:O,isOnDemandRevalidate:E,revalidateOnlyGenerated:S,resolvedPathname:I,clientReferenceManifest:j,serverActionsManifest:k}=v,T=(0,i.normalizeAppPath)(x),L=!!(A.dynamicRoutes[T]||A.routes[I]),N=async()=>((null==O?void 0:O.render404)?await O.render404(e,t,w,!1):t.end("This page could not be found"),null);if(L&&!R){let e=!!A.routes[I],t=A.dynamicRoutes[T];if(t&&!1===t.fallback&&!e){if(b.experimental.adapterPath)return await N();throw new g.NoFallbackError}}let B=null;!L||P.isDev||R||(B="/index"===(B=I)?"/":B);let q=!0===P.isDev||!L,D=L&&!q;k&&j&&(0,s.setManifestsSingleton)({page:x,clientReferenceManifest:j,serverActionsManifest:k});let M=e.method||"GET",H=(0,o.getTracer)(),U=H.getActiveScopeSpan(),$={params:_,prerenderManifest:A,renderOpts:{experimental:{authInterrupts:!!b.experimental.authInterrupts},cacheComponents:!!b.cacheComponents,supportsDynamicResponse:q,incrementalCache:(0,a.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:b.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>P.onRequestError(e,t,n,a,O)},sharedContext:{buildId:C}},K=new l.NodeNextRequest(e),F=new l.NodeNextResponse(t),z=u.NextRequestAdapter.fromNodeNextRequest(K,(0,u.signalFromNodeResponse)(t));try{let s=async e=>P.handle(z,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${M} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${M} ${x}`)}),i=!!(0,a.getRequestMeta)(e,"minimalMode"),l=async a=>{var o,l;let u=async({previousCacheEntry:r})=>{try{if(!i&&E&&S&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await s(a);e.fetchMetrics=$.renderOpts.fetchMetrics;let l=$.renderOpts.pendingWaitUntil;l&&n.waitUntil&&(n.waitUntil(l),l=void 0);let u=$.renderOpts.collectedTags;if(!L)return await (0,p.sendResponse)(K,F,o,$.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(o.headers);u&&(t[h.NEXT_CACHE_TAGS_HEADER]=u),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,n=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:$.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await P.onRequestError(e,t,{routerKind:"App Router",routePath:x,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:E})},!1,O),t}},d=await P.handleResponse({req:e,nextConfig:b,cacheKey:B,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:S,responseGenerator:u,waitUntil:n.waitUntil,isMinimalMode:i});if(!L)return null;if((null==d||null==(o=d.value)?void 0:o.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(l=d.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});i||t.setHeader("x-nextjs-cache",E?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),R&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let g=(0,m.fromNodeOutgoingHttpHeaders)(d.value.headers);return i&&L||g.delete(h.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||g.get("Cache-Control")||g.set("Cache-Control",(0,f.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(K,F,new Response(d.value.body,{headers:g,status:d.value.status||200})),null};U?await l(U):await H.withPropagatedContext(e.headers,()=>H.trace(d.BaseServerSpan.handleRequest,{spanName:`${M} ${x}`,kind:o.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},l))}catch(t){if(t instanceof g.NoFallbackError||await P.onRequestError(e,t,{routerKind:"App Router",routePath:T,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:E})},!1,O),L)throw t;return await (0,p.sendResponse)(K,F,new Response(null,{status:500})),null}}e.s(["handler",()=>E,"patchFetch",()=>O,"routeModule",()=>P,"serverHooks",()=>A,"workAsyncStorage",()=>w,"workUnitAsyncStorage",()=>R],653870)}];
3
3
 
4
4
  //# sourceMappingURL=%5Broot-of-the-server%5D__46e00e59._.js.map
@@ -1,6 +1,6 @@
1
- module.exports=[918622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},270406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},193695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},442315,(e,t,r)=>{"use strict";t.exports=e.r(918622)},347540,(e,t,r)=>{"use strict";t.exports=e.r(442315).vendored["react-rsc"].React},819481,(e,t,r)=>{"use strict";var n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,a=Object.prototype.hasOwnProperty,s={},c={RequestCookies:()=>g,ResponseCookies:()=>y,parseCookie:()=>u,parseSetCookie:()=>p,stringifyCookie:()=>d};for(var l in c)n(s,l,{get:c[l],enumerable:!0});function d(e){var t;let r=["path"in e&&e.path&&`Path=${e.path}`,"expires"in e&&(e.expires||0===e.expires)&&`Expires=${("number"==typeof e.expires?new Date(e.expires):e.expires).toUTCString()}`,"maxAge"in e&&"number"==typeof e.maxAge&&`Max-Age=${e.maxAge}`,"domain"in e&&e.domain&&`Domain=${e.domain}`,"secure"in e&&e.secure&&"Secure","httpOnly"in e&&e.httpOnly&&"HttpOnly","sameSite"in e&&e.sameSite&&`SameSite=${e.sameSite}`,"partitioned"in e&&e.partitioned&&"Partitioned","priority"in e&&e.priority&&`Priority=${e.priority}`].filter(Boolean),n=`${e.name}=${encodeURIComponent(null!=(t=e.value)?t:"")}`;return 0===r.length?n:`${n}; ${r.join("; ")}`}function u(e){let t=new Map;for(let r of e.split(/; */)){if(!r)continue;let e=r.indexOf("=");if(-1===e){t.set(r,"true");continue}let[n,i]=[r.slice(0,e),r.slice(e+1)];try{t.set(n,decodeURIComponent(null!=i?i:"true"))}catch{}}return t}function p(e){if(!e)return;let[[t,r],...n]=u(e),{domain:i,expires:o,httponly:a,maxage:s,path:c,samesite:l,secure:d,partitioned:p,priority:g}=Object.fromEntries(n.map(([e,t])=>[e.toLowerCase().replace(/-/g,""),t]));{var y,m,x={name:t,value:decodeURIComponent(r),domain:i,...o&&{expires:new Date(o)},...a&&{httpOnly:!0},..."string"==typeof s&&{maxAge:Number(s)},path:c,...l&&{sameSite:h.includes(y=(y=l).toLowerCase())?y:void 0},...d&&{secure:!0},...g&&{priority:f.includes(m=(m=g).toLowerCase())?m:void 0},...p&&{partitioned:!0}};let e={};for(let t in x)x[t]&&(e[t]=x[t]);return e}}t.exports=((e,t,r,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let r of o(t))a.call(e,r)||void 0===r||n(e,r,{get:()=>t[r],enumerable:!(s=i(t,r))||s.enumerable});return e})(n({},"__esModule",{value:!0}),s);var h=["strict","lax","none"],f=["low","medium","high"],g=class{constructor(e){this._parsed=new Map,this._headers=e;const t=e.get("cookie");if(t)for(const[e,r]of u(t))this._parsed.set(e,{name:e,value:r})}[Symbol.iterator](){return this._parsed[Symbol.iterator]()}get size(){return this._parsed.size}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed);if(!e.length)return r.map(([e,t])=>t);let n="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(([e])=>e===n).map(([e,t])=>t)}has(e){return this._parsed.has(e)}set(...e){let[t,r]=1===e.length?[e[0].name,e[0].value]:e,n=this._parsed;return n.set(t,{name:t,value:r}),this._headers.set("cookie",Array.from(n).map(([e,t])=>d(t)).join("; ")),this}delete(e){let t=this._parsed,r=Array.isArray(e)?e.map(e=>t.delete(e)):t.delete(e);return this._headers.set("cookie",Array.from(t).map(([e,t])=>d(t)).join("; ")),r}clear(){return this.delete(Array.from(this._parsed.keys())),this}[Symbol.for("edge-runtime.inspect.custom")](){return`RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(e=>`${e.name}=${encodeURIComponent(e.value)}`).join("; ")}},y=class{constructor(e){var t,r,n;this._parsed=new Map,this._headers=e;const i=null!=(n=null!=(r=null==(t=e.getSetCookie)?void 0:t.call(e))?r:e.get("set-cookie"))?n:[];for(const e of Array.isArray(i)?i:function(e){if(!e)return[];var t,r,n,i,o,a=[],s=0;function c(){for(;s<e.length&&/\s/.test(e.charAt(s));)s+=1;return s<e.length}for(;s<e.length;){for(t=s,o=!1;c();)if(","===(r=e.charAt(s))){for(n=s,s+=1,c(),i=s;s<e.length&&"="!==(r=e.charAt(s))&&";"!==r&&","!==r;)s+=1;s<e.length&&"="===e.charAt(s)?(o=!0,s=i,a.push(e.substring(t,n)),t=s):s=n+1}else s+=1;(!o||s>=e.length)&&a.push(e.substring(t,e.length))}return a}(i)){const t=p(e);t&&this._parsed.set(t.name,t)}}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed.values());if(!e.length)return r;let n="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(e=>e.name===n)}has(e){return this._parsed.has(e)}set(...e){let[t,r,n]=1===e.length?[e[0].name,e[0].value,e[0]]:e,i=this._parsed;return i.set(t,function(e={name:"",value:""}){return"number"==typeof e.expires&&(e.expires=new Date(e.expires)),e.maxAge&&(e.expires=new Date(Date.now()+1e3*e.maxAge)),(null===e.path||void 0===e.path)&&(e.path="/"),e}({name:t,value:r,...n})),function(e,t){for(let[,r]of(t.delete("set-cookie"),e)){let e=d(r);t.append("set-cookie",e)}}(i,this._headers),this}delete(...e){let[t,r]="string"==typeof e[0]?[e[0]]:[e[0].name,e[0]];return this.set({...r,name:t,value:"",expires:new Date(0)})}[Symbol.for("edge-runtime.inspect.custom")](){return`ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(d).join("; ")}}},792509,(e,t,r)=>{t.exports=e.x("url",()=>require("url"))},446786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},522734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},785148,(e,t,r)=>{t.exports=e.x("better-sqlite3",()=>require("better-sqlite3"))},256770,e=>{"use strict";var t=e.i(814747),r=e.i(446786);let n="omniroute";function i(){try{return r.default.homedir()}catch{return process.cwd()}}function o(e){if("string"!=typeof e)return null;let r=e.trim();return r?t.default.resolve(r):null}function a(){return t.default.join(i(),`.${n}`)}function s(){i();let e=o(process.env.XDG_CONFIG_HOME);return e?t.default.join(e,n):a()}function c({isCloud:e=!1}={}){if(e)return"/tmp";let t=o(process.env.DATA_DIR);return t||s()}function l(e,r){return!!e&&!!r&&t.default.resolve(e)===t.default.resolve(r)}e.s(["APP_NAME",0,n,"getDefaultDataDir",()=>s,"getLegacyDotDataDir",()=>a,"isSamePath",()=>l,"resolveDataDir",()=>c])},439951,e=>{"use strict";var t=e.i(157763);function r(){try{return(0,t.getDbInstance)()}catch{return null}}function n(e){let t=r();if(t)try{t.prepare(`
1
+ module.exports=[918622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},270406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},193695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},442315,(e,t,r)=>{"use strict";t.exports=e.r(918622)},347540,(e,t,r)=>{"use strict";t.exports=e.r(442315).vendored["react-rsc"].React},819481,(e,t,r)=>{"use strict";var n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,s=Object.prototype.hasOwnProperty,a={},c={RequestCookies:()=>g,ResponseCookies:()=>y,parseCookie:()=>u,parseSetCookie:()=>p,stringifyCookie:()=>d};for(var l in c)n(a,l,{get:c[l],enumerable:!0});function d(e){var t;let r=["path"in e&&e.path&&`Path=${e.path}`,"expires"in e&&(e.expires||0===e.expires)&&`Expires=${("number"==typeof e.expires?new Date(e.expires):e.expires).toUTCString()}`,"maxAge"in e&&"number"==typeof e.maxAge&&`Max-Age=${e.maxAge}`,"domain"in e&&e.domain&&`Domain=${e.domain}`,"secure"in e&&e.secure&&"Secure","httpOnly"in e&&e.httpOnly&&"HttpOnly","sameSite"in e&&e.sameSite&&`SameSite=${e.sameSite}`,"partitioned"in e&&e.partitioned&&"Partitioned","priority"in e&&e.priority&&`Priority=${e.priority}`].filter(Boolean),n=`${e.name}=${encodeURIComponent(null!=(t=e.value)?t:"")}`;return 0===r.length?n:`${n}; ${r.join("; ")}`}function u(e){let t=new Map;for(let r of e.split(/; */)){if(!r)continue;let e=r.indexOf("=");if(-1===e){t.set(r,"true");continue}let[n,i]=[r.slice(0,e),r.slice(e+1)];try{t.set(n,decodeURIComponent(null!=i?i:"true"))}catch{}}return t}function p(e){if(!e)return;let[[t,r],...n]=u(e),{domain:i,expires:o,httponly:s,maxage:a,path:c,samesite:l,secure:d,partitioned:p,priority:g}=Object.fromEntries(n.map(([e,t])=>[e.toLowerCase().replace(/-/g,""),t]));{var y,m,x={name:t,value:decodeURIComponent(r),domain:i,...o&&{expires:new Date(o)},...s&&{httpOnly:!0},..."string"==typeof a&&{maxAge:Number(a)},path:c,...l&&{sameSite:h.includes(y=(y=l).toLowerCase())?y:void 0},...d&&{secure:!0},...g&&{priority:f.includes(m=(m=g).toLowerCase())?m:void 0},...p&&{partitioned:!0}};let e={};for(let t in x)x[t]&&(e[t]=x[t]);return e}}t.exports=((e,t,r,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let r of o(t))s.call(e,r)||void 0===r||n(e,r,{get:()=>t[r],enumerable:!(a=i(t,r))||a.enumerable});return e})(n({},"__esModule",{value:!0}),a);var h=["strict","lax","none"],f=["low","medium","high"],g=class{constructor(e){this._parsed=new Map,this._headers=e;const t=e.get("cookie");if(t)for(const[e,r]of u(t))this._parsed.set(e,{name:e,value:r})}[Symbol.iterator](){return this._parsed[Symbol.iterator]()}get size(){return this._parsed.size}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed);if(!e.length)return r.map(([e,t])=>t);let n="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(([e])=>e===n).map(([e,t])=>t)}has(e){return this._parsed.has(e)}set(...e){let[t,r]=1===e.length?[e[0].name,e[0].value]:e,n=this._parsed;return n.set(t,{name:t,value:r}),this._headers.set("cookie",Array.from(n).map(([e,t])=>d(t)).join("; ")),this}delete(e){let t=this._parsed,r=Array.isArray(e)?e.map(e=>t.delete(e)):t.delete(e);return this._headers.set("cookie",Array.from(t).map(([e,t])=>d(t)).join("; ")),r}clear(){return this.delete(Array.from(this._parsed.keys())),this}[Symbol.for("edge-runtime.inspect.custom")](){return`RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(e=>`${e.name}=${encodeURIComponent(e.value)}`).join("; ")}},y=class{constructor(e){var t,r,n;this._parsed=new Map,this._headers=e;const i=null!=(n=null!=(r=null==(t=e.getSetCookie)?void 0:t.call(e))?r:e.get("set-cookie"))?n:[];for(const e of Array.isArray(i)?i:function(e){if(!e)return[];var t,r,n,i,o,s=[],a=0;function c(){for(;a<e.length&&/\s/.test(e.charAt(a));)a+=1;return a<e.length}for(;a<e.length;){for(t=a,o=!1;c();)if(","===(r=e.charAt(a))){for(n=a,a+=1,c(),i=a;a<e.length&&"="!==(r=e.charAt(a))&&";"!==r&&","!==r;)a+=1;a<e.length&&"="===e.charAt(a)?(o=!0,a=i,s.push(e.substring(t,n)),t=a):a=n+1}else a+=1;(!o||a>=e.length)&&s.push(e.substring(t,e.length))}return s}(i)){const t=p(e);t&&this._parsed.set(t.name,t)}}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed.values());if(!e.length)return r;let n="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(e=>e.name===n)}has(e){return this._parsed.has(e)}set(...e){let[t,r,n]=1===e.length?[e[0].name,e[0].value,e[0]]:e,i=this._parsed;return i.set(t,function(e={name:"",value:""}){return"number"==typeof e.expires&&(e.expires=new Date(e.expires)),e.maxAge&&(e.expires=new Date(Date.now()+1e3*e.maxAge)),(null===e.path||void 0===e.path)&&(e.path="/"),e}({name:t,value:r,...n})),function(e,t){for(let[,r]of(t.delete("set-cookie"),e)){let e=d(r);t.append("set-cookie",e)}}(i,this._headers),this}delete(...e){let[t,r]="string"==typeof e[0]?[e[0]]:[e[0].name,e[0]];return this.set({...r,name:t,value:"",expires:new Date(0)})}[Symbol.for("edge-runtime.inspect.custom")](){return`ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(d).join("; ")}}},792509,(e,t,r)=>{t.exports=e.x("url",()=>require("url"))},446786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},522734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},785148,(e,t,r)=>{t.exports=e.x("better-sqlite3",()=>require("better-sqlite3"))},256770,e=>{"use strict";var t=e.i(814747),r=e.i(446786);let n="omniroute";function i(){try{return r.default.homedir()}catch{return process.cwd()}}function o(e){if("string"!=typeof e)return null;let r=e.trim();return r?t.default.resolve(r):null}function s(){return t.default.join(i(),`.${n}`)}function a(){i();let e=o(process.env.XDG_CONFIG_HOME);return e?t.default.join(e,n):s()}function c({isCloud:e=!1}={}){if(e)return"/tmp";let t=o(process.env.DATA_DIR);return t||a()}function l(e,r){return!!e&&!!r&&t.default.resolve(e)===t.default.resolve(r)}e.s(["APP_NAME",0,n,"getDefaultDataDir",()=>a,"getLegacyDotDataDir",()=>s,"isSamePath",()=>l,"resolveDataDir",()=>c])},439951,e=>{"use strict";var t=e.i(157763);function r(){try{return(0,t.getDbInstance)()}catch{return null}}function n(e){let t=r();if(t)try{t.prepare(`
2
2
  INSERT INTO audit_log (action, actor, target, details, ip_address)
3
3
  VALUES (?, ?, ?, ?, ?)
4
- `).run(e.action,e.actor||"system",e.target||null,"object"==typeof e.details?JSON.stringify(e.details):e.details||null,e.ipAddress||null)}catch{}}function i(e={}){let t=r();if(!t)return[];let n=[],o=[];e.action&&(n.push("action = ?"),o.push(e.action)),e.actor&&(n.push("actor = ?"),o.push(e.actor));let a=n.length>0?`WHERE ${n.join(" AND ")}`:"",s=e.limit||100,c=e.offset||0;return t.prepare(`SELECT * FROM audit_log ${a} ORDER BY timestamp DESC LIMIT ? OFFSET ?`).all(...o,s,c).map(e=>({...e,details:e.details?JSON.parse(String(e.details)):null}))}parseInt(process.env.LOG_RETENTION_DAYS||"90",10);let o=new Set,a=new Map,s=!1,c=!1;for(let e of(process.env.NO_LOG_API_KEY_IDS||"").split(",").map(e=>e.trim()).filter(Boolean))o.add(e);function l(e,t){t?o.add(e):o.delete(e),a.set(e,{value:t,timestamp:Date.now()})}function d(e){if(!e)return!1;if(o.has(e))return!0;let t=function(e){let t=r();if(!t||!e||!function(e){if(s)return c;try{c=e.prepare("PRAGMA table_info(api_keys)").all().some(e=>"no_log"===e.name)}catch{c=!1}return s=!0,c}(t))return!1;let n=a.get(e);if(n&&Date.now()-n.timestamp<3e4)return n.value;try{let r=t.prepare("SELECT no_log FROM api_keys WHERE id = ?").get(e),n=!!(r&&1===Number(r.no_log));return a.set(e,{value:n,timestamp:Date.now()}),n}catch{return!1}}(e);return t&&o.add(e),t}e.s(["getAuditLog",()=>i,"isNoLog",()=>d,"logAuditEvent",()=>n,"setNoLog",()=>l])},663370,632802,477468,e=>{"use strict";let t=new TextEncoder,r=new TextDecoder;function n(...e){let t=new Uint8Array(e.reduce((e,{length:t})=>e+t,0)),r=0;for(let n of e)t.set(n,r),r+=n.length;return t}function i(e){let t=new Uint8Array(e.length);for(let r=0;r<e.length;r++){let n=e.charCodeAt(r);if(n>127)throw TypeError("non-ASCII string encountered in encode()");t[r]=n}return t}function o(e){if(Uint8Array.prototype.toBase64)return e.toBase64();let t=[];for(let r=0;r<e.length;r+=32768)t.push(String.fromCharCode.apply(null,e.subarray(r,r+32768)));return btoa(t.join(""))}function a(e){if(Uint8Array.fromBase64)return Uint8Array.fromBase64(e);let t=atob(e),r=new Uint8Array(t.length);for(let e=0;e<t.length;e++)r[e]=t.charCodeAt(e);return r}function s(e){if(Uint8Array.fromBase64)return Uint8Array.fromBase64("string"==typeof e?e:r.decode(e),{alphabet:"base64url"});let t=e;t instanceof Uint8Array&&(t=r.decode(t)),t=t.replace(/-/g,"+").replace(/_/g,"/");try{return a(t)}catch{throw TypeError("The input to be decoded is not correctly encoded.")}}function c(e){let r=e;return("string"==typeof r&&(r=t.encode(r)),Uint8Array.prototype.toBase64)?r.toBase64({alphabet:"base64url",omitPadding:!0}):o(r).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}e.s(["concat",()=>n,"decoder",0,r,"encode",()=>i,"encoder",0,t],632802),e.s(["decodeBase64",()=>a,"encodeBase64",()=>o],477468),e.s(["decode",()=>s,"encode",()=>c],663370)},865466,e=>{"use strict";class t extends Error{static code="ERR_JOSE_GENERIC";code="ERR_JOSE_GENERIC";constructor(e,t){super(e,t),this.name=this.constructor.name,Error.captureStackTrace?.(this,this.constructor)}}class r extends t{static code="ERR_JWT_CLAIM_VALIDATION_FAILED";code="ERR_JWT_CLAIM_VALIDATION_FAILED";claim;reason;payload;constructor(e,t,r="unspecified",n="unspecified"){super(e,{cause:{claim:r,reason:n,payload:t}}),this.claim=r,this.reason=n,this.payload=t}}class n extends t{static code="ERR_JWT_EXPIRED";code="ERR_JWT_EXPIRED";claim;reason;payload;constructor(e,t,r="unspecified",n="unspecified"){super(e,{cause:{claim:r,reason:n,payload:t}}),this.claim=r,this.reason=n,this.payload=t}}class i extends t{static code="ERR_JOSE_ALG_NOT_ALLOWED";code="ERR_JOSE_ALG_NOT_ALLOWED"}class o extends t{static code="ERR_JOSE_NOT_SUPPORTED";code="ERR_JOSE_NOT_SUPPORTED"}class a extends t{static code="ERR_JWS_INVALID";code="ERR_JWS_INVALID"}class s extends t{static code="ERR_JWT_INVALID";code="ERR_JWT_INVALID"}class c extends t{[Symbol.asyncIterator];static code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";constructor(e="multiple matching keys found in the JSON Web Key Set",t){super(e,t)}}class l extends t{static code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";constructor(e="signature verification failed",t){super(e,t)}}e.s(["JOSEAlgNotAllowed",()=>i,"JOSENotSupported",()=>o,"JWSInvalid",()=>a,"JWSSignatureVerificationFailed",()=>l,"JWTClaimValidationFailed",()=>r,"JWTExpired",()=>n,"JWTInvalid",()=>s])},177278,e=>{"use strict";function t(e){if("object"!=typeof e||null===e||"[object Object]"!==Object.prototype.toString.call(e))return!1;if(null===Object.getPrototypeOf(e))return!0;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function r(...e){let t,n=e.filter(Boolean);if(0===n.length||1===n.length)return!0;for(let e of n){let r=Object.keys(e);if(!t||0===t.size){t=new Set(r);continue}for(let e of r){if(t.has(e))return!1;t.add(e)}}return!0}e.s(["isDisjoint",()=>r,"isJWK",0,e=>t(e)&&"string"==typeof e.kty,"isObject",()=>t,"isPrivateJWK",0,e=>"oct"!==e.kty&&("AKP"===e.kty&&"string"==typeof e.priv||"string"==typeof e.d),"isPublicJWK",0,e=>"oct"!==e.kty&&void 0===e.d&&void 0===e.priv,"isSecretJWK",0,e=>"oct"===e.kty&&"string"==typeof e.k])},233405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},250875,e=>{"use strict";var t=e.i(233405),r=e.i(522734);async function n(i=null){let o=i||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt";try{let n=function(){try{let e=process.env.SystemRoot||process.env.windir||"C:\\Windows",n=`${e}\\System32\\REG.exe`;if((0,r.existsSync)(n)){let e=(0,t.execFileSync)(n,["QUERY","HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography","/v","MachineGuid"],{encoding:"utf8",timeout:5e3}),r=e.split("REG_SZ")[1]?.replace(/\r+|\n+|\s+/gi,"")?.toLowerCase();if(r&&r.length>8)return r}}catch{}try{let e=(0,t.execSync)("ioreg -rd1 -c IOPlatformExpertDevice",{encoding:"utf8",timeout:5e3});if(e.includes("IOPlatformUUID")){let t=e.split("IOPlatformUUID")[1]?.split("\n")[0]?.replace(/=|\s+|"/gi,"")?.toLowerCase();if(t&&t.length>8)return t}}catch{}try{for(let e of["/etc/machine-id","/var/lib/dbus/machine-id"])if((0,r.existsSync)(e)){let t=(0,r.readFileSync)(e,"utf8").trim().toLowerCase();if(t.length>8)return t}}catch{}try{let e=(0,t.execSync)("hostname",{encoding:"utf8",timeout:5e3}).trim().toLowerCase();if(e)return e}catch{}try{return e.r(446786).hostname().toLowerCase()}catch{}return"unknown-machine"}();return(await e.A(485685)).createHash("sha256").update(n+o).digest("hex").substring(0,16)}catch(t){console.log("Error getting machine ID:",t);try{return(await e.A(485685)).randomUUID()}catch{return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){let t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)})}}}e.s(["getConsistentMachineId",()=>n])},639173,e=>{"use strict";e.i(245272);var t=e.i(385498),r=e.i(186920),n=e.i(151205),i=e.i(125852);let o=process.env.CLOUD_URL||process.env.NEXT_PUBLIC_CLOUD_URL,a=Number(process.env.CLOUD_SYNC_TIMEOUT_MS||12e3);function s(e){return e&&"object"==typeof e&&!Array.isArray(e)?e:{}}function c(e){if("string"==typeof e||"number"==typeof e||e instanceof Date){let t=new Date(e).getTime();return Number.isFinite(t)?t:0}return 0}async function l(e,t={},r=a){let n=new AbortController,i=setTimeout(()=>n.abort(),r);try{return await fetch(e,{...t,signal:n.signal})}finally{clearTimeout(i)}}async function d(e,a=null){let s;if(!o)return{error:"NEXT_PUBLIC_CLOUD_URL is not configured"};let c=await (0,t.getProviderConnections)(),p=await (0,r.getModelAliases)(),h=await (0,n.getCombos)(),f=await (0,i.getApiKeys)();try{s=await l(`${o}/sync/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({providers:c,modelAliases:p,combos:h,apiKeys:f})})}catch(e){return{error:e?.name==="AbortError"?"Cloud sync timeout":"Cloud sync request failed"}}if(!s.ok){let e=await s.text(),t=e.length>200?e.slice(0,200)+"…":e;return console.log(`Cloud sync failed (${s.status}):`,t),{error:"Cloud sync failed"}}let g=await s.json();g.data&&g.data.providers&&await u(g.data.providers);let y={success:!0,message:"Synced successfully",changes:g.changes};return a&&(y.createdKey=a),y}async function u(e){let r=s(e);for(let e of(await (0,t.getProviderConnections)())){var n;let i=s(e),o="string"==typeof(n=i.id)&&n.trim().length>0?n:null;if(!o)continue;let a=s(r[o]);if(0!==Object.keys(a).length){if(c(a.updatedAt)>c(i.updatedAt)){let e={accessToken:a.accessToken,refreshToken:a.refreshToken,expiresAt:a.expiresAt,expiresIn:a.expiresIn,providerSpecificData:a.providerSpecificData||i.providerSpecificData,testStatus:a.status||"active",lastError:a.lastError,lastErrorAt:a.lastErrorAt,errorCode:a.errorCode,rateLimitedUntil:a.rateLimitedUntil,updatedAt:a.updatedAt};await (0,t.updateProviderConnection)(o,e)}}}}e.s(["CLOUD_URL",()=>o,"fetchWithTimeout",()=>l,"syncToCloud",()=>d])},496727,e=>{"use strict";e.s(["FORMATS",0,{OPENAI:"openai",OPENAI_RESPONSES:"openai-responses",OPENAI_RESPONSE:"openai-response",CLAUDE:"claude",GEMINI:"gemini",GEMINI_CLI:"gemini-cli",CODEX:"codex",ANTIGRAVITY:"antigravity",KIRO:"kiro",CURSOR:"cursor"}])},827957,e=>{"use strict";var t=e.i(663370),r=e.i(293233),n=e.i(177278),i=e.i(865466),o=e.i(632802),a=e.i(48215),s=e.i(252665),c=e.i(18083),l=e.i(913658);class d{#e;#t;#r;constructor(e){if(!(e instanceof Uint8Array))throw TypeError("payload must be an instance of Uint8Array");this.#e=e}setProtectedHeader(e){return(0,l.assertNotSet)(this.#t,"setProtectedHeader"),this.#t=e,this}setUnprotectedHeader(e){return(0,l.assertNotSet)(this.#r,"setUnprotectedHeader"),this.#r=e,this}async sign(e,l){let d,u,p,h;if(!this.#t&&!this.#r)throw new i.JWSInvalid("either setProtectedHeader or setUnprotectedHeader must be called before #sign()");if(!(0,n.isDisjoint)(this.#t,this.#r))throw new i.JWSInvalid("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let f={...this.#t,...this.#r},g=(0,s.validateCrit)(i.JWSInvalid,new Map([["b64",!0]]),l?.crit,this.#t,f),y=!0;if(g.has("b64")&&"boolean"!=typeof(y=this.#t.b64))throw new i.JWSInvalid('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:m}=f;if("string"!=typeof m||!m)throw new i.JWSInvalid('JWS "alg" (Algorithm) Header Parameter missing or invalid');(0,a.checkKeyType)(m,e,"sign"),y?(d=(0,t.encode)(this.#e),u=(0,o.encode)(d)):(u=this.#e,d=""),this.#t?(p=(0,t.encode)(JSON.stringify(this.#t)),h=(0,o.encode)(p)):(p="",h=new Uint8Array);let x=(0,o.concat)(h,(0,o.encode)("."),u),E=await (0,c.normalizeKey)(e,m),v=await (0,r.sign)(m,E,x),_={signature:(0,t.encode)(v),payload:d};return this.#r&&(_.header=this.#r),this.#t&&(_.protected=p),_}}class u{#n;constructor(e){this.#n=new d(e)}setProtectedHeader(e){return this.#n.setProtectedHeader(e),this}async sign(e,t){let r=await this.#n.sign(e,t);if(void 0===r.payload)throw TypeError("use the flattened module for creating JWS with b64: false");return`${r.protected}.${r.payload}.${r.signature}`}}var p=e.i(224472);class h{#t;#i;constructor(e={}){this.#i=new p.JWTClaimsBuilder(e)}setIssuer(e){return this.#i.iss=e,this}setSubject(e){return this.#i.sub=e,this}setAudience(e){return this.#i.aud=e,this}setJti(e){return this.#i.jti=e,this}setNotBefore(e){return this.#i.nbf=e,this}setExpirationTime(e){return this.#i.exp=e,this}setIssuedAt(e){return this.#i.iat=e,this}setProtectedHeader(e){return this.#t=e,this}async sign(e,t){let r=new u(this.#i.data());if(r.setProtectedHeader(this.#t),Array.isArray(this.#t?.crit)&&this.#t.crit.includes("b64")&&!1===this.#t.b64)throw new i.JWTInvalid("JWTs MUST NOT use unencoded payload");return r.sign(e,t)}}e.s(["SignJWT",()=>h],827957)},982406,e=>{"use strict";var t=e.i(250875);async function r(){return await (0,t.getConsistentMachineId)()}e.s(["getMachineId",()=>r])},307488,e=>e.a(async(t,r)=>{try{e.i(245272);var n=e.i(385498),i=e.i(548941),o=e.i(982406),a=e.i(312215),s=e.i(6751),c=e.i(639173),l=e.i(444675),d=e.i(25687),u=t([s]);async function p(){try{let e=await (0,o.getMachineId)();if(!e)return;await (0,c.syncToCloud)(e)}catch(e){console.error("[Usage API] Error syncing to cloud:",e)}}async function h(e){let t=(0,s.getExecutor)(e.provider),r={accessToken:e.accessToken,refreshToken:e.refreshToken,expiresAt:e.tokenExpiresAt,providerSpecificData:e.providerSpecificData,copilotToken:e.providerSpecificData?.copilotToken,copilotTokenExpiresAt:e.providerSpecificData?.copilotTokenExpiresAt};if(!t.needsRefresh(r))return{connection:e,refreshed:!1};let i=await t.refreshCredentials(r,console);if(!i){if("github"===e.provider&&e.accessToken)return{connection:e,refreshed:!1};throw Error("Failed to refresh credentials. Please re-authorize the connection.")}let o={updatedAt:new Date().toISOString()};return i.accessToken&&(o.accessToken=i.accessToken),i.refreshToken&&(o.refreshToken=i.refreshToken),i.expiresIn?o.tokenExpiresAt=new Date(Date.now()+1e3*i.expiresIn).toISOString():i.expiresAt&&(o.tokenExpiresAt=i.expiresAt),(i.copilotToken||i.copilotTokenExpiresAt)&&(o.providerSpecificData={...e.providerSpecificData,copilotToken:i.copilotToken,copilotTokenExpiresAt:i.copilotTokenExpiresAt}),await (0,n.updateProviderConnection)(e.id,o),{connection:{...e,...o},refreshed:!0}}async function f(e,{params:t}){try{var r;let{connectionId:e}=await t,o=await (0,n.getProviderConnectionById)(e);if(!o)return Response.json({error:"Connection not found"},{status:404});if("oauth"!==o.authType)return Response.json({message:"Usage not available for API key connections"});try{let e=await h(o);o=e.connection,e.refreshed&&await p()}catch(e){return console.error("[Usage API] Credential refresh failed:",e),Response.json({error:`Credential refresh failed: ${e.message}`},{status:401})}let s=await (0,i.resolveProxyForConnection)(e),c=await (0,l.runWithProxyContext)(s?.proxy||null,()=>(0,a.getUsageForProvider)(o));r=c?.quotas,null===r||"object"!=typeof r||Array.isArray(r)||(0,d.setQuotaCache)(e,o.provider,c.quotas);let u="string"==typeof c?.message?c.message.toLowerCase():"";if((u.includes("token expired")||u.includes("access denied")||u.includes("re-authenticate")||u.includes("unauthorized"))&&"expired"!==o.testStatus)try{await (0,n.updateProviderConnection)(o.id,{testStatus:"expired",lastErrorType:"token_expired",lastErrorAt:new Date().toISOString()})}catch(e){console.error("[Usage API] Failed to sync expired status to DB:",e)}return Response.json(c)}catch(e){return console.error("[Usage API] Error fetching usage:",e),console.error("[Usage API] Error stack:",e.stack),Response.json({error:e.message},{status:500})}}[s]=u.then?(await u)():u,e.s(["GET",()=>f]),r()}catch(e){r(e)}},!1),589356,e=>e.a(async(t,r)=>{try{var n=e.i(747909),i=e.i(174017),o=e.i(996250),a=e.i(759756),s=e.i(561916),c=e.i(174677),l=e.i(869741),d=e.i(316795),u=e.i(487718),p=e.i(995169),h=e.i(47587),f=e.i(666012),g=e.i(570101),y=e.i(626937),m=e.i(10372),x=e.i(193695);e.i(52474);var E=e.i(600220),v=e.i(307488),_=t([v]);[v]=_.then?(await _)():_;let R=new n.AppRouteRouteModule({definition:{kind:i.RouteKind.APP_ROUTE,page:"/api/usage/[connectionId]/route",pathname:"/api/usage/[connectionId]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/usage/[connectionId]/route.ts",nextConfigOutput:"standalone",userland:v}),{workAsyncStorage:S,workUnitAsyncStorage:I,serverHooks:T}=R;function A(){return(0,o.patchFetch)({workAsyncStorage:S,workUnitAsyncStorage:I})}async function w(e,t,r){R.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let n="/api/usage/[connectionId]/route";n=n.replace(/\/index$/,"")||"/";let o=await R.prepare(e,t,{srcPage:n,multiZoneDraftMode:!1});if(!o)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:v,params:_,nextConfig:A,parsedUrl:w,isDraftMode:S,prerenderManifest:I,routerServerContext:T,isOnDemandRevalidate:C,revalidateOnlyGenerated:b,resolvedPathname:O,clientReferenceManifest:P,serverActionsManifest:D}=o,k=(0,l.normalizeAppPath)(n),N=!!(I.dynamicRoutes[k]||I.routes[O]),U=async()=>((null==T?void 0:T.render404)?await T.render404(e,t,w,!1):t.end("This page could not be found"),null);if(N&&!S){let e=!!I.routes[O],t=I.dynamicRoutes[k];if(t&&!1===t.fallback&&!e){if(A.experimental.adapterPath)return await U();throw new x.NoFallbackError}}let j=null;!N||R.isDev||S||(j=O,j="/index"===j?"/":j);let H=!0===R.isDev||!N,L=N&&!H;D&&P&&(0,c.setManifestsSingleton)({page:n,clientReferenceManifest:P,serverActionsManifest:D});let J=e.method||"GET",M=(0,s.getTracer)(),W=M.getActiveScopeSpan(),$={params:_,prerenderManifest:I,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:H,incrementalCache:(0,a.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:A.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,i)=>R.onRequestError(e,t,n,i,T)},sharedContext:{buildId:v}},q=new d.NodeNextRequest(e),F=new d.NodeNextResponse(t),K=u.NextRequestAdapter.fromNodeNextRequest(q,(0,u.signalFromNodeResponse)(t));try{let o=async e=>R.handle(K,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=M.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let i=r.get("next.route");if(i){let t=`${J} ${i}`;e.setAttributes({"next.route":i,"http.route":i,"next.span_name":t}),e.updateName(t)}else e.updateName(`${J} ${n}`)}),c=!!(0,a.getRequestMeta)(e,"minimalMode"),l=async a=>{var s,l;let d=async({previousCacheEntry:i})=>{try{if(!c&&C&&b&&!i)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await o(a);e.fetchMetrics=$.renderOpts.fetchMetrics;let s=$.renderOpts.pendingWaitUntil;s&&r.waitUntil&&(r.waitUntil(s),s=void 0);let l=$.renderOpts.collectedTags;if(!N)return await (0,f.sendResponse)(q,F,n,$.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,i=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:$.renderOpts.collectedExpire;return{value:{kind:E.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:i}}}}catch(t){throw(null==i?void 0:i.isStale)&&await R.onRequestError(e,t,{routerKind:"App Router",routePath:n,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:C})},!1,T),t}},u=await R.handleResponse({req:e,nextConfig:A,cacheKey:j,routeKind:i.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:b,responseGenerator:d,waitUntil:r.waitUntil,isMinimalMode:c});if(!N)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==E.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});c||t.setHeader("x-nextjs-cache",C?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,g.fromNodeOutgoingHttpHeaders)(u.value.headers);return c&&N||p.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,y.getCacheControlHeader)(u.cacheControl)),await (0,f.sendResponse)(q,F,new Response(u.value.body,{headers:p,status:u.value.status||200})),null};W?await l(W):await M.withPropagatedContext(e.headers,()=>M.trace(p.BaseServerSpan.handleRequest,{spanName:`${J} ${n}`,kind:s.SpanKind.SERVER,attributes:{"http.method":J,"http.target":e.url}},l))}catch(t){if(t instanceof x.NoFallbackError||await R.onRequestError(e,t,{routerKind:"App Router",routePath:k,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:C})},!1,T),N)throw t;return await (0,f.sendResponse)(q,F,new Response(null,{status:500})),null}}e.s(["handler",()=>w,"patchFetch",()=>A,"routeModule",()=>R,"serverHooks",()=>T,"workAsyncStorage",()=>S,"workUnitAsyncStorage",()=>I]),r()}catch(e){r(e)}},!1),606102,e=>{e.v(e=>Promise.resolve().then(()=>e(548941)))},789543,e=>{e.v(e=>Promise.resolve().then(()=>e(385498)))},579042,e=>{e.v(t=>Promise.all(["server/chunks/src_shared_utils_apiKey_ts_fa113e09._.js"].map(t=>e.l(t))).then(()=>t(65448)))},49794,e=>{e.v(t=>Promise.all(["server/chunks/src_shared_constants_pricing_ts_65de0558._.js"].map(t=>e.l(t))).then(()=>t(404503)))},386305,e=>{e.v(e=>Promise.resolve().then(()=>e(878947)))},485685,e=>{e.v(e=>Promise.resolve().then(()=>e(254799)))},605589,e=>{e.v(t=>Promise.all(["server/chunks/src_lib_localDb_ts_83220848._.js"].map(t=>e.l(t))).then(()=>t(969738)))},901259,e=>{e.v(t=>Promise.all(["server/chunks/[externals]_http2_740a89f0._.js"].map(t=>e.l(t))).then(()=>t(925328)))}];
4
+ `).run(e.action,e.actor||"system",e.target||null,"object"==typeof e.details?JSON.stringify(e.details):e.details||null,e.ipAddress||null)}catch{}}function i(e={}){let t=r();if(!t)return[];let n=[],o=[];e.action&&(n.push("action = ?"),o.push(e.action)),e.actor&&(n.push("actor = ?"),o.push(e.actor));let s=n.length>0?`WHERE ${n.join(" AND ")}`:"",a=e.limit||100,c=e.offset||0;return t.prepare(`SELECT * FROM audit_log ${s} ORDER BY timestamp DESC LIMIT ? OFFSET ?`).all(...o,a,c).map(e=>({...e,details:e.details?JSON.parse(String(e.details)):null}))}parseInt(process.env.LOG_RETENTION_DAYS||"90",10);let o=new Set,s=new Map,a=!1,c=!1;for(let e of(process.env.NO_LOG_API_KEY_IDS||"").split(",").map(e=>e.trim()).filter(Boolean))o.add(e);function l(e,t){t?o.add(e):o.delete(e),s.set(e,{value:t,timestamp:Date.now()})}function d(e){if(!e)return!1;if(o.has(e))return!0;let t=function(e){let t=r();if(!t||!e||!function(e){if(a)return c;try{c=e.prepare("PRAGMA table_info(api_keys)").all().some(e=>"no_log"===e.name)}catch{c=!1}return a=!0,c}(t))return!1;let n=s.get(e);if(n&&Date.now()-n.timestamp<3e4)return n.value;try{let r=t.prepare("SELECT no_log FROM api_keys WHERE id = ?").get(e),n=!!(r&&1===Number(r.no_log));return s.set(e,{value:n,timestamp:Date.now()}),n}catch{return!1}}(e);return t&&o.add(e),t}e.s(["getAuditLog",()=>i,"isNoLog",()=>d,"logAuditEvent",()=>n,"setNoLog",()=>l])},663370,632802,477468,e=>{"use strict";let t=new TextEncoder,r=new TextDecoder;function n(...e){let t=new Uint8Array(e.reduce((e,{length:t})=>e+t,0)),r=0;for(let n of e)t.set(n,r),r+=n.length;return t}function i(e){let t=new Uint8Array(e.length);for(let r=0;r<e.length;r++){let n=e.charCodeAt(r);if(n>127)throw TypeError("non-ASCII string encountered in encode()");t[r]=n}return t}function o(e){if(Uint8Array.prototype.toBase64)return e.toBase64();let t=[];for(let r=0;r<e.length;r+=32768)t.push(String.fromCharCode.apply(null,e.subarray(r,r+32768)));return btoa(t.join(""))}function s(e){if(Uint8Array.fromBase64)return Uint8Array.fromBase64(e);let t=atob(e),r=new Uint8Array(t.length);for(let e=0;e<t.length;e++)r[e]=t.charCodeAt(e);return r}function a(e){if(Uint8Array.fromBase64)return Uint8Array.fromBase64("string"==typeof e?e:r.decode(e),{alphabet:"base64url"});let t=e;t instanceof Uint8Array&&(t=r.decode(t)),t=t.replace(/-/g,"+").replace(/_/g,"/");try{return s(t)}catch{throw TypeError("The input to be decoded is not correctly encoded.")}}function c(e){let r=e;return("string"==typeof r&&(r=t.encode(r)),Uint8Array.prototype.toBase64)?r.toBase64({alphabet:"base64url",omitPadding:!0}):o(r).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}e.s(["concat",()=>n,"decoder",0,r,"encode",()=>i,"encoder",0,t],632802),e.s(["decodeBase64",()=>s,"encodeBase64",()=>o],477468),e.s(["decode",()=>a,"encode",()=>c],663370)},865466,e=>{"use strict";class t extends Error{static code="ERR_JOSE_GENERIC";code="ERR_JOSE_GENERIC";constructor(e,t){super(e,t),this.name=this.constructor.name,Error.captureStackTrace?.(this,this.constructor)}}class r extends t{static code="ERR_JWT_CLAIM_VALIDATION_FAILED";code="ERR_JWT_CLAIM_VALIDATION_FAILED";claim;reason;payload;constructor(e,t,r="unspecified",n="unspecified"){super(e,{cause:{claim:r,reason:n,payload:t}}),this.claim=r,this.reason=n,this.payload=t}}class n extends t{static code="ERR_JWT_EXPIRED";code="ERR_JWT_EXPIRED";claim;reason;payload;constructor(e,t,r="unspecified",n="unspecified"){super(e,{cause:{claim:r,reason:n,payload:t}}),this.claim=r,this.reason=n,this.payload=t}}class i extends t{static code="ERR_JOSE_ALG_NOT_ALLOWED";code="ERR_JOSE_ALG_NOT_ALLOWED"}class o extends t{static code="ERR_JOSE_NOT_SUPPORTED";code="ERR_JOSE_NOT_SUPPORTED"}class s extends t{static code="ERR_JWS_INVALID";code="ERR_JWS_INVALID"}class a extends t{static code="ERR_JWT_INVALID";code="ERR_JWT_INVALID"}class c extends t{[Symbol.asyncIterator];static code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";constructor(e="multiple matching keys found in the JSON Web Key Set",t){super(e,t)}}class l extends t{static code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";constructor(e="signature verification failed",t){super(e,t)}}e.s(["JOSEAlgNotAllowed",()=>i,"JOSENotSupported",()=>o,"JWSInvalid",()=>s,"JWSSignatureVerificationFailed",()=>l,"JWTClaimValidationFailed",()=>r,"JWTExpired",()=>n,"JWTInvalid",()=>a])},177278,e=>{"use strict";function t(e){if("object"!=typeof e||null===e||"[object Object]"!==Object.prototype.toString.call(e))return!1;if(null===Object.getPrototypeOf(e))return!0;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function r(...e){let t,n=e.filter(Boolean);if(0===n.length||1===n.length)return!0;for(let e of n){let r=Object.keys(e);if(!t||0===t.size){t=new Set(r);continue}for(let e of r){if(t.has(e))return!1;t.add(e)}}return!0}e.s(["isDisjoint",()=>r,"isJWK",0,e=>t(e)&&"string"==typeof e.kty,"isObject",()=>t,"isPrivateJWK",0,e=>"oct"!==e.kty&&("AKP"===e.kty&&"string"==typeof e.priv||"string"==typeof e.d),"isPublicJWK",0,e=>"oct"!==e.kty&&void 0===e.d&&void 0===e.priv,"isSecretJWK",0,e=>"oct"===e.kty&&"string"==typeof e.k])},233405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},250875,e=>{"use strict";var t=e.i(233405),r=e.i(522734);async function n(i=null){let o=i||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt";try{let n=function(){try{let e=process.env.SystemRoot||process.env.windir||"C:\\Windows",n=`${e}\\System32\\REG.exe`;if((0,r.existsSync)(n)){let e=(0,t.execFileSync)(n,["QUERY","HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography","/v","MachineGuid"],{encoding:"utf8",timeout:5e3}),r=e.split("REG_SZ")[1]?.replace(/\r+|\n+|\s+/gi,"")?.toLowerCase();if(r&&r.length>8)return r}}catch{}try{let e=(0,t.execSync)("ioreg -rd1 -c IOPlatformExpertDevice",{encoding:"utf8",timeout:5e3});if(e.includes("IOPlatformUUID")){let t=e.split("IOPlatformUUID")[1]?.split("\n")[0]?.replace(/=|\s+|"/gi,"")?.toLowerCase();if(t&&t.length>8)return t}}catch{}try{for(let e of["/etc/machine-id","/var/lib/dbus/machine-id"])if((0,r.existsSync)(e)){let t=(0,r.readFileSync)(e,"utf8").trim().toLowerCase();if(t.length>8)return t}}catch{}try{let e=(0,t.execSync)("hostname",{encoding:"utf8",timeout:5e3}).trim().toLowerCase();if(e)return e}catch{}try{return e.r(446786).hostname().toLowerCase()}catch{}return"unknown-machine"}();return(await e.A(485685)).createHash("sha256").update(n+o).digest("hex").substring(0,16)}catch(t){console.log("Error getting machine ID:",t);try{return(await e.A(485685)).randomUUID()}catch{return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){let t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)})}}}e.s(["getConsistentMachineId",()=>n])},639173,e=>{"use strict";e.i(245272);var t=e.i(385498),r=e.i(186920),n=e.i(151205),i=e.i(125852);let o=process.env.CLOUD_URL||process.env.NEXT_PUBLIC_CLOUD_URL,s=Number(process.env.CLOUD_SYNC_TIMEOUT_MS||12e3);function a(e){return e&&"object"==typeof e&&!Array.isArray(e)?e:{}}function c(e){if("string"==typeof e||"number"==typeof e||e instanceof Date){let t=new Date(e).getTime();return Number.isFinite(t)?t:0}return 0}async function l(e,t={},r=s){let n=new AbortController,i=setTimeout(()=>n.abort(),r);try{return await fetch(e,{...t,signal:n.signal})}finally{clearTimeout(i)}}async function d(e,s=null){let a;if(!o)return{error:"NEXT_PUBLIC_CLOUD_URL is not configured"};let c=await (0,t.getProviderConnections)(),p=await (0,r.getModelAliases)(),h=await (0,n.getCombos)(),f=await (0,i.getApiKeys)();try{a=await l(`${o}/sync/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({providers:c,modelAliases:p,combos:h,apiKeys:f})})}catch(e){return{error:e?.name==="AbortError"?"Cloud sync timeout":"Cloud sync request failed"}}if(!a.ok){let e=await a.text(),t=e.length>200?e.slice(0,200)+"…":e;return console.log(`Cloud sync failed (${a.status}):`,t),{error:"Cloud sync failed"}}let g=await a.json();g.data&&g.data.providers&&await u(g.data.providers);let y={success:!0,message:"Synced successfully",changes:g.changes};return s&&(y.createdKey=s),y}async function u(e){let r=a(e);for(let e of(await (0,t.getProviderConnections)())){var n;let i=a(e),o="string"==typeof(n=i.id)&&n.trim().length>0?n:null;if(!o)continue;let s=a(r[o]);if(0!==Object.keys(s).length){if(c(s.updatedAt)>c(i.updatedAt)){let e={accessToken:s.accessToken,refreshToken:s.refreshToken,expiresAt:s.expiresAt,expiresIn:s.expiresIn,providerSpecificData:s.providerSpecificData||i.providerSpecificData,testStatus:s.status||"active",lastError:s.lastError,lastErrorAt:s.lastErrorAt,errorCode:s.errorCode,rateLimitedUntil:s.rateLimitedUntil,updatedAt:s.updatedAt};await (0,t.updateProviderConnection)(o,e)}}}}e.s(["CLOUD_URL",()=>o,"fetchWithTimeout",()=>l,"syncToCloud",()=>d])},496727,e=>{"use strict";e.s(["FORMATS",0,{OPENAI:"openai",OPENAI_RESPONSES:"openai-responses",OPENAI_RESPONSE:"openai-response",CLAUDE:"claude",GEMINI:"gemini",GEMINI_CLI:"gemini-cli",CODEX:"codex",ANTIGRAVITY:"antigravity",KIRO:"kiro",CURSOR:"cursor"}])},827957,e=>{"use strict";var t=e.i(663370),r=e.i(293233),n=e.i(177278),i=e.i(865466),o=e.i(632802),s=e.i(48215),a=e.i(252665),c=e.i(18083),l=e.i(913658);class d{#e;#t;#r;constructor(e){if(!(e instanceof Uint8Array))throw TypeError("payload must be an instance of Uint8Array");this.#e=e}setProtectedHeader(e){return(0,l.assertNotSet)(this.#t,"setProtectedHeader"),this.#t=e,this}setUnprotectedHeader(e){return(0,l.assertNotSet)(this.#r,"setUnprotectedHeader"),this.#r=e,this}async sign(e,l){let d,u,p,h;if(!this.#t&&!this.#r)throw new i.JWSInvalid("either setProtectedHeader or setUnprotectedHeader must be called before #sign()");if(!(0,n.isDisjoint)(this.#t,this.#r))throw new i.JWSInvalid("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let f={...this.#t,...this.#r},g=(0,a.validateCrit)(i.JWSInvalid,new Map([["b64",!0]]),l?.crit,this.#t,f),y=!0;if(g.has("b64")&&"boolean"!=typeof(y=this.#t.b64))throw new i.JWSInvalid('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:m}=f;if("string"!=typeof m||!m)throw new i.JWSInvalid('JWS "alg" (Algorithm) Header Parameter missing or invalid');(0,s.checkKeyType)(m,e,"sign"),y?(d=(0,t.encode)(this.#e),u=(0,o.encode)(d)):(u=this.#e,d=""),this.#t?(p=(0,t.encode)(JSON.stringify(this.#t)),h=(0,o.encode)(p)):(p="",h=new Uint8Array);let x=(0,o.concat)(h,(0,o.encode)("."),u),E=await (0,c.normalizeKey)(e,m),_=await (0,r.sign)(m,E,x),v={signature:(0,t.encode)(_),payload:d};return this.#r&&(v.header=this.#r),this.#t&&(v.protected=p),v}}class u{#n;constructor(e){this.#n=new d(e)}setProtectedHeader(e){return this.#n.setProtectedHeader(e),this}async sign(e,t){let r=await this.#n.sign(e,t);if(void 0===r.payload)throw TypeError("use the flattened module for creating JWS with b64: false");return`${r.protected}.${r.payload}.${r.signature}`}}var p=e.i(224472);class h{#t;#i;constructor(e={}){this.#i=new p.JWTClaimsBuilder(e)}setIssuer(e){return this.#i.iss=e,this}setSubject(e){return this.#i.sub=e,this}setAudience(e){return this.#i.aud=e,this}setJti(e){return this.#i.jti=e,this}setNotBefore(e){return this.#i.nbf=e,this}setExpirationTime(e){return this.#i.exp=e,this}setIssuedAt(e){return this.#i.iat=e,this}setProtectedHeader(e){return this.#t=e,this}async sign(e,t){let r=new u(this.#i.data());if(r.setProtectedHeader(this.#t),Array.isArray(this.#t?.crit)&&this.#t.crit.includes("b64")&&!1===this.#t.b64)throw new i.JWTInvalid("JWTs MUST NOT use unencoded payload");return r.sign(e,t)}}e.s(["SignJWT",()=>h],827957)},982406,e=>{"use strict";var t=e.i(250875);async function r(){return await (0,t.getConsistentMachineId)()}e.s(["getMachineId",()=>r])},307488,e=>e.a(async(t,r)=>{try{e.i(245272);var n=e.i(385498),i=e.i(548941),o=e.i(982406),s=e.i(312215),a=e.i(6751),c=e.i(639173),l=e.i(444675),d=e.i(25687),u=t([a]);async function p(){try{let e=await (0,o.getMachineId)();if(!e)return;await (0,c.syncToCloud)(e)}catch(e){console.error("[Usage API] Error syncing to cloud:",e)}}async function h(e){let t=(0,a.getExecutor)(e.provider),r={accessToken:e.accessToken,refreshToken:e.refreshToken,expiresAt:e.tokenExpiresAt,providerSpecificData:e.providerSpecificData,copilotToken:e.providerSpecificData?.copilotToken,copilotTokenExpiresAt:e.providerSpecificData?.copilotTokenExpiresAt};if(!t.needsRefresh(r))return{connection:e,refreshed:!1};let i=await t.refreshCredentials(r,console);if(!i){if("github"===e.provider&&e.accessToken)return{connection:e,refreshed:!1};throw Error("Failed to refresh credentials. Please re-authorize the connection.")}let o={updatedAt:new Date().toISOString()};return i.accessToken&&(o.accessToken=i.accessToken),i.refreshToken&&(o.refreshToken=i.refreshToken),i.expiresIn?o.tokenExpiresAt=new Date(Date.now()+1e3*i.expiresIn).toISOString():i.expiresAt&&(o.tokenExpiresAt=i.expiresAt),(i.copilotToken||i.copilotTokenExpiresAt)&&(o.providerSpecificData={...e.providerSpecificData,copilotToken:i.copilotToken,copilotTokenExpiresAt:i.copilotTokenExpiresAt}),await (0,n.updateProviderConnection)(e.id,o),{connection:{...e,...o},refreshed:!0}}async function f(e,{params:t}){try{var r;let{connectionId:e}=await t,o=await (0,n.getProviderConnectionById)(e);if(!o)return Response.json({error:"Connection not found"},{status:404});if("oauth"!==o.authType)return Response.json({message:"Usage not available for API key connections"});let a=await (0,i.resolveProxyForConnection)(e),{usage:c,refreshed:u}=await (0,l.runWithProxyContext)(a?.proxy||null,async()=>{let e=o,t=!1;try{let r=await h(e);e=r.connection,(t=r.refreshed)&&await p()}catch(e){throw console.error("[Usage API] Credential refresh failed:",e),e}let r=await (0,s.getUsageForProvider)(e);return o=e,{usage:r,refreshed:t}}).catch(e=>{if(e?.message?.includes?.("refresh")||e?.message?.includes?.("Credential"))return{__authError:!0,message:e.message};throw e});if(c?.__authError)return Response.json({error:`Credential refresh failed: ${c.message}`},{status:401});r=c?.quotas,null===r||"object"!=typeof r||Array.isArray(r)||(0,d.setQuotaCache)(e,o.provider,c.quotas);let f="string"==typeof c?.message?c.message.toLowerCase():"";if((f.includes("token expired")||f.includes("access denied")||f.includes("re-authenticate")||f.includes("unauthorized"))&&"expired"!==o.testStatus)try{await (0,n.updateProviderConnection)(o.id,{testStatus:"expired",lastErrorType:"token_expired",lastErrorAt:new Date().toISOString()})}catch(e){console.error("[Usage API] Failed to sync expired status to DB:",e)}return Response.json(c)}catch(e){return console.error("[Usage API] Error fetching usage:",e),console.error("[Usage API] Error stack:",e.stack),Response.json({error:e.message},{status:500})}}[a]=u.then?(await u)():u,e.s(["GET",()=>f]),r()}catch(e){r(e)}},!1),589356,e=>e.a(async(t,r)=>{try{var n=e.i(747909),i=e.i(174017),o=e.i(996250),s=e.i(759756),a=e.i(561916),c=e.i(174677),l=e.i(869741),d=e.i(316795),u=e.i(487718),p=e.i(995169),h=e.i(47587),f=e.i(666012),g=e.i(570101),y=e.i(626937),m=e.i(10372),x=e.i(193695);e.i(52474);var E=e.i(600220),_=e.i(307488),v=t([_]);[_]=v.then?(await v)():v;let R=new n.AppRouteRouteModule({definition:{kind:i.RouteKind.APP_ROUTE,page:"/api/usage/[connectionId]/route",pathname:"/api/usage/[connectionId]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/usage/[connectionId]/route.ts",nextConfigOutput:"standalone",userland:_}),{workAsyncStorage:S,workUnitAsyncStorage:I,serverHooks:C}=R;function A(){return(0,o.patchFetch)({workAsyncStorage:S,workUnitAsyncStorage:I})}async function w(e,t,r){R.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let n="/api/usage/[connectionId]/route";n=n.replace(/\/index$/,"")||"/";let o=await R.prepare(e,t,{srcPage:n,multiZoneDraftMode:!1});if(!o)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:_,params:v,nextConfig:A,parsedUrl:w,isDraftMode:S,prerenderManifest:I,routerServerContext:C,isOnDemandRevalidate:T,revalidateOnlyGenerated:b,resolvedPathname:O,clientReferenceManifest:P,serverActionsManifest:D}=o,k=(0,l.normalizeAppPath)(n),N=!!(I.dynamicRoutes[k]||I.routes[O]),U=async()=>((null==C?void 0:C.render404)?await C.render404(e,t,w,!1):t.end("This page could not be found"),null);if(N&&!S){let e=!!I.routes[O],t=I.dynamicRoutes[k];if(t&&!1===t.fallback&&!e){if(A.experimental.adapterPath)return await U();throw new x.NoFallbackError}}let j=null;!N||R.isDev||S||(j=O,j="/index"===j?"/":j);let H=!0===R.isDev||!N,L=N&&!H;D&&P&&(0,c.setManifestsSingleton)({page:n,clientReferenceManifest:P,serverActionsManifest:D});let J=e.method||"GET",M=(0,a.getTracer)(),W=M.getActiveScopeSpan(),$={params:v,prerenderManifest:I,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:H,incrementalCache:(0,s.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:A.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,i)=>R.onRequestError(e,t,n,i,C)},sharedContext:{buildId:_}},q=new d.NodeNextRequest(e),F=new d.NodeNextResponse(t),K=u.NextRequestAdapter.fromNodeNextRequest(q,(0,u.signalFromNodeResponse)(t));try{let o=async e=>R.handle(K,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=M.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let i=r.get("next.route");if(i){let t=`${J} ${i}`;e.setAttributes({"next.route":i,"http.route":i,"next.span_name":t}),e.updateName(t)}else e.updateName(`${J} ${n}`)}),c=!!(0,s.getRequestMeta)(e,"minimalMode"),l=async s=>{var a,l;let d=async({previousCacheEntry:i})=>{try{if(!c&&T&&b&&!i)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await o(s);e.fetchMetrics=$.renderOpts.fetchMetrics;let a=$.renderOpts.pendingWaitUntil;a&&r.waitUntil&&(r.waitUntil(a),a=void 0);let l=$.renderOpts.collectedTags;if(!N)return await (0,f.sendResponse)(q,F,n,$.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,i=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:$.renderOpts.collectedExpire;return{value:{kind:E.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:i}}}}catch(t){throw(null==i?void 0:i.isStale)&&await R.onRequestError(e,t,{routerKind:"App Router",routePath:n,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:T})},!1,C),t}},u=await R.handleResponse({req:e,nextConfig:A,cacheKey:j,routeKind:i.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:T,revalidateOnlyGenerated:b,responseGenerator:d,waitUntil:r.waitUntil,isMinimalMode:c});if(!N)return null;if((null==u||null==(a=u.value)?void 0:a.kind)!==E.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});c||t.setHeader("x-nextjs-cache",T?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,g.fromNodeOutgoingHttpHeaders)(u.value.headers);return c&&N||p.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,y.getCacheControlHeader)(u.cacheControl)),await (0,f.sendResponse)(q,F,new Response(u.value.body,{headers:p,status:u.value.status||200})),null};W?await l(W):await M.withPropagatedContext(e.headers,()=>M.trace(p.BaseServerSpan.handleRequest,{spanName:`${J} ${n}`,kind:a.SpanKind.SERVER,attributes:{"http.method":J,"http.target":e.url}},l))}catch(t){if(t instanceof x.NoFallbackError||await R.onRequestError(e,t,{routerKind:"App Router",routePath:k,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:T})},!1,C),N)throw t;return await (0,f.sendResponse)(q,F,new Response(null,{status:500})),null}}e.s(["handler",()=>w,"patchFetch",()=>A,"routeModule",()=>R,"serverHooks",()=>C,"workAsyncStorage",()=>S,"workUnitAsyncStorage",()=>I]),r()}catch(e){r(e)}},!1),606102,e=>{e.v(e=>Promise.resolve().then(()=>e(548941)))},789543,e=>{e.v(e=>Promise.resolve().then(()=>e(385498)))},579042,e=>{e.v(t=>Promise.all(["server/chunks/src_shared_utils_apiKey_ts_fa113e09._.js"].map(t=>e.l(t))).then(()=>t(65448)))},49794,e=>{e.v(t=>Promise.all(["server/chunks/src_shared_constants_pricing_ts_65de0558._.js"].map(t=>e.l(t))).then(()=>t(404503)))},386305,e=>{e.v(e=>Promise.resolve().then(()=>e(878947)))},485685,e=>{e.v(e=>Promise.resolve().then(()=>e(254799)))},605589,e=>{e.v(t=>Promise.all(["server/chunks/src_lib_localDb_ts_83220848._.js"].map(t=>e.l(t))).then(()=>t(969738)))},901259,e=>{e.v(t=>Promise.all(["server/chunks/[externals]_http2_740a89f0._.js"].map(t=>e.l(t))).then(()=>t(925328)))}];
5
5
 
6
6
  //# sourceMappingURL=%5Broot-of-the-server%5D__5dcab57b._.js.map
@@ -1,4 +1,4 @@
1
1
  module.exports=[918622,(e,t,a)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,a)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,a)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},324725,(e,t,a)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},270406,(e,t,a)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},193695,(e,t,a)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},442315,(e,t,a)=>{"use strict";t.exports=e.r(918622)},347540,(e,t,a)=>{"use strict";t.exports=e.r(442315).vendored["react-rsc"].React},819481,(e,t,a)=>{"use strict";var r=Object.defineProperty,i=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,n=Object.prototype.hasOwnProperty,s={},l={RequestCookies:()=>v,ResponseCookies:()=>f,parseCookie:()=>p,parseSetCookie:()=>u,stringifyCookie:()=>d};for(var c in l)r(s,c,{get:l[c],enumerable:!0});function d(e){var t;let a=["path"in e&&e.path&&`Path=${e.path}`,"expires"in e&&(e.expires||0===e.expires)&&`Expires=${("number"==typeof e.expires?new Date(e.expires):e.expires).toUTCString()}`,"maxAge"in e&&"number"==typeof e.maxAge&&`Max-Age=${e.maxAge}`,"domain"in e&&e.domain&&`Domain=${e.domain}`,"secure"in e&&e.secure&&"Secure","httpOnly"in e&&e.httpOnly&&"HttpOnly","sameSite"in e&&e.sameSite&&`SameSite=${e.sameSite}`,"partitioned"in e&&e.partitioned&&"Partitioned","priority"in e&&e.priority&&`Priority=${e.priority}`].filter(Boolean),r=`${e.name}=${encodeURIComponent(null!=(t=e.value)?t:"")}`;return 0===a.length?r:`${r}; ${a.join("; ")}`}function p(e){let t=new Map;for(let a of e.split(/; */)){if(!a)continue;let e=a.indexOf("=");if(-1===e){t.set(a,"true");continue}let[r,i]=[a.slice(0,e),a.slice(e+1)];try{t.set(r,decodeURIComponent(null!=i?i:"true"))}catch{}}return t}function u(e){if(!e)return;let[[t,a],...r]=p(e),{domain:i,expires:o,httponly:n,maxage:s,path:l,samesite:c,secure:d,partitioned:u,priority:v}=Object.fromEntries(r.map(([e,t])=>[e.toLowerCase().replace(/-/g,""),t]));{var f,y,g={name:t,value:decodeURIComponent(a),domain:i,...o&&{expires:new Date(o)},...n&&{httpOnly:!0},..."string"==typeof s&&{maxAge:Number(s)},path:l,...c&&{sameSite:h.includes(f=(f=c).toLowerCase())?f:void 0},...d&&{secure:!0},...v&&{priority:m.includes(y=(y=v).toLowerCase())?y:void 0},...u&&{partitioned:!0}};let e={};for(let t in g)g[t]&&(e[t]=g[t]);return e}}t.exports=((e,t,a,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of o(t))n.call(e,a)||void 0===a||r(e,a,{get:()=>t[a],enumerable:!(s=i(t,a))||s.enumerable});return e})(r({},"__esModule",{value:!0}),s);var h=["strict","lax","none"],m=["low","medium","high"],v=class{constructor(e){this._parsed=new Map,this._headers=e;const t=e.get("cookie");if(t)for(const[e,a]of p(t))this._parsed.set(e,{name:e,value:a})}[Symbol.iterator](){return this._parsed[Symbol.iterator]()}get size(){return this._parsed.size}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let a=Array.from(this._parsed);if(!e.length)return a.map(([e,t])=>t);let r="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return a.filter(([e])=>e===r).map(([e,t])=>t)}has(e){return this._parsed.has(e)}set(...e){let[t,a]=1===e.length?[e[0].name,e[0].value]:e,r=this._parsed;return r.set(t,{name:t,value:a}),this._headers.set("cookie",Array.from(r).map(([e,t])=>d(t)).join("; ")),this}delete(e){let t=this._parsed,a=Array.isArray(e)?e.map(e=>t.delete(e)):t.delete(e);return this._headers.set("cookie",Array.from(t).map(([e,t])=>d(t)).join("; ")),a}clear(){return this.delete(Array.from(this._parsed.keys())),this}[Symbol.for("edge-runtime.inspect.custom")](){return`RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(e=>`${e.name}=${encodeURIComponent(e.value)}`).join("; ")}},f=class{constructor(e){var t,a,r;this._parsed=new Map,this._headers=e;const i=null!=(r=null!=(a=null==(t=e.getSetCookie)?void 0:t.call(e))?a:e.get("set-cookie"))?r:[];for(const e of Array.isArray(i)?i:function(e){if(!e)return[];var t,a,r,i,o,n=[],s=0;function l(){for(;s<e.length&&/\s/.test(e.charAt(s));)s+=1;return s<e.length}for(;s<e.length;){for(t=s,o=!1;l();)if(","===(a=e.charAt(s))){for(r=s,s+=1,l(),i=s;s<e.length&&"="!==(a=e.charAt(s))&&";"!==a&&","!==a;)s+=1;s<e.length&&"="===e.charAt(s)?(o=!0,s=i,n.push(e.substring(t,r)),t=s):s=r+1}else s+=1;(!o||s>=e.length)&&n.push(e.substring(t,e.length))}return n}(i)){const t=u(e);t&&this._parsed.set(t.name,t)}}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let a=Array.from(this._parsed.values());if(!e.length)return a;let r="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return a.filter(e=>e.name===r)}has(e){return this._parsed.has(e)}set(...e){let[t,a,r]=1===e.length?[e[0].name,e[0].value,e[0]]:e,i=this._parsed;return i.set(t,function(e={name:"",value:""}){return"number"==typeof e.expires&&(e.expires=new Date(e.expires)),e.maxAge&&(e.expires=new Date(Date.now()+1e3*e.maxAge)),(null===e.path||void 0===e.path)&&(e.path="/"),e}({name:t,value:a,...r})),function(e,t){for(let[,a]of(t.delete("set-cookie"),e)){let e=d(a);t.append("set-cookie",e)}}(i,this._headers),this}delete(...e){let[t,a]="string"==typeof e[0]?[e[0]]:[e[0].name,e[0]];return this.set({...a,name:t,value:"",expires:new Date(0)})}[Symbol.for("edge-runtime.inspect.custom")](){return`ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(d).join("; ")}}},677850,e=>e.a(async(t,a)=>{try{let t=await e.y("zod");e.n(t),a()}catch(e){a(e)}},!0),200392,e=>e.a(async(t,a)=>{try{var r=e.i(677850),i=t([r]);function o(e,t){let a=e.safeParse(t);if(a.success)return{success:!0,data:a.data};let r=Array.isArray(a.error?.issues)?a.error.issues:[];return{success:!1,error:{message:"Invalid request",details:r.map(e=>({field:e.path.join("."),message:e.message}))}}}function n(e){return!1===e.success}[r]=i.then?(await i)():i,r.z.object({password:r.z.string().min(1,"Password is required").max(200)}),e.s(["isValidationFailure",()=>n,"validateBody",()=>o]),a()}catch(e){a(e)}},!1),180725,e=>{"use strict";e.i(245272),e.s([])},102835,e=>e.a(async(t,a)=>{try{var r=e.i(677850),i=t([r]);[r]=i.then?(await i)():i;let n=r.z.object({id:r.z.string().min(1),alias:r.z.string().min(1),name:r.z.string().min(1),icon:r.z.string().min(1),color:r.z.string().regex(/^#[0-9A-Fa-f]{6}$/,"Must be a valid hex color (#RRGGBB)"),textIcon:r.z.string().optional(),website:r.z.string().url().optional(),passthroughModels:r.z.boolean().optional(),deprecated:r.z.boolean().optional(),deprecationReason:r.z.string().optional(),hasFree:r.z.boolean().optional(),freeNote:r.z.string().optional(),authHint:r.z.string().optional(),apiHint:r.z.string().optional()}),s=r.z.record(r.z.string(),n);function o(e,t){let a=s.safeParse(e);if(!a.success){let e=a.error.issues.map(e=>` ${e.path.join(".")}: ${e.message}`).join("\n");throw console.error(`[PROVIDER VALIDATION] ${t} has invalid entries:
2
- ${e}`),Error(`Provider validation failed for ${t}`)}}e.s(["validateProviders",()=>o]),a()}catch(e){a(e)}},!1),963219,e=>e.a(async(t,a)=>{try{var r=e.i(102835),i=t([r]);[r]=i.then?(await i)():i;let s={iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gc",name:"Gemini CLI",icon:"terminal",color:"#4285F4",deprecated:!0,deprecationReason:"Google restricts third-party OAuth usage for Gemini CLI (Mar 2026). Pro models require paid plans. Use 'gemini' (API key) provider instead."},kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"}},l={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:"ag",name:"Antigravity",icon:"rocket_launch",color:"#F59E0B"},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6"},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},"kimi-coding":{id:"kimi-coding",alias:"kmc",name:"Kimi Coding",icon:"psychology",color:"#1E40AF",textIcon:"KC"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},c={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai"},glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},"bailian-coding-plan":{id:"bailian-coding-plan",alias:"bcp",name:"Alibaba Coding Plan",icon:"code",color:"#FF6A00",textIcon:"BCP",website:"https://www.alibabacloud.com/help/en/model-studio/coding-plan"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},"kimi-coding-apikey":{id:"kimi-coding-apikey",alias:"kmca",name:"Kimi Coding (API Key)",icon:"psychology",color:"#1E40AF",textIcon:"KC",website:"https://kimi.com"},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com"},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},alicode:{id:"alicode",alias:"alicode",name:"Alibaba",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://bailian.console.aliyun.com"},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://modelstudio.console.alibabacloud.com"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com"},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com"},gemini:{id:"gemini",alias:"gemini",name:"Gemini (Google AI Studio)",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev",hasFree:!0,freeNote:"Free forever: 1,500 req/day for Gemini 2.5 Flash — no credit card, get key at aistudio.google.com"},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com",hasFree:!0,freeNote:"Free tier: 30 RPM / 14.4K RPD — no credit card"},blackbox:{id:"blackbox",alias:"bb",name:"Blackbox AI",icon:"view_in_ar",color:"#1A1A2E",textIcon:"BB",website:"https://blackbox.ai"},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai"},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai"},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai"},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai",hasFree:!0,freeNote:"$25 signup credits + 3 permanently free models: Llama 3.3 70B, Vision, DeepSeek-R1 distill"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://inference.cerebras.ai",hasFree:!0,freeNote:"Free: 1M tokens/day, 60K TPM — world's fastest inference"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://build.nvidia.com",hasFree:!0,freeNote:"Free dev access: ~40 RPM, 70+ models (Kimi K2.5, GLM 4.7, DeepSeek V3.2...)"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com"},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com"},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai"},"ollama-cloud":{id:"ollama-cloud",alias:"ollamacloud",name:"Ollama Cloud",icon:"cloud",color:"#58A6FF",textIcon:"OC",website:"https://ollama.com/settings/api-keys"},elevenlabs:{id:"elevenlabs",alias:"el",name:"ElevenLabs",icon:"record_voice_over",color:"#6C47FF",textIcon:"EL",website:"https://elevenlabs.io"},cartesia:{id:"cartesia",alias:"cartesia",name:"Cartesia",icon:"spatial_audio",color:"#FF4F8B",textIcon:"CA",website:"https://cartesia.ai"},playht:{id:"playht",alias:"playht",name:"PlayHT",icon:"play_circle",color:"#00B4D8",textIcon:"PH",website:"https://play.ht"},inworld:{id:"inworld",alias:"inworld",name:"Inworld",icon:"voice_chat",color:"#7B2EF2",textIcon:"IW",website:"https://inworld.ai"},sdwebui:{id:"sdwebui",alias:"sdwebui",name:"SD WebUI",icon:"brush",color:"#FF7043",textIcon:"SD",website:"https://github.com/AUTOMATIC1111/stable-diffusion-webui"},comfyui:{id:"comfyui",alias:"comfyui",name:"ComfyUI",icon:"account_tree",color:"#4CAF50",textIcon:"CF",website:"https://github.com/comfyanonymous/ComfyUI"},huggingface:{id:"huggingface",alias:"hf",name:"HuggingFace",icon:"face",color:"#FFD21E",textIcon:"HF",website:"https://huggingface.co",hasFree:!0,freeNote:"Free Inference API for thousands of models (Whisper, VITS, SDXL…)"},synthetic:{id:"synthetic",alias:"synthetic",name:"Synthetic",icon:"verified_user",color:"#6366F1",textIcon:"SY",website:"https://synthetic.new",passthroughModels:!0},"kilo-gateway":{id:"kilo-gateway",alias:"kg",name:"Kilo Gateway",icon:"hub",color:"#617A91",textIcon:"KG",website:"https://kilo.ai",passthroughModels:!0},vertex:{id:"vertex",alias:"vertex",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VA",website:"https://cloud.google.com/vertex-ai",authHint:"Provide Service Account JSON or OAuth access_token"},zai:{id:"zai",alias:"zai",name:"Z.AI (GLM-5)",icon:"psychology",color:"#2563EB",textIcon:"ZA",website:"https://open.bigmodel.cn",apiHint:"API key from https://open.bigmodel.cn/usercenter/apikeys"},"perplexity-search":{id:"perplexity-search",alias:"pplx-search",name:"Perplexity Search",icon:"search",color:"#20808D",textIcon:"PS",website:"https://docs.perplexity.ai/guides/search-quickstart",authHint:"Same API key as Perplexity (pplx-...)"},"serper-search":{id:"serper-search",alias:"serper-search",name:"Serper Search",icon:"search",color:"#4285F4",textIcon:"SP",website:"https://serper.dev",authHint:"API key from serper.dev dashboard"},"brave-search":{id:"brave-search",alias:"brave-search",name:"Brave Search",icon:"travel_explore",color:"#FB542B",textIcon:"BR",website:"https://brave.com/search/api",authHint:"Subscription token from Brave Search API dashboard"},"exa-search":{id:"exa-search",alias:"exa-search",name:"Exa Search",icon:"neurology",color:"#1E40AF",textIcon:"EX",website:"https://exa.ai",authHint:"API key from dashboard.exa.ai"},"tavily-search":{id:"tavily-search",alias:"tavily-search",name:"Tavily Search",icon:"manage_search",color:"#5B4FDB",textIcon:"TV",website:"https://tavily.com",authHint:"API key from app.tavily.com (format: tvly-...)"},"opencode-zen":{id:"opencode-zen",alias:"opencode-zen",name:"OpenCode Zen",icon:"opencode",color:"#6366f1",website:"https://opencode.ai/zen"},"opencode-go":{id:"opencode-go",alias:"opencode-go",name:"OpenCode Go",icon:"opencode",color:"#6366f1",website:"https://opencode.ai/zen/go"},alibaba:{id:"alibaba",alias:"ali",name:"Alibaba Cloud (DashScope)",icon:"cloud_queue",color:"#FF6600",textIcon:"AL",website:"https://dashscope-intl.aliyuncs.com",hasFree:!1},longcat:{id:"longcat",alias:"lc",name:"LongCat AI",icon:"auto_awesome",color:"#FF6B9D",textIcon:"LC",website:"https://longcat.chat",hasFree:!0,freeNote:"50M tokens/day (Flash-Lite) + 500K/day (Chat/Thinking) — 100% free while public beta"},pollinations:{id:"pollinations",alias:"pol",name:"Pollinations AI",icon:"local_florist",color:"#4CAF50",textIcon:"PO",website:"https://pollinations.ai",hasFree:!0,freeNote:"No API key needed — access GPT-5, Claude, Gemini, DeepSeek V3, Llama 4 free (1 req/15s)"},puter:{id:"puter",alias:"pu",name:"Puter AI",icon:"cloud_circle",color:"#6366F1",textIcon:"PU",website:"https://puter.com",hasFree:!0,freeNote:"500+ models (GPT-5, Claude Opus 4, Gemini 3 Pro, Grok 4, DeepSeek V3...) — Users pay via free Puter account",passthroughModels:!0,authHint:"Get token at puter.com/dashboard → Copy Auth Token"},"cloudflare-ai":{id:"cloudflare-ai",alias:"cf",name:"Cloudflare Workers AI",icon:"cloud",color:"#F48120",textIcon:"CF",website:"https://developers.cloudflare.com/workers-ai/",hasFree:!0,freeNote:"Free 10K Neurons/day: ~150 LLM responses or 500s Whisper audio — edge inference globally",authHint:"Requires API Token AND Account ID (found at dash.cloudflare.com)"},scaleway:{id:"scaleway",alias:"scw",name:"Scaleway AI",icon:"cloud",color:"#4F0599",textIcon:"SCW",website:"https://www.scaleway.com/en/ai/generative-apis/",hasFree:!0,freeNote:"1M free tokens for new accounts — EU/GDPR compliant (Paris), Qwen3 235B & Llama 70B"},aimlapi:{id:"aimlapi",alias:"aiml",name:"AI/ML API",icon:"hub",color:"#6366F1",textIcon:"AI",website:"https://aimlapi.com",hasFree:!0,freeNote:"$0.025/day free credits — 200+ models (GPT-4o, Claude, Gemini, Llama) via single endpoint",passthroughModels:!0}},d="openai-compatible-",p="anthropic-compatible-";function o(e){return"string"==typeof e&&e.startsWith(d)}function n(e){return"string"==typeof e&&e.startsWith(p)}let u={...s,...l,...c},h=Object.values(u).reduce((e,t)=>(e[t.alias]=t.id,e),{});Object.values(u).reduce((e,t)=>(e[t.id]=t.alias,e),{}),(0,r.validateProviders)(s,"FREE_PROVIDERS"),(0,r.validateProviders)(l,"OAUTH_PROVIDERS"),(0,r.validateProviders)(c,"APIKEY_PROVIDERS"),e.s(["AI_PROVIDERS",0,u,"ALIAS_TO_ID",0,h,"ANTHROPIC_COMPATIBLE_PREFIX",0,p,"APIKEY_PROVIDERS",0,c,"FREE_PROVIDERS",0,s,"OAUTH_PROVIDERS",0,l,"OPENAI_COMPATIBLE_PREFIX",0,d,"isAnthropicCompatibleProvider",()=>n,"isOpenAICompatibleProvider",()=>o]),a()}catch(e){a(e)}},!1),383368,e=>e.a(async(t,a)=>{try{var r=e.i(828059),i=e.i(963219),o=t([i]);[i]=o.then?(await o)():o;let x=new Set(["openai","openai-responses"]),I=new Set(["gemini","gemini-cli"]);function n(e){return(e||"").trim().replace(/\/$/,"")}function s(e){return{"Content-Type":"application/json",Authorization:`Bearer ${e}`}}async function l({provider:e,apiKey:t,baseUrl:a,providerSpecificData:r={},modelId:o="gpt-4o-mini",modelsUrl:l}){if(!a)return{valid:!1,error:"Missing base URL"};let c=l||function(e){let t=n(e);if(!t)return"";for(let e of["/chat/completions","/responses","/chat","/messages"])if(t.endsWith(e))return`${t.slice(0,-e.length)}/models`;return`${t}/models`}(a);if(!c)return{valid:!1,error:"Invalid models endpoint"};let d=await fetch(c,{method:"GET",headers:s(t)});if(d.ok)return{valid:!0,error:null};if(401===d.status||403===d.status)return{valid:!1,error:"Invalid API key"};let p=function(e,t,a={}){let r=n(t);return r?(0,i.isOpenAICompatibleProvider)(e)?a?.apiType==="responses"?`${r}/responses`:`${r}/chat/completions`:r.endsWith("/chat/completions")||r.endsWith("/responses")||r.endsWith("/chat")?r:r.endsWith("/v1")?`${r}/chat/completions`:r:""}(e,a,r);if(!p)return{valid:!1,error:`Validation failed: ${d.status}`};let u=r?.validationModelId||o,h=await fetch(p,{method:"POST",headers:s(t),body:JSON.stringify({model:u,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 c({apiKey:e,baseUrl:t,modelId:a,headers:r={},providerSpecificData:i={}}){if(!t)return{valid:!1,error:"Missing base URL"};let o={"Content-Type":"application/json",...r};o["x-api-key"]||o["X-API-Key"]||(o["x-api-key"]=e),o["anthropic-version"]||o["Anthropic-Version"]||(o["anthropic-version"]="2023-06-01");let n=i?.validationModelId||a||"claude-3-5-sonnet-20241022",s=await fetch(t,{method:"POST",headers:o,body:JSON.stringify({model:n,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 d({apiKey:e,baseUrl:t}){if(!t)return{valid:!1,error:"Missing base URL"};let a=t.includes("?")?"&":"?",r=await fetch(`${t}${a}key=${encodeURIComponent(e)}`,{method:"GET",headers:{"Content-Type":"application/json"}});return r.ok?{valid:!0,error:null}:401===r.status||403===r.status?{valid:!1,error:"Invalid API key"}:{valid:!1,error:`Validation failed: ${r.status}`}}async function p({apiKey:e}){try{let t=await fetch("https://api.deepgram.com/v1/auth/token",{method:"GET",headers:{Authorization:`Token ${e}`}});if(t.ok)return{valid:!0,error:null};if(401===t.status||403===t.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${t.status}`}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function u({apiKey:e}){try{let t=await fetch("https://api.assemblyai.com/v2/transcript?limit=1",{method:"GET",headers:{Authorization:e,"Content-Type":"application/json"}});if(t.ok)return{valid:!0,error:null};if(401===t.status||403===t.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${t.status}`}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function h({apiKey:e}){try{let t=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===t.status||403===t.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}){try{let t=await fetch("https://api.elevenlabs.io/v1/voices",{method:"GET",headers:{"xi-api-key":e,"Content-Type":"application/json"}});if(t.ok)return{valid:!0,error:null};if(401===t.status||403===t.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${t.status}`}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function v({apiKey:e}){try{let t=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===t.status||403===t.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,providerSpecificData:t={}}){try{let a=n(t.baseUrl)||"https://coding-intl.dashscope.aliyuncs.com/apps/anthropic/v1",r=a.endsWith("/messages")?a.slice(0,-9):a,i=`${r}/messages`,o=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===o.status||403===o.status)return{valid:!1,error:"Invalid API key"};if(o.status>=400&&o.status<500||o.ok)return{valid:!0,error:null};return{valid:!1,error:`Validation failed: ${o.status}`}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function y({apiKey:e,providerSpecificData:t={}}){let a=n(t.baseUrl);if(!a)return{valid:!1,error:"No base URL configured for OpenAI compatible provider"};let r="string"==typeof t?.validationModelId?t.validationModelId.trim():"",i=!1;try{let t=await fetch(`${a}/models`,{method:"GET",headers:s(e)});if(i=!0,t.ok)return{valid:!0,error:null,method:"models_endpoint"};if(401===t.status||403===t.status)return{valid:!1,error:"Invalid API key"};if(429===t.status)return{valid:!0,error:null,method:"models_endpoint",warning:"Rate limited, but credentials are valid"}}catch{}if(!r)return{valid:!1,error:"Endpoint /models unavailable. Provide a Model ID to validate via /chat/completions."};let o=t.apiType||"chat",l=`${a}${"responses"===o?"/responses":"/chat/completions"}`;try{let t=await fetch(l,{method:"POST",headers:s(e),body:JSON.stringify({model:r,messages:[{role:"user",content:"test"}],max_tokens:1})});if(t.ok)return{valid:!0,error:null,method:"chat_completions"};if(401===t.status||403===t.status)return{valid:!1,error:"Invalid API key"};if(429===t.status)return{valid:!0,error:null,method:"chat_completions",warning:"Rate limited, but credentials are valid"};if(400===t.status)return{valid:!0,error:null,method:"inference_available",warning:"Model ID may be invalid, but credentials are valid"};if(t.status>=400&&t.status<500)return{valid:!0,error:null,method:"inference_available"};if(t.status>=500)return{valid:!1,error:`Provider unavailable (${t.status})`}}catch{}if(!i)return{valid:!1,error:"Connection failed while testing /chat/completions"};try{let t=await fetch(a,{method:"GET",headers:s(e),signal:AbortSignal.timeout(5e3)});if(t.status<500)return{valid:!0,error:null};return{valid:!1,error:`Provider unavailable (${t.status})`}}catch(e){return{valid:!1,error:e.message||"Connection failed"}}}async function g({apiKey:e,providerSpecificData:t={}}){let a=n(t.baseUrl);if(!a)return{valid:!1,error:"No base URL configured for Anthropic compatible provider"};a.endsWith("/messages")&&(a=a.slice(0,-9));let r={"Content-Type":"application/json","x-api-key":e,"anthropic-version":"2023-06-01",Authorization:`Bearer ${e}`};try{let e=await fetch(`${a}/models`,{method:"GET",headers:r});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=t?.validationModelId||"claude-3-5-sonnet-20241022";try{let e=await fetch(`${a}/messages`,{method:"POST",headers:r,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 b(e,t){try{let a=await fetch(e,t);if(a.ok)return{valid:!0,error:null,unsupported:!1};if(401===a.status||403===a.status)return{valid:!1,error:"Invalid API key",unsupported:!1};if(a.status<500)return{valid:!0,error:null,unsupported:!1};return{valid:!1,error:`Validation failed: ${a.status}`,unsupported:!1}}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}}let A={"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:t,providerSpecificData:a={}}){if(!e||!t)return{valid:!1,error:"Provider and API key required",unsupported:!1};if((0,i.isOpenAICompatibleProvider)(e))try{return await y({apiKey:t,providerSpecificData:a})}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}if((0,i.isAnthropicCompatibleProvider)(e))try{return await g({apiKey:t,providerSpecificData:a})}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}let o={deepgram:p,assemblyai:u,nanobanana:h,elevenlabs:m,inworld:v,"bailian-coding-plan":f,longcat:async({apiKey:e})=>{try{let t=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===t.status||403===t.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(A).map(([e,t])=>[e,({apiKey:e})=>{let{url:a,init:r}=t(e);return b(a,r)}]))};if(o[e])try{return await o[e]({apiKey:t,providerSpecificData:a})}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}let w=(0,r.getRegistryEntry)(e);if(!w)return{valid:!1,error:"Provider validation not supported",unsupported:!0};let P=w.models?.[0]?.id||null,k=w.testKeyBaseUrl?{...w,baseUrl:w.testKeyBaseUrl}:w,C=function(e,t={}){return t?.baseUrl?n(t.baseUrl):e?.baseUrl?n(e.baseUrl):""}(k,a);try{if(x.has(w.format))return await l({provider:e,apiKey:t,baseUrl:C,providerSpecificData:a,modelId:P,modelsUrl:w.modelsUrl});if("claude"===w.format){let e=`${C}${w.urlSuffix||""}`,r={...w.headers||{}};return"x-api-key"===(w.authHeader||"").toLowerCase()?r["x-api-key"]=t:r.Authorization=`Bearer ${t}`,await c({apiKey:t,baseUrl:e,modelId:P,headers:r,providerSpecificData:a})}if(I.has(w.format))return await d({apiKey:t,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]),a()}catch(e){a(e)}},!1),851380,e=>e.a(async(t,a)=>{try{var r=e.i(89171);e.i(180725);var i=e.i(385498),o=e.i(963219),n=e.i(383368),s=e.i(676088),l=e.i(200392),c=t([o,n,s,l]);async function d(e){let t;try{t=await e.json()}catch{return r.NextResponse.json({error:{message:"Invalid request",details:[{field:"body",message:"Invalid JSON body"}]}},{status:400})}try{let e=(0,l.validateBody)(s.validateProviderApiKeySchema,t);if((0,l.isValidationFailure)(e))return r.NextResponse.json({error:e.error},{status:400});let{provider:a,apiKey:c,validationModelId:d}=e.data,p={validationModelId:d};if((0,o.isOpenAICompatibleProvider)(a)||(0,o.isAnthropicCompatibleProvider)(a)){let e=await (0,i.getProviderNodeById)(a);if(!e){let e=(0,o.isOpenAICompatibleProvider)(a)?"OpenAI":"Anthropic";return r.NextResponse.json({error:`${e} Compatible node not found`},{status:404})}p={...p,baseUrl:e.baseUrl,apiType:e.apiType}}let u=await (0,n.validateProviderApiKey)({provider:a,apiKey:c,providerSpecificData:p});if(u.unsupported)return r.NextResponse.json({error:"Provider validation not supported"},{status:400});return r.NextResponse.json({valid:!!u.valid,error:u.valid?null:u.error||"Invalid API key",warning:u.warning||null,method:u.method||null})}catch(e){return console.log("Error validating API key:",e),r.NextResponse.json({error:"Validation failed"},{status:500})}}[o,n,s,l]=c.then?(await c)():c,e.s(["POST",()=>d]),a()}catch(e){a(e)}},!1),477929,e=>e.a(async(t,a)=>{try{var r=e.i(747909),i=e.i(174017),o=e.i(996250),n=e.i(759756),s=e.i(561916),l=e.i(174677),c=e.i(869741),d=e.i(316795),p=e.i(487718),u=e.i(995169),h=e.i(47587),m=e.i(666012),v=e.i(570101),f=e.i(626937),y=e.i(10372),g=e.i(193695);e.i(52474);var b=e.i(600220),w=e.i(851380),x=t([w]);[w]=x.then?(await x)():x;let P=new r.AppRouteRouteModule({definition:{kind:i.RouteKind.APP_ROUTE,page:"/api/providers/validate/route",pathname:"/api/providers/validate",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/providers/validate/route.ts",nextConfigOutput:"standalone",userland:w}),{workAsyncStorage:k,workUnitAsyncStorage:C,serverHooks:_}=P;function I(){return(0,o.patchFetch)({workAsyncStorage:k,workUnitAsyncStorage:C})}async function A(e,t,a){P.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let r="/api/providers/validate/route";r=r.replace(/\/index$/,"")||"/";let o=await P.prepare(e,t,{srcPage:r,multiZoneDraftMode:!1});if(!o)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:w,params:x,nextConfig:I,parsedUrl:A,isDraftMode:k,prerenderManifest:C,routerServerContext:_,isOnDemandRevalidate:R,revalidateOnlyGenerated:F,resolvedPathname:S,clientReferenceManifest:O,serverActionsManifest:E}=o,T=(0,c.normalizeAppPath)(r),N=!!(C.dynamicRoutes[T]||C.routes[S]),D=async()=>((null==_?void 0:_.render404)?await _.render404(e,t,A,!1):t.end("This page could not be found"),null);if(N&&!k){let e=!!C.routes[S],t=C.dynamicRoutes[T];if(t&&!1===t.fallback&&!e){if(I.experimental.adapterPath)return await D();throw new g.NoFallbackError}}let $=null;!N||P.isDev||k||($=S,$="/index"===$?"/":$);let j=!0===P.isDev||!N,M=N&&!j;E&&O&&(0,l.setManifestsSingleton)({page:r,clientReferenceManifest:O,serverActionsManifest:E});let B=e.method||"GET",U=(0,s.getTracer)(),q=U.getActiveScopeSpan(),V={params:x,prerenderManifest:C,renderOpts:{experimental:{authInterrupts:!!I.experimental.authInterrupts},cacheComponents:!!I.cacheComponents,supportsDynamicResponse:j,incrementalCache:(0,n.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:I.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,i)=>P.onRequestError(e,t,r,i,_)},sharedContext:{buildId:w}},G=new d.NodeNextRequest(e),z=new d.NodeNextResponse(t),L=p.NextRequestAdapter.fromNodeNextRequest(G,(0,p.signalFromNodeResponse)(t));try{let o=async e=>P.handle(L,V).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=U.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let i=a.get("next.route");if(i){let t=`${B} ${i}`;e.setAttributes({"next.route":i,"http.route":i,"next.span_name":t}),e.updateName(t)}else e.updateName(`${B} ${r}`)}),l=!!(0,n.getRequestMeta)(e,"minimalMode"),c=async n=>{var s,c;let d=async({previousCacheEntry:i})=>{try{if(!l&&R&&F&&!i)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await o(n);e.fetchMetrics=V.renderOpts.fetchMetrics;let s=V.renderOpts.pendingWaitUntil;s&&a.waitUntil&&(a.waitUntil(s),s=void 0);let c=V.renderOpts.collectedTags;if(!N)return await (0,m.sendResponse)(G,z,r,V.renderOpts.pendingWaitUntil),null;{let e=await r.blob(),t=(0,v.toNodeOutgoingHttpHeaders)(r.headers);c&&(t[y.NEXT_CACHE_TAGS_HEADER]=c),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==V.renderOpts.collectedRevalidate&&!(V.renderOpts.collectedRevalidate>=y.INFINITE_CACHE)&&V.renderOpts.collectedRevalidate,i=void 0===V.renderOpts.collectedExpire||V.renderOpts.collectedExpire>=y.INFINITE_CACHE?void 0:V.renderOpts.collectedExpire;return{value:{kind:b.CachedRouteKind.APP_ROUTE,status:r.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:i}}}}catch(t){throw(null==i?void 0:i.isStale)&&await P.onRequestError(e,t,{routerKind:"App Router",routePath:r,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:R})},!1,_),t}},p=await P.handleResponse({req:e,nextConfig:I,cacheKey:$,routeKind:i.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:R,revalidateOnlyGenerated:F,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:l});if(!N)return null;if((null==p||null==(s=p.value)?void 0:s.kind)!==b.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==p||null==(c=p.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});l||t.setHeader("x-nextjs-cache",R?"REVALIDATED":p.isMiss?"MISS":p.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,v.fromNodeOutgoingHttpHeaders)(p.value.headers);return l&&N||u.delete(y.NEXT_CACHE_TAGS_HEADER),!p.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,f.getCacheControlHeader)(p.cacheControl)),await (0,m.sendResponse)(G,z,new Response(p.value.body,{headers:u,status:p.value.status||200})),null};q?await c(q):await U.withPropagatedContext(e.headers,()=>U.trace(u.BaseServerSpan.handleRequest,{spanName:`${B} ${r}`,kind:s.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},c))}catch(t){if(t instanceof g.NoFallbackError||await P.onRequestError(e,t,{routerKind:"App Router",routePath:T,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:R})},!1,_),N)throw t;return await (0,m.sendResponse)(G,z,new Response(null,{status:500})),null}}e.s(["handler",()=>A,"patchFetch",()=>I,"routeModule",()=>P,"serverHooks",()=>_,"workAsyncStorage",()=>k,"workUnitAsyncStorage",()=>C]),a()}catch(e){a(e)}},!1),606102,e=>{e.v(e=>Promise.resolve().then(()=>e(548941)))},789543,e=>{e.v(e=>Promise.resolve().then(()=>e(385498)))},579042,e=>{e.v(t=>Promise.all(["server/chunks/src_shared_utils_apiKey_ts_fa113e09._.js"].map(t=>e.l(t))).then(()=>t(65448)))},49794,e=>{e.v(t=>Promise.all(["server/chunks/src_shared_constants_pricing_ts_65de0558._.js"].map(t=>e.l(t))).then(()=>t(404503)))},386305,e=>{e.v(e=>Promise.resolve().then(()=>e(878947)))}];
2
+ ${e}`),Error(`Provider validation failed for ${t}`)}}e.s(["validateProviders",()=>o]),a()}catch(e){a(e)}},!1),963219,e=>e.a(async(t,a)=>{try{var r=e.i(102835),i=t([r]);[r]=i.then?(await i)():i;let s={iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gc",name:"Gemini CLI",icon:"terminal",color:"#4285F4",deprecated:!0,deprecationReason:"Google restricts third-party OAuth usage for Gemini CLI (Mar 2026). Pro models require paid plans. Use 'gemini' (API key) provider instead."},kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"}},l={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:"ag",name:"Antigravity",icon:"rocket_launch",color:"#F59E0B"},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6"},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},"kimi-coding":{id:"kimi-coding",alias:"kmc",name:"Kimi Coding",icon:"psychology",color:"#1E40AF",textIcon:"KC"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},c={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai"},glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},"bailian-coding-plan":{id:"bailian-coding-plan",alias:"bcp",name:"Alibaba Coding Plan",icon:"code",color:"#FF6A00",textIcon:"BCP",website:"https://www.alibabacloud.com/help/en/model-studio/coding-plan"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},"kimi-coding-apikey":{id:"kimi-coding-apikey",alias:"kmca",name:"Kimi Coding (API Key)",icon:"psychology",color:"#1E40AF",textIcon:"KC",website:"https://kimi.com"},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com"},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},alicode:{id:"alicode",alias:"alicode",name:"Alibaba",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://bailian.console.aliyun.com"},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://modelstudio.console.alibabacloud.com"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com"},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com"},gemini:{id:"gemini",alias:"gemini",name:"Gemini (Google AI Studio)",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev",hasFree:!0,freeNote:"Free forever: 1,500 req/day for Gemini 2.5 Flash — no credit card, get key at aistudio.google.com"},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com",hasFree:!0,freeNote:"Free tier: 30 RPM / 14.4K RPD — no credit card"},blackbox:{id:"blackbox",alias:"bb",name:"Blackbox AI",icon:"view_in_ar",color:"#1A1A2E",textIcon:"BB",website:"https://blackbox.ai"},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai"},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai"},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai"},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai",hasFree:!0,freeNote:"$25 signup credits + 3 permanently free models: Llama 3.3 70B, Vision, DeepSeek-R1 distill"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://inference.cerebras.ai",hasFree:!0,freeNote:"Free: 1M tokens/day, 60K TPM — world's fastest inference"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://build.nvidia.com",hasFree:!0,freeNote:"Free dev access: ~40 RPM, 70+ models (Kimi K2.5, GLM 4.7, DeepSeek V3.2...)"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com"},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com"},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai"},"ollama-cloud":{id:"ollama-cloud",alias:"ollamacloud",name:"Ollama Cloud",icon:"cloud",color:"#58A6FF",textIcon:"OC",website:"https://ollama.com/settings/api-keys"},elevenlabs:{id:"elevenlabs",alias:"el",name:"ElevenLabs",icon:"record_voice_over",color:"#6C47FF",textIcon:"EL",website:"https://elevenlabs.io"},cartesia:{id:"cartesia",alias:"cartesia",name:"Cartesia",icon:"spatial_audio",color:"#FF4F8B",textIcon:"CA",website:"https://cartesia.ai"},playht:{id:"playht",alias:"playht",name:"PlayHT",icon:"play_circle",color:"#00B4D8",textIcon:"PH",website:"https://play.ht"},inworld:{id:"inworld",alias:"inworld",name:"Inworld",icon:"voice_chat",color:"#7B2EF2",textIcon:"IW",website:"https://inworld.ai"},sdwebui:{id:"sdwebui",alias:"sdwebui",name:"SD WebUI",icon:"brush",color:"#FF7043",textIcon:"SD",website:"https://github.com/AUTOMATIC1111/stable-diffusion-webui"},comfyui:{id:"comfyui",alias:"comfyui",name:"ComfyUI",icon:"account_tree",color:"#4CAF50",textIcon:"CF",website:"https://github.com/comfyanonymous/ComfyUI"},huggingface:{id:"huggingface",alias:"hf",name:"HuggingFace",icon:"face",color:"#FFD21E",textIcon:"HF",website:"https://huggingface.co",hasFree:!0,freeNote:"Free Inference API for thousands of models (Whisper, VITS, SDXL…)"},synthetic:{id:"synthetic",alias:"synthetic",name:"Synthetic",icon:"verified_user",color:"#6366F1",textIcon:"SY",website:"https://synthetic.new",passthroughModels:!0},"kilo-gateway":{id:"kilo-gateway",alias:"kg",name:"Kilo Gateway",icon:"hub",color:"#617A91",textIcon:"KG",website:"https://kilo.ai",passthroughModels:!0},vertex:{id:"vertex",alias:"vertex",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VA",website:"https://cloud.google.com/vertex-ai",authHint:"Provide Service Account JSON or OAuth access_token"},zai:{id:"zai",alias:"zai",name:"Z.AI (GLM-5)",icon:"psychology",color:"#2563EB",textIcon:"ZA",website:"https://open.bigmodel.cn",apiHint:"API key from https://open.bigmodel.cn/usercenter/apikeys"},"perplexity-search":{id:"perplexity-search",alias:"pplx-search",name:"Perplexity Search",icon:"search",color:"#20808D",textIcon:"PS",website:"https://docs.perplexity.ai/guides/search-quickstart",authHint:"Same API key as Perplexity (pplx-...)"},"serper-search":{id:"serper-search",alias:"serper-search",name:"Serper Search",icon:"search",color:"#4285F4",textIcon:"SP",website:"https://serper.dev",authHint:"API key from serper.dev dashboard"},"brave-search":{id:"brave-search",alias:"brave-search",name:"Brave Search",icon:"travel_explore",color:"#FB542B",textIcon:"BR",website:"https://brave.com/search/api",authHint:"Subscription token from Brave Search API dashboard"},"exa-search":{id:"exa-search",alias:"exa-search",name:"Exa Search",icon:"neurology",color:"#1E40AF",textIcon:"EX",website:"https://exa.ai",authHint:"API key from dashboard.exa.ai"},"tavily-search":{id:"tavily-search",alias:"tavily-search",name:"Tavily Search",icon:"manage_search",color:"#5B4FDB",textIcon:"TV",website:"https://tavily.com",authHint:"API key from app.tavily.com (format: tvly-...)"},"opencode-zen":{id:"opencode-zen",alias:"opencode-zen",name:"OpenCode Zen",icon:"opencode",color:"#6366f1",website:"https://opencode.ai/zen"},"opencode-go":{id:"opencode-go",alias:"opencode-go",name:"OpenCode Go",icon:"opencode",color:"#6366f1",website:"https://opencode.ai/zen/go"},alibaba:{id:"alibaba",alias:"ali",name:"Alibaba Cloud (DashScope)",icon:"cloud_queue",color:"#FF6600",textIcon:"AL",website:"https://dashscope-intl.aliyuncs.com",hasFree:!1},longcat:{id:"longcat",alias:"lc",name:"LongCat AI",icon:"auto_awesome",color:"#FF6B9D",textIcon:"LC",website:"https://longcat.chat",hasFree:!0,freeNote:"50M tokens/day (Flash-Lite) + 500K/day (Chat/Thinking) — 100% free while public beta"},pollinations:{id:"pollinations",alias:"pol",name:"Pollinations AI",icon:"local_florist",color:"#4CAF50",textIcon:"PO",website:"https://pollinations.ai",hasFree:!0,freeNote:"No API key needed — access GPT-5, Claude, Gemini, DeepSeek V3, Llama 4 free (1 req/15s)"},puter:{id:"puter",alias:"pu",name:"Puter AI",icon:"cloud_circle",color:"#6366F1",textIcon:"PU",website:"https://puter.com",hasFree:!0,freeNote:"500+ models (GPT-5, Claude Opus 4, Gemini 3 Pro, Grok 4, DeepSeek V3...) — Users pay via free Puter account",passthroughModels:!0,authHint:"Get token at puter.com/dashboard → Copy Auth Token"},"cloudflare-ai":{id:"cloudflare-ai",alias:"cf",name:"Cloudflare Workers AI",icon:"cloud",color:"#F48120",textIcon:"CF",website:"https://developers.cloudflare.com/workers-ai/",hasFree:!0,freeNote:"Free 10K Neurons/day: ~150 LLM responses or 500s Whisper audio — edge inference globally",authHint:"Requires API Token AND Account ID (found at dash.cloudflare.com)"},scaleway:{id:"scaleway",alias:"scw",name:"Scaleway AI",icon:"cloud",color:"#4F0599",textIcon:"SCW",website:"https://www.scaleway.com/en/ai/generative-apis/",hasFree:!0,freeNote:"1M free tokens for new accounts — EU/GDPR compliant (Paris), Qwen3 235B & Llama 70B"},aimlapi:{id:"aimlapi",alias:"aiml",name:"AI/ML API",icon:"hub",color:"#6366F1",textIcon:"AI",website:"https://aimlapi.com",hasFree:!0,freeNote:"$0.025/day free credits — 200+ models (GPT-4o, Claude, Gemini, Llama) via single endpoint",passthroughModels:!0}},d="openai-compatible-",p="anthropic-compatible-";function o(e){return"string"==typeof e&&e.startsWith(d)}function n(e){return"string"==typeof e&&e.startsWith(p)}let u={...s,...l,...c},h=Object.values(u).reduce((e,t)=>(e[t.alias]=t.id,e),{});Object.values(u).reduce((e,t)=>(e[t.id]=t.alias,e),{}),(0,r.validateProviders)(s,"FREE_PROVIDERS"),(0,r.validateProviders)(l,"OAUTH_PROVIDERS"),(0,r.validateProviders)(c,"APIKEY_PROVIDERS"),e.s(["AI_PROVIDERS",0,u,"ALIAS_TO_ID",0,h,"ANTHROPIC_COMPATIBLE_PREFIX",0,p,"APIKEY_PROVIDERS",0,c,"FREE_PROVIDERS",0,s,"OAUTH_PROVIDERS",0,l,"OPENAI_COMPATIBLE_PREFIX",0,d,"isAnthropicCompatibleProvider",()=>n,"isOpenAICompatibleProvider",()=>o]),a()}catch(e){a(e)}},!1),383368,e=>e.a(async(t,a)=>{try{var r=e.i(828059),i=e.i(963219),o=t([i]);[i]=o.then?(await o)():o;let x=new Set(["openai","openai-responses"]),I=new Set(["gemini","gemini-cli"]);function n(e){return(e||"").trim().replace(/\/$/,"")}function s(e){return{"Content-Type":"application/json",Authorization:`Bearer ${e}`}}async function l({provider:e,apiKey:t,baseUrl:a,providerSpecificData:r={},modelId:o="gpt-4o-mini",modelsUrl:l}){if(!a)return{valid:!1,error:"Missing base URL"};let c=l||function(e){let t=n(e);if(!t)return"";for(let e of["/chat/completions","/responses","/chat","/messages"])if(t.endsWith(e))return`${t.slice(0,-e.length)}/models`;return`${t}/models`}(a);if(!c)return{valid:!1,error:"Invalid models endpoint"};let d=await fetch(c,{method:"GET",headers:s(t)});if(d.ok)return{valid:!0,error:null};if(401===d.status||403===d.status)return{valid:!1,error:"Invalid API key"};let p=function(e,t,a={}){let r=n(t);return r?(0,i.isOpenAICompatibleProvider)(e)?a?.apiType==="responses"?`${r}/responses`:`${r}/chat/completions`:r.endsWith("/chat/completions")||r.endsWith("/responses")||r.endsWith("/chat")?r:r.endsWith("/v1")?`${r}/chat/completions`:r:""}(e,a,r);if(!p)return{valid:!1,error:`Validation failed: ${d.status}`};let u=r?.validationModelId||o,h=await fetch(p,{method:"POST",headers:s(t),body:JSON.stringify({model:u,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 c({apiKey:e,baseUrl:t,modelId:a,headers:r={},providerSpecificData:i={}}){if(!t)return{valid:!1,error:"Missing base URL"};let o={"Content-Type":"application/json",...r};o["x-api-key"]||o["X-API-Key"]||(o["x-api-key"]=e),o["anthropic-version"]||o["Anthropic-Version"]||(o["anthropic-version"]="2023-06-01");let n=i?.validationModelId||a||"claude-3-5-sonnet-20241022",s=await fetch(t,{method:"POST",headers:o,body:JSON.stringify({model:n,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 d({apiKey:e,baseUrl:t}){if(!t)return{valid:!1,error:"Missing base URL"};let a=t.includes("?")?"&":"?",r=await fetch(`${t}${a}key=${encodeURIComponent(e)}`,{method:"GET",headers:{"Content-Type":"application/json"}});return r.ok?{valid:!0,error:null}:401===r.status||403===r.status?{valid:!1,error:"Invalid API key"}:{valid:!1,error:`Validation failed: ${r.status}`}}async function p({apiKey:e}){try{let t=await fetch("https://api.deepgram.com/v1/auth/token",{method:"GET",headers:{Authorization:`Token ${e}`}});if(t.ok)return{valid:!0,error:null};if(401===t.status||403===t.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${t.status}`}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function u({apiKey:e}){try{let t=await fetch("https://api.assemblyai.com/v2/transcript?limit=1",{method:"GET",headers:{Authorization:e,"Content-Type":"application/json"}});if(t.ok)return{valid:!0,error:null};if(401===t.status||403===t.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${t.status}`}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function h({apiKey:e}){try{let t=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===t.status||403===t.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}){try{let t=await fetch("https://api.elevenlabs.io/v1/voices",{method:"GET",headers:{"xi-api-key":e,"Content-Type":"application/json"}});if(t.ok)return{valid:!0,error:null};if(401===t.status||403===t.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${t.status}`}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function v({apiKey:e}){try{let t=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===t.status||403===t.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,providerSpecificData:t={}}){try{let a=n(t.baseUrl)||"https://coding-intl.dashscope.aliyuncs.com/apps/anthropic/v1",r=a.endsWith("/messages")?a.slice(0,-9):a,i=`${r}/messages`,o=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===o.status||403===o.status)return{valid:!1,error:"Invalid API key"};if(o.status>=400&&o.status<500||o.ok)return{valid:!0,error:null};return{valid:!1,error:`Validation failed: ${o.status}`}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function y({apiKey:e,providerSpecificData:t={}}){let a=n(t.baseUrl);if(!a)return{valid:!1,error:"No base URL configured for OpenAI compatible provider"};let r="string"==typeof t?.validationModelId?t.validationModelId.trim():"",i=!1;try{let t=await fetch(`${a}/models`,{method:"GET",headers:s(e)});if(i=!0,t.ok)return{valid:!0,error:null,method:"models_endpoint"};if(401===t.status||403===t.status)return{valid:!1,error:"Invalid API key"};if(429===t.status)return{valid:!0,error:null,method:"models_endpoint",warning:"Rate limited, but credentials are valid"}}catch{}if(!r)return{valid:!1,error:"Endpoint /models unavailable. Provide a Model ID to validate via /chat/completions."};let o=t.apiType||"chat",l=`${a}${"responses"===o?"/responses":"/chat/completions"}`;try{let t=await fetch(l,{method:"POST",headers:s(e),body:JSON.stringify({model:r,messages:[{role:"user",content:"test"}],max_tokens:1})});if(t.ok)return{valid:!0,error:null,method:"chat_completions"};if(401===t.status||403===t.status)return{valid:!1,error:"Invalid API key"};if(429===t.status)return{valid:!0,error:null,method:"chat_completions",warning:"Rate limited, but credentials are valid"};if(400===t.status)return{valid:!0,error:null,method:"inference_available",warning:"Model ID may be invalid, but credentials are valid"};if(t.status>=400&&t.status<500)return{valid:!0,error:null,method:"inference_available"};if(t.status>=500)return{valid:!1,error:`Provider unavailable (${t.status})`}}catch{}if(!i)return{valid:!1,error:"Connection failed while testing /chat/completions"};try{let t=await fetch(a,{method:"GET",headers:s(e),signal:AbortSignal.timeout(5e3)});if(t.status<500)return{valid:!0,error:null};return{valid:!1,error:`Provider unavailable (${t.status})`}}catch(e){return{valid:!1,error:e.message||"Connection failed"}}}async function g({apiKey:e,providerSpecificData:t={}}){let a=n(t.baseUrl);if(!a)return{valid:!1,error:"No base URL configured for Anthropic compatible provider"};a.endsWith("/messages")&&(a=a.slice(0,-9));let r={"Content-Type":"application/json","x-api-key":e,"anthropic-version":"2023-06-01",Authorization:`Bearer ${e}`};try{let e=await fetch(`${a}/models`,{method:"GET",headers:r});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=t?.validationModelId||"claude-3-5-sonnet-20241022";try{let e=await fetch(`${a}/messages`,{method:"POST",headers:r,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 b(e,t){try{let a=await fetch(e,t);if(a.ok)return{valid:!0,error:null,unsupported:!1};if(401===a.status||403===a.status)return{valid:!1,error:"Invalid API key",unsupported:!1};if(a.status<500)return{valid:!0,error:null,unsupported:!1};return{valid:!1,error:`Validation failed: ${a.status}`,unsupported:!1}}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}}let A={"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:t,providerSpecificData:a={}}){if(!e||!t)return{valid:!1,error:"Provider and API key required",unsupported:!1};if((0,i.isOpenAICompatibleProvider)(e))try{return await y({apiKey:t,providerSpecificData:a})}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}if((0,i.isAnthropicCompatibleProvider)(e))try{return await g({apiKey:t,providerSpecificData:a})}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}let o={deepgram:p,assemblyai:u,nanobanana:h,elevenlabs:m,inworld:v,"bailian-coding-plan":f,longcat:async({apiKey:e})=>{try{let t=await fetch("https://api.longcat.chat/openai/v1/chat/completions",{method:"POST",headers:s(e),body:JSON.stringify({model:"longcat",messages:[{role:"user",content:"test"}],max_tokens:1})});if(401===t.status||403===t.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(A).map(([e,t])=>[e,({apiKey:e})=>{let{url:a,init:r}=t(e);return b(a,r)}]))};if(o[e])try{return await o[e]({apiKey:t,providerSpecificData:a})}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}let w=(0,r.getRegistryEntry)(e);if(!w)return{valid:!1,error:"Provider validation not supported",unsupported:!0};let P=w.models?.[0]?.id||null,k=w.testKeyBaseUrl?{...w,baseUrl:w.testKeyBaseUrl}:w,C=function(e,t={}){return t?.baseUrl?n(t.baseUrl):e?.baseUrl?n(e.baseUrl):""}(k,a);try{if(x.has(w.format))return await l({provider:e,apiKey:t,baseUrl:C,providerSpecificData:a,modelId:P,modelsUrl:w.modelsUrl});if("claude"===w.format){let e=`${C}${w.urlSuffix||""}`,r={...w.headers||{}};return"x-api-key"===(w.authHeader||"").toLowerCase()?r["x-api-key"]=t:r.Authorization=`Bearer ${t}`,await c({apiKey:t,baseUrl:e,modelId:P,headers:r,providerSpecificData:a})}if(I.has(w.format))return await d({apiKey:t,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]),a()}catch(e){a(e)}},!1),851380,e=>e.a(async(t,a)=>{try{var r=e.i(89171);e.i(180725);var i=e.i(385498),o=e.i(963219),n=e.i(383368),s=e.i(676088),l=e.i(200392),c=t([o,n,s,l]);async function d(e){let t;try{t=await e.json()}catch{return r.NextResponse.json({error:{message:"Invalid request",details:[{field:"body",message:"Invalid JSON body"}]}},{status:400})}try{let e=(0,l.validateBody)(s.validateProviderApiKeySchema,t);if((0,l.isValidationFailure)(e))return r.NextResponse.json({error:e.error},{status:400});let{provider:a,apiKey:c,validationModelId:d}=e.data,p={validationModelId:d};if((0,o.isOpenAICompatibleProvider)(a)||(0,o.isAnthropicCompatibleProvider)(a)){let e=await (0,i.getProviderNodeById)(a);if(!e){let e=(0,o.isOpenAICompatibleProvider)(a)?"OpenAI":"Anthropic";return r.NextResponse.json({error:`${e} Compatible node not found`},{status:404})}p={...p,baseUrl:e.baseUrl,apiType:e.apiType}}let u=await (0,n.validateProviderApiKey)({provider:a,apiKey:c,providerSpecificData:p});if(u.unsupported)return r.NextResponse.json({error:"Provider validation not supported"},{status:400});return r.NextResponse.json({valid:!!u.valid,error:u.valid?null:u.error||"Invalid API key",warning:u.warning||null,method:u.method||null})}catch(e){return console.log("Error validating API key:",e),r.NextResponse.json({error:"Validation failed"},{status:500})}}[o,n,s,l]=c.then?(await c)():c,e.s(["POST",()=>d]),a()}catch(e){a(e)}},!1),477929,e=>e.a(async(t,a)=>{try{var r=e.i(747909),i=e.i(174017),o=e.i(996250),n=e.i(759756),s=e.i(561916),l=e.i(174677),c=e.i(869741),d=e.i(316795),p=e.i(487718),u=e.i(995169),h=e.i(47587),m=e.i(666012),v=e.i(570101),f=e.i(626937),y=e.i(10372),g=e.i(193695);e.i(52474);var b=e.i(600220),w=e.i(851380),x=t([w]);[w]=x.then?(await x)():x;let P=new r.AppRouteRouteModule({definition:{kind:i.RouteKind.APP_ROUTE,page:"/api/providers/validate/route",pathname:"/api/providers/validate",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/providers/validate/route.ts",nextConfigOutput:"standalone",userland:w}),{workAsyncStorage:k,workUnitAsyncStorage:C,serverHooks:_}=P;function I(){return(0,o.patchFetch)({workAsyncStorage:k,workUnitAsyncStorage:C})}async function A(e,t,a){P.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let r="/api/providers/validate/route";r=r.replace(/\/index$/,"")||"/";let o=await P.prepare(e,t,{srcPage:r,multiZoneDraftMode:!1});if(!o)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:w,params:x,nextConfig:I,parsedUrl:A,isDraftMode:k,prerenderManifest:C,routerServerContext:_,isOnDemandRevalidate:R,revalidateOnlyGenerated:F,resolvedPathname:S,clientReferenceManifest:O,serverActionsManifest:E}=o,T=(0,c.normalizeAppPath)(r),N=!!(C.dynamicRoutes[T]||C.routes[S]),D=async()=>((null==_?void 0:_.render404)?await _.render404(e,t,A,!1):t.end("This page could not be found"),null);if(N&&!k){let e=!!C.routes[S],t=C.dynamicRoutes[T];if(t&&!1===t.fallback&&!e){if(I.experimental.adapterPath)return await D();throw new g.NoFallbackError}}let $=null;!N||P.isDev||k||($=S,$="/index"===$?"/":$);let j=!0===P.isDev||!N,M=N&&!j;E&&O&&(0,l.setManifestsSingleton)({page:r,clientReferenceManifest:O,serverActionsManifest:E});let B=e.method||"GET",U=(0,s.getTracer)(),q=U.getActiveScopeSpan(),V={params:x,prerenderManifest:C,renderOpts:{experimental:{authInterrupts:!!I.experimental.authInterrupts},cacheComponents:!!I.cacheComponents,supportsDynamicResponse:j,incrementalCache:(0,n.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:I.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,i)=>P.onRequestError(e,t,r,i,_)},sharedContext:{buildId:w}},G=new d.NodeNextRequest(e),z=new d.NodeNextResponse(t),L=p.NextRequestAdapter.fromNodeNextRequest(G,(0,p.signalFromNodeResponse)(t));try{let o=async e=>P.handle(L,V).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=U.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let i=a.get("next.route");if(i){let t=`${B} ${i}`;e.setAttributes({"next.route":i,"http.route":i,"next.span_name":t}),e.updateName(t)}else e.updateName(`${B} ${r}`)}),l=!!(0,n.getRequestMeta)(e,"minimalMode"),c=async n=>{var s,c;let d=async({previousCacheEntry:i})=>{try{if(!l&&R&&F&&!i)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await o(n);e.fetchMetrics=V.renderOpts.fetchMetrics;let s=V.renderOpts.pendingWaitUntil;s&&a.waitUntil&&(a.waitUntil(s),s=void 0);let c=V.renderOpts.collectedTags;if(!N)return await (0,m.sendResponse)(G,z,r,V.renderOpts.pendingWaitUntil),null;{let e=await r.blob(),t=(0,v.toNodeOutgoingHttpHeaders)(r.headers);c&&(t[y.NEXT_CACHE_TAGS_HEADER]=c),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==V.renderOpts.collectedRevalidate&&!(V.renderOpts.collectedRevalidate>=y.INFINITE_CACHE)&&V.renderOpts.collectedRevalidate,i=void 0===V.renderOpts.collectedExpire||V.renderOpts.collectedExpire>=y.INFINITE_CACHE?void 0:V.renderOpts.collectedExpire;return{value:{kind:b.CachedRouteKind.APP_ROUTE,status:r.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:i}}}}catch(t){throw(null==i?void 0:i.isStale)&&await P.onRequestError(e,t,{routerKind:"App Router",routePath:r,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:R})},!1,_),t}},p=await P.handleResponse({req:e,nextConfig:I,cacheKey:$,routeKind:i.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:R,revalidateOnlyGenerated:F,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:l});if(!N)return null;if((null==p||null==(s=p.value)?void 0:s.kind)!==b.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==p||null==(c=p.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});l||t.setHeader("x-nextjs-cache",R?"REVALIDATED":p.isMiss?"MISS":p.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,v.fromNodeOutgoingHttpHeaders)(p.value.headers);return l&&N||u.delete(y.NEXT_CACHE_TAGS_HEADER),!p.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,f.getCacheControlHeader)(p.cacheControl)),await (0,m.sendResponse)(G,z,new Response(p.value.body,{headers:u,status:p.value.status||200})),null};q?await c(q):await U.withPropagatedContext(e.headers,()=>U.trace(u.BaseServerSpan.handleRequest,{spanName:`${B} ${r}`,kind:s.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},c))}catch(t){if(t instanceof g.NoFallbackError||await P.onRequestError(e,t,{routerKind:"App Router",routePath:T,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:R})},!1,_),N)throw t;return await (0,m.sendResponse)(G,z,new Response(null,{status:500})),null}}e.s(["handler",()=>A,"patchFetch",()=>I,"routeModule",()=>P,"serverHooks",()=>_,"workAsyncStorage",()=>k,"workUnitAsyncStorage",()=>C]),a()}catch(e){a(e)}},!1),606102,e=>{e.v(e=>Promise.resolve().then(()=>e(548941)))},789543,e=>{e.v(e=>Promise.resolve().then(()=>e(385498)))},579042,e=>{e.v(t=>Promise.all(["server/chunks/src_shared_utils_apiKey_ts_fa113e09._.js"].map(t=>e.l(t))).then(()=>t(65448)))},49794,e=>{e.v(t=>Promise.all(["server/chunks/src_shared_constants_pricing_ts_65de0558._.js"].map(t=>e.l(t))).then(()=>t(404503)))},386305,e=>{e.v(e=>Promise.resolve().then(()=>e(878947)))}];
3
3
 
4
4
  //# sourceMappingURL=%5Broot-of-the-server%5D__61d78f9d._.js.map