switchboard-router 0.9.49 → 0.9.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/app/{.next-cli-build/static/chunks/1321-431751fe9225bf53.js → .next/static/chunks/1321-61ccd342dfe1b2b3.js} +1 -1
  2. package/app/.next-cli-build/BUILD_ID +1 -1
  3. package/app/.next-cli-build/app-path-routes-manifest.json +9 -9
  4. package/app/.next-cli-build/build-manifest.json +2 -2
  5. package/app/.next-cli-build/prerender-manifest.json +3 -3
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page_client-reference-manifest.js +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page_client-reference-manifest.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  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/pxpipe/page_client-reference-manifest.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  32. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  33. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  34. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  35. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  36. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  37. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  38. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  39. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  40. package/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  41. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  42. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  43. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  44. package/app/.next-cli-build/server/app/api/cli-tools/aider-settings/route.js +2 -2
  45. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +5 -5
  46. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  47. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
  48. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +2 -2
  49. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
  50. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  51. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +2 -2
  52. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +1 -1
  53. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  54. package/app/.next-cli-build/server/app/api/cli-tools/gemini-cli-settings/route.js +2 -2
  55. package/app/.next-cli-build/server/app/api/cli-tools/grok-settings/route.js +2 -2
  56. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +3 -3
  57. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  58. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  59. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  60. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  61. package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js +1 -1
  62. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  63. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  64. package/app/.next-cli-build/server/app/callback.html +1 -1
  65. package/app/.next-cli-build/server/app/callback.rsc +3 -3
  66. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  67. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  68. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +3 -3
  69. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  70. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  71. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  72. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  73. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  74. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +3 -3
  75. package/app/.next-cli-build/server/app/index.html +1 -1
  76. package/app/.next-cli-build/server/app/index.rsc +3 -3
  77. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  78. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  79. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  80. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  81. package/app/.next-cli-build/server/app/landing.html +1 -1
  82. package/app/.next-cli-build/server/app/landing.rsc +3 -3
  83. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
  84. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  85. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +3 -3
  86. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  87. package/app/.next-cli-build/server/app/login.html +1 -1
  88. package/app/.next-cli-build/server/app/login.rsc +4 -4
  89. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  90. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  91. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
  92. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  93. package/app/.next-cli-build/server/app-paths-manifest.json +9 -9
  94. package/app/.next-cli-build/server/chunks/1350.js +1 -1
  95. package/app/.next-cli-build/server/chunks/2847.js +1 -1
  96. package/app/.next-cli-build/server/chunks/7201.js +1 -1
  97. package/app/.next-cli-build/server/chunks/869.js +1 -1
  98. package/app/.next-cli-build/server/chunks/9264.js +1 -1
  99. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  100. package/app/.next-cli-build/server/pages/404.html +1 -1
  101. package/app/.next-cli-build/server/pages/500.html +1 -1
  102. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  103. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  104. package/app/{.next/static/chunks/1321-431751fe9225bf53.js → .next-cli-build/static/chunks/1321-61ccd342dfe1b2b3.js} +1 -1
  105. package/app/open-sse/identity/tls/bin/darwin/arm64/switchboard-claude-tls +0 -0
  106. package/app/open-sse/identity/tls/bin/darwin/x64/switchboard-claude-tls +0 -0
  107. package/app/open-sse/identity/tls/bin/linux/arm64/switchboard-claude-tls +0 -0
  108. package/app/open-sse/identity/tls/bin/linux/x64/switchboard-claude-tls +0 -0
  109. package/app/open-sse/identity/tls/bin/win32/arm64/switchboard-claude-tls.exe +0 -0
  110. package/app/open-sse/identity/tls/bin/win32/x64/switchboard-claude-tls.exe +0 -0
  111. package/app/package.json +1 -1
  112. package/package.json +1 -1
  113. /package/app/.next/static/{6k9a5hXyI2Plbuq2Hfh-a → RWZSAZYop1Tcl3vT3frIa}/_buildManifest.js +0 -0
  114. /package/app/.next/static/{6k9a5hXyI2Plbuq2Hfh-a → RWZSAZYop1Tcl3vT3frIa}/_ssgManifest.js +0 -0
  115. /package/app/.next-cli-build/static/{6k9a5hXyI2Plbuq2Hfh-a → RWZSAZYop1Tcl3vT3frIa}/_buildManifest.js +0 -0
  116. /package/app/.next-cli-build/static/{6k9a5hXyI2Plbuq2Hfh-a → RWZSAZYop1Tcl3vT3frIa}/_ssgManifest.js +0 -0
@@ -2,4 +2,4 @@ exports.id=7201,exports.ids=[7201],exports.modules={4630:(a,b,c)=>{"use strict";
2
2
  ${e}${n(t)}
3
3
  `}function s(a){let b=o(a,e);if(!b)return a;let c=(0,d.Tp)(p(a,e));if(c.errors.length)throw Error(`Invalid Aider YAML: ${c.errors[0].message}`);for(let a of["openai-api-base","openai-api-key","model","alias"])b[a]?.exists?c.setIn([a],b[a].value):c.deleteIn([a]);return c.toString()}function t(a,{baseUrl:b,models:c,defaultModel:e}){let g=o(a,f)?u(a):a,h=(0,d.Tp)(g||"");if(h.errors.length)throw Error(`Invalid Hermes YAML: ${h.errors[0].message}`);let k=i(c),l=j(e,k),m=q(h.getIn(["custom_providers"])),p=Array.isArray(m)?m:[],r=p.find(a=>a?.name==="switchboard"),s=q(h.getIn(["model"])),v=p.filter(a=>a?.name!=="switchboard"),w=Object.fromEntries(k.map(a=>[a,{}]));return v.push({name:"switchboard",base_url:b,key_env:"SWITCHBOARD_API_KEY",api_mode:"chat_completions",models:w}),h.setIn(["custom_providers"],v),h.setIn(["model"],{...s&&"object"==typeof s?s:{},default:l,provider:"custom:switchboard"}),`${h.toString().trimEnd()}
4
4
  ${f}${n({previousProvider:r??null,previousModel:s??null})}
5
- `}function u(a){let b=o(a,f),c=(0,d.Tp)(p(a,f));if(c.errors.length)throw Error(`Invalid Hermes YAML: ${c.errors[0].message}`);let e=q(c.getIn(["custom_providers"]));if(Array.isArray(e)){let a=e.filter(a=>a?.name!=="switchboard");b?.previousProvider&&a.push(b.previousProvider),a.length?c.setIn(["custom_providers"],a):c.deleteIn(["custom_providers"])}return"custom:switchboard"===q(c.getIn(["model","provider"]))&&(b?.previousModel?c.setIn(["model"],b.previousModel):c.deleteIn(["model"])),c.toString()}function v(a,{baseUrl:b,apiKey:c,models:d,defaultModel:e}){let f=i(d),g=j(e,f);return{...a,model:`switchboard/${g}`,provider:{...a.provider||{},switchboard:{npm:"@ai-sdk/openai-compatible",name:"Switchboard",options:{apiKey:c,baseURL:b},models:Object.fromEntries(f.map(a=>[a,{name:k(a)}]))}}}}function w(a,{baseUrl:b,apiKey:c,models:d,defaultModel:e}){let f=i(d),g=j(e,f),h=a.providers||{},l=a.models||{};return{providers:{...h,providers:{...h.providers||{},switchboard:{type:"openai-compatible",name:"Switchboard",baseUrl:b,apiKey:c,defaultModelId:g}}},models:{...l,providers:{...l.providers||{},switchboard:{provider:{name:"Switchboard",baseUrl:b,defaultModelId:g},models:Object.fromEntries(f.map(a=>[a,{id:a,name:k(a)}]))}}}}}function x(a,{models:b,defaultModel:c}){let d=i(b),e=j(c,d),f=Object.fromEntries(Object.entries(a?.modelConfigs?.modelDefinitions&&"object"==typeof a.modelConfigs.modelDefinitions?a.modelConfigs.modelDefinitions:{}).filter(([,a])=>a?.family!=="switchboard"));return{...a,model:{...a.model||{},name:e},experimental:{...a.experimental||{},dynamicModelConfiguration:!0},modelConfigs:{...a.modelConfigs||{},modelDefinitions:{...f,...Object.fromEntries(d.map(a=>[a,{displayName:`Switchboard \xb7 ${k(a)}`,family:"switchboard",tier:"custom",isPreview:!1,isVisible:!0,features:{thinking:!0,multimodalToolUse:!0}}]))}}}}},47293:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});let d=new Uint8Array(16);var e=c(50122);let f=function(a,b,c){return b||a||!crypto.randomUUID?function(a,b,c){let f=(a=a||{}).random??a.rng?.()??crypto.getRandomValues(d);if(f.length<16)throw Error("Random bytes length must be >= 16");if(f[6]=15&f[6]|64,f[8]=63&f[8]|128,b){if((c=c||0)<0||c+16>b.length)throw RangeError(`UUID byte range ${c}:${c+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[c+a]=f[a];return b}return(0,e.k)(f)}(a,b,c):crypto.randomUUID()}},50122:(a,b,c)=>{"use strict";c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}},57781:(a,b,c)=>{"use strict";c.d(b,{R:()=>h});var d=c(51455),e=c.n(d),f=c(76760),g=c.n(f);async function h(a,b,c="utf-8"){let d=g().dirname(a);await e().mkdir(d,{recursive:!0});let f=g().join(d,`.${g().basename(a)}.sb-tmp-${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`);try{await e().writeFile(f,b,c);try{let a=await e().open(f,"r+");try{await a.sync()}finally{await a.close()}}catch{}await e().rename(f,a)}catch(a){try{await e().unlink(f)}catch{}throw a}}},68393:(a,b,c)=>{"use strict";c.d(b,{AD:()=>x,El:()=>v,JF:()=>r,LU:()=>u,Ng:()=>o,OU:()=>t,Ro:()=>h,_1:()=>s,ao:()=>l,at:()=>B,i6:()=>A,iO:()=>w,s8:()=>z,wN:()=>y});let d=Object.freeze({PASS_THROUGH:"pass-through",PROXY:"proxy",FULL_CATALOG:"full-catalog"}),e="x-switchboard-claude-mode",f="x-switchboard-claude-models",g="x-switchboard-claude-labels",h="x-switchboard-key",i="claude-switchboard-v1/",j=/^(?:claude|anthropic)-[a-z0-9][a-z0-9._-]*$/i,k=Object.freeze(["ANTHROPIC_DEFAULT_OPUS_MODEL","ANTHROPIC_DEFAULT_OPUS_MODEL_NAME","ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION","ANTHROPIC_DEFAULT_SONNET_MODEL","ANTHROPIC_DEFAULT_SONNET_MODEL_NAME","ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION","ANTHROPIC_DEFAULT_FABLE_MODEL","ANTHROPIC_DEFAULT_FABLE_MODEL_NAME","ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION","ANTHROPIC_DEFAULT_HAIKU_MODEL","ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME","ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION"]);function l(a){let b=String(a||"");if(!b)return"";let c=0x811c9dc5;for(let a=0;a<b.length;a+=1)c^=b.charCodeAt(a),c=Math.imul(c,0x1000193);return(c>>>0).toString(16).padStart(8,"0")}let m=a=>a.replace(/(^|-)([a-z])/g,(a,b,c)=>`${b}${c.toUpperCase()}`);function n(a,b){if("string"!=typeof a)return"";for(let c of a.split(/\r?\n/)){let a=c.indexOf(":");if(!(a<0)&&c.slice(0,a).trim().toLowerCase()===b)return c.slice(a+1).trim()}return""}function o(a){return"string"==typeof a&&j.test(a)}function p(a){if(!Array.isArray(a))throw TypeError("Claude catalog models must be an array.");let b=[],c=new Set;for(let d of a){if("string"!=typeof d)throw TypeError("Each Claude catalog model must be a string.");let a=d.trim();if(a){if(/\r|\n/.test(a))throw TypeError("Claude catalog model IDs cannot contain newlines.");c.has(a)||(c.add(a),b.push(a))}}return b}function q(a){if("string"!=typeof a||!a.trim())return[];try{return p(JSON.parse(decodeURIComponent(a)))}catch{return[]}}function r(a){return q(n(a,f))}function s(a){return q(a?.get(f))}function t(a,b){if(!a||"object"!=typeof a||Array.isArray(a))return{};let c=new Set(p(b)),d={};for(let[b,e]of Object.entries(a)){if(!c.has(b))continue;let a=String(e||"").trim().replace(/[·•—–]/g," | ").replace(/[\r\n]+/g," ").replace(/\s+/g," ");a&&(d[b]=a.slice(0,48))}return d}function u(a){var b=a?.get(g);if("string"!=typeof b||!b.trim())return{};try{let a=JSON.parse(decodeURIComponent(b));return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}catch{return{}}}function v(a){let b=String(a||"").trim();if(!b)throw TypeError("A Switchboard model ID is required.");let c=b.split("/").map(encodeURIComponent).join("/");return`${i}${c}`}function w(a){if("string"!=typeof a||!a.startsWith(i))return null;let b=a.slice(i.length);if(!b)return null;try{let c=b.split("/").map(decodeURIComponent).join("/");return v(c)===a?c:null}catch{return null}}function x({baseUrl:a,gatewayKey:b,models:c=[],pickerLabels:h={}}){let i=String(a||"").trim().replace(/\/+$/,""),j=String(b||"").trim();if(!i)throw TypeError("A Switchboard endpoint is required.");if(!j)throw TypeError("A Switchboard API key is required.");let l=p(c),n=t(h,l),o=function(a=[],b={}){let c=p(a),h=[`${m(e)}: ${d.FULL_CATALOG}`,`${m(f)}: ${encodeURIComponent(JSON.stringify(p(c)))}`],i=function(a,b={}){let c=t(b,a);return 0===Object.keys(c).length?"":encodeURIComponent(JSON.stringify(c))}(c,b);return i&&h.push(`${m(g)}: ${i}`),h.join("\n")}(l,n);if(new TextEncoder().encode(o).byteLength>7168)throw TypeError("This catalog is too large for Claude Code request headers. Remove models or shorten picker labels.");let q={ANTHROPIC_API_KEY:"",ANTHROPIC_AUTH_TOKEN:j,ANTHROPIC_BASE_URL:i.endsWith("/v1")?i:`${i}/v1`,ANTHROPIC_CUSTOM_HEADERS:o,ANTHROPIC_CUSTOM_MODEL_OPTION:"",CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY:"1"};for(let a of k)q[a]="";return{env:q,pickerLabels:n}}function y(a){return n(a,e).toLowerCase()===d.PASS_THROUGH}function z(a){let b=n(a,e).toLowerCase();return b===d.FULL_CATALOG||b===d.PROXY}function A(a){return a?.get(e)?.trim().toLowerCase()===d.PASS_THROUGH}function B(a){let b=a?.get(e)?.trim().toLowerCase();return b===d.FULL_CATALOG||b===d.PROXY}},78335:()=>{},85432:(a,b,c)=>{"use strict";c.d(b,{Kt:()=>m,MH:()=>l,vA:()=>k});var d=c(15717),e=c(19978),f=c(94454),g=c(29696);let h="compatible-reasoning:snapshot";async function i(){let a="function"==typeof d.Fh?(0,d.Fh)({type:"openai-compatible"}):Promise.resolve([]),b="function"==typeof d.uv?(0,d.uv)():Promise.resolve([]),[c,e]=await Promise.all([Promise.resolve(a).catch(()=>[]),Promise.resolve(b).catch(()=>[])]),f=new Map,h=new Map;for(let a of c){if(!a?.id||!a?.prefix)continue;let b={id:a.id,apiType:"responses"===a.apiType?"responses":"chat",staticFormat:(0,g.ml)(a.baseUrl)};f.set(a.id,b),h.set(a.prefix,b)}let i=new Map;for(let a of e){if(!a?.providerAlias||!a?.id||"llm"!==(a.type||"llm"))continue;let b=h.get(a.providerAlias);b&&(0,g.K5)(a.reasoning)&&i.set(`${b.id}|${a.id}`,a.reasoning)}return{nodesById:f,prefixToNode:h,byModel:i}}let j={nodesById:new Map,prefixToNode:new Map,byModel:new Map};async function k(a=15e3){try{let b=await (0,e.PO)(h,i,a);b&&(j=b)}catch{}}function l(){(0,e.Y3)(h)}function m(a,b){let c=j.prefixToNode.get(a);if(!c)return null;let d=j.byModel.get(`${c.id}|${b}`);return d||("none"===c.staticFormat?{supported:!1,effort:null}:c.staticFormat?{supported:!0,effort:"qwen"===c.staticFormat?null:c.staticFormat}:null)}(0,f.xl)(function(a,b){var c,d,e,f;if(!a||!a.startsWith("openai-compatible-"))return null;let g=j.nodesById.get(a),h=j.byModel.get(`${a}|${b}`);return h?(c=h,d=g?.apiType||"chat",c.supported?"responses"===d?"openai-responses":"nested"===c.effort?"openai-nested":"openai":"none"):g?.staticFormat?(e=g.staticFormat,f=g.apiType,"none"===e?"none":"qwen"===e?"qwen":"responses"===f?"openai-responses":"nested"===e?"openai-nested":"openai"):null})},92770:(a,b,c)=>{"use strict";c.r(b),c.d(b,{DELETE:()=>V,GET:()=>R,POST:()=>T});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(63294),o=c(23628),p=c(95510),q=c(68393),r=c(15717),s=c(43904),t=c(85432),u=c(24424);let v=(0,g.promisify)(f.exec),w="switchboard",x=Promise.resolve(),y=a=>{let b=x.then(a,a);return x=b.catch(()=>{}),b},z=()=>k().join(m().homedir(),".pi","agent"),A=()=>k().join(z(),"models.json"),B=()=>k().join(z(),"settings.json"),C=()=>k().join(z(),"switchboard-backup.json"),D=()=>k().join(z(),"models.yml"),E=async()=>{try{let a="win32"===m().platform();return await v(a?"where pi":"which pi",{windowsHide:!0}),!0}catch{try{return await i().access(z()),!0}catch{return!1}}},F=async(a,b)=>{try{let b=await i().readFile(a,"utf-8"),c=JSON.parse(b);if(!c||"object"!=typeof c||Array.isArray(c))throw TypeError(`${a} must contain a JSON object`);return c}catch(a){if("ENOENT"===a.code)return b;throw a}},G=()=>F(A(),{providers:{}}),H=()=>F(B(),{}),I=async(a,b)=>{try{let b=await i().readFile(a,"utf-8"),c=""===b.trim()?{}:(0,n.qg)(b);if(!c||"object"!=typeof c||Array.isArray(c))throw TypeError(`${a} must contain a YAML object`);return c}catch(a){if("ENOENT"===a.code)return b;throw a}},J=()=>I(D(),{providers:{}}),K=a=>Array.isArray(a)?a.map(K):a&&"object"==typeof a?Object.fromEntries(Object.keys(a).sort().map(b=>[b,K(a[b])])):a,L=(a,b)=>JSON.stringify(K(a))===JSON.stringify(K(b)),M=a=>a&&"object"==typeof a&&"boolean"==typeof a.exists,N=a=>{if(null==a)return null;if(1===a.version&&"restored"===a.state)return a;if(1!==a.version||!M(a.provider)||!["defaultProvider","defaultModel","enabledModels"].every(b=>M(a.settings?.[b]))||!a.managedProvider||!a.managedSettings)throw Error("Unsupported or invalid Pi Switchboard backup file");return a},O=async(a,b,c,d)=>{await i().mkdir(z(),{recursive:!0}),await (0,p.M_)([{filePath:C(),content:d?JSON.stringify(d,null,2):null,secret:!0},{filePath:D(),content:(0,n.As)(a),secret:!0},{filePath:A(),content:JSON.stringify(b,null,2),secret:!0},{filePath:B(),content:JSON.stringify(c,null,2),secret:!0}])},P=(a,b,c)=>{("defaultProvider"!==c&&"defaultModel"!==c||a.defaultProvider===w)&&L(a[c],b?.managedSettings?.[c])&&(0,p.S3)(a,{[c]:b.settings?.[c]})};async function Q(){try{if(!await E())return e.NextResponse.json({installed:!1,settings:null,message:"Pi is not installed"});let[a,b,c]=await Promise.all([J(),G(),H()]),d=a?.providers?.[w]||null,f=d||b?.providers?.[w]||null,g=Array.isArray(d?.models)?d.models:Array.isArray(b?.providers?.[w]?.models)?b.providers[w].models:[],h=g.map(a=>a?.id).filter(Boolean),i=Object.fromEntries(g.filter(a=>a?.id&&a?.name).map(a=>[a.id,a.name])),j=(c.defaultProvider===w&&h.includes(c.defaultModel)?c.defaultModel:null)||h[0]||null,k=f?.baseUrl||null,l=!!(f&&(a=>{try{let b=new URL(String(a||"")).hostname.toLowerCase();return"localhost"===b||"0.0.0.0"===b||/^127(?:\.\d{1,3}){3}$/.test(b)}catch{return!1}})(k)),m=l&&h.length>0;return e.NextResponse.json({installed:!0,hasSwitchboard:l,settings:{baseUrl:k,model:j,defaultModel:j,models:h,pickerLabels:i,apiKeySet:!!f?.apiKey,provider:w,scopeConfigured:m},configPath:D(),settingsPath:B()})}catch(a){return console.log("Error checking pi settings:",a),e.NextResponse.json({error:"Failed to check pi settings"},{status:500})}}async function R(){return y(Q)}async function S(a){try{let b,c;try{b=await a.json()}catch{return e.NextResponse.json({error:"Invalid JSON body"},{status:400})}let{baseUrl:d,apiKey:f,model:g,models:h,defaultModel:i,pickerLabels:j}=b||{},[k,l,m,n]=await Promise.all([J(),G(),H(),F(C(),null)]),u=N(n),v=u?.state==="restored"?null:u,x=Array.isArray(k?.providers?.[w]?.models)?k.providers[w].models:Array.isArray(l?.providers?.[w]?.models)?l.providers[w].models:[],y=void 0===h?[g,...x.map(a=>a?.id)]:h,z=(0,o.rP)(y),A=void 0===j||j&&"object"==typeof j&&!Array.isArray(j)&&Object.values(j).every(a=>"string"==typeof a);if(!(0,o.uI)(d)||!(0,o.iU)(f)||0===z.length||!A)return e.NextResponse.json({error:"baseUrl, models, API key, or picker labels are invalid"},{status:400});let E=(c=String(d||"").replace(/\/+$/,"")).endsWith("/v1")?c:`${c}/v1`,I=f||"sk_switchboard",K=(0,o.F2)(i||g,z),L=(0,q.OU)(j,z);await (0,t.vA)().catch(()=>{});let M="function"==typeof r.Uv?await Promise.resolve((0,r.Uv)()).catch(()=>[]):[],P=new Map(M.map(a=>[a.name,a])),Q=(a,b=new Set)=>{try{let c=String(a||""),d=c.indexOf("/");if(d<=0){if(b.has(c))return null;b.add(c);let a=P.get(c);if(!a||!Array.isArray(a.models)||0===a.models.length)return null;let d=null;for(let c of a.models){let a=Q(String(c),b);if(a?.reasoning)return a;a&&!d&&(d=a)}return d}let e=c.slice(0,d),f=c.slice(d+1),g=(0,t.Kt)(e,f);if(g){let a=(0,s.nl)(e,f);return{reasoning:!0===g.supported,contextWindow:a.contextWindow||null}}let h=(0,s.nl)(e,f);return{reasoning:!0===h.reasoning,contextWindow:h.contextWindow||null}}catch{return null}},R=a=>{(!a.providers||"object"!=typeof a.providers||Array.isArray(a.providers))&&(a.providers={})};R(k),R(l);let S={baseUrl:E,api:"openai-completions",apiKey:I,authHeader:!0,compat:{supportsDeveloperRole:!1,supportsReasoningEffort:!0,supportsUsageInStreaming:!0},models:(0,o.L6)(z,x,L,Q)},T={...S,discovery:{type:"openai-models-list"}},U=v?.version===1?v:{version:1,state:"active",provider:(0,p.EA)(k.providers,[w])[w],legacyProvider:(0,p.EA)(l.providers,[w])[w],settings:(0,p.EA)(m,["defaultProvider","defaultModel","enabledModels"])};k.providers[w]=T,l.providers[w]=S,m.defaultProvider=w,m.defaultModel=K;let V=((a,b)=>{if(!Array.isArray(a)||0===a.length)return;let c=a.filter(a=>"string"!=typeof a||!a.startsWith(`${w}/`));if(0!==c.length)return[...c,...b]})(m.enabledModels,z.map(a=>`${w}/${a}`));return V?m.enabledModels=V:delete m.enabledModels,U.managedProvider=T,U.managedLegacyProvider=S,U.managedSettings={defaultProvider:w,defaultModel:K,enabledModels:m.enabledModels},await O(k,l,m,U),e.NextResponse.json({success:!0,message:`Pi configured with ${z.length} model${1===z.length?"":"s"}. ${K} is the default; use /model to switch.`,pickerLabels:Object.fromEntries(S.models.map(a=>[a.id,a.name])),configPath:D(),settingsPath:B()})}catch(a){return console.log("Error updating pi settings:",a),e.NextResponse.json({error:"Failed to update pi settings"},{status:500})}}async function T(a){return y(()=>S(a))}async function U(){try{let[a,b,c,d]=await Promise.all([J(),G(),H(),F(C(),null)]),f=N(d);if(f?.state==="restored")return e.NextResponse.json({success:!0,message:"No Switchboard Pi settings to reset"});let g=a?.providers?.[w],h=b?.providers?.[w],i=!!(g||h),j=c.defaultProvider===w||Array.isArray(c.enabledModels)&&c.enabledModels.some(a=>"string"==typeof a&&a.startsWith(`${w}/`));if(!f&&!i&&!j)return e.NextResponse.json({success:!0,message:"No Switchboard Pi settings to reset"});return g&&(!f?.managedProvider||L(g,f.managedProvider))&&(f?.version===1?(0,p.S3)(a.providers,{[w]:f.provider}):delete a.providers[w]),h&&(!f?.managedLegacyProvider||L(h,f.managedLegacyProvider))&&(f?.version===1?(0,p.S3)(b.providers,{[w]:f.legacyProvider??f.provider}):delete b.providers[w]),f?.version===1?(P(c,f,"defaultModel"),P(c,f,"defaultProvider"),P(c,f,"enabledModels")):c.defaultProvider===w&&(delete c.defaultProvider,delete c.defaultModel),!f&&Array.isArray(c.enabledModels)&&(c.enabledModels=c.enabledModels.filter(a=>"string"!=typeof a||!a.startsWith(`${w}/`)),0===c.enabledModels.length&&delete c.enabledModels),await O(a,b,c,{version:1,state:"restored"}),e.NextResponse.json({success:!0,message:"Switchboard provider removed and previous Pi model settings restored"})}catch(a){return console.log("Error resetting pi settings:",a),e.NextResponse.json({error:"Failed to reset pi settings"},{status:500})}}async function V(){return y(U)}(0,u.D)([R,T,V]),(0,d.A)(R,"0000291a9044cbb3819c333cefaa60f7f8effe9329",null),(0,d.A)(T,"40b6bc1c951859a39bbd150ae30f990c7b8e43cda5",null),(0,d.A)(V,"00fb56b6c22e52df0f0030cd69e93f42a049b75ab6",null)},95510:(a,b,c)=>{"use strict";c.d(b,{EA:()=>i,M_:()=>h,S3:()=>j,Yb:()=>g});var d=c(51455),e=c.n(d),f=c(57781);async function g(a,b,{secret:c=!1}={}){if(await (0,f.R)(a,b,c?{encoding:"utf-8",mode:384}:"utf-8"),c)try{await e().chmod(a,384)}catch{}}async function h(a){let b=await Promise.all(a.map(async({filePath:a})=>{try{return{exists:!0,value:await e().readFile(a)}}catch(a){if(a?.code==="ENOENT")return{exists:!1,value:null};throw a}})),c=async({filePath:a,content:b,secret:c=!1})=>{if(null!==b)return void await g(a,b,{secret:c});try{await e().unlink(a)}catch(a){if(a?.code!=="ENOENT")throw a}};try{for(let b of a)await c(b)}catch(e){let d=(await Promise.allSettled(a.map(({filePath:a,secret:d=!1},e)=>c({filePath:a,content:b[e].exists?b[e].value:null,secret:d})))).filter(a=>"rejected"===a.status);if(d.length>0)throw AggregateError([e,...d.map(a=>a.reason)],"Failed to replace CLI files and roll them back cleanly");throw e}}function i(a,b){return Object.fromEntries(b.map(b=>[b,{exists:Object.hasOwn(a,b),value:a[b]}]))}function j(a,b){for(let[c,d]of Object.entries(b||{}))d?.exists?a[c]=d.value:delete a[c]}},96487:()=>{}};
5
+ `}function u(a){let b=o(a,f),c=(0,d.Tp)(p(a,f));if(c.errors.length)throw Error(`Invalid Hermes YAML: ${c.errors[0].message}`);let e=q(c.getIn(["custom_providers"]));if(Array.isArray(e)){let a=e.filter(a=>a?.name!=="switchboard");b?.previousProvider&&a.push(b.previousProvider),a.length?c.setIn(["custom_providers"],a):c.deleteIn(["custom_providers"])}return"custom:switchboard"===q(c.getIn(["model","provider"]))&&(b?.previousModel?c.setIn(["model"],b.previousModel):c.deleteIn(["model"])),c.toString()}function v(a,{baseUrl:b,apiKey:c,models:d,defaultModel:e}){let f=i(d),g=j(e,f);return{...a,model:`switchboard/${g}`,provider:{...a.provider||{},switchboard:{npm:"@ai-sdk/openai-compatible",name:"Switchboard",options:{apiKey:c,baseURL:b},models:Object.fromEntries(f.map(a=>[a,{name:k(a)}]))}}}}function w(a,{baseUrl:b,apiKey:c,models:d,defaultModel:e}){let f=i(d),g=j(e,f),h=a.providers||{},l=a.models||{};return{providers:{...h,providers:{...h.providers||{},switchboard:{type:"openai-compatible",name:"Switchboard",baseUrl:b,apiKey:c,defaultModelId:g}}},models:{...l,providers:{...l.providers||{},switchboard:{provider:{name:"Switchboard",baseUrl:b,defaultModelId:g},models:Object.fromEntries(f.map(a=>[a,{id:a,name:k(a)}]))}}}}}function x(a,{models:b,defaultModel:c}){let d=i(b),e=j(c,d),f=Object.fromEntries(Object.entries(a?.modelConfigs?.modelDefinitions&&"object"==typeof a.modelConfigs.modelDefinitions?a.modelConfigs.modelDefinitions:{}).filter(([,a])=>a?.family!=="switchboard"));return{...a,model:{...a.model||{},name:e},experimental:{...a.experimental||{},dynamicModelConfiguration:!0},modelConfigs:{...a.modelConfigs||{},modelDefinitions:{...f,...Object.fromEntries(d.map(a=>[a,{displayName:`Switchboard \xb7 ${k(a)}`,family:"switchboard",tier:"custom",isPreview:!1,isVisible:!0,features:{thinking:!0,multimodalToolUse:!0}}]))}}}}},47293:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});let d=new Uint8Array(16);var e=c(50122);let f=function(a,b,c){return b||a||!crypto.randomUUID?function(a,b,c){let f=(a=a||{}).random??a.rng?.()??crypto.getRandomValues(d);if(f.length<16)throw Error("Random bytes length must be >= 16");if(f[6]=15&f[6]|64,f[8]=63&f[8]|128,b){if((c=c||0)<0||c+16>b.length)throw RangeError(`UUID byte range ${c}:${c+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[c+a]=f[a];return b}return(0,e.k)(f)}(a,b,c):crypto.randomUUID()}},50122:(a,b,c)=>{"use strict";c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}},57781:(a,b,c)=>{"use strict";c.d(b,{R:()=>h});var d=c(51455),e=c.n(d),f=c(76760),g=c.n(f);async function h(a,b,c="utf-8"){let d=g().dirname(a);await e().mkdir(d,{recursive:!0});let f=g().join(d,`.${g().basename(a)}.sb-tmp-${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`);try{await e().writeFile(f,b,c);try{let a=await e().open(f,"r+");try{await a.sync()}finally{await a.close()}}catch{}await e().rename(f,a)}catch(a){try{await e().unlink(f)}catch{}throw a}}},68393:(a,b,c)=>{"use strict";c.d(b,{AD:()=>x,El:()=>v,JF:()=>r,LU:()=>u,Ng:()=>o,OU:()=>t,Ro:()=>h,_1:()=>s,ao:()=>l,at:()=>B,i6:()=>A,iO:()=>w,s8:()=>z,wN:()=>y});let d=Object.freeze({PASS_THROUGH:"pass-through",PROXY:"proxy",FULL_CATALOG:"full-catalog"}),e="x-switchboard-claude-mode",f="x-switchboard-claude-models",g="x-switchboard-claude-labels",h="x-switchboard-key",i="claude-switchboard-v1/",j=/^(?:claude|anthropic)-[a-z0-9][a-z0-9._-]*$/i,k=Object.freeze(["ANTHROPIC_DEFAULT_OPUS_MODEL","ANTHROPIC_DEFAULT_OPUS_MODEL_NAME","ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION","ANTHROPIC_DEFAULT_SONNET_MODEL","ANTHROPIC_DEFAULT_SONNET_MODEL_NAME","ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION","ANTHROPIC_DEFAULT_FABLE_MODEL","ANTHROPIC_DEFAULT_FABLE_MODEL_NAME","ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION","ANTHROPIC_DEFAULT_HAIKU_MODEL","ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME","ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION"]);function l(a){let b=String(a||"");if(!b)return"";let c=0x811c9dc5;for(let a=0;a<b.length;a+=1)c^=b.charCodeAt(a),c=Math.imul(c,0x1000193);return(c>>>0).toString(16).padStart(8,"0")}let m=a=>a.replace(/(^|-)([a-z])/g,(a,b,c)=>`${b}${c.toUpperCase()}`);function n(a,b){if("string"!=typeof a)return"";for(let c of a.split(/\r?\n/)){let a=c.indexOf(":");if(!(a<0)&&c.slice(0,a).trim().toLowerCase()===b)return c.slice(a+1).trim()}return""}function o(a){return"string"==typeof a&&j.test(a)}function p(a){if(!Array.isArray(a))throw TypeError("Claude catalog models must be an array.");let b=[],c=new Set;for(let d of a){if("string"!=typeof d)throw TypeError("Each Claude catalog model must be a string.");let a=d.trim();if(a){if(/\r|\n/.test(a))throw TypeError("Claude catalog model IDs cannot contain newlines.");c.has(a)||(c.add(a),b.push(a))}}return b}function q(a){if("string"!=typeof a||!a.trim())return[];try{return p(JSON.parse(decodeURIComponent(a)))}catch{return[]}}function r(a){return q(n(a,f))}function s(a){return q(a?.get(f))}function t(a,b){if(!a||"object"!=typeof a||Array.isArray(a))return{};let c=new Set(p(b)),d={};for(let[b,e]of Object.entries(a)){if(!c.has(b))continue;let a=String(e||"").trim().replace(/[·•—–]/g," | ").replace(/[\r\n]+/g," ").replace(/\s+/g," ");a&&(d[b]=a.slice(0,48))}return d}function u(a){var b=a?.get(g);if("string"!=typeof b||!b.trim())return{};try{let a=JSON.parse(decodeURIComponent(b));return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}catch{return{}}}function v(a){let b=String(a||"").trim();if(!b)throw TypeError("A Switchboard model ID is required.");let c=b.split("/").map(encodeURIComponent).join("/");return`${i}${c}`}function w(a){if("string"!=typeof a||!a.startsWith(i))return null;let b=a.slice(i.length);if(!b)return null;try{let c=b.split("/").map(decodeURIComponent).join("/");return v(c)===a?c:null}catch{return null}}function x({baseUrl:a,gatewayKey:b,models:c=[],pickerLabels:h={}}){let i=String(a||"").trim().replace(/\/+$/,""),j=String(b||"").trim();if(!i)throw TypeError("A Switchboard endpoint is required.");if(!j)throw TypeError("A Switchboard API key is required.");let l=p(c),n=t(h,l),o=function(a=[],b={}){let c=p(a),h=[`${m(e)}: ${d.FULL_CATALOG}`,`${m(f)}: ${encodeURIComponent(JSON.stringify(p(c)))}`],i=function(a,b={}){let c=t(b,a);return 0===Object.keys(c).length?"":encodeURIComponent(JSON.stringify(c))}(c,b);return i&&h.push(`${m(g)}: ${i}`),h.join("\n")}(l,n);if(new TextEncoder().encode(o).byteLength>7168)throw TypeError("This catalog is too large for Claude Code request headers. Remove models or shorten picker labels.");let q={ANTHROPIC_API_KEY:"",ANTHROPIC_AUTH_TOKEN:j,ANTHROPIC_BASE_URL:i.endsWith("/v1")?i:`${i}/v1`,ANTHROPIC_CUSTOM_HEADERS:o,ANTHROPIC_CUSTOM_MODEL_OPTION:"",CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY:"1"};for(let a of k)q[a]="";return{env:q,pickerLabels:n}}function y(a){return n(a,e).toLowerCase()===d.PASS_THROUGH}function z(a){let b=n(a,e).toLowerCase();return b===d.FULL_CATALOG||b===d.PROXY}function A(a){return a?.get(e)?.trim().toLowerCase()===d.PASS_THROUGH}function B(a){let b=a?.get(e)?.trim().toLowerCase();return b===d.FULL_CATALOG||b===d.PROXY}},78335:()=>{},85432:(a,b,c)=>{"use strict";c.d(b,{Kt:()=>m,MH:()=>l,vA:()=>k});var d=c(15717),e=c(19978),f=c(94454),g=c(29696);let h="compatible-reasoning:snapshot";async function i(){let a="function"==typeof d.Fh?(0,d.Fh)({type:"openai-compatible"}):Promise.resolve([]),b="function"==typeof d.uv?(0,d.uv)():Promise.resolve([]),[c,e]=await Promise.all([Promise.resolve(a).catch(()=>[]),Promise.resolve(b).catch(()=>[])]),f=new Map,h=new Map;for(let a of c){if(!a?.id||!a?.prefix)continue;let b={id:a.id,apiType:"responses"===a.apiType?"responses":"chat",staticFormat:(0,g.ml)(a.baseUrl)};f.set(a.id,b),h.set(a.prefix,b)}let i=new Map;for(let a of e){if(!a?.providerAlias||!a?.id||"llm"!==(a.type||"llm"))continue;let b=h.get(a.providerAlias);b&&(0,g.K5)(a.reasoning)&&i.set(`${b.id}|${a.id}`,a.reasoning)}return{nodesById:f,prefixToNode:h,byModel:i}}let j={nodesById:new Map,prefixToNode:new Map,byModel:new Map};async function k(a=15e3){try{let b=await (0,e.PO)(h,i,a);b&&(j=b)}catch{}}function l(){(0,e.Y3)(h)}function m(a,b){let c=j.prefixToNode.get(a);if(!c)return null;let d=j.byModel.get(`${c.id}|${b}`);return d||("none"===c.staticFormat?{supported:!1,effort:null}:c.staticFormat?{supported:!0,effort:"qwen"===c.staticFormat?null:c.staticFormat}:null)}(0,f.xl)(function(a,b){var c,d,e,f;if(!a||!a.startsWith("openai-compatible-"))return null;let g=j.nodesById.get(a),h=j.byModel.get(`${a}|${b}`);return h?(c=h,d=g?.apiType||"chat",c.supported?"responses"===d?"openai-responses":"nested"===c.effort?"openai-nested":"openai":"none"):g?.staticFormat?(e=g.staticFormat,f=g.apiType,"none"===e?"none":"qwen"===e?"qwen":"responses"===f?"openai-responses":"nested"===e?"openai-nested":"openai"):null})},92770:(a,b,c)=>{"use strict";c.r(b),c.d(b,{DELETE:()=>V,GET:()=>R,POST:()=>T});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(63294),o=c(23628),p=c(95510),q=c(68393),r=c(15717),s=c(43904),t=c(85432),u=c(24424);let v=(0,g.promisify)(f.exec),w="switchboard",x=Promise.resolve(),y=a=>{let b=x.then(a,a);return x=b.catch(()=>{}),b},z=()=>k().join(m().homedir(),".pi","agent"),A=()=>k().join(z(),"models.json"),B=()=>k().join(z(),"settings.json"),C=()=>k().join(z(),"switchboard-backup.json"),D=()=>k().join(z(),"models.yml"),E=async()=>{try{let a="win32"===m().platform();return await v(a?"where pi":"which pi",{windowsHide:!0}),!0}catch{try{return await i().access(z()),!0}catch{return!1}}},F=async(a,b)=>{try{let b=await i().readFile(a,"utf-8"),c=JSON.parse(b);if(!c||"object"!=typeof c||Array.isArray(c))throw TypeError(`${a} must contain a JSON object`);return c}catch(a){if("ENOENT"===a.code)return b;throw a}},G=()=>F(A(),{providers:{}}),H=()=>F(B(),{}),I=async(a,b)=>{try{let b=await i().readFile(a,"utf-8"),c=""===b.trim()?{}:(0,n.qg)(b);if(!c||"object"!=typeof c||Array.isArray(c))throw TypeError(`${a} must contain a YAML object`);return c}catch(a){if("ENOENT"===a.code)return b;throw a}},J=()=>I(D(),{providers:{}}),K=a=>Array.isArray(a)?a.map(K):a&&"object"==typeof a?Object.fromEntries(Object.keys(a).sort().map(b=>[b,K(a[b])])):a,L=(a,b)=>JSON.stringify(K(a))===JSON.stringify(K(b)),M=a=>a&&"object"==typeof a&&"boolean"==typeof a.exists,N=a=>{if(null==a)return null;if(1===a.version&&"restored"===a.state)return a;if(1!==a.version||!M(a.provider)||!["defaultProvider","defaultModel","enabledModels"].every(b=>M(a.settings?.[b]))||!a.managedProvider||!a.managedSettings)throw Error("Unsupported or invalid Pi Switchboard backup file");return a},O=async(a,b,c,d)=>{await i().mkdir(z(),{recursive:!0}),await (0,p.M_)([{filePath:C(),content:d?JSON.stringify(d,null,2):null,secret:!0},{filePath:D(),content:(0,n.As)(a),secret:!0},{filePath:A(),content:JSON.stringify(b,null,2),secret:!0},{filePath:B(),content:JSON.stringify(c,null,2),secret:!0}])},P=(a,b,c)=>{("defaultProvider"!==c&&"defaultModel"!==c||a.defaultProvider===w)&&L(a[c],b?.managedSettings?.[c])&&(0,p.S3)(a,{[c]:b.settings?.[c]})};async function Q(){try{if(!await E())return e.NextResponse.json({installed:!1,settings:null,message:"Pi is not installed"});let[a,b,c]=await Promise.all([J(),G(),H()]),d=a?.providers?.[w]||null,f=d||b?.providers?.[w]||null,g=Array.isArray(d?.models)?d.models:Array.isArray(b?.providers?.[w]?.models)?b.providers[w].models:[],h=g.map(a=>a?.id).filter(Boolean),i=Object.fromEntries(g.filter(a=>a?.id&&a?.name).map(a=>[a.id,a.name])),j=(c.defaultProvider===w&&h.includes(c.defaultModel)?c.defaultModel:null)||h[0]||null,k=f?.baseUrl||null,l=!!(f&&(a=>{try{let b=new URL(String(a||"")).hostname.toLowerCase();return"localhost"===b||"0.0.0.0"===b||/^127(?:\.\d{1,3}){3}$/.test(b)}catch{return!1}})(k)),m=l&&h.length>0;return e.NextResponse.json({installed:!0,hasSwitchboard:l,settings:{baseUrl:k,model:j,defaultModel:j,models:h,pickerLabels:i,apiKeySet:!!f?.apiKey,provider:w,scopeConfigured:m},configPath:D(),settingsPath:B()})}catch(a){return console.log("Error checking pi settings:",a),e.NextResponse.json({error:"Failed to check pi settings"},{status:500})}}async function R(){return y(Q)}async function S(a){try{let b,c;try{b=await a.json()}catch{return e.NextResponse.json({error:"Invalid JSON body"},{status:400})}let{baseUrl:d,apiKey:f,model:g,models:h,defaultModel:i,pickerLabels:j}=b||{},[k,l,m,n]=await Promise.all([J(),G(),H(),F(C(),null)]),u=N(n),v=u?.state==="restored"?null:u,x=Array.isArray(k?.providers?.[w]?.models)?k.providers[w].models:Array.isArray(l?.providers?.[w]?.models)?l.providers[w].models:[],y=void 0===h?[g,...x.map(a=>a?.id)]:h,z=(0,o.rP)(y),A=void 0===j||j&&"object"==typeof j&&!Array.isArray(j)&&Object.values(j).every(a=>"string"==typeof a);if(!(0,o.uI)(d)||!(0,o.iU)(f)||0===z.length||!A)return e.NextResponse.json({error:"baseUrl, models, API key, or picker labels are invalid"},{status:400});let E=(c=String(d||"").replace(/\/+$/,"")).endsWith("/v1")?c:`${c}/v1`,I=f||"sk_switchboard",K=(0,o.F2)(i||g,z),L=(0,q.OU)(j,z);await (0,t.vA)().catch(()=>{});let M="function"==typeof r.Uv?await Promise.resolve((0,r.Uv)()).catch(()=>[]):[],P=new Map(M.map(a=>[a.name,a])),Q=(a,b=new Set)=>{try{let c=String(a||""),d=c.indexOf("/");if(d<=0){if(b.has(c))return null;b.add(c);let a=P.get(c);if(!a||!Array.isArray(a.models)||0===a.models.length)return null;let d=null;for(let c of a.models){let a=Q(String(c),b);if(a?.reasoning)return a;a&&!d&&(d=a)}return d}let e=c.slice(0,d),f=c.slice(d+1),g=(0,t.Kt)(e,f);if(g){let a=(0,s.nl)(e,f);return{reasoning:!0===g.supported,contextWindow:a.contextWindow||null}}let h=(0,s.nl)(e,f);return{reasoning:!0===h.reasoning,contextWindow:h.contextWindow||null}}catch{return null}},R=a=>{(!a.providers||"object"!=typeof a.providers||Array.isArray(a.providers))&&(a.providers={})};R(k),R(l);let S={baseUrl:E,api:"openai-completions",apiKey:I,authHeader:!0,compat:{supportsDeveloperRole:!1,supportsReasoningEffort:!0,supportsUsageInStreaming:!0},models:(0,o.L6)(z,x,L,Q)},T={...S,discovery:{type:"openai-models-list"}},U=v?.version===1?v:{version:1,state:"active",provider:(0,p.EA)(k.providers,[w])[w],legacyProvider:(0,p.EA)(l.providers,[w])[w],settings:(0,p.EA)(m,["defaultProvider","defaultModel","enabledModels"])};k.providers[w]=T,l.providers[w]=S,m.defaultProvider=w,m.defaultModel=K;let V=((a,b)=>{if(!Array.isArray(a)||0===a.length)return;let c=a.filter(a=>"string"!=typeof a||!a.startsWith(`${w}/`));if(0!==c.length)return[...c,...b]})(m.enabledModels,z.map(a=>`${w}/${a}`));return V?m.enabledModels=V:delete m.enabledModels,U.managedProvider=T,U.managedLegacyProvider=S,U.managedSettings={defaultProvider:w,defaultModel:K,enabledModels:m.enabledModels},await O(k,l,m,U),e.NextResponse.json({success:!0,message:`Pi configured with ${z.length} model${1===z.length?"":"s"}. ${K} is the default; use /model to switch.`,pickerLabels:Object.fromEntries(S.models.map(a=>[a.id,a.name])),configPath:D(),settingsPath:B()})}catch(a){return console.log("Error updating pi settings:",a),e.NextResponse.json({error:"Failed to update pi settings"},{status:500})}}async function T(a){return y(()=>S(a))}async function U(){try{let[a,b,c,d]=await Promise.all([J(),G(),H(),F(C(),null)]),f=N(d);if(f?.state==="restored")return e.NextResponse.json({success:!0,message:"No Switchboard Pi settings to reset"});let g=a?.providers?.[w],h=b?.providers?.[w],i=!!(g||h),j=c.defaultProvider===w||Array.isArray(c.enabledModels)&&c.enabledModels.some(a=>"string"==typeof a&&a.startsWith(`${w}/`));if(!f&&!i&&!j)return e.NextResponse.json({success:!0,message:"No Switchboard Pi settings to reset"});return g&&(!f?.managedProvider||L(g,f.managedProvider))&&(f?.version===1?(0,p.S3)(a.providers,{[w]:f.provider}):delete a.providers[w]),h&&(!f?.managedLegacyProvider||L(h,f.managedLegacyProvider))&&(f?.version===1?(0,p.S3)(b.providers,{[w]:f.legacyProvider??f.provider}):delete b.providers[w]),f?.version===1?(P(c,f,"defaultModel"),P(c,f,"defaultProvider"),P(c,f,"enabledModels")):c.defaultProvider===w&&(delete c.defaultProvider,delete c.defaultModel),!f&&Array.isArray(c.enabledModels)&&(c.enabledModels=c.enabledModels.filter(a=>"string"!=typeof a||!a.startsWith(`${w}/`)),0===c.enabledModels.length&&delete c.enabledModels),await O(a,b,c,{version:1,state:"restored"}),e.NextResponse.json({success:!0,message:"Switchboard provider removed and previous Pi model settings restored"})}catch(a){return console.log("Error resetting pi settings:",a),e.NextResponse.json({error:"Failed to reset pi settings"},{status:500})}}async function V(){return y(U)}(0,u.D)([R,T,V]),(0,d.A)(R,"0089d8297f2da370279da3055017d03a4ee89b6bc2",null),(0,d.A)(T,"40658074b119d77c679545a1bf839ce05d9e95db2e",null),(0,d.A)(V,"00b601eb4ce87c0fbdaf554b6c79884ffa8906047d",null)},95510:(a,b,c)=>{"use strict";c.d(b,{EA:()=>i,M_:()=>h,S3:()=>j,Yb:()=>g});var d=c(51455),e=c.n(d),f=c(57781);async function g(a,b,{secret:c=!1}={}){if(await (0,f.R)(a,b,c?{encoding:"utf-8",mode:384}:"utf-8"),c)try{await e().chmod(a,384)}catch{}}async function h(a){let b=await Promise.all(a.map(async({filePath:a})=>{try{return{exists:!0,value:await e().readFile(a)}}catch(a){if(a?.code==="ENOENT")return{exists:!1,value:null};throw a}})),c=async({filePath:a,content:b,secret:c=!1})=>{if(null!==b)return void await g(a,b,{secret:c});try{await e().unlink(a)}catch(a){if(a?.code!=="ENOENT")throw a}};try{for(let b of a)await c(b)}catch(e){let d=(await Promise.allSettled(a.map(({filePath:a,secret:d=!1},e)=>c({filePath:a,content:b[e].exists?b[e].value:null,secret:d})))).filter(a=>"rejected"===a.status);if(d.length>0)throw AggregateError([e,...d.map(a=>a.reason)],"Failed to replace CLI files and roll them back cleanly");throw e}}function i(a,b){return Object.fromEntries(b.map(b=>[b,{exists:Object.hasOwn(a,b),value:a[b]}]))}function j(a,b){for(let[c,d]of Object.entries(b||{}))d?.exists?a[c]=d.value:delete a[c]}},96487:()=>{}};
@@ -1 +1 @@
1
- "use strict";exports.id=869,exports.ids=[869],exports.modules={4489:(a,b,c)=>{c.d(b,{ki:()=>f}),c(29696);let d=new Set(["chat","text","language","model"]),e=new Map(["imageToText","webSearch","webFetch"].map(a=>[a.toLowerCase(),a]));function f(a){if("string"!=typeof a||!a)return a;let b=a.toLowerCase();return d.has(b)?"llm":e.get(b)||b}},27335:(a,b,c)=>{c.d(b,{Xg:()=>r,vq:()=>f.vq,fZ:()=>j,cY:()=>t,ez:()=>n,ux:()=>m,OA:()=>o,kt:()=>p,KC:()=>s,SM:()=>i});var d=c(4630),e=c(39698),f=c(45350),g=c(6595);let h="-review";function i(a){return f.vq[a]||[]}function j(a){let b=f.vq[a];return b?.[0]?.id||null}let k=new Set(["kr","kiro"]);function l(a,b,c){if(!a)return;let d=a.find(a=>a.id===b);if(d)return d;if(!k.has(c))return;let e=(0,g.Kq)(b);if(e!==b)return a.find(a=>a.id===e)}function m(a,b){let c=f.vq[a];return c?(0,g.gr)(l(c,b,a)):null}function n(a,b){let c=f.vq[a];return c?(0,g.ec)(l(c,b,a)):null}function o(a,b){let c=f.vq[a];if(!c)return null;let d=l(c,b,a);return d?.kind||d?.type||null}function p(a,b){let c="string"==typeof b?b.match(/\([^()]+\)\s*$/):null,d=c?c[0]:"",e=d?b.slice(0,c.index).trim():b,g=l(f.vq[a],e,a);return g?.upstreamModelId?g.upstreamModelId+d:g?.id?g.id+d:"cx"===a&&"string"==typeof e&&e.endsWith(h)?e.slice(0,-h.length)+d:e+d}let q=Object.fromEntries(e.A.filter(a=>a.alias&&a.alias!==a.id).map(a=>[a.id,a.alias])),r=Object.fromEntries(Object.keys(d.xq).map(a=>[a,q[a]||a]));function s(a){let b=r[a]||a;return f.vq[b]||[]}function t(a,b){return(0,g.g5)(l(f.vq[a],b,a))}},29696:(a,b,c)=>{function d(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"boolean"==typeof a.supported&&(null==a.effort||"flat"===a.effort||"nested"===a.effort)}c.d(b,{K5:()=>d,ml:()=>f});let e=[{suffix:"aliyuncs.com",format:"qwen"},{suffix:"opencode.ai",format:"flat"},{suffix:"api.surplusintelligence.ai",format:"flat"},{suffix:"inference-api.nousresearch.com",format:"none"}];function f(a){let b="";try{b=new URL(String(a||"")).hostname.toLowerCase()}catch{return null}if(!b)return null;for(let a of e)if(b===a.suffix||b.endsWith(`.${a.suffix}`))return a.format;return null}},30869:(a,b,c)=>{c.d(b,{UY:()=>h,eh:()=>f.eh,fg:()=>e.fg,h0:()=>g,oc:()=>i});var d=c(39006),e=c(40615),f=c(81329);d.rE;let g={npmPackageName:"switchboard-router",installCmd:"npm i -g switchboard-router",installCmdLatest:"npm i -g switchboard-router@latest --prefer-online",shutdownCountdownSec:3,exitDelayMs:2200,statusPort:20129,statusPollIntervalMs:1e3,statusLogTailLines:8,installRetries:3,installRetryDelayMs:5e3,lingerAfterDoneMs:3e4,waitForExitMinMs:5e3,waitForExitMaxMs:2e4,waitForExitCheckMs:500,statusStartupTimeoutMs:2e3,appPort:20128},h={maxLines:200,pollIntervalMs:1e3},i={tickIntervalMs:6e4,pingLeadMs:5e3,refreshAheadMs:3e5,failureCooldownMs:9e5,providers:{claude:{settingsKey:"claudeAutoPing",quotaKey:"session (5h)",pingModel:"claude-haiku-4-5-20251001",pingText:"hi",pingMaxTokens:1},codex:{settingsKey:"codexAutoPing",quotaKey:"session",pingWhenResetAtSlides:!0,resetAtDriftMs:3e4,minPingIntervalMs:6e5,skipWhenBlockingQuotaExhausted:!0,pingModel:"gpt-5.5",pingText:"hi",pingInstructions:"Reply with OK.",pingReasoningEffort:"none"}}}},39006:a=>{a.exports=JSON.parse('{"UU":"switchboard-app","rE":"0.9.49"}')},40615:(a,b,c)=>{c.d(b,{Q2:()=>s,js:()=>w,DI:()=>n,fg:()=>k,Pd:()=>o,IS:()=>h,nJ:()=>i,zN:()=>j,JH:()=>m,jO:()=>y,wb:()=>x,br:()=>l,wG:()=>v,zt:()=>t,gb:()=>q,gC:()=>r,mq:()=>p,rs:()=>u});var d=c(39698);let e="⚠️ Risk Notice: This provider uses a subscription/OAuth session not officially licensed for proxy/router use. Account may be restricted or banned. Use at your own risk.";Object.fromEntries(d.A.filter(a=>a.display).map(a=>{let b;return[a.id,"RISK_NOTICE"===(b=a.display).deprecationNotice?{...b,deprecationNotice:e}:b]}));let f=["serviceKinds","ttsConfig","sttConfig","embeddingConfig","imageConfig","imageToTextConfig","videoConfig","musicConfig","searchViaChat","searchConfig","fetchConfig","modelsFetcher","mediaPriority","hiddenKinds"],g=a=>Object.fromEntries(d.A.filter(b=>b.category===a).map(a=>[a.id,function(a){let b={};for(let c of(a.media&&Object.assign(b,a.media),f))void 0!==a[c]&&(b[c]=a[c]);let c={...a.display||{}};return"RISK_NOTICE"===c.deprecationNotice&&(c.deprecationNotice=e),{...c,id:a.id,alias:a.uiAlias||a.alias,...a.aliases?.length?{aliases:a.aliases}:{},...a.hidden?{hidden:!0}:{},...b,...void 0!==a.priority?{priority:a.priority}:{},...a.hasFree?{hasFree:!0}:{},...a.thinkingConfig?{thinkingConfig:a.thinkingConfig}:{},...a.regions?{regions:a.regions,defaultRegion:a.defaultRegion}:{},...a.hasProviderSpecificData?{hasProviderSpecificData:!0}:{},...a.noAuth?{noAuth:!0}:{},...a.passthroughModels?{passthroughModels:!0}:{},...a.hasOAuth?{hasOAuth:!0}:{},...a.authModes?{authModes:a.authModes}:{},...a.authType?{authType:a.authType}:{},...a.authHint?{authHint:a.authHint}:{}}}(a)])),h=g("free"),i=g("freeTier"),j=g("oauth"),k=g("apikey"),l=g("webCookie"),m="openai-compatible-",n="anthropic-compatible-",o="custom-embedding-";function p(a){return"string"==typeof a&&a.startsWith(m)}function q(a){return"string"==typeof a&&a.startsWith(n)}function r(a){return"string"==typeof a&&a.startsWith(o)}let s={...h,...i,...j,...k,...l};function t(a){for(let b of Object.values(s))if(b.alias===a||b.id===a||b.aliases?.includes(a))return b;return null}function u(a){let b=t(a);return b?.id||a}function v(a){let b=s[a];return b?.alias||a}let w=Object.values(s).reduce((a,b)=>(a[b.alias]=b.id,a),{});Object.values(s).reduce((a,b)=>(a[b.id]=b.alias,a),{});let x=d.A.filter(a=>a.features?.usage).map(a=>a.id),y=d.A.filter(a=>a.features?.usageApikey).map(a=>a.id)},81329:(a,b,c)=>{c.d(b,{CP:()=>h,PROVIDER_MODELS:()=>d.vq,Xg:()=>d.Xg,eh:()=>g});var d=c(27335),e=c(40615),f=c(4489);Object.entries(e.Q2).filter(([,a])=>a.passthroughModels).map(([a])=>a);let g=Object.entries(d.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name}))),h=(a,b=null)=>{let c=a?.kind||a?.type||b;return c?(0,f.ki)(c):c}}};
1
+ "use strict";exports.id=869,exports.ids=[869],exports.modules={4489:(a,b,c)=>{c.d(b,{ki:()=>f}),c(29696);let d=new Set(["chat","text","language","model"]),e=new Map(["imageToText","webSearch","webFetch"].map(a=>[a.toLowerCase(),a]));function f(a){if("string"!=typeof a||!a)return a;let b=a.toLowerCase();return d.has(b)?"llm":e.get(b)||b}},27335:(a,b,c)=>{c.d(b,{Xg:()=>r,vq:()=>f.vq,fZ:()=>j,cY:()=>t,ez:()=>n,ux:()=>m,OA:()=>o,kt:()=>p,KC:()=>s,SM:()=>i});var d=c(4630),e=c(39698),f=c(45350),g=c(6595);let h="-review";function i(a){return f.vq[a]||[]}function j(a){let b=f.vq[a];return b?.[0]?.id||null}let k=new Set(["kr","kiro"]);function l(a,b,c){if(!a)return;let d=a.find(a=>a.id===b);if(d)return d;if(!k.has(c))return;let e=(0,g.Kq)(b);if(e!==b)return a.find(a=>a.id===e)}function m(a,b){let c=f.vq[a];return c?(0,g.gr)(l(c,b,a)):null}function n(a,b){let c=f.vq[a];return c?(0,g.ec)(l(c,b,a)):null}function o(a,b){let c=f.vq[a];if(!c)return null;let d=l(c,b,a);return d?.kind||d?.type||null}function p(a,b){let c="string"==typeof b?b.match(/\([^()]+\)\s*$/):null,d=c?c[0]:"",e=d?b.slice(0,c.index).trim():b,g=l(f.vq[a],e,a);return g?.upstreamModelId?g.upstreamModelId+d:g?.id?g.id+d:"cx"===a&&"string"==typeof e&&e.endsWith(h)?e.slice(0,-h.length)+d:e+d}let q=Object.fromEntries(e.A.filter(a=>a.alias&&a.alias!==a.id).map(a=>[a.id,a.alias])),r=Object.fromEntries(Object.keys(d.xq).map(a=>[a,q[a]||a]));function s(a){let b=r[a]||a;return f.vq[b]||[]}function t(a,b){return(0,g.g5)(l(f.vq[a],b,a))}},29696:(a,b,c)=>{function d(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"boolean"==typeof a.supported&&(null==a.effort||"flat"===a.effort||"nested"===a.effort)}c.d(b,{K5:()=>d,ml:()=>f});let e=[{suffix:"aliyuncs.com",format:"qwen"},{suffix:"opencode.ai",format:"flat"},{suffix:"api.surplusintelligence.ai",format:"flat"},{suffix:"inference-api.nousresearch.com",format:"none"}];function f(a){let b="";try{b=new URL(String(a||"")).hostname.toLowerCase()}catch{return null}if(!b)return null;for(let a of e)if(b===a.suffix||b.endsWith(`.${a.suffix}`))return a.format;return null}},30869:(a,b,c)=>{c.d(b,{UY:()=>h,eh:()=>f.eh,fg:()=>e.fg,h0:()=>g,oc:()=>i});var d=c(39006),e=c(40615),f=c(81329);d.rE;let g={npmPackageName:"switchboard-router",installCmd:"npm i -g switchboard-router",installCmdLatest:"npm i -g switchboard-router@latest --prefer-online",shutdownCountdownSec:3,exitDelayMs:2200,statusPort:20129,statusPollIntervalMs:1e3,statusLogTailLines:8,installRetries:3,installRetryDelayMs:5e3,lingerAfterDoneMs:3e4,waitForExitMinMs:5e3,waitForExitMaxMs:2e4,waitForExitCheckMs:500,statusStartupTimeoutMs:2e3,appPort:20128},h={maxLines:200,pollIntervalMs:1e3},i={tickIntervalMs:6e4,pingLeadMs:5e3,refreshAheadMs:3e5,failureCooldownMs:9e5,providers:{claude:{settingsKey:"claudeAutoPing",quotaKey:"session (5h)",pingModel:"claude-haiku-4-5-20251001",pingText:"hi",pingMaxTokens:1},codex:{settingsKey:"codexAutoPing",quotaKey:"session",pingWhenResetAtSlides:!0,resetAtDriftMs:3e4,minPingIntervalMs:6e5,skipWhenBlockingQuotaExhausted:!0,pingModel:"gpt-5.5",pingText:"hi",pingInstructions:"Reply with OK.",pingReasoningEffort:"none"}}}},39006:a=>{a.exports=JSON.parse('{"UU":"switchboard-app","rE":"0.9.50"}')},40615:(a,b,c)=>{c.d(b,{Q2:()=>s,js:()=>w,DI:()=>n,fg:()=>k,Pd:()=>o,IS:()=>h,nJ:()=>i,zN:()=>j,JH:()=>m,jO:()=>y,wb:()=>x,br:()=>l,wG:()=>v,zt:()=>t,gb:()=>q,gC:()=>r,mq:()=>p,rs:()=>u});var d=c(39698);let e="⚠️ Risk Notice: This provider uses a subscription/OAuth session not officially licensed for proxy/router use. Account may be restricted or banned. Use at your own risk.";Object.fromEntries(d.A.filter(a=>a.display).map(a=>{let b;return[a.id,"RISK_NOTICE"===(b=a.display).deprecationNotice?{...b,deprecationNotice:e}:b]}));let f=["serviceKinds","ttsConfig","sttConfig","embeddingConfig","imageConfig","imageToTextConfig","videoConfig","musicConfig","searchViaChat","searchConfig","fetchConfig","modelsFetcher","mediaPriority","hiddenKinds"],g=a=>Object.fromEntries(d.A.filter(b=>b.category===a).map(a=>[a.id,function(a){let b={};for(let c of(a.media&&Object.assign(b,a.media),f))void 0!==a[c]&&(b[c]=a[c]);let c={...a.display||{}};return"RISK_NOTICE"===c.deprecationNotice&&(c.deprecationNotice=e),{...c,id:a.id,alias:a.uiAlias||a.alias,...a.aliases?.length?{aliases:a.aliases}:{},...a.hidden?{hidden:!0}:{},...b,...void 0!==a.priority?{priority:a.priority}:{},...a.hasFree?{hasFree:!0}:{},...a.thinkingConfig?{thinkingConfig:a.thinkingConfig}:{},...a.regions?{regions:a.regions,defaultRegion:a.defaultRegion}:{},...a.hasProviderSpecificData?{hasProviderSpecificData:!0}:{},...a.noAuth?{noAuth:!0}:{},...a.passthroughModels?{passthroughModels:!0}:{},...a.hasOAuth?{hasOAuth:!0}:{},...a.authModes?{authModes:a.authModes}:{},...a.authType?{authType:a.authType}:{},...a.authHint?{authHint:a.authHint}:{}}}(a)])),h=g("free"),i=g("freeTier"),j=g("oauth"),k=g("apikey"),l=g("webCookie"),m="openai-compatible-",n="anthropic-compatible-",o="custom-embedding-";function p(a){return"string"==typeof a&&a.startsWith(m)}function q(a){return"string"==typeof a&&a.startsWith(n)}function r(a){return"string"==typeof a&&a.startsWith(o)}let s={...h,...i,...j,...k,...l};function t(a){for(let b of Object.values(s))if(b.alias===a||b.id===a||b.aliases?.includes(a))return b;return null}function u(a){let b=t(a);return b?.id||a}function v(a){let b=s[a];return b?.alias||a}let w=Object.values(s).reduce((a,b)=>(a[b.alias]=b.id,a),{});Object.values(s).reduce((a,b)=>(a[b.id]=b.alias,a),{});let x=d.A.filter(a=>a.features?.usage).map(a=>a.id),y=d.A.filter(a=>a.features?.usageApikey).map(a=>a.id)},81329:(a,b,c)=>{c.d(b,{CP:()=>h,PROVIDER_MODELS:()=>d.vq,Xg:()=>d.Xg,eh:()=>g});var d=c(27335),e=c(40615),f=c(4489);Object.entries(e.Q2).filter(([,a])=>a.passthroughModels).map(([a])=>a);let g=Object.entries(d.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name}))),h=(a,b=null)=>{let c=a?.kind||a?.type||b;return c?(0,f.ki)(c):c}}};
@@ -4,7 +4,7 @@
4
4
 
5
5
  `)),a.enqueue(f.encode(`data: ${JSON.stringify(g([{index:0,delta:{},finish_reason:"stop"}]))}
6
6
 
7
- `)),a.enqueue(f.encode("data: [DONE]\n\n")),a.close()}});return new Response(h,{status:200,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}(!!c.stream,e)}(0,B.lg)(g),(0,B.LH)(g,i)}b&&(c.messages=(0,B.Jl)(c.messages))}}catch(a){C.warn?.("FEEDBACK",`capture/strip failed (ignored): ${a?.message||a}`)}let k=(0,t.t8)(c);if((0,h.r)(c)&&o)return(0,s.yj)(y.gx.BAD_REQUEST,"Claude provider-managed threads require a single native Claude model.");if(o){let f=(0,n.tg)({models:o,comboName:e,settings:m,log:C});if(f.response)return f.response;o=f.models;let g=m.comboStrategies||{},h=g[e]?.fallbackStrategy||m.comboStrategy||"fallback";if("fusion"===h)return C.info("CHAT",`Combo "${e}" with ${o.length} models (strategy: fusion)`),(0,t.vt)({body:c,models:o,handleSingleModel:(c,e,f)=>{let g=!0===f?{isPanel:!0}:f||{},h=b;if(g.isPanel&&b){let{tools:a,tool_choice:c,...d}=b.body||{};h={...b,body:d}}return T(c,e,h,a,d,{...g,signal:g.signal||null})},log:C,comboName:e,judgeModel:g[e]?.judgeModel,tuning:g[e]?.fusionTuning,abortSignal:a?.signal||null,childComboDepth:1});if("auto"===h){let h=g[e]||{},i=!0===h.feedbackAsk,j=null;if(i)try{let b=(0,z.t)(new URL(a.url).pathname,c),e=(0,B.Mc)(c.messages),f=(0,B.EN)(d||"local-no-key");j={apiKeyHash:f,conversationFp:(0,B.sO)(e.firstUserText,f),openAiWire:"openai"===b,gateOk:!(c.tools&&c.tools.length||c.functions&&c.functions.length)&&Number(e.userTurns)>=2,feedbackAsk:!0}}catch{j=null}let k=h.routerModel;if(k&&await (0,l.getComboModels)(k))return C.warn("CHAT",`Auto routerModel is a combo (${k}) — rejected`),(0,s.yj)(y.gx.BAD_REQUEST,`routerModel cannot be a combo ("${k}"). Use a single provider/model.`);let m=[];for(let a of o)a!==k&&m.push(a);if(!m.length&&f.skipped.length)return(0,n.tW)({comboName:e,skipped:f.skipped.filter(a=>a.model!==k),log:C});let p={};for(let a of m)try{p[a]=await (0,E.w)(a)}catch{p[a]={}}return C.info("CHAT",`Combo "${e}" with ${m.length} workers (strategy: auto)`),(0,v.EA)({body:c,models:[...m,...o.includes(k)?[k]:[]],handleSingleModel:(c,e,f)=>T(c,e,b,a,d,{...f||{},comboDepth:0}),log:C,comboName:e,strategy:h,loadLearning:M,loadStats:N,loadGlobalStats:a=>(0,K.PO)(`gstats:${a}`,()=>(0,J.cX)(a),15e3),loadClusterP50:(a,b,c)=>(0,K.PO)(`p50:${a}:${b}:${c}`,()=>(0,J._6)(a,b,c)),loadProviderLatency:O,loadProviderUsage:P,loadProviderQuota:Q,recordEvent:(0,n.zw)(a=>(0,J.ex)(a),f.skipped),applyJudgeScore:(a,b)=>(0,J.Vp)(a,b),autoDepth:0,clientAbortSignal:a?.signal||null,feedbackCtx:j,workerCaps:p})}let i=(0,u.R8)(o,k,m),j=i.filter(a=>!o.includes(a)),p=m.comboStickyRoundRobinLimit,q=g[e]||{},r=!1!==q.capacityAutoSwitch,w=q.providerStrategy&&"off"!==q.providerStrategy?await R(q):null;return C.info("CHAT",`Combo "${e}" with ${i.length} models (strategy: ${h}, sticky: ${p}, capacitySwitch: ${r})`),(0,t.Pr)({body:c,models:i,handleSingleModel:(0,u.ar)((c,e,f)=>T(c,e,b,a,d,f),j),log:C,comboName:e,comboStrategy:h,comboStickyLimit:p,autoSwitch:r,...w||{},abortSignal:a?.signal||null,childComboDepth:1})}let q=(0,h.r)(c)?[e]:(0,u.R8)([e],k,m);if(q.length>1){let f=q.filter(a=>a!==e);return C.info("CHAT",`Capacity adapter for [${[...k].join(",")}] on "${e}" → trying ${q.join(", ")}`),(0,t.Pr)({body:c,models:q,handleSingleModel:(0,u.ar)((c,e,f)=>T(c,e,b,a,d,{...f||{},signal:f?.signal||a?.signal||null,preferredConnectionId:g,strictPreferredConnection:i,allowNativeClaudeOAuth:!0}),f),log:C,comboName:e,comboStrategy:(0,u.vB)(k,m),abortSignal:a?.signal||null,childComboDepth:1})}let r=null;try{r=(0,z.t)(new URL(a.url).pathname,c)}catch{}if(!(!(0,h.r)(c)&&m.tokenSaver?.vault&&Array.isArray(c.tools)&&c.tools.length>0&&("openai"===r||"claude"===r)))return T(c,e,b,a,d,{signal:a?.signal||null,preferredConnectionId:g,strictPreferredConnection:i,allowNativeClaudeOAuth:!0});try{let f=(0,B.Bk)(c.messages,(0,B.EN)(d||"local-no-key"));if(!f)return T(c,e,b,a,d,{signal:a?.signal||null,preferredConnectionId:g,strictPreferredConnection:i,allowNativeClaudeOAuth:!0});await (0,A.Xy)(c,{conversationId:f,signal:a?.signal}),(0,A.Ag)(c,r);let h=Number(m.tokenSaver?.vaultSearchLimit??5);return await (0,A.SS)({dispatch:(c,h)=>T(c,e,b,a,d,{signal:h?.signal||a?.signal||null,preferredConnectionId:g,strictPreferredConnection:i,allowNativeClaudeOAuth:!0,vaultInternal:!!h?.vaultInternal,vaultStore:!0,vaultConversationId:f}),body:c,wire:r,signal:a?.signal,conversationId:f,searchLimit:h,log:C})}catch{return T(c,e,b,a,d,{signal:a?.signal||null,preferredConnectionId:g,strictPreferredConnection:i,allowNativeClaudeOAuth:!0})}})}async function T(a,b,c=null,d=null,e=null,k=null){let w=[d?.signal,k?.signal].filter(Boolean),x=w.length>1?AbortSignal.any(w):w[0],A=()=>(0,s.yj)(499,"Request aborted");if(x?.aborted)return A();await (0,m.vA)();let D=await (0,l.getModelInfo)(b),H=k?.autoDepth||0,L=k?.comboDepth||0;if(!D.provider){let f=await (0,l.getComboModels)(b);if((0,h.r)(a)&&f)return(0,s.yj)(y.gx.BAD_REQUEST,"Claude provider-managed threads require a single native Claude model.");if(f){let g=await (0,j.mt)(),h=(0,n.tg)({models:f,comboName:b,settings:g,log:C});if(h.response)return h.response;f=h.models;let i=(0,t.t8)(a),m=(0,u.R8)(f,i,g),o=m.filter(a=>!f.includes(a)),p=g.comboStrategies||{},q=p[b]?.fallbackStrategy||g.comboStrategy||"fallback";if("auto"!==q&&L>=y.wg)return C.warn("CHAT",`Combo nesting limit at "${b}" (depth ${L})`),(0,s.yj)(y.gx.BAD_REQUEST,`Combo nesting too deep (>${y.wg}) at "${b}"`);if("fusion"===q)return C.info("CHAT",`Combo "${b}" with ${f.length} models (strategy: fusion)`),(0,t.vt)({body:a,models:f,handleSingleModel:(a,b,f)=>{let g=!0===f?{isPanel:!0}:f||{},h=c;if(g.isPanel&&c){let{tools:a,tool_choice:b,...d}=c.body||{};h={...c,body:d}}return T(a,b,h,d,e,{...k||{},...g,signal:g.signal||k?.signal||null})},log:C,comboName:b,judgeModel:p[b]?.judgeModel,tuning:p[b]?.fusionTuning,abortSignal:x||null,childComboDepth:L+1,autoDepth:H});if("auto"===q){if(H>=2)return C.warn("CHAT",`Auto combo recursion limit at "${b}" (depth ${H})`),(0,s.yj)(y.gx.BAD_REQUEST,`Auto combo recursion limit — "${b}" cannot nest further`);let g=p[b]||{},i=!0===g.feedbackAsk,j=null;if(i)try{let b=(0,z.t)(new URL(d.url).pathname,a),c=(0,B.Mc)(a.messages),f=(0,B.EN)(e||"local-no-key");j={apiKeyHash:f,conversationFp:(0,B.sO)(c.firstUserText,f),openAiWire:"openai"===b,gateOk:!(a.tools&&a.tools.length||a.functions&&a.functions.length)&&Number(c.userTurns)>=2,feedbackAsk:!0}}catch{j=null}let k=g.routerModel;if(k&&await (0,l.getComboModels)(k))return(0,s.yj)(y.gx.BAD_REQUEST,`routerModel cannot be a combo ("${k}")`);let m=[];for(let a of f)a!==k&&m.push(a);if(!m.length&&h.skipped.length)return(0,n.tW)({comboName:b,skipped:h.skipped.filter(a=>a.model!==k),log:C});let o={};for(let a of m)try{o[a]=await (0,E.w)(a)}catch{o[a]={}}return C.info("CHAT",`Combo "${b}" with ${m.length} workers (strategy: auto, depth=${H})`),(0,v.EA)({body:a,models:[...m,...f.includes(k)?[k]:[]],handleSingleModel:(a,b,f)=>T(a,b,c,d,e,{...f||{},comboDepth:L}),log:C,comboName:b,strategy:g,loadLearning:M,loadStats:N,loadGlobalStats:a=>(0,K.PO)(`gstats:${a}`,()=>(0,J.cX)(a),15e3),loadClusterP50:(a,b,c)=>(0,K.PO)(`p50:${a}:${b}:${c}`,()=>(0,J._6)(a,b,c)),loadProviderLatency:O,loadProviderUsage:P,loadProviderQuota:Q,recordEvent:(0,n.zw)(a=>(0,J.ex)(a),h.skipped),applyJudgeScore:(a,b)=>(0,J.Vp)(a,b),autoDepth:H,comboDepth:L,clientAbortSignal:d?.signal||null,feedbackCtx:j,workerCaps:o})}let r=g.comboStickyRoundRobinLimit,w=p[b]||{},A=!1!==w.capacityAutoSwitch,D=w.providerStrategy&&"off"!==w.providerStrategy?await R(w):null;return C.info("CHAT",`Combo "${b}" with ${m.length} models (strategy: ${q}, sticky: ${r}, capacitySwitch: ${A})`),(0,t.Pr)({body:a,models:m,handleSingleModel:(0,u.ar)((a,b,f)=>T(a,b,c,d,e,f),o),log:C,comboName:b,comboStrategy:q,comboStickyLimit:r,autoSwitch:A,...D||{},abortSignal:x||null,childComboDepth:L+1,autoDepth:H})}return C.warn("CHAT","Invalid model format",{model:b}),(0,s.yj)(y.gx.BAD_REQUEST,"Invalid model format")}let{provider:S,model:U}=D;b!==`${S}/${U}`?C.info("ROUTING",`${b} → ${S}/${U}`):C.info("ROUTING",`Provider: ${S}, Model: ${U}`);let V=d?.headers?.get("user-agent")||"",W=new Set,X=null,Y=null,Z=(0,I.M)({request:d,provider:S,allowNativeOAuth:k?.allowNativeClaudeOAuth===!0}),$=(0,h.k)(a),_=null;if($&&!Z){if(!["claude","anthropic"].includes(S))return(0,s.yj)(y.gx.BAD_REQUEST,"Claude provider-managed threads require a native Claude provider.");try{_=await (0,g.E)({body:a,provider:S,model:U,clientKeyId:e,signal:x})}catch{return(0,s.yj)(y.gx.SERVICE_UNAVAILABLE,"Claude thread account ownership is unavailable.")}if(_.error)return(0,s.yj)(409,_.error);if(k?.preferredConnectionId&&k.preferredConnectionId!==_.connectionId)return(0,s.yj)(409,"Claude thread belongs to a different account.")}let aa=(0,i.mA)({headers:d?.headers,body:a,scope:S,clientKeyId:e});for(;;){if(x?.aborted)return A();let b=Z||await (0,f.getProviderCredentials)(S,W,U,{preferredConnectionId:_?.connectionId||k?.preferredConnectionId||null,strictPreferredConnection:!!_||k?.strictPreferredConnection===!0,sessionKey:aa,clientKeyId:e});if(x?.aborted)return A();if(!b||b.allRateLimited){if(b?.allRateLimited){let a=X||b.lastError||"Unavailable",c=Y||Number(b.lastErrorCode)||y.gx.SERVICE_UNAVAILABLE;return C.warn("CHAT",`[${S}/${U}] ${a} (${b.retryAfterHuman})`),(0,s.wO)(c,`[${S}/${U}] ${a}`,b.retryAfter,b.retryAfterHuman)}if(0===W.size)return C.warn("AUTH",`No active credentials for provider: ${S}`),(0,s.yj)(y.gx.NOT_FOUND,`No active credentials for provider: ${S}`);return C.warn("CHAT","No more accounts available",{provider:S}),(0,s.yj)(Y||y.gx.SERVICE_UNAVAILABLE,X||"All accounts unavailable")}C.info("AUTH",`\x1b[32mUsing ${S} account: ${b.connectionName}\x1b[0m`);let h=b.ephemeral?b:await (0,F.eU)(S,b);if(x?.aborted)return A();if(("antigravity"===S||"gemini-cli"===S)&&!h.projectId){let a=await (0,G.eG)(b.connectionId,h.accessToken,S);a&&(h.projectId=a,(0,F.vN)(b.connectionId,{projectId:a}).catch(()=>{}))}let i=await (0,j.mt)();if(x?.aborted)return A();let l=(i.providerThinking||{})[S]||null,m="function"==typeof structuredClone?structuredClone(a):JSON.parse(JSON.stringify(a)),n=k?.sourceFormatOverride||(d?.url?(0,z.t)(new URL(d.url).pathname,a):null),t=!!k?.bypassPromptFilters,u=await (0,o.w)({body:{...m,model:`${S}/${U}`},modelInfo:{provider:S,model:U},credentials:h,log:C,clientRawRequest:c,connectionId:b.connectionId,userAgent:V,clientKeyId:e,ccFilterNaming:!!i.ccFilterNaming,rtkEnabled:!t&&!!i.rtkEnabled,vaultEnabled:!t&&!!k?.vaultStore&&!!i.tokenSaver?.vault,vaultThresholdKB:i.tokenSaver?.vaultThresholdKB??8,vaultTtlHours:i.tokenSaver?.vaultTtlHours??24,vaultConversationId:k?.vaultConversationId??null,headroomEnabled:!t&&!!i.headroomEnabled,headroomUrl:i.headroomUrl||p.ag,headroomCompressUserMessages:!t&&!!i.headroomCompressUserMessages,cavemanEnabled:!t&&!!i.cavemanEnabled,cavemanLevel:i.cavemanLevel||"full",ponytailEnabled:!t&&!!i.ponytailEnabled,ponytailLevel:i.ponytailLevel||"full",pxpipeEnabled:!t&&!!i.pxpipeEnabled,pxpipeMinChars:i.pxpipeMinChars,pxpipeTimeoutMs:i.pxpipeTimeoutMs,pxpipeTransform:!t&&i.pxpipeEnabled?await (0,q.RG)():null,onPxpipeEvent:r.T0,providerThinking:l,sourceFormatOverride:n,bypassNativePassthrough:!!k?.bypassNativePassthrough,vaultInternal:!!k?.vaultInternal,abortSignal:x||null,onCredentialsRefreshed:async a=>{b.ephemeral||await (0,F.vN)(b.connectionId,{...a,existingProviderSpecificData:b.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{b.ephemeral||await (0,f.Pt)(b.connectionId,b,U)},onUpstreamEmptyExhausted:async(a,c)=>{b.ephemeral||x?.aborted||await (0,f.vk)(b.connectionId,502,"string"==typeof a?a:a?.message||"empty stream",S,U,c)}});if(x?.aborted||499===u.status){try{await u.response?.body?.cancel?.()}catch{}return A()}if(u.success){let c=k?.sourceFormatOverride||(d?.url?(0,z.t)(new URL(d.url).pathname,a):null);if("claude"===c&&["claude","anthropic"].includes(S)&&!b.ephemeral)return(0,g.P)(u.response,{provider:S,model:U,clientKeyId:e,connectionId:b.connectionId,log:C,signal:x});return u.response}if(b.ephemeral)return u.response;if($)return await (0,f.vk)(b.connectionId,u.status,u.error,S,U,u.resetsAtMs),u.response;let{shouldFallback:v}=await (0,f.vk)(b.connectionId,u.status,u.error,S,U,u.resetsAtMs);if(v){C.warn("AUTH",`Account ${b.connectionName} unavailable (${u.status}), trying fallback`),W.add(b.connectionId),X=u.error,Y=u.status;continue}return u.response}}[e,o]=L.then?(await L)():L,(0,J.tu)(a=>{(0,w.aW)(a),a?((0,K.Y3)(`stats:${a}:`),(0,K.Y3)(`learning:${a}`),(0,v.a8)(a)):(0,K.Y3)()}),d()}catch(a){d(a)}})},85432:(a,b,c)=>{c.d(b,{Kt:()=>m,MH:()=>l,vA:()=>k});var d=c(15717),e=c(19978),f=c(94454),g=c(29696);let h="compatible-reasoning:snapshot";async function i(){let a="function"==typeof d.Fh?(0,d.Fh)({type:"openai-compatible"}):Promise.resolve([]),b="function"==typeof d.uv?(0,d.uv)():Promise.resolve([]),[c,e]=await Promise.all([Promise.resolve(a).catch(()=>[]),Promise.resolve(b).catch(()=>[])]),f=new Map,h=new Map;for(let a of c){if(!a?.id||!a?.prefix)continue;let b={id:a.id,apiType:"responses"===a.apiType?"responses":"chat",staticFormat:(0,g.ml)(a.baseUrl)};f.set(a.id,b),h.set(a.prefix,b)}let i=new Map;for(let a of e){if(!a?.providerAlias||!a?.id||"llm"!==(a.type||"llm"))continue;let b=h.get(a.providerAlias);b&&(0,g.K5)(a.reasoning)&&i.set(`${b.id}|${a.id}`,a.reasoning)}return{nodesById:f,prefixToNode:h,byModel:i}}let j={nodesById:new Map,prefixToNode:new Map,byModel:new Map};async function k(a=15e3){try{let b=await (0,e.PO)(h,i,a);b&&(j=b)}catch{}}function l(){(0,e.Y3)(h)}function m(a,b){let c=j.prefixToNode.get(a);if(!c)return null;let d=j.byModel.get(`${c.id}|${b}`);return d||("none"===c.staticFormat?{supported:!1,effort:null}:c.staticFormat?{supported:!0,effort:"qwen"===c.staticFormat?null:c.staticFormat}:null)}(0,f.xl)(function(a,b){var c,d,e,f;if(!a||!a.startsWith("openai-compatible-"))return null;let g=j.nodesById.get(a),h=j.byModel.get(`${a}|${b}`);return h?(c=h,d=g?.apiType||"chat",c.supported?"responses"===d?"openai-responses":"nested"===c.effort?"openai-nested":"openai":"none"):g?.staticFormat?(e=g.staticFormat,f=g.apiType,"none"===e?"none":"qwen"===e?"qwen":"responses"===f?"openai-responses":"nested"===e?"openai-nested":"openai"):null})},85605:(a,b,c)=>{c.d(b,{E:()=>o,P:()=>p});var d=c(77598),e=c.n(d),f=c(22846),g=c(15717);let h=(0,f.U)("claudeThreadOwners"),i=0,j=(a,b,c)=>e().createHash("sha256").update(JSON.stringify([a,b||"local-no-key",c])).digest("hex"),k=a=>!!a&&"string"==typeof a.connectionId&&"string"==typeof a.model&&Number.isFinite(a.savedAt)&&a.savedAt<=Date.now()&&Date.now()-a.savedAt<=6048e5;function l(a,b){return new Promise((c,d)=>{let e=(a,c)=>{clearTimeout(g),b?.removeEventListener("abort",f),a(c)},f=()=>e(d,Error("Thread ownership operation aborted")),g=setTimeout(()=>e(d,Error("Thread ownership persistence timed out")),2e3);b?.aborted?f():(b?.addEventListener("abort",f,{once:!0}),Promise.resolve(a).then(a=>e(c,a),a=>e(d,a)))})}async function m(){let a=AbortSignal.timeout(2e3),b=Object.entries(await l(h.getAll(),a)).sort((a,b)=>(b[1]?.savedAt||0)-(a[1]?.savedAt||0));for(let c=0;c<b.length;c++)(c>=1e4||!k(b[c][1]))&&await l(h.remove(b[c][0]),a)}async function n(a,{provider:b,model:c,clientKeyId:d,connectionId:e,signal:f}){"string"==typeof a&&a&&e&&(await l(h.set(j(b,d,a),{connectionId:e,model:c,savedAt:Date.now()}),f),Date.now()<i||(i=Date.now()+6e4,m().catch(()=>{})))}async function o({body:a,provider:b,model:c,clientKeyId:d,signal:e}){let f=j(b,d,a.thread.previous_message_id),i=await l(h.get(f),e);if(k(i))return i.model!==c?{error:"Claude thread belongs to a different model; send full history to change models."}:{connectionId:i.connectionId};i&&l(h.remove(f),e).catch(()=>{});let m=await l((0,g.getProviderConnections)({provider:b,isActive:!0}),e);return 1===m.length?{connectionId:m[0].id}:{error:"Claude thread account is unknown; send full history to establish account ownership."}}function p(a,b){if(!a?.ok||!a.body||!b.connectionId)return a;let c=a.headers.get("content-type")?.toLowerCase().includes("text/event-stream"),d=new TextDecoder,e="",f=!1,g=async a=>{f=!0;try{await n(a,b)}catch{b.log?.warn?.("THREAD","Could not persist Claude thread account ownership.")}},h=new TransformStream({async transform(a,h){if(!f){if(e+=d.decode(a,{stream:!0}),c){let a;for(;!f&&(a=e.indexOf("\n"))>=0;){let b=e.slice(0,a).trimEnd();if(e=e.slice(a+1),b.startsWith("data:"))try{let a=JSON.parse(b.slice(5));"message_start"===a.type&&"string"==typeof a.message?.id&&await g(a.message.id)}catch{}}}if(!c&&!f){let a=/^\s*\{\s*"id"\s*:\s*("(?:\\.|[^"\\])*")\s*[,}]/.exec(e);if(a){let b;try{b=JSON.parse(a[1])}catch{f=!0}"string"==typeof b&&await g(b)}}e.length>65536&&(f||b.log?.warn?.("THREAD","Claude response exceeded the ownership observer bound before its message ID."),f=!0,e="")}h.enqueue(a)},async flush(){if(!c&&!f)try{let a=JSON.parse(e+d.decode());a.id&&await g(a.id)}catch{}}});return new Response(a.body.pipeThrough(h),{status:a.status,statusText:a.statusText,headers:a.headers})}},86187:(a,b,c)=>{c.d(b,{Ag:()=>l,SS:()=>z,Xy:()=>y});var d=c(12197),e=c(54070),f=c(12407),g=c(66573);let h=new TextEncoder,i=/^\s*(?:<tool_use_error>\s*)?(?:Error:\s*)?(?:unknown tool|no (?:such )?tool (?:named|available)|tool not found|not a (?:valid|recognized) tool)[^\n]{0,80}sb_vault_search/i;function j(){return{type:"object",properties:{vault_id:{type:"string",description:"The vault id from the placeholder, e.g. vlt_abc123."},query:{type:"string",description:"What to look for in the stored content."}},required:["query"]}}function k(){return"Search the Switchboard conversation vault for the full content of a tool result that was externalized to save context. Provide the vault_id shown in the placeholder and a query describing what you need."}function l(a,b){try{if(!Array.isArray(a?.tools))return!1;for(let b=0;b<a.tools.length;b+=1){var c;if(c=a.tools[b],(c?.function?.name||c?.name||"")===d.mS)return!1}if("openai"===b)a.tools.push({type:"function",function:{name:d.mS,description:k(),parameters:j()}});else{if("claude"!==b)return!1;a.tools.push({name:d.mS,description:k(),input_schema:j()})}return!0}catch{return!1}}function m(a,b=!1){let c=new Headers(a);return c.delete("content-length"),b&&c.delete("content-encoding"),c}function n(a,b){if([204,205,304].includes(a.status))return new Response(null,{status:a.status,statusText:a.statusText,headers:m(a.headers,!0)});let c="string"==typeof b?h.encode(b):b;return new Response(new ReadableStream({start(a){a.enqueue(c),a.close()}}),{status:a.status,statusText:a.statusText,headers:m(a.headers,!0)})}function o(a){try{let b=JSON.parse(a||"{}");return b&&"object"==typeof b&&!Array.isArray(b)?b:null}catch{return null}}function p(a,b){return"string"==typeof a&&a&&"string"==typeof b?.query&&(null==b.vault_id||"string"==typeof b.vault_id)?{callId:a,query:b?.query,vaultId:b?.vault_id}:null}function q(a,b){if(!Array.isArray(a)||0===a.length||!b||a.some(a=>!a)||new Set(a.map(a=>a.callId)).size!==a.length)return null;let c=a[0];return{kind:"call",callId:c.callId,query:c.query,vaultId:c.vaultId,calls:a,assistantRaw:b}}function r(a){let b=[];for(let c of(b.hasDone=!1,b.invalid=!1,a.split(/\r?\n\r?\n/))){let a=c.split(/\r?\n/).filter(a=>a.startsWith("data:")).map(a=>a.slice(5).trimStart()).join("\n").trim();if(a){if("[DONE]"===a){b.hasDone=!0;continue}try{b.push(JSON.parse(a))}catch{b.invalid=!0}}}return b}async function s(a,b,c){let d,e;try{if(b?.aborted)throw Error("vault operation aborted");let f=new Promise((a,f)=>{d=setTimeout(()=>f(Error("vault stream idle or deadline exceeded")),c),e=()=>f(Error("vault operation aborted")),b?.addEventListener("abort",e,{once:!0})});return await Promise.race([a.read(),f])}finally{clearTimeout(d),e&&b?.removeEventListener("abort",e)}}async function t(a,{signal:b}={}){let c=a.body?.getReader();if(!c)return{text:"",bytes:new Uint8Array};let d=[],e=0,f=Date.now()+6e5;try{for(;;){let a=f-Date.now();if(a<=0)throw Error("vault buffer deadline exceeded");let g=await s(c,b,Math.min(12e4,a));if(g.done)break;if((e+=g.value.byteLength)>8388608)throw Error("vault buffer size exceeded");d.push(g.value)}let a=new Uint8Array(e),g=0;for(let b of d)a.set(b,g),g+=b.byteLength;return{bytes:a}}catch(a){try{Promise.resolve(c.cancel(a)).catch(()=>{})}catch{}throw a}finally{try{c.releaseLock()}catch{}}}async function u(a,b,{signal:c}={}){let e;if(!a.ok)return{kind:"none",replay:a};let f=a?.headers?.get("content-type")||"";try{var g;e=await t(a,{signal:c});let h=n(a,e.bytes),i=new TextDecoder("utf-8",{fatal:!0}).decode(e.bytes);if(!f.toLowerCase().includes("text/event-stream"))return{...(g=JSON.parse(i),"openai"===b?function(a,b){if(Array.isArray(a?.choices)&&a.choices.length>1)return{kind:"none",replay:b};let c=a?.choices?.[0],e=c?.message,f=Array.isArray(e?.tool_calls)?e.tool_calls:[],g=[],h=!1;for(let a=0;a<f.length;a+=1)f[a]?.function?.name===d.mS?g.push(p(f[a].id,o(f[a].function?.arguments))):h=!0;return 0===g.length?{kind:"none",replay:b}:h||a?.error||c?.finish_reason!=null&&!["stop","tool_calls","function_call"].includes(c.finish_reason)||e&&Object.keys(e).some(a=>!(["role","content","tool_calls"].includes(a)||"refusal"===a&&null==e[a]||"annotations"===a&&Array.isArray(e[a])&&0===e[a].length))||"string"==typeof e?.content&&e.content.trim()?{kind:"mixed",replay:b}:q(g,e)||{kind:"none",replay:b}}(g,h):"claude"===b?function(a,b){let c=Array.isArray(a?.content)?a.content:[],e=[],f=!1,g=!1;for(let a=0;a<c.length;a+=1){let b=c[a];b?.type==="tool_use"?b.name===d.mS?e.push(p(b.id,b.input||{})):g=!0:b?.type!=="text"&&b?.type!=="thinking"&&b?.type!=="redacted_thinking"&&(g=!0),b?.type==="text"&&"string"==typeof b.text&&b.text.trim()&&(f=!0)}return 0===e.length?{kind:"none",replay:b}:g||f||a?.error||a?.stop_reason!=null&&"tool_use"!==a.stop_reason?{kind:"mixed",replay:b}:q(e,c.filter(a=>a?.type!=="text"))||{kind:"none",replay:b}}(g,h):{kind:"none",replay:h}),replay:h};return{..."openai"===b?function(a,b){let c=new Map,e=!1,f=!1,g=r(a),h=g.invalid,i=g.hasDone;for(let a=0;a<g.length;a+=1){g[a]?.error&&(h=!0);let b=Array.isArray(g[a]?.choices)?g[a].choices:[];b.length>1&&(f=!0);let d=b[0];Number.isInteger(d?.index)&&d.index>0&&(f=!0),d?.finish_reason!=null&&(i=!0,["stop","tool_calls","function_call"].includes(d.finish_reason)||(h=!0));let j=d?.delta;if(!j)continue;Object.keys(j).some(a=>!["role","content","tool_calls"].includes(a))&&(h=!0),"string"==typeof j.content&&j.content.trim()&&(e=!0);let k=Array.isArray(j.tool_calls)?j.tool_calls:[];for(let a=0;a<k.length;a+=1){let b=k[a],d=b?.index;if(!Number.isInteger(d)){if(!b?.id){h=!0;continue}if(void 0===(d=[...c.entries()].find(([,a])=>a.id===b.id)?.[0])){if(c.size>=100){h=!0;continue}d=c.size?Math.max(...c.keys())+1:0}}if(!c.has(d)&&c.size>=100){h=!0;continue}let e=c.get(d);e?.id&&b?.id&&e.id!==b.id&&(h=!0);let f=c.get(d)||{id:"",name:"",arguments:""};"string"==typeof b?.id&&(f.id=b.id),"string"==typeof b?.function?.name&&(f.name=b.function.name),"string"==typeof b?.function?.arguments&&(f.arguments+=b.function.arguments),c.set(d,f)}}let j=[...c.entries()].sort((a,b)=>a[0]-b[0]).map(([,a])=>a),k=[],l=[],m=!1;for(let a of j)a.name===d.mS?(k.push(p(a.id,o(a.arguments))),l.push({id:a.id,type:"function",function:{name:d.mS,arguments:a.arguments}})):m=!0;return 0===k.length?{kind:"none",replay:b}:h||!i||f||m||e?{kind:"mixed",replay:b}:q(k,{role:"assistant",content:null,tool_calls:l})||{kind:"none",replay:b}}(i,h):"claude"===b?function(a,b){let c=new Map,e=!1,f=r(a),g=f.invalid,h=f.hasDone;for(let a of f){a?.type==="message_stop"&&(h=!0),a?.type==="message_delta"&&a.delta?.stop_reason&&"tool_use"!==a.delta.stop_reason&&(g=!0),a?.type==="error"&&(g=!0);let b=Number.isInteger(a?.index)?a.index:0,d=a?.content_block;if(a?.type==="content_block_start"&&d){if(c.size>=120){g=!0;continue}["tool_use","thinking","redacted_thinking","text"].includes(d.type)||(g=!0),c.set(b,{...d,partialInput:""}),"text"===d.type&&d.text?.trim()&&(e=!0)}let f=c.get(b),i=a?.type==="content_block_delta"?a.delta:void 0;if(i?.type==="text_delta"&&i.text?.trim()&&(e=!0),!f){a?.type==="content_block_delta"&&(g=!0);continue}i?.type==="input_json_delta"&&"tool_use"===f.type?f.partialInput+=i.partial_json||"":i?.type==="thinking_delta"&&"thinking"===f.type?f.thinking=(f.thinking||"")+(i.thinking||""):i?.type==="signature_delta"&&"thinking"===f.type?f.signature=(f.signature||"")+(i.signature||""):i&&"text_delta"!==i.type&&(g=!0)}let i=[],j=[];for(let[,a]of[...c.entries()].sort((a,b)=>a[0]-b[0])){let{partialInput:b,...c}=a;if("text"!==a.type){if("tool_use"===a.type)if(a.name!==d.mS)g=!0;else{let d=b?o(b):a.input||{};i.push(p(a.id,d)),c.input=d}j.push(c)}}return 0===i.length?{kind:"none",replay:b}:g||!h||e?{kind:"mixed",replay:b}:q(i,j)||{kind:"none",replay:b}}(i,h):{kind:"none",replay:h},replay:h}}catch{if(e)return{kind:"none",replay:n(a,e.bytes)};let d={type:"api_error",message:"Vault upstream stream did not complete."};return{kind:"none",replay:Response.json("claude"===b?{type:"error",error:d}:{error:d},{status:c?.aborted?499:502})}}}async function v(a,{signal:b,timeoutMs:c=5e3}={}){let d,e;try{if(b?.aborted)throw Error("vault operation aborted");let g=new Promise((a,f)=>{d=setTimeout(()=>f(Error("vault search deadline exceeded")),c),e=()=>f(Error("vault operation aborted")),b?.addEventListener("abort",e,{once:!0})});return await Promise.race([(0,f.$s)(a),g])}finally{clearTimeout(d),e&&b?.removeEventListener("abort",e)}}function w(a){return h.encode(a).length}function x(a){try{if(!Array.isArray(a)||0===a.length)return"No matching content found in the vault for that query.";let b=[];for(let c=0;c<a.length;c+=1){let d=a[c]||{},e=d.toolName?` from ${d.toolName}`:"";b.push(`[chunk ${c+1}${e}]
7
+ `)),a.enqueue(f.encode("data: [DONE]\n\n")),a.close()}});return new Response(h,{status:200,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}(!!c.stream,e)}(0,B.lg)(g),(0,B.LH)(g,i)}b&&(c.messages=(0,B.Jl)(c.messages))}}catch(a){C.warn?.("FEEDBACK",`capture/strip failed (ignored): ${a?.message||a}`)}let k=(0,t.t8)(c);if((0,h.r)(c)&&o)return(0,s.yj)(y.gx.BAD_REQUEST,"Claude provider-managed threads require a single native Claude model.");if(o){let f=(0,n.tg)({models:o,comboName:e,settings:m,log:C});if(f.response)return f.response;o=f.models;let g=m.comboStrategies||{},h=g[e]?.fallbackStrategy||m.comboStrategy||"fallback";if("fusion"===h)return C.info("CHAT",`Combo "${e}" with ${o.length} models (strategy: fusion)`),(0,t.vt)({body:c,models:o,handleSingleModel:(c,e,f)=>{let g=!0===f?{isPanel:!0}:f||{},h=b;if(g.isPanel&&b){let{tools:a,tool_choice:c,...d}=b.body||{};h={...b,body:d}}return T(c,e,h,a,d,{...g,signal:g.signal||null})},log:C,comboName:e,judgeModel:g[e]?.judgeModel,tuning:g[e]?.fusionTuning,abortSignal:a?.signal||null,childComboDepth:1});if("auto"===h){let h=g[e]||{},i=!0===h.feedbackAsk,j=null;if(i)try{let b=(0,z.t)(new URL(a.url).pathname,c),e=(0,B.Mc)(c.messages),f=(0,B.EN)(d||"local-no-key");j={apiKeyHash:f,conversationFp:(0,B.sO)(e.firstUserText,f),openAiWire:"openai"===b,gateOk:!(c.tools&&c.tools.length||c.functions&&c.functions.length)&&Number(e.userTurns)>=2,feedbackAsk:!0}}catch{j=null}let k=h.routerModel;if(k&&await (0,l.getComboModels)(k))return C.warn("CHAT",`Auto routerModel is a combo (${k}) — rejected`),(0,s.yj)(y.gx.BAD_REQUEST,`routerModel cannot be a combo ("${k}"). Use a single provider/model.`);let m=[];for(let a of o)a!==k&&m.push(a);if(!m.length&&f.skipped.length)return(0,n.tW)({comboName:e,skipped:f.skipped.filter(a=>a.model!==k),log:C});let p={};for(let a of m)try{p[a]=await (0,E.w)(a)}catch{p[a]={}}return C.info("CHAT",`Combo "${e}" with ${m.length} workers (strategy: auto)`),(0,v.EA)({body:c,models:[...m,...o.includes(k)?[k]:[]],handleSingleModel:(c,e,f)=>T(c,e,b,a,d,{...f||{},comboDepth:0}),log:C,comboName:e,strategy:h,loadLearning:M,loadStats:N,loadGlobalStats:a=>(0,K.PO)(`gstats:${a}`,()=>(0,J.cX)(a),15e3),loadClusterP50:(a,b,c)=>(0,K.PO)(`p50:${a}:${b}:${c}`,()=>(0,J._6)(a,b,c)),loadProviderLatency:O,loadProviderUsage:P,loadProviderQuota:Q,recordEvent:(0,n.zw)(a=>(0,J.ex)(a),f.skipped),applyJudgeScore:(a,b)=>(0,J.Vp)(a,b),autoDepth:0,clientAbortSignal:a?.signal||null,feedbackCtx:j,workerCaps:p})}let i=(0,u.R8)(o,k,m),j=i.filter(a=>!o.includes(a)),p=m.comboStickyRoundRobinLimit,q=g[e]||{},r=!1!==q.capacityAutoSwitch,w=q.providerStrategy&&"off"!==q.providerStrategy?await R(q):null;return C.info("CHAT",`Combo "${e}" with ${i.length} models (strategy: ${h}, sticky: ${p}, capacitySwitch: ${r})`),(0,t.Pr)({body:c,models:i,handleSingleModel:(0,u.ar)((c,e,f)=>T(c,e,b,a,d,f),j),log:C,comboName:e,comboStrategy:h,comboStickyLimit:p,autoSwitch:r,...w||{},abortSignal:a?.signal||null,childComboDepth:1})}let q=(0,h.r)(c)?[e]:(0,u.R8)([e],k,m);if(q.length>1){let f=q.filter(a=>a!==e);return C.info("CHAT",`Capacity adapter for [${[...k].join(",")}] on "${e}" → trying ${q.join(", ")}`),(0,t.Pr)({body:c,models:q,handleSingleModel:(0,u.ar)((c,e,f)=>T(c,e,b,a,d,{...f||{},signal:f?.signal||a?.signal||null,preferredConnectionId:g,strictPreferredConnection:i,allowNativeClaudeOAuth:!0}),f),log:C,comboName:e,comboStrategy:(0,u.vB)(k,m),abortSignal:a?.signal||null,childComboDepth:1})}let r=null;try{r=(0,z.t)(new URL(a.url).pathname,c)}catch{}if(!(!(0,h.r)(c)&&m.tokenSaver?.vault&&Array.isArray(c.tools)&&c.tools.length>0&&("openai"===r||"claude"===r)))return T(c,e,b,a,d,{signal:a?.signal||null,preferredConnectionId:g,strictPreferredConnection:i,allowNativeClaudeOAuth:!0});try{let f=(0,B.Bk)(c.messages,(0,B.EN)(d||"local-no-key"));if(!f)return T(c,e,b,a,d,{signal:a?.signal||null,preferredConnectionId:g,strictPreferredConnection:i,allowNativeClaudeOAuth:!0});await (0,A.Xy)(c,{conversationId:f,signal:a?.signal}),(0,A.Ag)(c,r);let h=Number(m.tokenSaver?.vaultSearchLimit??5);return await (0,A.SS)({dispatch:(c,h)=>T(c,e,b,a,d,{signal:h?.signal||a?.signal||null,preferredConnectionId:g,strictPreferredConnection:i,allowNativeClaudeOAuth:!0,vaultInternal:!!h?.vaultInternal,vaultStore:!0,vaultConversationId:f}),body:c,wire:r,signal:a?.signal,conversationId:f,searchLimit:h,log:C})}catch{return T(c,e,b,a,d,{signal:a?.signal||null,preferredConnectionId:g,strictPreferredConnection:i,allowNativeClaudeOAuth:!0})}})}async function T(a,b,c=null,d=null,e=null,k=null){let w=[d?.signal,k?.signal].filter(Boolean),x=w.length>1?AbortSignal.any(w):w[0],A=()=>(0,s.yj)(499,"Request aborted");if(x?.aborted)return A();await (0,m.vA)();let D=await (0,l.getModelInfo)(b),H=k?.autoDepth||0,L=k?.comboDepth||0;if(!D.provider){let f=await (0,l.getComboModels)(b);if((0,h.r)(a)&&f)return(0,s.yj)(y.gx.BAD_REQUEST,"Claude provider-managed threads require a single native Claude model.");if(f){let g=await (0,j.mt)(),h=(0,n.tg)({models:f,comboName:b,settings:g,log:C});if(h.response)return h.response;f=h.models;let i=(0,t.t8)(a),m=(0,u.R8)(f,i,g),o=m.filter(a=>!f.includes(a)),p=g.comboStrategies||{},q=p[b]?.fallbackStrategy||g.comboStrategy||"fallback";if("auto"!==q&&L>=y.wg)return C.warn("CHAT",`Combo nesting limit at "${b}" (depth ${L})`),(0,s.yj)(y.gx.BAD_REQUEST,`Combo nesting too deep (>${y.wg}) at "${b}"`);if("fusion"===q)return C.info("CHAT",`Combo "${b}" with ${f.length} models (strategy: fusion)`),(0,t.vt)({body:a,models:f,handleSingleModel:(a,b,f)=>{let g=!0===f?{isPanel:!0}:f||{},h=c;if(g.isPanel&&c){let{tools:a,tool_choice:b,...d}=c.body||{};h={...c,body:d}}return T(a,b,h,d,e,{...k||{},...g,signal:g.signal||k?.signal||null})},log:C,comboName:b,judgeModel:p[b]?.judgeModel,tuning:p[b]?.fusionTuning,abortSignal:x||null,childComboDepth:L+1,autoDepth:H});if("auto"===q){if(H>=2)return C.warn("CHAT",`Auto combo recursion limit at "${b}" (depth ${H})`),(0,s.yj)(y.gx.BAD_REQUEST,`Auto combo recursion limit — "${b}" cannot nest further`);let g=p[b]||{},i=!0===g.feedbackAsk,j=null;if(i)try{let b=(0,z.t)(new URL(d.url).pathname,a),c=(0,B.Mc)(a.messages),f=(0,B.EN)(e||"local-no-key");j={apiKeyHash:f,conversationFp:(0,B.sO)(c.firstUserText,f),openAiWire:"openai"===b,gateOk:!(a.tools&&a.tools.length||a.functions&&a.functions.length)&&Number(c.userTurns)>=2,feedbackAsk:!0}}catch{j=null}let k=g.routerModel;if(k&&await (0,l.getComboModels)(k))return(0,s.yj)(y.gx.BAD_REQUEST,`routerModel cannot be a combo ("${k}")`);let m=[];for(let a of f)a!==k&&m.push(a);if(!m.length&&h.skipped.length)return(0,n.tW)({comboName:b,skipped:h.skipped.filter(a=>a.model!==k),log:C});let o={};for(let a of m)try{o[a]=await (0,E.w)(a)}catch{o[a]={}}return C.info("CHAT",`Combo "${b}" with ${m.length} workers (strategy: auto, depth=${H})`),(0,v.EA)({body:a,models:[...m,...f.includes(k)?[k]:[]],handleSingleModel:(a,b,f)=>T(a,b,c,d,e,{...f||{},comboDepth:L}),log:C,comboName:b,strategy:g,loadLearning:M,loadStats:N,loadGlobalStats:a=>(0,K.PO)(`gstats:${a}`,()=>(0,J.cX)(a),15e3),loadClusterP50:(a,b,c)=>(0,K.PO)(`p50:${a}:${b}:${c}`,()=>(0,J._6)(a,b,c)),loadProviderLatency:O,loadProviderUsage:P,loadProviderQuota:Q,recordEvent:(0,n.zw)(a=>(0,J.ex)(a),h.skipped),applyJudgeScore:(a,b)=>(0,J.Vp)(a,b),autoDepth:H,comboDepth:L,clientAbortSignal:d?.signal||null,feedbackCtx:j,workerCaps:o})}let r=g.comboStickyRoundRobinLimit,w=p[b]||{},A=!1!==w.capacityAutoSwitch,D=w.providerStrategy&&"off"!==w.providerStrategy?await R(w):null;return C.info("CHAT",`Combo "${b}" with ${m.length} models (strategy: ${q}, sticky: ${r}, capacitySwitch: ${A})`),(0,t.Pr)({body:a,models:m,handleSingleModel:(0,u.ar)((a,b,f)=>T(a,b,c,d,e,f),o),log:C,comboName:b,comboStrategy:q,comboStickyLimit:r,autoSwitch:A,...D||{},abortSignal:x||null,childComboDepth:L+1,autoDepth:H})}return C.warn("CHAT","Invalid model format",{model:b}),(0,s.yj)(y.gx.BAD_REQUEST,"Invalid model format")}let{provider:S,model:U}=D;b!==`${S}/${U}`?C.info("ROUTING",`${b} → ${S}/${U}`):C.info("ROUTING",`Provider: ${S}, Model: ${U}`);let V=d?.headers?.get("user-agent")||"",W=new Set,X=null,Y=null,Z=(0,I.M)({request:d,provider:S,allowNativeOAuth:k?.allowNativeClaudeOAuth===!0}),$=(0,h.k)(a),_=null;if($&&!Z){if(!["claude","anthropic"].includes(S))return(0,s.yj)(y.gx.BAD_REQUEST,"Claude provider-managed threads require a native Claude provider.");try{_=await (0,g.E)({body:a,provider:S,model:U,clientKeyId:e,signal:x})}catch{return(0,s.yj)(y.gx.SERVICE_UNAVAILABLE,"Claude thread account ownership is unavailable.")}if(_.error)return(0,s.yj)(409,_.error);if(k?.preferredConnectionId&&k.preferredConnectionId!==_.connectionId)return(0,s.yj)(409,"Claude thread belongs to a different account.")}let aa=(0,i.mA)({headers:d?.headers,body:a,scope:S,clientKeyId:e});for(;;){if(x?.aborted)return A();let b=Z||await (0,f.getProviderCredentials)(S,W,U,{preferredConnectionId:_?.connectionId||k?.preferredConnectionId||null,strictPreferredConnection:!!_||k?.strictPreferredConnection===!0,sessionKey:aa,clientKeyId:e});if(x?.aborted)return A();if(!b||b.allRateLimited){if(b?.allRateLimited){let a=X||b.lastError||"Unavailable",c=Y||Number(b.lastErrorCode)||y.gx.SERVICE_UNAVAILABLE;return C.warn("CHAT",`[${S}/${U}] ${a} (${b.retryAfterHuman})`),(0,s.wO)(c,`[${S}/${U}] ${a}`,b.retryAfter,b.retryAfterHuman)}if(0===W.size)return C.warn("AUTH",`No active credentials for provider: ${S}`),(0,s.yj)(y.gx.NOT_FOUND,`No active credentials for provider: ${S}`);return C.warn("CHAT","No more accounts available",{provider:S}),(0,s.yj)(Y||y.gx.SERVICE_UNAVAILABLE,X||"All accounts unavailable")}C.info("AUTH",`\x1b[32mUsing ${S} account: ${b.connectionName}\x1b[0m`);let h=b.ephemeral?b:await (0,F.eU)(S,b);if(x?.aborted)return A();if(("antigravity"===S||"gemini-cli"===S)&&!h.projectId){let a=await (0,G.eG)(b.connectionId,h.accessToken,S);a&&(h.projectId=a,(0,F.vN)(b.connectionId,{projectId:a}).catch(()=>{}))}let i=await (0,j.mt)();if(x?.aborted)return A();let l=(i.providerThinking||{})[S]||null,m="function"==typeof structuredClone?structuredClone(a):JSON.parse(JSON.stringify(a)),n=k?.sourceFormatOverride||(d?.url?(0,z.t)(new URL(d.url).pathname,a):null),t=!!k?.bypassPromptFilters,u=await (0,o.w)({body:{...m,model:`${S}/${U}`},modelInfo:{provider:S,model:U},credentials:h,log:C,clientRawRequest:c,connectionId:b.connectionId,userAgent:V,clientKeyId:e,ccFilterNaming:!!i.ccFilterNaming,rtkEnabled:!t&&!!i.rtkEnabled,vaultEnabled:!t&&!!k?.vaultStore&&!!i.tokenSaver?.vault,vaultThresholdKB:i.tokenSaver?.vaultThresholdKB??8,vaultTtlHours:i.tokenSaver?.vaultTtlHours??24,vaultConversationId:k?.vaultConversationId??null,headroomEnabled:!t&&!!i.headroomEnabled,headroomUrl:i.headroomUrl||p.ag,headroomCompressUserMessages:!t&&!!i.headroomCompressUserMessages,cavemanEnabled:!t&&!!i.cavemanEnabled,cavemanLevel:i.cavemanLevel||"full",ponytailEnabled:!t&&!!i.ponytailEnabled,ponytailLevel:i.ponytailLevel||"full",pxpipeEnabled:!t&&!!i.pxpipeEnabled,pxpipeMinChars:i.pxpipeMinChars,pxpipeTimeoutMs:i.pxpipeTimeoutMs,pxpipeTransform:!t&&i.pxpipeEnabled?await (0,q.RG)():null,onPxpipeEvent:r.T0,providerThinking:l,sourceFormatOverride:n,bypassNativePassthrough:!!k?.bypassNativePassthrough,vaultInternal:!!k?.vaultInternal,abortSignal:x||null,onCredentialsRefreshed:async a=>{b.ephemeral||await (0,F.vN)(b.connectionId,{...a,existingProviderSpecificData:b.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{b.ephemeral||await (0,f.Pt)(b.connectionId,b,U)},onUpstreamEmptyExhausted:async(a,c)=>{b.ephemeral||x?.aborted||await (0,f.vk)(b.connectionId,502,"string"==typeof a?a:a?.message||"empty stream",S,U,c)}});if(x?.aborted||499===u.status){try{await u.response?.body?.cancel?.()}catch{}return A()}if(u.success){let c=k?.sourceFormatOverride||(d?.url?(0,z.t)(new URL(d.url).pathname,a):null);if("claude"===c&&["claude","anthropic"].includes(S)&&!b.ephemeral)return(0,g.P)(u.response,{provider:S,model:U,clientKeyId:e,connectionId:b.connectionId,log:C,signal:x});return u.response}if(b.ephemeral)return u.response;if($)return await (0,f.vk)(b.connectionId,u.status,u.error,S,U,u.resetsAtMs),u.response;let{shouldFallback:v}=await (0,f.vk)(b.connectionId,u.status,u.error,S,U,u.resetsAtMs);if(v){C.warn("AUTH",`Account ${b.connectionName} unavailable (${u.status}), trying fallback`),W.add(b.connectionId),X=u.error,Y=u.status;continue}return u.response}}[e,o]=L.then?(await L)():L,(0,J.tu)(a=>{(0,w.aW)(a),a?((0,K.Y3)(`stats:${a}:`),(0,K.Y3)(`learning:${a}`),(0,v.a8)(a)):(0,K.Y3)()}),d()}catch(a){d(a)}})},85432:(a,b,c)=>{c.d(b,{Kt:()=>m,MH:()=>l,vA:()=>k});var d=c(15717),e=c(19978),f=c(94454),g=c(29696);let h="compatible-reasoning:snapshot";async function i(){let a="function"==typeof d.Fh?(0,d.Fh)({type:"openai-compatible"}):Promise.resolve([]),b="function"==typeof d.uv?(0,d.uv)():Promise.resolve([]),[c,e]=await Promise.all([Promise.resolve(a).catch(()=>[]),Promise.resolve(b).catch(()=>[])]),f=new Map,h=new Map;for(let a of c){if(!a?.id||!a?.prefix)continue;let b={id:a.id,apiType:"responses"===a.apiType?"responses":"chat",staticFormat:(0,g.ml)(a.baseUrl)};f.set(a.id,b),h.set(a.prefix,b)}let i=new Map;for(let a of e){if(!a?.providerAlias||!a?.id||"llm"!==(a.type||"llm"))continue;let b=h.get(a.providerAlias);b&&(0,g.K5)(a.reasoning)&&i.set(`${b.id}|${a.id}`,a.reasoning)}return{nodesById:f,prefixToNode:h,byModel:i}}let j={nodesById:new Map,prefixToNode:new Map,byModel:new Map};async function k(a=15e3){try{let b=await (0,e.PO)(h,i,a);b&&(j=b)}catch{}}function l(){(0,e.Y3)(h)}function m(a,b){let c=j.prefixToNode.get(a);if(!c)return null;let d=j.byModel.get(`${c.id}|${b}`);return d||("none"===c.staticFormat?{supported:!1,effort:null}:c.staticFormat?{supported:!0,effort:"qwen"===c.staticFormat?null:c.staticFormat}:null)}(0,f.xl)(function(a,b){var c,d,e,f;if(!a||!a.startsWith("openai-compatible-"))return null;let g=j.nodesById.get(a),h=j.byModel.get(`${a}|${b}`);return h?(c=h,d=g?.apiType||"chat",c.supported?"responses"===d?"openai-responses":"nested"===c.effort?"openai-nested":"openai":"none"):g?.staticFormat?(e=g.staticFormat,f=g.apiType,"none"===e?"none":"qwen"===e?"qwen":"responses"===f?"openai-responses":"nested"===e?"openai-nested":"openai"):null})},85605:(a,b,c)=>{c.d(b,{E:()=>o,P:()=>p});var d=c(77598),e=c.n(d),f=c(22846),g=c(15717);let h=(0,f.U)("claudeThreadOwners"),i=0,j=(a,b,c)=>e().createHash("sha256").update(JSON.stringify([a,b||"local-no-key",c])).digest("hex"),k=a=>!!a&&"string"==typeof a.connectionId&&"string"==typeof a.model&&Number.isFinite(a.savedAt)&&a.savedAt<=Date.now()&&Date.now()-a.savedAt<=6048e5;function l(a,b){return new Promise((c,d)=>{let e=(a,c)=>{clearTimeout(g),b?.removeEventListener("abort",f),a(c)},f=()=>e(d,Error("Thread ownership operation aborted")),g=setTimeout(()=>e(d,Error("Thread ownership persistence timed out")),2e3);(Promise.resolve(a).then(a=>e(c,a),a=>e(d,a)),b?.aborted)?f():b?.addEventListener("abort",f,{once:!0})})}async function m(){let a=AbortSignal.timeout(2e3),b=Object.entries(await l(h.getAll(),a)).sort((a,b)=>(b[1]?.savedAt||0)-(a[1]?.savedAt||0));for(let c=0;c<b.length;c++)(c>=1e4||!k(b[c][1]))&&await l(h.remove(b[c][0]),a)}async function n(a,{provider:b,model:c,clientKeyId:d,connectionId:e,signal:f}){"string"==typeof a&&a&&e&&(await l(h.set(j(b,d,a),{connectionId:e,model:c,savedAt:Date.now()}),f),Date.now()<i||(i=Date.now()+6e4,m().catch(()=>{})))}async function o({body:a,provider:b,model:c,clientKeyId:d,signal:e}){let f=j(b,d,a.thread.previous_message_id),i=await l(h.get(f),e);if(k(i))return i.model!==c?{error:"Claude thread belongs to a different model; send full history to change models."}:{connectionId:i.connectionId};i&&l(h.remove(f),e).catch(()=>{});let m=await l((0,g.getProviderConnections)({provider:b,isActive:!0}),e);return 1===m.length?{connectionId:m[0].id}:{error:"Claude thread account is unknown; send full history to establish account ownership."}}function p(a,b){if(!a?.ok||!a.body||!b.connectionId)return a;let c=a.headers.get("content-type")?.toLowerCase().includes("text/event-stream"),d=new TextDecoder,e="",f=!1,g=async a=>{f=!0;try{await n(a,b)}catch{b.log?.warn?.("THREAD","Could not persist Claude thread account ownership.")}},h=new TransformStream({async transform(a,h){if(!f){if(e+=d.decode(a,{stream:!0}),c){let a;for(;!f&&(a=e.indexOf("\n"))>=0;){let b=e.slice(0,a).trimEnd();if(e=e.slice(a+1),b.startsWith("data:"))try{let a=JSON.parse(b.slice(5));"message_start"===a.type&&"string"==typeof a.message?.id&&await g(a.message.id)}catch{}}}if(!c&&!f){let a=/^\s*\{\s*"id"\s*:\s*("(?:\\.|[^"\\])*")\s*[,}]/.exec(e);if(a){let b;try{b=JSON.parse(a[1])}catch{f=!0}"string"==typeof b&&await g(b)}}e.length>65536&&(f||b.log?.warn?.("THREAD","Claude response exceeded the ownership observer bound before its message ID."),f=!0,e="")}h.enqueue(a)},async flush(){if(!c&&!f)try{let a=JSON.parse(e+d.decode());a.id&&await g(a.id)}catch{}}});return new Response(a.body.pipeThrough(h),{status:a.status,statusText:a.statusText,headers:a.headers})}},86187:(a,b,c)=>{c.d(b,{Ag:()=>l,SS:()=>z,Xy:()=>y});var d=c(12197),e=c(54070),f=c(12407),g=c(66573);let h=new TextEncoder,i=/^\s*(?:<tool_use_error>\s*)?(?:Error:\s*)?(?:unknown tool|no (?:such )?tool (?:named|available)|tool not found|not a (?:valid|recognized) tool)[^\n]{0,80}sb_vault_search/i;function j(){return{type:"object",properties:{vault_id:{type:"string",description:"The vault id from the placeholder, e.g. vlt_abc123."},query:{type:"string",description:"What to look for in the stored content."}},required:["query"]}}function k(){return"Search the Switchboard conversation vault for the full content of a tool result that was externalized to save context. Provide the vault_id shown in the placeholder and a query describing what you need."}function l(a,b){try{if(!Array.isArray(a?.tools))return!1;for(let b=0;b<a.tools.length;b+=1){var c;if(c=a.tools[b],(c?.function?.name||c?.name||"")===d.mS)return!1}if("openai"===b)a.tools.push({type:"function",function:{name:d.mS,description:k(),parameters:j()}});else{if("claude"!==b)return!1;a.tools.push({name:d.mS,description:k(),input_schema:j()})}return!0}catch{return!1}}function m(a,b=!1){let c=new Headers(a);return c.delete("content-length"),b&&c.delete("content-encoding"),c}function n(a,b){if([204,205,304].includes(a.status))return new Response(null,{status:a.status,statusText:a.statusText,headers:m(a.headers,!0)});let c="string"==typeof b?h.encode(b):b;return new Response(new ReadableStream({start(a){a.enqueue(c),a.close()}}),{status:a.status,statusText:a.statusText,headers:m(a.headers,!0)})}function o(a){try{let b=JSON.parse(a||"{}");return b&&"object"==typeof b&&!Array.isArray(b)?b:null}catch{return null}}function p(a,b){return"string"==typeof a&&a&&"string"==typeof b?.query&&(null==b.vault_id||"string"==typeof b.vault_id)?{callId:a,query:b?.query,vaultId:b?.vault_id}:null}function q(a,b){if(!Array.isArray(a)||0===a.length||!b||a.some(a=>!a)||new Set(a.map(a=>a.callId)).size!==a.length)return null;let c=a[0];return{kind:"call",callId:c.callId,query:c.query,vaultId:c.vaultId,calls:a,assistantRaw:b}}function r(a){let b=[];for(let c of(b.hasDone=!1,b.invalid=!1,a.split(/\r?\n\r?\n/))){let a=c.split(/\r?\n/).filter(a=>a.startsWith("data:")).map(a=>a.slice(5).trimStart()).join("\n").trim();if(a){if("[DONE]"===a){b.hasDone=!0;continue}try{b.push(JSON.parse(a))}catch{b.invalid=!0}}}return b}async function s(a,b,c){let d,e;try{if(b?.aborted)throw Error("vault operation aborted");let f=new Promise((a,f)=>{d=setTimeout(()=>f(Error("vault stream idle or deadline exceeded")),c),e=()=>f(Error("vault operation aborted")),b?.addEventListener("abort",e,{once:!0})});return await Promise.race([a.read(),f])}finally{clearTimeout(d),e&&b?.removeEventListener("abort",e)}}async function t(a,{signal:b}={}){let c=a.body?.getReader();if(!c)return{text:"",bytes:new Uint8Array};let d=[],e=0,f=Date.now()+6e5;try{for(;;){let a=f-Date.now();if(a<=0)throw Error("vault buffer deadline exceeded");let g=await s(c,b,Math.min(12e4,a));if(g.done)break;if((e+=g.value.byteLength)>8388608)throw Error("vault buffer size exceeded");d.push(g.value)}let a=new Uint8Array(e),g=0;for(let b of d)a.set(b,g),g+=b.byteLength;return{bytes:a}}catch(a){try{Promise.resolve(c.cancel(a)).catch(()=>{})}catch{}throw a}finally{try{c.releaseLock()}catch{}}}async function u(a,b,{signal:c}={}){let e;if(!a.ok)return{kind:"none",replay:a};let f=a?.headers?.get("content-type")||"";try{var g;e=await t(a,{signal:c});let h=n(a,e.bytes),i=new TextDecoder("utf-8",{fatal:!0}).decode(e.bytes);if(!f.toLowerCase().includes("text/event-stream"))return{...(g=JSON.parse(i),"openai"===b?function(a,b){if(Array.isArray(a?.choices)&&a.choices.length>1)return{kind:"none",replay:b};let c=a?.choices?.[0],e=c?.message,f=Array.isArray(e?.tool_calls)?e.tool_calls:[],g=[],h=!1;for(let a=0;a<f.length;a+=1)f[a]?.function?.name===d.mS?g.push(p(f[a].id,o(f[a].function?.arguments))):h=!0;return 0===g.length?{kind:"none",replay:b}:h||a?.error||c?.finish_reason!=null&&!["stop","tool_calls","function_call"].includes(c.finish_reason)||e&&Object.keys(e).some(a=>!(["role","content","tool_calls"].includes(a)||"refusal"===a&&null==e[a]||"annotations"===a&&Array.isArray(e[a])&&0===e[a].length))||"string"==typeof e?.content&&e.content.trim()?{kind:"mixed",replay:b}:q(g,e)||{kind:"none",replay:b}}(g,h):"claude"===b?function(a,b){let c=Array.isArray(a?.content)?a.content:[],e=[],f=!1,g=!1;for(let a=0;a<c.length;a+=1){let b=c[a];b?.type==="tool_use"?b.name===d.mS?e.push(p(b.id,b.input||{})):g=!0:b?.type!=="text"&&b?.type!=="thinking"&&b?.type!=="redacted_thinking"&&(g=!0),b?.type==="text"&&"string"==typeof b.text&&b.text.trim()&&(f=!0)}return 0===e.length?{kind:"none",replay:b}:g||f||a?.error||a?.stop_reason!=null&&"tool_use"!==a.stop_reason?{kind:"mixed",replay:b}:q(e,c.filter(a=>a?.type!=="text"))||{kind:"none",replay:b}}(g,h):{kind:"none",replay:h}),replay:h};return{..."openai"===b?function(a,b){let c=new Map,e=!1,f=!1,g=r(a),h=g.invalid,i=g.hasDone;for(let a=0;a<g.length;a+=1){g[a]?.error&&(h=!0);let b=Array.isArray(g[a]?.choices)?g[a].choices:[];b.length>1&&(f=!0);let d=b[0];Number.isInteger(d?.index)&&d.index>0&&(f=!0),d?.finish_reason!=null&&(i=!0,["stop","tool_calls","function_call"].includes(d.finish_reason)||(h=!0));let j=d?.delta;if(!j)continue;Object.keys(j).some(a=>!["role","content","tool_calls"].includes(a))&&(h=!0),"string"==typeof j.content&&j.content.trim()&&(e=!0);let k=Array.isArray(j.tool_calls)?j.tool_calls:[];for(let a=0;a<k.length;a+=1){let b=k[a],d=b?.index;if(!Number.isInteger(d)){if(!b?.id){h=!0;continue}if(void 0===(d=[...c.entries()].find(([,a])=>a.id===b.id)?.[0])){if(c.size>=100){h=!0;continue}d=c.size?Math.max(...c.keys())+1:0}}if(!c.has(d)&&c.size>=100){h=!0;continue}let e=c.get(d);e?.id&&b?.id&&e.id!==b.id&&(h=!0);let f=c.get(d)||{id:"",name:"",arguments:""};"string"==typeof b?.id&&(f.id=b.id),"string"==typeof b?.function?.name&&(f.name=b.function.name),"string"==typeof b?.function?.arguments&&(f.arguments+=b.function.arguments),c.set(d,f)}}let j=[...c.entries()].sort((a,b)=>a[0]-b[0]).map(([,a])=>a),k=[],l=[],m=!1;for(let a of j)a.name===d.mS?(k.push(p(a.id,o(a.arguments))),l.push({id:a.id,type:"function",function:{name:d.mS,arguments:a.arguments}})):m=!0;return 0===k.length?{kind:"none",replay:b}:h||!i||f||m||e?{kind:"mixed",replay:b}:q(k,{role:"assistant",content:null,tool_calls:l})||{kind:"none",replay:b}}(i,h):"claude"===b?function(a,b){let c=new Map,e=!1,f=r(a),g=f.invalid,h=f.hasDone;for(let a of f){a?.type==="message_stop"&&(h=!0),a?.type==="message_delta"&&a.delta?.stop_reason&&"tool_use"!==a.delta.stop_reason&&(g=!0),a?.type==="error"&&(g=!0);let b=Number.isInteger(a?.index)?a.index:0,d=a?.content_block;if(a?.type==="content_block_start"&&d){if(c.size>=120){g=!0;continue}["tool_use","thinking","redacted_thinking","text"].includes(d.type)||(g=!0),c.set(b,{...d,partialInput:""}),"text"===d.type&&d.text?.trim()&&(e=!0)}let f=c.get(b),i=a?.type==="content_block_delta"?a.delta:void 0;if(i?.type==="text_delta"&&i.text?.trim()&&(e=!0),!f){a?.type==="content_block_delta"&&(g=!0);continue}i?.type==="input_json_delta"&&"tool_use"===f.type?f.partialInput+=i.partial_json||"":i?.type==="thinking_delta"&&"thinking"===f.type?f.thinking=(f.thinking||"")+(i.thinking||""):i?.type==="signature_delta"&&"thinking"===f.type?f.signature=(f.signature||"")+(i.signature||""):i&&"text_delta"!==i.type&&(g=!0)}let i=[],j=[];for(let[,a]of[...c.entries()].sort((a,b)=>a[0]-b[0])){let{partialInput:b,...c}=a;if("text"!==a.type){if("tool_use"===a.type)if(a.name!==d.mS)g=!0;else{let d=b?o(b):a.input||{};i.push(p(a.id,d)),c.input=d}j.push(c)}}return 0===i.length?{kind:"none",replay:b}:g||!h||e?{kind:"mixed",replay:b}:q(i,j)||{kind:"none",replay:b}}(i,h):{kind:"none",replay:h},replay:h}}catch{if(e)return{kind:"none",replay:n(a,e.bytes)};let d={type:"api_error",message:"Vault upstream stream did not complete."};return{kind:"none",replay:Response.json("claude"===b?{type:"error",error:d}:{error:d},{status:c?.aborted?499:502})}}}async function v(a,{signal:b,timeoutMs:c=5e3}={}){let d,e;try{if(b?.aborted)throw Error("vault operation aborted");let g=new Promise((a,f)=>{d=setTimeout(()=>f(Error("vault search deadline exceeded")),c),e=()=>f(Error("vault operation aborted")),b?.addEventListener("abort",e,{once:!0})});return await Promise.race([(0,f.$s)(a),g])}finally{clearTimeout(d),e&&b?.removeEventListener("abort",e)}}function w(a){return h.encode(a).length}function x(a){try{if(!Array.isArray(a)||0===a.length)return"No matching content found in the vault for that query.";let b=[];for(let c=0;c<a.length;c+=1){let d=a[c]||{},e=d.toolName?` from ${d.toolName}`:"";b.push(`[chunk ${c+1}${e}]
8
8
  ${"string"==typeof d.text?d.text:""}`)}let c=b.join("\n\n");if(w(c)<=d.El)return c;let e="\n…[truncated]";return`${(0,g.ST)(c,d.El-w(e))}${e}`}catch{return"No matching content found in the vault for that query."}}async function y(a,{conversationId:b,limit:c=5,signal:e}={}){try{let h=Array.isArray(a?.messages)?a.messages:null;if(!h||!b)return 0;let j=[],k=0,l=Date.now()+5e3;for(let a=0;a<h.length&&a<1e3&&!(e?.aborted||k>=100||Date.now()>=l);a+=1){let m=h[a],n=[...function(a){let b=[],c=Array.isArray(a?.tool_calls)?a.tool_calls:[];for(let a=0;a<c.length&&b.length<100;a+=1){let e=c[a];e?.function?.name===d.mS&&"string"==typeof e.id&&b.push({id:e.id,args:o(e.function.arguments)})}return b}(m),...function(a){let b=[],c=Array.isArray(a?.content)?a.content:[];for(let a=0;a<c.length&&b.length<100;a+=1){let e=c[a];e?.type==="tool_use"&&e.name===d.mS&&"string"==typeof e.id&&b.push({id:e.id,args:e.input||{}})}return b}(m)];for(let d=0;d<n.length;d+=1){var f,g;let m=n[d];if(e?.aborted||k>=100||Date.now()>=l)break;if(!p(m.id,m.args))continue;let o=function(a,b,c){for(let d=b;d<a.length&&d<1e3;d+=1){let b=a[d];if(b?.role==="tool"&&b.tool_call_id===c)return{target:b,content:b.content}}return null}(h,a+1,m.id)||function(a,b,c){for(let d=b;d<a.length&&d<1e3;d+=1){let b=Array.isArray(a[d]?.content)?a[d].content:[];for(let a=0;a<b.length;a+=1){let d=b[a];if(d?.type==="tool_result"&&d.tool_use_id===c)return{target:d,content:d.content}}}return null}(h,a+1,m.id);if(!o||(f=o.target,g=o.content,!(f?.is_error!==!1&&f?.status!=="success"&&(f?.is_error===!0||f?.status==="error"||i.test(function(a){try{if("string"==typeof a)return a;return JSON.stringify(a)||""}catch{return""}}(g))))))continue;k++;let q=await v({conversationId:b,query:m.args.query,vaultId:m.args.vault_id,limit:c},{signal:e,timeoutMs:Math.max(1,l-Date.now())});j.push({target:o.target,content:x(q)})}}for(let a of j)a.target.content=a.content,delete a.target.is_error,delete a.target.status;return j.length}catch{return 0}}async function z({dispatch:a,body:b,wire:c,conversationId:d,searchLimit:f=5,log:g=null,signal:h}){let i=b,j=0,k=new AbortController,l=setTimeout(()=>k.abort(),6e5),m=Date.now()+6e5,n=!1,o=h?AbortSignal.any([h,k.signal]):k.signal,p=async(b,c)=>{let d,e=Promise.resolve().then(()=>{if(o.aborted)throw Error("vault operation aborted");return a(b,{...c,signal:o})});e.then(a=>{if(o.aborted)try{Promise.resolve(a?.body?.cancel?.()).catch(()=>{})}catch{}},()=>{});try{let a=new Promise((a,b)=>{d=()=>b(Error("vault operation aborted")),o.aborted?d():o.addEventListener("abort",d,{once:!0})});return await Promise.race([e,a])}finally{d&&o.removeEventListener("abort",d)}},q=(a,b=502)=>{let d={type:"api_error",message:a};return Response.json("claude"===c?{type:"error",error:d}:{error:d},{status:b})},r=()=>q(h?.aborted?"Request aborted":"Vault processing deadline exceeded.",h?.aborted?499:502);try{for(let a=0;a<5;a+=1){if(o.aborted)return r();let b=await p(i,{vaultInternal:a>0,signal:o}),h=await u(b,c,{signal:o});if(o.aborted)return r();if("call"!==h.kind)return j>0&&g?.info?.("VAULT",`served ${j} vault search(es)`),h.replay||b;n||(n=!0,clearTimeout(l),l=setTimeout(()=>k.abort(),Math.max(1,Math.min(12e4,m-Date.now()))));let s=Array.isArray(h.calls)?h.calls:[],t=[];for(let a=0;a<s.length;a+=1){if(o.aborted)return r();if(j>=100)return q("Vault search budget exceeded.");let b=await v({conversationId:d,query:s[a].query,vaultId:s[a].vaultId,limit:f},{signal:o});t.push(x(b)),j+=1,(0,e.VS)()}i=function(a,b,c,d){let e=Array.isArray(c?.calls)?c.calls:[];if(!a||!Array.isArray(a.messages)||0===e.length||!c.assistantRaw)throw Error("invalid vault turn");let f=Array.isArray(d)?d:[],g=[...a.messages];if("openai"===b){g.push(c.assistantRaw);for(let a=0;a<e.length;a+=1)g.push({role:"tool",tool_call_id:e[a].callId,content:f[a]??""})}else if("claude"===b){let a=e.map((a,b)=>({type:"tool_result",tool_use_id:a.callId,content:f[b]??""}));g.push({role:"assistant",content:c.assistantRaw},{role:"user",content:a})}else throw Error("unsupported vault wire");return{...a,messages:g}}(i,c,h,t)}if(o.aborted)return r();return await p(i,{vaultInternal:!1,signal:o})}catch{if(o.aborted)return r();return q("Vault processing failed.")}finally{clearTimeout(l)}}},87155:(a,b,c)=>{c.d(b,{CG:()=>q,ED:()=>u,S1:()=>s,XF:()=>j,_g:()=>t,no:()=>r,sW:()=>w});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(79646),i=c(49120);let j=g().join(i.nJ,"pxpipe"),k="pxpipe-proxy",l=g().join(j,"install.log"),m="win32"===process.platform,n=[...m?[`${process.env.ProgramFiles||""}\\nodejs`,`${process.env.APPDATA||""}\\npm`]:["/usr/local/bin","/opt/homebrew/bin",`${process.env.HOME||""}/.local/bin`,"/usr/bin","/bin"],process.env.PATH||""].filter(Boolean).join(g().delimiter),o=null;function p(){return g().join(j,"node_modules",k)}function q(){return g().join(p(),"dist","core","library.js")}function r(){try{let a=(0,h.execSync)(`${m?"where":"which"} npm`,{stdio:["ignore","pipe","ignore"],windowsHide:!0,env:{...process.env,PATH:n}}).toString().trim();return a?a.split(/\r?\n/)[0].trim():null}catch{return null}}function s(){try{let a=g().join(p(),"package.json");if(!e().existsSync(a)||!e().existsSync(q()))return{installed:!1,version:null,path:null};let b=JSON.parse(e().readFileSync(a,"utf8"));return{installed:!0,version:b.version||null,path:p()}}catch{return{installed:!1,version:null,path:null}}}function t(){return null!==o}function u(){return o||(o=v().finally(()=>{o=null}))}async function v(){let a=r();if(!a){let a=Error("npm not found on PATH — Node.js/npm is required to install PXPIPE");throw a.code="NPM_NOT_FOUND",a}e().existsSync(j)||e().mkdirSync(j,{recursive:!0});let b=g().join(j,"package.json");e().existsSync(b)||e().writeFileSync(b,JSON.stringify({name:"switchboard-pxpipe-host",private:!0},null,2));let c=e().openSync(l,"a");e().writeSync(c,`
9
9
  [${new Date().toISOString()}] npm install ${k}@latest
10
10
  `),await new Promise((b,d)=>{let e=(0,h.spawn)(a,["install",`${k}@latest`,"--no-audit","--no-fund","--omit=dev"],{cwd:j,stdio:["ignore",c,c],windowsHide:!0,env:{...process.env,PATH:n}}),f=setTimeout(()=>{e.kill("SIGKILL"),d(Error("npm install timed out after 5 minutes — see install.log"))},3e5);e.once("error",a=>{clearTimeout(f),d(a)}),e.once("exit",a=>{clearTimeout(f),0===a?b():d(Error(`npm install exited with code ${a} — see install.log`))})}).finally(()=>e().closeSync(c));let d=s();if(!d.installed)throw Error("install finished but package is missing — see install.log");return d}function w(a=200){try{if(!e().existsSync(l))return"";return e().readFileSync(l,"utf8").split(/\r?\n/).filter(Boolean).slice(-a).join("\n")}catch{return""}}},91686:(a,b,c)=>{c.d(b,{M:()=>e});var d=c(68393);function e({request:a,provider:b,allowNativeOAuth:c=!1}){if(!c||"anthropic"!==b||!a?.headers||!(0,d.i6)(a.headers))return null;let f=a.headers.get("authorization")||"";if(!f.startsWith("Bearer "))return null;let g=f.slice(7).trim();return g?{id:"claude-native-oauth",connectionId:"claude-native-oauth",connectionName:"Claude Code subscription",accessToken:g,ephemeral:!0,providerSpecificData:{}}:null}}};
@@ -1 +1 @@
1
- globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/6k9a5hXyI2Plbuq2Hfh-a/_buildManifest.js","static/6k9a5hXyI2Plbuq2Hfh-a/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-0aaec50204921747.js","static/chunks/4bd1b696-8a4ab4fdf0ae305a.js","static/chunks/3794-83acfce05009cf38.js","static/chunks/main-app-83fef838b21a8d19.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
1
+ globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/RWZSAZYop1Tcl3vT3frIa/_buildManifest.js","static/RWZSAZYop1Tcl3vT3frIa/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-0aaec50204921747.js","static/chunks/4bd1b696-8a4ab4fdf0ae305a.js","static/chunks/3794-83acfce05009cf38.js","static/chunks/main-app-83fef838b21a8d19.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en" class="dark fonts-loaded"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/0202600ddc0c26b4-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/0332c089697ea3ad-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/124eba111847a60f-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/42c1e8b6f014576e-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/527eba3de31447ec-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/64bcbd4d7db4ef3a-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/a03e0948a34ab92a-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/225b03fdf274c037.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/912e8e046d0cd4ca.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-0aaec50204921747.js"/><script src="/_next/static/chunks/4bd1b696-8a4ab4fdf0ae305a.js" async=""></script><script src="/_next/static/chunks/3794-83acfce05009cf38.js" async=""></script><script src="/_next/static/chunks/main-app-83fef838b21a8d19.js" async=""></script><script src="/_next/static/chunks/1a258343-33aee1e7d9aa500f.js" async=""></script><script src="/_next/static/chunks/782-3a03a779968fa7a2.js" async=""></script><script src="/_next/static/chunks/8500-74c368e06d70378e.js" async=""></script><script src="/_next/static/chunks/594-5a5c7b405aa92038.js" async=""></script><script src="/_next/static/chunks/6430-4c528cfc35666c11.js" async=""></script><script src="/_next/static/chunks/1321-431751fe9225bf53.js" async=""></script><script src="/_next/static/chunks/4707-8ea6ba647d0a40c9.js" async=""></script><script src="/_next/static/chunks/1330-e1ec0f07ea113880.js" async=""></script><script src="/_next/static/chunks/app/(dashboard)/layout-6dfa9d7deb27d461.js" async=""></script><script src="/_next/static/chunks/app/layout-26e1615874db4cd7.js" async=""></script><meta name="robots" content="noindex"/><meta name="theme-color" content="#16130E"/><title>Switchboard — Intelligent Model Routing</title><meta name="description" content="Route every request to the right model. One OpenAI-compatible endpoint, visible routing decisions, and self-improving combos."/><link rel="manifest" href="/manifest.webmanifest"/><link rel="icon" href="/favicon.ico?ff60cffdbfc079d0" type="image/x-icon" sizes="16x16"/><link rel="icon" href="/favicon.svg"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_939b73 __variable_409bfd font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-0aaec50204921747.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[21110,[\"3862\",\"static/chunks/1a258343-33aee1e7d9aa500f.js\",\"782\",\"static/chunks/782-3a03a779968fa7a2.js\",\"8500\",\"static/chunks/8500-74c368e06d70378e.js\",\"594\",\"static/chunks/594-5a5c7b405aa92038.js\",\"6430\",\"static/chunks/6430-4c528cfc35666c11.js\",\"1321\",\"static/chunks/1321-431751fe9225bf53.js\",\"4707\",\"static/chunks/4707-8ea6ba647d0a40c9.js\",\"1330\",\"static/chunks/1330-e1ec0f07ea113880.js\",\"9305\",\"static/chunks/app/(dashboard)/layout-6dfa9d7deb27d461.js\"],\"ThemeProvider\"]\n3:I[94635,[\"1321\",\"static/chunks/1321-431751fe9225bf53.js\",\"7177\",\"static/chunks/app/layout-26e1615874db4cd7.js\"],\"RuntimeI18nProvider\"]\n4:I[57121,[],\"\"]\n5:I[74581,[],\"\"]\n6:I[90484,[],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\na:I[90484,[],\"ViewportBoundary\"]\nc:I[90484,[],\"MetadataBoundary\"]\ne:I[27123,[],\"default\",1]\n:HL[\"/_next/static/media/0202600ddc0c26b4-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/0332c089697ea3ad-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/124eba111847a60f-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/42c1e8b6f014576e-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/527eba3de31447ec-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/64bcbd4d7db4ef3a-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/a03e0948a34ab92a-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/225b03fdf274c037.css\",\"style\"]\n:HL[\"/_next/static/css/912e8e046d0cd4ca.css\",\"style\"]\n9:X\n0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/225b03fdf274c037.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/912e8e046d0cd4ca.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark fonts-loaded\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_939b73 __variable_409bfd font-sans antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,null]},null,false,\"$9\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Ld\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"6k9a5hXyI2Plbuq2Hfh-a\"}\n9:C\nb:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#16130E\"}]]\nf:I[86869,[],\"IconMark\"]\n8:null\nd:[[\"$\",\"title\",\"0\",{\"children\":\"Switchboard — Intelligent Model Routing\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Route every request to the right model. One OpenAI-compatible endpoint, visible routing decisions, and self-improving combos.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?ff60cffdbfc079d0\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\"}],[\"$\",\"$Lf\",\"5\",{}]]\n"])</script></body></html>
1
+ <!DOCTYPE html><html lang="en" class="dark fonts-loaded"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/0202600ddc0c26b4-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/0332c089697ea3ad-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/124eba111847a60f-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/42c1e8b6f014576e-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/527eba3de31447ec-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/64bcbd4d7db4ef3a-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/a03e0948a34ab92a-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/225b03fdf274c037.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/912e8e046d0cd4ca.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-0aaec50204921747.js"/><script src="/_next/static/chunks/4bd1b696-8a4ab4fdf0ae305a.js" async=""></script><script src="/_next/static/chunks/3794-83acfce05009cf38.js" async=""></script><script src="/_next/static/chunks/main-app-83fef838b21a8d19.js" async=""></script><script src="/_next/static/chunks/1a258343-33aee1e7d9aa500f.js" async=""></script><script src="/_next/static/chunks/782-3a03a779968fa7a2.js" async=""></script><script src="/_next/static/chunks/8500-74c368e06d70378e.js" async=""></script><script src="/_next/static/chunks/594-5a5c7b405aa92038.js" async=""></script><script src="/_next/static/chunks/6430-4c528cfc35666c11.js" async=""></script><script src="/_next/static/chunks/1321-61ccd342dfe1b2b3.js" async=""></script><script src="/_next/static/chunks/4707-8ea6ba647d0a40c9.js" async=""></script><script src="/_next/static/chunks/1330-e1ec0f07ea113880.js" async=""></script><script src="/_next/static/chunks/app/(dashboard)/layout-6dfa9d7deb27d461.js" async=""></script><script src="/_next/static/chunks/app/layout-26e1615874db4cd7.js" async=""></script><meta name="robots" content="noindex"/><meta name="theme-color" content="#16130E"/><title>Switchboard — Intelligent Model Routing</title><meta name="description" content="Route every request to the right model. One OpenAI-compatible endpoint, visible routing decisions, and self-improving combos."/><link rel="manifest" href="/manifest.webmanifest"/><link rel="icon" href="/favicon.ico?ff60cffdbfc079d0" type="image/x-icon" sizes="16x16"/><link rel="icon" href="/favicon.svg"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_939b73 __variable_409bfd font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-0aaec50204921747.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[21110,[\"3862\",\"static/chunks/1a258343-33aee1e7d9aa500f.js\",\"782\",\"static/chunks/782-3a03a779968fa7a2.js\",\"8500\",\"static/chunks/8500-74c368e06d70378e.js\",\"594\",\"static/chunks/594-5a5c7b405aa92038.js\",\"6430\",\"static/chunks/6430-4c528cfc35666c11.js\",\"1321\",\"static/chunks/1321-61ccd342dfe1b2b3.js\",\"4707\",\"static/chunks/4707-8ea6ba647d0a40c9.js\",\"1330\",\"static/chunks/1330-e1ec0f07ea113880.js\",\"9305\",\"static/chunks/app/(dashboard)/layout-6dfa9d7deb27d461.js\"],\"ThemeProvider\"]\n3:I[94635,[\"1321\",\"static/chunks/1321-61ccd342dfe1b2b3.js\",\"7177\",\"static/chunks/app/layout-26e1615874db4cd7.js\"],\"RuntimeI18nProvider\"]\n4:I[57121,[],\"\"]\n5:I[74581,[],\"\"]\n6:I[90484,[],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\na:I[90484,[],\"ViewportBoundary\"]\nc:I[90484,[],\"MetadataBoundary\"]\ne:I[27123,[],\"default\",1]\n:HL[\"/_next/static/media/0202600ddc0c26b4-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/0332c089697ea3ad-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/124eba111847a60f-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/42c1e8b6f014576e-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/527eba3de31447ec-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/64bcbd4d7db4ef3a-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/a03e0948a34ab92a-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/225b03fdf274c037.css\",\"style\"]\n:HL[\"/_next/static/css/912e8e046d0cd4ca.css\",\"style\"]\n9:X\n0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/225b03fdf274c037.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/912e8e046d0cd4ca.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark fonts-loaded\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_939b73 __variable_409bfd font-sans antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,null]},null,false,\"$9\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Ld\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"RWZSAZYop1Tcl3vT3frIa\"}\n9:C\nb:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#16130E\"}]]\nf:I[86869,[],\"IconMark\"]\n8:null\nd:[[\"$\",\"title\",\"0\",{\"children\":\"Switchboard — Intelligent Model Routing\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Route every request to the right model. One OpenAI-compatible endpoint, visible routing decisions, and self-improving combos.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?ff60cffdbfc079d0\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\"}],[\"$\",\"$Lf\",\"5\",{}]]\n"])</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-0aaec50204921747.js"/><script src="/_next/static/chunks/4bd1b696-8a4ab4fdf0ae305a.js" async=""></script><script src="/_next/static/chunks/3794-83acfce05009cf38.js" async=""></script><script src="/_next/static/chunks/main-app-83fef838b21a8d19.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-0aaec50204921747.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[57121,[],\"\"]\n3:I[74581,[],\"\"]\n4:I[90484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[90484,[],\"ViewportBoundary\"]\na:I[90484,[],\"MetadataBoundary\"]\nc:I[27123,[],\"default\",1]\n7:X\n0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4624]},\"$undefined\",\"$undefined\",4624]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$7\"]},null,false,\"$7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"6k9a5hXyI2Plbuq2Hfh-a\"}\n7:C\n9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n6:null\nb:[]\n"])</script></body></html>
1
+ <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-0aaec50204921747.js"/><script src="/_next/static/chunks/4bd1b696-8a4ab4fdf0ae305a.js" async=""></script><script src="/_next/static/chunks/3794-83acfce05009cf38.js" async=""></script><script src="/_next/static/chunks/main-app-83fef838b21a8d19.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-0aaec50204921747.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[57121,[],\"\"]\n3:I[74581,[],\"\"]\n4:I[90484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[90484,[],\"ViewportBoundary\"]\na:I[90484,[],\"MetadataBoundary\"]\nc:I[27123,[],\"default\",1]\n7:X\n0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4624]},\"$undefined\",\"$undefined\",4624]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$7\"]},null,false,\"$7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"RWZSAZYop1Tcl3vT3frIa\"}\n7:C\n9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n6:null\nb:[]\n"])</script></body></html>
@@ -1 +1 @@
1
- self.__RSC_SERVER_MANIFEST="{\"node\":{\"007079638f6e37ff503a8bf7fb14a34a5f0cc3736a\":{\"workers\":{\"app/api/cli-tools/aider-settings/route\":{\"moduleId\":\"73845\",\"async\":false},\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false}},\"filename\":\"app/api/cli-tools/aider-settings/route.js\",\"exportedName\":\"GET\"},\"00df257b91b09ba30b51c37f7e654dcf8cea388d7c\":{\"workers\":{\"app/api/cli-tools/aider-settings/route\":{\"moduleId\":\"73845\",\"async\":false},\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false}},\"filename\":\"app/api/cli-tools/aider-settings/route.js\",\"exportedName\":\"DELETE\"},\"40094b62bca6060a1eb33cfe2ba559cb8fef290b3a\":{\"workers\":{\"app/api/cli-tools/aider-settings/route\":{\"moduleId\":\"73845\",\"async\":false},\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false}},\"filename\":\"app/api/cli-tools/aider-settings/route.js\",\"exportedName\":\"POST\"},\"001894aec7336ed1fb86c3e6d76ab5d4b388f8256a\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false}},\"filename\":\"app/api/cli-tools/all-statuses/route.js\",\"exportedName\":\"GET\"},\"005549ea6cf8747042591e6108a7099b38717e2ddd\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/codex-settings/route\":{\"moduleId\":\"104\",\"async\":false}},\"filename\":\"app/api/cli-tools/codex-settings/route.js\",\"exportedName\":\"GET\"},\"00af0cd51da53adf772b3b9b145363992ccdb8877c\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/codex-settings/route\":{\"moduleId\":\"104\",\"async\":false}},\"filename\":\"app/api/cli-tools/codex-settings/route.js\",\"exportedName\":\"DELETE\"},\"40b34cfffd4108aab005cc532f6f89a6a1cdb27595\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/codex-settings/route\":{\"moduleId\":\"104\",\"async\":false}},\"filename\":\"app/api/cli-tools/codex-settings/route.js\",\"exportedName\":\"POST\"},\"00b14cafd6105ea657df8731d71d44d0b09a0b865c\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/opencode-settings/route\":{\"moduleId\":\"39215\",\"async\":false}},\"filename\":\"app/api/cli-tools/opencode-settings/route.js\",\"exportedName\":\"GET\"},\"4063eb8294fc33d0c550295cb5630f9d4852159602\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/opencode-settings/route\":{\"moduleId\":\"39215\",\"async\":false}},\"filename\":\"app/api/cli-tools/opencode-settings/route.js\",\"exportedName\":\"DELETE\"},\"40ac6145b8b475e76680a223682c93dc5b660bbba7\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/opencode-settings/route\":{\"moduleId\":\"39215\",\"async\":false}},\"filename\":\"app/api/cli-tools/opencode-settings/route.js\",\"exportedName\":\"PATCH\"},\"40d76137cd3cc00b081a230ed8c74c4a3a099653d0\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/opencode-settings/route\":{\"moduleId\":\"39215\",\"async\":false}},\"filename\":\"app/api/cli-tools/opencode-settings/route.js\",\"exportedName\":\"POST\"},\"008dc7b4634271808b0c1fc7a77bf93df4c85087c5\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/droid-settings/route\":{\"moduleId\":\"83768\",\"async\":false}},\"filename\":\"app/api/cli-tools/droid-settings/route.js\",\"exportedName\":\"GET\"},\"00f9f5ac9bec40dfc76116392f13b0cf9228e123a9\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/droid-settings/route\":{\"moduleId\":\"83768\",\"async\":false}},\"filename\":\"app/api/cli-tools/droid-settings/route.js\",\"exportedName\":\"DELETE\"},\"40c084615c9604f62dee8cab66b579cb9de0241496\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/droid-settings/route\":{\"moduleId\":\"83768\",\"async\":false}},\"filename\":\"app/api/cli-tools/droid-settings/route.js\",\"exportedName\":\"POST\"},\"0023376d22744b1cddec97e51a37389091ad4c3e89\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/openclaw-settings/route\":{\"moduleId\":\"80612\",\"async\":false}},\"filename\":\"app/api/cli-tools/openclaw-settings/route.js\",\"exportedName\":\"GET\"},\"00ec235d0a66f85ec6dd2efcab93c83cc5b55e1d79\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/openclaw-settings/route\":{\"moduleId\":\"80612\",\"async\":false}},\"filename\":\"app/api/cli-tools/openclaw-settings/route.js\",\"exportedName\":\"DELETE\"},\"40f316dd65c90dd6ad94265a72166db93bf5dcb72c\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/openclaw-settings/route\":{\"moduleId\":\"80612\",\"async\":false}},\"filename\":\"app/api/cli-tools/openclaw-settings/route.js\",\"exportedName\":\"POST\"},\"00b1cbbf655a912daac1aa06ef904ead8a6148d99c\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/hermes-settings/route\":{\"moduleId\":\"41864\",\"async\":false}},\"filename\":\"app/api/cli-tools/hermes-settings/route.js\",\"exportedName\":\"GET\"},\"00cfd3313974e9eb3e1c2ecff7b87b1445ba5e107a\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/hermes-settings/route\":{\"moduleId\":\"41864\",\"async\":false}},\"filename\":\"app/api/cli-tools/hermes-settings/route.js\",\"exportedName\":\"DELETE\"},\"40438f9efe3c5cc949e8b78609dee901eccb79c8bb\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/hermes-settings/route\":{\"moduleId\":\"41864\",\"async\":false}},\"filename\":\"app/api/cli-tools/hermes-settings/route.js\",\"exportedName\":\"POST\"},\"00ba5cc41b2b796dff214369d65ee320cb7b9c3acb\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/cowork-settings/route\":{\"moduleId\":\"19718\",\"async\":false}},\"filename\":\"app/api/cli-tools/cowork-settings/route.js\",\"exportedName\":\"DELETE\"},\"00dc658bdc6f1311491d190613d5998bbb4f09d4b3\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/cowork-settings/route\":{\"moduleId\":\"19718\",\"async\":false}},\"filename\":\"app/api/cli-tools/cowork-settings/route.js\",\"exportedName\":\"GET\"},\"40f0de466cd00683b1a9a235f31fdda87cc2a6ed02\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/cowork-settings/route\":{\"moduleId\":\"19718\",\"async\":false}},\"filename\":\"app/api/cli-tools/cowork-settings/route.js\",\"exportedName\":\"POST\"},\"00605ebdf963063dcb5543bd594732ee5b883d2cc3\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/cline-settings/route\":{\"moduleId\":\"67279\",\"async\":false}},\"filename\":\"app/api/cli-tools/cline-settings/route.js\",\"exportedName\":\"DELETE\"},\"00cce8f7e20ef05cc0689f879d1171812d3b43d964\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/cline-settings/route\":{\"moduleId\":\"67279\",\"async\":false}},\"filename\":\"app/api/cli-tools/cline-settings/route.js\",\"exportedName\":\"GET\"},\"40da74b0550a0f6099c1dc9c0b4c93ffeba4608aab\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/cline-settings/route\":{\"moduleId\":\"67279\",\"async\":false}},\"filename\":\"app/api/cli-tools/cline-settings/route.js\",\"exportedName\":\"POST\"},\"00a2ae786d037bd790582aa86ab452cfd417622012\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/kilo-settings/route\":{\"moduleId\":\"62432\",\"async\":false}},\"filename\":\"app/api/cli-tools/kilo-settings/route.js\",\"exportedName\":\"DELETE\"},\"00af90bc0fba116c3862d697daea7b3bb3cdccc805\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/kilo-settings/route\":{\"moduleId\":\"62432\",\"async\":false}},\"filename\":\"app/api/cli-tools/kilo-settings/route.js\",\"exportedName\":\"GET\"},\"40afe0866e1f6cf0f882e644be1ecc4e374206864d\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/kilo-settings/route\":{\"moduleId\":\"62432\",\"async\":false}},\"filename\":\"app/api/cli-tools/kilo-settings/route.js\",\"exportedName\":\"POST\"},\"001205b37b2b0af04e058ea7fce912167a2a3609d7\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/deepseek-tui-settings/route\":{\"moduleId\":\"29366\",\"async\":false}},\"filename\":\"app/api/cli-tools/deepseek-tui-settings/route.js\",\"exportedName\":\"GET\"},\"0042eecdcf33b5b264dfc6b05526a55b801318ec6c\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/deepseek-tui-settings/route\":{\"moduleId\":\"29366\",\"async\":false}},\"filename\":\"app/api/cli-tools/deepseek-tui-settings/route.js\",\"exportedName\":\"DELETE\"},\"40651d0f80096c54fc5595f7f1d8ae68c6e46a5798\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/deepseek-tui-settings/route\":{\"moduleId\":\"29366\",\"async\":false}},\"filename\":\"app/api/cli-tools/deepseek-tui-settings/route.js\",\"exportedName\":\"POST\"},\"00858acfc770939a19be6e247975dc3dc77664b8cb\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/jcode-settings/route\":{\"moduleId\":\"60052\",\"async\":false}},\"filename\":\"app/api/cli-tools/jcode-settings/route.js\",\"exportedName\":\"GET\"},\"00fd618a34065c6189cabc22242b30f29178c3afdb\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/jcode-settings/route\":{\"moduleId\":\"60052\",\"async\":false}},\"filename\":\"app/api/cli-tools/jcode-settings/route.js\",\"exportedName\":\"DELETE\"},\"40d0ebd9b14d27e40d69facc96e5d51262ab23e0ce\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/jcode-settings/route\":{\"moduleId\":\"60052\",\"async\":false}},\"filename\":\"app/api/cli-tools/jcode-settings/route.js\",\"exportedName\":\"POST\"},\"000a8f8d881d7fcc9fcc92bbede2cb208ad932d86e\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/grok-settings/route\":{\"moduleId\":\"20497\",\"async\":false}},\"filename\":\"app/api/cli-tools/grok-settings/route.js\",\"exportedName\":\"GET\"},\"00233834354e8aea05865fbe5fe44493d9890878b5\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/grok-settings/route\":{\"moduleId\":\"20497\",\"async\":false}},\"filename\":\"app/api/cli-tools/grok-settings/route.js\",\"exportedName\":\"DELETE\"},\"4022a61fccb518e38513edf120d52176bf9f6c7f79\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/grok-settings/route\":{\"moduleId\":\"20497\",\"async\":false}},\"filename\":\"app/api/cli-tools/grok-settings/route.js\",\"exportedName\":\"POST\"},\"0000291a9044cbb3819c333cefaa60f7f8effe9329\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/pi-settings/route\":{\"moduleId\":\"32338\",\"async\":false}},\"filename\":\"app/api/cli-tools/pi-settings/route.js\",\"exportedName\":\"GET\"},\"00fb56b6c22e52df0f0030cd69e93f42a049b75ab6\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/pi-settings/route\":{\"moduleId\":\"32338\",\"async\":false}},\"filename\":\"app/api/cli-tools/pi-settings/route.js\",\"exportedName\":\"DELETE\"},\"40b6bc1c951859a39bbd150ae30f990c7b8e43cda5\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/pi-settings/route\":{\"moduleId\":\"32338\",\"async\":false}},\"filename\":\"app/api/cli-tools/pi-settings/route.js\",\"exportedName\":\"POST\"},\"00132db9495cbd008fb1a0830766bc0a0e4028c9b2\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/gemini-cli-settings/route\":{\"moduleId\":\"86453\",\"async\":false}},\"filename\":\"app/api/cli-tools/gemini-cli-settings/route.js\",\"exportedName\":\"GET\"},\"00bb87be6471b55d62b7bf7d185dbf5032ea9b69e6\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/gemini-cli-settings/route\":{\"moduleId\":\"86453\",\"async\":false}},\"filename\":\"app/api/cli-tools/gemini-cli-settings/route.js\",\"exportedName\":\"DELETE\"},\"405a5bae50ea8d20c5908924406d40932ff2cda31c\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"38185\",\"async\":false},\"app/api/cli-tools/gemini-cli-settings/route\":{\"moduleId\":\"86453\",\"async\":false}},\"filename\":\"app/api/cli-tools/gemini-cli-settings/route.js\",\"exportedName\":\"POST\"},\"408a7d74d21f1e7ab170e13fe62db06ad6f4946f23\":{\"workers\":{\"app/api/cli-tools/antigravity-mitm/alias/route\":{\"moduleId\":\"71968\",\"async\":false}},\"filename\":\"app/api/cli-tools/antigravity-mitm/alias/route.js\",\"exportedName\":\"GET\"},\"40c156bd8949080b4bc36b6d70c948159bfd8b9983\":{\"workers\":{\"app/api/cli-tools/antigravity-mitm/alias/route\":{\"moduleId\":\"71968\",\"async\":false}},\"filename\":\"app/api/cli-tools/antigravity-mitm/alias/route.js\",\"exportedName\":\"PUT\"},\"402dc52d0c495dca9da9caf3b15b29c1c05963c684\":{\"workers\":{\"app/api/cli-tools/cowork-mcp-registry/route\":{\"moduleId\":\"30200\",\"async\":false}},\"filename\":\"app/api/cli-tools/cowork-mcp-registry/route.js\",\"exportedName\":\"GET\"},\"40a7142c53b6da19bc48e3311258c9f25ea82d9724\":{\"workers\":{\"app/api/cli-tools/cowork-mcp-tools/route\":{\"moduleId\":\"58398\",\"async\":false}},\"filename\":\"app/api/cli-tools/cowork-mcp-tools/route.js\",\"exportedName\":\"POST\"}},\"edge\":{},\"encryptionKey\":\"process.env.NEXT_SERVER_ACTIONS_ENCRYPTION_KEY\"}"
1
+ self.__RSC_SERVER_MANIFEST="{\"node\":{\"00334700f44c79cdac9ed861213b3219cbdcbc8397\":{\"workers\":{\"app/api/cli-tools/aider-settings/route\":{\"moduleId\":\"98504\",\"async\":false},\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false}},\"filename\":\"app/api/cli-tools/aider-settings/route.js\",\"exportedName\":\"DELETE\"},\"0035ca57694cf4150f1bb532cb6e95854e80b7fcf2\":{\"workers\":{\"app/api/cli-tools/aider-settings/route\":{\"moduleId\":\"98504\",\"async\":false},\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false}},\"filename\":\"app/api/cli-tools/aider-settings/route.js\",\"exportedName\":\"GET\"},\"40db1b48da191c869e7ff0268fc6bfce93542aee8b\":{\"workers\":{\"app/api/cli-tools/aider-settings/route\":{\"moduleId\":\"98504\",\"async\":false},\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false}},\"filename\":\"app/api/cli-tools/aider-settings/route.js\",\"exportedName\":\"POST\"},\"0060b72cc41caadecc5358ae8b6e0ec05c86712b02\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false}},\"filename\":\"app/api/cli-tools/all-statuses/route.js\",\"exportedName\":\"GET\"},\"003c878d4031378ee0e59f74d959d5f4de21cccf60\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/codex-settings/route\":{\"moduleId\":\"9277\",\"async\":false}},\"filename\":\"app/api/cli-tools/codex-settings/route.js\",\"exportedName\":\"DELETE\"},\"00b7c841d176740e93654d1338774155ceb8b64a9c\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/codex-settings/route\":{\"moduleId\":\"9277\",\"async\":false}},\"filename\":\"app/api/cli-tools/codex-settings/route.js\",\"exportedName\":\"GET\"},\"40c61438539b6759d0068d740ceabef017757716e0\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/codex-settings/route\":{\"moduleId\":\"9277\",\"async\":false}},\"filename\":\"app/api/cli-tools/codex-settings/route.js\",\"exportedName\":\"POST\"},\"00d49ebb3faebc66860d2be87705da4b9d3425aabf\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/opencode-settings/route\":{\"moduleId\":\"9574\",\"async\":false}},\"filename\":\"app/api/cli-tools/opencode-settings/route.js\",\"exportedName\":\"GET\"},\"40c7088852c7ebda247b5b26fc9c1d4f0b3ea6bad1\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/opencode-settings/route\":{\"moduleId\":\"9574\",\"async\":false}},\"filename\":\"app/api/cli-tools/opencode-settings/route.js\",\"exportedName\":\"DELETE\"},\"40d3a65d670ccb0556b558da70614c1b09f8b720a3\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/opencode-settings/route\":{\"moduleId\":\"9574\",\"async\":false}},\"filename\":\"app/api/cli-tools/opencode-settings/route.js\",\"exportedName\":\"POST\"},\"40e31175aa9f0257a043fe462bad72a60e9b686ff7\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/opencode-settings/route\":{\"moduleId\":\"9574\",\"async\":false}},\"filename\":\"app/api/cli-tools/opencode-settings/route.js\",\"exportedName\":\"PATCH\"},\"0046c9a76dc7263ce0ffab7f7c1914b324b9ada8dc\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/droid-settings/route\":{\"moduleId\":\"66719\",\"async\":false}},\"filename\":\"app/api/cli-tools/droid-settings/route.js\",\"exportedName\":\"DELETE\"},\"00a1fe9d7c57ab99f21c8acde7b5dbde7fe49e1467\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/droid-settings/route\":{\"moduleId\":\"66719\",\"async\":false}},\"filename\":\"app/api/cli-tools/droid-settings/route.js\",\"exportedName\":\"GET\"},\"403e70275c0bcbdc9af1ce8244abb48e8b97d4f8ca\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/droid-settings/route\":{\"moduleId\":\"66719\",\"async\":false}},\"filename\":\"app/api/cli-tools/droid-settings/route.js\",\"exportedName\":\"POST\"},\"005052c6076f66080744815d4d022dea2cf8c85765\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/openclaw-settings/route\":{\"moduleId\":\"27193\",\"async\":false}},\"filename\":\"app/api/cli-tools/openclaw-settings/route.js\",\"exportedName\":\"DELETE\"},\"008d2463b285a8ce8b32f8440c47b8143e28b5e67b\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/openclaw-settings/route\":{\"moduleId\":\"27193\",\"async\":false}},\"filename\":\"app/api/cli-tools/openclaw-settings/route.js\",\"exportedName\":\"GET\"},\"40e2ac394240516d7815c9def1ad7a2b0cbbebc4ba\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/openclaw-settings/route\":{\"moduleId\":\"27193\",\"async\":false}},\"filename\":\"app/api/cli-tools/openclaw-settings/route.js\",\"exportedName\":\"POST\"},\"002c2518f2c2ee117bfbb5c1c00eb21f15a56e7ed2\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/hermes-settings/route\":{\"moduleId\":\"18409\",\"async\":false}},\"filename\":\"app/api/cli-tools/hermes-settings/route.js\",\"exportedName\":\"GET\"},\"00f899f663af91ad52502d4de2db0cdd846a4bb896\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/hermes-settings/route\":{\"moduleId\":\"18409\",\"async\":false}},\"filename\":\"app/api/cli-tools/hermes-settings/route.js\",\"exportedName\":\"DELETE\"},\"40e80ff313da6afc9244407af7d5b73aaa82902cb5\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/hermes-settings/route\":{\"moduleId\":\"18409\",\"async\":false}},\"filename\":\"app/api/cli-tools/hermes-settings/route.js\",\"exportedName\":\"POST\"},\"0002b652233b77feadebc4b72b5db51847159b48a5\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/cowork-settings/route\":{\"moduleId\":\"63235\",\"async\":false}},\"filename\":\"app/api/cli-tools/cowork-settings/route.js\",\"exportedName\":\"GET\"},\"00ac20f20f19b42189f8d66884e527ff119629584b\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/cowork-settings/route\":{\"moduleId\":\"63235\",\"async\":false}},\"filename\":\"app/api/cli-tools/cowork-settings/route.js\",\"exportedName\":\"DELETE\"},\"408408135d619866814ae385df53635dad198781f3\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/cowork-settings/route\":{\"moduleId\":\"63235\",\"async\":false}},\"filename\":\"app/api/cli-tools/cowork-settings/route.js\",\"exportedName\":\"POST\"},\"001c3dcf0955332a8cbc54011c6c8afc4f8b803dcd\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/cline-settings/route\":{\"moduleId\":\"11928\",\"async\":false}},\"filename\":\"app/api/cli-tools/cline-settings/route.js\",\"exportedName\":\"GET\"},\"0074164bf937fa13658dd85f931f85cd01f69626a0\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/cline-settings/route\":{\"moduleId\":\"11928\",\"async\":false}},\"filename\":\"app/api/cli-tools/cline-settings/route.js\",\"exportedName\":\"DELETE\"},\"40780719dc873a2a0a9852f61648c182f5f5fca787\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/cline-settings/route\":{\"moduleId\":\"11928\",\"async\":false}},\"filename\":\"app/api/cli-tools/cline-settings/route.js\",\"exportedName\":\"POST\"},\"00c37a37a7208ba67bd3ce6ec05fe2d4d186f105d0\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/kilo-settings/route\":{\"moduleId\":\"31267\",\"async\":false}},\"filename\":\"app/api/cli-tools/kilo-settings/route.js\",\"exportedName\":\"GET\"},\"00cebd6c820eba4e32002784816f3378199a3b9124\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/kilo-settings/route\":{\"moduleId\":\"31267\",\"async\":false}},\"filename\":\"app/api/cli-tools/kilo-settings/route.js\",\"exportedName\":\"DELETE\"},\"4096b7c012f222e60e865149786489fcc3bb507f40\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/kilo-settings/route\":{\"moduleId\":\"31267\",\"async\":false}},\"filename\":\"app/api/cli-tools/kilo-settings/route.js\",\"exportedName\":\"POST\"},\"001c7e9377deec90d46af1f2b22d9f9d578fe10de7\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/deepseek-tui-settings/route\":{\"moduleId\":\"69209\",\"async\":false}},\"filename\":\"app/api/cli-tools/deepseek-tui-settings/route.js\",\"exportedName\":\"GET\"},\"008e80fbfd89df2d3a7f72310b20557859e7233bd4\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/deepseek-tui-settings/route\":{\"moduleId\":\"69209\",\"async\":false}},\"filename\":\"app/api/cli-tools/deepseek-tui-settings/route.js\",\"exportedName\":\"DELETE\"},\"404ad2d49a45d4313b66d2919a98bf80afb5055972\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/deepseek-tui-settings/route\":{\"moduleId\":\"69209\",\"async\":false}},\"filename\":\"app/api/cli-tools/deepseek-tui-settings/route.js\",\"exportedName\":\"POST\"},\"006d7966cec76cf470e70d777f5989373b1816669f\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/jcode-settings/route\":{\"moduleId\":\"37486\",\"async\":false}},\"filename\":\"app/api/cli-tools/jcode-settings/route.js\",\"exportedName\":\"GET\"},\"00941eb63ed1ef12302b8c86336c57fac0126adb01\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/jcode-settings/route\":{\"moduleId\":\"37486\",\"async\":false}},\"filename\":\"app/api/cli-tools/jcode-settings/route.js\",\"exportedName\":\"DELETE\"},\"402807b27ff12f81b44f8dc39da538ab0f8b772d7d\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/jcode-settings/route\":{\"moduleId\":\"37486\",\"async\":false}},\"filename\":\"app/api/cli-tools/jcode-settings/route.js\",\"exportedName\":\"POST\"},\"0052142c0a3a0139c2b75b1f13f0b59fcfd470cf29\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/grok-settings/route\":{\"moduleId\":\"2287\",\"async\":false}},\"filename\":\"app/api/cli-tools/grok-settings/route.js\",\"exportedName\":\"DELETE\"},\"0094a10ee57bbe23e9bd1daafe7d89a44b27932c8b\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/grok-settings/route\":{\"moduleId\":\"2287\",\"async\":false}},\"filename\":\"app/api/cli-tools/grok-settings/route.js\",\"exportedName\":\"GET\"},\"40853f06e53800d262f40f6816bc42d6e91d6052b3\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/grok-settings/route\":{\"moduleId\":\"2287\",\"async\":false}},\"filename\":\"app/api/cli-tools/grok-settings/route.js\",\"exportedName\":\"POST\"},\"0089d8297f2da370279da3055017d03a4ee89b6bc2\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/pi-settings/route\":{\"moduleId\":\"13775\",\"async\":false}},\"filename\":\"app/api/cli-tools/pi-settings/route.js\",\"exportedName\":\"GET\"},\"00b601eb4ce87c0fbdaf554b6c79884ffa8906047d\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/pi-settings/route\":{\"moduleId\":\"13775\",\"async\":false}},\"filename\":\"app/api/cli-tools/pi-settings/route.js\",\"exportedName\":\"DELETE\"},\"40658074b119d77c679545a1bf839ce05d9e95db2e\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/pi-settings/route\":{\"moduleId\":\"13775\",\"async\":false}},\"filename\":\"app/api/cli-tools/pi-settings/route.js\",\"exportedName\":\"POST\"},\"001570d5e19827c1b9b673620fb5fb6bce5674b455\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/gemini-cli-settings/route\":{\"moduleId\":\"87649\",\"async\":false}},\"filename\":\"app/api/cli-tools/gemini-cli-settings/route.js\",\"exportedName\":\"DELETE\"},\"005f6a7bafb211cc616143a6e0ccd86b6e472ee610\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/gemini-cli-settings/route\":{\"moduleId\":\"87649\",\"async\":false}},\"filename\":\"app/api/cli-tools/gemini-cli-settings/route.js\",\"exportedName\":\"GET\"},\"407a96bf4e02f613c9e31e8b3bce1aa5bf6eb96f53\":{\"workers\":{\"app/api/cli-tools/all-statuses/route\":{\"moduleId\":\"13297\",\"async\":false},\"app/api/cli-tools/gemini-cli-settings/route\":{\"moduleId\":\"87649\",\"async\":false}},\"filename\":\"app/api/cli-tools/gemini-cli-settings/route.js\",\"exportedName\":\"POST\"},\"407fae1b4939aa51f208ad40fc21f1394e762c8edc\":{\"workers\":{\"app/api/cli-tools/antigravity-mitm/alias/route\":{\"moduleId\":\"98643\",\"async\":false}},\"filename\":\"app/api/cli-tools/antigravity-mitm/alias/route.js\",\"exportedName\":\"PUT\"},\"40a5a743f71908a6be0628f272665f16e434ed52ba\":{\"workers\":{\"app/api/cli-tools/antigravity-mitm/alias/route\":{\"moduleId\":\"98643\",\"async\":false}},\"filename\":\"app/api/cli-tools/antigravity-mitm/alias/route.js\",\"exportedName\":\"GET\"},\"40e2cd63bd2c4e1b7c3f6e9422941a64679cc71e5e\":{\"workers\":{\"app/api/cli-tools/cowork-mcp-registry/route\":{\"moduleId\":\"13846\",\"async\":false}},\"filename\":\"app/api/cli-tools/cowork-mcp-registry/route.js\",\"exportedName\":\"GET\"},\"40d25b2e21ac6afc9ee643988377a25725e5971b05\":{\"workers\":{\"app/api/cli-tools/cowork-mcp-tools/route\":{\"moduleId\":\"79630\",\"async\":false}},\"filename\":\"app/api/cli-tools/cowork-mcp-tools/route.js\",\"exportedName\":\"POST\"}},\"edge\":{},\"encryptionKey\":\"process.env.NEXT_SERVER_ACTIONS_ENCRYPTION_KEY\"}"