switchboard-router 0.6.14 → 0.6.16

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 (155) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +16 -16
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/prerender-manifest.json +3 -3
  5. package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page_client-reference-manifest.js +1 -1
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page_client-reference-manifest.js +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page_client-reference-manifest.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  32. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  33. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  34. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  35. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  36. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  37. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  38. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  39. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  40. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  41. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  42. package/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  43. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  44. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  45. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
  46. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  47. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  48. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  49. package/app/.next-cli-build/server/app/api/cli-tools/aider-settings/route.js +2 -2
  50. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +4 -4
  51. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  52. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
  53. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
  54. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  55. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
  56. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  57. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  58. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +1 -1
  59. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  60. package/app/.next-cli-build/server/app/api/cli-tools/gemini-cli-settings/route.js +2 -2
  61. package/app/.next-cli-build/server/app/api/cli-tools/grok-settings/route.js +2 -2
  62. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  63. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  64. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +1 -1
  65. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
  66. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  67. package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js +1 -1
  68. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +3 -3
  69. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/remove-unavailable/route.js +1 -1
  70. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  71. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  72. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  73. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  74. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
  75. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  76. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  77. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  78. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  79. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  80. package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  81. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  82. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  83. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  84. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  85. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  86. package/app/.next-cli-build/server/app/callback.html +1 -1
  87. package/app/.next-cli-build/server/app/callback.rsc +3 -3
  88. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  89. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  90. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
  91. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  92. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  93. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  94. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  95. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  96. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  97. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  98. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  99. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  100. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  101. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  102. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  103. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  104. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  105. package/app/.next-cli-build/server/app/index.html +1 -1
  106. package/app/.next-cli-build/server/app/index.rsc +3 -3
  107. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  108. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  109. package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  110. package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
  111. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  112. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  113. package/app/.next-cli-build/server/app/landing.html +1 -1
  114. package/app/.next-cli-build/server/app/landing.rsc +3 -3
  115. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
  116. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  117. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
  118. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  119. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  120. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  121. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  122. package/app/.next-cli-build/server/app/login.html +1 -1
  123. package/app/.next-cli-build/server/app/login.rsc +3 -3
  124. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +3 -3
  125. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  126. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
  127. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  128. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
  129. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  130. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  131. package/app/.next-cli-build/server/app-paths-manifest.json +16 -16
  132. package/app/.next-cli-build/server/chunks/194.js +1 -1
  133. package/app/.next-cli-build/server/chunks/4126.js +1 -1
  134. package/app/.next-cli-build/server/chunks/4746.js +1 -1
  135. package/app/.next-cli-build/server/chunks/4776.js +2 -2
  136. package/app/.next-cli-build/server/chunks/5139.js +1 -1
  137. package/app/.next-cli-build/server/chunks/5821.js +1 -1
  138. package/app/.next-cli-build/server/chunks/688.js +1 -1
  139. package/app/.next-cli-build/server/chunks/7828.js +4 -1
  140. package/app/.next-cli-build/server/chunks/869.js +1 -1
  141. package/app/.next-cli-build/server/chunks/8998.js +1 -1
  142. package/app/.next-cli-build/server/chunks/9696.js +1 -1
  143. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  144. package/app/.next-cli-build/server/pages/404.html +1 -1
  145. package/app/.next-cli-build/server/pages/500.html +1 -1
  146. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  147. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  148. package/app/.next-cli-build/static/chunks/{1321-eb02cf7fb6db5ff7.js → 1321-9a7e9093258f41d0.js} +1 -1
  149. package/app/.next-cli-build/static/chunks/{5497-3d546c1b7aa357b1.js → 5497-f7310b0eb1e78666.js} +2 -2
  150. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-4ca7fef1bfee740a.js +10 -0
  151. package/app/package.json +1 -1
  152. package/package.json +1 -1
  153. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-e023b0417bbc3b44.js +0 -10
  154. /package/app/.next-cli-build/static/{3vjx1MDjxRF9Fkk9Yg6Qt → U_PuL5EYuLNHl2YOb_uZL}/_buildManifest.js +0 -0
  155. /package/app/.next-cli-build/static/{3vjx1MDjxRF9Fkk9Yg6Qt → U_PuL5EYuLNHl2YOb_uZL}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";(()=>{var a={};a.id=8736,a.ids=[8736],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},643:a=>{a.exports=require("node:perf_hooks")},1708:a=>{a.exports=require("node:process")},1932:a=>{a.exports=require("url")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4573:a=>{a.exports=require("node:buffer")},7066:a=>{a.exports=require("node:tty")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},14985:a=>{a.exports=require("dns")},16698:a=>{a.exports=require("node:async_hooks")},21820:a=>{a.exports=require("os")},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31421:a=>{a.exports=require("node:child_process")},32467:a=>{a.exports=require("node:http2")},33873:a=>{a.exports=require("path")},34589:a=>{a.exports=require("node:assert")},37067:a=>{a.exports=require("node:http")},37540:a=>{a.exports=require("node:console")},38522:a=>{a.exports=require("node:zlib")},39753:(a,b,c)=>{c.d(b,{IJ:()=>k,Ku:()=>h,NL:()=>g,XM:()=>j,c4:()=>i});var d=c(77598),e=c(44196);function f(a,b){return(0,d.createHash)("sha256").update(`${a}:${JSON.stringify(function a(b){return Array.isArray(b)?b.map(a):b&&"object"==typeof b?Object.fromEntries(Object.keys(b).sort().map(c=>[c,a(b[c])])):b}(b))}`).digest("hex")}function g(a){let b=Number(a?.tokenSaver?.fetchCacheTtlHours??24);return!Number.isFinite(b)||b<=0?0:3600*b*1e3}function h(a,b){return f("fetch",{provider:b,url:function(a){let b=String(a||"").trim(),c=b.indexOf("://");if(c<0)return b;let d=c+3,e=b.slice(d).search(/[/?#]/),f=e<0?b.length:d+e,g=b.slice(d,f),h=g.lastIndexOf("@");return`${b.slice(0,d)}${g.slice(0,h+1)}${g.slice(h+1).toLowerCase()}${b.slice(f)}`}(a.url),format:a.format??null,maxCharacters:a.max_characters??null})}function i(a,b){return f("search",{provider:b,query:String(a.query||"").trim(),maxResults:a.max_results??null,searchType:a.search_type??null,country:a.country??null,language:a.language??null,timeRange:a.time_range??null,offset:a.offset??null,domainFilter:a.domain_filter??null,contentOptions:a.content_options??null,providerOptions:a.provider_options??null})}function j(a){return new Response(a.content,{headers:{"Content-Type":a.contentType||"application/json","X-Switchboard-Cache":"hit"}})}async function k(a,b,c){try{let d=a?.headers?.get("content-type")||"application/json",f=d.toLowerCase();if(!a?.ok||f.includes("text/event-stream")||f.includes("ndjson"))return a;let g=await a.clone().text();await (0,e.OS)({...b,content:g,contentType:d}),c.info(b.kind.toUpperCase(),`cache stored ${b.url}`)}catch{}return a}},40610:a=>{a.exports=require("node:dns")},41692:a=>{a.exports=require("node:tls")},41792:a=>{a.exports=require("node:querystring")},43157:(a,b,c)=>{c.d(b,{O:()=>d});function d(...a){let b=a.filter(a=>a&&"object"==typeof a);if(0===b.length)return;if(1===b.length)return b[0];if("function"==typeof AbortSignal.any)return AbortSignal.any(b);let c=new AbortController,e=a=>{try{c.abort(a?.target?.reason)}catch{}};for(let a of b){if(a.aborted){e({target:a});break}a.addEventListener("abort",e,{once:!0})}return c.signal}},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46293:a=>{a.exports=require("sql.js")},48161:a=>{a.exports=require("node:os")},51455:a=>{a.exports=require("node:fs/promises")},53053:a=>{a.exports=require("node:diagnostics_channel")},55511:a=>{a.exports=require("crypto")},55591:a=>{a.exports=require("https")},57075:a=>{a.exports=require("node:stream")},57975:a=>{a.exports=require("node:util")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},71553:a=>{a.exports=require("node:dns/promises")},73024:a=>{a.exports=require("node:fs")},73136:a=>{a.exports=require("node:url")},73429:a=>{a.exports=require("node:util/types")},73496:a=>{a.exports=require("http2")},74075:a=>{a.exports=require("zlib")},75919:a=>{a.exports=require("node:worker_threads")},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},78474:a=>{a.exports=require("node:events")},79646:a=>{a.exports=require("child_process")},79868:a=>{a.exports=require("node:sqlite")},81630:a=>{a.exports=require("http")},81787:a=>{a.exports=require("bun:sqlite")},83727:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>ai,patchFetch:()=>ah,routeModule:()=>ad,serverHooks:()=>ag,workAsyncStorage:()=>ae,workUnitAsyncStorage:()=>af});var d={};c.r(d),c.d(d,{OPTIONS:()=>ab,POST:()=>ac});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527);c(40863);var v=c(80238),w=c(44776),x=c(40615);function y(a){return a?.length?{includes:a.filter(a=>!a.startsWith("-")),excludes:a.filter(a=>a.startsWith("-")).map(a=>a.slice(1))}:{includes:[],excludes:[]}}function z(a,b){let c=a.providerOptions?.[b];if("string"==typeof c&&c.trim().length>0)return c.trim();let d=a.providerSpecificData?.[b];if("string"==typeof d&&d.trim().length>0)return d.trim()}function A(a,b){return(z(b,"baseUrl")||a.baseUrl).replace(/\/+$/,"")}function B(a,b){if("number"==typeof a&&!(a<=0)&&!(b<=0))return Math.floor(a/b)+1}let C={serper:function(a,b){let c="news"===b.searchType?"/news":"/search",d={q:b.query,num:b.maxResults};return b.country&&(d.gl=b.country.toLowerCase()),b.language&&(d.hl=b.language),{url:`${A(a,b)}${c}`,init:{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":b.token},body:JSON.stringify(d)}}},"brave-search":function(a,b){let c="news"===b.searchType?"/news/search":"/web/search",d=new URLSearchParams({q:b.query,count:String(b.maxResults)});return b.country&&d.set("country",b.country),b.language&&d.set("search_lang",b.language),{url:`${A(a,b)}${c}?${d}`,init:{method:"GET",headers:{Accept:"application/json","X-Subscription-Token":b.token}}}},perplexity:function(a,b){let c={query:b.query,max_results:b.maxResults};return b.country&&(c.country=b.country),b.language&&(c.search_language_filter=[b.language]),b.domainFilter?.length&&(c.search_domain_filter=b.domainFilter),{url:A(a,b),init:{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${b.token}`},body:JSON.stringify(c)}}},exa:function(a,b){let{includes:c,excludes:d}=y(b.domainFilter),e={query:b.query,numResults:b.maxResults,type:"auto",text:!0,highlights:!0};return c.length&&(e.includeDomains=c),d.length&&(e.excludeDomains=d),"news"===b.searchType&&(e.category="news"),{url:A(a,b),init:{method:"POST",headers:{"Content-Type":"application/json","x-api-key":b.token},body:JSON.stringify(e)}}},tavily:function(a,b){let{includes:c,excludes:d}=y(b.domainFilter),e={query:b.query,max_results:b.maxResults,topic:"news"===b.searchType?"news":"general"};return c.length&&(e.include_domains=c),d.length&&(e.exclude_domains=d),b.country&&(e.country=b.country),{url:A(a,b),init:{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${b.token}`},body:JSON.stringify(e)}}},"google-pse":function(a,b){let c=b.token,d=z(b,"cx");if(!c||!d)throw Error("Google Programmable Search requires both apiKey and cx");let e=new URLSearchParams({key:c,cx:d,q:b.query,num:String(Math.min(b.maxResults,10))});if(b.country&&e.set("gl",b.country.toLowerCase()),b.language&&e.set("hl",b.language),b.timeRange&&"any"!==b.timeRange){let a={day:"d1",week:"w1",month:"m1",year:"y1"}[b.timeRange];a&&e.set("dateRestrict",a)}return"number"==typeof b.offset&&b.offset>0&&e.set("start",String(Math.min(b.offset+1,91))),{url:`${A(a,b)}?${e}`,init:{method:"GET",headers:{Accept:"application/json"}}}},linkup:function(a,b){let c=b.token;if(!c)throw Error("Linkup Search requires an API key");let{includes:d,excludes:e}=y(b.domainFilter),f=z(b,"depth"),g=f&&["fast","standard","deep"].includes(f)?f:"standard",h={q:b.query,depth:g,outputType:"searchResults",maxResults:b.maxResults};if(d.length&&(h.includeDomains=d),e.length&&(h.excludeDomains=e),b.timeRange&&"any"!==b.timeRange){let a=new Date,c=a.toISOString().slice(0,10),d=new Date(a);"day"===b.timeRange&&d.setUTCDate(d.getUTCDate()-1),"week"===b.timeRange&&d.setUTCDate(d.getUTCDate()-7),"month"===b.timeRange&&d.setUTCMonth(d.getUTCMonth()-1),"year"===b.timeRange&&d.setUTCFullYear(d.getUTCFullYear()-1),h.fromDate=d.toISOString().slice(0,10),h.toDate=c}return{url:A(a,b),init:{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${c}`},body:JSON.stringify(h)}}},searchapi:function(a,b){let c=b.token;if(!c)throw Error("SearchAPI requires an API key");let d=new URLSearchParams({engine:"news"===b.searchType?"google_news":"google",q:b.query,api_key:c});b.country&&d.set("gl",b.country.toLowerCase()),b.language&&d.set("hl",b.language);let e=B(b.offset,b.maxResults);return e&&d.set("page",String(e)),{url:`${A(a,b)}?${d}`,init:{method:"GET",headers:{Accept:"application/json"}}}},youcom:function(a,b){let c=b.token;if(!c)throw Error("You.com Search requires an API key");let{includes:d,excludes:e}=y(b.domainFilter),f=new URLSearchParams({query:b.query,count:String(Math.min(b.maxResults,100))});return b.timeRange&&"any"!==b.timeRange&&f.set("freshness",b.timeRange),"number"==typeof b.offset&&b.offset>0&&b.maxResults>0&&f.set("offset",String(Math.min(Math.floor(b.offset/b.maxResults),9))),b.country&&f.set("country",b.country),b.language&&f.set("language",b.language),d.length&&f.set("include_domains",d.join(",")),e.length&&f.set("exclude_domains",e.join(",")),b.contentOptions?.full_page&&(f.set("livecrawl","news"===b.searchType?"news":"web"),f.append("livecrawl_formats","markdown"===b.contentOptions.format?"markdown":"html")),{url:`${A(a,b)}?${f}`,init:{method:"GET",headers:{Accept:"application/json","X-API-Key":c}}}},searxng:function(a,b){let c=A(a,b),d=c.endsWith("/search")?c:`${c}/search`,e=new URLSearchParams({q:b.query,format:"json",categories:"news"===b.searchType?"news":"general"});b.language&&e.set("language",b.language),b.timeRange&&"any"!==b.timeRange&&e.set("time_range",b.timeRange);let f=B(b.offset,b.maxResults);return f&&e.set("pageno",String(f)),{url:`${d}?${e}`,init:{method:"GET",headers:{Accept:"application/json"}}}}};function D(a,b,c,d){let e=b.url||"";return{title:b.title||"",url:e,display_url:e?e.replace(/^https?:\/\/(www\.)?/,"").split("?")[0]:void 0,snippet:b.snippet||"",position:c+1,score:"number"==typeof b.score?Math.min(1,Math.max(0,b.score)):null,published_at:b.published_at||null,favicon_url:b.favicon_url||null,content:b.full_text?{format:b.text_format||"text",text:b.full_text,length:b.full_text.length}:null,metadata:{author:b.author||null,language:null,source_type:b.source_type||null,image_url:b.image_url||null},citation:{provider:a,retrieved_at:d,rank:c+1},provider_raw:null}}let E={serper:function(a,b,c){let d=new Date().toISOString(),e="news"===c?a.news:a.organic;if(!Array.isArray(e))return{results:[],totalResults:null};let f=e.map((a,b)=>D("serper",{title:a.title,url:a.link,snippet:a.snippet||a.description,published_at:a.date},b,d)),g=a.searchParameters?.totalResults;return{results:f,totalResults:"number"==typeof g?g:null}},"brave-search":function(a,b,c){let d=new Date().toISOString(),e="news"===c?a.news||a:a.web,f=e?.results;return Array.isArray(f)?{results:f.map((a,b)=>D("brave-search",{title:a.title,url:a.url,snippet:a.description,published_at:a.page_age||a.age,favicon_url:a.meta_url?.favicon||a.favicon},b,d)),totalResults:e?.totalCount??null}:{results:[],totalResults:null}},perplexity:function(a,b,c){let d=new Date().toISOString(),e=a.results;if(!Array.isArray(e))return{results:[],totalResults:null};let f=e.map((a,b)=>D("perplexity",{title:a.title,url:a.url,snippet:a.snippet,published_at:a.date||a.last_updated},b,d));return{results:f,totalResults:f.length}},exa:function(a,b,c){let d=new Date().toISOString(),e=a.results;if(!Array.isArray(e))return{results:[],totalResults:null};let f=e.map((a,b)=>D("exa",{title:a.title,url:a.url,snippet:a.highlights?.[0]||a.text?.slice(0,300)||"",score:a.score,published_at:a.publishedDate,favicon_url:a.favicon,author:a.author,image_url:a.image,full_text:a.text,text_format:"text"},b,d));return{results:f,totalResults:f.length}},tavily:function(a,b,c){let d=new Date().toISOString(),e=a.results;if(!Array.isArray(e))return{results:[],totalResults:null};let f=e.map((a,b)=>D("tavily",{title:a.title,url:a.url,snippet:a.content||"",score:a.score,published_at:a.published_date,full_text:a.raw_content,text_format:"text"},b,d));return{results:f,totalResults:f.length}},"google-pse":function(a,b,c){let d=new Date().toISOString(),e=(Array.isArray(a.items)?a.items:[]).map((a,b)=>D("google-pse",{title:a.title,url:a.link,snippet:a.snippet,image_url:a.pagemap?.cse_image?.[0]?.src||a.pagemap?.cse_thumbnail?.[0]?.src||a.pagemap?.metatags?.[0]?.["og:image"]},b,d)),f=a.searchInformation?.totalResults??a.queries?.request?.[0]?.totalResults??null,g="string"==typeof f?Number(f):f;return{results:e,totalResults:Number.isFinite(g)?g:null}},linkup:function(a,b,c){let d=new Date().toISOString(),e=(Array.isArray(a.results)?a.results:[]).map((a,b)=>D("linkup",{title:a.name||a.title,url:a.url,snippet:a.content||a.snippet||"",source_type:a.type||"web",image_url:a.image_url||a.imageUrl||null,full_text:a.content,text_format:"text"},b,d));return{results:e,totalResults:e.length}},searchapi:function(a,b,c){let d=new Date().toISOString(),e=(Array.isArray(a.organic_results)?a.organic_results:Array.isArray(a.top_stories)?a.top_stories:[]).map((a,b)=>D("searchapi",{title:a.title,url:a.link,snippet:a.snippet||a.description||"",published_at:a.date||a.published_at,favicon_url:a.favicon,author:a.source||null,image_url:a.thumbnail||null},b,d)),f=a.search_information?.total_results,g="number"==typeof f?f:"string"==typeof f?Number(f):null;return{results:e,totalResults:Number.isFinite(g)?g:e.length}},youcom:function(a,b,c){let d=new Date().toISOString(),e=a?.results&&"object"==typeof a.results?a.results:void 0,f="news"===c?e?.news||[]:e?.web||[],g=(Array.isArray(f)?f:[]).map((a,b)=>{let e=Array.isArray(a.snippets)?a.snippets.find(a=>"string"==typeof a):null,f="string"==typeof a.markdown?a.markdown:"string"==typeof a.html?a.html:void 0,g="string"==typeof a.markdown?"markdown":"html";return D("youcom",{title:a.title,url:a.url,snippet:"string"==typeof e?e:"string"==typeof a.description?a.description:"",published_at:a.page_age,favicon_url:a.favicon_url,image_url:a.thumbnail_url,source_type:c,full_text:f,text_format:f?g:void 0},b,d)});return{results:g,totalResults:g.length}},searxng:function(a,b,c){let d=new Date().toISOString(),e=(Array.isArray(a.results)?a.results:[]).map((a,b)=>D("searxng",{title:a.title,url:a.url,snippet:a.content||a.snippet||"",published_at:a.publishedDate||a.published_date||null,source_type:Array.isArray(a.engines)?a.engines.join(", "):a.engine||a.category||null,image_url:a.thumbnail||a.img_src||null},b,d));return{results:e,totalResults:e.length}}};var F=c(45350),G=c(43157);let H=(a,b)=>(F.B$[a]?.searchViaChat?.endpoint||"").replace("{model}",b||"");function I(a){return a?"string"==typeof a?{url:a}:"object"==typeof a&&a.url?a:null:null}let J={gemini:{endpoint:a=>H("gemini",a),buildBody:a=>({contents:[{role:"user",parts:[{text:a}]}],tools:[{google_search:{}}]}),buildHeaders:a=>({"Content-Type":"application/json","x-goog-api-key":a}),extractAnswer:a=>{let b=a?.candidates?.[0],c=(b?.content?.parts||[]).map(a=>a?.text||"").filter(Boolean).join("");return{text:c,citations:(b?.groundingMetadata?.groundingChunks||[]).map(a=>a?.web).filter(Boolean).map(a=>({url:a.uri||a.url,title:a.title||""})).filter(a=>a.url),tokens:a?.usageMetadata?.totalTokenCount||0}}},openai:{endpoint:()=>H("openai"),buildBody:(a,b)=>{let c={model:b,messages:[{role:"user",content:a}]};return/search/i.test(b)||(c.tools=[{type:"web_search"}]),c},buildHeaders:a=>({"Content-Type":"application/json",Authorization:`Bearer ${a}`}),extractAnswer:a=>{let b=a?.choices?.[0]?.message||{},c=b.content||"",d=(Array.isArray(b.annotations)?b.annotations:[]).map(a=>a?.url_citation).filter(Boolean).map(a=>({url:a.url,title:a.title||""})),e=Array.isArray(a?.citations)?a.citations.map(I).filter(Boolean):[];return{text:c,citations:d.length?d:e,tokens:a?.usage?.total_tokens||0}}},xai:{endpoint:()=>H("xai"),buildBody:(a,b)=>({model:b,input:[{role:"user",content:a}],tools:[{type:"web_search"}]}),buildHeaders:a=>({"Content-Type":"application/json",Authorization:`Bearer ${a}`}),extractAnswer:a=>{let b=Array.isArray(a?.output)?a.output:[],c="",d=[];for(let a of b)for(let b of Array.isArray(a?.content)?a.content:[])for(let a of("string"==typeof b?.text&&(c+=b.text),Array.isArray(b?.annotations)?b.annotations:[])){let b=I(a?.url?a:a?.url_citation);b&&d.push(b)}if(!d.length&&Array.isArray(a?.citations))for(let b of a.citations){let a=I(b);a&&d.push(a)}return{text:c,citations:d,tokens:a?.usage?.total_tokens||0}}},kimi:{endpoint:()=>H("kimi"),buildBody:(a,b)=>({model:b,messages:[{role:"user",content:a}],tools:[{type:"builtin_function",function:{name:"$web_search"}}]}),buildHeaders:a=>({"Content-Type":"application/json",Authorization:`Bearer ${a}`}),extractAnswer:a=>{let b=a?.choices?.[0]?.message||{},c=b.content||"",d=Array.isArray(b.tool_calls)?b.tool_calls:[],e=[];for(let a of d){let b,c=a?.function?.arguments;if(!c)continue;try{b="string"==typeof c?JSON.parse(c):c}catch{continue}let d=b?.search_results||b?.results||b?.references||[];if(Array.isArray(d))for(let a of d){let b=a?.url||a?.link;b&&e.push({url:b,title:a.title||"",snippet:a.snippet||a.summary||""})}}return{text:c,citations:e,tokens:a?.usage?.total_tokens||0}}},minimax:{endpoint:()=>H("minimax"),buildBody:(a,b)=>({model:b,messages:[{role:"user",content:a}],tools:[{type:"web_search"}]}),buildHeaders:a=>({"Content-Type":"application/json",Authorization:`Bearer ${a}`}),extractAnswer:a=>{let b=a?.choices?.[0]?.message||{},c=b.content||"",d=[];for(let b of Array.isArray(a?.web_search_results)?a.web_search_results:[]){let a=b?.url||b?.link;a&&d.push({url:a,title:b.title||"",snippet:b.snippet||b.summary||""})}if(!d.length)for(let a of Array.isArray(b.tool_calls)?b.tool_calls:[]){let b,c=a?.function?.arguments;if(!c)continue;try{b="string"==typeof c?JSON.parse(c):c}catch{continue}let e=b?.results||b?.search_results||[];if(Array.isArray(e))for(let a of e){let b=a?.url||a?.link;b&&d.push({url:b,title:a.title||"",snippet:a.snippet||""})}}return{text:c,citations:d,tokens:a?.usage?.total_tokens||0}}},perplexity:{endpoint:()=>H("perplexity"),buildBody:(a,b)=>({model:b,messages:[{role:"user",content:a}]}),buildHeaders:a=>({"Content-Type":"application/json",Authorization:`Bearer ${a}`}),extractAnswer:a=>{let b=(a?.choices?.[0]?.message||{}).content||"",c=a?.citations||[];return{text:b,citations:Array.isArray(c)?c.map(I).filter(Boolean):[],tokens:a?.usage?.total_tokens||0}}}};async function K({provider:a,query:b,maxResults:c,model:d,credentials:e,log:f,abortSignal:g=null}){let h,i,j=Date.now(),k=J[a];if(!k)return{success:!1,status:400,error:`Unsupported chat-search provider: ${a}`};if(!b||"string"!=typeof b)return{success:!1,status:400,error:"Missing query"};let l=e?.apiKey||e?.accessToken;if(!l)return{success:!1,status:401,error:"Missing credentials (apiKey or accessToken)"};let m=Number.isFinite(c)&&c>0?Math.floor(c):10,n=d||F.B$[a]?.searchViaChat?.defaultModel,o=k.endpoint(n),p=k.buildBody(b,n),q=k.buildHeaders(l),r=new AbortController,s=setTimeout(()=>r.abort(),15e3),t=Date.now();try{h=await fetch(o,{method:"POST",headers:q,body:JSON.stringify(p),signal:(0,G.O)(r.signal,g)})}catch(b){if(clearTimeout(s),b?.name==="AbortError")return f?.warn?.(`[chatSearch] timeout provider=${a}`),{success:!1,status:504,error:"Upstream timeout"};return f?.error?.(`[chatSearch] network error provider=${a}: ${b?.message}`),{success:!1,status:502,error:`Network error: ${b?.message||"unknown"}`}}clearTimeout(s);let u=Date.now()-t;try{i=await h.json()}catch{return{success:!1,status:502,error:`Invalid upstream response (status ${h.status})`}}if(!h.ok){let b=i?.error?.message||i?.error||i?.message||`Upstream HTTP ${h.status}`;return f?.warn?.(`[chatSearch] upstream error provider=${a} status=${h.status}`),{success:!1,status:h.status,error:"string"==typeof b?b:JSON.stringify(b)}}let{text:v,citations:w,tokens:x}=k.extractAnswer(i),y=new Date().toISOString(),z=(w||[]).slice(0,m).map((b,c)=>({title:b.title||"",url:b.url,snippet:b.snippet||"",position:c+1,score:null,published_at:null,favicon_url:null,content:null,metadata:{},citation:{provider:a,retrieved_at:y,rank:c+1},provider_raw:null}));return{success:!0,status:200,data:{provider:a,query:b,results:z,answer:{source:a,text:v||"",model:n},usage:{queries_used:1,search_cost_usd:0,llm_tokens:x||0},metrics:{response_time_ms:Date.now()-j,upstream_latency_ms:u,total_results_available:null},errors:[]}}}let L=new Set([400,401,403,404]),M=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/;function N(a,b=200){return new Response(JSON.stringify(a),{status:b,headers:{"Content-Type":"application/json"}})}function O(a,b){return{success:!1,status:a,error:b,response:N({error:{message:b,code:a}},a)}}function P(a){return{success:!0,data:a,response:N(a,200)}}async function Q({provider:a,providerConfig:b,body:c,credentials:d,log:e,globalStartTime:f,abortSignal:g=null}){var h,i,j,k;let l,m,n=Date.now(),o=d?.apiKey||d?.accessToken||void 0;if("none"!==b.authType&&!o)return{success:!1,status:401,error:`No credentials for provider: ${a.id}`};let p={query:c.query,searchType:c.search_type||b.searchTypes?.[0]||"web",maxResults:Math.min(c.max_results||b.defaultMaxResults||5,b.maxMaxResults||100),token:o,country:c.country,language:c.language,timeRange:c.time_range,offset:c.offset,domainFilter:c.domain_filter,contentOptions:c.content_options,providerOptions:c.provider_options,providerSpecificData:d?.providerSpecificData};try{let c;({url:l,init:m}=(h={id:a.id,...b},(c=C[h.id])?c(h,p):{url:A(h,p),init:{method:h.method||"POST",headers:{"Content-Type":"application/json",...p.token?{Authorization:`Bearer ${p.token}`}:{}},body:JSON.stringify({query:p.query,max_results:p.maxResults,search_type:p.searchType})}}))}catch(b){return{success:!1,status:400,error:b?.message||`Invalid request for ${a.id}`}}let q=15e3-(Date.now()-f),r=Math.min(b.timeoutMs||1e4,Math.max(q,1e3)),s=new AbortController,t=setTimeout(()=>s.abort(),r);e?.info?.("SEARCH",`${a.id} | "${p.query.slice(0,80)}" | type=${p.searchType}`);try{let c,d=await fetch(l,{...m,headers:function(a){if(!a)return a;let b={};for(let[c,d]of Object.entries(a))b[c]="string"==typeof d?d.replace(/[^\x00-\xFF]/g,"").trim():d;return b}(m.headers),signal:(0,G.O)(s.signal,g)});if(clearTimeout(t),!d.ok){let b=await d.text().catch(()=>"");return e?.error?.("SEARCH",`${a.id} ${d.status}: ${b.slice(0,200)}`),{success:!1,status:d.status,error:`${a.id} returned ${d.status}: ${b.slice(0,200)}`}}let f=await d.json(),h=(i=a.id,j=p.query,k=p.searchType,(c=E[i])?c(f,j,k):{results:[],totalResults:null}),o=h.results.slice(0,p.maxResults),q=Date.now()-n;return{success:!0,data:{provider:a.id,query:p.query,results:o,answer:null,usage:{queries_used:1,search_cost_usd:b.costPerQuery||0},metrics:{response_time_ms:q,upstream_latency_ms:q,total_results_available:h.totalResults},errors:[]}}}catch(c){clearTimeout(t);let b="AbortError"===c.name;return e?.error?.("SEARCH",`${a.id} ${b?"timeout":"error"}: ${c.message}`),{success:!1,status:b?504:502,error:`${a.id} ${b?"timeout":"error"}: ${c.message}`}}}async function R({body:a,provider:b,providerConfig:c,credentials:d,log:e,abortSignal:f=null}){let g,h=Date.now(),{clean:i,error:j}=function(a){if(M.test(a))return{error:"Query contains invalid control characters"};let b=a.normalize("NFKC").trim().replace(/\s+/g," ");return b?{clean:b}:{error:"Query is empty after normalization"}}(a.query||"");if(j)return O(400,j);let k={...a,query:i};if(c)g=await Q({provider:b,providerConfig:c,body:k,credentials:d,log:e,globalStartTime:h,abortSignal:f});else{if(!b.searchViaChat)return O(400,`Provider ${b.id} does not support web search`);g=await K({provider:b.id,query:i,maxResults:k.max_results,model:b.searchViaChat.defaultModel,credentials:d,log:e,abortSignal:f})}if(g.success)return P(g.data);if(!L.has(g.status||0)&&Date.now()-h<15e3&&b.searchViaChat&&c){e?.warn?.("SEARCH",`${b.id} dedicated failed (${g.status}), falling back to chat-based search`);let a=await K({provider:b.id,query:i,maxResults:k.max_results,model:b.searchViaChat.defaultModel,credentials:d,log:e,abortSignal:f});if(a.success)return P(a.data)}return O(g.status||502,g.error||"Search failed")}var S=c(89865),T=c(60290),U=c(7803),V=c(67828),W=c(3072),X=c(97004),Y=c(41460),Z=c(44196),$=c(39753);async function _(a){let b;try{b=await a.json()}catch{return U.warn("SEARCH","Invalid JSON body"),(0,S.yj)(T.gx.BAD_REQUEST,"Invalid JSON body")}if(!b||"object"!=typeof b||Array.isArray(b))return U.warn("SEARCH","Invalid JSON body shape"),(0,S.yj)(T.gx.BAD_REQUEST,"Invalid request body");let c=new URL(a.url),d=b.provider||b.model,e=b.query;U.request("POST",`${c.pathname} | ${d}`);let f=(0,v.Tr)(a);f?U.debug("AUTH",`API Key: ${U.maskKey(f)}`):U.debug("AUTH","No API key provided (local mode)");let g=await (0,w.mt)(),h=await (0,X.G)(g,f,{isValidApiKey:v.kI,log:U,errorResponse:S.yj,HTTP_STATUS:T.gx,request:a,hasValidCliToken:Y.gN});if(h)return h;if(!d||"string"!=typeof d)return U.warn("SEARCH","Missing provider/model"),(0,S.yj)(T.gx.BAD_REQUEST,"Missing required field: provider (or model)");if(!e||"string"!=typeof e||!e.trim())return U.warn("SEARCH","Missing query"),(0,S.yj)(T.gx.BAD_REQUEST,"Missing required field: query");let i=0;try{i=(0,$.NL)(g)}catch{}let j=null;if(i>0)try{j={cacheKey:(0,$.c4)(b,d),kind:"search",url:e.trim(),ttlMs:i}}catch{}if(j)try{let a=await (0,Z.l0)(j.cacheKey);if(a)return U.info("SEARCH",`cache hit ${j.url}`),(0,$.XM)(a)}catch{}let k=async a=>j?(0,$.IJ)(a,j,U):a,l=await (0,w.Uv)(),m=(0,W.Vu)(d,l);if(m){let c=g.comboStrategies||{},e=c[d]?.fallbackStrategy||g.comboStrategy||"fallback",h=g.comboStickyRoundRobinLimit;return U.info("SEARCH",`Combo "${d}" with ${m.length} providers (strategy: ${e}, sticky: ${h})`),k(await (0,W.Pr)({body:b,models:m,handleSingleModel:(b,c,d)=>aa(b,c,a,f,g,d),log:U,comboName:d,comboStrategy:e,comboStickyLimit:h,abortSignal:a?.signal||null}))}return k(await aa(b,d,a,f,g,{signal:a?.signal||null}))}async function aa(a,b,c,d,e,f=null){let g=a.query,h=(0,x.rs)(b),i=x.AI_PROVIDERS[h];if(!i)return U.warn("SEARCH","Unknown provider",{provider:b}),(0,S.yj)(T.gx.BAD_REQUEST,`Unknown provider: ${b}`);let j=i.searchConfig;if(!(j||i.searchViaChat))return U.warn("SEARCH","Provider does not support web search",{provider:h}),(0,S.yj)(T.gx.BAD_REQUEST,`Provider ${h} does not support web search`);b!==h?U.info("ROUTING",`${b} → ${h}`):U.info("ROUTING",`Provider: ${h}`);let k={query:g.trim(),provider:h,max_results:a.max_results,search_type:a.search_type,country:a.country,language:a.language,time_range:a.time_range,offset:a.offset,domain_filter:a.domain_filter,content_options:a.content_options,provider_options:a.provider_options};if(i.noAuth){U.info("AUTH",`\x1b[32m${h} no-auth mode\x1b[0m`);let a=await R({body:k,provider:i,providerConfig:j,credentials:null,log:U,abortSignal:f?.signal||c?.signal||null});return a.success,a.response}let l=new Set,m=null,n=null;for(;;){let a=await (0,v.c1)(h,l);if(!a||a.allRateLimited){if(a?.allRateLimited){let b=m||a.lastError||"Unavailable",c=n||Number(a.lastErrorCode)||T.gx.SERVICE_UNAVAILABLE;return U.warn("SEARCH",`[${h}] ${b} (${a.retryAfterHuman})`),(0,S.wO)(c,`[${h}] ${b}`,a.retryAfter,a.retryAfterHuman)}if(0===l.size)return U.error("AUTH",`No credentials for provider: ${h}`),(0,S.yj)(T.gx.BAD_REQUEST,`No credentials for provider: ${h}`);return U.warn("SEARCH","No more accounts available",{provider:h}),(0,S.yj)(n||T.gx.SERVICE_UNAVAILABLE,m||"All accounts unavailable")}U.info("AUTH",`\x1b[32mUsing ${h} account: ${a.connectionName}\x1b[0m`);let b=await (0,V.eU)(h,a),d=await R({body:k,provider:i,providerConfig:j,credentials:b,log:U,abortSignal:f?.signal||c?.signal||null,onCredentialsRefreshed:async b=>{await (0,V.vN)(a.connectionId,{accessToken:b.accessToken,refreshToken:b.refreshToken,providerSpecificData:b.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{await (0,v.Pt)(a.connectionId,a)}});if(d.success)return d.response;let{shouldFallback:e}=await (0,v.vk)(a.connectionId,d.status,d.error,h);if(e){U.warn("AUTH",`Account ${a.connectionName} unavailable (${d.status}), trying fallback`),l.add(a.connectionId),m=d.error,n=d.status;continue}return d.response}}async function ab(){return new Response(null,{headers:{"Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"*"}})}async function ac(a){return await _(a)}let ad=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/v1/search/route",pathname:"/api/v1/search",filename:"route",bundlePath:"app/api/v1/search/route"},distDir:".next-cli-build",relativeProjectDir:"",resolvedPagePath:"/home/runner/work/switchboard-router/switchboard-router/src/app/api/v1/search/route.js",nextConfigOutput:"standalone",userland:d,...{}}),{workAsyncStorage:ae,workUnitAsyncStorage:af,serverHooks:ag}=ad;function ah(){return(0,g.patchFetch)({workAsyncStorage:ae,workUnitAsyncStorage:af})}async function ai(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),ad.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/v1/search/route";"/index"===d&&(d="/");let e=await ad.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,deploymentId:v,params:w,nextConfig:x,parsedUrl:y,isDraftMode:z,prerenderManifest:A,routerServerContext:B,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(A.dynamicRoutes[H]||A.routes[E]),J=async()=>((null==B?void 0:B.render404)?await B.render404(a,b,y,!1):b.end("This page could not be found"),null);if(I&&!z){let a=!!A.routes[E],b=A.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(x.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||ad.isDev||z||(K="/index"===(K=E)?"/":K);let L=!0===ad.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==B?void 0:B.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await ad.getIncrementalCache(a,x,A,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:w,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts},cacheComponents:!!x.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:x.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>ad.onRequestError(a,b,d,e,B)},sharedContext:{buildId:g,deploymentId:v}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>ad.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await ad.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),b}},k=await ad.handleResponse({req:a,nextConfig:x,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",C?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),z&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await ad.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{a.exports=require("better-sqlite3")},87997:a=>{a.exports=require("node:timers")},91645:a=>{a.exports=require("net")},94735:a=>{a.exports=require("events")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,1813,7774,9613,7141,5350,869,3986,4776,4646,8129,3904,6406,9261,3072,7828,7155],()=>b(b.s=83727));module.exports=c})();
1
+ "use strict";(()=>{var a={};a.id=8736,a.ids=[8736],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},643:a=>{a.exports=require("node:perf_hooks")},1708:a=>{a.exports=require("node:process")},1932:a=>{a.exports=require("url")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4573:a=>{a.exports=require("node:buffer")},7066:a=>{a.exports=require("node:tty")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},14985:a=>{a.exports=require("dns")},16698:a=>{a.exports=require("node:async_hooks")},21820:a=>{a.exports=require("os")},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31421:a=>{a.exports=require("node:child_process")},32467:a=>{a.exports=require("node:http2")},33873:a=>{a.exports=require("path")},34589:a=>{a.exports=require("node:assert")},37067:a=>{a.exports=require("node:http")},37540:a=>{a.exports=require("node:console")},38522:a=>{a.exports=require("node:zlib")},39753:(a,b,c)=>{c.d(b,{IJ:()=>k,Ku:()=>h,NL:()=>g,XM:()=>j,c4:()=>i});var d=c(77598),e=c(44196);function f(a,b){return(0,d.createHash)("sha256").update(`${a}:${JSON.stringify(function a(b){return Array.isArray(b)?b.map(a):b&&"object"==typeof b?Object.fromEntries(Object.keys(b).sort().map(c=>[c,a(b[c])])):b}(b))}`).digest("hex")}function g(a){let b=Number(a?.tokenSaver?.fetchCacheTtlHours??24);return!Number.isFinite(b)||b<=0?0:3600*b*1e3}function h(a,b){return f("fetch",{provider:b,url:function(a){let b=String(a||"").trim(),c=b.indexOf("://");if(c<0)return b;let d=c+3,e=b.slice(d).search(/[/?#]/),f=e<0?b.length:d+e,g=b.slice(d,f),h=g.lastIndexOf("@");return`${b.slice(0,d)}${g.slice(0,h+1)}${g.slice(h+1).toLowerCase()}${b.slice(f)}`}(a.url),format:a.format??null,maxCharacters:a.max_characters??null})}function i(a,b){return f("search",{provider:b,query:String(a.query||"").trim(),maxResults:a.max_results??null,searchType:a.search_type??null,country:a.country??null,language:a.language??null,timeRange:a.time_range??null,offset:a.offset??null,domainFilter:a.domain_filter??null,contentOptions:a.content_options??null,providerOptions:a.provider_options??null})}function j(a){return new Response(a.content,{headers:{"Content-Type":a.contentType||"application/json","X-Switchboard-Cache":"hit"}})}async function k(a,b,c){try{let d=a?.headers?.get("content-type")||"application/json",f=d.toLowerCase();if(!a?.ok||f.includes("text/event-stream")||f.includes("ndjson"))return a;let g=await a.clone().text();await (0,e.OS)({...b,content:g,contentType:d}),c.info(b.kind.toUpperCase(),`cache stored ${b.url}`)}catch{}return a}},40610:a=>{a.exports=require("node:dns")},41692:a=>{a.exports=require("node:tls")},41792:a=>{a.exports=require("node:querystring")},43157:(a,b,c)=>{c.d(b,{O:()=>d});function d(...a){let b=a.filter(a=>a&&"object"==typeof a);if(0===b.length)return;if(1===b.length)return b[0];if("function"==typeof AbortSignal.any)return AbortSignal.any(b);let c=new AbortController,e=a=>{try{c.abort(a?.target?.reason)}catch{}};for(let a of b){if(a.aborted){e({target:a});break}a.addEventListener("abort",e,{once:!0})}return c.signal}},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46293:a=>{a.exports=require("sql.js")},48161:a=>{a.exports=require("node:os")},51455:a=>{a.exports=require("node:fs/promises")},53053:a=>{a.exports=require("node:diagnostics_channel")},55511:a=>{a.exports=require("crypto")},55591:a=>{a.exports=require("https")},57075:a=>{a.exports=require("node:stream")},57975:a=>{a.exports=require("node:util")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},71553:a=>{a.exports=require("node:dns/promises")},73024:a=>{a.exports=require("node:fs")},73136:a=>{a.exports=require("node:url")},73429:a=>{a.exports=require("node:util/types")},73496:a=>{a.exports=require("http2")},74075:a=>{a.exports=require("zlib")},75919:a=>{a.exports=require("node:worker_threads")},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},78474:a=>{a.exports=require("node:events")},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},79868:a=>{a.exports=require("node:sqlite")},81630:a=>{a.exports=require("http")},81787:a=>{a.exports=require("bun:sqlite")},83727:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>ai,patchFetch:()=>ah,routeModule:()=>ad,serverHooks:()=>ag,workAsyncStorage:()=>ae,workUnitAsyncStorage:()=>af});var d={};c.r(d),c.d(d,{OPTIONS:()=>ab,POST:()=>ac});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527);c(40863);var v=c(80238),w=c(44776),x=c(40615);function y(a){return a?.length?{includes:a.filter(a=>!a.startsWith("-")),excludes:a.filter(a=>a.startsWith("-")).map(a=>a.slice(1))}:{includes:[],excludes:[]}}function z(a,b){let c=a.providerOptions?.[b];if("string"==typeof c&&c.trim().length>0)return c.trim();let d=a.providerSpecificData?.[b];if("string"==typeof d&&d.trim().length>0)return d.trim()}function A(a,b){return(z(b,"baseUrl")||a.baseUrl).replace(/\/+$/,"")}function B(a,b){if("number"==typeof a&&!(a<=0)&&!(b<=0))return Math.floor(a/b)+1}let C={serper:function(a,b){let c="news"===b.searchType?"/news":"/search",d={q:b.query,num:b.maxResults};return b.country&&(d.gl=b.country.toLowerCase()),b.language&&(d.hl=b.language),{url:`${A(a,b)}${c}`,init:{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":b.token},body:JSON.stringify(d)}}},"brave-search":function(a,b){let c="news"===b.searchType?"/news/search":"/web/search",d=new URLSearchParams({q:b.query,count:String(b.maxResults)});return b.country&&d.set("country",b.country),b.language&&d.set("search_lang",b.language),{url:`${A(a,b)}${c}?${d}`,init:{method:"GET",headers:{Accept:"application/json","X-Subscription-Token":b.token}}}},perplexity:function(a,b){let c={query:b.query,max_results:b.maxResults};return b.country&&(c.country=b.country),b.language&&(c.search_language_filter=[b.language]),b.domainFilter?.length&&(c.search_domain_filter=b.domainFilter),{url:A(a,b),init:{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${b.token}`},body:JSON.stringify(c)}}},exa:function(a,b){let{includes:c,excludes:d}=y(b.domainFilter),e={query:b.query,numResults:b.maxResults,type:"auto",text:!0,highlights:!0};return c.length&&(e.includeDomains=c),d.length&&(e.excludeDomains=d),"news"===b.searchType&&(e.category="news"),{url:A(a,b),init:{method:"POST",headers:{"Content-Type":"application/json","x-api-key":b.token},body:JSON.stringify(e)}}},tavily:function(a,b){let{includes:c,excludes:d}=y(b.domainFilter),e={query:b.query,max_results:b.maxResults,topic:"news"===b.searchType?"news":"general"};return c.length&&(e.include_domains=c),d.length&&(e.exclude_domains=d),b.country&&(e.country=b.country),{url:A(a,b),init:{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${b.token}`},body:JSON.stringify(e)}}},"google-pse":function(a,b){let c=b.token,d=z(b,"cx");if(!c||!d)throw Error("Google Programmable Search requires both apiKey and cx");let e=new URLSearchParams({key:c,cx:d,q:b.query,num:String(Math.min(b.maxResults,10))});if(b.country&&e.set("gl",b.country.toLowerCase()),b.language&&e.set("hl",b.language),b.timeRange&&"any"!==b.timeRange){let a={day:"d1",week:"w1",month:"m1",year:"y1"}[b.timeRange];a&&e.set("dateRestrict",a)}return"number"==typeof b.offset&&b.offset>0&&e.set("start",String(Math.min(b.offset+1,91))),{url:`${A(a,b)}?${e}`,init:{method:"GET",headers:{Accept:"application/json"}}}},linkup:function(a,b){let c=b.token;if(!c)throw Error("Linkup Search requires an API key");let{includes:d,excludes:e}=y(b.domainFilter),f=z(b,"depth"),g=f&&["fast","standard","deep"].includes(f)?f:"standard",h={q:b.query,depth:g,outputType:"searchResults",maxResults:b.maxResults};if(d.length&&(h.includeDomains=d),e.length&&(h.excludeDomains=e),b.timeRange&&"any"!==b.timeRange){let a=new Date,c=a.toISOString().slice(0,10),d=new Date(a);"day"===b.timeRange&&d.setUTCDate(d.getUTCDate()-1),"week"===b.timeRange&&d.setUTCDate(d.getUTCDate()-7),"month"===b.timeRange&&d.setUTCMonth(d.getUTCMonth()-1),"year"===b.timeRange&&d.setUTCFullYear(d.getUTCFullYear()-1),h.fromDate=d.toISOString().slice(0,10),h.toDate=c}return{url:A(a,b),init:{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${c}`},body:JSON.stringify(h)}}},searchapi:function(a,b){let c=b.token;if(!c)throw Error("SearchAPI requires an API key");let d=new URLSearchParams({engine:"news"===b.searchType?"google_news":"google",q:b.query,api_key:c});b.country&&d.set("gl",b.country.toLowerCase()),b.language&&d.set("hl",b.language);let e=B(b.offset,b.maxResults);return e&&d.set("page",String(e)),{url:`${A(a,b)}?${d}`,init:{method:"GET",headers:{Accept:"application/json"}}}},youcom:function(a,b){let c=b.token;if(!c)throw Error("You.com Search requires an API key");let{includes:d,excludes:e}=y(b.domainFilter),f=new URLSearchParams({query:b.query,count:String(Math.min(b.maxResults,100))});return b.timeRange&&"any"!==b.timeRange&&f.set("freshness",b.timeRange),"number"==typeof b.offset&&b.offset>0&&b.maxResults>0&&f.set("offset",String(Math.min(Math.floor(b.offset/b.maxResults),9))),b.country&&f.set("country",b.country),b.language&&f.set("language",b.language),d.length&&f.set("include_domains",d.join(",")),e.length&&f.set("exclude_domains",e.join(",")),b.contentOptions?.full_page&&(f.set("livecrawl","news"===b.searchType?"news":"web"),f.append("livecrawl_formats","markdown"===b.contentOptions.format?"markdown":"html")),{url:`${A(a,b)}?${f}`,init:{method:"GET",headers:{Accept:"application/json","X-API-Key":c}}}},searxng:function(a,b){let c=A(a,b),d=c.endsWith("/search")?c:`${c}/search`,e=new URLSearchParams({q:b.query,format:"json",categories:"news"===b.searchType?"news":"general"});b.language&&e.set("language",b.language),b.timeRange&&"any"!==b.timeRange&&e.set("time_range",b.timeRange);let f=B(b.offset,b.maxResults);return f&&e.set("pageno",String(f)),{url:`${d}?${e}`,init:{method:"GET",headers:{Accept:"application/json"}}}}};function D(a,b,c,d){let e=b.url||"";return{title:b.title||"",url:e,display_url:e?e.replace(/^https?:\/\/(www\.)?/,"").split("?")[0]:void 0,snippet:b.snippet||"",position:c+1,score:"number"==typeof b.score?Math.min(1,Math.max(0,b.score)):null,published_at:b.published_at||null,favicon_url:b.favicon_url||null,content:b.full_text?{format:b.text_format||"text",text:b.full_text,length:b.full_text.length}:null,metadata:{author:b.author||null,language:null,source_type:b.source_type||null,image_url:b.image_url||null},citation:{provider:a,retrieved_at:d,rank:c+1},provider_raw:null}}let E={serper:function(a,b,c){let d=new Date().toISOString(),e="news"===c?a.news:a.organic;if(!Array.isArray(e))return{results:[],totalResults:null};let f=e.map((a,b)=>D("serper",{title:a.title,url:a.link,snippet:a.snippet||a.description,published_at:a.date},b,d)),g=a.searchParameters?.totalResults;return{results:f,totalResults:"number"==typeof g?g:null}},"brave-search":function(a,b,c){let d=new Date().toISOString(),e="news"===c?a.news||a:a.web,f=e?.results;return Array.isArray(f)?{results:f.map((a,b)=>D("brave-search",{title:a.title,url:a.url,snippet:a.description,published_at:a.page_age||a.age,favicon_url:a.meta_url?.favicon||a.favicon},b,d)),totalResults:e?.totalCount??null}:{results:[],totalResults:null}},perplexity:function(a,b,c){let d=new Date().toISOString(),e=a.results;if(!Array.isArray(e))return{results:[],totalResults:null};let f=e.map((a,b)=>D("perplexity",{title:a.title,url:a.url,snippet:a.snippet,published_at:a.date||a.last_updated},b,d));return{results:f,totalResults:f.length}},exa:function(a,b,c){let d=new Date().toISOString(),e=a.results;if(!Array.isArray(e))return{results:[],totalResults:null};let f=e.map((a,b)=>D("exa",{title:a.title,url:a.url,snippet:a.highlights?.[0]||a.text?.slice(0,300)||"",score:a.score,published_at:a.publishedDate,favicon_url:a.favicon,author:a.author,image_url:a.image,full_text:a.text,text_format:"text"},b,d));return{results:f,totalResults:f.length}},tavily:function(a,b,c){let d=new Date().toISOString(),e=a.results;if(!Array.isArray(e))return{results:[],totalResults:null};let f=e.map((a,b)=>D("tavily",{title:a.title,url:a.url,snippet:a.content||"",score:a.score,published_at:a.published_date,full_text:a.raw_content,text_format:"text"},b,d));return{results:f,totalResults:f.length}},"google-pse":function(a,b,c){let d=new Date().toISOString(),e=(Array.isArray(a.items)?a.items:[]).map((a,b)=>D("google-pse",{title:a.title,url:a.link,snippet:a.snippet,image_url:a.pagemap?.cse_image?.[0]?.src||a.pagemap?.cse_thumbnail?.[0]?.src||a.pagemap?.metatags?.[0]?.["og:image"]},b,d)),f=a.searchInformation?.totalResults??a.queries?.request?.[0]?.totalResults??null,g="string"==typeof f?Number(f):f;return{results:e,totalResults:Number.isFinite(g)?g:null}},linkup:function(a,b,c){let d=new Date().toISOString(),e=(Array.isArray(a.results)?a.results:[]).map((a,b)=>D("linkup",{title:a.name||a.title,url:a.url,snippet:a.content||a.snippet||"",source_type:a.type||"web",image_url:a.image_url||a.imageUrl||null,full_text:a.content,text_format:"text"},b,d));return{results:e,totalResults:e.length}},searchapi:function(a,b,c){let d=new Date().toISOString(),e=(Array.isArray(a.organic_results)?a.organic_results:Array.isArray(a.top_stories)?a.top_stories:[]).map((a,b)=>D("searchapi",{title:a.title,url:a.link,snippet:a.snippet||a.description||"",published_at:a.date||a.published_at,favicon_url:a.favicon,author:a.source||null,image_url:a.thumbnail||null},b,d)),f=a.search_information?.total_results,g="number"==typeof f?f:"string"==typeof f?Number(f):null;return{results:e,totalResults:Number.isFinite(g)?g:e.length}},youcom:function(a,b,c){let d=new Date().toISOString(),e=a?.results&&"object"==typeof a.results?a.results:void 0,f="news"===c?e?.news||[]:e?.web||[],g=(Array.isArray(f)?f:[]).map((a,b)=>{let e=Array.isArray(a.snippets)?a.snippets.find(a=>"string"==typeof a):null,f="string"==typeof a.markdown?a.markdown:"string"==typeof a.html?a.html:void 0,g="string"==typeof a.markdown?"markdown":"html";return D("youcom",{title:a.title,url:a.url,snippet:"string"==typeof e?e:"string"==typeof a.description?a.description:"",published_at:a.page_age,favicon_url:a.favicon_url,image_url:a.thumbnail_url,source_type:c,full_text:f,text_format:f?g:void 0},b,d)});return{results:g,totalResults:g.length}},searxng:function(a,b,c){let d=new Date().toISOString(),e=(Array.isArray(a.results)?a.results:[]).map((a,b)=>D("searxng",{title:a.title,url:a.url,snippet:a.content||a.snippet||"",published_at:a.publishedDate||a.published_date||null,source_type:Array.isArray(a.engines)?a.engines.join(", "):a.engine||a.category||null,image_url:a.thumbnail||a.img_src||null},b,d));return{results:e,totalResults:e.length}}};var F=c(45350),G=c(43157);let H=(a,b)=>(F.B$[a]?.searchViaChat?.endpoint||"").replace("{model}",b||"");function I(a){return a?"string"==typeof a?{url:a}:"object"==typeof a&&a.url?a:null:null}let J={gemini:{endpoint:a=>H("gemini",a),buildBody:a=>({contents:[{role:"user",parts:[{text:a}]}],tools:[{google_search:{}}]}),buildHeaders:a=>({"Content-Type":"application/json","x-goog-api-key":a}),extractAnswer:a=>{let b=a?.candidates?.[0],c=(b?.content?.parts||[]).map(a=>a?.text||"").filter(Boolean).join("");return{text:c,citations:(b?.groundingMetadata?.groundingChunks||[]).map(a=>a?.web).filter(Boolean).map(a=>({url:a.uri||a.url,title:a.title||""})).filter(a=>a.url),tokens:a?.usageMetadata?.totalTokenCount||0}}},openai:{endpoint:()=>H("openai"),buildBody:(a,b)=>{let c={model:b,messages:[{role:"user",content:a}]};return/search/i.test(b)||(c.tools=[{type:"web_search"}]),c},buildHeaders:a=>({"Content-Type":"application/json",Authorization:`Bearer ${a}`}),extractAnswer:a=>{let b=a?.choices?.[0]?.message||{},c=b.content||"",d=(Array.isArray(b.annotations)?b.annotations:[]).map(a=>a?.url_citation).filter(Boolean).map(a=>({url:a.url,title:a.title||""})),e=Array.isArray(a?.citations)?a.citations.map(I).filter(Boolean):[];return{text:c,citations:d.length?d:e,tokens:a?.usage?.total_tokens||0}}},xai:{endpoint:()=>H("xai"),buildBody:(a,b)=>({model:b,input:[{role:"user",content:a}],tools:[{type:"web_search"}]}),buildHeaders:a=>({"Content-Type":"application/json",Authorization:`Bearer ${a}`}),extractAnswer:a=>{let b=Array.isArray(a?.output)?a.output:[],c="",d=[];for(let a of b)for(let b of Array.isArray(a?.content)?a.content:[])for(let a of("string"==typeof b?.text&&(c+=b.text),Array.isArray(b?.annotations)?b.annotations:[])){let b=I(a?.url?a:a?.url_citation);b&&d.push(b)}if(!d.length&&Array.isArray(a?.citations))for(let b of a.citations){let a=I(b);a&&d.push(a)}return{text:c,citations:d,tokens:a?.usage?.total_tokens||0}}},kimi:{endpoint:()=>H("kimi"),buildBody:(a,b)=>({model:b,messages:[{role:"user",content:a}],tools:[{type:"builtin_function",function:{name:"$web_search"}}]}),buildHeaders:a=>({"Content-Type":"application/json",Authorization:`Bearer ${a}`}),extractAnswer:a=>{let b=a?.choices?.[0]?.message||{},c=b.content||"",d=Array.isArray(b.tool_calls)?b.tool_calls:[],e=[];for(let a of d){let b,c=a?.function?.arguments;if(!c)continue;try{b="string"==typeof c?JSON.parse(c):c}catch{continue}let d=b?.search_results||b?.results||b?.references||[];if(Array.isArray(d))for(let a of d){let b=a?.url||a?.link;b&&e.push({url:b,title:a.title||"",snippet:a.snippet||a.summary||""})}}return{text:c,citations:e,tokens:a?.usage?.total_tokens||0}}},minimax:{endpoint:()=>H("minimax"),buildBody:(a,b)=>({model:b,messages:[{role:"user",content:a}],tools:[{type:"web_search"}]}),buildHeaders:a=>({"Content-Type":"application/json",Authorization:`Bearer ${a}`}),extractAnswer:a=>{let b=a?.choices?.[0]?.message||{},c=b.content||"",d=[];for(let b of Array.isArray(a?.web_search_results)?a.web_search_results:[]){let a=b?.url||b?.link;a&&d.push({url:a,title:b.title||"",snippet:b.snippet||b.summary||""})}if(!d.length)for(let a of Array.isArray(b.tool_calls)?b.tool_calls:[]){let b,c=a?.function?.arguments;if(!c)continue;try{b="string"==typeof c?JSON.parse(c):c}catch{continue}let e=b?.results||b?.search_results||[];if(Array.isArray(e))for(let a of e){let b=a?.url||a?.link;b&&d.push({url:b,title:a.title||"",snippet:a.snippet||""})}}return{text:c,citations:d,tokens:a?.usage?.total_tokens||0}}},perplexity:{endpoint:()=>H("perplexity"),buildBody:(a,b)=>({model:b,messages:[{role:"user",content:a}]}),buildHeaders:a=>({"Content-Type":"application/json",Authorization:`Bearer ${a}`}),extractAnswer:a=>{let b=(a?.choices?.[0]?.message||{}).content||"",c=a?.citations||[];return{text:b,citations:Array.isArray(c)?c.map(I).filter(Boolean):[],tokens:a?.usage?.total_tokens||0}}}};async function K({provider:a,query:b,maxResults:c,model:d,credentials:e,log:f,abortSignal:g=null}){let h,i,j=Date.now(),k=J[a];if(!k)return{success:!1,status:400,error:`Unsupported chat-search provider: ${a}`};if(!b||"string"!=typeof b)return{success:!1,status:400,error:"Missing query"};let l=e?.apiKey||e?.accessToken;if(!l)return{success:!1,status:401,error:"Missing credentials (apiKey or accessToken)"};let m=Number.isFinite(c)&&c>0?Math.floor(c):10,n=d||F.B$[a]?.searchViaChat?.defaultModel,o=k.endpoint(n),p=k.buildBody(b,n),q=k.buildHeaders(l),r=new AbortController,s=setTimeout(()=>r.abort(),15e3),t=Date.now();try{h=await fetch(o,{method:"POST",headers:q,body:JSON.stringify(p),signal:(0,G.O)(r.signal,g)})}catch(b){if(clearTimeout(s),b?.name==="AbortError")return f?.warn?.(`[chatSearch] timeout provider=${a}`),{success:!1,status:504,error:"Upstream timeout"};return f?.error?.(`[chatSearch] network error provider=${a}: ${b?.message}`),{success:!1,status:502,error:`Network error: ${b?.message||"unknown"}`}}clearTimeout(s);let u=Date.now()-t;try{i=await h.json()}catch{return{success:!1,status:502,error:`Invalid upstream response (status ${h.status})`}}if(!h.ok){let b=i?.error?.message||i?.error||i?.message||`Upstream HTTP ${h.status}`;return f?.warn?.(`[chatSearch] upstream error provider=${a} status=${h.status}`),{success:!1,status:h.status,error:"string"==typeof b?b:JSON.stringify(b)}}let{text:v,citations:w,tokens:x}=k.extractAnswer(i),y=new Date().toISOString(),z=(w||[]).slice(0,m).map((b,c)=>({title:b.title||"",url:b.url,snippet:b.snippet||"",position:c+1,score:null,published_at:null,favicon_url:null,content:null,metadata:{},citation:{provider:a,retrieved_at:y,rank:c+1},provider_raw:null}));return{success:!0,status:200,data:{provider:a,query:b,results:z,answer:{source:a,text:v||"",model:n},usage:{queries_used:1,search_cost_usd:0,llm_tokens:x||0},metrics:{response_time_ms:Date.now()-j,upstream_latency_ms:u,total_results_available:null},errors:[]}}}let L=new Set([400,401,403,404]),M=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/;function N(a,b=200){return new Response(JSON.stringify(a),{status:b,headers:{"Content-Type":"application/json"}})}function O(a,b){return{success:!1,status:a,error:b,response:N({error:{message:b,code:a}},a)}}function P(a){return{success:!0,data:a,response:N(a,200)}}async function Q({provider:a,providerConfig:b,body:c,credentials:d,log:e,globalStartTime:f,abortSignal:g=null}){var h,i,j,k;let l,m,n=Date.now(),o=d?.apiKey||d?.accessToken||void 0;if("none"!==b.authType&&!o)return{success:!1,status:401,error:`No credentials for provider: ${a.id}`};let p={query:c.query,searchType:c.search_type||b.searchTypes?.[0]||"web",maxResults:Math.min(c.max_results||b.defaultMaxResults||5,b.maxMaxResults||100),token:o,country:c.country,language:c.language,timeRange:c.time_range,offset:c.offset,domainFilter:c.domain_filter,contentOptions:c.content_options,providerOptions:c.provider_options,providerSpecificData:d?.providerSpecificData};try{let c;({url:l,init:m}=(h={id:a.id,...b},(c=C[h.id])?c(h,p):{url:A(h,p),init:{method:h.method||"POST",headers:{"Content-Type":"application/json",...p.token?{Authorization:`Bearer ${p.token}`}:{}},body:JSON.stringify({query:p.query,max_results:p.maxResults,search_type:p.searchType})}}))}catch(b){return{success:!1,status:400,error:b?.message||`Invalid request for ${a.id}`}}let q=15e3-(Date.now()-f),r=Math.min(b.timeoutMs||1e4,Math.max(q,1e3)),s=new AbortController,t=setTimeout(()=>s.abort(),r);e?.info?.("SEARCH",`${a.id} | "${p.query.slice(0,80)}" | type=${p.searchType}`);try{let c,d=await fetch(l,{...m,headers:function(a){if(!a)return a;let b={};for(let[c,d]of Object.entries(a))b[c]="string"==typeof d?d.replace(/[^\x00-\xFF]/g,"").trim():d;return b}(m.headers),signal:(0,G.O)(s.signal,g)});if(clearTimeout(t),!d.ok){let b=await d.text().catch(()=>"");return e?.error?.("SEARCH",`${a.id} ${d.status}: ${b.slice(0,200)}`),{success:!1,status:d.status,error:`${a.id} returned ${d.status}: ${b.slice(0,200)}`}}let f=await d.json(),h=(i=a.id,j=p.query,k=p.searchType,(c=E[i])?c(f,j,k):{results:[],totalResults:null}),o=h.results.slice(0,p.maxResults),q=Date.now()-n;return{success:!0,data:{provider:a.id,query:p.query,results:o,answer:null,usage:{queries_used:1,search_cost_usd:b.costPerQuery||0},metrics:{response_time_ms:q,upstream_latency_ms:q,total_results_available:h.totalResults},errors:[]}}}catch(c){clearTimeout(t);let b="AbortError"===c.name;return e?.error?.("SEARCH",`${a.id} ${b?"timeout":"error"}: ${c.message}`),{success:!1,status:b?504:502,error:`${a.id} ${b?"timeout":"error"}: ${c.message}`}}}async function R({body:a,provider:b,providerConfig:c,credentials:d,log:e,abortSignal:f=null}){let g,h=Date.now(),{clean:i,error:j}=function(a){if(M.test(a))return{error:"Query contains invalid control characters"};let b=a.normalize("NFKC").trim().replace(/\s+/g," ");return b?{clean:b}:{error:"Query is empty after normalization"}}(a.query||"");if(j)return O(400,j);let k={...a,query:i};if(c)g=await Q({provider:b,providerConfig:c,body:k,credentials:d,log:e,globalStartTime:h,abortSignal:f});else{if(!b.searchViaChat)return O(400,`Provider ${b.id} does not support web search`);g=await K({provider:b.id,query:i,maxResults:k.max_results,model:b.searchViaChat.defaultModel,credentials:d,log:e,abortSignal:f})}if(g.success)return P(g.data);if(!L.has(g.status||0)&&Date.now()-h<15e3&&b.searchViaChat&&c){e?.warn?.("SEARCH",`${b.id} dedicated failed (${g.status}), falling back to chat-based search`);let a=await K({provider:b.id,query:i,maxResults:k.max_results,model:b.searchViaChat.defaultModel,credentials:d,log:e,abortSignal:f});if(a.success)return P(a.data)}return O(g.status||502,g.error||"Search failed")}var S=c(89865),T=c(60290),U=c(7803),V=c(67828),W=c(3072),X=c(97004),Y=c(41460),Z=c(44196),$=c(39753);async function _(a){let b;try{b=await a.json()}catch{return U.warn("SEARCH","Invalid JSON body"),(0,S.yj)(T.gx.BAD_REQUEST,"Invalid JSON body")}if(!b||"object"!=typeof b||Array.isArray(b))return U.warn("SEARCH","Invalid JSON body shape"),(0,S.yj)(T.gx.BAD_REQUEST,"Invalid request body");let c=new URL(a.url),d=b.provider||b.model,e=b.query;U.request("POST",`${c.pathname} | ${d}`);let f=(0,v.Tr)(a);f?U.debug("AUTH",`API Key: ${U.maskKey(f)}`):U.debug("AUTH","No API key provided (local mode)");let g=await (0,w.mt)(),h=await (0,X.G)(g,f,{isValidApiKey:v.kI,log:U,errorResponse:S.yj,HTTP_STATUS:T.gx,request:a,hasValidCliToken:Y.gN});if(h)return h;if(!d||"string"!=typeof d)return U.warn("SEARCH","Missing provider/model"),(0,S.yj)(T.gx.BAD_REQUEST,"Missing required field: provider (or model)");if(!e||"string"!=typeof e||!e.trim())return U.warn("SEARCH","Missing query"),(0,S.yj)(T.gx.BAD_REQUEST,"Missing required field: query");let i=0;try{i=(0,$.NL)(g)}catch{}let j=null;if(i>0)try{j={cacheKey:(0,$.c4)(b,d),kind:"search",url:e.trim(),ttlMs:i}}catch{}if(j)try{let a=await (0,Z.l0)(j.cacheKey);if(a)return U.info("SEARCH",`cache hit ${j.url}`),(0,$.XM)(a)}catch{}let k=async a=>j?(0,$.IJ)(a,j,U):a,l=await (0,w.Uv)(),m=(0,W.Vu)(d,l);if(m){let c=g.comboStrategies||{},e=c[d]?.fallbackStrategy||g.comboStrategy||"fallback",h=g.comboStickyRoundRobinLimit;return U.info("SEARCH",`Combo "${d}" with ${m.length} providers (strategy: ${e}, sticky: ${h})`),k(await (0,W.Pr)({body:b,models:m,handleSingleModel:(b,c,d)=>aa(b,c,a,f,g,d),log:U,comboName:d,comboStrategy:e,comboStickyLimit:h,abortSignal:a?.signal||null}))}return k(await aa(b,d,a,f,g,{signal:a?.signal||null}))}async function aa(a,b,c,d,e,f=null){let g=a.query,h=(0,x.rs)(b),i=x.AI_PROVIDERS[h];if(!i)return U.warn("SEARCH","Unknown provider",{provider:b}),(0,S.yj)(T.gx.BAD_REQUEST,`Unknown provider: ${b}`);let j=i.searchConfig;if(!(j||i.searchViaChat))return U.warn("SEARCH","Provider does not support web search",{provider:h}),(0,S.yj)(T.gx.BAD_REQUEST,`Provider ${h} does not support web search`);b!==h?U.info("ROUTING",`${b} → ${h}`):U.info("ROUTING",`Provider: ${h}`);let k={query:g.trim(),provider:h,max_results:a.max_results,search_type:a.search_type,country:a.country,language:a.language,time_range:a.time_range,offset:a.offset,domain_filter:a.domain_filter,content_options:a.content_options,provider_options:a.provider_options};if(i.noAuth){U.info("AUTH",`\x1b[32m${h} no-auth mode\x1b[0m`);let a=await R({body:k,provider:i,providerConfig:j,credentials:null,log:U,abortSignal:f?.signal||c?.signal||null});return a.success,a.response}let l=new Set,m=null,n=null;for(;;){let a=await (0,v.c1)(h,l);if(!a||a.allRateLimited){if(a?.allRateLimited){let b=m||a.lastError||"Unavailable",c=n||Number(a.lastErrorCode)||T.gx.SERVICE_UNAVAILABLE;return U.warn("SEARCH",`[${h}] ${b} (${a.retryAfterHuman})`),(0,S.wO)(c,`[${h}] ${b}`,a.retryAfter,a.retryAfterHuman)}if(0===l.size)return U.error("AUTH",`No credentials for provider: ${h}`),(0,S.yj)(T.gx.BAD_REQUEST,`No credentials for provider: ${h}`);return U.warn("SEARCH","No more accounts available",{provider:h}),(0,S.yj)(n||T.gx.SERVICE_UNAVAILABLE,m||"All accounts unavailable")}U.info("AUTH",`\x1b[32mUsing ${h} account: ${a.connectionName}\x1b[0m`);let b=await (0,V.eU)(h,a),d=await R({body:k,provider:i,providerConfig:j,credentials:b,log:U,abortSignal:f?.signal||c?.signal||null,onCredentialsRefreshed:async b=>{await (0,V.vN)(a.connectionId,{accessToken:b.accessToken,refreshToken:b.refreshToken,providerSpecificData:b.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{await (0,v.Pt)(a.connectionId,a)}});if(d.success)return d.response;let{shouldFallback:e}=await (0,v.vk)(a.connectionId,d.status,d.error,h);if(e){U.warn("AUTH",`Account ${a.connectionName} unavailable (${d.status}), trying fallback`),l.add(a.connectionId),m=d.error,n=d.status;continue}return d.response}}async function ab(){return new Response(null,{headers:{"Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"*"}})}async function ac(a){return await _(a)}let ad=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/v1/search/route",pathname:"/api/v1/search",filename:"route",bundlePath:"app/api/v1/search/route"},distDir:".next-cli-build",relativeProjectDir:"",resolvedPagePath:"/home/runner/work/switchboard-router/switchboard-router/src/app/api/v1/search/route.js",nextConfigOutput:"standalone",userland:d,...{}}),{workAsyncStorage:ae,workUnitAsyncStorage:af,serverHooks:ag}=ad;function ah(){return(0,g.patchFetch)({workAsyncStorage:ae,workUnitAsyncStorage:af})}async function ai(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),ad.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/v1/search/route";"/index"===d&&(d="/");let e=await ad.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,deploymentId:v,params:w,nextConfig:x,parsedUrl:y,isDraftMode:z,prerenderManifest:A,routerServerContext:B,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(A.dynamicRoutes[H]||A.routes[E]),J=async()=>((null==B?void 0:B.render404)?await B.render404(a,b,y,!1):b.end("This page could not be found"),null);if(I&&!z){let a=!!A.routes[E],b=A.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(x.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||ad.isDev||z||(K="/index"===(K=E)?"/":K);let L=!0===ad.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==B?void 0:B.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await ad.getIncrementalCache(a,x,A,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:w,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts},cacheComponents:!!x.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:x.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>ad.onRequestError(a,b,d,e,B)},sharedContext:{buildId:g,deploymentId:v}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>ad.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await ad.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),b}},k=await ad.handleResponse({req:a,nextConfig:x,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",C?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),z&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await ad.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{a.exports=require("better-sqlite3")},87997:a=>{a.exports=require("node:timers")},91645:a=>{a.exports=require("net")},94735:a=>{a.exports=require("events")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,1813,7774,9613,7141,5350,869,3986,4776,4646,8129,3904,6406,9261,3072,7828,7155],()=>b(b.s=83727));module.exports=c})();
@@ -1 +1 @@
1
- "use strict";(()=>{var a={};a.id=3883,a.ids=[3883],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},643:a=>{a.exports=require("node:perf_hooks")},1708:a=>{a.exports=require("node:process")},1932:a=>{a.exports=require("url")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4573:a=>{a.exports=require("node:buffer")},7066:a=>{a.exports=require("node:tty")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},14985:a=>{a.exports=require("dns")},16698:a=>{a.exports=require("node:async_hooks")},21820:a=>{a.exports=require("os")},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31421:a=>{a.exports=require("node:child_process")},32467:a=>{a.exports=require("node:http2")},33873:a=>{a.exports=require("path")},34589:a=>{a.exports=require("node:assert")},37067:a=>{a.exports=require("node:http")},37540:a=>{a.exports=require("node:console")},38522:a=>{a.exports=require("node:zlib")},39753:(a,b,c)=>{c.d(b,{IJ:()=>k,Ku:()=>h,NL:()=>g,XM:()=>j,c4:()=>i});var d=c(77598),e=c(44196);function f(a,b){return(0,d.createHash)("sha256").update(`${a}:${JSON.stringify(function a(b){return Array.isArray(b)?b.map(a):b&&"object"==typeof b?Object.fromEntries(Object.keys(b).sort().map(c=>[c,a(b[c])])):b}(b))}`).digest("hex")}function g(a){let b=Number(a?.tokenSaver?.fetchCacheTtlHours??24);return!Number.isFinite(b)||b<=0?0:3600*b*1e3}function h(a,b){return f("fetch",{provider:b,url:function(a){let b=String(a||"").trim(),c=b.indexOf("://");if(c<0)return b;let d=c+3,e=b.slice(d).search(/[/?#]/),f=e<0?b.length:d+e,g=b.slice(d,f),h=g.lastIndexOf("@");return`${b.slice(0,d)}${g.slice(0,h+1)}${g.slice(h+1).toLowerCase()}${b.slice(f)}`}(a.url),format:a.format??null,maxCharacters:a.max_characters??null})}function i(a,b){return f("search",{provider:b,query:String(a.query||"").trim(),maxResults:a.max_results??null,searchType:a.search_type??null,country:a.country??null,language:a.language??null,timeRange:a.time_range??null,offset:a.offset??null,domainFilter:a.domain_filter??null,contentOptions:a.content_options??null,providerOptions:a.provider_options??null})}function j(a){return new Response(a.content,{headers:{"Content-Type":a.contentType||"application/json","X-Switchboard-Cache":"hit"}})}async function k(a,b,c){try{let d=a?.headers?.get("content-type")||"application/json",f=d.toLowerCase();if(!a?.ok||f.includes("text/event-stream")||f.includes("ndjson"))return a;let g=await a.clone().text();await (0,e.OS)({...b,content:g,contentType:d}),c.info(b.kind.toUpperCase(),`cache stored ${b.url}`)}catch{}return a}},40610:a=>{a.exports=require("node:dns")},41692:a=>{a.exports=require("node:tls")},41792:a=>{a.exports=require("node:querystring")},43157:(a,b,c)=>{c.d(b,{O:()=>d});function d(...a){let b=a.filter(a=>a&&"object"==typeof a);if(0===b.length)return;if(1===b.length)return b[0];if("function"==typeof AbortSignal.any)return AbortSignal.any(b);let c=new AbortController,e=a=>{try{c.abort(a?.target?.reason)}catch{}};for(let a of b){if(a.aborted){e({target:a});break}a.addEventListener("abort",e,{once:!0})}return c.signal}},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46293:a=>{a.exports=require("sql.js")},48161:a=>{a.exports=require("node:os")},51455:a=>{a.exports=require("node:fs/promises")},53053:a=>{a.exports=require("node:diagnostics_channel")},55511:a=>{a.exports=require("crypto")},55591:a=>{a.exports=require("https")},57075:a=>{a.exports=require("node:stream")},57975:a=>{a.exports=require("node:util")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},71553:a=>{a.exports=require("node:dns/promises")},73024:a=>{a.exports=require("node:fs")},73136:a=>{a.exports=require("node:url")},73429:a=>{a.exports=require("node:util/types")},73496:a=>{a.exports=require("http2")},74075:a=>{a.exports=require("zlib")},75919:a=>{a.exports=require("node:worker_threads")},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},78474:a=>{a.exports=require("node:events")},78888:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>_,patchFetch:()=>$,routeModule:()=>W,serverHooks:()=>Z,workAsyncStorage:()=>X,workUnitAsyncStorage:()=>Y});var d={};c.r(d),c.d(d,{OPTIONS:()=>U,POST:()=>V});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527);c(40863);var v=c(80238),w=c(44776),x=c(40615),y=c(43157);async function z(a,b,c,d=null){let e=new AbortController,f=setTimeout(()=>e.abort(),c);try{let c=await fetch(a,{...b,headers:function(a){if(!a)return a;let b={};for(let[c,d]of Object.entries(a))b[c]="string"==typeof d?d.replace(/[^\x00-\xFF]/g,"").trim():d;return b}(b.headers),signal:(0,y.O)(e.signal,d)});return{ok:!0,res:c}}catch(a){return{ok:!1,timeout:a?.name==="AbortError",error:a?.message||String(a)}}finally{clearTimeout(f)}}function A(a,b){return a&&"string"==typeof a?!b||b<=0?a:a.length>b?a.slice(0,b):a:a||""}function B({provider:a,url:b,title:c,format:d,text:e,costUsd:f,responseMs:g,upstreamMs:h}){return{provider:a,url:b,title:c||null,content:{format:d,text:e||"",length:(e||"").length},metadata:{author:null,published_at:null,language:null},usage:{fetch_cost_usd:f??null},metrics:{response_time_ms:g,upstream_latency_ms:h}}}async function C(a){if((a.headers.get("content-type")||"").includes("application/json"))try{return{json:await a.json()}}catch{return{text:""}}return{text:await a.text()}}async function D({url:a,format:b,maxCharacters:c,provider:d,providerConfig:e,credentials:f,log:g,abortSignal:h=null}){if(!a||"string"!=typeof a)return{success:!1,status:400,error:"url is required"};if(!d)return{success:!1,status:400,error:"provider is required"};let i=b||"markdown",j=e?.timeoutMs||15e3,k=f?.apiKey||f?.key||f?.token||"",l=e?.costPerQuery??null,m=Date.now();try{if("firecrawl"===d)return await E({url:a,fmt:i,timeoutMs:j,apiKey:k,maxCharacters:c,costPerQuery:l,startedAt:m,abortSignal:h});if("jina-reader"===d)return await F({url:a,fmt:i,timeoutMs:j,apiKey:k,maxCharacters:c,costPerQuery:l,startedAt:m,abortSignal:h});if("tavily"===d)return await G({url:a,fmt:i,timeoutMs:j,apiKey:k,maxCharacters:c,costPerQuery:l,startedAt:m,abortSignal:h});if("exa"===d)return await H({url:a,fmt:i,timeoutMs:j,apiKey:k,maxCharacters:c,costPerQuery:l,startedAt:m,abortSignal:h});return{success:!1,status:400,error:`Unsupported provider: ${d}`}}catch(a){return"function"==typeof g?g("fetch handler error:",a?.message||a):g?.error?.("FETCH","fetch handler error",a?.message||a),{success:!1,status:502,error:a?.message||"Internal fetch error"}}}async function E({url:a,fmt:b,timeoutMs:c,apiKey:d,maxCharacters:e,costPerQuery:f,startedAt:g,abortSignal:h}){let i=Date.now(),j=await z("https://api.firecrawl.dev/v1/scrape",{method:"POST",headers:{"content-type":"application/json",...d?{authorization:`Bearer ${d}`}:{}},body:JSON.stringify({url:a,formats:[b]})},c,h);if(!j.ok)return{success:!1,status:j.timeout?504:502,error:j.error};let k=Date.now()-i,{json:l}=await C(j.res);if(!j.res.ok)return{success:!1,status:j.res.status,error:l?.error||`Firecrawl error: ${j.res.status}`};let m=l?.data||{},n=A(m.markdown||m.html||m.text||"",e);return{success:!0,data:B({provider:"firecrawl",url:a,title:m.metadata?.title||null,format:b,text:n,costUsd:f,responseMs:Date.now()-g,upstreamMs:k})}}async function F({url:a,fmt:b,timeoutMs:c,apiKey:d,maxCharacters:e,costPerQuery:f,startedAt:g,abortSignal:h}){let i,j=`https://r.jina.ai/${encodeURIComponent(a)}`,k=Date.now(),l=await z(j,{method:"GET",headers:d?{authorization:`Bearer ${d}`}:{}},c,h);if(!l.ok)return{success:!1,status:l.timeout?504:502,error:l.error};let m=Date.now()-k,n=await l.res.text();if(!l.res.ok)return{success:!1,status:l.res.status,error:n?.slice(0,500)||`Jina error: ${l.res.status}`};let o=A(n,e);return{success:!0,data:B({provider:"jina-reader",url:a,title:(i=String(n||"").match(/^\s*#\s+(.+)$/m))?i[1].trim():null,format:b,text:o,costUsd:f,responseMs:Date.now()-g,upstreamMs:m})}}async function G({url:a,fmt:b,timeoutMs:c,apiKey:d,maxCharacters:e,costPerQuery:f,startedAt:g,abortSignal:h}){let i=Date.now(),j=await z("https://api.tavily.com/extract",{method:"POST",headers:{"content-type":"application/json",...d?{authorization:`Bearer ${d}`}:{}},body:JSON.stringify({urls:[a],extract_depth:"basic"})},c,h);if(!j.ok)return{success:!1,status:j.timeout?504:502,error:j.error};let k=Date.now()-i,{json:l}=await C(j.res);return j.res.ok?{success:!0,data:B({provider:"tavily",url:a,title:null,format:b,text:A((l?.results?.[0]||{}).raw_content||"",e),costUsd:f,responseMs:Date.now()-g,upstreamMs:k})}:{success:!1,status:j.res.status,error:l?.error||`Tavily error: ${j.res.status}`}}async function H({url:a,fmt:b,timeoutMs:c,apiKey:d,maxCharacters:e,costPerQuery:f,startedAt:g,abortSignal:h}){let i=Date.now(),j=await z("https://api.exa.ai/contents",{method:"POST",headers:{"content-type":"application/json",...d?{"x-api-key":d}:{}},body:JSON.stringify({ids:[a],text:!0})},c,h);if(!j.ok)return{success:!1,status:j.timeout?504:502,error:j.error};let k=Date.now()-i,{json:l}=await C(j.res);if(!j.res.ok)return{success:!1,status:j.res.status,error:l?.error||`Exa error: ${j.res.status}`};let m=l?.results?.[0]||{},n=A(m.text||"",e);return{success:!0,data:B({provider:"exa",url:a,title:m.title||null,format:b,text:n,costUsd:f,responseMs:Date.now()-g,upstreamMs:k})}}var I=c(89865),J=c(60290),K=c(7803),L=c(67828),M=c(3072),N=c(88556),O=c(97004),P=c(41460),Q=c(44196),R=c(39753);async function S(a){let b;try{b=await a.json()}catch{return K.warn("FETCH","Invalid JSON body"),(0,I.yj)(J.gx.BAD_REQUEST,"Invalid JSON body")}if(!b||"object"!=typeof b||Array.isArray(b))return K.warn("FETCH","Invalid JSON body shape"),(0,I.yj)(J.gx.BAD_REQUEST,"Invalid JSON body");let c=new URL(a.url),d=b.provider||b.model,e=b.url;b.format,b.max_characters,K.request("POST",`${c.pathname} | ${d}`);let f=(0,v.Tr)(a);f?K.debug("AUTH",`API Key: ${K.maskKey(f)}`):K.debug("AUTH","No API key provided (local mode)");let g=await (0,w.mt)(),h=await (0,O.G)(g,f,{isValidApiKey:v.kI,log:K,errorResponse:I.yj,HTTP_STATUS:J.gx,request:a,hasValidCliToken:P.gN});if(h)return h;if(!d||"string"!=typeof d)return K.warn("FETCH","Missing provider/model"),(0,I.yj)(J.gx.BAD_REQUEST,"Missing required field: provider (or model)");if(!e||"string"!=typeof e)return K.warn("FETCH","Missing url"),(0,I.yj)(J.gx.BAD_REQUEST,"Missing required field: url");try{new URL(e)}catch{return K.warn("FETCH","Invalid URL",{url:e}),(0,I.yj)(J.gx.BAD_REQUEST,"Invalid URL format")}try{(0,N.P)(e)}catch(a){return K.warn("FETCH","Blocked URL",{url:e}),(0,I.yj)(J.gx.BAD_REQUEST,a.message)}let i=0;try{i=(0,R.NL)(g)}catch{}let j=null;if(i>0)try{j={cacheKey:(0,R.Ku)(b,d),kind:"fetch",url:e.trim(),ttlMs:i}}catch{}if(j)try{let a=await (0,Q.l0)(j.cacheKey);if(a)return K.info("FETCH",`cache hit ${j.url}`),(0,R.XM)(a)}catch{}let k=async a=>j?(0,R.IJ)(a,j,K):a,l=await (0,w.Uv)(),m=(0,M.Vu)(d,l);if(m){let c=g.comboStrategies||{},e=c[d]?.fallbackStrategy||g.comboStrategy||"fallback",h=g.comboStickyRoundRobinLimit;return K.info("FETCH",`Combo "${d}" with ${m.length} providers (strategy: ${e}, sticky: ${h})`),k(await (0,M.Pr)({body:b,models:m,handleSingleModel:(b,c,d)=>T(b,c,a,f,g,d),log:K,comboName:d,comboStrategy:e,comboStickyLimit:h,abortSignal:a?.signal||null}))}return k(await T(b,d,a,f,g,{signal:a?.signal||null}))}async function T(a,b,c,d,e,f=null){let g=a.url,h=a.format,i=a.max_characters,j=(0,x.rs)(b),k=x.AI_PROVIDERS[j];if(!k)return K.warn("FETCH","Unknown provider",{provider:b}),(0,I.yj)(J.gx.BAD_REQUEST,`Unknown provider: ${b}`);let l=k.fetchConfig;if(!l)return K.warn("FETCH","Provider does not support web fetch",{provider:j}),(0,I.yj)(J.gx.BAD_REQUEST,`Provider ${j} does not support web fetch`);if(b!==j?K.info("ROUTING",`${b} → ${j}`):K.info("ROUTING",`Provider: ${j}`),k.noAuth){K.info("AUTH",`\x1b[32m${j} no-auth mode\x1b[0m`);let a=await D({url:g,format:h,maxCharacters:i,provider:k.id,providerConfig:l,credentials:null,log:K,abortSignal:f?.signal||c?.signal||null});return a.success?new Response(JSON.stringify(a.data),{headers:{"Content-Type":"application/json"}}):(0,I.yj)(a.status||J.gx.BAD_GATEWAY,a.error||"Fetch failed")}let m=new Set,n=null,o=null;for(;;){let a=await (0,v.c1)(j,m);if(!a||a.allRateLimited){if(a?.allRateLimited){let b=n||a.lastError||"Unavailable",c=o||Number(a.lastErrorCode)||J.gx.SERVICE_UNAVAILABLE;return K.warn("FETCH",`[${j}] ${b} (${a.retryAfterHuman})`),(0,I.wO)(c,`[${j}] ${b}`,a.retryAfter,a.retryAfterHuman)}if(0===m.size)return K.error("AUTH",`No credentials for provider: ${j}`),(0,I.yj)(J.gx.BAD_REQUEST,`No credentials for provider: ${j}`);return K.warn("FETCH","No more accounts available",{provider:j}),(0,I.yj)(o||J.gx.SERVICE_UNAVAILABLE,n||"All accounts unavailable")}K.info("AUTH",`\x1b[32mUsing ${j} account: ${a.connectionName}\x1b[0m`);let b=await (0,L.eU)(j,a),d=await D({url:g,format:h,maxCharacters:i,provider:k.id,providerConfig:l,credentials:b,log:K,abortSignal:f?.signal||c?.signal||null,onCredentialsRefreshed:async b=>{await (0,L.vN)(a.connectionId,{accessToken:b.accessToken,refreshToken:b.refreshToken,providerSpecificData:b.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{await (0,v.Pt)(a.connectionId,a)}});if(d.success)return new Response(JSON.stringify(d.data),{headers:{"Content-Type":"application/json"}});let{shouldFallback:e}=await (0,v.vk)(a.connectionId,d.status,d.error,j);if(e){K.warn("AUTH",`Account ${a.connectionName} unavailable (${d.status}), trying fallback`),m.add(a.connectionId),n=d.error,o=d.status;continue}return(0,I.yj)(d.status||J.gx.BAD_GATEWAY,d.error||"Fetch failed")}}async function U(){return new Response(null,{headers:{"Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"*"}})}async function V(a){return await S(a)}let W=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/v1/web/fetch/route",pathname:"/api/v1/web/fetch",filename:"route",bundlePath:"app/api/v1/web/fetch/route"},distDir:".next-cli-build",relativeProjectDir:"",resolvedPagePath:"/home/runner/work/switchboard-router/switchboard-router/src/app/api/v1/web/fetch/route.js",nextConfigOutput:"standalone",userland:d,...{}}),{workAsyncStorage:X,workUnitAsyncStorage:Y,serverHooks:Z}=W;function $(){return(0,g.patchFetch)({workAsyncStorage:X,workUnitAsyncStorage:Y})}async function _(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),W.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/v1/web/fetch/route";"/index"===d&&(d="/");let e=await W.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,deploymentId:v,params:w,nextConfig:x,parsedUrl:y,isDraftMode:z,prerenderManifest:A,routerServerContext:B,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(A.dynamicRoutes[H]||A.routes[E]),J=async()=>((null==B?void 0:B.render404)?await B.render404(a,b,y,!1):b.end("This page could not be found"),null);if(I&&!z){let a=!!A.routes[E],b=A.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(x.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||W.isDev||z||(K="/index"===(K=E)?"/":K);let L=!0===W.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==B?void 0:B.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await W.getIncrementalCache(a,x,A,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:w,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts},cacheComponents:!!x.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:x.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>W.onRequestError(a,b,d,e,B)},sharedContext:{buildId:g,deploymentId:v}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),X=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>W.handle(X,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await W.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),b}},k=await W.handleResponse({req:a,nextConfig:x,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",C?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),z&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await W.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}},79646:a=>{a.exports=require("child_process")},79868:a=>{a.exports=require("node:sqlite")},81630:a=>{a.exports=require("http")},81787:a=>{a.exports=require("bun:sqlite")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{a.exports=require("better-sqlite3")},87997:a=>{a.exports=require("node:timers")},88556:(a,b,c)=>{c.d(b,{P:()=>d.P,h:()=>d.h});var d=c(83204)},91645:a=>{a.exports=require("net")},94735:a=>{a.exports=require("events")}};var b=require("../../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,1813,7774,9613,7141,5350,869,3986,4776,4646,8129,3904,6406,9261,3072,7828,7155],()=>b(b.s=78888));module.exports=c})();
1
+ "use strict";(()=>{var a={};a.id=3883,a.ids=[3883],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},643:a=>{a.exports=require("node:perf_hooks")},1708:a=>{a.exports=require("node:process")},1932:a=>{a.exports=require("url")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4573:a=>{a.exports=require("node:buffer")},7066:a=>{a.exports=require("node:tty")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},14985:a=>{a.exports=require("dns")},16698:a=>{a.exports=require("node:async_hooks")},21820:a=>{a.exports=require("os")},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31421:a=>{a.exports=require("node:child_process")},32467:a=>{a.exports=require("node:http2")},33873:a=>{a.exports=require("path")},34589:a=>{a.exports=require("node:assert")},37067:a=>{a.exports=require("node:http")},37540:a=>{a.exports=require("node:console")},38522:a=>{a.exports=require("node:zlib")},39753:(a,b,c)=>{c.d(b,{IJ:()=>k,Ku:()=>h,NL:()=>g,XM:()=>j,c4:()=>i});var d=c(77598),e=c(44196);function f(a,b){return(0,d.createHash)("sha256").update(`${a}:${JSON.stringify(function a(b){return Array.isArray(b)?b.map(a):b&&"object"==typeof b?Object.fromEntries(Object.keys(b).sort().map(c=>[c,a(b[c])])):b}(b))}`).digest("hex")}function g(a){let b=Number(a?.tokenSaver?.fetchCacheTtlHours??24);return!Number.isFinite(b)||b<=0?0:3600*b*1e3}function h(a,b){return f("fetch",{provider:b,url:function(a){let b=String(a||"").trim(),c=b.indexOf("://");if(c<0)return b;let d=c+3,e=b.slice(d).search(/[/?#]/),f=e<0?b.length:d+e,g=b.slice(d,f),h=g.lastIndexOf("@");return`${b.slice(0,d)}${g.slice(0,h+1)}${g.slice(h+1).toLowerCase()}${b.slice(f)}`}(a.url),format:a.format??null,maxCharacters:a.max_characters??null})}function i(a,b){return f("search",{provider:b,query:String(a.query||"").trim(),maxResults:a.max_results??null,searchType:a.search_type??null,country:a.country??null,language:a.language??null,timeRange:a.time_range??null,offset:a.offset??null,domainFilter:a.domain_filter??null,contentOptions:a.content_options??null,providerOptions:a.provider_options??null})}function j(a){return new Response(a.content,{headers:{"Content-Type":a.contentType||"application/json","X-Switchboard-Cache":"hit"}})}async function k(a,b,c){try{let d=a?.headers?.get("content-type")||"application/json",f=d.toLowerCase();if(!a?.ok||f.includes("text/event-stream")||f.includes("ndjson"))return a;let g=await a.clone().text();await (0,e.OS)({...b,content:g,contentType:d}),c.info(b.kind.toUpperCase(),`cache stored ${b.url}`)}catch{}return a}},40610:a=>{a.exports=require("node:dns")},41692:a=>{a.exports=require("node:tls")},41792:a=>{a.exports=require("node:querystring")},43157:(a,b,c)=>{c.d(b,{O:()=>d});function d(...a){let b=a.filter(a=>a&&"object"==typeof a);if(0===b.length)return;if(1===b.length)return b[0];if("function"==typeof AbortSignal.any)return AbortSignal.any(b);let c=new AbortController,e=a=>{try{c.abort(a?.target?.reason)}catch{}};for(let a of b){if(a.aborted){e({target:a});break}a.addEventListener("abort",e,{once:!0})}return c.signal}},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46293:a=>{a.exports=require("sql.js")},48161:a=>{a.exports=require("node:os")},51455:a=>{a.exports=require("node:fs/promises")},53053:a=>{a.exports=require("node:diagnostics_channel")},55511:a=>{a.exports=require("crypto")},55591:a=>{a.exports=require("https")},57075:a=>{a.exports=require("node:stream")},57975:a=>{a.exports=require("node:util")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},71553:a=>{a.exports=require("node:dns/promises")},73024:a=>{a.exports=require("node:fs")},73136:a=>{a.exports=require("node:url")},73429:a=>{a.exports=require("node:util/types")},73496:a=>{a.exports=require("http2")},74075:a=>{a.exports=require("zlib")},75919:a=>{a.exports=require("node:worker_threads")},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},78474:a=>{a.exports=require("node:events")},78888:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>_,patchFetch:()=>$,routeModule:()=>W,serverHooks:()=>Z,workAsyncStorage:()=>X,workUnitAsyncStorage:()=>Y});var d={};c.r(d),c.d(d,{OPTIONS:()=>U,POST:()=>V});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527);c(40863);var v=c(80238),w=c(44776),x=c(40615),y=c(43157);async function z(a,b,c,d=null){let e=new AbortController,f=setTimeout(()=>e.abort(),c);try{let c=await fetch(a,{...b,headers:function(a){if(!a)return a;let b={};for(let[c,d]of Object.entries(a))b[c]="string"==typeof d?d.replace(/[^\x00-\xFF]/g,"").trim():d;return b}(b.headers),signal:(0,y.O)(e.signal,d)});return{ok:!0,res:c}}catch(a){return{ok:!1,timeout:a?.name==="AbortError",error:a?.message||String(a)}}finally{clearTimeout(f)}}function A(a,b){return a&&"string"==typeof a?!b||b<=0?a:a.length>b?a.slice(0,b):a:a||""}function B({provider:a,url:b,title:c,format:d,text:e,costUsd:f,responseMs:g,upstreamMs:h}){return{provider:a,url:b,title:c||null,content:{format:d,text:e||"",length:(e||"").length},metadata:{author:null,published_at:null,language:null},usage:{fetch_cost_usd:f??null},metrics:{response_time_ms:g,upstream_latency_ms:h}}}async function C(a){if((a.headers.get("content-type")||"").includes("application/json"))try{return{json:await a.json()}}catch{return{text:""}}return{text:await a.text()}}async function D({url:a,format:b,maxCharacters:c,provider:d,providerConfig:e,credentials:f,log:g,abortSignal:h=null}){if(!a||"string"!=typeof a)return{success:!1,status:400,error:"url is required"};if(!d)return{success:!1,status:400,error:"provider is required"};let i=b||"markdown",j=e?.timeoutMs||15e3,k=f?.apiKey||f?.key||f?.token||"",l=e?.costPerQuery??null,m=Date.now();try{if("firecrawl"===d)return await E({url:a,fmt:i,timeoutMs:j,apiKey:k,maxCharacters:c,costPerQuery:l,startedAt:m,abortSignal:h});if("jina-reader"===d)return await F({url:a,fmt:i,timeoutMs:j,apiKey:k,maxCharacters:c,costPerQuery:l,startedAt:m,abortSignal:h});if("tavily"===d)return await G({url:a,fmt:i,timeoutMs:j,apiKey:k,maxCharacters:c,costPerQuery:l,startedAt:m,abortSignal:h});if("exa"===d)return await H({url:a,fmt:i,timeoutMs:j,apiKey:k,maxCharacters:c,costPerQuery:l,startedAt:m,abortSignal:h});return{success:!1,status:400,error:`Unsupported provider: ${d}`}}catch(a){return"function"==typeof g?g("fetch handler error:",a?.message||a):g?.error?.("FETCH","fetch handler error",a?.message||a),{success:!1,status:502,error:a?.message||"Internal fetch error"}}}async function E({url:a,fmt:b,timeoutMs:c,apiKey:d,maxCharacters:e,costPerQuery:f,startedAt:g,abortSignal:h}){let i=Date.now(),j=await z("https://api.firecrawl.dev/v1/scrape",{method:"POST",headers:{"content-type":"application/json",...d?{authorization:`Bearer ${d}`}:{}},body:JSON.stringify({url:a,formats:[b]})},c,h);if(!j.ok)return{success:!1,status:j.timeout?504:502,error:j.error};let k=Date.now()-i,{json:l}=await C(j.res);if(!j.res.ok)return{success:!1,status:j.res.status,error:l?.error||`Firecrawl error: ${j.res.status}`};let m=l?.data||{},n=A(m.markdown||m.html||m.text||"",e);return{success:!0,data:B({provider:"firecrawl",url:a,title:m.metadata?.title||null,format:b,text:n,costUsd:f,responseMs:Date.now()-g,upstreamMs:k})}}async function F({url:a,fmt:b,timeoutMs:c,apiKey:d,maxCharacters:e,costPerQuery:f,startedAt:g,abortSignal:h}){let i,j=`https://r.jina.ai/${encodeURIComponent(a)}`,k=Date.now(),l=await z(j,{method:"GET",headers:d?{authorization:`Bearer ${d}`}:{}},c,h);if(!l.ok)return{success:!1,status:l.timeout?504:502,error:l.error};let m=Date.now()-k,n=await l.res.text();if(!l.res.ok)return{success:!1,status:l.res.status,error:n?.slice(0,500)||`Jina error: ${l.res.status}`};let o=A(n,e);return{success:!0,data:B({provider:"jina-reader",url:a,title:(i=String(n||"").match(/^\s*#\s+(.+)$/m))?i[1].trim():null,format:b,text:o,costUsd:f,responseMs:Date.now()-g,upstreamMs:m})}}async function G({url:a,fmt:b,timeoutMs:c,apiKey:d,maxCharacters:e,costPerQuery:f,startedAt:g,abortSignal:h}){let i=Date.now(),j=await z("https://api.tavily.com/extract",{method:"POST",headers:{"content-type":"application/json",...d?{authorization:`Bearer ${d}`}:{}},body:JSON.stringify({urls:[a],extract_depth:"basic"})},c,h);if(!j.ok)return{success:!1,status:j.timeout?504:502,error:j.error};let k=Date.now()-i,{json:l}=await C(j.res);return j.res.ok?{success:!0,data:B({provider:"tavily",url:a,title:null,format:b,text:A((l?.results?.[0]||{}).raw_content||"",e),costUsd:f,responseMs:Date.now()-g,upstreamMs:k})}:{success:!1,status:j.res.status,error:l?.error||`Tavily error: ${j.res.status}`}}async function H({url:a,fmt:b,timeoutMs:c,apiKey:d,maxCharacters:e,costPerQuery:f,startedAt:g,abortSignal:h}){let i=Date.now(),j=await z("https://api.exa.ai/contents",{method:"POST",headers:{"content-type":"application/json",...d?{"x-api-key":d}:{}},body:JSON.stringify({ids:[a],text:!0})},c,h);if(!j.ok)return{success:!1,status:j.timeout?504:502,error:j.error};let k=Date.now()-i,{json:l}=await C(j.res);if(!j.res.ok)return{success:!1,status:j.res.status,error:l?.error||`Exa error: ${j.res.status}`};let m=l?.results?.[0]||{},n=A(m.text||"",e);return{success:!0,data:B({provider:"exa",url:a,title:m.title||null,format:b,text:n,costUsd:f,responseMs:Date.now()-g,upstreamMs:k})}}var I=c(89865),J=c(60290),K=c(7803),L=c(67828),M=c(3072),N=c(88556),O=c(97004),P=c(41460),Q=c(44196),R=c(39753);async function S(a){let b;try{b=await a.json()}catch{return K.warn("FETCH","Invalid JSON body"),(0,I.yj)(J.gx.BAD_REQUEST,"Invalid JSON body")}if(!b||"object"!=typeof b||Array.isArray(b))return K.warn("FETCH","Invalid JSON body shape"),(0,I.yj)(J.gx.BAD_REQUEST,"Invalid JSON body");let c=new URL(a.url),d=b.provider||b.model,e=b.url;b.format,b.max_characters,K.request("POST",`${c.pathname} | ${d}`);let f=(0,v.Tr)(a);f?K.debug("AUTH",`API Key: ${K.maskKey(f)}`):K.debug("AUTH","No API key provided (local mode)");let g=await (0,w.mt)(),h=await (0,O.G)(g,f,{isValidApiKey:v.kI,log:K,errorResponse:I.yj,HTTP_STATUS:J.gx,request:a,hasValidCliToken:P.gN});if(h)return h;if(!d||"string"!=typeof d)return K.warn("FETCH","Missing provider/model"),(0,I.yj)(J.gx.BAD_REQUEST,"Missing required field: provider (or model)");if(!e||"string"!=typeof e)return K.warn("FETCH","Missing url"),(0,I.yj)(J.gx.BAD_REQUEST,"Missing required field: url");try{new URL(e)}catch{return K.warn("FETCH","Invalid URL",{url:e}),(0,I.yj)(J.gx.BAD_REQUEST,"Invalid URL format")}try{(0,N.P)(e)}catch(a){return K.warn("FETCH","Blocked URL",{url:e}),(0,I.yj)(J.gx.BAD_REQUEST,a.message)}let i=0;try{i=(0,R.NL)(g)}catch{}let j=null;if(i>0)try{j={cacheKey:(0,R.Ku)(b,d),kind:"fetch",url:e.trim(),ttlMs:i}}catch{}if(j)try{let a=await (0,Q.l0)(j.cacheKey);if(a)return K.info("FETCH",`cache hit ${j.url}`),(0,R.XM)(a)}catch{}let k=async a=>j?(0,R.IJ)(a,j,K):a,l=await (0,w.Uv)(),m=(0,M.Vu)(d,l);if(m){let c=g.comboStrategies||{},e=c[d]?.fallbackStrategy||g.comboStrategy||"fallback",h=g.comboStickyRoundRobinLimit;return K.info("FETCH",`Combo "${d}" with ${m.length} providers (strategy: ${e}, sticky: ${h})`),k(await (0,M.Pr)({body:b,models:m,handleSingleModel:(b,c,d)=>T(b,c,a,f,g,d),log:K,comboName:d,comboStrategy:e,comboStickyLimit:h,abortSignal:a?.signal||null}))}return k(await T(b,d,a,f,g,{signal:a?.signal||null}))}async function T(a,b,c,d,e,f=null){let g=a.url,h=a.format,i=a.max_characters,j=(0,x.rs)(b),k=x.AI_PROVIDERS[j];if(!k)return K.warn("FETCH","Unknown provider",{provider:b}),(0,I.yj)(J.gx.BAD_REQUEST,`Unknown provider: ${b}`);let l=k.fetchConfig;if(!l)return K.warn("FETCH","Provider does not support web fetch",{provider:j}),(0,I.yj)(J.gx.BAD_REQUEST,`Provider ${j} does not support web fetch`);if(b!==j?K.info("ROUTING",`${b} → ${j}`):K.info("ROUTING",`Provider: ${j}`),k.noAuth){K.info("AUTH",`\x1b[32m${j} no-auth mode\x1b[0m`);let a=await D({url:g,format:h,maxCharacters:i,provider:k.id,providerConfig:l,credentials:null,log:K,abortSignal:f?.signal||c?.signal||null});return a.success?new Response(JSON.stringify(a.data),{headers:{"Content-Type":"application/json"}}):(0,I.yj)(a.status||J.gx.BAD_GATEWAY,a.error||"Fetch failed")}let m=new Set,n=null,o=null;for(;;){let a=await (0,v.c1)(j,m);if(!a||a.allRateLimited){if(a?.allRateLimited){let b=n||a.lastError||"Unavailable",c=o||Number(a.lastErrorCode)||J.gx.SERVICE_UNAVAILABLE;return K.warn("FETCH",`[${j}] ${b} (${a.retryAfterHuman})`),(0,I.wO)(c,`[${j}] ${b}`,a.retryAfter,a.retryAfterHuman)}if(0===m.size)return K.error("AUTH",`No credentials for provider: ${j}`),(0,I.yj)(J.gx.BAD_REQUEST,`No credentials for provider: ${j}`);return K.warn("FETCH","No more accounts available",{provider:j}),(0,I.yj)(o||J.gx.SERVICE_UNAVAILABLE,n||"All accounts unavailable")}K.info("AUTH",`\x1b[32mUsing ${j} account: ${a.connectionName}\x1b[0m`);let b=await (0,L.eU)(j,a),d=await D({url:g,format:h,maxCharacters:i,provider:k.id,providerConfig:l,credentials:b,log:K,abortSignal:f?.signal||c?.signal||null,onCredentialsRefreshed:async b=>{await (0,L.vN)(a.connectionId,{accessToken:b.accessToken,refreshToken:b.refreshToken,providerSpecificData:b.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{await (0,v.Pt)(a.connectionId,a)}});if(d.success)return new Response(JSON.stringify(d.data),{headers:{"Content-Type":"application/json"}});let{shouldFallback:e}=await (0,v.vk)(a.connectionId,d.status,d.error,j);if(e){K.warn("AUTH",`Account ${a.connectionName} unavailable (${d.status}), trying fallback`),m.add(a.connectionId),n=d.error,o=d.status;continue}return(0,I.yj)(d.status||J.gx.BAD_GATEWAY,d.error||"Fetch failed")}}async function U(){return new Response(null,{headers:{"Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"*"}})}async function V(a){return await S(a)}let W=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/v1/web/fetch/route",pathname:"/api/v1/web/fetch",filename:"route",bundlePath:"app/api/v1/web/fetch/route"},distDir:".next-cli-build",relativeProjectDir:"",resolvedPagePath:"/home/runner/work/switchboard-router/switchboard-router/src/app/api/v1/web/fetch/route.js",nextConfigOutput:"standalone",userland:d,...{}}),{workAsyncStorage:X,workUnitAsyncStorage:Y,serverHooks:Z}=W;function $(){return(0,g.patchFetch)({workAsyncStorage:X,workUnitAsyncStorage:Y})}async function _(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),W.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/v1/web/fetch/route";"/index"===d&&(d="/");let e=await W.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,deploymentId:v,params:w,nextConfig:x,parsedUrl:y,isDraftMode:z,prerenderManifest:A,routerServerContext:B,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(A.dynamicRoutes[H]||A.routes[E]),J=async()=>((null==B?void 0:B.render404)?await B.render404(a,b,y,!1):b.end("This page could not be found"),null);if(I&&!z){let a=!!A.routes[E],b=A.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(x.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||W.isDev||z||(K="/index"===(K=E)?"/":K);let L=!0===W.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==B?void 0:B.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await W.getIncrementalCache(a,x,A,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:w,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts},cacheComponents:!!x.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:x.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>W.onRequestError(a,b,d,e,B)},sharedContext:{buildId:g,deploymentId:v}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),X=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>W.handle(X,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await W.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),b}},k=await W.handleResponse({req:a,nextConfig:x,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",C?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),z&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await W.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},79868:a=>{a.exports=require("node:sqlite")},81630:a=>{a.exports=require("http")},81787:a=>{a.exports=require("bun:sqlite")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{a.exports=require("better-sqlite3")},87997:a=>{a.exports=require("node:timers")},88556:(a,b,c)=>{c.d(b,{P:()=>d.P,h:()=>d.h});var d=c(83204)},91645:a=>{a.exports=require("net")},94735:a=>{a.exports=require("events")}};var b=require("../../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,1813,7774,9613,7141,5350,869,3986,4776,4646,8129,3904,6406,9261,3072,7828,7155],()=>b(b.s=78888));module.exports=c})();
@@ -1 +1 @@
1
- "use strict";(()=>{var a={};a.id=1566,a.ids=[1566],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},643:a=>{a.exports=require("node:perf_hooks")},1708:a=>{a.exports=require("node:process")},1932:a=>{a.exports=require("url")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4573:a=>{a.exports=require("node:buffer")},7066:a=>{a.exports=require("node:tty")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},14985:a=>{a.exports=require("dns")},16698:a=>{a.exports=require("node:async_hooks")},21820:a=>{a.exports=require("os")},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31421:a=>{a.exports=require("node:child_process")},32467:a=>{a.exports=require("node:http2")},33873:a=>{a.exports=require("path")},34589:a=>{a.exports=require("node:assert")},37067:a=>{a.exports=require("node:http")},37540:a=>{a.exports=require("node:console")},38522:a=>{a.exports=require("node:zlib")},40610:a=>{a.exports=require("node:dns")},41692:a=>{a.exports=require("node:tls")},41792:a=>{a.exports=require("node:querystring")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46293:a=>{a.exports=require("sql.js")},48161:a=>{a.exports=require("node:os")},51455:a=>{a.exports=require("node:fs/promises")},53053:a=>{a.exports=require("node:diagnostics_channel")},55511:a=>{a.exports=require("crypto")},55591:a=>{a.exports=require("https")},57075:a=>{a.exports=require("node:stream")},57975:a=>{a.exports=require("node:util")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},71553:a=>{a.exports=require("node:dns/promises")},73024:a=>{a.exports=require("node:fs")},73136:a=>{a.exports=require("node:url")},73429:a=>{a.exports=require("node:util/types")},73496:a=>{a.exports=require("http2")},74075:a=>{a.exports=require("zlib")},75230:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{OPTIONS:()=>m,POST:()=>n});var e=c(79489),f=c(80238),g=c(44776),h=c(81329),i=c(60290),j=c(48664),k=a([e]);e=(k.then?(await k)():k)[0];let u=!1,v=/^[a-zA-Z0-9_.:-]+$/;async function l(){u||(await (0,j.Ai)(),u=!0)}async function m(){return new Response(null,{headers:{"Access-Control-Allow-Methods":"GET, POST, OPTIONS","Access-Control-Allow-Headers":"*"}})}async function n(a,{params:b}){await l();try{let c,d,{path:f}=await b;if(f.length>=2){let a=f[0],b=f[1];d=b.includes(":streamGenerateContent")?":streamGenerateContent":":generateContent";let e=b.replace(":streamGenerateContent","").replace(":generateContent","");c=a+"/"+e}else{let a=f[0];d=a.includes(":streamGenerateContent")?":streamGenerateContent":":generateContent",c=a.replace(":streamGenerateContent","").replace(":generateContent","")}let g=await a.json();if(function(a,b){let c,d=String(a||"");if(d.includes("/")&&!d.startsWith("gemini/")&&!d.startsWith("models/"))return!1;let e=o(a);return c=b?.generationConfig?.responseModalities,Array.isArray(c)&&c.some(a=>"AUDIO"===String(a).toUpperCase())||new Set([...(h.PROVIDER_MODELS.gemini||[]).filter(a=>"tts"===(a.kind||a.type)).map(a=>a.id),...(h.PROVIDER_MODELS["gemini-tts-models"]||[]).map(a=>a.id)]).has(e)}(c,g))return await s(a,g,c,d);let i=":streamGenerateContent"===d,j=function(a,b,c){let d=[];if(a.systemInstruction){let b=a.systemInstruction.parts?.map(a=>a.text).join("\n")||"";b&&d.push({role:"system",content:b})}if(a.contents)for(let b of a.contents){let a="model"===b.role?"assistant":"user",c=b.parts?.map(a=>a.text).join("\n")||"";d.push({role:a,content:c})}return{model:b,messages:d,stream:c,max_tokens:a.generationConfig?.maxOutputTokens,temperature:a.generationConfig?.temperature,top_p:a.generationConfig?.topP}}(g,c,i),k=new Request(a.url,{method:"POST",headers:a.headers,body:JSON.stringify(j)}),l=await (0,e.P)(k);if(i)return function(a,b){if(!a.ok||!a.body)return a;let c=new TextDecoder,d=new TextEncoder,e="",f=(a,c,f)=>{let g=(e+=a).split("\n");for(let a of(e=c?"":g.pop(),g)){let c;if(!a.startsWith("data:"))continue;let e=a.slice(5).trim();if(!e||"[DONE]"===e)continue;try{c=JSON.parse(e)}catch{continue}let g=c.choices?.[0];if(!g)continue;let h=g.delta||{},i=[];if(h.reasoning_content&&i.push({text:h.reasoning_content,thought:!0}),h.content&&i.push({text:h.content}),0===i.length&&!g.finish_reason)continue;let j={content:{role:"model",parts:i.length>0?i:[{text:""}]},index:0};g.finish_reason&&(j.finishReason=w[g.finish_reason]||"STOP");let k={candidates:[j]};if(g.finish_reason&&c.usage){k.usageMetadata={promptTokenCount:c.usage.prompt_tokens||0,candidatesTokenCount:c.usage.completion_tokens||0,totalTokenCount:c.usage.total_tokens||0};let a=c.usage.completion_tokens_details?.reasoning_tokens;a&&(k.usageMetadata.thoughtsTokenCount=a),k.modelVersion=c.model||b}f.enqueue(d.encode("data: "+JSON.stringify(k)+"\r\n\r\n"))}},g=new TransformStream({transform(a,b){f(c.decode(a,{stream:!0}),!1,b)},flush(a){f(c.decode(),!0,a)}});return new Response(a.body.pipeThrough(g),{status:200,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache"}})}(l,c);return await t(l,c)}catch(a){return console.log("Error handling Gemini request:",a),Response.json({error:{message:a.message,code:500}},{status:500})}}function o(a){return String(a||"").replace(/^models\//,"").replace(/^gemini\//,"")}async function p(a){if(!(await (0,g.mt)()).requireApiKey)return null;let b=function(a){let b=a.headers.get("Authorization");if(b?.startsWith("Bearer "))return b.slice(7);let c=a.headers.get("x-goog-api-key");return c||new URL(a.url).searchParams.get("key")}(a);return b?await (0,f.kI)(b)?null:Response.json({error:{message:"Invalid API key"}},{status:401}):Response.json({error:{message:"Missing API key"}},{status:401})}function q(a){let b=new Headers(a.headers);return b.delete("content-encoding"),b.delete("content-length"),b.delete("transfer-encoding"),b}function r(a){return a?.cause?.code||a?.code||a?.cause?.name||a?.name||"UNKNOWN"}async function s(a,b,c,d){let e=await p(a);if(e)return e;let g=o(c);if(!v.test(g))return Response.json({error:{message:"Invalid model"}},{status:400});let h=new Set,j=JSON.stringify(b),k=null,l=null;for(;;){let b,c=await (0,f.c1)("gemini",h,g);if(!c||c.allRateLimited)return console.log(`[GEMINI_NATIVE] exhausted model=${g} status=${l||Number(c?.lastErrorCode)||503} error=${k||c?.lastError||"No active credentials for provider: gemini"}`),Response.json({error:{message:k||c?.lastError||"No active credentials for provider: gemini"}},{status:l||Number(c?.lastErrorCode)||503});let e=c?.apiKey?{"x-goog-api-key":c.apiKey}:c?.accessToken?{Authorization:`Bearer ${c.accessToken}`}:null;if(!e)return Response.json({error:{message:"No Gemini API key configured"}},{status:404});let m=function(a){let b=String(a?.connectionId||"unknown").slice(0,8),c=String(a?.connectionName||"");return!c||c.includes("@")?b:`${c}:${b}`}(c),n=Date.now(),p=function(a,b,c){let d=new URL(a),e=new URL(`https://generativelanguage.googleapis.com/v1beta/models/${o(b)}${c}`);for(let[a,b]of d.searchParams.entries())"key"!==a&&e.searchParams.append(a,b);return e.toString()}(a.url,g,d),s=new AbortController,t=!1,u=setTimeout(()=>{t=!0,s.abort()},i.IK),v=()=>s.abort();if(a.signal?.aborted)return console.log(`[GEMINI_NATIVE] client aborted model=${g} ms=0 conn=${m}`),Response.json({error:{message:"Client closed request"}},{status:499});a.signal?.addEventListener("abort",v,{once:!0}),console.log(`[GEMINI_NATIVE] start model=${g} action=${d} conn=${m} body=${Buffer.byteLength(j)}B timeout=${i.IK}`);try{b=await fetch(p,{method:"POST",headers:{"Content-Type":a.headers.get("Content-Type")||"application/json",...e},body:j,signal:s.signal})}catch(j){let b=Date.now()-n;if(a.signal?.aborted&&!t)return console.log(`[GEMINI_NATIVE] client aborted model=${g} ms=${b} conn=${m}`),Response.json({error:{message:"Client closed request"}},{status:499});let d=!function(a,b){if(b)return!0;let c=r(a);return"UND_ERR_HEADERS_TIMEOUT"===c||"HeadersTimeoutError"===c}(j,t)?502:504,e=function(a){let b=a?.message||String(a),c=r(a);return`${b} (${c})`}(j);console.log(`[GEMINI_NATIVE] fetch failed model=${g} status=${d} ms=${b} conn=${m} error=${e}`);let{shouldFallback:i}=await (0,f.vk)(c.connectionId,d,e,"gemini",g);if(i){h.add(c.connectionId),k=e,l=d,console.log(`[GEMINI_NATIVE] fallback model=${g} status=${d} conn=${m} exclude=${h.size}`);continue}return Response.json({error:{message:e}},{status:d})}finally{clearTimeout(u),a.signal?.removeEventListener("abort",v)}if(console.log(`[GEMINI_NATIVE] upstream model=${g} status=${b.status} ms=${Date.now()-n} conn=${m} ct=${b.headers.get("content-type")||"?"} cl=${b.headers.get("content-length")||"?"}`),b.ok)return await (0,f.Pt)(c.connectionId,c,g),new Response(b.body,{status:b.status,statusText:b.statusText,headers:q(b)});let w=await b.text(),{shouldFallback:x}=await (0,f.vk)(c.connectionId,b.status,w,"gemini",g);if(x){h.add(c.connectionId),k=w,l=b.status;continue}return new Response(w,{status:b.status,statusText:b.statusText,headers:q(b)})}}let w={stop:"STOP",length:"MAX_TOKENS",tool_calls:"STOP",content_filter:"SAFETY"};async function t(a,b){let c;if(!a.ok)return a;try{c=await a.json()}catch{return a}if(c.candidates)return Response.json(c,{headers:{"Content-Type":"application/json"}});if(c.error)return Response.json(c,{status:a.status,headers:{"Content-Type":"application/json"}});let d=c.choices?.[0];if(!d)return Response.json(c,{headers:{"Content-Type":"application/json"}});let{message:e,finish_reason:f}=d,g=[];e.reasoning_content&&g.push({text:e.reasoning_content,thought:!0}),g.push({text:e.content||""});let h=w[f]||"STOP",i={candidates:[{content:{role:"model",parts:g},finishReason:h,index:0}],modelVersion:c.model||b};if(c.usage){i.usageMetadata={promptTokenCount:c.usage.prompt_tokens||0,candidatesTokenCount:c.usage.completion_tokens||0,totalTokenCount:c.usage.total_tokens||0};let a=c.usage.completion_tokens_details?.reasoning_tokens;a&&(i.usageMetadata.thoughtsTokenCount=a)}return Response.json(i,{headers:{"Content-Type":"application/json"}})}d()}catch(a){d(a)}})},75919:a=>{a.exports=require("node:worker_threads")},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},78474:a=>{a.exports=require("node:events")},79646:a=>{a.exports=require("child_process")},79868:a=>{a.exports=require("node:sqlite")},81630:a=>{a.exports=require("http")},81787:a=>{a.exports=require("bun:sqlite")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{a.exports=require("better-sqlite3")},87997:a=>{a.exports=require("node:timers")},91645:a=>{a.exports=require("net")},94735:a=>{a.exports=require("events")},98343:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{handler:()=>y,patchFetch:()=>x,routeModule:()=>z,serverHooks:()=>C,workAsyncStorage:()=>A,workUnitAsyncStorage:()=>B});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(75230),w=a([v]);v=(w.then?(await w)():w)[0];let z=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/v1beta/models/[...path]/route",pathname:"/api/v1beta/models/[...path]",filename:"route",bundlePath:"app/api/v1beta/models/[...path]/route"},distDir:".next-cli-build",relativeProjectDir:"",resolvedPagePath:"/home/runner/work/switchboard-router/switchboard-router/src/app/api/v1beta/models/[...path]/route.js",nextConfigOutput:"standalone",userland:v,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:B,serverHooks:C}=z;function x(){return(0,g.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:B})}async function y(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),z.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/v1beta/models/[...path]/route";"/index"===d&&(d="/");let e=await z.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,deploymentId:v,params:w,nextConfig:x,parsedUrl:y,isDraftMode:A,prerenderManifest:B,routerServerContext:C,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,resolvedPathname:F,clientReferenceManifest:G,serverActionsManifest:H}=e,I=(0,k.normalizeAppPath)(d),J=!!(B.dynamicRoutes[I]||B.routes[F]),K=async()=>((null==C?void 0:C.render404)?await C.render404(a,b,y,!1):b.end("This page could not be found"),null);if(J&&!A){let a=!!B.routes[F],b=B.dynamicRoutes[I];if(b&&!1===b.fallback&&!a){if(x.adapterPath)return await K();throw new t.NoFallbackError}}let L=null;!J||z.isDev||A||(L=F,L="/index"===L?"/":L);let M=!0===z.isDev||!J,N=J&&!M;H&&G&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:G,serverActionsManifest:H});let O=a.method||"GET",P=(0,i.getTracer)(),Q=P.getActiveScopeSpan(),R=!!(null==C?void 0:C.isWrappedByNextServer),S=!!(0,h.getRequestMeta)(a,"minimalMode"),T=(0,h.getRequestMeta)(a,"incrementalCache")||await z.getIncrementalCache(a,x,B,S);null==T||T.resetRequestCache(),globalThis.__incrementalCache=T;let U={params:w,previewProps:B.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts},cacheComponents:!!x.cacheComponents,supportsDynamicResponse:M,incrementalCache:T,cacheLifeProfiles:x.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>z.onRequestError(a,b,d,e,C)},sharedContext:{buildId:g,deploymentId:v}},V=new l.NodeNextRequest(a),W=new l.NodeNextResponse(b),X=m.NextRequestAdapter.fromNodeNextRequest(V,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>z.handle(X,U).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=P.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${O} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${O} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!S&&D&&E&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=U.renderOpts.fetchMetrics;let h=U.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=U.renderOpts.collectedTags;if(!J)return await (0,p.I)(V,W,d,U.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==U.renderOpts.collectedRevalidate&&!(U.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&U.renderOpts.collectedRevalidate,e=void 0===U.renderOpts.collectedExpire||U.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:U.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await z.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),b}},k=await z.handleResponse({req:a,nextConfig:x,cacheKey:L,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:B,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:S});if(!J)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});S||b.setHeader("x-nextjs-cache",D?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),A&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return S&&J||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(V,W,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};R&&Q?await h(Q):(e=P.getActiveScopeSpan(),await P.withPropagatedContext(a.headers,()=>P.trace(n.BaseServerSpan.handleRequest,{spanName:`${O} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":O,"http.target":a.url}},h),void 0,!R))}catch(b){if(b instanceof t.NoFallbackError||await z.onRequestError(a,b,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),J)throw b;return await (0,p.I)(V,W,new Response(null,{status:500})),null}}d()}catch(a){d(a)}})}};var b=require("../../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,1813,7774,9613,7141,5350,869,3986,4776,4646,8129,3904,6406,9261,1937,8400,3072,369,7828,7155,9291,1294,9489],()=>b(b.s=98343));module.exports=c})();
1
+ "use strict";(()=>{var a={};a.id=1566,a.ids=[1566],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},643:a=>{a.exports=require("node:perf_hooks")},1708:a=>{a.exports=require("node:process")},1932:a=>{a.exports=require("url")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4573:a=>{a.exports=require("node:buffer")},7066:a=>{a.exports=require("node:tty")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},14985:a=>{a.exports=require("dns")},16698:a=>{a.exports=require("node:async_hooks")},21820:a=>{a.exports=require("os")},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31421:a=>{a.exports=require("node:child_process")},32467:a=>{a.exports=require("node:http2")},33873:a=>{a.exports=require("path")},34589:a=>{a.exports=require("node:assert")},37067:a=>{a.exports=require("node:http")},37540:a=>{a.exports=require("node:console")},38522:a=>{a.exports=require("node:zlib")},40610:a=>{a.exports=require("node:dns")},41692:a=>{a.exports=require("node:tls")},41792:a=>{a.exports=require("node:querystring")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46293:a=>{a.exports=require("sql.js")},48161:a=>{a.exports=require("node:os")},51455:a=>{a.exports=require("node:fs/promises")},53053:a=>{a.exports=require("node:diagnostics_channel")},55511:a=>{a.exports=require("crypto")},55591:a=>{a.exports=require("https")},57075:a=>{a.exports=require("node:stream")},57975:a=>{a.exports=require("node:util")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},71553:a=>{a.exports=require("node:dns/promises")},73024:a=>{a.exports=require("node:fs")},73136:a=>{a.exports=require("node:url")},73429:a=>{a.exports=require("node:util/types")},73496:a=>{a.exports=require("http2")},74075:a=>{a.exports=require("zlib")},75230:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{OPTIONS:()=>m,POST:()=>n});var e=c(79489),f=c(80238),g=c(44776),h=c(81329),i=c(60290),j=c(48664),k=a([e]);e=(k.then?(await k)():k)[0];let u=!1,v=/^[a-zA-Z0-9_.:-]+$/;async function l(){u||(await (0,j.Ai)(),u=!0)}async function m(){return new Response(null,{headers:{"Access-Control-Allow-Methods":"GET, POST, OPTIONS","Access-Control-Allow-Headers":"*"}})}async function n(a,{params:b}){await l();try{let c,d,{path:f}=await b;if(f.length>=2){let a=f[0],b=f[1];d=b.includes(":streamGenerateContent")?":streamGenerateContent":":generateContent";let e=b.replace(":streamGenerateContent","").replace(":generateContent","");c=a+"/"+e}else{let a=f[0];d=a.includes(":streamGenerateContent")?":streamGenerateContent":":generateContent",c=a.replace(":streamGenerateContent","").replace(":generateContent","")}let g=await a.json();if(function(a,b){let c,d=String(a||"");if(d.includes("/")&&!d.startsWith("gemini/")&&!d.startsWith("models/"))return!1;let e=o(a);return c=b?.generationConfig?.responseModalities,Array.isArray(c)&&c.some(a=>"AUDIO"===String(a).toUpperCase())||new Set([...(h.PROVIDER_MODELS.gemini||[]).filter(a=>"tts"===(a.kind||a.type)).map(a=>a.id),...(h.PROVIDER_MODELS["gemini-tts-models"]||[]).map(a=>a.id)]).has(e)}(c,g))return await s(a,g,c,d);let i=":streamGenerateContent"===d,j=function(a,b,c){let d=[];if(a.systemInstruction){let b=a.systemInstruction.parts?.map(a=>a.text).join("\n")||"";b&&d.push({role:"system",content:b})}if(a.contents)for(let b of a.contents){let a="model"===b.role?"assistant":"user",c=b.parts?.map(a=>a.text).join("\n")||"";d.push({role:a,content:c})}return{model:b,messages:d,stream:c,max_tokens:a.generationConfig?.maxOutputTokens,temperature:a.generationConfig?.temperature,top_p:a.generationConfig?.topP}}(g,c,i),k=new Request(a.url,{method:"POST",headers:a.headers,body:JSON.stringify(j)}),l=await (0,e.P)(k);if(i)return function(a,b){if(!a.ok||!a.body)return a;let c=new TextDecoder,d=new TextEncoder,e="",f=(a,c,f)=>{let g=(e+=a).split("\n");for(let a of(e=c?"":g.pop(),g)){let c;if(!a.startsWith("data:"))continue;let e=a.slice(5).trim();if(!e||"[DONE]"===e)continue;try{c=JSON.parse(e)}catch{continue}let g=c.choices?.[0];if(!g)continue;let h=g.delta||{},i=[];if(h.reasoning_content&&i.push({text:h.reasoning_content,thought:!0}),h.content&&i.push({text:h.content}),0===i.length&&!g.finish_reason)continue;let j={content:{role:"model",parts:i.length>0?i:[{text:""}]},index:0};g.finish_reason&&(j.finishReason=w[g.finish_reason]||"STOP");let k={candidates:[j]};if(g.finish_reason&&c.usage){k.usageMetadata={promptTokenCount:c.usage.prompt_tokens||0,candidatesTokenCount:c.usage.completion_tokens||0,totalTokenCount:c.usage.total_tokens||0};let a=c.usage.completion_tokens_details?.reasoning_tokens;a&&(k.usageMetadata.thoughtsTokenCount=a),k.modelVersion=c.model||b}f.enqueue(d.encode("data: "+JSON.stringify(k)+"\r\n\r\n"))}},g=new TransformStream({transform(a,b){f(c.decode(a,{stream:!0}),!1,b)},flush(a){f(c.decode(),!0,a)}});return new Response(a.body.pipeThrough(g),{status:200,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache"}})}(l,c);return await t(l,c)}catch(a){return console.log("Error handling Gemini request:",a),Response.json({error:{message:a.message,code:500}},{status:500})}}function o(a){return String(a||"").replace(/^models\//,"").replace(/^gemini\//,"")}async function p(a){if(!(await (0,g.mt)()).requireApiKey)return null;let b=function(a){let b=a.headers.get("Authorization");if(b?.startsWith("Bearer "))return b.slice(7);let c=a.headers.get("x-goog-api-key");return c||new URL(a.url).searchParams.get("key")}(a);return b?await (0,f.kI)(b)?null:Response.json({error:{message:"Invalid API key"}},{status:401}):Response.json({error:{message:"Missing API key"}},{status:401})}function q(a){let b=new Headers(a.headers);return b.delete("content-encoding"),b.delete("content-length"),b.delete("transfer-encoding"),b}function r(a){return a?.cause?.code||a?.code||a?.cause?.name||a?.name||"UNKNOWN"}async function s(a,b,c,d){let e=await p(a);if(e)return e;let g=o(c);if(!v.test(g))return Response.json({error:{message:"Invalid model"}},{status:400});let h=new Set,j=JSON.stringify(b),k=null,l=null;for(;;){let b,c=await (0,f.c1)("gemini",h,g);if(!c||c.allRateLimited)return console.log(`[GEMINI_NATIVE] exhausted model=${g} status=${l||Number(c?.lastErrorCode)||503} error=${k||c?.lastError||"No active credentials for provider: gemini"}`),Response.json({error:{message:k||c?.lastError||"No active credentials for provider: gemini"}},{status:l||Number(c?.lastErrorCode)||503});let e=c?.apiKey?{"x-goog-api-key":c.apiKey}:c?.accessToken?{Authorization:`Bearer ${c.accessToken}`}:null;if(!e)return Response.json({error:{message:"No Gemini API key configured"}},{status:404});let m=function(a){let b=String(a?.connectionId||"unknown").slice(0,8),c=String(a?.connectionName||"");return!c||c.includes("@")?b:`${c}:${b}`}(c),n=Date.now(),p=function(a,b,c){let d=new URL(a),e=new URL(`https://generativelanguage.googleapis.com/v1beta/models/${o(b)}${c}`);for(let[a,b]of d.searchParams.entries())"key"!==a&&e.searchParams.append(a,b);return e.toString()}(a.url,g,d),s=new AbortController,t=!1,u=setTimeout(()=>{t=!0,s.abort()},i.IK),v=()=>s.abort();if(a.signal?.aborted)return console.log(`[GEMINI_NATIVE] client aborted model=${g} ms=0 conn=${m}`),Response.json({error:{message:"Client closed request"}},{status:499});a.signal?.addEventListener("abort",v,{once:!0}),console.log(`[GEMINI_NATIVE] start model=${g} action=${d} conn=${m} body=${Buffer.byteLength(j)}B timeout=${i.IK}`);try{b=await fetch(p,{method:"POST",headers:{"Content-Type":a.headers.get("Content-Type")||"application/json",...e},body:j,signal:s.signal})}catch(j){let b=Date.now()-n;if(a.signal?.aborted&&!t)return console.log(`[GEMINI_NATIVE] client aborted model=${g} ms=${b} conn=${m}`),Response.json({error:{message:"Client closed request"}},{status:499});let d=!function(a,b){if(b)return!0;let c=r(a);return"UND_ERR_HEADERS_TIMEOUT"===c||"HeadersTimeoutError"===c}(j,t)?502:504,e=function(a){let b=a?.message||String(a),c=r(a);return`${b} (${c})`}(j);console.log(`[GEMINI_NATIVE] fetch failed model=${g} status=${d} ms=${b} conn=${m} error=${e}`);let{shouldFallback:i}=await (0,f.vk)(c.connectionId,d,e,"gemini",g);if(i){h.add(c.connectionId),k=e,l=d,console.log(`[GEMINI_NATIVE] fallback model=${g} status=${d} conn=${m} exclude=${h.size}`);continue}return Response.json({error:{message:e}},{status:d})}finally{clearTimeout(u),a.signal?.removeEventListener("abort",v)}if(console.log(`[GEMINI_NATIVE] upstream model=${g} status=${b.status} ms=${Date.now()-n} conn=${m} ct=${b.headers.get("content-type")||"?"} cl=${b.headers.get("content-length")||"?"}`),b.ok)return await (0,f.Pt)(c.connectionId,c,g),new Response(b.body,{status:b.status,statusText:b.statusText,headers:q(b)});let w=await b.text(),{shouldFallback:x}=await (0,f.vk)(c.connectionId,b.status,w,"gemini",g);if(x){h.add(c.connectionId),k=w,l=b.status;continue}return new Response(w,{status:b.status,statusText:b.statusText,headers:q(b)})}}let w={stop:"STOP",length:"MAX_TOKENS",tool_calls:"STOP",content_filter:"SAFETY"};async function t(a,b){let c;if(!a.ok)return a;try{c=await a.json()}catch{return a}if(c.candidates)return Response.json(c,{headers:{"Content-Type":"application/json"}});if(c.error)return Response.json(c,{status:a.status,headers:{"Content-Type":"application/json"}});let d=c.choices?.[0];if(!d)return Response.json(c,{headers:{"Content-Type":"application/json"}});let{message:e,finish_reason:f}=d,g=[];e.reasoning_content&&g.push({text:e.reasoning_content,thought:!0}),g.push({text:e.content||""});let h=w[f]||"STOP",i={candidates:[{content:{role:"model",parts:g},finishReason:h,index:0}],modelVersion:c.model||b};if(c.usage){i.usageMetadata={promptTokenCount:c.usage.prompt_tokens||0,candidatesTokenCount:c.usage.completion_tokens||0,totalTokenCount:c.usage.total_tokens||0};let a=c.usage.completion_tokens_details?.reasoning_tokens;a&&(i.usageMetadata.thoughtsTokenCount=a)}return Response.json(i,{headers:{"Content-Type":"application/json"}})}d()}catch(a){d(a)}})},75919:a=>{a.exports=require("node:worker_threads")},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},78474:a=>{a.exports=require("node:events")},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},79868:a=>{a.exports=require("node:sqlite")},81630:a=>{a.exports=require("http")},81787:a=>{a.exports=require("bun:sqlite")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{a.exports=require("better-sqlite3")},87997:a=>{a.exports=require("node:timers")},91645:a=>{a.exports=require("net")},94735:a=>{a.exports=require("events")},98343:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{handler:()=>y,patchFetch:()=>x,routeModule:()=>z,serverHooks:()=>C,workAsyncStorage:()=>A,workUnitAsyncStorage:()=>B});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(75230),w=a([v]);v=(w.then?(await w)():w)[0];let z=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/v1beta/models/[...path]/route",pathname:"/api/v1beta/models/[...path]",filename:"route",bundlePath:"app/api/v1beta/models/[...path]/route"},distDir:".next-cli-build",relativeProjectDir:"",resolvedPagePath:"/home/runner/work/switchboard-router/switchboard-router/src/app/api/v1beta/models/[...path]/route.js",nextConfigOutput:"standalone",userland:v,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:B,serverHooks:C}=z;function x(){return(0,g.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:B})}async function y(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),z.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/v1beta/models/[...path]/route";"/index"===d&&(d="/");let e=await z.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,deploymentId:v,params:w,nextConfig:x,parsedUrl:y,isDraftMode:A,prerenderManifest:B,routerServerContext:C,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,resolvedPathname:F,clientReferenceManifest:G,serverActionsManifest:H}=e,I=(0,k.normalizeAppPath)(d),J=!!(B.dynamicRoutes[I]||B.routes[F]),K=async()=>((null==C?void 0:C.render404)?await C.render404(a,b,y,!1):b.end("This page could not be found"),null);if(J&&!A){let a=!!B.routes[F],b=B.dynamicRoutes[I];if(b&&!1===b.fallback&&!a){if(x.adapterPath)return await K();throw new t.NoFallbackError}}let L=null;!J||z.isDev||A||(L=F,L="/index"===L?"/":L);let M=!0===z.isDev||!J,N=J&&!M;H&&G&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:G,serverActionsManifest:H});let O=a.method||"GET",P=(0,i.getTracer)(),Q=P.getActiveScopeSpan(),R=!!(null==C?void 0:C.isWrappedByNextServer),S=!!(0,h.getRequestMeta)(a,"minimalMode"),T=(0,h.getRequestMeta)(a,"incrementalCache")||await z.getIncrementalCache(a,x,B,S);null==T||T.resetRequestCache(),globalThis.__incrementalCache=T;let U={params:w,previewProps:B.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts},cacheComponents:!!x.cacheComponents,supportsDynamicResponse:M,incrementalCache:T,cacheLifeProfiles:x.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>z.onRequestError(a,b,d,e,C)},sharedContext:{buildId:g,deploymentId:v}},V=new l.NodeNextRequest(a),W=new l.NodeNextResponse(b),X=m.NextRequestAdapter.fromNodeNextRequest(V,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>z.handle(X,U).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=P.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${O} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${O} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!S&&D&&E&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=U.renderOpts.fetchMetrics;let h=U.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=U.renderOpts.collectedTags;if(!J)return await (0,p.I)(V,W,d,U.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==U.renderOpts.collectedRevalidate&&!(U.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&U.renderOpts.collectedRevalidate,e=void 0===U.renderOpts.collectedExpire||U.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:U.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await z.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),b}},k=await z.handleResponse({req:a,nextConfig:x,cacheKey:L,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:B,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:S});if(!J)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});S||b.setHeader("x-nextjs-cache",D?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),A&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return S&&J||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(V,W,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};R&&Q?await h(Q):(e=P.getActiveScopeSpan(),await P.withPropagatedContext(a.headers,()=>P.trace(n.BaseServerSpan.handleRequest,{spanName:`${O} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":O,"http.target":a.url}},h),void 0,!R))}catch(b){if(b instanceof t.NoFallbackError||await z.onRequestError(a,b,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),J)throw b;return await (0,p.I)(V,W,new Response(null,{status:500})),null}}d()}catch(a){d(a)}})}};var b=require("../../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,1813,7774,9613,7141,5350,869,3986,4776,4646,8129,3904,6406,9261,1937,8400,3072,369,7828,7155,9291,1294,9489],()=>b(b.s=98343));module.exports=c})();
@@ -1 +1 @@
1
- (()=>{var a={};a.id=2922,a.ids=[2922],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},19225:(a,b,c)=>{"use strict";a.exports=c(44870)},25793:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>F,patchFetch:()=>E,routeModule:()=>A,serverHooks:()=>D,workAsyncStorage:()=>B,workUnitAsyncStorage:()=>C});var d={};c.r(d),c.d(d,{GET:()=>z,compareVersions:()=>y});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(55591),w=c.n(v),x=c(39006);function y(a,b){if(!a||!b)return 0;let c=String(a).replace(/^v/i,"").split(".").map(a=>parseInt(a,10)||0),d=String(b).replace(/^v/i,"").split(".").map(a=>parseInt(a,10)||0),e=Math.max(c.length,d.length,3);for(let a=0;a<e;a++){let b=c[a]||0,e=d[a]||0;if(b>e)return 1;if(b<e)return -1}return 0}async function z(){let a,b=x.rE,c=(a=process.env.SWITCHBOARD_NPM_PACKAGE||process.env.NPM_UPDATE_PACKAGE)&&String(a).trim()?String(a).trim():"switchboard-router";if(!c)return Response.json({currentVersion:b,latestVersion:null,hasUpdate:!1,packageName:null,reason:"no_package_configured"});let d=await new Promise(a=>{if(!c)return void a(null);let b=w().get(`https://registry.npmjs.org/${encodeURIComponent(c)}/latest`,{timeout:4e3},b=>{if(b.statusCode&&b.statusCode>=400){b.resume(),a(null);return}let d="";b.on("data",a=>d+=a),b.on("end",()=>{try{let b=JSON.parse(d);a({version:"string"==typeof b.version?b.version:null,name:"string"==typeof b.name?b.name:c,description:"string"==typeof b.description?b.description:""})}catch{a(null)}})});b.on("error",()=>a(null)),b.on("timeout",()=>{b.destroy(),a(null)})});if(!d?.version)return Response.json({currentVersion:b,latestVersion:null,hasUpdate:!1,packageName:c,reason:"registry_unavailable"});if(!function(a,b){if(!a?.version||a.name&&b&&a.name!==b)return!1;let c=(a.description||"").toLowerCase();return!!/switchboard|routing|router|openai|claude|gateway|model/.test(c)||!c&&a.name===b}(d,c))return Response.json({currentVersion:b,latestVersion:null,hasUpdate:!1,packageName:c,reason:"package_identity_mismatch"});let e=d.version,f=y(e,b)>0;return Response.json({currentVersion:b,latestVersion:e,hasUpdate:f,packageName:c})}let A=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/version/route",pathname:"/api/version",filename:"route",bundlePath:"app/api/version/route"},distDir:".next-cli-build",relativeProjectDir:"",resolvedPagePath:"/home/runner/work/switchboard-router/switchboard-router/src/app/api/version/route.js",nextConfigOutput:"standalone",userland:d,...{}}),{workAsyncStorage:B,workUnitAsyncStorage:C,serverHooks:D}=A;function E(){return(0,g.patchFetch)({workAsyncStorage:B,workUnitAsyncStorage:C})}async function F(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),A.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/version/route";"/index"===d&&(d="/");let e=await A.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,deploymentId:v,params:w,nextConfig:x,parsedUrl:y,isDraftMode:z,prerenderManifest:B,routerServerContext:C,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,resolvedPathname:F,clientReferenceManifest:G,serverActionsManifest:H}=e,I=(0,k.normalizeAppPath)(d),J=!!(B.dynamicRoutes[I]||B.routes[F]),K=async()=>((null==C?void 0:C.render404)?await C.render404(a,b,y,!1):b.end("This page could not be found"),null);if(J&&!z){let a=!!B.routes[F],b=B.dynamicRoutes[I];if(b&&!1===b.fallback&&!a){if(x.adapterPath)return await K();throw new t.NoFallbackError}}let L=null;!J||A.isDev||z||(L="/index"===(L=F)?"/":L);let M=!0===A.isDev||!J,N=J&&!M;H&&G&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:G,serverActionsManifest:H});let O=a.method||"GET",P=(0,i.getTracer)(),Q=P.getActiveScopeSpan(),R=!!(null==C?void 0:C.isWrappedByNextServer),S=!!(0,h.getRequestMeta)(a,"minimalMode"),T=(0,h.getRequestMeta)(a,"incrementalCache")||await A.getIncrementalCache(a,x,B,S);null==T||T.resetRequestCache(),globalThis.__incrementalCache=T;let U={params:w,previewProps:B.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts},cacheComponents:!!x.cacheComponents,supportsDynamicResponse:M,incrementalCache:T,cacheLifeProfiles:x.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>A.onRequestError(a,b,d,e,C)},sharedContext:{buildId:g,deploymentId:v}},V=new l.NodeNextRequest(a),W=new l.NodeNextResponse(b),X=m.NextRequestAdapter.fromNodeNextRequest(V,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>A.handle(X,U).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=P.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${O} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${O} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!S&&D&&E&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=U.renderOpts.fetchMetrics;let h=U.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=U.renderOpts.collectedTags;if(!J)return await (0,p.I)(V,W,d,U.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==U.renderOpts.collectedRevalidate&&!(U.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&U.renderOpts.collectedRevalidate,e=void 0===U.renderOpts.collectedExpire||U.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:U.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await A.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),b}},k=await A.handleResponse({req:a,nextConfig:x,cacheKey:L,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:B,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:S});if(!J)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});S||b.setHeader("x-nextjs-cache",D?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),z&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return S&&J||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(V,W,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};R&&Q?await h(Q):(e=P.getActiveScopeSpan(),await P.withPropagatedContext(a.headers,()=>P.trace(n.BaseServerSpan.handleRequest,{spanName:`${O} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":O,"http.target":a.url}},h),void 0,!R))}catch(b){if(b instanceof t.NoFallbackError||await A.onRequestError(a,b,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),J)throw b;return await (0,p.I)(V,W,new Response(null,{status:500})),null}}},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},39006:a=>{"use strict";a.exports=JSON.parse('{"UU":"switchboard-app","rE":"0.6.14"}')},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},55591:a=>{"use strict";a.exports=require("https")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},78335:()=>{},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},92280:(a,b,c)=>{"use strict";Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(28208),e=c(47617),f=c(62018);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},96487:()=>{}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741],()=>b(b.s=25793));module.exports=c})();
1
+ (()=>{var a={};a.id=2922,a.ids=[2922],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},19225:(a,b,c)=>{"use strict";a.exports=c(44870)},25793:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>F,patchFetch:()=>E,routeModule:()=>A,serverHooks:()=>D,workAsyncStorage:()=>B,workUnitAsyncStorage:()=>C});var d={};c.r(d),c.d(d,{GET:()=>z,compareVersions:()=>y});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(55591),w=c.n(v),x=c(39006);function y(a,b){if(!a||!b)return 0;let c=String(a).replace(/^v/i,"").split(".").map(a=>parseInt(a,10)||0),d=String(b).replace(/^v/i,"").split(".").map(a=>parseInt(a,10)||0),e=Math.max(c.length,d.length,3);for(let a=0;a<e;a++){let b=c[a]||0,e=d[a]||0;if(b>e)return 1;if(b<e)return -1}return 0}async function z(){let a,b=x.rE,c=(a=process.env.SWITCHBOARD_NPM_PACKAGE||process.env.NPM_UPDATE_PACKAGE)&&String(a).trim()?String(a).trim():"switchboard-router";if(!c)return Response.json({currentVersion:b,latestVersion:null,hasUpdate:!1,packageName:null,reason:"no_package_configured"});let d=await new Promise(a=>{if(!c)return void a(null);let b=w().get(`https://registry.npmjs.org/${encodeURIComponent(c)}/latest`,{timeout:4e3},b=>{if(b.statusCode&&b.statusCode>=400){b.resume(),a(null);return}let d="";b.on("data",a=>d+=a),b.on("end",()=>{try{let b=JSON.parse(d);a({version:"string"==typeof b.version?b.version:null,name:"string"==typeof b.name?b.name:c,description:"string"==typeof b.description?b.description:""})}catch{a(null)}})});b.on("error",()=>a(null)),b.on("timeout",()=>{b.destroy(),a(null)})});if(!d?.version)return Response.json({currentVersion:b,latestVersion:null,hasUpdate:!1,packageName:c,reason:"registry_unavailable"});if(!function(a,b){if(!a?.version||a.name&&b&&a.name!==b)return!1;let c=(a.description||"").toLowerCase();return!!/switchboard|routing|router|openai|claude|gateway|model/.test(c)||!c&&a.name===b}(d,c))return Response.json({currentVersion:b,latestVersion:null,hasUpdate:!1,packageName:c,reason:"package_identity_mismatch"});let e=d.version,f=y(e,b)>0;return Response.json({currentVersion:b,latestVersion:e,hasUpdate:f,packageName:c})}let A=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/version/route",pathname:"/api/version",filename:"route",bundlePath:"app/api/version/route"},distDir:".next-cli-build",relativeProjectDir:"",resolvedPagePath:"/home/runner/work/switchboard-router/switchboard-router/src/app/api/version/route.js",nextConfigOutput:"standalone",userland:d,...{}}),{workAsyncStorage:B,workUnitAsyncStorage:C,serverHooks:D}=A;function E(){return(0,g.patchFetch)({workAsyncStorage:B,workUnitAsyncStorage:C})}async function F(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),A.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/version/route";"/index"===d&&(d="/");let e=await A.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,deploymentId:v,params:w,nextConfig:x,parsedUrl:y,isDraftMode:z,prerenderManifest:B,routerServerContext:C,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,resolvedPathname:F,clientReferenceManifest:G,serverActionsManifest:H}=e,I=(0,k.normalizeAppPath)(d),J=!!(B.dynamicRoutes[I]||B.routes[F]),K=async()=>((null==C?void 0:C.render404)?await C.render404(a,b,y,!1):b.end("This page could not be found"),null);if(J&&!z){let a=!!B.routes[F],b=B.dynamicRoutes[I];if(b&&!1===b.fallback&&!a){if(x.adapterPath)return await K();throw new t.NoFallbackError}}let L=null;!J||A.isDev||z||(L="/index"===(L=F)?"/":L);let M=!0===A.isDev||!J,N=J&&!M;H&&G&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:G,serverActionsManifest:H});let O=a.method||"GET",P=(0,i.getTracer)(),Q=P.getActiveScopeSpan(),R=!!(null==C?void 0:C.isWrappedByNextServer),S=!!(0,h.getRequestMeta)(a,"minimalMode"),T=(0,h.getRequestMeta)(a,"incrementalCache")||await A.getIncrementalCache(a,x,B,S);null==T||T.resetRequestCache(),globalThis.__incrementalCache=T;let U={params:w,previewProps:B.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts},cacheComponents:!!x.cacheComponents,supportsDynamicResponse:M,incrementalCache:T,cacheLifeProfiles:x.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>A.onRequestError(a,b,d,e,C)},sharedContext:{buildId:g,deploymentId:v}},V=new l.NodeNextRequest(a),W=new l.NodeNextResponse(b),X=m.NextRequestAdapter.fromNodeNextRequest(V,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>A.handle(X,U).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=P.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${O} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${O} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!S&&D&&E&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=U.renderOpts.fetchMetrics;let h=U.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=U.renderOpts.collectedTags;if(!J)return await (0,p.I)(V,W,d,U.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==U.renderOpts.collectedRevalidate&&!(U.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&U.renderOpts.collectedRevalidate,e=void 0===U.renderOpts.collectedExpire||U.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:U.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await A.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),b}},k=await A.handleResponse({req:a,nextConfig:x,cacheKey:L,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:B,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:S});if(!J)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});S||b.setHeader("x-nextjs-cache",D?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),z&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return S&&J||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(V,W,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};R&&Q?await h(Q):(e=P.getActiveScopeSpan(),await P.withPropagatedContext(a.headers,()=>P.trace(n.BaseServerSpan.handleRequest,{spanName:`${O} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":O,"http.target":a.url}},h),void 0,!R))}catch(b){if(b instanceof t.NoFallbackError||await A.onRequestError(a,b,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),J)throw b;return await (0,p.I)(V,W,new Response(null,{status:500})),null}}},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},39006:a=>{"use strict";a.exports=JSON.parse('{"UU":"switchboard-app","rE":"0.6.16"}')},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},55591:a=>{"use strict";a.exports=require("https")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},78335:()=>{},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},92280:(a,b,c)=>{"use strict";Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(28208),e=c(47617),f=c(62018);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},96487:()=>{}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741],()=>b(b.s=25793));module.exports=c})();