switchboard-router 0.9.7 → 0.9.8
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.
- package/app/{.next-cli-build/static/chunks/1321-7be9b5de255ff89c.js → .next/static/chunks/1321-0003ef56aef2b3ab.js} +1 -1
- package/app/.next-cli-build/BUILD_ID +1 -1
- package/app/.next-cli-build/app-path-routes-manifest.json +6 -6
- package/app/.next-cli-build/build-manifest.json +2 -2
- package/app/.next-cli-build/prerender-manifest.json +3 -3
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error.html +1 -1
- package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_not-found.html +1 -1
- package/app/.next-cli-build/server/app/_not-found.rsc +3 -3
- package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/aider-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +5 -5
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/gemini-cli-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/grok-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +3 -3
- package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/route.js +1 -1
- package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/callback.html +1 -1
- package/app/.next-cli-build/server/app/callback.rsc +3 -3
- package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/index.html +1 -1
- package/app/.next-cli-build/server/app/index.rsc +3 -3
- package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/landing.html +1 -1
- package/app/.next-cli-build/server/app/landing.rsc +3 -3
- package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/login.html +1 -1
- package/app/.next-cli-build/server/app/login.rsc +3 -3
- package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app-paths-manifest.json +6 -6
- package/app/.next-cli-build/server/chunks/1350.js +1 -1
- package/app/.next-cli-build/server/chunks/194.js +1 -1
- package/app/.next-cli-build/server/chunks/369.js +1 -3
- package/app/.next-cli-build/server/chunks/7454.js +1 -1
- package/app/.next-cli-build/server/chunks/8400.js +29 -24
- package/app/.next-cli-build/server/chunks/869.js +1 -1
- package/app/.next-cli-build/server/chunks/8998.js +12 -9
- package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/app/.next-cli-build/server/pages/404.html +1 -1
- package/app/.next-cli-build/server/pages/500.html +1 -1
- package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
- package/app/{.next/static/chunks/1321-7be9b5de255ff89c.js → .next-cli-build/static/chunks/1321-0003ef56aef2b3ab.js} +1 -1
- package/app/open-sse/identity/tls/bin/darwin/arm64/switchboard-claude-tls +0 -0
- package/app/open-sse/identity/tls/bin/darwin/x64/switchboard-claude-tls +0 -0
- package/app/open-sse/identity/tls/bin/linux/arm64/switchboard-claude-tls +0 -0
- package/app/open-sse/identity/tls/bin/linux/x64/switchboard-claude-tls +0 -0
- package/app/open-sse/identity/tls/bin/win32/arm64/switchboard-claude-tls.exe +0 -0
- package/app/open-sse/identity/tls/bin/win32/x64/switchboard-claude-tls.exe +0 -0
- package/app/package.json +1 -1
- package/package.json +1 -1
- /package/app/.next/static/{1mePFzUplVCu8JBXupMRI → Kxe3gixpS84MCzX8yohZb}/_buildManifest.js +0 -0
- /package/app/.next/static/{1mePFzUplVCu8JBXupMRI → Kxe3gixpS84MCzX8yohZb}/_ssgManifest.js +0 -0
- /package/app/.next-cli-build/static/{1mePFzUplVCu8JBXupMRI → Kxe3gixpS84MCzX8yohZb}/_buildManifest.js +0 -0
- /package/app/.next-cli-build/static/{1mePFzUplVCu8JBXupMRI → Kxe3gixpS84MCzX8yohZb}/_ssgManifest.js +0 -0
|
@@ -63,9 +63,7 @@ ${b}`:b;return}let c=Array.isArray(a.messages)?a.messages:Array.isArray(a.input)
|
|
|
63
63
|
|
|
64
64
|
${h}`:Array.isArray(g.content)?g.content.push({type:"input_text",text:h}):g.content=h}else c.unshift({role:"system",content:b})}(a,c)}}},27226:(a,b,c)=>{c.d(b,{Jz:()=>f,Qf:()=>l,lP:()=>k});var d=c(35570);let e={claude:["claude","anthropic"],"gemini-cli":["gemini-cli"],antigravity:["antigravity"],codex:["codex"]};function f(a={},b={}){let c=a["user-agent"]||"";return"antigravity"===b.userAgent?"antigravity":/^GitHubCopilotChat\/\d+\.\d+\.\d+/i.test(c)&&a["editor-version"]&&a["editor-plugin-version"]?"github-copilot":/claude-(?:cli|code)\/\d+\.\d+\.\d+/i.test(c)?"claude":/^GeminiCLI\/\d+\.\d+\.\d+/i.test(c)?"gemini-cli":/^(?:codex_cli_rs|codex-cli)\/\d+\.\d+\.\d+/i.test(c)?"codex":/^Cline\/\d+\.\d+\.\d+/i.test(c)&&"extension"===a["x-client-type"]?"cline":/^QwenCode\/\d+\.\d+\.\d+/i.test(c)?"qwen":c.includes("deepseek-tui")?"deepseek-tui":null}let g={claude:"claude-cli",codex:"codex-cli","gemini-cli":"gemini-cli",antigravity:"antigravity",cline:"cline",qwen:"qwen","github-copilot":"copilot"},h=/^claude-(?:cli|code)\/(\d+\.\d+\.\d+)(?:\s|\(|$)/i,i=/_session_([a-f0-9-]+)$/;function j(a,b){let c=a?.[b]??a?.[b.toLowerCase()];return"string"==typeof c&&c.trim()?c:null}function k(a,b={},c={}){let e=g[a];if(!e||f(b,c)!==a)return!1;if("claude"!==a)return(0,d.I2)(e,b);if(!function(a={},b={}){if(!a||"object"!=typeof a)return!1;let c=j(a,"user-agent"),e=c?.match(h)?.[1],f=(0,d.zi)("claude-cli")?.version;return!!(e&&e===f&&j(a,"x-app")?.toLowerCase()==="cli"&&j(a,"anthropic-beta")&&j(a,"x-stainless-package-version")&&j(a,"x-stainless-runtime-version")&&j(a,"x-stainless-os")&&j(a,"x-stainless-arch")&&function(a){let b=a?.metadata?.user_id;if("string"!=typeof b||!b)return null;let c=b.match(i)?.[1];if(c)return c;if("{"!==b[0])return null;try{let a=JSON.parse(b)?.session_id;if("string"!=typeof a)return null;let c=a.trim();return c&&c.length<=256?c:null}catch{return null}}(b))}(b,c))return!1;let l=b["user-agent"]||b["User-Agent"];return(0,d.I2)(e,{...b,"user-agent":l.replace(/^claude-code\//i,"claude-cli/")})}function l(a,b){if(!a)return!1;let c=e[a];if(!c)return!1;let d=b.startsWith("anthropic-compatible")?"anthropic":b;return c.includes(d)}},28190:(a,b,c)=>{c.d(b,{F:()=>g});let d=[{triggers:["mcp__exa__web_search_exa","mcp__exa__web_fetch_exa"],strip:["WebSearch","WebFetch","mcp__workspace__web_fetch"]},{triggers:["mcp__tavily__tavily_search","mcp__tavily__tavily_extract"],strip:["WebSearch","WebFetch","mcp__workspace__web_fetch"]},{triggers:[/^mcp__browsermcp__/],strip:[/^mcp__Claude_in_Chrome__/]}];function e(a){return a?.name||a?.function?.name||""}function f(a,b){return"string"==typeof b?a===b:b instanceof RegExp&&b.test(a)}function g(a){if(!Array.isArray(a)||0===a.length)return{tools:a,stripped:[]};let b=a.map(e),c=new Set;for(let a of d)if(b.some(b=>a.triggers.some(a=>f(b,a))))for(let d of b)a.strip.some(a=>f(d,a))&&c.add(d);return 0===c.size?{tools:a,stripped:[]}:{tools:a.filter(a=>!c.has(e(a))),stripped:Array.from(c)}}},29461:(a,b,c)=>{c.d(b,{$R:()=>j,Fo:()=>h,MK:()=>i,qr:()=>k});var d=c(12407),e=c(6755),f=c(67677);let g=["temperature","top_p","top_k","max_tokens","max_completion_tokens","thinking","reasoning","enable_thinking","presence_penalty","frequency_penalty","seed","stop","tools","tool_choice","response_format","prediction","store","metadata","n","logprobs","top_logprobs","logit_bias","user","parallel_tool_calls"];function h(a,b){let c={messages:a.messages||[],model:a.model,stream:b};for(let b of g)void 0!==a[b]&&(c[b]=a[b]);return c}function i(a){return a&&"object"==typeof a?a.usage?.input_tokens!==void 0?{prompt_tokens:a.usage.input_tokens||0,completion_tokens:a.usage.output_tokens||0,cache_read_input_tokens:a.usage.cache_read_input_tokens,cache_creation_input_tokens:a.usage.cache_creation_input_tokens}:a.usage?.prompt_tokens!==void 0?{prompt_tokens:a.usage.prompt_tokens||0,completion_tokens:a.usage.completion_tokens||0,cached_tokens:a.usage.prompt_tokens_details?.cached_tokens,reasoning_tokens:a.usage.completion_tokens_details?.reasoning_tokens}:a.usageMetadata?{prompt_tokens:a.usageMetadata.promptTokenCount||0,completion_tokens:a.usageMetadata.candidatesTokenCount||0,cached_tokens:a.usageMetadata.cachedContentTokenCount||0,reasoning_tokens:a.usageMetadata.thoughtsTokenCount||0}:null:null}function j(a,b={}){return{provider:a.provider||"unknown",model:a.model||"unknown",connectionId:a.connectionId||void 0,timestamp:new Date().toISOString(),latency:a.latency||{ttft:0,total:0},tokens:a.tokens||{prompt_tokens:0,completion_tokens:0},request:a.request,providerRequest:a.providerRequest||null,providerResponse:a.providerResponse||null,response:a.response||{},pxpipe:a.pxpipe||void 0,rtk:a.rtk||void 0,status:a.status||"success",...b}}function k({provider:a,model:b,tokens:c,connectionId:g,clientKeyId:h,endpoint:i,requestId:j=null,label:l="USAGE"}){if(!c||"object"!=typeof c)return;let m=c.input_tokens??c.prompt_tokens??0,n=c.output_tokens??c.completion_tokens??0;if(0===m&&0===n)return;let o=new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"}),p=g?` | account=${g.slice(0,8)}...`:"";console.log(`${e.lm.green}[${o}] 📊 [${l}] ${a.toUpperCase()} | in=${m} | out=${n}${p}${e.lm.reset}`);let q=(0,f._6)(c)||{prompt_tokens:c.prompt_tokens??c.input_tokens??0,completion_tokens:c.completion_tokens??c.output_tokens??0};return(0,d.sZ)({provider:a||"unknown",model:b||"unknown",tokens:q,timestamp:new Date().toISOString(),connectionId:g||void 0,clientKeyId:h||void 0,endpoint:i||null,requestId:j||null})}},30369:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{SB:()=>f.SB}),c(46052),c(4630),c(28730),c(60290),c(27335),c(19956),c(48664),c(17717),c(66451),c(49263),c(41029),c(18129);var e=c(36362);c(15575);var f=c(48400);c(89865),c(6755);var g=a([e,f]);[e,f]=g.then?(await g)():g,d()}catch(a){d(a)}})},34267:(a,b,c)=>{c.d(b,{gH:()=>f});var d=c(57642),e=c(60290);function f({body:a,reexecute:b,signal:c,log:g,stallTimeoutMs:h=e.xM,baseDelayMs:i=500,onExhausted:j}){let k=new TextEncoder,l=null,m=!1,n=null,o=null,p=()=>{let a=n;n=null,o&&(c?.removeEventListener?.("abort",o),o=null),a?.()};return new ReadableStream({async start(e){l=a.getReader();let f=!1,q=null,r=async a=>{let b;if(!m&&(await (b=e.desiredSize,m||c?.aborted||null==b||b>0?Promise.resolve():new Promise(a=>{n=a,c?.addEventListener&&(o=p,c.addEventListener("abort",o,{once:!0}))})),!(m||c?.aborted)))try{e.enqueue(k.encode(a))}catch{m=!0}},s=()=>{if(!m)try{e.close()}catch{}},t=()=>{p();try{l.cancel().catch(()=>{})}catch{}if(m)return;let a=Error("Request aborted");a.name="AbortError";try{e.error(a)}catch{}},u=async a=>{try{await Promise.resolve(j?.(a,{upstreamError:q?.error||null}))}catch{}let b=q?.kind==="error_object"?q.line:`data: ${JSON.stringify({error:{code:502,status:"EMPTY_RESPONSE",message:a}})}`;await r(`${b}
|
|
65
65
|
|
|
66
|
-
`),s()};for(let a=0;;a++){let e=new TextDecoder,j="",k=null,m=!1,n="empty";for(;;){let a,b;if(c?.aborted)return t();try{a=await Promise.race([l.read(),new Promise(a=>{b=setTimeout(()=>a({__stalled:!0}),h)})])}catch{if(c?.aborted)return t();n="read_error";break}finally{clearTimeout(b)}if(a.__stalled){try{l.cancel().catch(()=>{})}catch{}n="stall";break}let{done:g,value:i}=a;if(g)break;let o=(j+=e.decode(i,{stream:!0})).split("\n");for(let a of(j=o.pop(),o)){let b;if(k)continue;let c=a.trim();if(!c.startsWith("data:")){await r(a+"\n");continue}let e=c.slice(5).trim();if(!e||"[DONE]"===e){await r(a+"\n");continue}try{b=JSON.parse(e)}catch{await r(a+"\n");continue}let g=function(a,b){let c=a.response||a;if(!c||"object"!=typeof c)return{action:"forward"};let e=c.error||a.error;if(e)return b?{action:"forward",terminal:!0}:{action:"hold",kind:"error_object",reason:e.status||e.message||"error",error:e};if(!c.candidates?.length&&c.promptFeedback?.blockReason)return{action:"forward",terminal:!0};let f=c.candidates?.[0];if(!f)return{action:"forward"};let g=!1;for(let a of f.content?.parts||[])if(a.functionCall||a.inlineData?.data||a.inline_data?.data||!0!==a.thought&&"string"==typeof a.text&&a.text.trim().length>0){g=!0;break}let h=f.finishReason&&String(f.finishReason).toUpperCase();return h?d.zh.has(h)||h===d.a_.MAX_TOKENS||g||b?{action:"forward",meaningful:g,terminal:!0}:{action:"hold",kind:d.lW.has(h)?"error_finish":"stop",reason:h}:{action:"forward",meaningful:g}}(b,f);if(g.meaningful&&(f=!0),"hold"===g.action){q=k={kind:g.kind,reason:g.reason,error:g.error||null,line:a};continue}g.terminal&&(m=!0),await r(a+"\n")}}if(f||m){let a=j+e.decode();!k&&a&&await r(a),s();return}let o=k?k.reason:n;if(g?.warn?.("STREAM",`ANTIGRAVITY | empty (${o}) | attempt ${a+1}/3`),a>=2)return u(`empty response from upstream (${o}) after ${a+1} attempts`);if(await function(a,b){return new Promise(c=>{let d,e=()=>{clearTimeout(d),c()};d=setTimeout(()=>{a?.removeEventListener?.("abort",e),c()},b),a?.addEventListener?.("abort",e,{once:!0})})}(c,i*2**a),c?.aborted)return t();try{l=(await b()).getReader()}catch(a){if(a?.name==="AbortError"||c?.aborted)return t();return u(a?.message||"retry request failed")}}},pull(){p()},cancel(a){m=!0,p();try{l?.cancel(a)?.catch?.(()=>{})}catch{}}})}},36362:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{w:()=>O});var e=c(17717),f=c(48664),g=c(94454),h=c(19956),i=c(43788),j=c(6755),k=c(15575),l=c(41029),m=c(18129),n=c(70718),o=c(27335),p=c(4630),q=c(89865),r=c(60290),s=c(2735),t=c(12407),u=c(48400),v=c(29461),w=c(78255),x=c(15142),y=c(61229),z=c(34267),A=c(27226),B=c(28190),C=c(10640),D=c(37208),E=c(16799),F=c(92),G=c(12197),H=c(54070),I=c(39232),J=c(90197),K=c(43904),L=c(94501),M=c(96145),N=a([u]);u=(N.then?(await N)():N)[0];let P=new Set([h.h.GEMINI,h.h.GEMINI_CLI,h.h.ANTIGRAVITY,h.h.VERTEX]);async function O({body:a,modelInfo:b,credentials:c,log:d,onCredentialsRefreshed:N,onRequestSuccess:Q,onDisconnect:R,onUpstreamEmptyExhausted:S,clientRawRequest:T,connectionId:U,userAgent:V,clientKeyId:W,ccFilterNaming:X,rtkEnabled:Y,vaultEnabled:Z,vaultThresholdKB:$,vaultTtlHours:_,vaultConversationId:aa,headroomEnabled:ab,headroomUrl:ac,headroomCompressUserMessages:ad,cavemanEnabled:ae,cavemanLevel:af,ponytailEnabled:ag,ponytailLevel:ah,pxpipeEnabled:ai,pxpipeMinChars:aj,pxpipeTimeoutMs:ak,pxpipeTransform:al,onPxpipeEvent:am,sourceFormatOverride:an,providerThinking:ao,bypassNativePassthrough:ap,vaultInternal:aq,abortSignal:ar}){let as,at,au,av,aw,ax,{provider:ay,model:az}=b,aA=Date.now(),aB=an||(0,e.Tz)(a),aC=(0,s.c)(a,az,V,X);if(aC)return aC;let aD=o.Xg[ay]||ay,aE=(0,o.ux)(aD,az),aF=(0,o.ez)(aD,az),aG=aE||(0,e.jJ)(ay,c),aH=(0,e.oF)(ay,aB,aF),aI=aH||(0,e.oF)(ay,aG,aF),aJ=aH?.format===aB;c&&(c.runtimeTransport=aI||void 0);let aK=aJ?aB:aI?.format||aG,aL=(0,o.cY)(aD,az),aM=(0,o.kt)(aD,az);if(ao?.mode&&"auto"!==ao.mode){let b=ao.mode;"on"!==b||a.thinking?"off"!==b||a.thinking?a.reasoning_effort||(a={...a,reasoning_effort:b}):a={...a,thinking:{type:"disabled"}}:(console.log("Injecting provider-level thinking config override: on"),a={...a,thinking:{type:"enabled",budget_tokens:1e4}})}let aN=!0===a.stream||aB===h.h.ANTIGRAVITY||aB===h.h.GEMINI||aB===h.h.GEMINI_CLI,aO=p.xq[ay]?.forceStream===!0,aP=!!aO||!1!==a.stream,aQ=(0,o.OA)(aD,az);("imageGen"===aQ||/image|imagen|image-generation/i.test(az))&&("antigravity"===ay||"gemini-cli"===ay)&&(aP=!1);let aR=(0,A.Jz)(T?.headers||{},a);"deepseek-tui"===aR&&!0!==a.stream&&(aP=!1);let aS=T?.headers?.accept||"",aT=aS.includes("application/json"),aU=aS.includes("text/event-stream");!aT||aU||!0===a.stream||aO||(aP=!1),a&&"object"==typeof a&&(a={...a,stream:aP});let aV=await (0,n.q7)(aB,aK,az);T&&aV.logClientRawRequest(T.endpoint,T.body,T.headers),aV.logRawRequest(a),d?.debug?.("FORMAT",`${aB} → ${aK} | stream=${aP}`);let aW=(0,A.Jz)(T?.headers||{},a);(0,A.lP)(aW,T?.headers||{},a);let aX=!ap&&(0,A.Qf)(aW,ay);if(c&&(c.rawHeaders=T?.headers||{}),!aX){let b=(0,K.nl)(ay,az);(0,L.X)(a,aB,b)&&d?.debug?.("MODALITY",`stripped unsupported media for ${ay}/${az}`);try{let b=await (0,M.C)(a,aB,aK,{signal:ar});b>0&&d?.debug?.("MODALITY",`prefetched ${b} remote image(s) for ${aK}`)}catch(a){d?.warn?.("MODALITY",`image prefetch failed: ${a.message}`)}}let aY=(0,C.Ay)(a);if(aY>0&&d?.debug?.("TOOLCLEAN",`pre-translation: stripped ${aY} orphaned tool result(s)`),aX)d?.debug?.("PASSTHROUGH",`${aW} → ${ay} | native lossless`),as={...a,model:(0,g.kD)(aM)},"claude"===aW&&(0,i.ui)(as,as.model);else{if(!(as=(0,f.GH)(aB,aK,aM,a,aP,c,ay,aV,aL,U,aW)))return(0,t.uw)(az,ay,U,!1,!0),(0,q.A1)(r.gx.BAD_REQUEST,`Failed to translate request for ${aB} → ${aK}`);at=as._toolNameMap,delete as._toolNameMap,as.model=(0,g.kD)(aM)}if("claude"===aW&&Array.isArray(as.tools)){let{tools:a,stripped:b}=(0,B.F)(as.tools);b.length>0&&(as.tools=a,d?.debug?.("TOOLDEDUP",`stripped ${b.length}: ${b.slice(0,3).join(", ")}${b.length>3?"...":""}`))}let aZ=aX?aB:aK;"tts"===(0,o.OA)(aD,az)&&as.messages&&(as.messages=as.messages.filter(a=>"tool"!==a.role),delete as.tools);let a$=null;try{if(Z&&aa&&Array.isArray(as?.tools)&&as.tools.length>0&&(aB===h.h.OPENAI||aB===h.h.CLAUDE)){let a=1024*(0,G.u1)($??8),b=3600*Math.max(1,Number(_??24))*1e3;a$=await (0,G.f3)(as,{conversationId:aa,thresholdBytes:a,ttlMs:b,log:d})}}catch(a){d?.warn?.("VAULT",`store failed (dropped): ${a?.message||a}`)}let a_=T?.headers?.[r.SA]?.toLowerCase()!=="off",a0=(0,F.BI)(as,a_&&Y),a1=(0,F.fT)(a0);if(a1&&console.log(a1),a$?.vaulted>0){let a=a$.bytesBefore-a$.bytesAfter;(0,H.DL)(a$.vaulted,a),d?.info?.("VAULT",`externalized ${a$.vaulted} tool result(s), saved ${a}B`)}let a2={},a3=await (0,I.SI)(as,{enabled:a_&&ab,url:ac,model:aM,format:aZ,compressUserMessages:ad,diagnostics:a2}),a4=(0,I.Nv)(a3),a5=(0,I.O2)(a2);a4?(d?.info?.("HEADROOM",`${a4}${a5?` | ${a5}`:""}`),(0,I.cB)(a3,a2)&&d?.warn?.("HEADROOM",`reported token delta, but outbound JSON shrank <5%; provider may bill near-original payload | ${a5}`)):a_&&ab&&d?.warn?.("HEADROOM",`skipped: ${a2.reason||"compression unavailable"}${a2.endpoint?` (${a2.endpoint})`:""}`);let a6=(0,C.Ay)(as);a6>0&&d?.debug?.("TOOLCLEAN",`post-compression: stripped ${a6} orphaned tool result(s)`),a_&&ae&&af&&((0,D.p)(as,aZ,af),d?.debug?.("CAVEMAN",`${af} | ${aZ}`)),a_&&ag&&ah&&((0,E.U)(as,aZ,ah),d?.debug?.("PONYTAIL",`${ah} | ${aZ}`));let a7=null;if(a_&&ai){let a=await (0,J.H)(as,{enabled:!0,format:aZ,model:aM,minChars:aj,timeoutMs:ak,transform:al});a7=a.summary;let b=(0,J._)(a7);b?d?.info?.("PXPIPE",b):d?.debug?.("PXPIPE",`skipped: ${a7?.reason||"unknown"}`),a.body&&(as=a.body);try{am&&am({provider:ay,model:az,...a7})}catch{}}if(as&&"object"==typeof as)if(P.has(aZ)){let{stream:a,request:b,...c}=as;if(b&&"object"==typeof b){let{stream:a,...d}=b;as={...c,request:d}}else as=c}else as.stream!==aP&&(as={...as,stream:aP});aX&&"claude"===aW&&(0,i._W)(as);let a8=(0,u.SB)(ay);(0,t.uw)(az,ay,U,!0),aq||(0,t.E5)({model:az,provider:ay,connectionId:U,status:"PENDING"}).catch(()=>{});let a9=as.messages?.length||as.input?.length||as.contents?.length||as.request?.contents?.length||0;d?.debug?.("REQUEST",`${ay.toUpperCase()} | ${az} | ${a9} msgs`);let ba=(0,k.jd)({onDisconnect:a=>{(0,t.uw)(az,ay,U,!1),R&&R(a)},onError:()=>(0,t.uw)(az,ay,U,!1),log:d,provider:ay,model:az});if(ar)if(ar.aborted)try{ba.abort()}catch{}else ar.addEventListener("abort",()=>{try{ba.abort()}catch{}},{once:!0});let bb={connectionProxyEnabled:c?.providerSpecificData?.connectionProxyEnabled===!0,connectionProxyUrl:c?.providerSpecificData?.connectionProxyUrl||"",connectionNoProxy:c?.providerSpecificData?.connectionNoProxy||"",vercelRelayUrl:c?.providerSpecificData?.vercelRelayUrl||""};if(bb.vercelRelayUrl){let a=c?.connectionName||c?.connectionId||"unknown",b=c?.providerSpecificData?.connectionProxyPoolId||"none";d?.info?.("PROXY",`${ay.toUpperCase()} | ${az} | conn=${a} | pool=${b} | vercel-relay=${bb.vercelRelayUrl}`)}else if(bb.connectionProxyEnabled&&bb.connectionProxyUrl){let a=bb.connectionProxyUrl;try{let b=new URL(bb.connectionProxyUrl),c=b.hostname||"",d=b.port?`:${b.port}`:"",e=b.protocol||"http:";a=`${e}//${c}${d}`}catch{}let b=c?.providerSpecificData?.connectionProxyPoolId||"none",e=c?.connectionName||c?.connectionId||"unknown";d?.info?.("PROXY",`${ay.toUpperCase()} | ${az} | conn=${e} | pool=${b} | url=${a}`)}if(bb.connectionProxyEnabled&&bb.connectionNoProxy){let a=c?.connectionName||c?.connectionId||"unknown";d?.debug?.("PROXY",`${ay.toUpperCase()} | ${az} | conn=${a} | no_proxy=${bb.connectionNoProxy}`)}try{let a=await a8.execute({model:az,body:as,stream:aP,credentials:c,signal:ba.signal,log:d,proxyOptions:bb});au=a.response,av=a.url,aw=a.headers,ax=a.transformedBody,aV.logTargetRequest(av,aw,ax)}catch(c){if((0,t.uw)(az,ay,U,!1,!0),(0,t.ox)((0,v.$R)({provider:ay,model:az,connectionId:U,latency:{ttft:0,total:Date.now()-aA},tokens:{prompt_tokens:0,completion_tokens:0},request:(0,v.Fo)(a,aP),providerRequest:as||null,response:{error:c.message||String(c),status:"AbortError"===c.name?499:502,thinking:null},status:"error",pxpipe:a7||void 0,rtk:a0||void 0})).catch(()=>{}),"AbortError"===c.name)return ba.handleError(c),(0,q.A1)(499,"Request aborted");let b=(0,q.lR)(c,ay,az,r.gx.BAD_GATEWAY);return console.log(`${j.lm.red}[ERROR] ${b}${j.lm.reset}`),(0,q.A1)(r.gx.BAD_GATEWAY,b)}if(!a8.noAuth&&(au.status===r.gx.UNAUTHORIZED||au.status===r.gx.FORBIDDEN))try{let a=await (0,l.qZ)(async()=>{let a=await (0,m.MF)(ay,c,()=>a8.refreshCredentials(c,d,bb));return a?.refreshToken&&a.refreshToken!==c.refreshToken&&(a.accessToken&&(c.accessToken=a.accessToken),c.refreshToken=a.refreshToken),a},3,d);if(a?.accessToken||a?.copilotToken){if(d?.info?.("TOKEN",`${ay.toUpperCase()} | refreshed`),Object.assign(c,a),N)try{await N(a)}catch(a){d?.warn?.("TOKEN",`onCredentialsRefreshed failed: ${a.message}`)}try{let a=await a8.execute({model:az,body:as,stream:aP,credentials:c,signal:ba.signal,log:d,proxyOptions:bb});try{await au.body?.cancel?.()}catch{}au=a.response,av=a.url}catch{d?.warn?.("TOKEN",`${ay.toUpperCase()} | retry after refresh failed`)}}else d?.warn?.("TOKEN",`${ay.toUpperCase()} | refresh failed`)}catch(a){d?.warn?.("TOKEN",`${ay.toUpperCase()} | refresh threw: ${a.message}`)}if(!au.ok){(0,t.uw)(az,ay,U,!1,!0);let{statusCode:b,message:c,resetsAtMs:d}=await (0,q.zL)(au,a8);(0,t.ox)((0,v.$R)({provider:ay,model:az,connectionId:U,latency:{ttft:0,total:Date.now()-aA},tokens:{prompt_tokens:0,completion_tokens:0},request:(0,v.Fo)(a,aP),providerRequest:ax||as||null,response:{error:c,status:b,thinking:null},status:"error",pxpipe:a7||void 0,rtk:a0||void 0})).catch(()=>{});let e=(0,q.lR)(Error(c),ay,az,b);return console.log(`${j.lm.red}[ERROR] ${e}${j.lm.reset}`),aV.logError(Error(c),ax||as),(0,q.A1)(b,e,d)}if("antigravity"===ay&&aP&&au.body){let a=async()=>{let a=await a8.execute({model:az,body:as,stream:aP,credentials:c,signal:ba.signal,log:d,proxyOptions:bb});if(!a.response.ok){let{statusCode:b,message:c}=await (0,q.zL)(a.response,a8);throw Error(`[${b}] ${c}`)}if(!a.response.body)throw Error("upstream returned no body");return a.response.body};au=new Response((0,z.gH)({body:au.body,reexecute:a,signal:ba.signal,log:d,onExhausted:(a,{upstreamError:b}={})=>{if(!S)return;let c=a8.parseRetryFromErrorMessage?.(b?.message||a);return S((0,q.lR)(Error(a),ay,az,r.gx.BAD_GATEWAY),c?Date.now()+c:void 0)}}),{status:au.status,headers:au.headers})}let bc=`${Date.now()}-${Math.random().toString(36).slice(2,11)}`,bd={provider:ay,model:az,body:a,stream:aP,translatedBody:as,finalBody:ax,requestStartTime:aA,connectionId:U,clientKeyId:W,clientRawRequest:T,onRequestSuccess:Q,requestId:bc,pxpipe:a7||void 0},be=a=>{aq||(0,t.E5)({model:az,provider:ay,connectionId:U,...a}).catch(()=>{})},bf=()=>(0,t.uw)(az,ay,U,!1);if(!aN&&aO){let a=await (0,w.I)({...bd,providerResponse:au,sourceFormat:aB,targetFormat:aK,trackDone:bf,appendLog:be});if(a)return ba.handleComplete(),a}if(!aP){let a=await (0,x.N)({...bd,providerResponse:au,sourceFormat:aB,targetFormat:aK,reqLogger:aV,toolNameMap:at,trackDone:bf,appendLog:be});return ba.handleComplete(),a}let{onStreamComplete:bg,streamDetailId:bh}=(0,y.$)({...bd});return(0,y.M)({...bd,providerResponse:au,sourceFormat:aB,targetFormat:aK,userAgent:V,reqLogger:aV,toolNameMap:at,streamController:ba,onStreamComplete:bg,streamDetailId:bh})}d()}catch(a){d(a)}})},37208:(a,b,c)=>{c.d(b,{p:()=>n});var d=c(17429);let e="Code blocks, file paths, commands, errors, URLs: keep exact. Security warnings, irreversible action confirmations, multi-step ordered sequences: write normal. Resume terse style after.",f='Not: "Sure! I\'d be happy to help you with that. The issue you\'re experiencing is likely caused by..." Yes: "Bug in auth middleware. Token expiry check use `<` not `<=`. Fix:"',g="Auto-Clarity: drop caveman for security warnings, irreversible actions, multi-step sequences where fragment ambiguity risks misread, or when user repeats a question. Resume after the clear part.",h="ACTIVE EVERY RESPONSE. No revert after many turns. No filler drift. Still active if unsure.",i="No invented abbreviations. Standard well-known tech acronyms (DB, API, HTTP, URL, JSON, ID, OS, CPU) OK. Names of code symbols, function names, API names, error strings: keep verbatim.",j="Preserve the user's dominant language. User wrote Vietnamese, reply Vietnamese. User wrote English, reply English. Wenyan/classical-Chinese levels override this language-preservation rule. Code identifiers, error strings, file paths, commands: keep in their original form regardless of language.",k='No self-reference. Do not name or announce the style (no "caveman mode", no "me caveman think", no "compressed mode active"). Just respond.',l='No decorative emoji. No narrating tool calls ("I will now search", "I used X to find Y"). No status phrases ("Sure!", "Of course!", "I\'d be happy to"). No causal arrow shorthand ("A -> B -> fails"). State the thing, the action, the reason. Then next step.',m={lite:["Respond tersely. Keep grammar and full sentences but drop filler, hedging and pleasantries (just/really/basically/sure/of course/I'd be happy to). Pattern: state the thing, the action, the reason. Then next step.",f,e,g,h,i,j,k,l].join(" "),full:["Respond like terse caveman. All technical substance stay exact, only fluff die. Drop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries, hedging. Fragments OK. Short synonyms (big not extensive, fix not implement a solution for). Pattern: [thing] [action] [reason]. [next step].",f,e,g,h,i,j,k,l].join(" "),ultra:["Respond ultra-terse. Maximum compression. Telegraphic. Strip conjunctions. One word when one word enough. Pattern: [thing] [action] [reason]. [next step].",f,e,g,h,i,j,k,l].join(" "),"wenyan-lite":["Respond semi-classical. Drop filler/hedging but keep grammar structure, classical register. Use classical Chinese sentence patterns where natural. Keep English for technical terms.",f,e,g,h,i,j,k,l].join(" "),wenyan:["Respond classical Chinese (文言文). Maximum classical terseness. 80-90% character reduction. Classical sentence patterns, verbs precede objects, subjects often omitted, classical particles (之/乃/為/其). Keep English for code, commands, function names, API names, error strings.",f,e,g,h,i,j,k,l].join(" "),"wenyan-ultra":["Respond extreme classical compression (文言文 ultra). Maximum compression, ultra terse. Same classical rules as wenyan-full but even more compressed. One classical particle per clause.",f,e,g,h,i,j,k,l].join(" ")};function n(a,b,c){(0,d.J)(a,b,m[c])}},39232:(a,b,c)=>{c.d(b,{Nv:()=>l,O2:()=>m,SI:()=>k,cB:()=>n});var d=c(37377),e=c(29229),f=c(97579);function g(a){try{return new TextEncoder().encode(JSON.stringify(a)||"").length}catch{return 0}}function h(a){let b=Array.isArray(a?.messages)?a.messages:Array.isArray(a?.input)?a.input:null,c=b?.filter(a=>a?.role==="tool"||a?.role==="function"||a?.tool_calls?.length||a?.content?.some?.(a=>a?.type==="tool_use"||a?.type==="tool_result"))||[];return{bodyBytes:g(a),messageBytes:b?g(b):0,toolSchemaBytes:g(a?.tools||[]),toolHistoryBytes:g(c)}}function i(a,b){a&&!a.reason&&(a.reason=b)}async function j(a,b,c,d,e,f){let g,h=function(a){try{let b=new URL(a);return b.pathname=`${b.pathname.replace(/\/$/,"")}/v1/compress`,b.hash="",b.toString()}catch{let[b,c=""]=String(a).replace(/#.*$/,"").split("?",2),d=`${b.replace(/\/$/,"")}/v1/compress`;return c?`${d}?${c}`:d}}(a);f.endpoint=function(a){try{let b=new URL(a);return b.username="",b.password="",b.search="",b.hash="",b.toString()}catch{return String(a).replace(/\/\/[^/@\s]+@/,"//").replace(/[?#].*$/,"")}}(h);let j={messages:b,model:c};e&&(j.config={compress_user_messages:!0});try{g=await fetch(h,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(j),signal:AbortSignal.timeout(d)})}catch(d){var k;let a,b,c;return i(f,`request failed: ${(k=d,a=k?.cause,b=a?.code||k?.code,c=String(a?.message||k?.message||String(k)).replace(/\/\/[^/@\s]+@/g,"//").replace(/(https?:\/\/[^\s?#]+)[?#][^\s)]*/g,"$1"),b?`${b}: ${c}`:c)}`),null}if(!g.ok)return i(f,`proxy returned HTTP ${g.status}`),null;let l=await g.json();return Array.isArray(l?.messages)?l:(i(f,"proxy response missing messages[]"),null)}async function k(a,{enabled:b,url:c,model:g,format:l,compressUserMessages:m,timeoutMs:n=3e3,diagnostics:o=null}={}){if(!b)return i(o,"disabled"),null;if(!c)return i(o,"missing proxy URL"),null;if(!a)return i(o,"missing request body"),null;try{if(o&&(o.before=h(a)),"claude"===l){let b=(0,d.t)(g,a,!1);if(!Array.isArray(b?.messages))return i(o,"Claude request did not translate to messages[]"),null;let f=await j(c,b.messages,g,n,m,o||{});if(!f)return null;let k=(0,e.p)(g,{...b,messages:f.messages},!1);return Array.isArray(k?.messages)&&(a.messages=k.messages),k?.system!==void 0&&(a.system=k.system),o&&(o.after=h(a)),f}if("openai-responses"===l){if(Array.isArray(a?.input)&&a.input.some(a=>!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.type&&"message"!==a.type))return i(o,"skipped: openai-responses tool/reasoning input is not safe to compress"),null;let b=(0,f.Z)(g,a,!1);if(!Array.isArray(b?.messages))return null;let d=await j(c,b.messages,g,n,m,o||{});if(!d)return null;let e=(0,f.h)(g,{...b,input:void 0,messages:d.messages},!1);return Array.isArray(e?.input)&&(a.input=e.input),o&&(o.after=h(a)),d}let b=Array.isArray(a.messages)?"messages":Array.isArray(a.input)?"input":null;if(!b)return i(o,`unsupported ${l||"unknown"} request shape`),null;let k=await j(c,a[b],g,n,m,o||{});if(!k)return null;return a[b]=k.messages,o&&(o.after=h(a)),k}catch(a){return i(o,`unexpected error: ${a?.message||String(a)}`),null}}function l(a){if(!a)return null;let b=a.tokens_before||0,c=a.tokens_after||0,d=a.tokens_saved||0,e=b>0?(d/b*100).toFixed(1):"0";return`reported token delta=${d} before=${b}${c?` after=${c}`:""} (${e}%)`.trim()}function m(a){let b=a?.before,c=a?.after;if(!b||!c)return"";let d=b.bodyBytes>0?((b.bodyBytes-c.bodyBytes)/b.bodyBytes*100).toFixed(1):"0.0";return`body=${b.bodyBytes}B→${c.bodyBytes}B messages=${b.messageBytes}B→${c.messageBytes}B tools=${b.toolSchemaBytes||0}B→${c.toolSchemaBytes||0}B toolHistory=${b.toolHistoryBytes||0}B→${c.toolHistoryBytes||0}B effective=${d}%`}function n(a,b,c=.05){if(!a?.tokens_saved||a.tokens_saved<=0)return!1;let d=b?.before?.bodyBytes||0,e=b?.after?.bodyBytes||0;return!(d<=0)&&!(e<=0)&&e>=d*(1-c)}},48330:(a,b,c)=>{c.d(b,{Hr:()=>j,nu:()=>h,u9:()=>k,yx:()=>g});var d=c(19956),e=c(45894);let f=new Set(["response.completed","response.done","response.failed","error"]);function g(a,b){return a||(b&&"string"==typeof b.type?b.type:null)}function h(a,b){let c=g(a,b);if(f.has(c))return!0;let d=b?.response?.status;return"completed"===d||"failed"===d}let i=new TextEncoder;function j(){return i.encode(`${k()}data: [DONE]
|
|
67
|
-
|
|
68
|
-
`)}function k(){return(0,e.v8)({event:"response.failed",data:{type:"response.failed",response:{id:`resp_${Date.now()}`,status:"failed",error:{type:"stream_error",code:"stream_disconnected",message:"stream closed before response.completed"}}}},d.h.OPENAI_RESPONSES)}},49612:(a,b,c)=>{c.d(b,{g:()=>k,p:()=>l});var d=c(19956),e=c(98173),f=c(57642);function g(a){if(!a)return{};if("object"==typeof a)return a;try{return JSON.parse(a)}catch{return{}}}function h(a){return a?.choices?.[0]||{}}function i(a){return h(a).message||{}}function j(a){let b=i(a).tool_calls;return Array.isArray(b)?b:[]}function k(a,b){let c=Array.isArray(a?.output)?a.output:[],d=c.filter(a=>a?.type==="reasoning").flatMap(a=>Array.isArray(a.summary)?a.summary:[]).map(a=>a?.text||"").join(""),e=c.filter(a=>a?.type==="message"),f=[...e].reverse().find(a=>(Array.isArray(a.content)?a.content:[]).some(a=>"string"==typeof a.text&&a.text.length>0))||e[e.length-1]||null,g=(Array.isArray(f?.content)?f.content:[]).map(a=>("output_text"===a.type||"string"==typeof a.text)&&a.text||"").join(""),h=c.filter(a=>a?.type==="function_call").map((a,b)=>({id:a.call_id||`call_${a.name||"tool"}_${b}`,type:"function",function:{name:a.name||"",arguments:"string"==typeof a.arguments?a.arguments:JSON.stringify(a.arguments||{})}})),i=a?.usage||{},j={role:"assistant",content:g||(h.length>0?null:"")};d&&(j.reasoning_content=d),h.length>0&&(j.tool_calls=h);let k=a?.status==="completed"||a?.status==="done",l=h.length>0?"tool_calls":k?"stop":a?.status||"stop";return{id:a?.id||`chatcmpl-${Date.now()}`,object:"chat.completion",created:a?.created_at||Math.floor(Date.now()/1e3),model:a?.model||b||"unknown",choices:[{index:0,message:j,finish_reason:l}],usage:{prompt_tokens:i.input_tokens||i.prompt_tokens||0,completion_tokens:i.output_tokens||i.completion_tokens||0,total_tokens:i.total_tokens||(i.input_tokens||i.prompt_tokens||0)+(i.output_tokens||i.completion_tokens||0)}}}function l(a,b){switch(b){case d.h.CLAUDE:return function(a){if(!a?.choices?.[0])return a;let b=h(a),c=i(a),f=[],k=c.reasoning_content||c.provider_specific_fields?.reasoning_content||"";for(let b of(k&&f.push({type:"thinking",thinking:k}),"string"==typeof c.content&&c.content.length>0&&f.push({type:"text",text:c.content}),j(a))){let a=b.function||{};f.push({type:"tool_use",id:b.id||`toolu_${Date.now()}_${f.length}`,name:a.name||b.name||"",input:g(a.arguments||b.arguments)})}0===f.length&&f.push({type:"text",text:""});let l=a.usage||{};return{id:String(a.id||`msg_${Date.now()}`).replace(/^chatcmpl-/,""),type:"message",role:"assistant",model:a.model||"unknown",content:f,stop_reason:(0,e.Q)(b.finish_reason,d.h.CLAUDE),stop_sequence:null,usage:{input_tokens:l.prompt_tokens||l.input_tokens||0,output_tokens:l.completion_tokens||l.output_tokens||0}}}(a);case d.h.GEMINI:case d.h.GEMINI_CLI:case d.h.ANTIGRAVITY:case d.h.VERTEX:return function(a){if(!a?.choices?.[0])return a;let b=i(a),c=a.usage||{},d=[],e=b.reasoning_content||b.provider_specific_fields?.reasoning_content||"";for(let c of(e&&d.push({text:e,thought:!0}),"string"==typeof b.content&&b.content.length>0&&d.push({text:b.content}),j(a))){let a=c.function||{};d.push({functionCall:{name:a.name||c.name||"",args:g(a.arguments||c.arguments)}})}return 0===d.length&&d.push({text:""}),{response:{candidates:[{content:{role:"model",parts:d},finishReason:function(a){switch(a){case f.bC.LENGTH:return f.a_.MAX_TOKENS;case f.bC.CONTENT_FILTER:return f.a_.SAFETY;default:return f.a_.STOP}}(h(a).finish_reason),index:0}],usageMetadata:{promptTokenCount:c.prompt_tokens||c.input_tokens||0,candidatesTokenCount:c.completion_tokens||c.output_tokens||0,totalTokenCount:c.total_tokens||(c.prompt_tokens||0)+(c.completion_tokens||0)},modelVersion:a.model||"unknown",responseId:a.id||`resp_${Date.now()}`}}}(a);case d.h.OLLAMA:return function(a){if(!a?.choices?.[0])return a;let b=h(a),c=i(a),d={role:"assistant",content:"string"==typeof c.content?c.content:""};c.reasoning_content&&(d.thinking=c.reasoning_content);let e=j(a).map(a=>{let b=a.function||{};return{id:a.id,function:{name:b.name||a.name||"",arguments:g(b.arguments||a.arguments)}}});e.length>0&&(d.tool_calls=e);let f=a.usage||{};return{model:a.model||"unknown",created_at:a.created?new Date(1e3*a.created).toISOString():new Date().toISOString(),message:d,done:!0,done_reason:b.finish_reason||"stop",prompt_eval_count:f.prompt_tokens||f.input_tokens||0,eval_count:f.completion_tokens||f.output_tokens||0}}(a);case d.h.OPENAI_RESPONSES:case d.h.OPENAI_RESPONSE:return function(a){if(!a?.choices?.[0])return a;let b=i(a),c=a.usage||{},d=[],e=0,f=b.reasoning_content||b.provider_specific_fields?.reasoning_content||"";f&&(d.push({type:"reasoning",id:`rs_${a.id||Date.now()}_${e}`,summary:[{type:"summary_text",text:f}]}),e++);let g="string"==typeof b.content?b.content:"";g&&(d.push({type:"message",id:`msg_${a.id||Date.now()}_${e}`,role:"assistant",content:[{type:"output_text",text:g,annotations:[],logprobs:[]}]}),e++);let k=j(a);if(k.length>0)for(let a of k){let b=a.function||{},c=a.id||`call_${b.name||"tool"}_${e}`;d.push({type:"function_call",id:`fc_${c}`,call_id:c,name:b.name||a.name||"",arguments:"string"==typeof b.arguments?b.arguments:JSON.stringify(b.arguments||{})}),e++}else g||f||d.push({type:"message",id:`msg_${a.id||Date.now()}_${e}`,role:"assistant",content:[{type:"output_text",text:"",annotations:[],logprobs:[]}]});let l=h(a).finish_reason||"stop";return{id:a.id?`resp_${a.id}`:`resp_${Date.now()}`,object:"response",created_at:a.created||Math.floor(Date.now()/1e3),status:"stop"===l||"tool_calls"===l?"completed":l,output:d,usage:{input_tokens:c.prompt_tokens||c.input_tokens||0,output_tokens:c.completion_tokens||c.output_tokens||0,total_tokens:c.total_tokens||(c.prompt_tokens||0)+(c.completion_tokens||0)}}}(a);default:return a}}},54070:(a,b,c)=>{c.d(b,{DL:()=>g,VS:()=>h,_s:()=>i});let d=global.__vaultStats??={entries:0,hits:0,bytesSaved:0};function e(a){try{let b=Number(a);if(!Number.isFinite(b)||b<0)return 0;return Math.trunc(b)}catch{return 0}}function f(a,b){try{let c=e(d[a])+e(b);d[a]=Number.isSafeInteger(c)?c:Number.MAX_SAFE_INTEGER}catch{}}function g(a,b){try{f("entries",a),f("bytesSaved",b)}catch{}}function h(a=1){try{f("hits",a)}catch{}}function i(){try{return{entries:e(d.entries),hits:e(d.hits),bytesSaved:e(d.bytesSaved)}}catch{return{entries:0,hits:0,bytesSaved:0}}}},61229:(a,b,c)=>{c.d(b,{$:()=>p,M:()=>o});var d=c(19956),e=c(48664),f=c(6755),g=c(15575),h=c(4630),i=c(60290),j=c(48330),k=c(29461),l=c(12407),m=c(4905);let n={[d.h.OPENAI_RESPONSES]:d.h.OPENAI_RESPONSES,[d.h.CLAUDE]:d.h.CLAUDE,[d.h.ANTIGRAVITY]:d.h.ANTIGRAVITY,[d.h.GEMINI]:d.h.ANTIGRAVITY,[d.h.GEMINI_CLI]:d.h.ANTIGRAVITY};async function o({providerResponse:a,provider:b,model:c,sourceFormat:p,targetFormat:q,userAgent:r,body:s,stream:t,translatedBody:u,finalBody:v,requestStartTime:w,connectionId:x,clientKeyId:y,requestId:z,clientRawRequest:A,onRequestSuccess:B,reqLogger:C,toolNameMap:D,streamController:E,onStreamComplete:F,streamDetailId:G,pxpipe:H}){let I=(a.headers.get("content-type")||"").toLowerCase();if((I.includes("application/x-ndjson")||I.includes("application/ndjson"))&&a.body){let b,c,d,e;a=new Response(a.body.pipeThrough((b=new TextDecoder,c=new TextEncoder,d="",new TransformStream({transform(a,e){let f=(d+=b.decode(a,{stream:!0})).split("\n");for(let a of(d=f.pop()||"",f)){let b=a.trim();if(b){if(b.startsWith("data:")||b.startsWith("event:")){e.enqueue(c.encode(a+"\n"));continue}try{JSON.parse(b),e.enqueue(c.encode(`data: ${b}
|
|
66
|
+
`),s()};for(let a=0;;a++){let e=new TextDecoder,j="",k=null,m=!1,n="empty";for(;;){let a,b;if(c?.aborted)return t();try{a=await Promise.race([l.read(),new Promise(a=>{b=setTimeout(()=>a({__stalled:!0}),h)})])}catch{if(c?.aborted)return t();n="read_error";break}finally{clearTimeout(b)}if(a.__stalled){try{l.cancel().catch(()=>{})}catch{}n="stall";break}let{done:g,value:i}=a;if(g)break;let o=(j+=e.decode(i,{stream:!0})).split("\n");for(let a of(j=o.pop(),o)){let b;if(k)continue;let c=a.trim();if(!c.startsWith("data:")){await r(a+"\n");continue}let e=c.slice(5).trim();if(!e||"[DONE]"===e){await r(a+"\n");continue}try{b=JSON.parse(e)}catch{await r(a+"\n");continue}let g=function(a,b){let c=a.response||a;if(!c||"object"!=typeof c)return{action:"forward"};let e=c.error||a.error;if(e)return b?{action:"forward",terminal:!0}:{action:"hold",kind:"error_object",reason:e.status||e.message||"error",error:e};if(!c.candidates?.length&&c.promptFeedback?.blockReason)return{action:"forward",terminal:!0};let f=c.candidates?.[0];if(!f)return{action:"forward"};let g=!1;for(let a of f.content?.parts||[])if(a.functionCall||a.inlineData?.data||a.inline_data?.data||!0!==a.thought&&"string"==typeof a.text&&a.text.trim().length>0){g=!0;break}let h=f.finishReason&&String(f.finishReason).toUpperCase();return h?d.zh.has(h)||h===d.a_.MAX_TOKENS||g||b?{action:"forward",meaningful:g,terminal:!0}:{action:"hold",kind:d.lW.has(h)?"error_finish":"stop",reason:h}:{action:"forward",meaningful:g}}(b,f);if(g.meaningful&&(f=!0),"hold"===g.action){q=k={kind:g.kind,reason:g.reason,error:g.error||null,line:a};continue}g.terminal&&(m=!0),await r(a+"\n")}}if(f||m){let a=j+e.decode();!k&&a&&await r(a),s();return}let o=k?k.reason:n;if(g?.warn?.("STREAM",`ANTIGRAVITY | empty (${o}) | attempt ${a+1}/3`),a>=2)return u(`empty response from upstream (${o}) after ${a+1} attempts`);if(await function(a,b){return new Promise(c=>{let d,e=()=>{clearTimeout(d),c()};d=setTimeout(()=>{a?.removeEventListener?.("abort",e),c()},b),a?.addEventListener?.("abort",e,{once:!0})})}(c,i*2**a),c?.aborted)return t();try{l=(await b()).getReader()}catch(a){if(a?.name==="AbortError"||c?.aborted)return t();return u(a?.message||"retry request failed")}}},pull(){p()},cancel(a){m=!0,p();try{l?.cancel(a)?.catch?.(()=>{})}catch{}}})}},36362:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{w:()=>O});var e=c(17717),f=c(48664),g=c(94454),h=c(19956),i=c(43788),j=c(6755),k=c(15575),l=c(41029),m=c(18129),n=c(70718),o=c(27335),p=c(4630),q=c(89865),r=c(60290),s=c(2735),t=c(12407),u=c(48400),v=c(29461),w=c(78255),x=c(15142),y=c(61229),z=c(34267),A=c(27226),B=c(28190),C=c(10640),D=c(37208),E=c(16799),F=c(92),G=c(12197),H=c(54070),I=c(39232),J=c(90197),K=c(43904),L=c(94501),M=c(96145),N=a([u]);u=(N.then?(await N)():N)[0];let P=new Set([h.h.GEMINI,h.h.GEMINI_CLI,h.h.ANTIGRAVITY,h.h.VERTEX]);async function O({body:a,modelInfo:b,credentials:c,log:d,onCredentialsRefreshed:N,onRequestSuccess:Q,onDisconnect:R,onUpstreamEmptyExhausted:S,clientRawRequest:T,connectionId:U,userAgent:V,clientKeyId:W,ccFilterNaming:X,rtkEnabled:Y,vaultEnabled:Z,vaultThresholdKB:$,vaultTtlHours:_,vaultConversationId:aa,headroomEnabled:ab,headroomUrl:ac,headroomCompressUserMessages:ad,cavemanEnabled:ae,cavemanLevel:af,ponytailEnabled:ag,ponytailLevel:ah,pxpipeEnabled:ai,pxpipeMinChars:aj,pxpipeTimeoutMs:ak,pxpipeTransform:al,onPxpipeEvent:am,sourceFormatOverride:an,providerThinking:ao,bypassNativePassthrough:ap,vaultInternal:aq,abortSignal:ar}){let as,at,au,av,aw,ax,{provider:ay,model:az}=b,aA=Date.now(),aB=an||(0,e.Tz)(a),aC=(0,s.c)(a,az,V,X);if(aC)return aC;let aD=o.Xg[ay]||ay,aE=(0,o.ux)(aD,az),aF=(0,o.ez)(aD,az),aG=aE||(0,e.jJ)(ay,c),aH=(0,e.oF)(ay,aB,aF),aI=aH||(0,e.oF)(ay,aG,aF),aJ=aH?.format===aB;c&&(c.runtimeTransport=aI||void 0);let aK=aJ?aB:aI?.format||aG,aL=(0,o.cY)(aD,az),aM=(0,o.kt)(aD,az);if(ao?.mode&&"auto"!==ao.mode){let b=ao.mode;"on"!==b||a.thinking?"off"!==b||a.thinking?a.reasoning_effort||(a={...a,reasoning_effort:b}):a={...a,thinking:{type:"disabled"}}:(console.log("Injecting provider-level thinking config override: on"),a={...a,thinking:{type:"enabled",budget_tokens:1e4}})}let aN=!0===a.stream||aB===h.h.ANTIGRAVITY||aB===h.h.GEMINI||aB===h.h.GEMINI_CLI,aO=p.xq[ay]?.forceStream===!0,aP=!!aO||!1!==a.stream,aQ=(0,o.OA)(aD,az);("imageGen"===aQ||/image|imagen|image-generation/i.test(az))&&("antigravity"===ay||"gemini-cli"===ay)&&(aP=!1);let aR=(0,A.Jz)(T?.headers||{},a);"deepseek-tui"===aR&&!0!==a.stream&&(aP=!1);let aS=T?.headers?.accept||"",aT=aS.includes("application/json"),aU=aS.includes("text/event-stream");!aT||aU||!0===a.stream||aO||(aP=!1),a&&"object"==typeof a&&(a={...a,stream:aP});let aV=await (0,n.q7)(aB,aK,az);T&&aV.logClientRawRequest(T.endpoint,T.body,T.headers),aV.logRawRequest(a),d?.debug?.("FORMAT",`${aB} → ${aK} | stream=${aP}`);let aW=(0,A.Jz)(T?.headers||{},a);(0,A.lP)(aW,T?.headers||{},a);let aX=!ap&&(0,A.Qf)(aW,ay);if(c&&(c.rawHeaders=T?.headers||{}),!aX){let b=(0,K.nl)(ay,az);(0,L.X)(a,aB,b)&&d?.debug?.("MODALITY",`stripped unsupported media for ${ay}/${az}`);try{let b=await (0,M.C)(a,aB,aK,{signal:ar});b>0&&d?.debug?.("MODALITY",`prefetched ${b} remote image(s) for ${aK}`)}catch(a){d?.warn?.("MODALITY",`image prefetch failed: ${a.message}`)}}let aY=(0,C.Ay)(a);if(aY>0&&d?.debug?.("TOOLCLEAN",`pre-translation: stripped ${aY} orphaned tool result(s)`),aX)d?.debug?.("PASSTHROUGH",`${aW} → ${ay} | native lossless`),as={...a,model:(0,g.kD)(aM)},"claude"===aW&&(0,i.ui)(as,as.model);else{if(!(as=(0,f.GH)(aB,aK,aM,a,aP,c,ay,aV,aL,U,aW)))return(0,t.uw)(az,ay,U,!1,!0),(0,q.A1)(r.gx.BAD_REQUEST,`Failed to translate request for ${aB} → ${aK}`);at=as._toolNameMap,delete as._toolNameMap,as.model=(0,g.kD)(aM)}if("claude"===aW&&Array.isArray(as.tools)){let{tools:a,stripped:b}=(0,B.F)(as.tools);b.length>0&&(as.tools=a,d?.debug?.("TOOLDEDUP",`stripped ${b.length}: ${b.slice(0,3).join(", ")}${b.length>3?"...":""}`))}let aZ=aX?aB:aK;"tts"===(0,o.OA)(aD,az)&&as.messages&&(as.messages=as.messages.filter(a=>"tool"!==a.role),delete as.tools);let a$=null;try{if(Z&&aa&&Array.isArray(as?.tools)&&as.tools.length>0&&(aB===h.h.OPENAI||aB===h.h.CLAUDE)){let a=1024*(0,G.u1)($??8),b=3600*Math.max(1,Number(_??24))*1e3;a$=await (0,G.f3)(as,{conversationId:aa,thresholdBytes:a,ttlMs:b,log:d})}}catch(a){d?.warn?.("VAULT",`store failed (dropped): ${a?.message||a}`)}let a_=T?.headers?.[r.SA]?.toLowerCase()!=="off",a0=(0,F.BI)(as,a_&&Y),a1=(0,F.fT)(a0);if(a1&&console.log(a1),a$?.vaulted>0){let a=a$.bytesBefore-a$.bytesAfter;(0,H.DL)(a$.vaulted,a),d?.info?.("VAULT",`externalized ${a$.vaulted} tool result(s), saved ${a}B`)}let a2={},a3=await (0,I.SI)(as,{enabled:a_&&ab,url:ac,model:aM,format:aZ,compressUserMessages:ad,diagnostics:a2}),a4=(0,I.Nv)(a3),a5=(0,I.O2)(a2);a4?(d?.info?.("HEADROOM",`${a4}${a5?` | ${a5}`:""}`),(0,I.cB)(a3,a2)&&d?.warn?.("HEADROOM",`reported token delta, but outbound JSON shrank <5%; provider may bill near-original payload | ${a5}`)):a_&&ab&&d?.warn?.("HEADROOM",`skipped: ${a2.reason||"compression unavailable"}${a2.endpoint?` (${a2.endpoint})`:""}`);let a6=(0,C.Ay)(as);a6>0&&d?.debug?.("TOOLCLEAN",`post-compression: stripped ${a6} orphaned tool result(s)`),a_&&ae&&af&&((0,D.p)(as,aZ,af),d?.debug?.("CAVEMAN",`${af} | ${aZ}`)),a_&&ag&&ah&&((0,E.U)(as,aZ,ah),d?.debug?.("PONYTAIL",`${ah} | ${aZ}`));let a7=null;if(a_&&ai){let a=await (0,J.H)(as,{enabled:!0,format:aZ,model:aM,minChars:aj,timeoutMs:ak,transform:al});a7=a.summary;let b=(0,J._)(a7);b?d?.info?.("PXPIPE",b):d?.debug?.("PXPIPE",`skipped: ${a7?.reason||"unknown"}`),a.body&&(as=a.body);try{am&&am({provider:ay,model:az,...a7})}catch{}}if(as&&"object"==typeof as)if(P.has(aZ)){let{stream:a,request:b,...c}=as;if(b&&"object"==typeof b){let{stream:a,...d}=b;as={...c,request:d}}else as=c}else as.stream!==aP&&(as={...as,stream:aP});aX&&"claude"===aW&&(0,i._W)(as);let a8=(0,u.SB)(ay);(0,t.uw)(az,ay,U,!0),aq||(0,t.E5)({model:az,provider:ay,connectionId:U,status:"PENDING"}).catch(()=>{});let a9=as.messages?.length||as.input?.length||as.contents?.length||as.request?.contents?.length||0;d?.debug?.("REQUEST",`${ay.toUpperCase()} | ${az} | ${a9} msgs`);let ba=(0,k.jd)({onDisconnect:a=>{(0,t.uw)(az,ay,U,!1),R&&R(a)},onError:()=>(0,t.uw)(az,ay,U,!1),log:d,provider:ay,model:az});if(ar)if(ar.aborted)try{ba.abort()}catch{}else ar.addEventListener("abort",()=>{try{ba.abort()}catch{}},{once:!0});let bb={connectionProxyEnabled:c?.providerSpecificData?.connectionProxyEnabled===!0,connectionProxyUrl:c?.providerSpecificData?.connectionProxyUrl||"",connectionNoProxy:c?.providerSpecificData?.connectionNoProxy||"",vercelRelayUrl:c?.providerSpecificData?.vercelRelayUrl||""};if(bb.vercelRelayUrl){let a=c?.connectionName||c?.connectionId||"unknown",b=c?.providerSpecificData?.connectionProxyPoolId||"none";d?.info?.("PROXY",`${ay.toUpperCase()} | ${az} | conn=${a} | pool=${b} | vercel-relay=${bb.vercelRelayUrl}`)}else if(bb.connectionProxyEnabled&&bb.connectionProxyUrl){let a=bb.connectionProxyUrl;try{let b=new URL(bb.connectionProxyUrl),c=b.hostname||"",d=b.port?`:${b.port}`:"",e=b.protocol||"http:";a=`${e}//${c}${d}`}catch{}let b=c?.providerSpecificData?.connectionProxyPoolId||"none",e=c?.connectionName||c?.connectionId||"unknown";d?.info?.("PROXY",`${ay.toUpperCase()} | ${az} | conn=${e} | pool=${b} | url=${a}`)}if(bb.connectionProxyEnabled&&bb.connectionNoProxy){let a=c?.connectionName||c?.connectionId||"unknown";d?.debug?.("PROXY",`${ay.toUpperCase()} | ${az} | conn=${a} | no_proxy=${bb.connectionNoProxy}`)}try{let a=await a8.execute({model:az,body:as,stream:aP,credentials:c,signal:ba.signal,log:d,proxyOptions:bb});au=a.response,av=a.url,aw=a.headers,ax=a.transformedBody,aV.logTargetRequest(av,aw,ax)}catch(c){if((0,t.uw)(az,ay,U,!1,!0),(0,t.ox)((0,v.$R)({provider:ay,model:az,connectionId:U,latency:{ttft:0,total:Date.now()-aA},tokens:{prompt_tokens:0,completion_tokens:0},request:(0,v.Fo)(a,aP),providerRequest:as||null,response:{error:c.message||String(c),status:"AbortError"===c.name?499:502,thinking:null},status:"error",pxpipe:a7||void 0,rtk:a0||void 0})).catch(()=>{}),"AbortError"===c.name)return ba.handleError(c),(0,q.A1)(499,"Request aborted");let b=(0,q.lR)(c,ay,az,r.gx.BAD_GATEWAY);return console.log(`${j.lm.red}[ERROR] ${b}${j.lm.reset}`),(0,q.A1)(r.gx.BAD_GATEWAY,b)}if(!a8.noAuth&&(au.status===r.gx.UNAUTHORIZED||au.status===r.gx.FORBIDDEN))try{let a=await (0,l.qZ)(async()=>{let a=await (0,m.MF)(ay,c,()=>a8.refreshCredentials(c,d,bb));return a?.refreshToken&&a.refreshToken!==c.refreshToken&&(a.accessToken&&(c.accessToken=a.accessToken),c.refreshToken=a.refreshToken),a},3,d);if(a?.accessToken||a?.copilotToken){if(d?.info?.("TOKEN",`${ay.toUpperCase()} | refreshed`),Object.assign(c,a),N)try{await N(a)}catch(a){d?.warn?.("TOKEN",`onCredentialsRefreshed failed: ${a.message}`)}try{let a=await a8.execute({model:az,body:as,stream:aP,credentials:c,signal:ba.signal,log:d,proxyOptions:bb});try{await au.body?.cancel?.()}catch{}au=a.response,av=a.url}catch{d?.warn?.("TOKEN",`${ay.toUpperCase()} | retry after refresh failed`)}}else d?.warn?.("TOKEN",`${ay.toUpperCase()} | refresh failed`)}catch(a){d?.warn?.("TOKEN",`${ay.toUpperCase()} | refresh threw: ${a.message}`)}if(!au.ok){(0,t.uw)(az,ay,U,!1,!0);let{statusCode:b,message:c,resetsAtMs:d}=await (0,q.zL)(au,a8);(0,t.ox)((0,v.$R)({provider:ay,model:az,connectionId:U,latency:{ttft:0,total:Date.now()-aA},tokens:{prompt_tokens:0,completion_tokens:0},request:(0,v.Fo)(a,aP),providerRequest:ax||as||null,response:{error:c,status:b,thinking:null},status:"error",pxpipe:a7||void 0,rtk:a0||void 0})).catch(()=>{});let e=(0,q.lR)(Error(c),ay,az,b);return console.log(`${j.lm.red}[ERROR] ${e}${j.lm.reset}`),aV.logError(Error(c),ax||as),(0,q.A1)(b,e,d)}if("antigravity"===ay&&aP&&au.body){let a=async()=>{let a=await a8.execute({model:az,body:as,stream:aP,credentials:c,signal:ba.signal,log:d,proxyOptions:bb});if(!a.response.ok){let{statusCode:b,message:c}=await (0,q.zL)(a.response,a8);throw Error(`[${b}] ${c}`)}if(!a.response.body)throw Error("upstream returned no body");return a.response.body};au=new Response((0,z.gH)({body:au.body,reexecute:a,signal:ba.signal,log:d,onExhausted:(a,{upstreamError:b}={})=>{if(!S)return;let c=a8.parseRetryFromErrorMessage?.(b?.message||a);return S((0,q.lR)(Error(a),ay,az,r.gx.BAD_GATEWAY),c?Date.now()+c:void 0)}}),{status:au.status,headers:au.headers})}let bc=`${Date.now()}-${Math.random().toString(36).slice(2,11)}`,bd={provider:ay,model:az,body:a,stream:aP,translatedBody:as,finalBody:ax,requestStartTime:aA,connectionId:U,clientKeyId:W,clientRawRequest:T,onRequestSuccess:Q,requestId:bc,pxpipe:a7||void 0},be=a=>{aq||(0,t.E5)({model:az,provider:ay,connectionId:U,...a}).catch(()=>{})},bf=()=>(0,t.uw)(az,ay,U,!1);if(!aN&&aO){let a=await (0,w.I)({...bd,providerResponse:au,sourceFormat:aB,targetFormat:aK,trackDone:bf,appendLog:be});if(a)return ba.handleComplete(),a}if(!aP){let a=await (0,x.N)({...bd,providerResponse:au,sourceFormat:aB,targetFormat:aK,reqLogger:aV,toolNameMap:at,trackDone:bf,appendLog:be});return ba.handleComplete(),a}let{onStreamComplete:bg,streamDetailId:bh}=(0,y.$)({...bd});return(0,y.M)({...bd,providerResponse:au,sourceFormat:aB,targetFormat:aK,userAgent:V,reqLogger:aV,toolNameMap:at,streamController:ba,onStreamComplete:bg,streamDetailId:bh})}d()}catch(a){d(a)}})},37208:(a,b,c)=>{c.d(b,{p:()=>n});var d=c(17429);let e="Code blocks, file paths, commands, errors, URLs: keep exact. Security warnings, irreversible action confirmations, multi-step ordered sequences: write normal. Resume terse style after.",f='Not: "Sure! I\'d be happy to help you with that. The issue you\'re experiencing is likely caused by..." Yes: "Bug in auth middleware. Token expiry check use `<` not `<=`. Fix:"',g="Auto-Clarity: drop caveman for security warnings, irreversible actions, multi-step sequences where fragment ambiguity risks misread, or when user repeats a question. Resume after the clear part.",h="ACTIVE EVERY RESPONSE. No revert after many turns. No filler drift. Still active if unsure.",i="No invented abbreviations. Standard well-known tech acronyms (DB, API, HTTP, URL, JSON, ID, OS, CPU) OK. Names of code symbols, function names, API names, error strings: keep verbatim.",j="Preserve the user's dominant language. User wrote Vietnamese, reply Vietnamese. User wrote English, reply English. Wenyan/classical-Chinese levels override this language-preservation rule. Code identifiers, error strings, file paths, commands: keep in their original form regardless of language.",k='No self-reference. Do not name or announce the style (no "caveman mode", no "me caveman think", no "compressed mode active"). Just respond.',l='No decorative emoji. No narrating tool calls ("I will now search", "I used X to find Y"). No status phrases ("Sure!", "Of course!", "I\'d be happy to"). No causal arrow shorthand ("A -> B -> fails"). State the thing, the action, the reason. Then next step.',m={lite:["Respond tersely. Keep grammar and full sentences but drop filler, hedging and pleasantries (just/really/basically/sure/of course/I'd be happy to). Pattern: state the thing, the action, the reason. Then next step.",f,e,g,h,i,j,k,l].join(" "),full:["Respond like terse caveman. All technical substance stay exact, only fluff die. Drop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries, hedging. Fragments OK. Short synonyms (big not extensive, fix not implement a solution for). Pattern: [thing] [action] [reason]. [next step].",f,e,g,h,i,j,k,l].join(" "),ultra:["Respond ultra-terse. Maximum compression. Telegraphic. Strip conjunctions. One word when one word enough. Pattern: [thing] [action] [reason]. [next step].",f,e,g,h,i,j,k,l].join(" "),"wenyan-lite":["Respond semi-classical. Drop filler/hedging but keep grammar structure, classical register. Use classical Chinese sentence patterns where natural. Keep English for technical terms.",f,e,g,h,i,j,k,l].join(" "),wenyan:["Respond classical Chinese (文言文). Maximum classical terseness. 80-90% character reduction. Classical sentence patterns, verbs precede objects, subjects often omitted, classical particles (之/乃/為/其). Keep English for code, commands, function names, API names, error strings.",f,e,g,h,i,j,k,l].join(" "),"wenyan-ultra":["Respond extreme classical compression (文言文 ultra). Maximum compression, ultra terse. Same classical rules as wenyan-full but even more compressed. One classical particle per clause.",f,e,g,h,i,j,k,l].join(" ")};function n(a,b,c){(0,d.J)(a,b,m[c])}},39232:(a,b,c)=>{c.d(b,{Nv:()=>l,O2:()=>m,SI:()=>k,cB:()=>n});var d=c(37377),e=c(29229),f=c(97579);function g(a){try{return new TextEncoder().encode(JSON.stringify(a)||"").length}catch{return 0}}function h(a){let b=Array.isArray(a?.messages)?a.messages:Array.isArray(a?.input)?a.input:null,c=b?.filter(a=>a?.role==="tool"||a?.role==="function"||a?.tool_calls?.length||a?.content?.some?.(a=>a?.type==="tool_use"||a?.type==="tool_result"))||[];return{bodyBytes:g(a),messageBytes:b?g(b):0,toolSchemaBytes:g(a?.tools||[]),toolHistoryBytes:g(c)}}function i(a,b){a&&!a.reason&&(a.reason=b)}async function j(a,b,c,d,e,f){let g,h=function(a){try{let b=new URL(a);return b.pathname=`${b.pathname.replace(/\/$/,"")}/v1/compress`,b.hash="",b.toString()}catch{let[b,c=""]=String(a).replace(/#.*$/,"").split("?",2),d=`${b.replace(/\/$/,"")}/v1/compress`;return c?`${d}?${c}`:d}}(a);f.endpoint=function(a){try{let b=new URL(a);return b.username="",b.password="",b.search="",b.hash="",b.toString()}catch{return String(a).replace(/\/\/[^/@\s]+@/,"//").replace(/[?#].*$/,"")}}(h);let j={messages:b,model:c};e&&(j.config={compress_user_messages:!0});try{g=await fetch(h,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(j),signal:AbortSignal.timeout(d)})}catch(d){var k;let a,b,c;return i(f,`request failed: ${(k=d,a=k?.cause,b=a?.code||k?.code,c=String(a?.message||k?.message||String(k)).replace(/\/\/[^/@\s]+@/g,"//").replace(/(https?:\/\/[^\s?#]+)[?#][^\s)]*/g,"$1"),b?`${b}: ${c}`:c)}`),null}if(!g.ok)return i(f,`proxy returned HTTP ${g.status}`),null;let l=await g.json();return Array.isArray(l?.messages)?l:(i(f,"proxy response missing messages[]"),null)}async function k(a,{enabled:b,url:c,model:g,format:l,compressUserMessages:m,timeoutMs:n=3e3,diagnostics:o=null}={}){if(!b)return i(o,"disabled"),null;if(!c)return i(o,"missing proxy URL"),null;if(!a)return i(o,"missing request body"),null;try{if(o&&(o.before=h(a)),"claude"===l){let b=(0,d.t)(g,a,!1);if(!Array.isArray(b?.messages))return i(o,"Claude request did not translate to messages[]"),null;let f=await j(c,b.messages,g,n,m,o||{});if(!f)return null;let k=(0,e.p)(g,{...b,messages:f.messages},!1);return Array.isArray(k?.messages)&&(a.messages=k.messages),k?.system!==void 0&&(a.system=k.system),o&&(o.after=h(a)),f}if("openai-responses"===l){if(Array.isArray(a?.input)&&a.input.some(a=>!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.type&&"message"!==a.type))return i(o,"skipped: openai-responses tool/reasoning input is not safe to compress"),null;let b=(0,f.Z)(g,a,!1);if(!Array.isArray(b?.messages))return null;let d=await j(c,b.messages,g,n,m,o||{});if(!d)return null;let e=(0,f.h)(g,{...b,input:void 0,messages:d.messages},!1);return Array.isArray(e?.input)&&(a.input=e.input),o&&(o.after=h(a)),d}let b=Array.isArray(a.messages)?"messages":Array.isArray(a.input)?"input":null;if(!b)return i(o,`unsupported ${l||"unknown"} request shape`),null;let k=await j(c,a[b],g,n,m,o||{});if(!k)return null;return a[b]=k.messages,o&&(o.after=h(a)),k}catch(a){return i(o,`unexpected error: ${a?.message||String(a)}`),null}}function l(a){if(!a)return null;let b=a.tokens_before||0,c=a.tokens_after||0,d=a.tokens_saved||0,e=b>0?(d/b*100).toFixed(1):"0";return`reported token delta=${d} before=${b}${c?` after=${c}`:""} (${e}%)`.trim()}function m(a){let b=a?.before,c=a?.after;if(!b||!c)return"";let d=b.bodyBytes>0?((b.bodyBytes-c.bodyBytes)/b.bodyBytes*100).toFixed(1):"0.0";return`body=${b.bodyBytes}B→${c.bodyBytes}B messages=${b.messageBytes}B→${c.messageBytes}B tools=${b.toolSchemaBytes||0}B→${c.toolSchemaBytes||0}B toolHistory=${b.toolHistoryBytes||0}B→${c.toolHistoryBytes||0}B effective=${d}%`}function n(a,b,c=.05){if(!a?.tokens_saved||a.tokens_saved<=0)return!1;let d=b?.before?.bodyBytes||0,e=b?.after?.bodyBytes||0;return!(d<=0)&&!(e<=0)&&e>=d*(1-c)}},49612:(a,b,c)=>{c.d(b,{g:()=>k,p:()=>l});var d=c(19956),e=c(98173),f=c(57642);function g(a){if(!a)return{};if("object"==typeof a)return a;try{return JSON.parse(a)}catch{return{}}}function h(a){return a?.choices?.[0]||{}}function i(a){return h(a).message||{}}function j(a){let b=i(a).tool_calls;return Array.isArray(b)?b:[]}function k(a,b){let c=Array.isArray(a?.output)?a.output:[],d=c.filter(a=>a?.type==="reasoning").flatMap(a=>Array.isArray(a.summary)?a.summary:[]).map(a=>a?.text||"").join(""),e=c.filter(a=>a?.type==="message"),f=[...e].reverse().find(a=>(Array.isArray(a.content)?a.content:[]).some(a=>"string"==typeof a.text&&a.text.length>0))||e[e.length-1]||null,g=(Array.isArray(f?.content)?f.content:[]).map(a=>("output_text"===a.type||"string"==typeof a.text)&&a.text||"").join(""),h=c.filter(a=>a?.type==="function_call").map((a,b)=>({id:a.call_id||`call_${a.name||"tool"}_${b}`,type:"function",function:{name:a.name||"",arguments:"string"==typeof a.arguments?a.arguments:JSON.stringify(a.arguments||{})}})),i=a?.usage||{},j={role:"assistant",content:g||(h.length>0?null:"")};d&&(j.reasoning_content=d),h.length>0&&(j.tool_calls=h);let k=a?.status==="completed"||a?.status==="done",l=h.length>0?"tool_calls":k?"stop":a?.status||"stop";return{id:a?.id||`chatcmpl-${Date.now()}`,object:"chat.completion",created:a?.created_at||Math.floor(Date.now()/1e3),model:a?.model||b||"unknown",choices:[{index:0,message:j,finish_reason:l}],usage:{prompt_tokens:i.input_tokens||i.prompt_tokens||0,completion_tokens:i.output_tokens||i.completion_tokens||0,total_tokens:i.total_tokens||(i.input_tokens||i.prompt_tokens||0)+(i.output_tokens||i.completion_tokens||0)}}}function l(a,b){switch(b){case d.h.CLAUDE:return function(a){if(!a?.choices?.[0])return a;let b=h(a),c=i(a),f=[],k=c.reasoning_content||c.provider_specific_fields?.reasoning_content||"";for(let b of(k&&f.push({type:"thinking",thinking:k}),"string"==typeof c.content&&c.content.length>0&&f.push({type:"text",text:c.content}),j(a))){let a=b.function||{};f.push({type:"tool_use",id:b.id||`toolu_${Date.now()}_${f.length}`,name:a.name||b.name||"",input:g(a.arguments||b.arguments)})}0===f.length&&f.push({type:"text",text:""});let l=a.usage||{};return{id:String(a.id||`msg_${Date.now()}`).replace(/^chatcmpl-/,""),type:"message",role:"assistant",model:a.model||"unknown",content:f,stop_reason:(0,e.Q)(b.finish_reason,d.h.CLAUDE),stop_sequence:null,usage:{input_tokens:l.prompt_tokens||l.input_tokens||0,output_tokens:l.completion_tokens||l.output_tokens||0}}}(a);case d.h.GEMINI:case d.h.GEMINI_CLI:case d.h.ANTIGRAVITY:case d.h.VERTEX:return function(a){if(!a?.choices?.[0])return a;let b=i(a),c=a.usage||{},d=[],e=b.reasoning_content||b.provider_specific_fields?.reasoning_content||"";for(let c of(e&&d.push({text:e,thought:!0}),"string"==typeof b.content&&b.content.length>0&&d.push({text:b.content}),j(a))){let a=c.function||{};d.push({functionCall:{name:a.name||c.name||"",args:g(a.arguments||c.arguments)}})}return 0===d.length&&d.push({text:""}),{response:{candidates:[{content:{role:"model",parts:d},finishReason:function(a){switch(a){case f.bC.LENGTH:return f.a_.MAX_TOKENS;case f.bC.CONTENT_FILTER:return f.a_.SAFETY;default:return f.a_.STOP}}(h(a).finish_reason),index:0}],usageMetadata:{promptTokenCount:c.prompt_tokens||c.input_tokens||0,candidatesTokenCount:c.completion_tokens||c.output_tokens||0,totalTokenCount:c.total_tokens||(c.prompt_tokens||0)+(c.completion_tokens||0)},modelVersion:a.model||"unknown",responseId:a.id||`resp_${Date.now()}`}}}(a);case d.h.OLLAMA:return function(a){if(!a?.choices?.[0])return a;let b=h(a),c=i(a),d={role:"assistant",content:"string"==typeof c.content?c.content:""};c.reasoning_content&&(d.thinking=c.reasoning_content);let e=j(a).map(a=>{let b=a.function||{};return{id:a.id,function:{name:b.name||a.name||"",arguments:g(b.arguments||a.arguments)}}});e.length>0&&(d.tool_calls=e);let f=a.usage||{};return{model:a.model||"unknown",created_at:a.created?new Date(1e3*a.created).toISOString():new Date().toISOString(),message:d,done:!0,done_reason:b.finish_reason||"stop",prompt_eval_count:f.prompt_tokens||f.input_tokens||0,eval_count:f.completion_tokens||f.output_tokens||0}}(a);case d.h.OPENAI_RESPONSES:case d.h.OPENAI_RESPONSE:return function(a){if(!a?.choices?.[0])return a;let b=i(a),c=a.usage||{},d=[],e=0,f=b.reasoning_content||b.provider_specific_fields?.reasoning_content||"";f&&(d.push({type:"reasoning",id:`rs_${a.id||Date.now()}_${e}`,summary:[{type:"summary_text",text:f}]}),e++);let g="string"==typeof b.content?b.content:"";g&&(d.push({type:"message",id:`msg_${a.id||Date.now()}_${e}`,role:"assistant",content:[{type:"output_text",text:g,annotations:[],logprobs:[]}]}),e++);let k=j(a);if(k.length>0)for(let a of k){let b=a.function||{},c=a.id||`call_${b.name||"tool"}_${e}`;d.push({type:"function_call",id:`fc_${c}`,call_id:c,name:b.name||a.name||"",arguments:"string"==typeof b.arguments?b.arguments:JSON.stringify(b.arguments||{})}),e++}else g||f||d.push({type:"message",id:`msg_${a.id||Date.now()}_${e}`,role:"assistant",content:[{type:"output_text",text:"",annotations:[],logprobs:[]}]});let l=h(a).finish_reason||"stop";return{id:a.id?`resp_${a.id}`:`resp_${Date.now()}`,object:"response",created_at:a.created||Math.floor(Date.now()/1e3),status:"stop"===l||"tool_calls"===l?"completed":l,output:d,usage:{input_tokens:c.prompt_tokens||c.input_tokens||0,output_tokens:c.completion_tokens||c.output_tokens||0,total_tokens:c.total_tokens||(c.prompt_tokens||0)+(c.completion_tokens||0)}}}(a);default:return a}}},54070:(a,b,c)=>{c.d(b,{DL:()=>g,VS:()=>h,_s:()=>i});let d=global.__vaultStats??={entries:0,hits:0,bytesSaved:0};function e(a){try{let b=Number(a);if(!Number.isFinite(b)||b<0)return 0;return Math.trunc(b)}catch{return 0}}function f(a,b){try{let c=e(d[a])+e(b);d[a]=Number.isSafeInteger(c)?c:Number.MAX_SAFE_INTEGER}catch{}}function g(a,b){try{f("entries",a),f("bytesSaved",b)}catch{}}function h(a=1){try{f("hits",a)}catch{}}function i(){try{return{entries:e(d.entries),hits:e(d.hits),bytesSaved:e(d.bytesSaved)}}catch{return{entries:0,hits:0,bytesSaved:0}}}},61229:(a,b,c)=>{c.d(b,{$:()=>p,M:()=>o});var d=c(19956),e=c(48664),f=c(6755),g=c(15575),h=c(4630),i=c(60290),j=c(48330),k=c(29461),l=c(12407),m=c(4905);let n={[d.h.OPENAI_RESPONSES]:d.h.OPENAI_RESPONSES,[d.h.CLAUDE]:d.h.CLAUDE,[d.h.ANTIGRAVITY]:d.h.ANTIGRAVITY,[d.h.GEMINI]:d.h.ANTIGRAVITY,[d.h.GEMINI_CLI]:d.h.ANTIGRAVITY};async function o({providerResponse:a,provider:b,model:c,sourceFormat:p,targetFormat:q,userAgent:r,body:s,stream:t,translatedBody:u,finalBody:v,requestStartTime:w,connectionId:x,clientKeyId:y,requestId:z,clientRawRequest:A,onRequestSuccess:B,reqLogger:C,toolNameMap:D,streamController:E,onStreamComplete:F,streamDetailId:G,pxpipe:H}){let I=(a.headers.get("content-type")||"").toLowerCase();if((I.includes("application/x-ndjson")||I.includes("application/ndjson"))&&a.body){let b,c,d,e;a=new Response(a.body.pipeThrough((b=new TextDecoder,c=new TextEncoder,d="",new TransformStream({transform(a,e){let f=(d+=b.decode(a,{stream:!0})).split("\n");for(let a of(d=f.pop()||"",f)){let b=a.trim();if(b){if(b.startsWith("data:")||b.startsWith("event:")){e.enqueue(c.encode(a+"\n"));continue}try{JSON.parse(b),e.enqueue(c.encode(`data: ${b}
|
|
69
67
|
|
|
70
68
|
`))}catch{}}}},flush(a){let b=d.trim();if(b)try{JSON.parse(b),a.enqueue(c.encode(`data: ${b}
|
|
71
69
|
|
|
@@ -2,4 +2,4 @@ exports.id=7454,exports.ids=[7454],exports.modules={23628:(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}}]))}}}}},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:()=>{},92770:(a,b,c)=>{"use strict";c.r(b),c.d(b,{DELETE:()=>S,GET:()=>O,POST:()=>Q});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(24424);let s=(0,g.promisify)(f.exec),t="switchboard",u=Promise.resolve(),v=a=>{let b=u.then(a,a);return u=b.catch(()=>{}),b},w=()=>k().join(m().homedir(),".pi","agent"),x=()=>k().join(w(),"models.json"),y=()=>k().join(w(),"settings.json"),z=()=>k().join(w(),"switchboard-backup.json"),A=()=>k().join(w(),"models.yml"),B=async()=>{try{let a="win32"===m().platform();return await s(a?"where pi":"which pi",{windowsHide:!0}),!0}catch{try{return await i().access(w()),!0}catch{return!1}}},C=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}},D=()=>C(x(),{providers:{}}),E=()=>C(y(),{}),F=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}},G=()=>F(A(),{providers:{}}),H=a=>Array.isArray(a)?a.map(H):a&&"object"==typeof a?Object.fromEntries(Object.keys(a).sort().map(b=>[b,H(a[b])])):a,I=(a,b)=>JSON.stringify(H(a))===JSON.stringify(H(b)),J=a=>a&&"object"==typeof a&&"boolean"==typeof a.exists,K=a=>{if(null==a)return null;if(1===a.version&&"restored"===a.state)return a;if(1!==a.version||!J(a.provider)||!["defaultProvider","defaultModel","enabledModels"].every(b=>J(a.settings?.[b]))||!a.managedProvider||!a.managedSettings)throw Error("Unsupported or invalid Pi Switchboard backup file");return a},L=async(a,b,c,d)=>{await i().mkdir(w(),{recursive:!0}),await (0,p.M_)([{filePath:z(),content:d?JSON.stringify(d,null,2):null,secret:!0},{filePath:A(),content:(0,n.As)(a),secret:!0},{filePath:x(),content:JSON.stringify(b,null,2),secret:!0},{filePath:y(),content:JSON.stringify(c,null,2),secret:!0}])},M=(a,b,c)=>{("defaultProvider"!==c&&"defaultModel"!==c||a.defaultProvider===t)&&I(a[c],b?.managedSettings?.[c])&&(0,p.S3)(a,{[c]:b.settings?.[c]})};async function N(){try{if(!await B())return e.NextResponse.json({installed:!1,settings:null,message:"Pi is not installed"});let[a,b,c]=await Promise.all([G(),D(),E()]),d=a?.providers?.[t]||null,f=d||b?.providers?.[t]||null,g=Array.isArray(d?.models)?d.models:Array.isArray(b?.providers?.[t]?.models)?b.providers[t].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===t&&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:t,scopeConfigured:m},configPath:A(),settingsPath:y()})}catch(a){return console.log("Error checking pi settings:",a),e.NextResponse.json({error:"Failed to check pi settings"},{status:500})}}async function O(){return v(N)}async function P(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([G(),D(),E(),C(z(),null)]),r=K(n),s=r?.state==="restored"?null:r,u=Array.isArray(k?.providers?.[t]?.models)?k.providers[t].models:Array.isArray(l?.providers?.[t]?.models)?l.providers[t].models:[],v=void 0===h?[g,...u.map(a=>a?.id)]:h,w=(0,o.rP)(v),x=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===w.length||!x)return e.NextResponse.json({error:"baseUrl, models, API key, or picker labels are invalid"},{status:400});let B=(c=String(d||"").replace(/\/+$/,"")).endsWith("/v1")?c:`${c}/v1`,F=f||"sk_switchboard",H=(0,o.F2)(i||g,w),I=(0,q.OU)(j,w),J=a=>{(!a.providers||"object"!=typeof a.providers||Array.isArray(a.providers))&&(a.providers={})};J(k),J(l);let M={baseUrl:B,api:"openai-completions",apiKey:F,authHeader:!0,compat:{supportsDeveloperRole:!1,supportsReasoningEffort:!0,supportsUsageInStreaming:!0},models:(0,o.L6)(w,u,I)},N={...M,discovery:{type:"openai-models-list"}},O=s?.version===1?s:{version:1,state:"active",provider:(0,p.EA)(k.providers,[t])[t],legacyProvider:(0,p.EA)(l.providers,[t])[t],settings:(0,p.EA)(m,["defaultProvider","defaultModel","enabledModels"])};k.providers[t]=N,l.providers[t]=M,m.defaultProvider=t,m.defaultModel=H;let P=((a,b)=>{if(!Array.isArray(a)||0===a.length)return;let c=a.filter(a=>"string"!=typeof a||!a.startsWith(`${t}/`));if(0!==c.length)return[...c,...b]})(m.enabledModels,w.map(a=>`${t}/${a}`));return P?m.enabledModels=P:delete m.enabledModels,O.managedProvider=N,O.managedLegacyProvider=M,O.managedSettings={defaultProvider:t,defaultModel:H,enabledModels:m.enabledModels},await L(k,l,m,O),e.NextResponse.json({success:!0,message:`Pi configured with ${w.length} model${1===w.length?"":"s"}. ${H} is the default; use /model to switch.`,pickerLabels:Object.fromEntries(M.models.map(a=>[a.id,a.name])),configPath:A(),settingsPath:y()})}catch(a){return console.log("Error updating pi settings:",a),e.NextResponse.json({error:"Failed to update pi settings"},{status:500})}}async function Q(a){return v(()=>P(a))}async function R(){try{let[a,b,c,d]=await Promise.all([G(),D(),E(),C(z(),null)]),f=K(d);if(f?.state==="restored")return e.NextResponse.json({success:!0,message:"No Switchboard Pi settings to reset"});let g=a?.providers?.[t],h=b?.providers?.[t],i=!!(g||h),j=c.defaultProvider===t||Array.isArray(c.enabledModels)&&c.enabledModels.some(a=>"string"==typeof a&&a.startsWith(`${t}/`));if(!f&&!i&&!j)return e.NextResponse.json({success:!0,message:"No Switchboard Pi settings to reset"});return g&&(!f?.managedProvider||I(g,f.managedProvider))&&(f?.version===1?(0,p.S3)(a.providers,{[t]:f.provider}):delete a.providers[t]),h&&(!f?.managedLegacyProvider||I(h,f.managedLegacyProvider))&&(f?.version===1?(0,p.S3)(b.providers,{[t]:f.legacyProvider??f.provider}):delete b.providers[t]),f?.version===1?(M(c,f,"defaultModel"),M(c,f,"defaultProvider"),M(c,f,"enabledModels")):c.defaultProvider===t&&(delete c.defaultProvider,delete c.defaultModel),!f&&Array.isArray(c.enabledModels)&&(c.enabledModels=c.enabledModels.filter(a=>"string"!=typeof a||!a.startsWith(`${t}/`)),0===c.enabledModels.length&&delete c.enabledModels),await L(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 S(){return v(R)}(0,r.D)([O,Q,S]),(0,d.A)(O,"0056492985ba4b73ae239f3e888e241b9197ba7d9c",null),(0,d.A)(Q,"40921659c4ea66629c89b476edab99c16fbdbd4d16",null),(0,d.A)(S,"00f0b941e9a06f8ed5a7d3561ec522407205ac5788",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}}]))}}}}},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:()=>{},92770:(a,b,c)=>{"use strict";c.r(b),c.d(b,{DELETE:()=>S,GET:()=>O,POST:()=>Q});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(24424);let s=(0,g.promisify)(f.exec),t="switchboard",u=Promise.resolve(),v=a=>{let b=u.then(a,a);return u=b.catch(()=>{}),b},w=()=>k().join(m().homedir(),".pi","agent"),x=()=>k().join(w(),"models.json"),y=()=>k().join(w(),"settings.json"),z=()=>k().join(w(),"switchboard-backup.json"),A=()=>k().join(w(),"models.yml"),B=async()=>{try{let a="win32"===m().platform();return await s(a?"where pi":"which pi",{windowsHide:!0}),!0}catch{try{return await i().access(w()),!0}catch{return!1}}},C=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}},D=()=>C(x(),{providers:{}}),E=()=>C(y(),{}),F=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}},G=()=>F(A(),{providers:{}}),H=a=>Array.isArray(a)?a.map(H):a&&"object"==typeof a?Object.fromEntries(Object.keys(a).sort().map(b=>[b,H(a[b])])):a,I=(a,b)=>JSON.stringify(H(a))===JSON.stringify(H(b)),J=a=>a&&"object"==typeof a&&"boolean"==typeof a.exists,K=a=>{if(null==a)return null;if(1===a.version&&"restored"===a.state)return a;if(1!==a.version||!J(a.provider)||!["defaultProvider","defaultModel","enabledModels"].every(b=>J(a.settings?.[b]))||!a.managedProvider||!a.managedSettings)throw Error("Unsupported or invalid Pi Switchboard backup file");return a},L=async(a,b,c,d)=>{await i().mkdir(w(),{recursive:!0}),await (0,p.M_)([{filePath:z(),content:d?JSON.stringify(d,null,2):null,secret:!0},{filePath:A(),content:(0,n.As)(a),secret:!0},{filePath:x(),content:JSON.stringify(b,null,2),secret:!0},{filePath:y(),content:JSON.stringify(c,null,2),secret:!0}])},M=(a,b,c)=>{("defaultProvider"!==c&&"defaultModel"!==c||a.defaultProvider===t)&&I(a[c],b?.managedSettings?.[c])&&(0,p.S3)(a,{[c]:b.settings?.[c]})};async function N(){try{if(!await B())return e.NextResponse.json({installed:!1,settings:null,message:"Pi is not installed"});let[a,b,c]=await Promise.all([G(),D(),E()]),d=a?.providers?.[t]||null,f=d||b?.providers?.[t]||null,g=Array.isArray(d?.models)?d.models:Array.isArray(b?.providers?.[t]?.models)?b.providers[t].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===t&&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:t,scopeConfigured:m},configPath:A(),settingsPath:y()})}catch(a){return console.log("Error checking pi settings:",a),e.NextResponse.json({error:"Failed to check pi settings"},{status:500})}}async function O(){return v(N)}async function P(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([G(),D(),E(),C(z(),null)]),r=K(n),s=r?.state==="restored"?null:r,u=Array.isArray(k?.providers?.[t]?.models)?k.providers[t].models:Array.isArray(l?.providers?.[t]?.models)?l.providers[t].models:[],v=void 0===h?[g,...u.map(a=>a?.id)]:h,w=(0,o.rP)(v),x=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===w.length||!x)return e.NextResponse.json({error:"baseUrl, models, API key, or picker labels are invalid"},{status:400});let B=(c=String(d||"").replace(/\/+$/,"")).endsWith("/v1")?c:`${c}/v1`,F=f||"sk_switchboard",H=(0,o.F2)(i||g,w),I=(0,q.OU)(j,w),J=a=>{(!a.providers||"object"!=typeof a.providers||Array.isArray(a.providers))&&(a.providers={})};J(k),J(l);let M={baseUrl:B,api:"openai-completions",apiKey:F,authHeader:!0,compat:{supportsDeveloperRole:!1,supportsReasoningEffort:!0,supportsUsageInStreaming:!0},models:(0,o.L6)(w,u,I)},N={...M,discovery:{type:"openai-models-list"}},O=s?.version===1?s:{version:1,state:"active",provider:(0,p.EA)(k.providers,[t])[t],legacyProvider:(0,p.EA)(l.providers,[t])[t],settings:(0,p.EA)(m,["defaultProvider","defaultModel","enabledModels"])};k.providers[t]=N,l.providers[t]=M,m.defaultProvider=t,m.defaultModel=H;let P=((a,b)=>{if(!Array.isArray(a)||0===a.length)return;let c=a.filter(a=>"string"!=typeof a||!a.startsWith(`${t}/`));if(0!==c.length)return[...c,...b]})(m.enabledModels,w.map(a=>`${t}/${a}`));return P?m.enabledModels=P:delete m.enabledModels,O.managedProvider=N,O.managedLegacyProvider=M,O.managedSettings={defaultProvider:t,defaultModel:H,enabledModels:m.enabledModels},await L(k,l,m,O),e.NextResponse.json({success:!0,message:`Pi configured with ${w.length} model${1===w.length?"":"s"}. ${H} is the default; use /model to switch.`,pickerLabels:Object.fromEntries(M.models.map(a=>[a.id,a.name])),configPath:A(),settingsPath:y()})}catch(a){return console.log("Error updating pi settings:",a),e.NextResponse.json({error:"Failed to update pi settings"},{status:500})}}async function Q(a){return v(()=>P(a))}async function R(){try{let[a,b,c,d]=await Promise.all([G(),D(),E(),C(z(),null)]),f=K(d);if(f?.state==="restored")return e.NextResponse.json({success:!0,message:"No Switchboard Pi settings to reset"});let g=a?.providers?.[t],h=b?.providers?.[t],i=!!(g||h),j=c.defaultProvider===t||Array.isArray(c.enabledModels)&&c.enabledModels.some(a=>"string"==typeof a&&a.startsWith(`${t}/`));if(!f&&!i&&!j)return e.NextResponse.json({success:!0,message:"No Switchboard Pi settings to reset"});return g&&(!f?.managedProvider||I(g,f.managedProvider))&&(f?.version===1?(0,p.S3)(a.providers,{[t]:f.provider}):delete a.providers[t]),h&&(!f?.managedLegacyProvider||I(h,f.managedLegacyProvider))&&(f?.version===1?(0,p.S3)(b.providers,{[t]:f.legacyProvider??f.provider}):delete b.providers[t]),f?.version===1?(M(c,f,"defaultModel"),M(c,f,"defaultProvider"),M(c,f,"enabledModels")):c.defaultProvider===t&&(delete c.defaultProvider,delete c.defaultModel),!f&&Array.isArray(c.enabledModels)&&(c.enabledModels=c.enabledModels.filter(a=>"string"!=typeof a||!a.startsWith(`${t}/`)),0===c.enabledModels.length&&delete c.enabledModels),await L(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 S(){return v(R)}(0,r.D)([O,Q,S]),(0,d.A)(O,"006df20c19dee00da71cfa25a30a18ee0d1b282b33",null),(0,d.A)(Q,"40ccbb57e7fd7e3ac52bcaef6c30be46bef7fb9006",null),(0,d.A)(S,"00c88cf10fb86e92db66f1f921ad06b2620134b240",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:()=>{}};
|