switchboard-router 0.9.45 → 0.9.48
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-bdff37b474a387c0.js → .next/static/chunks/1321-73cba51ca6694ffa.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/quota/page-cf70f587dc7ab205.js +1 -0
- package/app/.next/static/css/912e8e046d0cd4ca.css +1 -0
- package/app/.next-cli-build/BUILD_ID +1 -1
- package/app/.next-cli-build/app-path-routes-manifest.json +20 -20
- 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.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 +4 -4
- package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- 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 +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +1 -1
- 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 +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +1 -1
- 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 +2 -2
- 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 +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/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 +4 -4
- package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +4 -4
- 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 +4 -4
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/index.html +1 -1
- package/app/.next-cli-build/server/app/index.rsc +4 -4
- package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
- 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 +4 -4
- package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +4 -4
- 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 +5 -5
- package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app-paths-manifest.json +20 -20
- package/app/.next-cli-build/server/chunks/1350.js +1 -1
- package/app/.next-cli-build/server/chunks/2619.js +1 -1
- package/app/.next-cli-build/server/chunks/2847.js +1 -1
- package/app/.next-cli-build/server/chunks/369.js +3 -3
- package/app/.next-cli-build/server/chunks/5717.js +1 -1
- package/app/.next-cli-build/server/chunks/5781.js +2 -2
- package/app/.next-cli-build/server/chunks/6533.js +1 -1
- package/app/.next-cli-build/server/chunks/7201.js +1 -1
- package/app/.next-cli-build/server/chunks/869.js +1 -1
- package/app/.next-cli-build/server/chunks/8942.js +1 -1
- package/app/.next-cli-build/server/chunks/8998.js +8 -8
- package/app/.next-cli-build/server/chunks/9264.js +2 -2
- package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/app/.next-cli-build/server/middleware.js +8 -8
- 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-bdff37b474a387c0.js → .next-cli-build/static/chunks/1321-73cba51ca6694ffa.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-cf70f587dc7ab205.js +1 -0
- package/app/.next-cli-build/static/css/912e8e046d0cd4ca.css +1 -0
- 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/chunks/app/(dashboard)/dashboard/quota/page-2050b8c10234b86e.js +0 -1
- package/app/.next/static/css/5c8909d9cd96e270.css +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-2050b8c10234b86e.js +0 -1
- package/app/.next-cli-build/static/css/5c8909d9cd96e270.css +0 -1
- /package/app/.next/static/{67uh5PHd0ouLGa9jpqi0E → MSigI0uI9w5TrE5x-BeGU}/_buildManifest.js +0 -0
- /package/app/.next/static/{67uh5PHd0ouLGa9jpqi0E → MSigI0uI9w5TrE5x-BeGU}/_ssgManifest.js +0 -0
- /package/app/.next-cli-build/static/{67uh5PHd0ouLGa9jpqi0E → MSigI0uI9w5TrE5x-BeGU}/_buildManifest.js +0 -0
- /package/app/.next-cli-build/static/{67uh5PHd0ouLGa9jpqi0E → MSigI0uI9w5TrE5x-BeGU}/_ssgManifest.js +0 -0
|
@@ -64,10 +64,10 @@ ${b}`;return}if(Array.isArray(a.system)){if(e(a.system.map(a=>a?.text||"").join(
|
|
|
64
64
|
|
|
65
65
|
${b}`:b;return}let c=Array.isArray(a.messages)?a.messages:null;if(!c)return;let d=c.findIndex(a=>a&&("system"===a.role||"developer"===a.role));if(d>=0){var f,g,h;if(e("string"==typeof(f=c[d]).content?f.content:Array.isArray(f.content)?f.content.map(a=>a.text||"").join(" "):"",b))return;g=c[d],h=b,"string"==typeof g.content?g.content=`${g.content}
|
|
66
66
|
|
|
67
|
-
${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)}}},18367:(a,b,c)=>{c.d(b,{Z:()=>e});var d=c(60290);function e({body:a,reexecute:b,signal:c,firstChunkTimeoutMs:f=d.Z1,log:g,maxRetries:h=1}){let i=a.getReader(),j=!1,k=!1,l=!1,m=null,n=null,o=()=>{m&&(clearTimeout(m),m=null)},p=a=>{try{a.error(Error("stream first-chunk timeout"))}catch{}},q=()=>n?.();c?.addEventListener?.("abort",q);let r=()=>{o(),c?.removeEventListener?.("abort",q)};return new ReadableStream({async pull(a){if(l){r(),a.close();return}if(c?.aborted)return(r(),j)?p(a):void a.close();try{for(;;){let b=!j&&f>0?new Promise(a=>{m=setTimeout(()=>a({timeout:!0}),f)}):null,d=c?new Promise(a=>{n=()=>a({aborted:!0}),c.aborted&&n()}):null,e=i.read().catch(a=>({error:a})),g=await Promise.race([e,b,d].filter(Boolean));if(n=null,o(),g.aborted||l){if(r(),i.cancel().catch(()=>{}),j&&!l)return p(a);a.close();return}if(g.error)throw g.error;if(g.timeout){if(i.cancel().catch(()=>{}),await s(a,"first-chunk timeout"))continue;return r(),p(a)}if(g.done){if(!j&&await s(a,"empty EOF"))continue;if(r(),!j)return p(a);a.close();return}j=!0,a.enqueue(g.value);return}}catch(b){r();try{a.error(b)}catch{}}},cancel(){l=!0,r(),i?.cancel().catch(()=>{})}});async function s(a,d){if(h<=0||k||l||c?.aborted)return!1;k=!0,g?.warn?.("STREAM",`zero-byte ${d} | retrying once`);let e=await b();return l||c?.aborted?(await e?.cancel?.().catch(()=>{}),r(),a.close(),!1):!!e&&(i=e.getReader(),j=!1,!0)}}},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:()=>
|
|
67
|
+
${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)}}},18367:(a,b,c)=>{c.d(b,{Z:()=>e});var d=c(60290);function e({body:a,reexecute:b,signal:c,firstChunkTimeoutMs:f=d.Z1,log:g,maxRetries:h=1}){let i=a.getReader(),j=!1,k=!1,l=!1,m=null,n=null,o=()=>{m&&(clearTimeout(m),m=null)},p=a=>{try{a.error(Error("stream first-chunk timeout"))}catch{}},q=()=>n?.();c?.addEventListener?.("abort",q);let r=()=>{o(),c?.removeEventListener?.("abort",q)};return new ReadableStream({async pull(a){if(l){r(),a.close();return}if(c?.aborted)return(r(),j)?p(a):void a.close();try{for(;;){let b=!j&&f>0?new Promise(a=>{m=setTimeout(()=>a({timeout:!0}),f)}):null,d=c?new Promise(a=>{n=()=>a({aborted:!0}),c.aborted&&n()}):null,e=i.read().catch(a=>({error:a})),g=await Promise.race([e,b,d].filter(Boolean));if(n=null,o(),g.aborted||l){if(r(),i.cancel().catch(()=>{}),j&&!l)return p(a);a.close();return}if(g.error)throw g.error;if(g.timeout){if(i.cancel().catch(()=>{}),await s(a,"first-chunk timeout"))continue;return r(),p(a)}if(g.done){if(!j&&await s(a,"empty EOF"))continue;if(r(),!j)return p(a);a.close();return}j=!0,a.enqueue(g.value);return}}catch(b){r();try{a.error(b)}catch{}}},cancel(){l=!0,r(),i?.cancel().catch(()=>{})}});async function s(a,d){if(h<=0||k||l||c?.aborted)return!1;k=!0,g?.warn?.("STREAM",`zero-byte ${d} | retrying once`);let e=await b();return l||c?.aborted?(await e?.cancel?.().catch(()=>{}),r(),a.close(),!1):!!e&&(i=e.getReader(),j=!1,!0)}}},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:()=>k,Fo:()=>i,MK:()=>j,YZ:()=>l});var d=c(12407),e=c(71413),f=c(6755),g=c(67677);let h=["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 i(a,b){let c={messages:a.messages||[],model:a.model,stream:b};for(let b of h)void 0!==a[b]&&(c[b]=a[b]);return c}function j(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 k(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,toolHistory:a.request?.toolHistoryDiagnostics?{stages:a.request.toolHistoryDiagnostics,dispatched:(0,e.O)(a.providerRequest)}:void 0,response:a.response||{},pxpipe:a.pxpipe||void 0,rtk:a.rtk||void 0,status:a.status||"success",...b}}function l(a){let b=function({provider:a,model:b,tokens:c,connectionId:e,clientKeyId:h,endpoint:i,requestId:j=null,label:k="USAGE"}){if(!c||"object"!=typeof c)return;let l=c.input_tokens??c.prompt_tokens??0,m=c.output_tokens??c.completion_tokens??0;if(0===l&&0===m)return;let n=new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"}),o=e?` | account=${e.slice(0,8)}...`:"";console.log(`${f.lm.green}[${n}] 📊 [${k}] ${a.toUpperCase()} | in=${l} | out=${m}${o}${f.lm.reset}`);let p=(0,g._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:p,timestamp:new Date().toISOString(),connectionId:e||void 0,clientKeyId:h||void 0,endpoint:i||null,requestId:j||null})}(a);if(a.clientKeyId)return b;b?.catch?.(a=>console.error("[USAGE] save failed:",a?.message||a))}},30369:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{SB:()=>f.getExecutor}),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=>{if(m)return;if(c?.aborted)return t();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}
|
|
68
68
|
|
|
69
|
-
`),s()};for(let a=0;;a++){let e=new TextDecoder,j="",k=null,n=!1,o="empty",p=Date.now(),v=!1,w=null,x=()=>{w&&(clearInterval(w),w=null)};h>0&&(w=setInterval(()=>{if(Date.now()-p>=h){v=!0;try{l.cancel().catch(()=>{})}catch{}}},Math.min(h,5e3)));try{for(;;){let a;if(m)return;if(c?.aborted)return t();try{a=await l.read()}catch{if(m)return;if(c?.aborted)return t();o=v?"stall":"read_error";break}if(m)return;if(c?.aborted)return t();if(v){o="stall";break}p=Date.now();let{done:b,value:g}=a;if(b)break;let h=(j+=e.decode(g,{stream:!0})).split("\n");for(let a of(j=h.pop(),h)){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&&(n=!0),await r(a+"\n")}}}finally{x()}if(f||n){let a=j+e.decode();!k&&a&&await r(a),s();return}let y=k?k.reason:o;if(g?.warn?.("STREAM",`ANTIGRAVITY | empty (${y}) | attempt ${a+1}/3`),a>=2)return u(`empty response from upstream (${y}) 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),m)return;if(c?.aborted)return t();try{let a=await b();if(m||c?.aborted){try{await a.cancel()}catch{}m||t();return}l=a.getReader()}catch(a){if(m)return;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:()=>T});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(49263),n=c(18129),o=c(70718),p=c(46052),q=c(27335),r=c(4630),s=c(89865),t=c(60290),u=c(2735),v=c(12407),w=c(48400),x=c(29461),y=c(78255),z=c(15142),A=c(61229),B=c(34267),C=c(18367),D=c(27226),E=c(28190),F=c(10640),G=c(37208),H=c(16799),I=c(92),J=c(10089),K=c(91576),L=c(12197),M=c(54070),N=c(39232),O=c(90197),P=c(43904),Q=c(94501),R=c(96145),S=a([w]);w=(S.then?(await S)():S)[0];let U=new Set([h.h.GEMINI,h.h.GEMINI_CLI,h.h.ANTIGRAVITY,h.h.VERTEX]);async function T({body:a,modelInfo:b,credentials:c,log:d,onCredentialsRefreshed:S,onRequestSuccess:V,onDisconnect:W,onUpstreamEmptyExhausted:X,clientRawRequest:Y,connectionId:Z,userAgent:$,clientKeyId:_,ccFilterNaming:aa,rtkEnabled:ab,vaultEnabled:ac,vaultThresholdKB:ad,vaultTtlHours:ae,vaultConversationId:af,headroomEnabled:ag,headroomUrl:ah,headroomCompressUserMessages:ai,cavemanEnabled:aj,cavemanLevel:ak,ponytailEnabled:al,ponytailLevel:am,pxpipeEnabled:an,pxpipeMinChars:ao,pxpipeTimeoutMs:ap,pxpipeTransform:aq,onPxpipeEvent:ar,sourceFormatOverride:as,providerThinking:at,bypassNativePassthrough:au,vaultInternal:av,abortSignal:aw}){let ax,ay,az,aA,aB,aC;if(aw?.aborted)return(0,s.A1)(499,"Request aborted");let{provider:aD,model:aE}=b,aF=Date.now(),aG=as||(0,e.Tz)(a),aH=(0,u.c)(a,aE,$,aa);if(aH)return aH;let aI=q.Xg[aD]||aD,aJ=(0,q.ux)(aI,aE),aK=(0,q.ez)(aI,aE),aL=aJ||(0,e.jJ)(aD,c),aM=(0,e.oF)(aD,aG,aK),aN=aM||(0,e.oF)(aD,aL,aK),aO=aM?.format===aG;c&&(c.runtimeTransport=aN||void 0);let aP=aO?aG:aN?.format||aL,aQ=(0,q.cY)(aI,aE),aR=(0,q.kt)(aI,aE);if(at?.mode&&"auto"!==at.mode){let b=at.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 aS=Y?.headers?.accept||"",aT=aS.includes("application/json"),aU=aS.includes("text/event-stream"),aV=aG===h.h.ANTIGRAVITY||aG===h.h.GEMINI||aG===h.h.GEMINI_CLI,aW=!0===a.stream||aV&&!(aT&&!aU),aX=r.xq[aD]?.forceStream===!0,aY=!!aX||!1!==a.stream,aZ=(0,q.OA)(aI,aE);"imageGen"===aZ&&("antigravity"===aD||"gemini-cli"===aD)&&(aY=!1);let a$=(0,D.Jz)(Y?.headers||{},a);"deepseek-tui"===a$&&!0!==a.stream&&(aY=!1),!aT||aU||!0===a.stream||aX||(aY=!1),a&&"object"==typeof a&&(a={...a,stream:aY});let a_=await (0,o.q7)(aG,aP,aE);Y&&a_.logClientRawRequest(Y.endpoint,Y.body,Y.headers),a_.logRawRequest(a),d?.debug?.("FORMAT",`${aG} → ${aP} | stream=${aY}`);let a0=(0,D.Jz)(Y?.headers||{},a);(0,D.lP)(a0,Y?.headers||{},a);let a1=!au&&(0,D.Qf)(a0,aD);if(c&&(c.rawHeaders=Y?.headers||{}),!a1){let b=(0,P.nl)(aD,aE);(0,Q.X)(a,aG,b)&&d?.debug?.("MODALITY",`stripped unsupported media for ${aD}/${aE}`);try{let b=await (0,R.C)(a,aG,aP,{signal:aw});b>0&&d?.debug?.("MODALITY",`prefetched ${b} remote image(s) for ${aP}`)}catch(a){d?.warn?.("MODALITY",`image prefetch failed: ${a.message}`)}}let a2=(0,F.Ay)(a);if(a2>0&&d?.debug?.("TOOLCLEAN",`pre-translation: stripped ${a2} orphaned tool result(s)`),a1)d?.debug?.("PASSTHROUGH",`${a0} → ${aD} | native lossless`),ax={...a,model:(0,g.kD)(aR)},"claude"===a0&&(0,i.ui)(ax,ax.model);else{if(!(ax=(0,f.GH)(aG,aP,aR,a,aY,c,aD,a_,aQ,Z,a0)))return(0,v.uw)(aE,aD,Z,!1,!0),(0,s.A1)(t.gx.BAD_REQUEST,`Failed to translate request for ${aG} → ${aP}`);if(ay=ax._toolNameMap,delete ax._toolNameMap,ax.model=(0,g.kD)(aR),("claude"===aD||aD?.startsWith("anthropic-compatible"))&&"object"==typeof ax){let a=c?.accessToken||c?.apiKey||null;if("string"==typeof a&&a.includes("sk-ant-oat"))try{let b=clientSessionId||(0,K.oV)({headers:Y?.headers,body:ax,connectionId:Z,scope:"claude"});ax=await (0,J.Dz)(ax,a,b,c?.connectionId||a,{})}catch{}}}if("claude"===a0&&Array.isArray(ax.tools)){let{tools:a,stripped:b}=(0,E.F)(ax.tools);b.length>0&&(ax.tools=a,d?.debug?.("TOOLDEDUP",`stripped ${b.length}: ${b.slice(0,3).join(", ")}${b.length>3?"...":""}`))}let a3=a1?aG:aP;"tts"===(0,q.OA)(aI,aE)&&ax.messages&&(ax.messages=ax.messages.filter(a=>"tool"!==a.role),delete ax.tools);let a4=null;try{if(ac&&af&&Array.isArray(ax?.tools)&&ax.tools.length>0&&(aG===h.h.OPENAI||aG===h.h.CLAUDE)){let a=1024*(0,L.u1)(ad??8),b=3600*Math.max(1,Number(ae??24))*1e3;a4=await (0,L.f3)(ax,{conversationId:af,thresholdBytes:a,ttlMs:b,log:d})}}catch(a){d?.warn?.("VAULT",`store failed (dropped): ${a?.message||a}`)}let a5=Y?.headers?.[t.SA]?.toLowerCase()!=="off",a6=(0,I.BI)(ax,a5&&ab),a7=(0,I.fT)(a6);if(a7&&console.log(a7),a4?.vaulted>0){let a=a4.bytesBefore-a4.bytesAfter;(0,M.DL)(a4.vaulted,a),d?.info?.("VAULT",`externalized ${a4.vaulted} tool result(s), saved ${a}B`)}let a8={},a9=await (0,N.SI)(ax,{enabled:a5&&ag,url:ah,model:aR,format:a3,compressUserMessages:ai,diagnostics:a8}),ba=(0,N.Nv)(a9),bb=(0,N.O2)(a8);ba?(d?.info?.("HEADROOM",`${ba}${bb?` | ${bb}`:""}`),(0,N.cB)(a9,a8)&&d?.warn?.("HEADROOM",`reported token delta, but outbound JSON shrank <5%; provider may bill near-original payload | ${bb}`)):a5&&ag&&d?.warn?.("HEADROOM",`skipped: ${a8.reason||"compression unavailable"}${a8.endpoint?` (${a8.endpoint})`:""}`);let bc=(0,F.Ay)(ax);bc>0&&d?.debug?.("TOOLCLEAN",`post-compression: stripped ${bc} orphaned tool result(s)`),a5&&aj&&ak&&((0,G.p)(ax,a3,ak),d?.debug?.("CAVEMAN",`${ak} | ${a3}`)),a5&&al&&am&&((0,H.U)(ax,a3,am),d?.debug?.("PONYTAIL",`${am} | ${a3}`));let bd=null;if(a5&&an){let a=await (0,O.H)(ax,{enabled:!0,format:a3,model:aR,minChars:ao,timeoutMs:ap,transform:aq});bd=a.summary;let b=(0,O._)(bd);b?d?.info?.("PXPIPE",b):d?.debug?.("PXPIPE",`skipped: ${bd?.reason||"unknown"}`),a.body&&(ax=a.body);try{ar&&ar({provider:aD,model:aE,...bd})}catch{}}if(ax&&"object"==typeof ax)if(U.has(a3)){let{stream:a,request:b,...c}=ax;if(b&&"object"==typeof b){let{stream:a,...d}=b;ax={...c,request:d}}else ax=c}else ax.stream!==aY&&(ax={...ax,stream:aY});a1&&"claude"===a0&&(0,i._W)(ax);let be=(0,w.getExecutor)(aD);(0,v.uw)(aE,aD,Z,!0),av||(0,v.E5)({model:aE,provider:aD,connectionId:Z,status:"PENDING"}).catch(()=>{});let bf=ax.messages?.length||ax.input?.length||ax.contents?.length||ax.request?.contents?.length||0;d?.debug?.("REQUEST",`${aD.toUpperCase()} | ${aE} | ${bf} msgs`);let bg=(0,k.jd)({onDisconnect:a=>{(0,v.uw)(aE,aD,Z,!1),W&&W(a)},onError:()=>(0,v.uw)(aE,aD,Z,!1),log:d,provider:aD,model:aE});if(aw)if(aw.aborted)try{bg.abort()}catch{}else aw.addEventListener("abort",()=>{try{bg.abort()}catch{}},{once:!0});let bh=(0,p.$6)(c);if(bh.vercelRelayUrl){let a=c?.connectionName||c?.connectionId||"unknown",b=c?.providerSpecificData?.connectionProxyPoolId||"none";d?.info?.("PROXY",`${aD.toUpperCase()} | ${aE} | conn=${a} | pool=${b} | vercel-relay=${bh.vercelRelayUrl}`)}else if(bh.connectionProxyEnabled&&bh.connectionProxyUrl){let a=bh.connectionProxyUrl;try{let b=new URL(bh.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",`${aD.toUpperCase()} | ${aE} | conn=${e} | pool=${b} | url=${a}`)}if(bh.connectionProxyEnabled&&bh.connectionNoProxy){let a=c?.connectionName||c?.connectionId||"unknown";d?.debug?.("PROXY",`${aD.toUpperCase()} | ${aE} | conn=${a} | no_proxy=${bh.connectionNoProxy}`)}let bi=(0,x.Fo)(a,aY),bj=()=>aw?.aborted||bg.signal?.aborted,bk=async()=>{try{await az?.body?.cancel?.()}catch{}return(0,v.uw)(aE,aD,Z,!1),a_?.close?.(),(0,s.A1)(499,"Request aborted")};try{if(bj())return bk();let a=await be.execute({model:aE,body:structuredClone(ax),stream:aY,credentials:c,signal:bg.signal,log:d,proxyOptions:bh});az=a.response,aA=a.url,aB=a.headers,aC=a.transformedBody,a_.logTargetRequest(aA,aB,aC)}catch(c){let a=bj()||c?.name==="AbortError";if((0,v.uw)(aE,aD,Z,!1,!a),a_?.close?.(),(0,v.ox)((0,x.$R)({provider:aD,model:aE,connectionId:Z,latency:{ttft:0,total:Date.now()-aF},tokens:{prompt_tokens:0,completion_tokens:0},request:bi,providerRequest:ax||null,response:{error:c?.message||(a?"Request aborted":String(c)),status:a?499:502,thinking:null},status:"error",pxpipe:bd||void 0,rtk:a6||void 0})).catch(()=>{}),a)return bg.handleError(new DOMException("Request aborted","AbortError")),(0,s.A1)(499,"Request aborted");let b=(0,s.lR)(c,aD,aE,t.gx.BAD_GATEWAY);return console.log(`${j.lm.red}[ERROR] ${b}${j.lm.reset}`),(0,s.A1)(t.gx.BAD_GATEWAY,b)}if(bj())return bk();let bl=null;if(!be.noAuth&&(az.status===t.gx.UNAUTHORIZED||az.status===t.gx.FORBIDDEN))try{let a=await (0,l.qZ)(async()=>{bg.signal?.throwIfAborted();let a=await (0,n.MF)(aD,c,()=>be.refreshCredentials(c,d,bh));return a||bg.signal?.throwIfAborted(),a?.refreshToken&&a.refreshToken!==c.refreshToken&&(a.accessToken&&(c.accessToken=a.accessToken),c.refreshToken=a.refreshToken),a},3,d,bg.signal);if(a?.accessToken||a?.copilotToken){if(d?.info?.("TOKEN",`${aD.toUpperCase()} | refreshed`),Object.assign(c,a),S)try{await S(a)}catch(a){d?.warn?.("TOKEN",`onCredentialsRefreshed failed: ${a.message}`)}if(bj())return bk();try{let a=await be.execute({model:aE,body:structuredClone(ax),stream:aY,credentials:c,signal:bg.signal,log:d,proxyOptions:bh});try{await az.body?.cancel?.()}catch{}az=a.response,aA=a.url,aB=a.headers??aB,aC=a.transformedBody??aC,a_.logTargetRequest(aA,aB,aC)}catch{d?.warn?.("TOKEN",`${aD.toUpperCase()} | retry after refresh failed`)}}else if((0,l.jT)(a)){let b=a.code||"invalid_grant";if(bl=`OAuth refresh token expired or revoked (${b}): reconnect the ${aD} account in the Switchboard dashboard`,d?.warn?.("TOKEN",`${aD.toUpperCase()} | refresh token revoked, re-auth required (${b})`),S)try{await S({reauthRequired:!0,testStatus:m.RU,lastError:bl,lastErrorAt:new Date().toISOString()})}catch(a){d?.warn?.("TOKEN",`onCredentialsRefreshed failed: ${a.message}`)}}else d?.warn?.("TOKEN",`${aD.toUpperCase()} | refresh failed`)}catch(a){d?.warn?.("TOKEN",`${aD.toUpperCase()} | refresh threw: ${a.message}`)}if(bj())return bk();if(!az.ok){(0,v.uw)(aE,aD,Z,!1,!0),a_?.close?.();let{statusCode:a,message:b,resetsAtMs:c}=await (0,s.zL)(az,be),d=bl||b;(0,v.ox)((0,x.$R)({provider:aD,model:aE,connectionId:Z,latency:{ttft:0,total:Date.now()-aF},tokens:{prompt_tokens:0,completion_tokens:0},request:bi,providerRequest:aC||ax||null,response:{error:d,status:a,thinking:null},status:"error",pxpipe:bd||void 0,rtk:a6||void 0})).catch(()=>{});let e=(0,s.lR)(Error(d),aD,aE,a);return console.log(`${j.lm.red}[ERROR] ${e}${j.lm.reset}`),a_.logError(Error(d),aC||ax),(0,s.A1)(a,e,c)}let bm=async()=>{bg.signal?.throwIfAborted();let a=await be.execute({model:aE,body:structuredClone(ax),stream:aY,credentials:c,signal:bg.signal,log:d,proxyOptions:bh});if(bj()){try{await a.response.body?.cancel?.()}catch{}throw new DOMException("Request aborted","AbortError")}if(!a.response.ok){let{statusCode:b,message:c}=await (0,s.zL)(a.response,be);throw Error(`[${b}] ${c}`)}if(!a.response.body)throw Error("upstream returned no body");return a.response.body},bn="antigravity"===aD||"gemini-cli"===aD||"gemini"===aD||"vertex"===aD;bn&&aY&&az.body?az=new Response((0,B.gH)({body:az.body,reexecute:bm,signal:bg.signal,log:d,onExhausted:(a,{upstreamError:b}={})=>{if(!X)return;let c=be.parseRetryFromErrorMessage?.(b?.message||a);return X((0,s.lR)(Error(a),aD,aE,t.gx.BAD_GATEWAY),c?Date.now()+c:void 0)}}),{status:az.status,headers:az.headers}):aY&&az.body&&(az=new Response((0,C.Z)({body:az.body,reexecute:bm,signal:bg.signal,log:d,maxRetries:+("claude"!==aD)}),{status:az.status,headers:az.headers}));let bo=`${Date.now()}-${Math.random().toString(36).slice(2,11)}`,bp={provider:aD,model:aE,body:a,stream:aY,requestConfig:bi,translatedBody:ax,finalBody:aC,requestStartTime:aF,connectionId:Z,clientKeyId:_,clientRawRequest:Y,onRequestSuccess:V,requestId:bo,pxpipe:bd||void 0,streamSignal:bg.signal},bq=a=>{av||(0,v.E5)({model:aE,provider:aD,connectionId:Z,...a}).catch(()=>{})},br=()=>(0,v.uw)(aE,aD,Z,!1);if(!aW&&aX){let a=await (0,y.I)({...bp,providerResponse:az,sourceFormat:aG,targetFormat:aP,trackDone:br,appendLog:bq});if(a)return bg.handleComplete(),a}if(!aY){let a=await (0,z.N)({...bp,providerResponse:az,sourceFormat:aG,targetFormat:aP,reqLogger:a_,toolNameMap:ay,trackDone:br,appendLog:bq});return bg.handleComplete(),a}let{onStreamComplete:bs,onStreamFailure:bt,streamDetailId:bu}=(0,A.$)({...bp});return(0,A.M)({...bp,providerResponse:az,sourceFormat:aG,targetFormat:aP,userAgent:$,reqLogger:a_,toolNameMap:ay,streamController:bg,onStreamComplete:bs,onStreamFailure:bt,streamDetailId:bu,firstChunkTimeoutMs:bn?void 0:0})}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=Array.isArray(a.system)&&a.system[0]?.text?.startsWith?.("x-anthropic-billing-header:")?a.system[0]:null,f=(0,d.t)(g,a,!1);if(!Array.isArray(f?.messages))return i(o,"Claude request did not translate to messages[]"),null;let k=await j(c,f.messages,g,n,m,o||{});if(!k)return null;let l=(0,e.p)(g,{...f,messages:k.messages},!1);return Array.isArray(l?.messages)&&(a.messages=l.messages),l?.system!==void 0&&(a.system=b?[b,...Array.isArray(l.system)?l.system:[{type:"text",text:String(l.system)}]]:l.system),o&&(o.after=h(a)),k}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.Zj)(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:()=>l,p:()=>m});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){let b=a||{},c=b.prompt_tokens||b.input_tokens||0,d=b.completion_tokens||b.output_tokens||0,e={prompt_tokens:c,completion_tokens:d,total_tokens:b.total_tokens||c+d},f=b.prompt_tokens_details||{},g=b.input_tokens_details||{},h=f.cached_tokens||g.cached_tokens||b.cache_read_input_tokens||0,i=f.cache_creation_tokens||g.cache_creation_tokens||b.cache_creation_input_tokens||0;(h>0||i>0)&&(e.prompt_tokens_details={},h>0&&(e.prompt_tokens_details.cached_tokens=h),i>0&&(e.prompt_tokens_details.cache_creation_tokens=i));let j=b.completion_tokens_details||{},k=b.output_tokens_details||{},l=j.reasoning_tokens||k.reasoning_tokens||0;return l>0&&(e.completion_tokens_details={reasoning_tokens:l}),e}function l(a,b){let c,d=Array.isArray(a?.output)?a.output:[],e=d.filter(a=>a?.type==="reasoning").flatMap(a=>Array.isArray(a.summary)?a.summary:[]).map(a=>a?.text||"").join(""),f=d.filter(a=>a?.type==="message"),g=[...f].reverse().find(a=>(Array.isArray(a.content)?a.content:[]).some(a=>"string"==typeof a.text&&a.text.length>0))||f[f.length-1]||null,h=d.filter(a=>a?.type==="refusal").map(a=>a?.refusal||"").join(""),i=(Array.isArray(g?.content)?g.content:[]).map(a=>("output_text"===a.type||"refusal"===a.type||"string"==typeof a.text)&&(a.text||a.refusal)||"").join("")||h,j=d.filter(a=>a?.type==="function_call"||a?.type==="custom_tool_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??a.input??{})}})),l=a?.usage||{},m={role:"assistant",content:i||(j.length>0?null:"")};if(e&&(m.reasoning_content=e),j.length>0&&(m.tool_calls=j),j.length>0)c="tool_calls";else if(h&&""===i.split(h).join("").trim())c="content_filter";else{let b=a?.status;c="completed"===b||"done"===b?"stop":"failed"===b?"error":"incomplete"===b?a?.incomplete_details?.reason==="content_filter"?"content_filter":"length":"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:m,finish_reason:c}],usage:k(l)}}function m(a,b){switch(b){case d.h.CLAUDE:return function(a){let b,c,f,k,l,m;if(!a?.choices?.[0])return a;let n=h(a),o=i(a),p=[],q=o.reasoning_content||o.provider_specific_fields?.reasoning_content||"";for(let b of(q&&p.push({type:"thinking",thinking:q}),"string"==typeof o.content&&o.content.length>0&&p.push({type:"text",text:o.content}),j(a))){let a=b.function||{};p.push({type:"tool_use",id:b.id||`toolu_${Date.now()}_${p.length}`,name:a.name||b.name||"",input:g(a.arguments||b.arguments)})}0===p.length&&p.push({type:"text",text:""});let r=a.usage||{};return{id:String(a.id||`msg_${Date.now()}`).replace(/^chatcmpl-/,""),type:"message",role:"assistant",model:a.model||"unknown",content:p,stop_reason:(0,e.Q)(n.finish_reason,d.h.CLAUDE),stop_sequence:null,usage:(c={input_tokens:(b=r||{}).prompt_tokens||b.input_tokens||0,output_tokens:b.completion_tokens||b.output_tokens||0},f=b.prompt_tokens_details||{},k=b.input_tokens_details||{},l=f.cached_tokens||k.cached_tokens||b.cache_read_input_tokens||0,m=f.cache_creation_tokens||k.cache_creation_tokens||b.cache_creation_input_tokens||0,l>0&&(c.cache_read_input_tokens=l),m>0&&(c.cache_creation_input_tokens=m),c)}}(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=k(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;case f.bC.ERROR:return f.a_.MALFORMED_FUNCTION_CALL;default:return f.a_.STOP}}(h(a).finish_reason),index:0}],usageMetadata:{promptTokenCount:c.prompt_tokens,candidatesTokenCount:c.completion_tokens,totalTokenCount:c.total_tokens},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:"tool_calls"===b.finish_reason?"stop":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){let b;if(!a?.choices?.[0])return a;let c=i(a),d=a.usage||{},e=[],f=0,g=c.reasoning_content||c.provider_specific_fields?.reasoning_content||"";g&&(e.push({type:"reasoning",id:`rs_${a.id||Date.now()}_${f}`,summary:[{type:"summary_text",text:g}]}),f++);let l="string"==typeof c.content?c.content:"";l&&(e.push({type:"message",id:`msg_${a.id||Date.now()}_${f}`,role:"assistant",content:[{type:"output_text",text:l,annotations:[],logprobs:[]}]}),f++);let m=j(a);if(m.length>0)for(let a of m){let b=a.function||{},c=a.id||`call_${b.name||"tool"}_${f}`;e.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||{})}),f++}else l||g||e.push({type:"message",id:`msg_${a.id||Date.now()}_${f}`,role:"assistant",content:[{type:"output_text",text:"",annotations:[],logprobs:[]}]});let n=h(a).finish_reason||"stop",o="completed";"length"===n?(o="incomplete",b={reason:"max_output_tokens"}):"content_filter"===n?(o="incomplete",b={reason:"content_filter"}):"error"===n&&(o="failed");let p=k(d);return{id:a.id?`resp_${a.id}`:`resp_${Date.now()}`,object:"response",created_at:a.created||Math.floor(Date.now()/1e3),status:o,...b?{incomplete_details:b}:{},output:e,usage:{input_tokens:p.prompt_tokens,output_tokens:p.completion_tokens,total_tokens:p.total_tokens}}}(a);case d.h.KIRO:case d.h.CURSOR:case d.h.COMMANDCODE: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,requestConfig:u,translatedBody:v,finalBody:w,requestStartTime:x,connectionId:y,clientKeyId:z,requestId:A,clientRawRequest:B,onRequestSuccess:C,reqLogger:D,toolNameMap:E,streamController:F,onStreamComplete:G,onStreamFailure:H,streamDetailId:I,pxpipe:J,firstChunkTimeoutMs:K=i.Z1,firstProgressTimeoutMs:L=i.Z1,progressStallTimeoutMs:M=i.xM}){let N=(a.headers.get("content-type")||"").toLowerCase();if((N.includes("application/x-ndjson")||N.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
|
+
`),s()};for(let a=0;;a++){let e=new TextDecoder,j="",k=null,n=!1,o="empty",p=Date.now(),v=!1,w=null,x=()=>{w&&(clearInterval(w),w=null)};h>0&&(w=setInterval(()=>{if(Date.now()-p>=h){v=!0;try{l.cancel().catch(()=>{})}catch{}}},Math.min(h,5e3)));try{for(;;){let a;if(m)return;if(c?.aborted)return t();try{a=await l.read()}catch{if(m)return;if(c?.aborted)return t();o=v?"stall":"read_error";break}if(m)return;if(c?.aborted)return t();if(v){o="stall";break}p=Date.now();let{done:b,value:g}=a;if(b)break;let h=(j+=e.decode(g,{stream:!0})).split("\n");for(let a of(j=h.pop(),h)){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&&(n=!0),await r(a+"\n")}}}finally{x()}if(f||n){let a=j+e.decode();!k&&a&&await r(a),s();return}let y=k?k.reason:o;if(g?.warn?.("STREAM",`ANTIGRAVITY | empty (${y}) | attempt ${a+1}/3`),a>=2)return u(`empty response from upstream (${y}) 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),m)return;if(c?.aborted)return t();try{let a=await b();if(m||c?.aborted){try{await a.cancel()}catch{}m||t();return}l=a.getReader()}catch(a){if(m)return;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:()=>U});var e=c(17717),f=c(48664),g=c(94454),h=c(19956),i=c(43788),j=c(71413),k=c(6755),l=c(15575),m=c(41029),n=c(49263),o=c(18129),p=c(70718),q=c(46052),r=c(27335),s=c(4630),t=c(89865),u=c(60290),v=c(2735),w=c(12407),x=c(48400),y=c(29461),z=c(78255),A=c(15142),B=c(61229),C=c(34267),D=c(18367),E=c(27226),F=c(28190),G=c(10640),H=c(37208),I=c(16799),J=c(92),K=c(10089),L=c(91576),M=c(12197),N=c(54070),O=c(39232),P=c(90197),Q=c(43904),R=c(94501),S=c(96145),T=a([x]);x=(T.then?(await T)():T)[0];let V=new Set([h.h.GEMINI,h.h.GEMINI_CLI,h.h.ANTIGRAVITY,h.h.VERTEX]);async function U({body:a,modelInfo:b,credentials:c,log:d,onCredentialsRefreshed:T,onRequestSuccess:W,onDisconnect:X,onUpstreamEmptyExhausted:Y,clientRawRequest:Z,connectionId:$,userAgent:_,clientKeyId:aa,ccFilterNaming:ab,rtkEnabled:ac,vaultEnabled:ad,vaultThresholdKB:ae,vaultTtlHours:af,vaultConversationId:ag,headroomEnabled:ah,headroomUrl:ai,headroomCompressUserMessages:aj,cavemanEnabled:ak,cavemanLevel:al,ponytailEnabled:am,ponytailLevel:an,pxpipeEnabled:ao,pxpipeMinChars:ap,pxpipeTimeoutMs:aq,pxpipeTransform:ar,onPxpipeEvent:as,sourceFormatOverride:at,providerThinking:au,bypassNativePassthrough:av,vaultInternal:aw,abortSignal:ax}){let ay,az,aA,aB,aC,aD;if(ax?.aborted)return(0,t.A1)(499,"Request aborted");let{provider:aE,model:aF}=b,aG=Date.now(),aH=at||(0,e.Tz)(a),aI=[],aJ=(a,b,c=aH)=>{if(aH!==h.h.CLAUDE)return;if(c!==h.h.CLAUDE)return void aI.push({stage:a,format:c,notApplicable:!0});let d=(0,j.O)(b);d?aI.push({stage:a,format:c,...d}):aI.length&&aI.push({stage:a,format:c,messageCount:b?.messages?.length||0,toolCalls:0,toolResults:0})};aJ("inbound",a);let aK=(0,v.c)(a,aF,_,ab);if(aK)return aK;let aL=r.Xg[aE]||aE,aM=(0,r.ux)(aL,aF),aN=(0,r.ez)(aL,aF),aO=aM||(0,e.jJ)(aE,c),aP=(0,e.oF)(aE,aH,aN),aQ=aP||(0,e.oF)(aE,aO,aN),aR=aP?.format===aH;c&&(c.runtimeTransport=aQ||void 0);let aS=aR?aH:aQ?.format||aO,aT=(0,r.cY)(aL,aF),aU=(0,r.kt)(aL,aF);if(au?.mode&&"auto"!==au.mode){let b=au.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 aV=Z?.headers?.accept||"",aW=aV.includes("application/json"),aX=aV.includes("text/event-stream"),aY=aH===h.h.ANTIGRAVITY||aH===h.h.GEMINI||aH===h.h.GEMINI_CLI,aZ=!0===a.stream||aY&&!(aW&&!aX),a$=s.xq[aE]?.forceStream===!0,a_=!!a$||!1!==a.stream,a0=(0,r.OA)(aL,aF);"imageGen"===a0&&("antigravity"===aE||"gemini-cli"===aE)&&(a_=!1);let a1=(0,E.Jz)(Z?.headers||{},a);"deepseek-tui"===a1&&!0!==a.stream&&(a_=!1),!aW||aX||!0===a.stream||a$||(a_=!1),a&&"object"==typeof a&&(a={...a,stream:a_});let a2=await (0,p.q7)(aH,aS,aF);Z&&a2.logClientRawRequest(Z.endpoint,Z.body,Z.headers),a2.logRawRequest(a),d?.debug?.("FORMAT",`${aH} → ${aS} | stream=${a_}`);let a3=(0,E.Jz)(Z?.headers||{},a);(0,E.lP)(a3,Z?.headers||{},a);let a4=!av&&(0,E.Qf)(a3,aE);if(c&&(c.rawHeaders=Z?.headers||{}),!a4){let b=(0,Q.nl)(aE,aF);(0,R.X)(a,aH,b)&&d?.debug?.("MODALITY",`stripped unsupported media for ${aE}/${aF}`);try{let b=await (0,S.C)(a,aH,aS,{signal:ax});b>0&&d?.debug?.("MODALITY",`prefetched ${b} remote image(s) for ${aS}`)}catch(a){d?.warn?.("MODALITY",`image prefetch failed: ${a.message}`)}}let a5=(0,G.Ay)(a);if(a5>0&&d?.debug?.("TOOLCLEAN",`pre-translation: stripped ${a5} orphaned tool result(s)`),a4)d?.debug?.("PASSTHROUGH",`${a3} → ${aE} | native lossless`),ay={...a,model:(0,g.kD)(aU)},"claude"===a3&&(0,i.ui)(ay,ay.model);else{if(!(ay=(0,f.GH)(aH,aS,aU,a,a_,c,aE,a2,aT,$,a3)))return(0,w.uw)(aF,aE,$,!1,!0),(0,t.A1)(u.gx.BAD_REQUEST,`Failed to translate request for ${aH} → ${aS}`);if(az=ay._toolNameMap,delete ay._toolNameMap,ay.model=(0,g.kD)(aU),("claude"===aE||aE?.startsWith("anthropic-compatible"))&&"object"==typeof ay){let a=c?.accessToken||c?.apiKey||null;if("string"==typeof a&&a.includes("sk-ant-oat"))try{let b=c?._clientSessionId||(0,L.oV)({headers:Z?.headers,body:ay,connectionId:$,scope:"claude"});ay=await (0,K.Dz)(ay,a,b,c?.connectionId||a,{})}catch{}}}if(aJ("normalized",ay,a4?aH:aS),"claude"===a3&&Array.isArray(ay.tools)){let{tools:a,stripped:b}=(0,F.F)(ay.tools);b.length>0&&(ay.tools=a,d?.debug?.("TOOLDEDUP",`stripped ${b.length}: ${b.slice(0,3).join(", ")}${b.length>3?"...":""}`))}let a6=a4?aH:aS;"tts"===(0,r.OA)(aL,aF)&&ay.messages&&(ay.messages=ay.messages.filter(a=>"tool"!==a.role),delete ay.tools);let a7=null;try{if(ad&&ag&&Array.isArray(ay?.tools)&&ay.tools.length>0&&(aH===h.h.OPENAI||aH===h.h.CLAUDE)){let a=1024*(0,M.u1)(ae??8),b=3600*Math.max(1,Number(af??24))*1e3;a7=await (0,M.f3)(ay,{conversationId:ag,thresholdBytes:a,ttlMs:b,log:d})}}catch(a){d?.warn?.("VAULT",`store failed (dropped): ${a?.message||a}`)}let a8=Z?.headers?.[u.SA]?.toLowerCase()!=="off";aJ("vault",ay,a6);let a9=(0,J.BI)(ay,a8&&ac),ba=(0,J.fT)(a9);if(ba&&console.log(ba),a7?.vaulted>0){let a=a7.bytesBefore-a7.bytesAfter;(0,N.DL)(a7.vaulted,a),d?.info?.("VAULT",`externalized ${a7.vaulted} tool result(s), saved ${a}B`)}aJ("rtk",ay,a6);let bb={},bc=await (0,O.SI)(ay,{enabled:a8&&ah,url:ai,model:aU,format:a6,compressUserMessages:aj,diagnostics:bb}),bd=(0,O.Nv)(bc),be=(0,O.O2)(bb);bd?(d?.info?.("HEADROOM",`${bd}${be?` | ${be}`:""}`),(0,O.cB)(bc,bb)&&d?.warn?.("HEADROOM",`reported token delta, but outbound JSON shrank <5%; provider may bill near-original payload | ${be}`)):a8&&ah&&d?.warn?.("HEADROOM",`skipped: ${bb.reason||"compression unavailable"}${bb.endpoint?` (${bb.endpoint})`:""}`),aJ("headroom",ay,a6);let bf=(0,G.Ay)(ay);bf>0&&d?.debug?.("TOOLCLEAN",`post-compression: stripped ${bf} orphaned tool result(s)`),aJ("post-strip",ay,a6),a8&&ak&&al&&((0,H.p)(ay,a6,al),d?.debug?.("CAVEMAN",`${al} | ${a6}`)),a8&&am&&an&&((0,I.U)(ay,a6,an),d?.debug?.("PONYTAIL",`${an} | ${a6}`));let bg=null;if(a8&&ao){let a=await (0,P.H)(ay,{enabled:!0,format:a6,model:aU,minChars:ap,timeoutMs:aq,transform:ar});bg=a.summary;let b=(0,P._)(bg);b?d?.info?.("PXPIPE",b):d?.debug?.("PXPIPE",`skipped: ${bg?.reason||"unknown"}`),a.body&&(ay=a.body);try{as&&as({provider:aE,model:aF,...bg})}catch{}}if(ay&&"object"==typeof ay)if(V.has(a6)){let{stream:a,request:b,...c}=ay;if(b&&"object"==typeof b){let{stream:a,...d}=b;ay={...c,request:d}}else ay=c}else ay.stream!==a_&&(ay={...ay,stream:a_});a4&&"claude"===a3&&(0,i._W)(ay);let bh=(0,x.getExecutor)(aE);(0,w.uw)(aF,aE,$,!0),aw||(0,w.E5)({model:aF,provider:aE,connectionId:$,status:"PENDING"}).catch(()=>{});let bi=ay.messages?.length||ay.input?.length||ay.contents?.length||ay.request?.contents?.length||0;d?.debug?.("REQUEST",`${aE.toUpperCase()} | ${aF} | ${bi} msgs`);let bj=(0,l.jd)({onDisconnect:a=>{(0,w.uw)(aF,aE,$,!1),X&&X(a)},onError:()=>(0,w.uw)(aF,aE,$,!1),log:d,provider:aE,model:aF});if(ax)if(ax.aborted)try{bj.abort()}catch{}else ax.addEventListener("abort",()=>{try{bj.abort()}catch{}},{once:!0});let bk=(0,q.$6)(c);if(bk.vercelRelayUrl){let a=c?.connectionName||c?.connectionId||"unknown",b=c?.providerSpecificData?.connectionProxyPoolId||"none";d?.info?.("PROXY",`${aE.toUpperCase()} | ${aF} | conn=${a} | pool=${b} | vercel-relay=${bk.vercelRelayUrl}`)}else if(bk.connectionProxyEnabled&&bk.connectionProxyUrl){let a=bk.connectionProxyUrl;try{let b=new URL(bk.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",`${aE.toUpperCase()} | ${aF} | conn=${e} | pool=${b} | url=${a}`)}if(bk.connectionProxyEnabled&&bk.connectionNoProxy){let a=c?.connectionName||c?.connectionId||"unknown";d?.debug?.("PROXY",`${aE.toUpperCase()} | ${aF} | conn=${a} | no_proxy=${bk.connectionNoProxy}`)}aJ("final",ay,a6);let bl=(0,y.Fo)(a,a_);aI.length&&(bl.toolHistoryDiagnostics=aI);let bm=()=>ax?.aborted||bj.signal?.aborted,bn=async()=>{try{await aA?.body?.cancel?.()}catch{}return(0,w.uw)(aF,aE,$,!1),a2?.close?.(),(0,t.A1)(499,"Request aborted")};try{if(bm())return bn();let a=await bh.execute({model:aF,body:structuredClone(ay),stream:a_,credentials:c,signal:bj.signal,log:d,proxyOptions:bk});aA=a.response,aB=a.url,aC=a.headers,aD=a.transformedBody,a2.logTargetRequest(aB,aC,aD)}catch(c){let a=bm()||c?.name==="AbortError";if((0,w.uw)(aF,aE,$,!1,!a),a2?.close?.(),(0,w.ox)((0,y.$R)({provider:aE,model:aF,connectionId:$,latency:{ttft:0,total:Date.now()-aG},tokens:{prompt_tokens:0,completion_tokens:0},request:bl,providerRequest:ay||null,response:{error:c?.message||(a?"Request aborted":String(c)),status:a?499:502,thinking:null},status:"error",pxpipe:bg||void 0,rtk:a9||void 0})).catch(()=>{}),a)return bj.handleError(new DOMException("Request aborted","AbortError")),(0,t.A1)(499,"Request aborted");let b=(0,t.lR)(c,aE,aF,u.gx.BAD_GATEWAY);return console.log(`${k.lm.red}[ERROR] ${b}${k.lm.reset}`),(0,t.A1)(u.gx.BAD_GATEWAY,b)}if(bm())return bn();let bo=null;if(!bh.noAuth&&(aA.status===u.gx.UNAUTHORIZED||aA.status===u.gx.FORBIDDEN))try{let a=await (0,m.qZ)(async()=>{bj.signal?.throwIfAborted();let a=await (0,o.MF)(aE,c,()=>bh.refreshCredentials(c,d,bk));return a||bj.signal?.throwIfAborted(),a?.refreshToken&&a.refreshToken!==c.refreshToken&&(a.accessToken&&(c.accessToken=a.accessToken),c.refreshToken=a.refreshToken),a},3,d,bj.signal);if(a?.accessToken||a?.copilotToken){if(d?.info?.("TOKEN",`${aE.toUpperCase()} | refreshed`),Object.assign(c,a),T)try{await T(a)}catch(a){d?.warn?.("TOKEN",`onCredentialsRefreshed failed: ${a.message}`)}if(bm())return bn();try{let a=await bh.execute({model:aF,body:structuredClone(ay),stream:a_,credentials:c,signal:bj.signal,log:d,proxyOptions:bk});try{await aA.body?.cancel?.()}catch{}aA=a.response,aB=a.url,aC=a.headers??aC,aD=a.transformedBody??aD,a2.logTargetRequest(aB,aC,aD)}catch{d?.warn?.("TOKEN",`${aE.toUpperCase()} | retry after refresh failed`)}}else if((0,m.jT)(a)){let b=a.code||"invalid_grant";if(bo=`OAuth refresh token expired or revoked (${b}): reconnect the ${aE} account in the Switchboard dashboard`,d?.warn?.("TOKEN",`${aE.toUpperCase()} | refresh token revoked, re-auth required (${b})`),T)try{await T({reauthRequired:!0,testStatus:n.RU,lastError:bo,lastErrorAt:new Date().toISOString()})}catch(a){d?.warn?.("TOKEN",`onCredentialsRefreshed failed: ${a.message}`)}}else d?.warn?.("TOKEN",`${aE.toUpperCase()} | refresh failed`)}catch(a){d?.warn?.("TOKEN",`${aE.toUpperCase()} | refresh threw: ${a.message}`)}if(bm())return bn();if(!aA.ok){(0,w.uw)(aF,aE,$,!1,!0),a2?.close?.();let{statusCode:a,message:b,resetsAtMs:c}=await (0,t.zL)(aA,bh),d=bo||b;(0,w.ox)((0,y.$R)({provider:aE,model:aF,connectionId:$,latency:{ttft:0,total:Date.now()-aG},tokens:{prompt_tokens:0,completion_tokens:0},request:bl,providerRequest:aD||ay||null,response:{error:d,status:a,thinking:null},status:"error",pxpipe:bg||void 0,rtk:a9||void 0})).catch(()=>{});let e=(0,t.lR)(Error(d),aE,aF,a);return console.log(`${k.lm.red}[ERROR] ${e}${k.lm.reset}`),a2.logError(Error(d),aD||ay),(0,t.A1)(a,e,c)}let bp=async()=>{bj.signal?.throwIfAborted();let a=await bh.execute({model:aF,body:structuredClone(ay),stream:a_,credentials:c,signal:bj.signal,log:d,proxyOptions:bk});if(bm()){try{await a.response.body?.cancel?.()}catch{}throw new DOMException("Request aborted","AbortError")}if(!a.response.ok){let{statusCode:b,message:c}=await (0,t.zL)(a.response,bh);throw Error(`[${b}] ${c}`)}if(!a.response.body)throw Error("upstream returned no body");return a.response.body},bq="antigravity"===aE||"gemini-cli"===aE||"gemini"===aE||"vertex"===aE;bq&&a_&&aA.body?aA=new Response((0,C.gH)({body:aA.body,reexecute:bp,signal:bj.signal,log:d,onExhausted:(a,{upstreamError:b}={})=>{if(!Y)return;let c=bh.parseRetryFromErrorMessage?.(b?.message||a);return Y((0,t.lR)(Error(a),aE,aF,u.gx.BAD_GATEWAY),c?Date.now()+c:void 0)}}),{status:aA.status,headers:aA.headers}):a_&&aA.body&&(aA=new Response((0,D.Z)({body:aA.body,reexecute:bp,signal:bj.signal,log:d,maxRetries:+("claude"!==aE)}),{status:aA.status,headers:aA.headers}));let br=`${Date.now()}-${Math.random().toString(36).slice(2,11)}`,bs={provider:aE,model:aF,body:a,stream:a_,requestConfig:bl,translatedBody:ay,finalBody:aD,requestStartTime:aG,connectionId:$,clientKeyId:aa,clientRawRequest:Z,onRequestSuccess:W,requestId:br,pxpipe:bg||void 0,streamSignal:bj.signal},bt=a=>{aw||(0,w.E5)({model:aF,provider:aE,connectionId:$,...a}).catch(()=>{})},bu=()=>(0,w.uw)(aF,aE,$,!1);if(!aZ&&a$){let a=await (0,z.I)({...bs,providerResponse:aA,sourceFormat:aH,targetFormat:aS,trackDone:bu,appendLog:bt});if(a)return bj.handleComplete(),a}if(!a_){let a=await (0,A.N)({...bs,providerResponse:aA,sourceFormat:aH,targetFormat:aS,reqLogger:a2,toolNameMap:az,trackDone:bu,appendLog:bt});return bj.handleComplete(),a}let{onStreamComplete:bv,onStreamFailure:bw,streamDetailId:bx}=(0,B.$)({...bs});return(0,B.M)({...bs,providerResponse:aA,sourceFormat:aH,targetFormat:aS,userAgent:_,reqLogger:a2,toolNameMap:az,streamController:bj,onStreamComplete:bv,onStreamFailure:bw,streamDetailId:bx,firstChunkTimeoutMs:bq?void 0:0})}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=Array.isArray(a.system)&&a.system[0]?.text?.startsWith?.("x-anthropic-billing-header:")?a.system[0]:null,f=(0,d.t)(g,a,!1);if(!Array.isArray(f?.messages))return i(o,"Claude request did not translate to messages[]"),null;let k=await j(c,f.messages,g,n,m,o||{});if(!k)return null;let l=(0,e.p)(g,{...f,messages:k.messages},!1);return Array.isArray(l?.messages)&&(a.messages=l.messages),l?.system!==void 0&&(a.system=b?[b,...Array.isArray(l.system)?l.system:[{type:"text",text:String(l.system)}]]:l.system),o&&(o.after=h(a)),k}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.Zj)(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:()=>l,p:()=>m});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){let b=a||{},c=b.prompt_tokens||b.input_tokens||0,d=b.completion_tokens||b.output_tokens||0,e={prompt_tokens:c,completion_tokens:d,total_tokens:b.total_tokens||c+d},f=b.prompt_tokens_details||{},g=b.input_tokens_details||{},h=f.cached_tokens||g.cached_tokens||b.cache_read_input_tokens||0,i=f.cache_creation_tokens||g.cache_creation_tokens||b.cache_creation_input_tokens||0;(h>0||i>0)&&(e.prompt_tokens_details={},h>0&&(e.prompt_tokens_details.cached_tokens=h),i>0&&(e.prompt_tokens_details.cache_creation_tokens=i));let j=b.completion_tokens_details||{},k=b.output_tokens_details||{},l=j.reasoning_tokens||k.reasoning_tokens||0;return l>0&&(e.completion_tokens_details={reasoning_tokens:l}),e}function l(a,b){let c,d=Array.isArray(a?.output)?a.output:[],e=d.filter(a=>a?.type==="reasoning").flatMap(a=>Array.isArray(a.summary)?a.summary:[]).map(a=>a?.text||"").join(""),f=d.filter(a=>a?.type==="message"),g=[...f].reverse().find(a=>(Array.isArray(a.content)?a.content:[]).some(a=>"string"==typeof a.text&&a.text.length>0))||f[f.length-1]||null,h=d.filter(a=>a?.type==="refusal").map(a=>a?.refusal||"").join(""),i=(Array.isArray(g?.content)?g.content:[]).map(a=>("output_text"===a.type||"refusal"===a.type||"string"==typeof a.text)&&(a.text||a.refusal)||"").join("")||h,j=d.filter(a=>a?.type==="function_call"||a?.type==="custom_tool_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??a.input??{})}})),l=a?.usage||{},m={role:"assistant",content:i||(j.length>0?null:"")};if(e&&(m.reasoning_content=e),j.length>0&&(m.tool_calls=j),j.length>0)c="tool_calls";else if(h&&""===i.split(h).join("").trim())c="content_filter";else{let b=a?.status;c="completed"===b||"done"===b?"stop":"failed"===b?"error":"incomplete"===b?a?.incomplete_details?.reason==="content_filter"?"content_filter":"length":"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:m,finish_reason:c}],usage:k(l)}}function m(a,b){switch(b){case d.h.CLAUDE:return function(a){let b,c,f,k,l,m;if(!a?.choices?.[0])return a;let n=h(a),o=i(a),p=[],q=o.reasoning_content||o.provider_specific_fields?.reasoning_content||"";for(let b of(q&&p.push({type:"thinking",thinking:q}),"string"==typeof o.content&&o.content.length>0&&p.push({type:"text",text:o.content}),j(a))){let a=b.function||{};p.push({type:"tool_use",id:b.id||`toolu_${Date.now()}_${p.length}`,name:a.name||b.name||"",input:g(a.arguments||b.arguments)})}0===p.length&&p.push({type:"text",text:""});let r=a.usage||{};return{id:String(a.id||`msg_${Date.now()}`).replace(/^chatcmpl-/,""),type:"message",role:"assistant",model:a.model||"unknown",content:p,stop_reason:(0,e.Q)(n.finish_reason,d.h.CLAUDE),stop_sequence:null,usage:(c={input_tokens:(b=r||{}).prompt_tokens||b.input_tokens||0,output_tokens:b.completion_tokens||b.output_tokens||0},f=b.prompt_tokens_details||{},k=b.input_tokens_details||{},l=f.cached_tokens||k.cached_tokens||b.cache_read_input_tokens||0,m=f.cache_creation_tokens||k.cache_creation_tokens||b.cache_creation_input_tokens||0,l>0&&(c.cache_read_input_tokens=l),m>0&&(c.cache_creation_input_tokens=m),c)}}(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=k(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;case f.bC.ERROR:return f.a_.MALFORMED_FUNCTION_CALL;default:return f.a_.STOP}}(h(a).finish_reason),index:0}],usageMetadata:{promptTokenCount:c.prompt_tokens,candidatesTokenCount:c.completion_tokens,totalTokenCount:c.total_tokens},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:"tool_calls"===b.finish_reason?"stop":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){let b;if(!a?.choices?.[0])return a;let c=i(a),d=a.usage||{},e=[],f=0,g=c.reasoning_content||c.provider_specific_fields?.reasoning_content||"";g&&(e.push({type:"reasoning",id:`rs_${a.id||Date.now()}_${f}`,summary:[{type:"summary_text",text:g}]}),f++);let l="string"==typeof c.content?c.content:"";l&&(e.push({type:"message",id:`msg_${a.id||Date.now()}_${f}`,role:"assistant",content:[{type:"output_text",text:l,annotations:[],logprobs:[]}]}),f++);let m=j(a);if(m.length>0)for(let a of m){let b=a.function||{},c=a.id||`call_${b.name||"tool"}_${f}`;e.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||{})}),f++}else l||g||e.push({type:"message",id:`msg_${a.id||Date.now()}_${f}`,role:"assistant",content:[{type:"output_text",text:"",annotations:[],logprobs:[]}]});let n=h(a).finish_reason||"stop",o="completed";"length"===n?(o="incomplete",b={reason:"max_output_tokens"}):"content_filter"===n?(o="incomplete",b={reason:"content_filter"}):"error"===n&&(o="failed");let p=k(d);return{id:a.id?`resp_${a.id}`:`resp_${Date.now()}`,object:"response",created_at:a.created||Math.floor(Date.now()/1e3),status:o,...b?{incomplete_details:b}:{},output:e,usage:{input_tokens:p.prompt_tokens,output_tokens:p.completion_tokens,total_tokens:p.total_tokens}}}(a);case d.h.KIRO:case d.h.CURSOR:case d.h.COMMANDCODE: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,requestConfig:u,translatedBody:v,finalBody:w,requestStartTime:x,connectionId:y,clientKeyId:z,requestId:A,clientRawRequest:B,onRequestSuccess:C,reqLogger:D,toolNameMap:E,streamController:F,onStreamComplete:G,onStreamFailure:H,streamDetailId:I,pxpipe:J,firstChunkTimeoutMs:K=i.Z1,firstProgressTimeoutMs:L=i.Z1,progressStallTimeoutMs:M=i.xM}){let N=(a.headers.get("content-type")||"").toLowerCase();if((N.includes("application/x-ndjson")||N.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}
|
|
70
70
|
|
|
71
71
|
`))}catch{}}}},flush(a){let b=d.trim();if(b)try{JSON.parse(b),a.enqueue(c.encode(`data: ${b}
|
|
72
72
|
|
|
73
|
-
`))}catch{}}}))),{status:a.status,statusText:a.statusText,headers:((e=new Headers(a.headers)).set("content-type","text/event-stream"),e)})}else if(N&&!N.includes("text/event-stream")&&!N.includes("application/json")){let d=await a.text().catch(()=>""),e=d.match(/<title>([^<]+)<\/title>/i),f=(e?.[1]||"").replace(/<[^>]*>/g,"").replace(/[\r\n]+/g," ").trim().slice(0,160)||(d.length<200?d.replace(/<[^>]*>/g,"").trim().slice(0,160):`Upstream returned non-SSE response (${N})`),g=a.status>=400?a.status:502;return console.warn(`[STREAM] ${b} | ${c} | blocked pipe: ${f} [${g}]`),F?.handleError?.(Error(`upstream non-SSE: ${g}`)),{success:!1,response:new Response(JSON.stringify({error:{message:`[${g}]: ${f}`}}),{status:g,headers:{"Content-Type":"application/json"}})}}C&&Promise.resolve().then(C).catch(a=>{console.error("[ChatCore] onRequestSuccess failed:",a?.message||a)});let O=(0,l.ox)((0,k.$R)({provider:b,model:c,connectionId:y,latency:{ttft:0,total:Date.now()-x},tokens:{prompt_tokens:0,completion_tokens:0},request:u??(0,k.Fo)(s,t),providerRequest:w||v||null,providerResponse:"[Streaming - raw response not captured]",response:{content:"[Streaming in progress...]",thinking:null,type:"streaming"},status:"pending",pxpipe:J},{id:I})).catch(a=>console.error("[RequestDetail] Failed to save streaming request:",a.message)),P=!1,Q=async(...a)=>{a[0]?.completed!==void 0&&(P=!0),await O,await G?.(...a)},R="responses-websocket"!==a.headers.get("x-switchboard-transport"),S=p===d.h.CLAUDE&&q===d.h.CLAUDE,T=S?{firstProgressTimeoutMs:L,stallTimeoutMs:M}:null,U=function({provider:a,sourceFormat:b,targetFormat:c,userAgent:g,reqLogger:i,toolNameMap:j,model:k,connectionId:l,body:m,onStreamComplete:o,clientKeyId:p,terminateOnResponsesTerminal:q,onStreamProgress:r}){let s=g?.toLowerCase().includes("droid")||g?.toLowerCase().includes("codex-cli");if(h.xq[a]?.format===d.h.OPENAI_RESPONSES&&c===d.h.OPENAI_RESPONSES&&!s){let c=n[b]||d.h.OPENAI;return(0,f.i5)(d.h.OPENAI_RESPONSES,c,a,i,j,k,l,m,o,p,q)}return(0,e.nZ)(c,b)?(0,f.i5)(c,b,a,i,j,k,l,m,o,p):(0,f.l2)(a,i,j,k,l,m,o,p,r)}({provider:b,sourceFormat:p,targetFormat:q,userAgent:r,reqLogger:D,toolNameMap:E,model:c,connectionId:y,body:s,onStreamComplete:Q,clientKeyId:z,terminateOnResponsesTerminal:R,onStreamProgress:T?a=>T.record?.(a):void 0}),V=p===d.h.OPENAI_RESPONSES&&q===d.h.OPENAI_RESPONSES?j.Hr:S?j.LS:q===d.h.OPENAI?j.ah:null,W=h.xq[b]?.stallTimeoutMs||i.xM;return{success:!0,response:new Response((0,g.Jb)(a,U,F,V,W,K,a=>{P||Promise.resolve(O).then(()=>H?.(a)).catch(()=>{})},T),{headers:m.RK})}}function p({provider:a,model:b,connectionId:c,clientKeyId:d,requestStartTime:e,body:f,stream:g,requestConfig:h,finalBody:i,translatedBody:j,requestId:m,clientRawRequest:n,pxpipe:o}){let q=`${Date.now()}-${Math.random().toString(36).slice(2,11)}`,r=!1,s=async d=>{r||(r=!0,await (0,l.ox)((0,k.$R)({provider:a,model:b,connectionId:c,latency:{ttft:0,total:Date.now()-e},request:h??(0,k.Fo)(f,g),providerRequest:i||j||null,response:{error:d?.message||"stream interrupted",type:"streaming"},status:"error",pxpipe:o},{id:q})))};return{onStreamComplete:async(p,t,u)=>{if(p?.completed===!1)return s(Error(p.error||"stream incomplete"));if(r)return;r=!0;let v={ttft:u?u-e:Date.now()-e,total:Date.now()-e},w=p?.content||"[Empty streaming response]",x=p?.thinking||null;(0,l.ox)((0,k.$R)({provider:a,model:b,connectionId:c,latency:v,tokens:t||{prompt_tokens:0,completion_tokens:0},request:h??(0,k.Fo)(f,g),providerRequest:i||j||null,providerResponse:w,response:{content:w,thinking:x,type:"streaming"},status:"success",pxpipe:o},{id:q})).catch(a=>{console.error("[RequestDetail] Failed to update streaming content:",a.message)}),await (0,k.YZ)({provider:a,model:b,tokens:t,connectionId:c,clientKeyId:d,requestId:m,endpoint:n?.endpoint,label:"STREAM USAGE"})},onStreamFailure:s,streamDetailId:q}}},66573:(a,b,c)=>{c.d(b,{Hh:()=>g,ST:()=>h,Wg:()=>f});let d=new TextEncoder;function e(a){return Math.max(0,Math.floor(Number(a)||0))}function f(a,b){var c;if("string"!=typeof a)return"";let d=e(b);return a.length<=d?a:0===d?"":a.slice(0,(c=a.charCodeAt(d-1))>=55296&&c<=56319?d-1:d)}function g(a,b){var c;if("string"!=typeof a)return"";let d=e(b);if(a.length<=d)return a;if(0===d)return"";let f=a.length-d;return a.slice((c=a.charCodeAt(f))>=56320&&c<=57343?f+1:f)}function h(a,b){if("string"!=typeof a)return"";let c=e(b);if(0===c)return"";if(d.encode(a).length<=c)return a;let g=0,h=a.length;for(;g<h;){let b=g+Math.ceil((h-g)/2);d.encode(a.slice(0,b)).length<=c?g=b:h=b-1}return f(a,g)}},70718:(a,b,c)=>{c.d(b,{q7:()=>p});var d=c(28730);let e="u">typeof process&&process.versions?.node&&!0,f="u">typeof process&&process.env?.ENABLE_REQUEST_LOGS==="true",g=null,h=null,i=null;async function j(){if(e&&f&&!g)try{let a=await Promise.resolve().then(c.t.bind(c,29021,19)),b=await Promise.resolve().then(c.t.bind(c,33873,19));g=a.default||a,i=(h=b.default||b).join("u">typeof process&&process.cwd?process.cwd():".","logs")}catch{}}async function k(a,b,c){if(await j(),!g||!i)return null;try{g.existsSync(i)||g.mkdirSync(i,{recursive:!0});let d=function(a=new Date){let b=a=>String(a).padStart(2,"0"),c=a.getFullYear(),d=b(a.getMonth()+1),e=b(a.getDate()),f=b(a.getHours()),g=b(a.getMinutes()),h=b(a.getSeconds()),i=String(a.getMilliseconds()).padStart(3,"0");return`${c}${d}${e}_${f}${g}${h}_${i}`}(),e=(c||"unknown").replace(/[/:]/g,"-"),f=`${a}_${b}_${e}_${d}`,j=h.join(i,f);return g.mkdirSync(j,{recursive:!0}),j}catch(a){return console.log("[LOG] Failed to create log session:",a.message),null}}let l=new Set(["prompt_cache_key","session_id","sessionid","conversation_id","conversationid","user_id","userid","request_id","requestid","x_session_id","x_amp_thread_id","x_client_request_id"]);function m(a,b,c){if(g&&a)try{let d=h.join(a,b);g.writeFileSync(d,JSON.stringify(function a(b){if(Array.isArray(b))return b.map(a);if(!b||"object"!=typeof b)return b;let c={};for(let[d,e]of Object.entries(b)){let b=d.toLowerCase().replaceAll("-","_");c[d]=l.has(b)?"[redacted]":a(e)}return c}(c),null,2))}catch(a){console.log(`[LOG] Failed to write ${b}:`,a.message)}}let n=["api-key","x-key"];function o(a){if(!a)return{};let b={...a};for(let a of Object.keys(b)){let c=a.toLowerCase();if(function(a){return d.fC.some(b=>a.includes(b))||n.some(b=>a.includes(b))}(c)){let e=b[a];d.qk.some(a=>c.includes(a))||c.includes("api-key")||c.includes("x-key")?b[a]="[redacted]":"string"==typeof e&&e.length>12?b[a]=e.slice(0,8)+"..."+e.slice(-4):null!=e&&(b[a]="[redacted]")}}return b}async function p(a,b,c){if(!f)return{sessionPath:null,logClientRawRequest(){},logRawRequest(){},logOpenAIRequest(){},logTargetRequest(){},logProviderResponse(){},appendProviderChunk(){},appendOpenAIChunk(){},logConvertedResponse(){},appendConvertedChunk(){},logError(){},close(){}};let d=await k(a,b,c),e={},i=!1;function j(a,b,c){if(g&&d&&!i)try{let f=e[a];f||(f=e[a]=g.createWriteStream(h.join(d,b),{flags:"a"})).on("error",()=>{}),f.write(c)}catch{}}return{get sessionPath(){return d},logClientRawRequest(a,b,c={}){m(d,"1_req_client.json",{timestamp:new Date().toISOString(),endpoint:a,headers:o(c),body:b})},logRawRequest(a,b={}){m(d,"2_req_source.json",{timestamp:new Date().toISOString(),headers:o(b),body:a})},logOpenAIRequest(a){m(d,"3_req_openai.json",{timestamp:new Date().toISOString(),body:a})},logTargetRequest(a,b,c){m(d,"4_req_target.json",{timestamp:new Date().toISOString(),url:"string"==typeof a&&a?a.replace(/([?&])(key|api_key|api-key)=[^&]*/gi,"$1$2=[redacted]"):a,headers:o(b),body:c})},logProviderResponse(a,b,c,e){m(d,"5_res_provider.json",{timestamp:new Date().toISOString(),status:a,statusText:b,headers:o(c&&"function"==typeof c.entries?Object.fromEntries(c.entries()):c),body:e})},appendProviderChunk(a){j("provider","5_res_provider.txt",a)},appendOpenAIChunk(a){j("openai","6_res_openai.txt",a)},logConvertedResponse(a){m(d,"7_res_client.json",{timestamp:new Date().toISOString(),body:a})},appendConvertedChunk(a){j("converted","7_res_client.txt",a)},logError(a,b=null){m(d,"6_error.json",{timestamp:new Date().toISOString(),error:a?.message||String(a),requestBody:b})},close:()=>{let a;return i=!0,a=Object.values(e),e={},Promise.all(a.map(a=>new Promise(b=>{try{a.end(b)}catch{b()}})))}}}},78255:(a,b,c)=>{c.d(b,{I:()=>p});var d=c(94176),e=c(89865),f=c(60290),g=c(19956),h=c(4630),i=c(49612),j=c(83611),k=c(29461),l=c(12407);let m=a=>h.xq[a]?.format===g.h.OPENAI_RESPONSES;function n(a){a&&Promise.resolve().then(a).catch(a=>{console.error("[ChatCore] onRequestSuccess failed:",a?.message||a)})}function o(a){if(!a?.content||!Array.isArray(a.content))return"";let b=a.content.find(a=>"output_text"===a.type);if("string"==typeof b?.text)return b.text;let c=a.content.find(a=>"string"==typeof a.text);return"string"==typeof c?.text?c.text:""}async function p({providerResponse:a,sourceFormat:b,provider:c,model:h,body:q,stream:r,requestConfig:s,translatedBody:t,finalBody:u,requestStartTime:v,connectionId:w,clientKeyId:x,requestId:y,clientRawRequest:z,onRequestSuccess:A,trackDone:B,appendLog:C,streamSignal:D}){let E=a.headers.get("content-type")||"";if(!(E.includes("text/event-stream")||""===E&&m(c)))return null;B();let F={provider:c,model:h,connectionId:w,request:s??(0,k.Fo)(q,r),providerRequest:u||t||null};if(m(c))try{let e=await (0,d.convertResponsesStreamToJson)(a.body,{signal:D});n(A);let f=e.usage||{};C({tokens:f,status:"200 OK"}),await (0,k.YZ)({provider:c,model:h,tokens:f,connectionId:w,clientKeyId:x,requestId:y,endpoint:z?.endpoint});let{msgItem:j,textContent:m}=function(a){if(!Array.isArray(a))return{msgItem:null,textContent:null};let b=a.filter(a=>a?.type==="message");if(0===b.length)return{msgItem:null,textContent:null};for(let a=b.length-1;a>=0;a--){let c=o(b[a]);if(c.length>0)return{msgItem:b[a],textContent:c}}let c=b[b.length-1];return{msgItem:c,textContent:o(c)}}(e.output),p=Date.now()-v;if((0,l.ox)((0,k.$R)({...F,latency:{ttft:p,total:p},tokens:{prompt_tokens:f.input_tokens||0,completion_tokens:f.output_tokens||0},response:{content:m,thinking:null,finish_reason:e.status||"unknown"},status:"success"},{endpoint:z?.endpoint||null})).catch(()=>{}),b===g.h.OPENAI_RESPONSES)return{success:!0,response:new Response(JSON.stringify(e),{headers:{"Content-Type":"application/json"}})};let q=f.input_tokens||0,r=f.output_tokens||0,s=(e.output||[]).filter(a=>"function_call"===a.type).map((a,b)=>({id:a.call_id||`call_${a.name}_${Date.now()}_${b}`,type:"function",function:{name:a.name,arguments:"string"==typeof a.arguments?a.arguments:JSON.stringify(a.arguments||{})}})),t=s.length>0,u="completed"===e.status||"done"===e.status,B=t?"tool_calls":u?"stop":"incomplete"===e.status?"length":e.status||"stop",E={id:e.id||`chatcmpl-${Date.now()}`,object:"chat.completion",created:e.created_at||Math.floor(Date.now()/1e3),model:e.model||h,choices:[{index:0,message:{role:"assistant",content:m||(t?null:""),...t?{tool_calls:s}:{}},finish_reason:B}],usage:{prompt_tokens:q,completion_tokens:r,total_tokens:q+r}},G=(0,i.p)(E,b);return{success:!0,response:new Response(JSON.stringify(G),{headers:{"Content-Type":"application/json"}})}}catch(a){return console.error("[ChatCore] Responses API SSE→JSON failed:",a),(0,e.A1)(f.gx.BAD_GATEWAY,"Failed to convert streaming response to JSON")}try{let g=await (0,d.iJ)(a.body,h,{signal:D});if(!g)return(0,e.A1)(f.gx.BAD_GATEWAY,"Invalid SSE response for non-streaming request");n(A);let m=g.usage||{};C({tokens:m,status:"200 OK"}),await (0,k.YZ)({provider:c,model:h,tokens:m,connectionId:w,clientKeyId:x,requestId:y,endpoint:z?.endpoint});let o=Date.now()-v;(0,l.ox)((0,k.$R)({...F,latency:{ttft:o,total:o},tokens:m,response:{content:g.choices?.[0]?.message?.content||null,thinking:g.choices?.[0]?.message?.reasoning_content||null,finish_reason:g.choices?.[0]?.finish_reason||"unknown"},status:"success"},{endpoint:z?.endpoint||null})).catch(()=>{});let p=!1;if(g?.choices)for(let a of g.choices){let b=a?.message;if(b?.content&&"string"==typeof b.content){let{content:a,reasoning:c}=(0,j.j)(b.content);c&&(b.reasoning_content=c,b.content=a,p=!0)}}if(!p&&g?.choices)for(let a of g.choices)a?.message?.reasoning_content&&a.message.content&&delete a.message.reasoning_content;let q=(0,i.p)(g,b);return{success:!0,response:new Response(JSON.stringify(q),{headers:{"Content-Type":"application/json"}})}}catch(a){return console.error("[ChatCore] Chat Completions SSE→JSON failed:",a),(0,e.A1)(f.gx.BAD_GATEWAY,"Failed to convert streaming response to JSON")}}},83611:(a,b,c)=>{c.d(b,{H:()=>h,j:()=>g});let d="<think>",e="</think>",f=RegExp(`${d}([\\s\\S]*?)${e}\\s*`);function g(a){if("string"!=typeof a)return{content:a,reasoning:null};let b=a.match(f);return b?{content:a.replace(RegExp(`${d}[\\s\\S]*?${e}\\s*`,"g"),"").trimStart(),reasoning:b[1].trim()}:{content:a,reasoning:null}}function h(){let a="",b=!1;return function(c){let f=null;if("string"!=typeof c)return{content:c,reasoning:f};if(b){let d=c.indexOf(e);d>=0?(a+=c.slice(0,d),f=a.trim(),a="",b=!1,c=c.slice(d+e.length).trimStart()):(a+=c,c="")}if(!b){let g=c.indexOf(d);if(g>=0){let h=c.slice(g+d.length),i=h.indexOf(e);i>=0?(f=(f?f+"\n":"")+h.slice(0,i).trim(),c=c.slice(0,g)+h.slice(i+e.length).trimStart()):(b=!0,a=h,c=c.slice(0,g))}}return{content:c,reasoning:f}}}},90197:(a,b,c)=>{c.d(b,{H:()=>h,_:()=>i});var d=c(19956);function e(a){try{return JSON.stringify(a)?.length||0}catch{return 0}}function f(a){return Math.round(a/4)}function g(a,b={}){return{body:null,summary:{applied:!1,reason:a,...b}}}async function h(a,{enabled:b,format:c,model:i,minChars:j,timeoutMs:k,transform:l}={}){if(!b)return g("disabled");if("function"!=typeof l)return g("not_installed");if(!a)return g("missing_body");if(c!==d.h.CLAUDE)return g("unsupported_format",{detail:c});let m=Date.now(),n=e(a),o=Number(j)>0?Number(j):25e3;if(n<o)return g("below_threshold",{originalChars:n,threshold:o});try{let b=new TextEncoder().encode(JSON.stringify(a)),c=Number(k)>0?Number(k):15e3,d=await Promise.race([l({body:b,model:i,options:{minCompressChars:o}}),new Promise(a=>setTimeout(()=>a(null),c))]);if(!d)return g("timeout",{originalChars:n,durationMs:Date.now()-m});if(!d.applied)return g(d.reason||"passthrough",{detail:d.detail,originalChars:n,durationMs:Date.now()-m});let h=JSON.parse(new TextDecoder().decode(d.body)),j=e(h),p=d.info||{},q=p.compressedChars||0,r=p.imageTokens||(p.imagePixels?Math.round(p.imagePixels/750):4761*(p.imageCount||0)),s={applied:!0,reason:"applied",originalChars:n,compressedBodyChars:j,imagedChars:q,imageCount:p.imageCount||0,imageBytes:p.imageBytes||0,tokensBeforeEst:p.baselineTokens||f(n),tokensAfterEst:f(Math.max(0,n-q))+r,durationMs:Date.now()-m,cacheOwnsControl:d.cache?.ownsCacheControl===!0};return s.tokensSavedEst=Math.max(0,s.tokensBeforeEst-s.tokensAfterEst),s.savedPct=s.tokensBeforeEst>0?+(s.tokensSavedEst/s.tokensBeforeEst*100).toFixed(2):0,{body:h,summary:s}}catch(a){return g("transform_error",{detail:a?.message||String(a),originalChars:n,durationMs:Date.now()-m})}}function i(a){return a&&a.applied?`imaged ${a.imagedChars}ch → ${a.imageCount} image(s) | est ${a.tokensBeforeEst}→${a.tokensAfterEst} tokens (-${a.savedPct}%) | ${a.durationMs}ms`:null}},94176:(a,b,c)=>{function d(a,b){let c;if(!a.trim())return;let d=a.match(/^event:\s*(.+)$/m),f=a.match(/^data:\s*(.+)$/m);if(!d||!f)return;let g=d[1].trim(),h=f[1].trim();if("[DONE]"!==h){try{c=JSON.parse(h)}catch{return}if("response.created"===g)b.responseId=c.response?.id||b.responseId,b.created=c.response?.created_at||b.created;else if("response.output_item.done"===g)b.items.set(c.output_index??0,c.item);else if("response.completed"===g||"response.done"===g)b.status="completed",e(b,c);else if("response.incomplete"===g)b.status="incomplete",e(b,c);else if("response.failed"===g)b.status="failed";else if("response.output_text.delta"===g){let a=c.output_index??0;"string"==typeof c.delta&&c.delta.length>0&&b.deltaText.set(a,(b.deltaText.get(a)||"")+c.delta)}else if("response.function_call_arguments.delta"===g){let a=c.output_index??0;"string"==typeof c.delta&&c.delta.length>0&&b.deltaArgs.set(a,(b.deltaArgs.get(a)||"")+c.delta)}}}function e(a,b){b.response?.usage&&(a.usage.input_tokens=b.response.usage.input_tokens||0,a.usage.output_tokens=b.response.usage.output_tokens||0,a.usage.total_tokens=b.response.usage.total_tokens||0)}c.d(b,{convertResponsesStreamToJson:()=>p,hB:()=>g,iJ:()=>o,tQ:()=>j});let f={input_tokens:0,output_tokens:0,total_tokens:0};function g(a){if(Number.isFinite(a)&&a>0)return a;let b=Number.parseInt(globalThis.process?.env?.STREAM_TO_JSON_MAX_BYTES||"",10);return Number.isFinite(b)&&b>0?b:0x1000000}class h extends Error{constructor(a){super(`SSE stream exceeded STREAM_TO_JSON_MAX_BYTES (${a} bytes)`),this.name="StreamToJsonMaxBytesError"}}function i(a){return a?"number"==typeof a.byteLength?a.byteLength:"number"==typeof a.length?a.length:0:0}function j(a,b){if(a>b)throw new h(b)}function k(){let a=Error("The operation was aborted.");return a.name="AbortError",a}function l(a,b){let c;if(!b)return a.read();if(b.aborted)return Promise.reject(k());let d=new Promise((d,e)=>{c=()=>{e(k());try{a.cancel(k()).catch(()=>{})}catch{}},b.addEventListener("abort",c,{once:!0})});return Promise.race([a.read(),d]).finally(()=>{b.removeEventListener?.("abort",c)})}function m(){return{contentParts:[],reasoningParts:[],toolCallMap:new Map,finishReason:"stop"}}function n(a,b){let c=a.trim();if(!c.startsWith("data:"))return;let d=c.slice(5).trim();if(d&&"[DONE]"!==d)try{!function(a,b){if(b.seenChunk||(b.first=a||{},b.seenChunk=!0),a?.usage&&"object"==typeof a.usage&&(b.usage=a.usage),Array.isArray(a?.choices))for(let c of a.choices){let a=function(a,b){let c=a.choiceMap.get(b);return c||(c=m(),a.choiceMap.set(b,c)),c}(b,c?.index??0),d=c?.delta||{};if("string"==typeof d.content&&d.content.length>0&&a.contentParts.push(d.content),"string"==typeof d.reasoning_content&&d.reasoning_content.length>0&&a.reasoningParts.push(d.reasoning_content),c?.finish_reason&&(a.finishReason=c.finish_reason),Array.isArray(d.tool_calls))for(let b of d.tool_calls){let c=b.index??0;a.toolCallMap.has(c)||a.toolCallMap.set(c,{id:b.id||"",type:"function",function:{name:"",arguments:""}});let d=a.toolCallMap.get(c);b.id&&(d.id=b.id),b.function?.name&&(d.function.name?d.function.name!==b.function.name&&(d.function.name+=b.function.name):d.function.name=b.function.name),b.function?.arguments&&(d.function.arguments+=b.function.arguments)}}}(JSON.parse(d),b)}catch{}}async function o(a,b,{maxBytes:c,signal:d}={}){if(!a||"function"!=typeof a.getReader)return null;let e=a.getReader(),f=new TextDecoder,h=g(c),k={fallbackModel:b,seenChunk:!1,first:null,choiceMap:new Map,usage:null},p="",q=0;try{for(;;){let{done:a,value:b}=await l(e,d);if(a)break;q+=i(b),j(q,h);let c=(p+=f.decode(b,{stream:!0})).split("\n");for(let a of(p=c.pop()||"",c))n(a,k)}let a=f.decode();a&&(p+=a),p&&n(p,k)}catch(a){try{await e.cancel(a)}catch{}throw a}finally{e.releaseLock()}if(!k.seenChunk)return null;let r=k.first||{};0===k.choiceMap.size&&k.choiceMap.set(0,m());let s=[...k.choiceMap.entries()].sort((a,b)=>a[0]-b[0]).map(([a,b])=>{let c={role:"assistant",content:b.contentParts.join("")||(b.toolCallMap.size>0?null:"")};return b.reasoningParts.length>0&&(c.reasoning_content=b.reasoningParts.join("")),b.toolCallMap.size>0&&(c.tool_calls=[...b.toolCallMap.entries()].sort((a,b)=>a[0]-b[0]).map(([,a])=>({...a,function:{name:a.function.name,arguments:a.function.arguments||"{}"}}))),{index:a,message:c,finish_reason:b.finishReason}}),t={id:r.id||`chatcmpl-${Date.now()}`,object:"chat.completion",created:r.created||Math.floor(Date.now()/1e3),model:r.model||k.fallbackModel||"unknown",choices:s};return k.usage&&(t.usage=k.usage),t}async function p(a,{maxBytes:b,signal:c}={}){if(!a||"function"!=typeof a.getReader)return{id:`resp_${Date.now()}`,object:"response",created_at:Math.floor(Date.now()/1e3),status:"failed",output:[],usage:{...f}};let e=a.getReader(),h=new TextDecoder,k=g(b),m="",n=0,o={responseId:"",created:Math.floor(Date.now()/1e3),status:"in_progress",usage:{...f},items:new Map,deltaText:new Map,deltaArgs:new Map};try{for(;;){let{done:a,value:b}=await l(e,c);if(a)break;n+=i(b),j(n,k);let f=(m+=h.decode(b,{stream:!0})).split(/\r?\n\r?\n/);for(let a of(m=f.pop()||"",f))d(a,o)}let a=h.decode();a&&(m+=a),m.trim()&&d(m,o)}catch(a){try{await e.cancel(a)}catch{}throw a}finally{e.releaseLock()}for(let[a,b]of o.deltaText)!o.items.has(a)&&b&&o.items.set(a,{id:`msg_${o.responseId||"synth"}_${a}`,type:"message",role:"assistant",content:[{type:"output_text",text:b}]});for(let[a,b]of o.deltaArgs)!o.items.has(a)&&b&&o.items.set(a,{id:`fc_synth_${a}`,type:"function_call",call_id:"",name:"",arguments:b});let q=[...o.items.entries()].sort((a,b)=>a[0]-b[0]).map(([,a])=>a);return{id:o.responseId||`resp_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,object:"response",created_at:o.created,status:o.status||"completed",output:q,usage:o.usage}}},94501:(a,b,c)=>{c.d(b,{X:()=>m});var d=c(19956);let e={vision:"[image omitted: model has no vision support]",audioInput:"[audio omitted: model has no audio support]",pdf:"[file omitted: model has no document support]"},f={vision:"[Previous image omitted from context.]",audioInput:"[Previous audio omitted from context.]",pdf:"[Previous file omitted from context.]"},g=(a,b)=>(b?e:f)[a];function h(a){let b=a?.type;return"image_url"===b||"image"===b?"vision":"input_audio"===b||"audio_url"===b?"audioInput":"file"===b?"pdf":null}function i(a){let b=a?.type;return"image"===b?"vision":"document"===b?"pdf":null}function j(a,b,c,d,e){let f=[];for(let e of a){let a=b(e);if(a&&!1===c[a]){d.add(a);continue}f.push(e)}for(let a of d)f.push({type:"text",text:g(a,e)});return f}function k(a,b){if(!Array.isArray(a.messages))return;let c=a.messages.length-1;a.messages.forEach((a,d)=>{if(!Array.isArray(a.content))return;let e=new Set;a.content=j(a.content,h,b,e,d===c)})}function l(a,b){if(!Array.isArray(a))return;let c=a.length-1;a.forEach((a,d)=>{if(!Array.isArray(a.parts))return;let e=new Set;for(let f of(a.parts=a.parts.filter(a=>{var c;let d="string"!=typeof(c=a?.inlineData?.mimeType||a?.fileData?.mimeType)?null:c.startsWith("image/")?"vision":c.startsWith("audio/")?"audioInput":"application/pdf"===c?"pdf":null;return!d||!1!==b[d]||(e.add(d),!1)}),e))a.parts.push({text:g(f,d===c)})})}function m(a,b,c){if(!a||!c||!1!==c.vision&&!1!==c.audioInput&&!1!==c.pdf)return!1;switch(b){case d.h.OPENAI:case d.h.OLLAMA:case d.h.KIRO:case d.h.CURSOR:case d.h.COMMANDCODE:k(a,c);break;case d.h.CLAUDE:!function(a,b){if(!Array.isArray(a.messages))return;let c=a.messages.length-1;a.messages.forEach((a,d)=>{if(!Array.isArray(a.content))return;let e=new Set;a.content=j(a.content,i,b,e,d===c)})}(a,c);break;case d.h.OPENAI_RESPONSES:case d.h.OPENAI_RESPONSE:case d.h.CODEX:!function(a,b){if(!Array.isArray(a.input))return;let c=a.input.length-1;a.input.forEach((a,d)=>{if(!Array.isArray(a.content))return;let e=new Set;for(let f of(a.content=a.content.filter(a=>{let c=a?.type==="input_image"?"vision":a?.type==="input_file"?"pdf":null;return!c||!1!==b[c]||(e.add(c),!1)}),e))a.content.push({type:"input_text",text:g(f,d===c)})})}(a,c);break;case d.h.GEMINI:case d.h.GEMINI_CLI:case d.h.VERTEX:l(a.contents,c);break;case d.h.ANTIGRAVITY:l(a?.request?.contents,c);break;default:k(a,c)}return!0}},96145:(a,b,c)=>{c.d(b,{C:()=>h});var d=c(19956),e=c(50186);let f=new Set([d.h.GEMINI,d.h.GEMINI_CLI,d.h.VERTEX,d.h.ANTIGRAVITY,d.h.OLLAMA,d.h.KIRO]);function g(a){return"string"==typeof a&&(a.startsWith("http://")||a.startsWith("https://"))}async function h(a,b,c,i={}){if(!a||!f.has(c))return 0;let j=function(a,b){let c=[],e=a=>{for(let b of a||[])if(Array.isArray(b.content)){for(let a of b.content)if(a?.type==="image_url"){let b="string"==typeof a.image_url?a.image_url:a.image_url?.url;g(b)&&c.push({get:()=>b,set:b=>{"string"==typeof a.image_url?a.image_url=b:a.image_url.url=b}})}}},f=a=>{for(let b of a||[])for(let a of b.parts||[]){let b=a?.fileData?.fileUri;g(b)&&c.push({get:()=>b,part:a})}},h=a=>{for(let b of a||[])if(Array.isArray(b?.content))for(let a of b.content)a?.type==="input_image"&&g("string"==typeof a.image_url?a.image_url:a.image_url?.url||a.file_id)&&c.push({get:()=>"string"==typeof a.image_url?a.image_url:a.image_url?.url||a.file_id,set:b=>{"string"==typeof a.image_url?a.image_url=b:a.image_url&&"object"==typeof a.image_url?a.image_url.url=b:a.image_url=b}})};switch(b){case d.h.OPENAI:case d.h.OLLAMA:case d.h.KIRO:case d.h.CURSOR:case d.h.COMMANDCODE:e(a.messages),Array.isArray(a.input)&&h(a.input);break;case d.h.OPENAI_RESPONSES:case d.h.OPENAI_RESPONSE:case d.h.CODEX:h(a.input);break;case d.h.CLAUDE:for(let b of a.messages||[])if(Array.isArray(b.content))for(let a of b.content)a?.type==="image"&&a.source?.type==="url"&&g(a.source.url)&&c.push({get:()=>a.source.url,claudeBlock:a});break;case d.h.GEMINI:case d.h.GEMINI_CLI:case d.h.VERTEX:f(a.contents);break;case d.h.ANTIGRAVITY:f(a?.request?.contents);break;default:e(a.messages),Array.isArray(a.input)&&h(a.input)}return c}(a,b);if(!j.length)return 0;let k=0;for(let a of j){let b=a.get();if((0,e.W$)(b))continue;let c=await (0,e.ni)(b,i);c&&(a.set?a.set(c.url):a.part?(delete a.part.fileData,a.part.inlineData={mimeType:c.mimeType,data:c.url.split(",")[1]}):a.claudeBlock&&(a.claudeBlock.source={type:"base64",media_type:c.mimeType,data:c.url.split(",")[1]}),k++)}return k}}};
|
|
73
|
+
`))}catch{}}}))),{status:a.status,statusText:a.statusText,headers:((e=new Headers(a.headers)).set("content-type","text/event-stream"),e)})}else if(N&&!N.includes("text/event-stream")&&!N.includes("application/json")){let d=await a.text().catch(()=>""),e=d.match(/<title>([^<]+)<\/title>/i),f=(e?.[1]||"").replace(/<[^>]*>/g,"").replace(/[\r\n]+/g," ").trim().slice(0,160)||(d.length<200?d.replace(/<[^>]*>/g,"").trim().slice(0,160):`Upstream returned non-SSE response (${N})`),g=a.status>=400?a.status:502;return console.warn(`[STREAM] ${b} | ${c} | blocked pipe: ${f} [${g}]`),F?.handleError?.(Error(`upstream non-SSE: ${g}`)),{success:!1,response:new Response(JSON.stringify({error:{message:`[${g}]: ${f}`}}),{status:g,headers:{"Content-Type":"application/json"}})}}C&&Promise.resolve().then(C).catch(a=>{console.error("[ChatCore] onRequestSuccess failed:",a?.message||a)});let O=(0,l.ox)((0,k.$R)({provider:b,model:c,connectionId:y,latency:{ttft:0,total:Date.now()-x},tokens:{prompt_tokens:0,completion_tokens:0},request:u??(0,k.Fo)(s,t),providerRequest:w||v||null,providerResponse:"[Streaming - raw response not captured]",response:{content:"[Streaming in progress...]",thinking:null,type:"streaming"},status:"pending",pxpipe:J},{id:I})).catch(a=>console.error("[RequestDetail] Failed to save streaming request:",a.message)),P=!1,Q=async(...a)=>{a[0]?.completed!==void 0&&(P=!0),await O,await G?.(...a)},R="responses-websocket"!==a.headers.get("x-switchboard-transport"),S=p===d.h.CLAUDE&&q===d.h.CLAUDE,T=S?{firstProgressTimeoutMs:L,stallTimeoutMs:M}:null,U=function({provider:a,sourceFormat:b,targetFormat:c,userAgent:g,reqLogger:i,toolNameMap:j,model:k,connectionId:l,body:m,onStreamComplete:o,clientKeyId:p,terminateOnResponsesTerminal:q,onStreamProgress:r}){let s=g?.toLowerCase().includes("droid")||g?.toLowerCase().includes("codex-cli");if(h.xq[a]?.format===d.h.OPENAI_RESPONSES&&c===d.h.OPENAI_RESPONSES&&!s){let c=n[b]||d.h.OPENAI;return(0,f.i5)(d.h.OPENAI_RESPONSES,c,a,i,j,k,l,m,o,p,q)}return(0,e.nZ)(c,b)?(0,f.i5)(c,b,a,i,j,k,l,m,o,p):(0,f.l2)(a,i,j,k,l,m,o,p,r)}({provider:b,sourceFormat:p,targetFormat:q,userAgent:r,reqLogger:D,toolNameMap:E,model:c,connectionId:y,body:s,onStreamComplete:Q,clientKeyId:z,terminateOnResponsesTerminal:R,onStreamProgress:T?a=>T.record?.(a):void 0}),V=p===d.h.OPENAI_RESPONSES&&q===d.h.OPENAI_RESPONSES?j.Hr:S?j.LS:q===d.h.OPENAI?j.ah:null,W=h.xq[b]?.stallTimeoutMs||i.xM;return{success:!0,response:new Response((0,g.Jb)(a,U,F,V,W,K,a=>{P||Promise.resolve(O).then(()=>H?.(a)).catch(()=>{})},T),{headers:m.RK})}}function p({provider:a,model:b,connectionId:c,clientKeyId:d,requestStartTime:e,body:f,stream:g,requestConfig:h,finalBody:i,translatedBody:j,requestId:m,clientRawRequest:n,pxpipe:o}){let q=`${Date.now()}-${Math.random().toString(36).slice(2,11)}`,r=!1,s=async d=>{r||(r=!0,await (0,l.ox)((0,k.$R)({provider:a,model:b,connectionId:c,latency:{ttft:0,total:Date.now()-e},request:h??(0,k.Fo)(f,g),providerRequest:i||j||null,response:{error:d?.message||"stream interrupted",type:"streaming"},status:"error",pxpipe:o},{id:q})))};return{onStreamComplete:async(p,t,u)=>{if(p?.completed===!1)return s(Error(p.error||"stream incomplete"));if(r)return;r=!0;let v={ttft:u?u-e:Date.now()-e,total:Date.now()-e},w=p?.content||"[Empty streaming response]",x=p?.thinking||null;(0,l.ox)((0,k.$R)({provider:a,model:b,connectionId:c,latency:v,tokens:t||{prompt_tokens:0,completion_tokens:0},request:h??(0,k.Fo)(f,g),providerRequest:i||j||null,providerResponse:w,response:{content:w,thinking:x,type:"streaming"},status:"success",pxpipe:o},{id:q})).catch(a=>{console.error("[RequestDetail] Failed to update streaming content:",a.message)}),await (0,k.YZ)({provider:a,model:b,tokens:t,connectionId:c,clientKeyId:d,requestId:m,endpoint:n?.endpoint,label:"STREAM USAGE"})},onStreamFailure:s,streamDetailId:q}}},66573:(a,b,c)=>{c.d(b,{Hh:()=>g,ST:()=>h,Wg:()=>f});let d=new TextEncoder;function e(a){return Math.max(0,Math.floor(Number(a)||0))}function f(a,b){var c;if("string"!=typeof a)return"";let d=e(b);return a.length<=d?a:0===d?"":a.slice(0,(c=a.charCodeAt(d-1))>=55296&&c<=56319?d-1:d)}function g(a,b){var c;if("string"!=typeof a)return"";let d=e(b);if(a.length<=d)return a;if(0===d)return"";let f=a.length-d;return a.slice((c=a.charCodeAt(f))>=56320&&c<=57343?f+1:f)}function h(a,b){if("string"!=typeof a)return"";let c=e(b);if(0===c)return"";if(d.encode(a).length<=c)return a;let g=0,h=a.length;for(;g<h;){let b=g+Math.ceil((h-g)/2);d.encode(a.slice(0,b)).length<=c?g=b:h=b-1}return f(a,g)}},70718:(a,b,c)=>{c.d(b,{q7:()=>p});var d=c(28730);let e="u">typeof process&&process.versions?.node&&!0,f="u">typeof process&&process.env?.ENABLE_REQUEST_LOGS==="true",g=null,h=null,i=null;async function j(){if(e&&f&&!g)try{let a=await Promise.resolve().then(c.t.bind(c,29021,19)),b=await Promise.resolve().then(c.t.bind(c,33873,19));g=a.default||a,i=(h=b.default||b).join("u">typeof process&&process.cwd?process.cwd():".","logs")}catch{}}async function k(a,b,c){if(await j(),!g||!i)return null;try{g.existsSync(i)||g.mkdirSync(i,{recursive:!0});let d=function(a=new Date){let b=a=>String(a).padStart(2,"0"),c=a.getFullYear(),d=b(a.getMonth()+1),e=b(a.getDate()),f=b(a.getHours()),g=b(a.getMinutes()),h=b(a.getSeconds()),i=String(a.getMilliseconds()).padStart(3,"0");return`${c}${d}${e}_${f}${g}${h}_${i}`}(),e=(c||"unknown").replace(/[/:]/g,"-"),f=`${a}_${b}_${e}_${d}`,j=h.join(i,f);return g.mkdirSync(j,{recursive:!0}),j}catch(a){return console.log("[LOG] Failed to create log session:",a.message),null}}let l=new Set(["prompt_cache_key","session_id","sessionid","conversation_id","conversationid","user_id","userid","request_id","requestid","x_session_id","x_amp_thread_id","x_client_request_id"]);function m(a,b,c){if(g&&a)try{let d=h.join(a,b);g.writeFileSync(d,JSON.stringify(function a(b){if(Array.isArray(b))return b.map(a);if(!b||"object"!=typeof b)return b;let c={};for(let[d,e]of Object.entries(b)){let b=d.toLowerCase().replaceAll("-","_");c[d]=l.has(b)?"[redacted]":a(e)}return c}(c),null,2))}catch(a){console.log(`[LOG] Failed to write ${b}:`,a.message)}}let n=["api-key","x-key"];function o(a){if(!a)return{};let b={...a};for(let a of Object.keys(b)){let c=a.toLowerCase();if(function(a){return d.fC.some(b=>a.includes(b))||n.some(b=>a.includes(b))}(c)){let e=b[a];d.qk.some(a=>c.includes(a))||c.includes("api-key")||c.includes("x-key")?b[a]="[redacted]":"string"==typeof e&&e.length>12?b[a]=e.slice(0,8)+"..."+e.slice(-4):null!=e&&(b[a]="[redacted]")}}return b}async function p(a,b,c){if(!f)return{sessionPath:null,logClientRawRequest(){},logRawRequest(){},logOpenAIRequest(){},logTargetRequest(){},logProviderResponse(){},appendProviderChunk(){},appendOpenAIChunk(){},logConvertedResponse(){},appendConvertedChunk(){},logError(){},close(){}};let d=await k(a,b,c),e={},i=!1;function j(a,b,c){if(g&&d&&!i)try{let f=e[a];f||(f=e[a]=g.createWriteStream(h.join(d,b),{flags:"a"})).on("error",()=>{}),f.write(c)}catch{}}return{get sessionPath(){return d},logClientRawRequest(a,b,c={}){m(d,"1_req_client.json",{timestamp:new Date().toISOString(),endpoint:a,headers:o(c),body:b})},logRawRequest(a,b={}){m(d,"2_req_source.json",{timestamp:new Date().toISOString(),headers:o(b),body:a})},logOpenAIRequest(a){m(d,"3_req_openai.json",{timestamp:new Date().toISOString(),body:a})},logTargetRequest(a,b,c){m(d,"4_req_target.json",{timestamp:new Date().toISOString(),url:"string"==typeof a&&a?a.replace(/([?&])(key|api_key|api-key)=[^&]*/gi,"$1$2=[redacted]"):a,headers:o(b),body:c})},logProviderResponse(a,b,c,e){m(d,"5_res_provider.json",{timestamp:new Date().toISOString(),status:a,statusText:b,headers:o(c&&"function"==typeof c.entries?Object.fromEntries(c.entries()):c),body:e})},appendProviderChunk(a){j("provider","5_res_provider.txt",a)},appendOpenAIChunk(a){j("openai","6_res_openai.txt",a)},logConvertedResponse(a){m(d,"7_res_client.json",{timestamp:new Date().toISOString(),body:a})},appendConvertedChunk(a){j("converted","7_res_client.txt",a)},logError(a,b=null){m(d,"6_error.json",{timestamp:new Date().toISOString(),error:a?.message||String(a),requestBody:b})},close:()=>{let a;return i=!0,a=Object.values(e),e={},Promise.all(a.map(a=>new Promise(b=>{try{a.end(b)}catch{b()}})))}}}},71413:(a,b,c)=>{c.d(b,{O:()=>d});function d(a){let b=a?.messages;if(!Array.isArray(b))return null;let c=new Set,d=new Set,e=0,f=0,g=0;for(let a of b)if(Array.isArray(a?.content))for(let b of(!a.content.length&&g++,a.content))"assistant"===a.role&&b?.type==="tool_use"&&(e++,b.id&&c.add(b.id)),"user"===a.role&&b?.type==="tool_result"&&(f++,b.tool_use_id&&d.add(b.tool_use_id));if(!e&&!f)return null;let h=0,i=0,j=0,k=[];for(let a=0;a<b.length;a++){if(b[a]?.role!=="assistant")continue;let c=a,e=new Set;do{for(let c of Array.isArray(b[a].content)?b[a].content:[])c?.type==="tool_use"&&c.id&&e.add(c.id);a++}while(b[a]?.role==="assistant");let f=a,g=new Set;for(let a=f;b[a]?.role==="user";a++)for(let c of Array.isArray(b[a].content)?b[a].content:[])c?.type==="tool_result"&&c.tool_use_id&&g.add(c.tool_use_id);let l=[...e].filter(a=>!g.has(a));l.length&&(h+=l.length,i+=l.filter(a=>d.has(a)).length,j++,k.length<10&&k.push({assistantIndex:c,callCount:e.size,missingCount:l.length,nextRole:["user","assistant","system","developer"].includes(b[f]?.role)?b[f].role:"other-or-end"})),a--}return{messageCount:b.length,toolCalls:e,toolResults:f,emptyMessages:g,missingResults:h,misplacedResults:i,orphanResults:[...d].filter(a=>!c.has(a)).length,invalidTurnCount:j,invalidTurns:k}}},78255:(a,b,c)=>{c.d(b,{I:()=>p});var d=c(94176),e=c(89865),f=c(60290),g=c(19956),h=c(4630),i=c(49612),j=c(83611),k=c(29461),l=c(12407);let m=a=>h.xq[a]?.format===g.h.OPENAI_RESPONSES;function n(a){a&&Promise.resolve().then(a).catch(a=>{console.error("[ChatCore] onRequestSuccess failed:",a?.message||a)})}function o(a){if(!a?.content||!Array.isArray(a.content))return"";let b=a.content.find(a=>"output_text"===a.type);if("string"==typeof b?.text)return b.text;let c=a.content.find(a=>"string"==typeof a.text);return"string"==typeof c?.text?c.text:""}async function p({providerResponse:a,sourceFormat:b,provider:c,model:h,body:q,stream:r,requestConfig:s,translatedBody:t,finalBody:u,requestStartTime:v,connectionId:w,clientKeyId:x,requestId:y,clientRawRequest:z,onRequestSuccess:A,trackDone:B,appendLog:C,streamSignal:D}){let E=a.headers.get("content-type")||"";if(!(E.includes("text/event-stream")||""===E&&m(c)))return null;B();let F={provider:c,model:h,connectionId:w,request:s??(0,k.Fo)(q,r),providerRequest:u||t||null};if(m(c))try{let e=await (0,d.convertResponsesStreamToJson)(a.body,{signal:D});n(A);let f=e.usage||{};C({tokens:f,status:"200 OK"}),await (0,k.YZ)({provider:c,model:h,tokens:f,connectionId:w,clientKeyId:x,requestId:y,endpoint:z?.endpoint});let{msgItem:j,textContent:m}=function(a){if(!Array.isArray(a))return{msgItem:null,textContent:null};let b=a.filter(a=>a?.type==="message");if(0===b.length)return{msgItem:null,textContent:null};for(let a=b.length-1;a>=0;a--){let c=o(b[a]);if(c.length>0)return{msgItem:b[a],textContent:c}}let c=b[b.length-1];return{msgItem:c,textContent:o(c)}}(e.output),p=Date.now()-v;if((0,l.ox)((0,k.$R)({...F,latency:{ttft:p,total:p},tokens:{prompt_tokens:f.input_tokens||0,completion_tokens:f.output_tokens||0},response:{content:m,thinking:null,finish_reason:e.status||"unknown"},status:"success"},{endpoint:z?.endpoint||null})).catch(()=>{}),b===g.h.OPENAI_RESPONSES)return{success:!0,response:new Response(JSON.stringify(e),{headers:{"Content-Type":"application/json"}})};let q=f.input_tokens||0,r=f.output_tokens||0,s=(e.output||[]).filter(a=>"function_call"===a.type).map((a,b)=>({id:a.call_id||`call_${a.name}_${Date.now()}_${b}`,type:"function",function:{name:a.name,arguments:"string"==typeof a.arguments?a.arguments:JSON.stringify(a.arguments||{})}})),t=s.length>0,u="completed"===e.status||"done"===e.status,B=t?"tool_calls":u?"stop":"incomplete"===e.status?"length":e.status||"stop",E={id:e.id||`chatcmpl-${Date.now()}`,object:"chat.completion",created:e.created_at||Math.floor(Date.now()/1e3),model:e.model||h,choices:[{index:0,message:{role:"assistant",content:m||(t?null:""),...t?{tool_calls:s}:{}},finish_reason:B}],usage:{prompt_tokens:q,completion_tokens:r,total_tokens:q+r}},G=(0,i.p)(E,b);return{success:!0,response:new Response(JSON.stringify(G),{headers:{"Content-Type":"application/json"}})}}catch(a){return console.error("[ChatCore] Responses API SSE→JSON failed:",a),(0,e.A1)(f.gx.BAD_GATEWAY,"Failed to convert streaming response to JSON")}try{let g=await (0,d.iJ)(a.body,h,{signal:D});if(!g)return(0,e.A1)(f.gx.BAD_GATEWAY,"Invalid SSE response for non-streaming request");n(A);let m=g.usage||{};C({tokens:m,status:"200 OK"}),await (0,k.YZ)({provider:c,model:h,tokens:m,connectionId:w,clientKeyId:x,requestId:y,endpoint:z?.endpoint});let o=Date.now()-v;(0,l.ox)((0,k.$R)({...F,latency:{ttft:o,total:o},tokens:m,response:{content:g.choices?.[0]?.message?.content||null,thinking:g.choices?.[0]?.message?.reasoning_content||null,finish_reason:g.choices?.[0]?.finish_reason||"unknown"},status:"success"},{endpoint:z?.endpoint||null})).catch(()=>{});let p=!1;if(g?.choices)for(let a of g.choices){let b=a?.message;if(b?.content&&"string"==typeof b.content){let{content:a,reasoning:c}=(0,j.j)(b.content);c&&(b.reasoning_content=c,b.content=a,p=!0)}}if(!p&&g?.choices)for(let a of g.choices)a?.message?.reasoning_content&&a.message.content&&delete a.message.reasoning_content;let q=(0,i.p)(g,b);return{success:!0,response:new Response(JSON.stringify(q),{headers:{"Content-Type":"application/json"}})}}catch(a){return console.error("[ChatCore] Chat Completions SSE→JSON failed:",a),(0,e.A1)(f.gx.BAD_GATEWAY,"Failed to convert streaming response to JSON")}}},83611:(a,b,c)=>{c.d(b,{H:()=>h,j:()=>g});let d="<think>",e="</think>",f=RegExp(`${d}([\\s\\S]*?)${e}\\s*`);function g(a){if("string"!=typeof a)return{content:a,reasoning:null};let b=a.match(f);return b?{content:a.replace(RegExp(`${d}[\\s\\S]*?${e}\\s*`,"g"),"").trimStart(),reasoning:b[1].trim()}:{content:a,reasoning:null}}function h(){let a="",b=!1;return function(c){let f=null;if("string"!=typeof c)return{content:c,reasoning:f};if(b){let d=c.indexOf(e);d>=0?(a+=c.slice(0,d),f=a.trim(),a="",b=!1,c=c.slice(d+e.length).trimStart()):(a+=c,c="")}if(!b){let g=c.indexOf(d);if(g>=0){let h=c.slice(g+d.length),i=h.indexOf(e);i>=0?(f=(f?f+"\n":"")+h.slice(0,i).trim(),c=c.slice(0,g)+h.slice(i+e.length).trimStart()):(b=!0,a=h,c=c.slice(0,g))}}return{content:c,reasoning:f}}}},90197:(a,b,c)=>{c.d(b,{H:()=>h,_:()=>i});var d=c(19956);function e(a){try{return JSON.stringify(a)?.length||0}catch{return 0}}function f(a){return Math.round(a/4)}function g(a,b={}){return{body:null,summary:{applied:!1,reason:a,...b}}}async function h(a,{enabled:b,format:c,model:i,minChars:j,timeoutMs:k,transform:l}={}){if(!b)return g("disabled");if("function"!=typeof l)return g("not_installed");if(!a)return g("missing_body");if(c!==d.h.CLAUDE)return g("unsupported_format",{detail:c});let m=Date.now(),n=e(a),o=Number(j)>0?Number(j):25e3;if(n<o)return g("below_threshold",{originalChars:n,threshold:o});try{let b=new TextEncoder().encode(JSON.stringify(a)),c=Number(k)>0?Number(k):15e3,d=await Promise.race([l({body:b,model:i,options:{minCompressChars:o}}),new Promise(a=>setTimeout(()=>a(null),c))]);if(!d)return g("timeout",{originalChars:n,durationMs:Date.now()-m});if(!d.applied)return g(d.reason||"passthrough",{detail:d.detail,originalChars:n,durationMs:Date.now()-m});let h=JSON.parse(new TextDecoder().decode(d.body)),j=e(h),p=d.info||{},q=p.compressedChars||0,r=p.imageTokens||(p.imagePixels?Math.round(p.imagePixels/750):4761*(p.imageCount||0)),s={applied:!0,reason:"applied",originalChars:n,compressedBodyChars:j,imagedChars:q,imageCount:p.imageCount||0,imageBytes:p.imageBytes||0,tokensBeforeEst:p.baselineTokens||f(n),tokensAfterEst:f(Math.max(0,n-q))+r,durationMs:Date.now()-m,cacheOwnsControl:d.cache?.ownsCacheControl===!0};return s.tokensSavedEst=Math.max(0,s.tokensBeforeEst-s.tokensAfterEst),s.savedPct=s.tokensBeforeEst>0?+(s.tokensSavedEst/s.tokensBeforeEst*100).toFixed(2):0,{body:h,summary:s}}catch(a){return g("transform_error",{detail:a?.message||String(a),originalChars:n,durationMs:Date.now()-m})}}function i(a){return a&&a.applied?`imaged ${a.imagedChars}ch → ${a.imageCount} image(s) | est ${a.tokensBeforeEst}→${a.tokensAfterEst} tokens (-${a.savedPct}%) | ${a.durationMs}ms`:null}},94176:(a,b,c)=>{function d(a,b){let c;if(!a.trim())return;let d=a.match(/^event:\s*(.+)$/m),f=a.match(/^data:\s*(.+)$/m);if(!d||!f)return;let g=d[1].trim(),h=f[1].trim();if("[DONE]"!==h){try{c=JSON.parse(h)}catch{return}if("response.created"===g)b.responseId=c.response?.id||b.responseId,b.created=c.response?.created_at||b.created;else if("response.output_item.done"===g)b.items.set(c.output_index??0,c.item);else if("response.completed"===g||"response.done"===g)b.status="completed",e(b,c);else if("response.incomplete"===g)b.status="incomplete",e(b,c);else if("response.failed"===g)b.status="failed";else if("response.output_text.delta"===g){let a=c.output_index??0;"string"==typeof c.delta&&c.delta.length>0&&b.deltaText.set(a,(b.deltaText.get(a)||"")+c.delta)}else if("response.function_call_arguments.delta"===g){let a=c.output_index??0;"string"==typeof c.delta&&c.delta.length>0&&b.deltaArgs.set(a,(b.deltaArgs.get(a)||"")+c.delta)}}}function e(a,b){b.response?.usage&&(a.usage.input_tokens=b.response.usage.input_tokens||0,a.usage.output_tokens=b.response.usage.output_tokens||0,a.usage.total_tokens=b.response.usage.total_tokens||0)}c.d(b,{convertResponsesStreamToJson:()=>p,hB:()=>g,iJ:()=>o,tQ:()=>j});let f={input_tokens:0,output_tokens:0,total_tokens:0};function g(a){if(Number.isFinite(a)&&a>0)return a;let b=Number.parseInt(globalThis.process?.env?.STREAM_TO_JSON_MAX_BYTES||"",10);return Number.isFinite(b)&&b>0?b:0x1000000}class h extends Error{constructor(a){super(`SSE stream exceeded STREAM_TO_JSON_MAX_BYTES (${a} bytes)`),this.name="StreamToJsonMaxBytesError"}}function i(a){return a?"number"==typeof a.byteLength?a.byteLength:"number"==typeof a.length?a.length:0:0}function j(a,b){if(a>b)throw new h(b)}function k(){let a=Error("The operation was aborted.");return a.name="AbortError",a}function l(a,b){let c;if(!b)return a.read();if(b.aborted)return Promise.reject(k());let d=new Promise((d,e)=>{c=()=>{e(k());try{a.cancel(k()).catch(()=>{})}catch{}},b.addEventListener("abort",c,{once:!0})});return Promise.race([a.read(),d]).finally(()=>{b.removeEventListener?.("abort",c)})}function m(){return{contentParts:[],reasoningParts:[],toolCallMap:new Map,finishReason:"stop"}}function n(a,b){let c=a.trim();if(!c.startsWith("data:"))return;let d=c.slice(5).trim();if(d&&"[DONE]"!==d)try{!function(a,b){if(b.seenChunk||(b.first=a||{},b.seenChunk=!0),a?.usage&&"object"==typeof a.usage&&(b.usage=a.usage),Array.isArray(a?.choices))for(let c of a.choices){let a=function(a,b){let c=a.choiceMap.get(b);return c||(c=m(),a.choiceMap.set(b,c)),c}(b,c?.index??0),d=c?.delta||{};if("string"==typeof d.content&&d.content.length>0&&a.contentParts.push(d.content),"string"==typeof d.reasoning_content&&d.reasoning_content.length>0&&a.reasoningParts.push(d.reasoning_content),c?.finish_reason&&(a.finishReason=c.finish_reason),Array.isArray(d.tool_calls))for(let b of d.tool_calls){let c=b.index??0;a.toolCallMap.has(c)||a.toolCallMap.set(c,{id:b.id||"",type:"function",function:{name:"",arguments:""}});let d=a.toolCallMap.get(c);b.id&&(d.id=b.id),b.function?.name&&(d.function.name?d.function.name!==b.function.name&&(d.function.name+=b.function.name):d.function.name=b.function.name),b.function?.arguments&&(d.function.arguments+=b.function.arguments)}}}(JSON.parse(d),b)}catch{}}async function o(a,b,{maxBytes:c,signal:d}={}){if(!a||"function"!=typeof a.getReader)return null;let e=a.getReader(),f=new TextDecoder,h=g(c),k={fallbackModel:b,seenChunk:!1,first:null,choiceMap:new Map,usage:null},p="",q=0;try{for(;;){let{done:a,value:b}=await l(e,d);if(a)break;q+=i(b),j(q,h);let c=(p+=f.decode(b,{stream:!0})).split("\n");for(let a of(p=c.pop()||"",c))n(a,k)}let a=f.decode();a&&(p+=a),p&&n(p,k)}catch(a){try{await e.cancel(a)}catch{}throw a}finally{e.releaseLock()}if(!k.seenChunk)return null;let r=k.first||{};0===k.choiceMap.size&&k.choiceMap.set(0,m());let s=[...k.choiceMap.entries()].sort((a,b)=>a[0]-b[0]).map(([a,b])=>{let c={role:"assistant",content:b.contentParts.join("")||(b.toolCallMap.size>0?null:"")};return b.reasoningParts.length>0&&(c.reasoning_content=b.reasoningParts.join("")),b.toolCallMap.size>0&&(c.tool_calls=[...b.toolCallMap.entries()].sort((a,b)=>a[0]-b[0]).map(([,a])=>({...a,function:{name:a.function.name,arguments:a.function.arguments||"{}"}}))),{index:a,message:c,finish_reason:b.finishReason}}),t={id:r.id||`chatcmpl-${Date.now()}`,object:"chat.completion",created:r.created||Math.floor(Date.now()/1e3),model:r.model||k.fallbackModel||"unknown",choices:s};return k.usage&&(t.usage=k.usage),t}async function p(a,{maxBytes:b,signal:c}={}){if(!a||"function"!=typeof a.getReader)return{id:`resp_${Date.now()}`,object:"response",created_at:Math.floor(Date.now()/1e3),status:"failed",output:[],usage:{...f}};let e=a.getReader(),h=new TextDecoder,k=g(b),m="",n=0,o={responseId:"",created:Math.floor(Date.now()/1e3),status:"in_progress",usage:{...f},items:new Map,deltaText:new Map,deltaArgs:new Map};try{for(;;){let{done:a,value:b}=await l(e,c);if(a)break;n+=i(b),j(n,k);let f=(m+=h.decode(b,{stream:!0})).split(/\r?\n\r?\n/);for(let a of(m=f.pop()||"",f))d(a,o)}let a=h.decode();a&&(m+=a),m.trim()&&d(m,o)}catch(a){try{await e.cancel(a)}catch{}throw a}finally{e.releaseLock()}for(let[a,b]of o.deltaText)!o.items.has(a)&&b&&o.items.set(a,{id:`msg_${o.responseId||"synth"}_${a}`,type:"message",role:"assistant",content:[{type:"output_text",text:b}]});for(let[a,b]of o.deltaArgs)!o.items.has(a)&&b&&o.items.set(a,{id:`fc_synth_${a}`,type:"function_call",call_id:"",name:"",arguments:b});let q=[...o.items.entries()].sort((a,b)=>a[0]-b[0]).map(([,a])=>a);return{id:o.responseId||`resp_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,object:"response",created_at:o.created,status:o.status||"completed",output:q,usage:o.usage}}},94501:(a,b,c)=>{c.d(b,{X:()=>m});var d=c(19956);let e={vision:"[image omitted: model has no vision support]",audioInput:"[audio omitted: model has no audio support]",pdf:"[file omitted: model has no document support]"},f={vision:"[Previous image omitted from context.]",audioInput:"[Previous audio omitted from context.]",pdf:"[Previous file omitted from context.]"},g=(a,b)=>(b?e:f)[a];function h(a){let b=a?.type;return"image_url"===b||"image"===b?"vision":"input_audio"===b||"audio_url"===b?"audioInput":"file"===b?"pdf":null}function i(a){let b=a?.type;return"image"===b?"vision":"document"===b?"pdf":null}function j(a,b,c,d,e){let f=[];for(let e of a){let a=b(e);if(a&&!1===c[a]){d.add(a);continue}f.push(e)}for(let a of d)f.push({type:"text",text:g(a,e)});return f}function k(a,b){if(!Array.isArray(a.messages))return;let c=a.messages.length-1;a.messages.forEach((a,d)=>{if(!Array.isArray(a.content))return;let e=new Set;a.content=j(a.content,h,b,e,d===c)})}function l(a,b){if(!Array.isArray(a))return;let c=a.length-1;a.forEach((a,d)=>{if(!Array.isArray(a.parts))return;let e=new Set;for(let f of(a.parts=a.parts.filter(a=>{var c;let d="string"!=typeof(c=a?.inlineData?.mimeType||a?.fileData?.mimeType)?null:c.startsWith("image/")?"vision":c.startsWith("audio/")?"audioInput":"application/pdf"===c?"pdf":null;return!d||!1!==b[d]||(e.add(d),!1)}),e))a.parts.push({text:g(f,d===c)})})}function m(a,b,c){if(!a||!c||!1!==c.vision&&!1!==c.audioInput&&!1!==c.pdf)return!1;switch(b){case d.h.OPENAI:case d.h.OLLAMA:case d.h.KIRO:case d.h.CURSOR:case d.h.COMMANDCODE:k(a,c);break;case d.h.CLAUDE:!function(a,b){if(!Array.isArray(a.messages))return;let c=a.messages.length-1;a.messages.forEach((a,d)=>{if(!Array.isArray(a.content))return;let e=new Set;a.content=j(a.content,i,b,e,d===c)})}(a,c);break;case d.h.OPENAI_RESPONSES:case d.h.OPENAI_RESPONSE:case d.h.CODEX:!function(a,b){if(!Array.isArray(a.input))return;let c=a.input.length-1;a.input.forEach((a,d)=>{if(!Array.isArray(a.content))return;let e=new Set;for(let f of(a.content=a.content.filter(a=>{let c=a?.type==="input_image"?"vision":a?.type==="input_file"?"pdf":null;return!c||!1!==b[c]||(e.add(c),!1)}),e))a.content.push({type:"input_text",text:g(f,d===c)})})}(a,c);break;case d.h.GEMINI:case d.h.GEMINI_CLI:case d.h.VERTEX:l(a.contents,c);break;case d.h.ANTIGRAVITY:l(a?.request?.contents,c);break;default:k(a,c)}return!0}},96145:(a,b,c)=>{c.d(b,{C:()=>h});var d=c(19956),e=c(50186);let f=new Set([d.h.GEMINI,d.h.GEMINI_CLI,d.h.VERTEX,d.h.ANTIGRAVITY,d.h.OLLAMA,d.h.KIRO]);function g(a){return"string"==typeof a&&(a.startsWith("http://")||a.startsWith("https://"))}async function h(a,b,c,i={}){if(!a||!f.has(c))return 0;let j=function(a,b){let c=[],e=a=>{for(let b of a||[])if(Array.isArray(b.content)){for(let a of b.content)if(a?.type==="image_url"){let b="string"==typeof a.image_url?a.image_url:a.image_url?.url;g(b)&&c.push({get:()=>b,set:b=>{"string"==typeof a.image_url?a.image_url=b:a.image_url.url=b}})}}},f=a=>{for(let b of a||[])for(let a of b.parts||[]){let b=a?.fileData?.fileUri;g(b)&&c.push({get:()=>b,part:a})}},h=a=>{for(let b of a||[])if(Array.isArray(b?.content))for(let a of b.content)a?.type==="input_image"&&g("string"==typeof a.image_url?a.image_url:a.image_url?.url||a.file_id)&&c.push({get:()=>"string"==typeof a.image_url?a.image_url:a.image_url?.url||a.file_id,set:b=>{"string"==typeof a.image_url?a.image_url=b:a.image_url&&"object"==typeof a.image_url?a.image_url.url=b:a.image_url=b}})};switch(b){case d.h.OPENAI:case d.h.OLLAMA:case d.h.KIRO:case d.h.CURSOR:case d.h.COMMANDCODE:e(a.messages),Array.isArray(a.input)&&h(a.input);break;case d.h.OPENAI_RESPONSES:case d.h.OPENAI_RESPONSE:case d.h.CODEX:h(a.input);break;case d.h.CLAUDE:for(let b of a.messages||[])if(Array.isArray(b.content))for(let a of b.content)a?.type==="image"&&a.source?.type==="url"&&g(a.source.url)&&c.push({get:()=>a.source.url,claudeBlock:a});break;case d.h.GEMINI:case d.h.GEMINI_CLI:case d.h.VERTEX:f(a.contents);break;case d.h.ANTIGRAVITY:f(a?.request?.contents);break;default:e(a.messages),Array.isArray(a.input)&&h(a.input)}return c}(a,b);if(!j.length)return 0;let k=0;for(let a of j){let b=a.get();if((0,e.W$)(b))continue;let c=await (0,e.ni)(b,i);c&&(a.set?a.set(c.url):a.part?(delete a.part.fileData,a.part.inlineData={mimeType:c.mimeType,data:c.url.split(",")[1]}):a.claudeBlock&&(a.claudeBlock.source={type:"base64",media_type:c.mimeType,data:c.url.split(",")[1]}),k++)}return k}}};
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
latency_ms = excluded.latency_ms,
|
|
12
12
|
failure_class = excluded.failure_class,
|
|
13
13
|
failure_message = excluded.failure_message,
|
|
14
|
-
checked_at = excluded.checked_at`,[b,c,d,f,g,j,a.failureClass||null,a.failureMessage?String(a.failureMessage).slice(0,500):null,i]),{providerId:b,scopeKey:c,modelId:d,kind:f,status:g,latencyMs:j,failureClass:a.failureClass||null,failureMessage:a.failureMessage||null,checkedAt:i}}async function E(a,b){return(await (0,e.c)()).all("SELECT * FROM provider_model_probe WHERE provider_id = ? AND scope_key = ? ORDER BY checked_at DESC",[a,b]).map(C).filter(Boolean)}async function F(a,b,c,d=null,f={}){let g=String(c||"").trim();if(!["ok","dead","retryable"].includes(g))throw Error("Invalid probe status");let h=[...new Set((Array.isArray(f.excludeFailureClasses)?f.excludeFailureClasses:[]).map(a=>String(a||"").trim()).filter(Boolean))],i=await (0,e.c)(),j=[a,b,g],k="SELECT model_id FROM provider_model_probe WHERE provider_id = ? AND scope_key = ? AND status = ?";return d&&(k+=" AND kind = ?",j.push(d)),h.length>0&&(k+=` AND (failure_class IS NULL OR failure_class NOT IN (${h.map(()=>"?").join(", ")}))`,j.push(...h)),i.all(k,j).map(a=>a.model_id)}async function G(a,b){let c=(await (0,e.c)()).run("DELETE FROM provider_model_probe WHERE provider_id = ? AND scope_key = ?",[a,b]);return c?.changes||0}var H=c(23832),I=c(54293),J=c(67677);let K=null,L=0;async function M(){if(K&&Date.now()-L<5e3)return K;try{let{getSettings:a}=await Promise.resolve().then(c.bind(c,42655)),b=await a(),d="false"!==process.env.OBSERVABILITY_ENABLED;K={enabled:"boolean"==typeof b.enableObservability?b.enableObservability:d,maxRecords:b.observabilityMaxRecords||parseInt(process.env.OBSERVABILITY_MAX_RECORDS||String(200),10),batchSize:b.observabilityBatchSize||parseInt(process.env.OBSERVABILITY_BATCH_SIZE||String(20),10),flushIntervalMs:b.observabilityFlushIntervalMs||parseInt(process.env.OBSERVABILITY_FLUSH_INTERVAL_MS||String(5e3),10),maxJsonSize:1024*(b.observabilityMaxJsonSize||parseInt(process.env.OBSERVABILITY_MAX_JSON_SIZE||"5",10)),maxBuffer:parseInt(process.env.OBSERVABILITY_MAX_BUFFER||String(5e3),10)||5e3}}catch{K={enabled:!1,maxRecords:200,batchSize:20,flushIntervalMs:5e3,maxJsonSize:5120,maxBuffer:5e3}}return L=Date.now(),K}let N=[],O=null,P=!1,Q=0,R=0,S=new Set(["accesstoken","refreshtoken","idtoken","apikey","copilottoken","cookies","clientsecret","secretaccesskey","authorization","xapikey","xswitchboardkey","cookie","token","password","passwd","secret","bearer","setcookie","xauthtoken"]);function T(a,b=new WeakSet){if(!a||"object"!=typeof a||b.has(a))return a;b.add(a);let c=null;if(Array.isArray(a)){for(let d=0;d<a.length;d++){let e=T(a[d],b);e===a[d]||c||(c=a.slice()),c&&(c[d]=e)}return c||a}for(let[d,e]of Object.entries(a)){let f=S.has(String(d).toLowerCase().replace(/[-_]/g,""))?"[REDACTED]":T(e,b);f===e||c||(c={...a}),c&&(c[d]=f)}return c||a}let U=new WeakMap;function V(a,b,c){if(a&&("object"==typeof a||"function"==typeof a))try{U.set(a,{maxSize:b,result:c})}catch{}return c}function W(a,b){let c;if(null==a)return{};if("object"==typeof a||"function"==typeof a)try{let c=U.get(a);if(c&&c.maxSize===b)return c.result}catch{}try{c=JSON.stringify(a)}catch{let c=String(a).substring(0,200);return V(a,b,{_truncated:!0,_originalSize:c.length,_preview:c,_error:"stringify_failed"})}return((0,J.nx)(a,c.length),c.length>b)?V(a,b,{_truncated:!0,_originalSize:c.length,_preview:c.substring(0,200)}):V(a,b,a)}function X(a,b,c){a.transaction(()=>{for(let d of c){let c=function(a,b){var c;let d,e,f;return a.id||(c=a.model,d=new Date().toISOString(),e=Math.random().toString(36).substring(2,8),f=c?c.replace(/[^a-zA-Z0-9-]/g,"-"):"unknown",a.id=`${d}-${e}-${f}`),a.timestamp||(a.timestamp=new Date().toISOString()),{id:a.id,provider:a.provider||null,model:a.model||null,connectionId:a.connectionId||null,timestamp:a.timestamp,status:a.status||null,latency:a.latency||{},tokens:a.tokens||{},request:W(a.request,b.maxJsonSize),providerRequest:W(a.providerRequest,b.maxJsonSize),providerResponse:W(a.providerResponse,b.maxJsonSize),response:W(a.response,b.maxJsonSize),pxpipe:a.pxpipe||void 0,rtk:a.rtk?{...a.rtk,hits:a.rtk.hits?.slice(0,50)}:void 0}}(d,b);a.run("INSERT INTO requestDetails(id, timestamp, provider, model, connectionId, status, data) VALUES(?, ?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET timestamp = excluded.timestamp, provider = excluded.provider, model = excluded.model, connectionId = excluded.connectionId, status = excluded.status, data = excluded.data",[c.id,c.timestamp,c.provider,c.model,c.connectionId,c.status,(0,f.s)(c)])}let d=a.get("SELECT timestamp FROM requestDetails ORDER BY timestamp DESC LIMIT 1 OFFSET ?",[Math.max(0,b.maxRecords-1)]);d&&a.run("DELETE FROM requestDetails WHERE timestamp < ?",[d.timestamp])})}let Y=null,Z=null;async function $(){if(P||0===N.length)return;P=!0;let a=null;try{for(;N.length>0;){let b=N.splice(0,N.length);try{let a=await (0,e.c)(),c=await M();Y=a,Z=c,X(a,c,b)}catch(c){a=c,N.unshift(...b);break}}}finally{P=!1}a&&console.error("[requestDetailsRepo] Batch write failed:",a)}async function _(a){let b=await M();if(!b.enabled)return;Z=b;try{(0,e.c)().then(a=>{Y=a},()=>{})}catch{}let c=function(a,b){if(!a||"object"!=typeof a)return a;let c={...a};return c.request?.headers&&(c.request={...c.request,headers:function(a){if(!a||"object"!=typeof a)return{};let b=["authorization","x-api-key","x-switchboard-key","cookie","token","api-key"],c={...a};for(let a of Object.keys(c))b.some(b=>a.toLowerCase().includes(b))&&delete c[a];return c}(c.request.headers)}),c.request=W(T(c.request),b),c.providerRequest=W(T(c.providerRequest),b),c.providerResponse=W(T(c.providerResponse),b),c.response=W(T(c.response),b),c.body&&(c.body=W(T(c.body),b)),c.raw&&(c.raw=W(T(c.raw),b)),c}(a,b.maxJsonSize);if(N.length>=b.maxBuffer){N.shift(),R++;let a=Date.now();a-Q>6e4&&(console.warn(`[requestDetailsRepo] observability buffer full (${b.maxBuffer}); dropped ${R} record(s). Raise OBSERVABILITY_MAX_BUFFER or lower OBSERVABILITY_FLUSH_INTERVAL_MS.`),Q=a,R=0)}N.push(c),N.length>=b.batchSize?(O&&(clearTimeout(O),O=null),$().catch(a=>console.error("[requestDetailsRepo] flush err:",a))):O||(O=setTimeout(()=>{O=null,$().catch(()=>{})},b.flushIntervalMs))}async function aa(a={}){let b=await (0,e.c)(),c=[],d=[];a.provider&&(c.push("provider = ?"),d.push(a.provider)),a.model&&(c.push("model = ?"),d.push(a.model)),a.connectionId&&(c.push("connectionId = ?"),d.push(a.connectionId)),a.status&&(c.push("status = ?"),d.push(a.status));let g=a=>{let b=new Date(a).getTime();return Number.isFinite(b)?new Date(b).toISOString():null},h=a.startDate?g(a.startDate):null,i=a.endDate?g(a.endDate):null;h&&(c.push("timestamp >= ?"),d.push(h)),i&&(c.push("timestamp <= ?"),d.push(i));let j=c.length?`WHERE ${c.join(" AND ")}`:"",k=b.get(`SELECT COUNT(*) as c FROM requestDetails ${j}`,d),l=k?k.c:0,m=a.page||1,n=a.pageSize||50,o=Math.ceil(l/n);return{details:b.all(`SELECT data FROM requestDetails ${j} ORDER BY timestamp DESC LIMIT ? OFFSET ?`,[...d,n,(m-1)*n]).map(a=>(0,f.q)(a.data,{})),pagination:{page:m,pageSize:n,totalItems:l,totalPages:o,hasNext:m<o,hasPrev:m>1}}}async function ab(a){let b=(await (0,e.c)()).get("SELECT data FROM requestDetails WHERE id = ?",[a]);return b?(0,f.q)(b.data,null):null}let ac=async()=>{O&&(clearTimeout(O),O=null),N.length>0&&await $()},ad="__switchboardRequestDetailsBeforeExitHandler",ae="__switchboardRequestDetailsSyncFlushUnregister";(d=globalThis[ad])&&process.off("beforeExit",d),globalThis[ad]=ac,process.on("beforeExit",ac);try{let a=globalThis[ae];if("function"==typeof a)try{a()}catch{}globalThis[ae]=(0,I.H)(function(){if(0===N.length)return 0;let a=Y,b=Z;if(!a||!b)return 0;try{O&&(clearTimeout(O),O=null);let c=N.splice(0,N.length);try{X(a,b,c)}catch{return N.unshift(...c),0}return c.length}catch{return 0}},{flush:!0})}catch{}c(44196),c(34772);var af=c(2142);async function ag(){let a=await (0,e.c)(),{exportSettings:b}=await Promise.resolve().then(c.bind(c,42655)),d={settings:await b(),providerConnections:a.all("SELECT * FROM providerConnections").map(a=>({...(0,f.q)(a.data,{}),id:a.id,provider:a.provider,authType:a.authType,name:a.name,email:a.email,priority:a.priority,isActive:1===a.isActive,createdAt:a.createdAt,updatedAt:a.updatedAt})),providerNodes:a.all("SELECT * FROM providerNodes").map(a=>({...(0,f.q)(a.data,{}),id:a.id,type:a.type,name:a.name,createdAt:a.createdAt,updatedAt:a.updatedAt})),proxyPools:a.all("SELECT * FROM proxyPools").map(a=>({...(0,f.q)(a.data,{}),id:a.id,isActive:1===a.isActive,testStatus:a.testStatus,createdAt:a.createdAt,updatedAt:a.updatedAt})),apiKeys:a.all("SELECT * FROM apiKeys").map(a=>({id:a.id,key:a.key,keyPrefix:a.keyPrefix,lookupDigest:a.lookupDigest,name:a.name,machineId:a.machineId,isActive:1===a.isActive,createdAt:a.createdAt,allowedModels:(0,f.q)(a.allowedModels,[]),allowedCombos:(0,f.q)(a.allowedCombos,[]),expiresAt:a.expiresAt||null,rateLimitPerMinute:a.rateLimitPerMinute??null,concurrencyLimit:a.concurrencyLimit??null,spendLimitUsd:a.spendLimitUsd??null,spentUsd:Number(a.spentUsd||0)})),combos:a.all("SELECT * FROM combos").map(a=>({id:a.id,name:a.name,kind:a.kind,models:(0,f.q)(a.models,[]),createdAt:a.createdAt,updatedAt:a.updatedAt})),modelAliases:{},customModels:[],mitmAlias:{},pricing:{}};for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'modelAliases'"))d.modelAliases[b.key]=(0,f.q)(b.value);for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'customModels'"))d.customModels.push((0,f.q)(b.value));for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'mitmAlias'"))d.mitmAlias[b.key]=(0,f.q)(b.value);for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'pricing'"))d.pricing[b.key]=(0,f.q)(b.value);return d}async function ah(a){if(!a||"object"!=typeof a||Array.isArray(a))throw Error("Invalid database payload");let b=await (0,e.c)();return b.transaction(()=>{for(let c of(b.run("DELETE FROM settings"),b.run("DELETE FROM providerConnections"),b.run("DELETE FROM providerNodes"),b.run("DELETE FROM proxyPools"),b.run("DELETE FROM apiKeys"),b.run("DELETE FROM combos"),b.run("DELETE FROM kv WHERE scope IN ('modelAliases', 'customModels', 'mitmAlias', 'pricing')"),a.settings&&b.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,f.s)(a.settings)]),a.providerConnections||[])){let a=(0,g.connToRow)(c);b.run("INSERT OR REPLACE INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[a.id,a.provider,a.authType||"oauth",a.name,a.email,a.priority,a.isActive,a.data,a.createdAt||new Date().toISOString(),a.updatedAt||new Date().toISOString()])}for(let c of a.providerNodes||[]){let{id:a,type:d,name:e,createdAt:g,updatedAt:h,...i}=c;b.run("INSERT OR REPLACE INTO providerNodes(id, type, name, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[a,d||null,e||null,(0,f.s)(i),g||new Date().toISOString(),h||new Date().toISOString()])}for(let c of a.proxyPools||[]){let{id:a,isActive:d,testStatus:e,createdAt:g,updatedAt:h,...i}=c;b.run("INSERT OR REPLACE INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[a,+(!1!==d),e||"unknown",(0,f.s)(i),g||new Date().toISOString(),h||new Date().toISOString()])}for(let c of a.apiKeys||[]){let a=(0,h.Yh)(c.key),d="string"==typeof a&&(0,h.BA)(a).legacy?(0,h.ws)(a):a,e=(0,h.BA)(d);b.run(`INSERT OR REPLACE INTO apiKeys(id, key, keyPrefix, lookupDigest, name, machineId, isActive, createdAt, allowedModels, allowedCombos, expiresAt, rateLimitPerMinute, concurrencyLimit, spendLimitUsd, spentUsd)
|
|
14
|
+
checked_at = excluded.checked_at`,[b,c,d,f,g,j,a.failureClass||null,a.failureMessage?String(a.failureMessage).slice(0,500):null,i]),{providerId:b,scopeKey:c,modelId:d,kind:f,status:g,latencyMs:j,failureClass:a.failureClass||null,failureMessage:a.failureMessage||null,checkedAt:i}}async function E(a,b){return(await (0,e.c)()).all("SELECT * FROM provider_model_probe WHERE provider_id = ? AND scope_key = ? ORDER BY checked_at DESC",[a,b]).map(C).filter(Boolean)}async function F(a,b,c,d=null,f={}){let g=String(c||"").trim();if(!["ok","dead","retryable"].includes(g))throw Error("Invalid probe status");let h=[...new Set((Array.isArray(f.excludeFailureClasses)?f.excludeFailureClasses:[]).map(a=>String(a||"").trim()).filter(Boolean))],i=await (0,e.c)(),j=[a,b,g],k="SELECT model_id FROM provider_model_probe WHERE provider_id = ? AND scope_key = ? AND status = ?";return d&&(k+=" AND kind = ?",j.push(d)),h.length>0&&(k+=` AND (failure_class IS NULL OR failure_class NOT IN (${h.map(()=>"?").join(", ")}))`,j.push(...h)),i.all(k,j).map(a=>a.model_id)}async function G(a,b){let c=(await (0,e.c)()).run("DELETE FROM provider_model_probe WHERE provider_id = ? AND scope_key = ?",[a,b]);return c?.changes||0}var H=c(23832),I=c(54293),J=c(67677);let K=null,L=0;async function M(){if(K&&Date.now()-L<5e3)return K;try{let{getSettings:a}=await Promise.resolve().then(c.bind(c,42655)),b=await a(),d="false"!==process.env.OBSERVABILITY_ENABLED;K={enabled:"boolean"==typeof b.enableObservability?b.enableObservability:d,maxRecords:b.observabilityMaxRecords||parseInt(process.env.OBSERVABILITY_MAX_RECORDS||String(200),10),batchSize:b.observabilityBatchSize||parseInt(process.env.OBSERVABILITY_BATCH_SIZE||String(20),10),flushIntervalMs:b.observabilityFlushIntervalMs||parseInt(process.env.OBSERVABILITY_FLUSH_INTERVAL_MS||String(5e3),10),maxJsonSize:1024*(b.observabilityMaxJsonSize||parseInt(process.env.OBSERVABILITY_MAX_JSON_SIZE||"5",10)),maxBuffer:parseInt(process.env.OBSERVABILITY_MAX_BUFFER||String(5e3),10)||5e3}}catch{K={enabled:!1,maxRecords:200,batchSize:20,flushIntervalMs:5e3,maxJsonSize:5120,maxBuffer:5e3}}return L=Date.now(),K}let N=[],O=null,P=!1,Q=0,R=0,S=new Set(["accesstoken","refreshtoken","idtoken","apikey","copilottoken","cookies","clientsecret","secretaccesskey","authorization","xapikey","xswitchboardkey","cookie","token","password","passwd","secret","bearer","setcookie","xauthtoken"]);function T(a,b=new WeakSet){if(!a||"object"!=typeof a||b.has(a))return a;b.add(a);let c=null;if(Array.isArray(a)){for(let d=0;d<a.length;d++){let e=T(a[d],b);e===a[d]||c||(c=a.slice()),c&&(c[d]=e)}return c||a}for(let[d,e]of Object.entries(a)){let f=S.has(String(d).toLowerCase().replace(/[-_]/g,""))?"[REDACTED]":T(e,b);f===e||c||(c={...a}),c&&(c[d]=f)}return c||a}let U=new WeakMap;function V(a,b,c){if(a&&("object"==typeof a||"function"==typeof a))try{U.set(a,{maxSize:b,result:c})}catch{}return c}function W(a,b){let c;if(null==a)return{};if("object"==typeof a||"function"==typeof a)try{let c=U.get(a);if(c&&c.maxSize===b)return c.result}catch{}try{c=JSON.stringify(a)}catch{let c=String(a).substring(0,200);return V(a,b,{_truncated:!0,_originalSize:c.length,_preview:c,_error:"stringify_failed"})}return((0,J.nx)(a,c.length),c.length>b)?V(a,b,{_truncated:!0,_originalSize:c.length,_preview:c.substring(0,200)}):V(a,b,a)}function X(a,b,c){a.transaction(()=>{for(let d of c){let c=function(a,b){var c;let d,e,f;return a.id||(c=a.model,d=new Date().toISOString(),e=Math.random().toString(36).substring(2,8),f=c?c.replace(/[^a-zA-Z0-9-]/g,"-"):"unknown",a.id=`${d}-${e}-${f}`),a.timestamp||(a.timestamp=new Date().toISOString()),{id:a.id,provider:a.provider||null,model:a.model||null,connectionId:a.connectionId||null,timestamp:a.timestamp,status:a.status||null,latency:a.latency||{},tokens:a.tokens||{},request:W(a.request,b.maxJsonSize),providerRequest:W(a.providerRequest,b.maxJsonSize),providerResponse:W(a.providerResponse,b.maxJsonSize),response:W(a.response,b.maxJsonSize),pxpipe:a.pxpipe||void 0,toolHistory:a.toolHistory||void 0,rtk:a.rtk?{...a.rtk,hits:a.rtk.hits?.slice(0,50)}:void 0}}(d,b);a.run("INSERT INTO requestDetails(id, timestamp, provider, model, connectionId, status, data) VALUES(?, ?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET timestamp = excluded.timestamp, provider = excluded.provider, model = excluded.model, connectionId = excluded.connectionId, status = excluded.status, data = excluded.data",[c.id,c.timestamp,c.provider,c.model,c.connectionId,c.status,(0,f.s)(c)])}let d=a.get("SELECT timestamp FROM requestDetails ORDER BY timestamp DESC LIMIT 1 OFFSET ?",[Math.max(0,b.maxRecords-1)]);d&&a.run("DELETE FROM requestDetails WHERE timestamp < ?",[d.timestamp])})}let Y=null,Z=null;async function $(){if(P||0===N.length)return;P=!0;let a=null;try{for(;N.length>0;){let b=N.splice(0,N.length);try{let a=await (0,e.c)(),c=await M();Y=a,Z=c,X(a,c,b)}catch(c){a=c,N.unshift(...b);break}}}finally{P=!1}a&&console.error("[requestDetailsRepo] Batch write failed:",a)}async function _(a){let b=await M();if(!b.enabled)return;Z=b;try{(0,e.c)().then(a=>{Y=a},()=>{})}catch{}let c=function(a,b){if(!a||"object"!=typeof a)return a;let c={...a};return c.request?.headers&&(c.request={...c.request,headers:function(a){if(!a||"object"!=typeof a)return{};let b=["authorization","x-api-key","x-switchboard-key","cookie","token","api-key"],c={...a};for(let a of Object.keys(c))b.some(b=>a.toLowerCase().includes(b))&&delete c[a];return c}(c.request.headers)}),c.request=W(T(c.request),b),c.providerRequest=W(T(c.providerRequest),b),c.providerResponse=W(T(c.providerResponse),b),c.response=W(T(c.response),b),c.body&&(c.body=W(T(c.body),b)),c.raw&&(c.raw=W(T(c.raw),b)),c}(a,b.maxJsonSize);if(N.length>=b.maxBuffer){N.shift(),R++;let a=Date.now();a-Q>6e4&&(console.warn(`[requestDetailsRepo] observability buffer full (${b.maxBuffer}); dropped ${R} record(s). Raise OBSERVABILITY_MAX_BUFFER or lower OBSERVABILITY_FLUSH_INTERVAL_MS.`),Q=a,R=0)}N.push(c),N.length>=b.batchSize?(O&&(clearTimeout(O),O=null),$().catch(a=>console.error("[requestDetailsRepo] flush err:",a))):O||(O=setTimeout(()=>{O=null,$().catch(()=>{})},b.flushIntervalMs))}async function aa(a={}){let b=await (0,e.c)(),c=[],d=[];a.provider&&(c.push("provider = ?"),d.push(a.provider)),a.model&&(c.push("model = ?"),d.push(a.model)),a.connectionId&&(c.push("connectionId = ?"),d.push(a.connectionId)),a.status&&(c.push("status = ?"),d.push(a.status));let g=a=>{let b=new Date(a).getTime();return Number.isFinite(b)?new Date(b).toISOString():null},h=a.startDate?g(a.startDate):null,i=a.endDate?g(a.endDate):null;h&&(c.push("timestamp >= ?"),d.push(h)),i&&(c.push("timestamp <= ?"),d.push(i));let j=c.length?`WHERE ${c.join(" AND ")}`:"",k=b.get(`SELECT COUNT(*) as c FROM requestDetails ${j}`,d),l=k?k.c:0,m=a.page||1,n=a.pageSize||50,o=Math.ceil(l/n);return{details:b.all(`SELECT data FROM requestDetails ${j} ORDER BY timestamp DESC LIMIT ? OFFSET ?`,[...d,n,(m-1)*n]).map(a=>(0,f.q)(a.data,{})),pagination:{page:m,pageSize:n,totalItems:l,totalPages:o,hasNext:m<o,hasPrev:m>1}}}async function ab(a){let b=(await (0,e.c)()).get("SELECT data FROM requestDetails WHERE id = ?",[a]);return b?(0,f.q)(b.data,null):null}let ac=async()=>{O&&(clearTimeout(O),O=null),N.length>0&&await $()},ad="__switchboardRequestDetailsBeforeExitHandler",ae="__switchboardRequestDetailsSyncFlushUnregister";(d=globalThis[ad])&&process.off("beforeExit",d),globalThis[ad]=ac,process.on("beforeExit",ac);try{let a=globalThis[ae];if("function"==typeof a)try{a()}catch{}globalThis[ae]=(0,I.H)(function(){if(0===N.length)return 0;let a=Y,b=Z;if(!a||!b)return 0;try{O&&(clearTimeout(O),O=null);let c=N.splice(0,N.length);try{X(a,b,c)}catch{return N.unshift(...c),0}return c.length}catch{return 0}},{flush:!0})}catch{}c(44196),c(34772);var af=c(2142);async function ag(){let a=await (0,e.c)(),{exportSettings:b}=await Promise.resolve().then(c.bind(c,42655)),d={settings:await b(),providerConnections:a.all("SELECT * FROM providerConnections").map(a=>({...(0,f.q)(a.data,{}),id:a.id,provider:a.provider,authType:a.authType,name:a.name,email:a.email,priority:a.priority,isActive:1===a.isActive,createdAt:a.createdAt,updatedAt:a.updatedAt})),providerNodes:a.all("SELECT * FROM providerNodes").map(a=>({...(0,f.q)(a.data,{}),id:a.id,type:a.type,name:a.name,createdAt:a.createdAt,updatedAt:a.updatedAt})),proxyPools:a.all("SELECT * FROM proxyPools").map(a=>({...(0,f.q)(a.data,{}),id:a.id,isActive:1===a.isActive,testStatus:a.testStatus,createdAt:a.createdAt,updatedAt:a.updatedAt})),apiKeys:a.all("SELECT * FROM apiKeys").map(a=>({id:a.id,key:a.key,keyPrefix:a.keyPrefix,lookupDigest:a.lookupDigest,name:a.name,machineId:a.machineId,isActive:1===a.isActive,createdAt:a.createdAt,allowedModels:(0,f.q)(a.allowedModels,[]),allowedCombos:(0,f.q)(a.allowedCombos,[]),expiresAt:a.expiresAt||null,rateLimitPerMinute:a.rateLimitPerMinute??null,concurrencyLimit:a.concurrencyLimit??null,spendLimitUsd:a.spendLimitUsd??null,spentUsd:Number(a.spentUsd||0)})),combos:a.all("SELECT * FROM combos").map(a=>({id:a.id,name:a.name,kind:a.kind,models:(0,f.q)(a.models,[]),createdAt:a.createdAt,updatedAt:a.updatedAt})),modelAliases:{},customModels:[],mitmAlias:{},pricing:{}};for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'modelAliases'"))d.modelAliases[b.key]=(0,f.q)(b.value);for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'customModels'"))d.customModels.push((0,f.q)(b.value));for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'mitmAlias'"))d.mitmAlias[b.key]=(0,f.q)(b.value);for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'pricing'"))d.pricing[b.key]=(0,f.q)(b.value);return d}async function ah(a){if(!a||"object"!=typeof a||Array.isArray(a))throw Error("Invalid database payload");let b=await (0,e.c)();return b.transaction(()=>{for(let c of(b.run("DELETE FROM settings"),b.run("DELETE FROM providerConnections"),b.run("DELETE FROM providerNodes"),b.run("DELETE FROM proxyPools"),b.run("DELETE FROM apiKeys"),b.run("DELETE FROM combos"),b.run("DELETE FROM kv WHERE scope IN ('modelAliases', 'customModels', 'mitmAlias', 'pricing')"),a.settings&&b.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,f.s)(a.settings)]),a.providerConnections||[])){let a=(0,g.connToRow)(c);b.run("INSERT OR REPLACE INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[a.id,a.provider,a.authType||"oauth",a.name,a.email,a.priority,a.isActive,a.data,a.createdAt||new Date().toISOString(),a.updatedAt||new Date().toISOString()])}for(let c of a.providerNodes||[]){let{id:a,type:d,name:e,createdAt:g,updatedAt:h,...i}=c;b.run("INSERT OR REPLACE INTO providerNodes(id, type, name, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[a,d||null,e||null,(0,f.s)(i),g||new Date().toISOString(),h||new Date().toISOString()])}for(let c of a.proxyPools||[]){let{id:a,isActive:d,testStatus:e,createdAt:g,updatedAt:h,...i}=c;b.run("INSERT OR REPLACE INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[a,+(!1!==d),e||"unknown",(0,f.s)(i),g||new Date().toISOString(),h||new Date().toISOString()])}for(let c of a.apiKeys||[]){let a=(0,h.Yh)(c.key),d="string"==typeof a&&(0,h.BA)(a).legacy?(0,h.ws)(a):a,e=(0,h.BA)(d);b.run(`INSERT OR REPLACE INTO apiKeys(id, key, keyPrefix, lookupDigest, name, machineId, isActive, createdAt, allowedModels, allowedCombos, expiresAt, rateLimitPerMinute, concurrencyLimit, spendLimitUsd, spentUsd)
|
|
15
15
|
VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[c.id,d,e.prefix||null,e.lookupDigest||null,c.name||null,c.machineId||null,+(!1!==c.isActive),c.createdAt||new Date().toISOString(),null==c.allowedModels?null:(0,f.s)(c.allowedModels),null==c.allowedCombos?null:(0,f.s)(c.allowedCombos),c.expiresAt||null,c.rateLimitPerMinute??null,c.concurrencyLimit??null,c.spendLimitUsd??null,Number(c.spentUsd||0)])}for(let c of a.combos||[])b.run("INSERT OR REPLACE INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c.id,c.name,c.kind||null,(0,f.s)(c.models||[]),c.createdAt||new Date().toISOString(),c.updatedAt||new Date().toISOString()]);for(let[c,d]of Object.entries(a.modelAliases||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('modelAliases', ?, ?)",[c,(0,f.s)(d)]);for(let c of a.customModels||[]){let a=`${c.providerAlias}|${c.id}|${c.type||"llm"}`;b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[a,(0,f.s)(c)])}for(let[c,d]of Object.entries(a.mitmAlias||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('mitmAlias', ?, ?)",[c,(0,f.s)(d||{})]);for(let[c,d]of Object.entries(a.pricing||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('pricing', ?, ?)",[c,(0,f.s)(d||{})])}),(0,i.bI)(),await ag()}},19956:(a,b,c)=>{c.d(b,{h:()=>d,t:()=>e});let d={OPENAI:"openai",OPENAI_RESPONSES:"openai-responses",OPENAI_RESPONSE:"openai-response",CLAUDE:"claude",GEMINI:"gemini",GEMINI_CLI:"gemini-cli",VERTEX:"vertex",CODEX:"codex",ANTIGRAVITY:"antigravity",KIRO:"kiro",CURSOR:"cursor",OLLAMA:"ollama",COMMANDCODE:"commandcode"};function e(a,b){return a.includes("/v1/responses")?d.OPENAI_RESPONSES:a.includes("/v1/messages")?d.CLAUDE:a.includes("/v1/chat/completions")&&Array.isArray(b?.input)?d.OPENAI:null}},22846:(a,b,c)=>{c.d(b,{U:()=>f});var d=c(36366),e=c(644);function f(a){return{async get(b,c=null){let f=(await (0,d.c)()).get("SELECT value FROM kv WHERE scope = ? AND key = ?",[a,b]);return f?(0,e.q)(f.value,c):c},async getAll(){let b=(await (0,d.c)()).all("SELECT key, value FROM kv WHERE scope = ?",[a]),c={};for(let a of b)c[a.key]=(0,e.q)(a.value);return c},async set(b,c){(await (0,d.c)()).run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,b,(0,e.s)(c)])},async setMany(b){let c=await (0,d.c)();c.transaction(()=>{for(let[d,f]of Object.entries(b))c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,d,(0,e.s)(f)])})},async remove(b){(await (0,d.c)()).run("DELETE FROM kv WHERE scope = ? AND key = ?",[a,b])},async clear(){(await (0,d.c)()).run("DELETE FROM kv WHERE scope = ?",[a])}}}},23832:(a,b,c)=>{c.d(b,{E5:()=>F,U_:()=>y,rg:()=>x,j$:()=>E,b7:()=>w,vY:()=>B,Zx:()=>G,Jo:()=>C,BY:()=>D,sZ:()=>z,_V:()=>o,uw:()=>v});var d=c(94735),e=c(36366),f=c(644),g=c(5125),h=c(73274),i=c(2903);global._pendingRequests||(global._pendingRequests={byModel:{},byAccount:{}}),global._lastErrorProvider||(global._lastErrorProvider={provider:"",ts:0}),global._statsEmitter||(global._statsEmitter=new d.EventEmitter,global._statsEmitter.setMaxListeners(50)),global._recentRing||(global._recentRing={items:[],initialized:!1}),global._connectionMapCache||(global._connectionMapCache={map:{},ts:0}),global._statsEmitTimers||(global._statsEmitTimers={pending:null,update:null});let j=global._pendingRequests,k=global._lastErrorProvider,l=global._recentRing,m=global._connectionMapCache,n=global._statsEmitTimers,o=global._statsEmitter;function p(a,b=150){let c="update"===a?"update":"pending";n[c]||(n[c]=setTimeout(()=>{n[c]=null,o.emit(a)},b),n[c]?.unref?.())}function q(a){if(!a||null!==Object.getPrototypeOf(a)){let b=Object.create(null);return a&&Object.assign(b,a),b}return a}function r(a,b,c){let d=function(a){if(null==a)return null;let b=String(a);return"__proto__"===b||"constructor"===b||"prototype"===b?`__safe_${b}`:b}(b);null!=d&&(a[d]||(a[d]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0}),a[d].requests+=c.requests||1,a[d].promptTokens+=c.promptTokens||0,a[d].completionTokens+=c.completionTokens||0,a[d].cachedTokens+=c.cachedTokens||0,a[d].cost+=c.cost||0,c.meta&&Object.assign(a[d],c.meta))}async function s(){if(Date.now()-m.ts<3e4)return m.map;try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,5781)),b=await a(),d={};for(let a of b)d[a.id]=a.name||a.email||a.id;m.map=d,m.ts=Date.now()}catch{}return m.map}async function t(){if(!l.initialized){l.initialized=!0;try{l.items=(await (0,e.c)()).all("SELECT timestamp, provider, model, connectionId, clientKeyId, endpoint, cost, status, tokens FROM usageHistory ORDER BY id DESC LIMIT ?",[50]).reverse().map(a=>({timestamp:a.timestamp,provider:a.provider,model:a.model,connectionId:a.connectionId,clientKeyId:a.clientKeyId,endpoint:a.endpoint,cost:a.cost,status:a.status,tokens:(0,f.q)(a.tokens,{})}))}catch{}}}async function u(a,b,d){if(!d||!a||!b)return 0;try{let{getPricingForModel:e}=await Promise.resolve().then(c.bind(c,97914)),f=await e(a,b);if(!f)return 0;let{calculateCostFromTokens:g}=await c.e(4646).then(c.bind(c,84646));return g(d,f)}catch(a){return console.error("Error calculating cost:",a),0}}function v(a,b,c,d,e=!1){let f=b?`${a} (${b})`:a;j.byModel[f]||(j.byModel[f]=0),j.byModel[f]=Math.max(0,j.byModel[f]+(d?1:-1)),0===j.byModel[f]&&delete j.byModel[f],c&&(j.byAccount[c]||(j.byAccount[c]={}),j.byAccount[c][f]||(j.byAccount[c][f]=0),j.byAccount[c][f]=Math.max(0,j.byAccount[c][f]+(d?1:-1)),0===j.byAccount[c][f]&&(delete j.byAccount[c][f],0===Object.keys(j.byAccount[c]).length&&delete j.byAccount[c])),!d&&e&&b&&(k.provider=b.toLowerCase(),k.ts=Date.now());let g=new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"});console.log(`[${g}] [PENDING] ${d?"START":"END"}${e?" (ERROR)":""} | provider=${b} | model=${a}`),p("pending")}function w(a){let b=j.byAccount[a];if(!b)return 0;let c=0;for(let a in b){let d=Number(b[a]);Number.isFinite(d)&&d>0&&(c+=d)}return c}async function x(){let a=[],b=await s();for(let[c,d]of Object.entries(j.byAccount))for(let[e,f]of Object.entries(d))if(f>0){let d=b[c]||`Account ${c.slice(0,8)}...`,g=e.match(/^(.*) \((.*)\)$/);a.push({model:g?g[1]:e,provider:g?g[2]:"unknown",account:d,count:f})}await t();let c=new Set;return{activeRequests:a,recentRequests:[...l.items].sort((a,b)=>new Date(b.timestamp)-new Date(a.timestamp)).map(a=>{let b=a.tokens||{};return{timestamp:a.timestamp,model:a.model,provider:a.provider||"",promptTokens:b.prompt_tokens||b.input_tokens||0,completionTokens:b.completion_tokens||b.output_tokens||0,status:a.status||"ok"}}).filter(a=>{if(0===a.promptTokens&&0===a.completionTokens)return!1;let b=a.timestamp?a.timestamp.slice(0,16):"",d=`${a.model}|${a.provider}|${a.promptTokens}|${a.completionTokens}|${b}`;return!c.has(d)&&(c.add(d),!0)}).slice(0,20),errorProvider:Date.now()-k.ts<1e4?k.provider:"",pending:j}}function y(){let a=new Map;for(let b of Object.values(j.byAccount))for(let[c,d]of Object.entries(b)){if(d<=0)continue;let b=c.match(/^(.*) \((.*)\)$/),e=b?.[2]||"unknown";a.set(e,(a.get(e)||0)+d)}return{activeRequests:[...a.entries()].sort(([a],[b])=>a.localeCompare(b)).map(([a,b])=>({provider:a,count:b}))}}async function z(a){try{let b=await (0,e.c)();a.timestamp||(a.timestamp=new Date().toISOString()),a.cost=await u(a.provider,a.model,a.tokens);let c=a.tokens||{},d=(0,h.T)(c.prompt_tokens||c.input_tokens||0,"usage.promptTokens",{integer:!0}),j=(0,h.T)(c.completion_tokens||c.output_tokens||0,"usage.completionTokens",{integer:!0}),k=(0,h.T)(c.cached_tokens||c.cache_read_input_tokens||0,"usage.cachedTokens",{integer:!0}),m=(0,h.T)(a.cost,"usage.cost"),n=!1;(b.transaction(()=>{var e;let h,l,o,p,s,t,u,v,w,x,y,z,A=a.requestId||null;if(A&&b.get("SELECT id FROM usageHistory WHERE requestId = ?",[A]))return;b.run("INSERT INTO usageHistory(timestamp, provider, model, connectionId, clientKeyId, endpoint, promptTokens, completionTokens, cachedTokens, cost, status, tokens, meta, requestId) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[a.timestamp,a.provider||null,a.model||null,a.connectionId||null,a.clientKeyId||null,a.endpoint||null,d,j,k,a.cost||0,a.status||"ok",(0,f.s)(c),(0,f.s)({}),A]),a.clientKeyId&&b.run("UPDATE apiKeys SET spentUsd = spentUsd + ? WHERE id = ?",[Number(a.cost||0),a.clientKeyId]);let B=parseInt(process.env.USAGE_HISTORY_MAX||"50000",10),C=b.get("SELECT value FROM _meta WHERE key = 'usageHistoryCount'");if(C?.value!=null?(h=parseInt(C.value,10)+1,b.run("UPDATE _meta SET value = CAST(value AS INTEGER) + 1 WHERE key = 'usageHistoryCount'")):(h=b.get("SELECT COUNT(*) AS c FROM usageHistory")?.c||0,b.run("INSERT INTO _meta(key, value) VALUES('usageHistoryCount', ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",[String(h)])),Number.isFinite(B)&&B>0&&h>B){let a=h-B;b.run("DELETE FROM usageHistory WHERE id IN (SELECT id FROM usageHistory ORDER BY id ASC LIMIT ?)",[a]),b.run("INSERT INTO _meta(key, value) VALUES('usageHistoryCount', ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",[String(B)])}let D=(l=(e=a.timestamp)?new Date(e):new Date,`${l.getFullYear()}-${String(l.getMonth()+1).padStart(2,"0")}-${String(l.getDate()).padStart(2,"0")}`),E=b.get("SELECT data FROM usageDaily WHERE dateKey = ?",[D]),F=E?(0,f.q)(E.data,{}):{requests:0,promptTokens:0,completionTokens:0,cost:0,byProvider:{},byModel:{},byAccount:{},byClientKey:{},byEndpoint:{}};o=a.tokens?.prompt_tokens||a.tokens?.input_tokens||0,p=a.tokens?.completion_tokens||a.tokens?.output_tokens||0,s=a.tokens?.cached_tokens||a.tokens?.cache_read_input_tokens||0,t=a.cost||0,u={promptTokens:o,completionTokens:p,cachedTokens:s,cost:t},F.requests=(F.requests||0)+1,F.promptTokens=(F.promptTokens||0)+o,F.completionTokens=(F.completionTokens||0)+p,F.cachedTokens=(F.cachedTokens||0)+s,F.cost=(F.cost||0)+t,F.byProvider=q(F.byProvider||{}),F.byModel=q(F.byModel||{}),F.byAccount=q(F.byAccount||{}),F.byClientKey=q(F.byClientKey||{}),F.byEndpoint=q(F.byEndpoint||{}),a.provider&&r(F.byProvider,a.provider,u),v=a.provider?`${a.model}|${a.provider}`:a.model,r(F.byModel,v,{...u,meta:{rawModel:a.model,provider:a.provider}}),a.connectionId&&r(F.byAccount,a.connectionId,{...u,meta:{rawModel:a.model,provider:a.provider}}),w=a.clientKeyId&&"string"==typeof a.clientKeyId?a.clientKeyId:null,x=`${w||"local-no-key"}|${a.model}|${a.provider||"unknown"}`,r(F.byClientKey,x,{...u,meta:{rawModel:a.model,provider:a.provider,clientKeyId:w}}),y=a.endpoint||"Unknown",z=`${y}|${a.model}|${a.provider||"unknown"}`,r(F.byEndpoint,z,{...u,meta:{endpoint:y,rawModel:a.model,provider:a.provider}}),b.run("INSERT INTO usageDaily(dateKey, data) VALUES(?, ?) ON CONFLICT(dateKey) DO UPDATE SET data = excluded.data",[D,(0,f.s)(F)]),(0,g.Bq)(b,()=>{let c=(0,i.ry)(b,a.provider)?a.provider:"unknown",e=b.get(`SELECT provider, requests, promptTokens, completionTokens, cachedTokens, cost
|
|
16
16
|
FROM prometheusUsageTotals WHERE provider = ?`,[c]);e&&(0,g.Kd)(e),e&&(0,g.Kd)({provider:c,requests:e.requests+1,promptTokens:e.promptTokens+d,completionTokens:e.completionTokens+j,cachedTokens:e.cachedTokens+k,cost:e.cost+m}),b.run(`INSERT INTO prometheusUsageTotals(provider, requests, promptTokens, completionTokens, cachedTokens, cost)
|
|
17
17
|
VALUES(?, 1, ?, ?, ?, ?)
|
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
promptTokens = promptTokens + excluded.promptTokens,
|
|
8
8
|
completionTokens = completionTokens + excluded.completionTokens,
|
|
9
9
|
cachedTokens = cachedTokens + excluded.cachedTokens,
|
|
10
|
-
cost = cost + excluded.cost`,[c.requests,c.promptTokens,c.completionTokens,c.cachedTokens,c.cost]),a.run("DELETE FROM prometheusUsageTotals WHERE provider = ?",[b])})}},5781:(a,b,c)=>{c.r(b),c.d(b,{DEFAULT_QUOTA_FRESH_MS:()=>
|
|
10
|
+
cost = cost + excluded.cost`,[c.requests,c.promptTokens,c.completionTokens,c.cachedTokens,c.cost]),a.run("DELETE FROM prometheusUsageTotals WHERE provider = ?",[b])})}},5781:(a,b,c)=>{c.r(b),c.d(b,{DEFAULT_QUOTA_FRESH_MS:()=>m,cleanupProviderConnections:()=>I,connToRow:()=>s,createProviderConnection:()=>y,deleteProviderConnection:()=>F,deleteProviderConnectionsByProvider:()=>G,getProviderConnectionById:()=>v,getProviderConnections:()=>u,getProviderQuotaHeadroom:()=>w,redactSecrets:()=>q,reorderProviderConnections:()=>H,updateProviderConnection:()=>z,updateProviderConnectionCredentialsIfCurrent:()=>E,updateProviderConnectionStatusIfCurrent:()=>C});var d=c(11841),e=c(95812),f=c(47293),g=c(60290),h=c(36366),i=c(644),j=c(38044),k=c(30869),l=c(2903);let m=2*k.oc.tickIntervalMs,n=["displayName","email","globalPriority","defaultModel","accessToken","refreshToken","expiresAt","tokenType","scope","projectId","apiKey","testStatus","lastTested","lastError","lastErrorAt","rateLimitedUntil","expiresIn","errorCode","consecutiveUseCount","idToken","lastRefreshAt"],o=new Set(["accessToken","refreshToken","idToken","apiKey","copilotToken","cookies","clientSecret","secretAccessKey"]);function p(a,b,c=!1){return"string"==typeof a?c&&a?b(a):a:c&&null!==a&&"object"!=typeof a?void 0:Array.isArray(a)?a.map(a=>p(a,b,c)):a&&"object"==typeof a?Object.fromEntries(Object.entries(a).map(([a,d])=>[a,p(d,b,c||o.has(a))])):a}function q(a){return p(a,()=>void 0)}function r(a){return a?{...p((0,i.q)(a.data,{}),a=>(0,j.wu)(a)??a),id:a.id,provider:a.provider,authType:a.authType,name:a.name,email:a.email,priority:a.priority,isActive:1===a.isActive||!0===a.isActive,createdAt:a.createdAt,updatedAt:a.updatedAt}:null}function s(a){let{id:b,provider:c,authType:d,name:e,email:f,priority:g,isActive:h,createdAt:k,updatedAt:l,...m}=a,n=p(m,j.MG);return{id:b,provider:c,authType:d,name:e??null,email:f??null,priority:g??null,isActive:+(!1!==h),data:(0,i.s)(n),createdAt:k,updatedAt:l}}function t(a,b){let c=s(b);a.run(`INSERT INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt)
|
|
11
11
|
VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
12
12
|
ON CONFLICT(id) DO UPDATE SET
|
|
13
13
|
provider=excluded.provider, authType=excluded.authType, name=excluded.name,
|
|
14
14
|
email=excluded.email, priority=excluded.priority, isActive=excluded.isActive,
|
|
15
|
-
data=excluded.data, updatedAt=excluded.updatedAt`,[c.id,c.provider,c.authType,c.name,c.email,c.priority,c.isActive,c.data,c.createdAt,c.updatedAt])}async function s(a={}){let b=await (0,f.c)(),c=[],d=[];a.provider&&(c.push("provider = ?"),d.push(a.provider)),void 0!==a.isActive&&(c.push("isActive = ?"),d.push(+!!a.isActive));let e=`SELECT * FROM providerConnections${c.length?` WHERE ${c.join(" AND ")}`:""}`,g=b.all(e,d).map(p);return g.sort((a,b)=>(a.priority??999)-(b.priority??999)),g}async function t(a){return p((await (0,f.c)()).get("SELECT * FROM providerConnections WHERE id = ?",[a]))}async function u(a=k){try{let b=Object.create(null),c=Number.isFinite(a)?a:k,d=Date.now();for(let a of(await s())){let e=a.lastQuota,f=Number(e?.at),g=Number(e?.remainingPercentage);if(!Number.isFinite(f)||d-f>c||!Number.isFinite(g))continue;let h=b[a.provider];(!Number.isFinite(h)||g>h)&&(b[a.provider]=g)}return b}catch{return{}}}function v(a,b){let c=a.all("SELECT * FROM providerConnections WHERE provider = ?",[b]).map(p);c.sort((a,b)=>{let c=(a.priority??999)-(b.priority??999);return 0!==c?c:new Date(b.updatedAt||0)-new Date(a.updatedAt||0)}),c.forEach((b,c)=>{a.run("UPDATE providerConnections SET priority = ? WHERE id = ?",[c+1,b.id])})}async function w(a){let b,c=await (0,f.c)(),e=new Date().toISOString();return c.transaction(()=>{let f=c.all("SELECT * FROM providerConnections WHERE provider = ?",[a.provider]).map(p),g=null;if("oauth"===a.authType&&a.email){let b=a.providerSpecificData?.username,c=a.providerSpecificData?.chatgptAccountId;g=f.find(d=>{if("oauth"!==d.authType||d.email!==a.email)return!1;let e=d.providerSpecificData?.chatgptAccountId;if(c&&e)return c===e;if(c&&!e||!c&&e)return!1;let f=d.providerSpecificData?.username;return b&&f?b===f:!b&&!f})}else"apikey"===a.authType&&a.name&&(g=f.find(b=>"apikey"===b.authType&&b.name===a.name));if(g){let d={...g,...a,updatedAt:e};r(c,d),b=d;return}let h=a.name||null;h||"oauth"!==a.authType&&"access_token"!==a.authType||(h=a.email||`Account ${f.length+1}`);let i=a.priority;null==i&&(i=f.reduce((a,b)=>Math.max(a,b.priority||0),0)+1);let j={id:(0,d.A)(),provider:a.provider,authType:a.authType||"oauth",name:h,priority:i,isActive:void 0===a.isActive||a.isActive,createdAt:e,updatedAt:e};for(let b of l)void 0!==a[b]&&null!==a[b]&&(j[b]=a[b]);a.providerSpecificData&&Object.keys(a.providerSpecificData).length>0&&(j.providerSpecificData=a.providerSpecificData),void 0!==a.email&&(j.email=a.email),r(c,j),v(c,a.provider),b=j}),b}async function x(a,b){let c,d=await (0,f.c)();return d.transaction(()=>{let e=d.get("SELECT * FROM providerConnections WHERE id = ?",[a]);if(!e){c=null;return}let f=p(e),g={...f,...b,updatedAt:new Date().toISOString()};r(d,g),f.provider!==g.provider&&(0,j.uQ)(d,f.provider),void 0!==b.priority&&v(d,f.provider),c=g}),c}let y=["testStatus","lastError","lastErrorAt","errorCode","backoffLevel","rateLimitedUntil"],z="modelLock_";async function A(a,b,c){if(!b||"object"!=typeof b||!c||"object"!=typeof c)throw TypeError("An account status snapshot and patch are required");if(Object.keys(c).some(a=>!y.includes(a)&&!a.startsWith(z)))throw TypeError("Only account status and model locks may be updated conditionally");let d=await (0,f.c)(),e=null;try{d.transaction(()=>{let f=d.get("SELECT * FROM providerConnections WHERE id = ?",[a]);if(!f)return;let g=p(f);if([...new Set([...y,"provider","isActive",...Object.keys(b).filter(a=>a.startsWith(z)),...Object.keys(g).filter(a=>a.startsWith(z))])].some(a=>(g[a]??null)!==(b[a]??null)))return;let h={...g,...c,updatedAt:new Date().toISOString()},i=q(h);d.run("UPDATE providerConnections SET data = ?, updatedAt = ? WHERE id = ? AND data = ? AND updatedAt = ?",[i.data,i.updatedAt,a,f.data,f.updatedAt]).changes>0&&(e=h)})}catch(a){if(a?.code!=="SQLITE_BUSY_SNAPSHOT"&&a?.errcode!==517)throw a}return e}let B=["accessToken","refreshToken","idToken","expiresAt","expiresIn","lastRefreshAt","providerSpecificData","updatedAt","projectId"];async function C(a,b,c){if(!b||!c||Object.keys(c).some(a=>!B.includes(a)))throw TypeError("A credential snapshot and credential-only patch are required");let d=await (0,f.c)(),g=null;for(let f=0;f<e.tx;f++){try{d.transaction(()=>{let e=d.get("SELECT * FROM providerConnections WHERE id = ?",[a]);if(!e)return;let f=p(e);if(["provider","authType","accessToken","refreshToken","idToken","expiresAt","lastRefreshAt"].some(a=>(f[a]??null)!==(b[a]??null))||["copilotToken","copilotTokenExpiresAt"].some(a=>(f.providerSpecificData?.[a]??null)!==(b.providerSpecificData?.[a]??null)))return;let h={...f,...c,updatedAt:new Date().toISOString(),...c.providerSpecificData?{providerSpecificData:{...f.providerSpecificData,...c.providerSpecificData}}:{}},i=q(h);d.run("UPDATE providerConnections SET data = ?, updatedAt = ? WHERE id = ? AND data = ? AND updatedAt = ?",[i.data,i.updatedAt,a,e.data,e.updatedAt]).changes>0&&(g=h)})}catch(a){if(a?.code!=="SQLITE_BUSY_SNAPSHOT"&&a?.errcode!==517)throw a;continue}return g}return null}async function D(a){let b=await (0,f.c)(),c=!1;return b.transaction(()=>{let d=b.get("SELECT provider FROM providerConnections WHERE id = ?",[a]);d&&(b.run("DELETE FROM providerConnections WHERE id = ?",[a]),v(b,d.provider),(0,j.uQ)(b,d.provider),c=!0)}),c}async function E(a){let b=await (0,f.c)(),c=0;return b.transaction(()=>{c=b.get("SELECT COUNT(*) AS n FROM providerConnections WHERE provider = ?",[a])?.n||0,b.run("DELETE FROM providerConnections WHERE provider = ?",[a]),(0,j.uQ)(b,a)}),c}async function F(a){let b=await (0,f.c)();b.transaction(()=>v(b,a))}async function G(){let a=await (0,f.c)(),b=["displayName","email","globalPriority","defaultModel","accessToken","refreshToken","expiresAt","tokenType","scope","projectId","apiKey","testStatus","lastTested","lastError","lastErrorAt","rateLimitedUntil","expiresIn","consecutiveUseCount"],c=0;return a.transaction(()=>{for(let d of a.all("SELECT * FROM providerConnections")){let e=p(d),f=!1;for(let a of b)(null===e[a]||void 0===e[a])&&a in e&&(delete e[a],c++,f=!0);e.providerSpecificData&&0===Object.keys(e.providerSpecificData).length&&(delete e.providerSpecificData,c++,f=!0),f&&r(a,e)}}),c}},38044:(a,b,c)=>{c.d(b,{BA:()=>C,E8:()=>x,MG:()=>u,O0:()=>E,Yh:()=>B,cb:()=>z,lO:()=>D,ue:()=>F,ws:()=>A,wu:()=>v});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(49120);let k="aes-256-gcm",l="enc:v1:",m="enc:v2:",n=i().join(j.nJ,"auth","data-key"),o=i().join(j.nJ,"auth","cli-secret"),p="switchboard-at-rest-v1",q=null,r=null;function s(){if(q)return q;try{let a=g().readFileSync(n);if(32===a.length)return q=a}catch{}try{let a=i().join(j.nJ,"machine-id"),b=p;try{b=g().readFileSync(a,"utf8").trim()+p}catch{}q=b===p?e().randomBytes(32):e().createHash("sha256").update(b).digest()}catch{q=e().randomBytes(32)}try{g().mkdirSync(i().dirname(n),{recursive:!0,mode:448}),g().writeFileSync(n,q,{mode:384})}catch{}return q}function t(){let a=function(){if(r)return r;try{if(r=g().readFileSync(o,"utf8").trim()||null)return r}catch{}let a=e().randomBytes(32).toString("hex");try{g().mkdirSync(i().dirname(o),{recursive:!0,mode:448}),g().writeFileSync(o,a,{mode:384,flag:"wx"}),r=a}catch{try{r=g().readFileSync(o,"utf8").trim()||null}catch{r=null}}return r}();return a?e().createHash("sha256").update(s()).update(a,"utf8").digest():null}function u(a){if(null==a||""===a||"string"!=typeof a||a.startsWith(l)||a.startsWith(m))return a;let b=t(),c=b||s(),d=e().randomBytes(12),f=e().createCipheriv(k,c,d),g=Buffer.concat([f.update(a,"utf8"),f.final()]),h=f.getAuthTag();return`${b?m:l}${d.toString("hex")}:${h.toString("hex")}:${g.toString("hex")}`}function v(a){if(null==a||""===a||"string"!=typeof a)return a;let b=a.startsWith(m);if(!b&&!a.startsWith(l))return a;try{let[c,d,f]=a.slice(m.length).split(":");if(!c||!d||!f)return null;let g=b?t():s();if(!g)return null;let h=e().createDecipheriv(k,g,Buffer.from(c,"hex"));return h.setAuthTag(Buffer.from(d,"hex")),h.update(Buffer.from(f,"hex"),void 0,"utf8")+h.final("utf8")}catch{return null}}function w(a){return e().createHash("sha256").update(`sb-key:${a}`).digest("hex")}function x(a){return a&&"string"==typeof a?a.length<=12?a.slice(0,4)+"…":a.slice(0,10)+"…":""}function y(a){return"string"==typeof a&&/^[a-f0-9]{32}$/.test(a)?e().createHash("sha256").update(`sb-key-lookup:${a}`).digest("hex"):null}function z(a){if("string"!=typeof a)return null;let b=a.split("-");return 4===b.length&&"sk"===b[0]&&b[1]&&/^[a-f0-9]{8}$/.test(b[3])?y(b[2]):null}function A(a,b=z(a)){if(!b)return`v1:${x(a)}:${w(a)}`;let c=e().randomBytes(16),d=e().scryptSync(a,c,32,{N:16384,r:8,p:1,maxmem:0x4000000});return`v2:${b}:${x(a)}:${c.toString("hex")}:${d.toString("hex")}`}function B(a){if("string"!=typeof a||!a.startsWith("v2:"))return a;let b=a.split(":");if(5!==b.length||!/^[a-f0-9]{32}$/.test(b[1]))return a;let c=y(b[1]);return`v2:${c}:${b[2]}:${b[3]}:${b[4]}`}function C(a){if(!a||"string"!=typeof a)return{version:0,lookupDigest:null,prefix:"",hash:null,salt:null,legacy:!0,raw:a};let b=B(a),c=b.split(":");return b.startsWith("v2:")&&5===c.length?{version:2,lookupDigest:/^[a-f0-9]{64}$/.test(c[1])?c[1]:null,prefix:c[2],salt:c[3],hash:c[4],legacy:!1,raw:null}:b.startsWith("v2:")&&4===c.length?{version:2,lookupDigest:null,prefix:c[1],salt:c[2],hash:c[3],legacy:!1,raw:null}:b.startsWith("v1:")&&c.length>=3?{version:1,lookupDigest:null,prefix:c[1],salt:null,hash:c.slice(2).join(":"),legacy:!1,raw:null}:{version:0,lookupDigest:z(b),prefix:x(b),hash:null,salt:null,legacy:!0,raw:b}}function D(a,b){if("string"!=typeof a||"string"!=typeof b)return!1;let c=e().createHash("sha256").update(a).digest(),d=e().createHash("sha256").update(b).digest();return e().timingSafeEqual(c,d)}function E(a,b){if(!b||"string"!=typeof b)return!1;let c=C(a);if(c.legacy)return D(String(c.raw||""),b);if(1===c.version)return!!c.hash&&D(c.hash,w(b));if(!c.salt||!c.hash)return!1;try{let a=e().scryptSync(b,Buffer.from(c.salt,"hex"),32,{N:16384,r:8,p:1,maxmem:0x4000000});return D(a.toString("hex"),c.hash)}catch{return!1}}async function F(a,b){if(!b||"string"!=typeof b)return!1;let c=C(a);if(2!==c.version)return E(a,b);if(!c.salt||!c.hash)return!1;try{let a=await new Promise((a,d)=>{e().scrypt(b,Buffer.from(c.salt,"hex"),32,{N:16384,r:8,p:1,maxmem:0x4000000},(b,c)=>{b?d(b):a(c)})});return D(a.toString("hex"),c.hash)}catch{return!1}}}};
|
|
15
|
+
data=excluded.data, updatedAt=excluded.updatedAt`,[c.id,c.provider,c.authType,c.name,c.email,c.priority,c.isActive,c.data,c.createdAt,c.updatedAt])}async function u(a={}){let b=await (0,h.c)(),c=[],d=[];a.provider&&(c.push("provider = ?"),d.push(a.provider)),void 0!==a.isActive&&(c.push("isActive = ?"),d.push(+!!a.isActive));let e=`SELECT * FROM providerConnections${c.length?` WHERE ${c.join(" AND ")}`:""}`,f=b.all(e,d).map(r);return f.sort((a,b)=>(a.priority??999)-(b.priority??999)),f}async function v(a){return r((await (0,h.c)()).get("SELECT * FROM providerConnections WHERE id = ?",[a]))}async function w(a=m){try{let b=Object.create(null),c=Number.isFinite(a)?a:m,d=Date.now();for(let a of(await u())){let f=a.lastQuota;if(!1===a.isActive)continue;let g=(0,e.Gv)(f?.at),h=(0,e.Gv)(f?.remainingPercentage),i=f?.resetAt?Date.parse(f.resetAt):NaN;if(Number.isFinite(i)&&i<=d||null===g||g>d||d-g>c||null===h||h<0||h>100)continue;let j=b[a.provider];(!Number.isFinite(j)||h>j)&&(b[a.provider]=h)}return b}catch{return{}}}function x(a,b){let c=a.all("SELECT * FROM providerConnections WHERE provider = ?",[b]).map(r);c.sort((a,b)=>{let c=(a.priority??999)-(b.priority??999);return 0!==c?c:new Date(b.updatedAt||0)-new Date(a.updatedAt||0)}),c.forEach((b,c)=>{a.run("UPDATE providerConnections SET priority = ? WHERE id = ?",[c+1,b.id])})}async function y(a){let b,c=await (0,h.c)(),d=new Date().toISOString();return c.transaction(()=>{let e=c.all("SELECT * FROM providerConnections WHERE provider = ?",[a.provider]).map(r),g=null;if("oauth"===a.authType&&a.email){let b=a.providerSpecificData?.username,c=a.providerSpecificData?.chatgptAccountId;g=e.find(d=>{if("oauth"!==d.authType||d.email!==a.email)return!1;let e=d.providerSpecificData?.chatgptAccountId;if(c&&e)return c===e;if(c&&!e||!c&&e)return!1;let f=d.providerSpecificData?.username;return b&&f?b===f:!b&&!f})}else"apikey"===a.authType&&a.name&&(g=e.find(b=>"apikey"===b.authType&&b.name===a.name));if(g){let e={...g,...a,updatedAt:d};t(c,e),b=e;return}let h=a.name||null;h||"oauth"!==a.authType&&"access_token"!==a.authType||(h=a.email||`Account ${e.length+1}`);let i=a.priority;null==i&&(i=e.reduce((a,b)=>Math.max(a,b.priority||0),0)+1);let j={id:(0,f.A)(),provider:a.provider,authType:a.authType||"oauth",name:h,priority:i,isActive:void 0===a.isActive||a.isActive,createdAt:d,updatedAt:d};for(let b of n)void 0!==a[b]&&null!==a[b]&&(j[b]=a[b]);a.providerSpecificData&&Object.keys(a.providerSpecificData).length>0&&(j.providerSpecificData=a.providerSpecificData),void 0!==a.email&&(j.email=a.email),t(c,j),x(c,a.provider),b=j}),b}async function z(a,b){let c,e=await (0,h.c)();return e.transaction(()=>{let f=e.get("SELECT * FROM providerConnections WHERE id = ?",[a]);if(!f){c=null;return}let g=r(f),h={...g,...b,updatedAt:new Date().toISOString()},i=JSON.stringify((0,d.AN)(g))!==JSON.stringify((0,d.AN)(h)),j=["accessToken","apiKey","refreshToken"].some(a=>void 0!==b[a]&&b[a]!==g[a]);(i||j)&&(h.lastQuota=null),t(e,h),g.provider!==h.provider&&(0,l.uQ)(e,g.provider),void 0!==b.priority&&x(e,g.provider),c=h}),c}let A=["testStatus","lastError","lastErrorAt","errorCode","backoffLevel","rateLimitedUntil"],B="modelLock_";async function C(a,b,c){if(!b||"object"!=typeof b||!c||"object"!=typeof c)throw TypeError("An account status snapshot and patch are required");if(Object.keys(c).some(a=>!A.includes(a)&&!a.startsWith(B)))throw TypeError("Only account status and model locks may be updated conditionally");let d=await (0,h.c)(),e=null;try{d.transaction(()=>{let f=d.get("SELECT * FROM providerConnections WHERE id = ?",[a]);if(!f)return;let g=r(f);if([...new Set([...A,"provider","isActive",...Object.keys(b).filter(a=>a.startsWith(B)),...Object.keys(g).filter(a=>a.startsWith(B))])].some(a=>(g[a]??null)!==(b[a]??null)))return;let h={...g,...c,updatedAt:new Date().toISOString()},i=s(h);d.run("UPDATE providerConnections SET data = ?, updatedAt = ? WHERE id = ? AND data = ? AND updatedAt = ?",[i.data,i.updatedAt,a,f.data,f.updatedAt]).changes>0&&(e=h)})}catch(a){if(a?.code!=="SQLITE_BUSY_SNAPSHOT"&&a?.errcode!==517)throw a}return e}let D=["accessToken","refreshToken","idToken","expiresAt","expiresIn","lastRefreshAt","providerSpecificData","updatedAt","projectId"];async function E(a,b,c){if(!b||!c||Object.keys(c).some(a=>!D.includes(a)))throw TypeError("A credential snapshot and credential-only patch are required");let e=await (0,h.c)(),f=null;for(let h=0;h<g.tx;h++){try{e.transaction(()=>{let g=e.get("SELECT * FROM providerConnections WHERE id = ?",[a]);if(!g)return;let h=r(g);if(["provider","authType","accessToken","refreshToken","idToken","expiresAt","lastRefreshAt"].some(a=>(h[a]??null)!==(b[a]??null))||["copilotToken","copilotTokenExpiresAt"].some(a=>(h.providerSpecificData?.[a]??null)!==(b.providerSpecificData?.[a]??null)))return;let i={...h,...c,updatedAt:new Date().toISOString(),...c.providerSpecificData?{providerSpecificData:{...h.providerSpecificData,...c.providerSpecificData}}:{}};JSON.stringify((0,d.AN)(h))!==JSON.stringify((0,d.AN)(i))&&(i.lastQuota=null);let j=s(i);e.run("UPDATE providerConnections SET data = ?, updatedAt = ? WHERE id = ? AND data = ? AND updatedAt = ?",[j.data,j.updatedAt,a,g.data,g.updatedAt]).changes>0&&(f=i)})}catch(a){if(a?.code!=="SQLITE_BUSY_SNAPSHOT"&&a?.errcode!==517)throw a;continue}return f}return null}async function F(a){let b=await (0,h.c)(),c=!1;return b.transaction(()=>{let d=b.get("SELECT provider FROM providerConnections WHERE id = ?",[a]);d&&(b.run("DELETE FROM providerConnections WHERE id = ?",[a]),x(b,d.provider),(0,l.uQ)(b,d.provider),c=!0)}),c}async function G(a){let b=await (0,h.c)(),c=0;return b.transaction(()=>{c=b.get("SELECT COUNT(*) AS n FROM providerConnections WHERE provider = ?",[a])?.n||0,b.run("DELETE FROM providerConnections WHERE provider = ?",[a]),(0,l.uQ)(b,a)}),c}async function H(a){let b=await (0,h.c)();b.transaction(()=>x(b,a))}async function I(){let a=await (0,h.c)(),b=["displayName","email","globalPriority","defaultModel","accessToken","refreshToken","expiresAt","tokenType","scope","projectId","apiKey","testStatus","lastTested","lastError","lastErrorAt","rateLimitedUntil","expiresIn","consecutiveUseCount"],c=0;return a.transaction(()=>{for(let d of a.all("SELECT * FROM providerConnections")){let e=r(d),f=!1;for(let a of b)(null===e[a]||void 0===e[a])&&a in e&&(delete e[a],c++,f=!0);e.providerSpecificData&&0===Object.keys(e.providerSpecificData).length&&(delete e.providerSpecificData,c++,f=!0),f&&t(a,e)}}),c}},11841:(a,b,c)=>{function d(a){let b=a?.providerSpecificData||{},c=a=>"string"==typeof a?a:"";return{connectionId:c(a?.id),provider:c(a?.provider),authType:c(a?.authType),createdAt:c(a?.createdAt),email:c(a?.email),accountId:c(b.workspaceId||b.accountUuid||b.accountId||b.userId||b.chatgptAccountId),organizationId:c(b.organizationUuid||b.organizationId)}}c.d(b,{AN:()=>d,R3:()=>e,_r:()=>h,bs:()=>g});let e=3e5,f=a=>"string"==typeof a&&Number.isFinite(Date.parse(a))?new Date(a).toISOString():null;function g(a){let b=f(a?.retryAt),c=a?.result,d=null,g=f(c?.observedAt);if(g&&c?.quotas&&"object"==typeof c.quotas&&!Array.isArray(c.quotas)){let a={};for(let[b,d]of Object.entries(c.quotas))d&&["used","total","remaining","remainingPercentage"].every(a=>Number.isFinite(d[a]))&&(a[b]={used:d.used,total:d.total,remaining:d.remaining,remainingPercentage:d.remainingPercentage,resetAt:f(d.resetAt),unlimited:!0===d.unlimited});if(d={plan:"string"==typeof c.plan?c.plan:null,observedAt:g,quotas:a},c.extraUsage&&"object"==typeof c.extraUsage)for(let a of(d.extraUsage={},["is_enabled","monthly_limit","used_credits","utilization"])){let b=c.extraUsage[a];("boolean"==typeof b||Number.isFinite(b))&&(d.extraUsage[a]=b)}else d.extraUsage=null}let h=d&&Number.isFinite(a?.expiresAt)?Math.max(0,Math.min(a.expiresAt,Date.parse(d.observedAt)+e)):0;return{retryAt:b,result:d,expiresAt:h}}function h(a,b){let c=g(a),d=g(b),e=!c.result||d.result&&Date.parse(d.result.observedAt)>=Date.parse(c.result.observedAt)?d.result:c.result,f=Math.max(Date.parse(c.retryAt)||0,Date.parse(d.retryAt)||0),h=f>(Date.parse(e?.observedAt)||0)?new Date(f).toISOString():null,i=h||!e||0===d.expiresAt?0:e===d.result?d.expiresAt:c.expiresAt;return{retryAt:h,result:e,expiresAt:i}}},38044:(a,b,c)=>{c.d(b,{BA:()=>C,E8:()=>x,MG:()=>u,O0:()=>E,Yh:()=>B,cb:()=>z,lO:()=>D,ue:()=>F,ws:()=>A,wu:()=>v});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(49120);let k="aes-256-gcm",l="enc:v1:",m="enc:v2:",n=i().join(j.nJ,"auth","data-key"),o=i().join(j.nJ,"auth","cli-secret"),p="switchboard-at-rest-v1",q=null,r=null;function s(){if(q)return q;try{let a=g().readFileSync(n);if(32===a.length)return q=a}catch{}try{let a=i().join(j.nJ,"machine-id"),b=p;try{b=g().readFileSync(a,"utf8").trim()+p}catch{}q=b===p?e().randomBytes(32):e().createHash("sha256").update(b).digest()}catch{q=e().randomBytes(32)}try{g().mkdirSync(i().dirname(n),{recursive:!0,mode:448}),g().writeFileSync(n,q,{mode:384})}catch{}return q}function t(){let a=function(){if(r)return r;try{if(r=g().readFileSync(o,"utf8").trim()||null)return r}catch{}let a=e().randomBytes(32).toString("hex");try{g().mkdirSync(i().dirname(o),{recursive:!0,mode:448}),g().writeFileSync(o,a,{mode:384,flag:"wx"}),r=a}catch{try{r=g().readFileSync(o,"utf8").trim()||null}catch{r=null}}return r}();return a?e().createHash("sha256").update(s()).update(a,"utf8").digest():null}function u(a){if(null==a||""===a||"string"!=typeof a||a.startsWith(l)||a.startsWith(m))return a;let b=t(),c=b||s(),d=e().randomBytes(12),f=e().createCipheriv(k,c,d),g=Buffer.concat([f.update(a,"utf8"),f.final()]),h=f.getAuthTag();return`${b?m:l}${d.toString("hex")}:${h.toString("hex")}:${g.toString("hex")}`}function v(a){if(null==a||""===a||"string"!=typeof a)return a;let b=a.startsWith(m);if(!b&&!a.startsWith(l))return a;try{let[c,d,f]=a.slice(m.length).split(":");if(!c||!d||!f)return null;let g=b?t():s();if(!g)return null;let h=e().createDecipheriv(k,g,Buffer.from(c,"hex"));return h.setAuthTag(Buffer.from(d,"hex")),h.update(Buffer.from(f,"hex"),void 0,"utf8")+h.final("utf8")}catch{return null}}function w(a){return e().createHash("sha256").update(`sb-key:${a}`).digest("hex")}function x(a){return a&&"string"==typeof a?a.length<=12?a.slice(0,4)+"…":a.slice(0,10)+"…":""}function y(a){return"string"==typeof a&&/^[a-f0-9]{32}$/.test(a)?e().createHash("sha256").update(`sb-key-lookup:${a}`).digest("hex"):null}function z(a){if("string"!=typeof a)return null;let b=a.split("-");return 4===b.length&&"sk"===b[0]&&b[1]&&/^[a-f0-9]{8}$/.test(b[3])?y(b[2]):null}function A(a,b=z(a)){if(!b)return`v1:${x(a)}:${w(a)}`;let c=e().randomBytes(16),d=e().scryptSync(a,c,32,{N:16384,r:8,p:1,maxmem:0x4000000});return`v2:${b}:${x(a)}:${c.toString("hex")}:${d.toString("hex")}`}function B(a){if("string"!=typeof a||!a.startsWith("v2:"))return a;let b=a.split(":");if(5!==b.length||!/^[a-f0-9]{32}$/.test(b[1]))return a;let c=y(b[1]);return`v2:${c}:${b[2]}:${b[3]}:${b[4]}`}function C(a){if(!a||"string"!=typeof a)return{version:0,lookupDigest:null,prefix:"",hash:null,salt:null,legacy:!0,raw:a};let b=B(a),c=b.split(":");return b.startsWith("v2:")&&5===c.length?{version:2,lookupDigest:/^[a-f0-9]{64}$/.test(c[1])?c[1]:null,prefix:c[2],salt:c[3],hash:c[4],legacy:!1,raw:null}:b.startsWith("v2:")&&4===c.length?{version:2,lookupDigest:null,prefix:c[1],salt:c[2],hash:c[3],legacy:!1,raw:null}:b.startsWith("v1:")&&c.length>=3?{version:1,lookupDigest:null,prefix:c[1],salt:null,hash:c.slice(2).join(":"),legacy:!1,raw:null}:{version:0,lookupDigest:z(b),prefix:x(b),hash:null,salt:null,legacy:!0,raw:b}}function D(a,b){if("string"!=typeof a||"string"!=typeof b)return!1;let c=e().createHash("sha256").update(a).digest(),d=e().createHash("sha256").update(b).digest();return e().timingSafeEqual(c,d)}function E(a,b){if(!b||"string"!=typeof b)return!1;let c=C(a);if(c.legacy)return D(String(c.raw||""),b);if(1===c.version)return!!c.hash&&D(c.hash,w(b));if(!c.salt||!c.hash)return!1;try{let a=e().scryptSync(b,Buffer.from(c.salt,"hex"),32,{N:16384,r:8,p:1,maxmem:0x4000000});return D(a.toString("hex"),c.hash)}catch{return!1}}async function F(a,b){if(!b||"string"!=typeof b)return!1;let c=C(a);if(2!==c.version)return E(a,b);if(!c.salt||!c.hash)return!1;try{let a=await new Promise((a,d)=>{e().scrypt(b,Buffer.from(c.salt,"hex"),32,{N:16384,r:8,p:1,maxmem:0x4000000},(b,c)=>{b?d(b):a(c)})});return D(a.toString("hex"),c.hash)}catch{return!1}}},95812:(a,b,c)=>{function d(a){if("number"==typeof a)return Number.isFinite(a)?a:null;if("string"==typeof a&&a.trim()){let b=Number(a);return Number.isFinite(b)?b:null}return null}function e(a,b=Date.now()){if(!a||function(a,b=Date.now()){if(a?.blocked===!0)return"Provider reports limit reached";if(a?.stale===!0)return"Refresh unavailable";let c=a?.observedAt?Date.parse(a.observedAt):NaN;if(a?.observedAt&&(!Number.isFinite(c)||c>b+6e4||b-c>=6e5))return"Observation expired";let d=a?.resetAt?Date.parse(a.resetAt):NaN;return Number.isFinite(d)&&d<=b?!1===a.recurring?"Expired":"Reset passed; refresh needed":null}(a,b)||"balance"===a.kind)return null;if(!0===a.unlimited)return 100;let c=d(a.remainingPercentage);if(null!==c)return Math.max(0,Math.min(100,c));let f=d(a.total);if(null===f||f<=0)return null;let g=d(a.used),h=d(a.remaining);return null!==g&&g>=0?Math.max(0,Math.min(100,(f-g)/f*100)):null!==h&&h>=0?Math.max(0,Math.min(100,h/f*100)):null}c.d(b,{Gv:()=>d,_F:()=>e})}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=6533,exports.ids=[6533],exports.modules={
|
|
1
|
+
"use strict";exports.id=6533,exports.ids=[6533],exports.modules={33234:(a,b,c)=>{c.d(b,{l:()=>k,_:()=>l});var d,e=c(36366),f=c(77598),g=c(11841);let h="providerQuotaState",i=a=>(0,f.createHash)("sha256").update(JSON.stringify(["connectionId","provider","authType","createdAt","email","accountId","organizationId"].map(b=>"string"==typeof a?.[b]?a[b]:""))).digest("hex");function j(a,b){let c;if(!b?.connectionId||!b.provider||!b.authType||!b.createdAt)return null;let d=a.get("SELECT id, provider, authType, email, createdAt, data FROM providerConnections WHERE id = ?",[b.connectionId]);if(!d)return null;try{c=JSON.parse(d.data)}catch{return null}let e=(0,g.AN)({...d,providerSpecificData:c?.providerSpecificData});return i(e)===i(b)?i(e):null}let{loadProviderQuotaState:k,saveProviderQuotaState:l}=(d=e.c,{async loadProviderQuotaState(a){let b,c=await d(),e=j(c,a);if(!e)return{invalidIdentity:!0};let f=c.get("SELECT value FROM kv WHERE scope = ? AND key = ?",[h,a.connectionId]);try{b=JSON.parse(f?.value||"null")}catch{throw Error("Invalid durable quota state")}if(b&&1!==b.version)throw Error("Unsupported durable quota state");return b?.version===1&&b.binding===e?(0,g.bs)(b):(0,g.bs)(null)},async saveProviderQuotaState(a,b){let c=await d(),e=!1;return c.transaction(()=>{let d,f=j(c,a);if(!f)return;let i=c.get("SELECT value FROM kv WHERE scope = ? AND key = ?",[h,a.connectionId]);try{d=JSON.parse(i?.value||"null")}catch{d=null}(d?.version!==1||d.binding!==f)&&(d=null);let k={version:1,binding:f,...(0,g._r)(d,b)};c.run("INSERT INTO kv(scope,key,value) VALUES(?,?,?) ON CONFLICT(scope,key) DO UPDATE SET value=excluded.value",[h,a.connectionId,JSON.stringify(k)]),e=!0}),e}})},39326:(a,b,c)=>{function d(a){return null==a?"":String(a).trim()}async function e(a={}){try{let b=function(a={}){let b=a?.connectionProxyEnabled===!0,c=d(a?.connectionProxyUrl);return{connectionProxyEnabled:b,connectionProxyUrl:c,connectionNoProxy:d(a?.connectionNoProxy)}}(a);if(b.connectionProxyEnabled&&b.connectionProxyUrl)return{source:"legacy",proxyPoolId:null,proxyPool:null,...b,strictProxy:!1,vercelRelayUrl:""};return{source:"none",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:b.connectionNoProxy||"",strictProxy:!1,vercelRelayUrl:""}}catch(a){return console.error("[resolveConnectionProxyConfig] Failed to resolve proxy config:",a),{source:"error",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:"",strictProxy:!1,vercelRelayUrl:""}}}c.d(b,{B:()=>e})},49263:(a,b,c)=>{c.d(b,{Bl:()=>k,Qo:()=>f,RU:()=>g,S5:()=>n,V0:()=>l,hk:()=>e,kJ:()=>m});var d=c(87252);function e(a,b,c=0){let f=b?("string"==typeof b?b:JSON.stringify(b)).toLowerCase():"";for(let b of d.t2)if(b.text&&f&&f.includes(b.text)||b.status&&b.status===a){let a=!1!==b.shouldFallback;if(b.backoff){let b=Math.min(c+1,d.EQ.maxLevel);return{shouldFallback:a,cooldownMs:function(a=0){let b=Math.max(0,a-1);return Math.min(d.EQ.base*Math.pow(2,b),d.EQ.max)}(b),newBackoffLevel:b}}return{shouldFallback:a,cooldownMs:b.cooldownMs||0}}return a>=400&&a<500&&408!==a&&429!==a?{shouldFallback:!1,cooldownMs:0}:{shouldFallback:!0,cooldownMs:d.wf}}function f(a){if(!a)return"";let b=new Date(a).getTime()-Date.now();if(b<=0)return"reset after 0s";let c=Math.ceil(b/1e3),d=Math.floor(c/3600),e=Math.floor(c%3600/60),f=c%60,g=[];return d>0&&g.push(`${d}h`),e>0&&g.push(`${e}m`),(f>0||0===g.length)&&g.push(`${f}s`),`reset after ${g.join(" ")}`}let g="reauth_required",h="modelLock_",i=`${h}__all`;function j(a){return a?`${h}${a}`:i}function k(a,b){let c=j(b);return[a?.[c],a?.[i]].some(a=>a&&new Date(a).getTime()>Date.now())}function l(a,b){let c=Date.now(),d=[a?.[j(b)],a?.[i]].map(a=>new Date(a).getTime()).filter(a=>Number.isFinite(a)&&a>c);return d.length>0?new Date(Math.max(...d)).toISOString():null}function m(a){if(!a)return null;let b=null,c=Date.now();for(let[d,e]of Object.entries(a)){if(!d.startsWith(h)||!e)continue;let a=new Date(e).getTime();a<=c||(!b||a<b)&&(b=a)}return b?new Date(b).toISOString():null}function n(a,b){return{[j(a)]:new Date(Date.now()+b).toISOString()}}},66451:(a,b,c)=>{c.d(b,{Xh:()=>f,js:()=>h,sc:()=>g});var d=c(39698);let e={el:"elevenlabs",jina:"jina-ai","jina-ai":"jina-ai",polly:"aws-polly","aws-polly":"aws-polly"};for(let a of d.A)for(let b of(e[a.id]=a.id,a.alias&&(e[a.alias]=a.id),a.aliases||[]))e[b]=a.id;function f(a){if(!a)return{provider:null,model:null,isAlias:!1,providerAlias:null};if(a.includes("/")){let b=a.indexOf("/"),c=a.slice(0,b),d=a.slice(b+1);return{provider:e[c]||c,model:d,isAlias:!1,providerAlias:c}}return{provider:null,model:a,isAlias:!0,providerAlias:null}}function g(a,b){var c,d;if(!b||"string"!=typeof a)return null;let f=b[a];if(!f){for(let[c,d]of Object.entries(b))if("string"==typeof c&&c.includes("*"))try{let b="^"+c.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*")+"$";if(RegExp(b,"i").test(a)){f=d;break}}catch{}}if(!f)return null;if("string"==typeof f&&f.includes("/")){let a=f.indexOf("/");return{provider:e[c=f.slice(0,a)]||c,model:f.slice(a+1)}}return"object"==typeof f&&f.provider&&f.model?{provider:e[d=f.provider]||d,model:f.model}:"string"==typeof f?{provider:null,model:f}:null}async function h(a,b){let c=f(a);if(!c.isAlias)return{provider:c.provider,model:c.model};let d="function"==typeof b?await b():b,e=g(c.model,d);return e||{provider:function(a){if(!a)return"openai";let b=a.toLowerCase();return i.find(([a])=>a.test(b))?.[1]||"openai"}(c.model),model:c.model}}let i=[[/^grok-build$/,"grok-cli"],[/^muse-/,"muse"],[/^claude-/,"anthropic"],[/^gemini-/,"gemini"],[/^gpt-/,"openai"],[/^o[134]/,"openai"],[/^deepseek-/,"openrouter"]]}};
|