switchboard-router 0.9.19 → 0.9.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/app/.next/static/chunks/{1321-01d6c3198a6dd868.js → 1321-de2662d28ab47cf8.js} +1 -1
  2. package/app/.next-cli-build/BUILD_ID +1 -1
  3. package/app/.next-cli-build/app-path-routes-manifest.json +10 -10
  4. package/app/.next-cli-build/build-manifest.json +2 -2
  5. package/app/.next-cli-build/prerender-manifest.json +3 -3
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page_client-reference-manifest.js +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page_client-reference-manifest.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  32. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  33. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  34. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  35. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  36. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  37. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  38. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  39. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  40. package/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  41. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  42. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  43. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  44. package/app/.next-cli-build/server/app/api/cli-tools/aider-settings/route.js +2 -2
  45. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +5 -5
  46. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  47. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +1 -1
  48. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +2 -2
  49. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  50. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  51. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +2 -2
  52. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
  53. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  54. package/app/.next-cli-build/server/app/api/cli-tools/gemini-cli-settings/route.js +3 -3
  55. package/app/.next-cli-build/server/app/api/cli-tools/grok-settings/route.js +2 -2
  56. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  57. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  58. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  59. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  60. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  61. package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js +1 -1
  62. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  63. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  64. package/app/.next-cli-build/server/app/callback.html +1 -1
  65. package/app/.next-cli-build/server/app/callback.rsc +3 -3
  66. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  67. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  68. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +3 -3
  69. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  70. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  71. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  72. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  73. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  74. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +3 -3
  75. package/app/.next-cli-build/server/app/index.html +1 -1
  76. package/app/.next-cli-build/server/app/index.rsc +3 -3
  77. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  78. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  79. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  80. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  81. package/app/.next-cli-build/server/app/landing.html +1 -1
  82. package/app/.next-cli-build/server/app/landing.rsc +3 -3
  83. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
  84. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  85. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +3 -3
  86. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  87. package/app/.next-cli-build/server/app/login.html +1 -1
  88. package/app/.next-cli-build/server/app/login.rsc +3 -3
  89. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +3 -3
  90. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  91. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +3 -3
  92. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  93. package/app/.next-cli-build/server/app-paths-manifest.json +10 -10
  94. package/app/.next-cli-build/server/chunks/3423.js +1 -1
  95. package/app/.next-cli-build/server/chunks/369.js +5 -5
  96. package/app/.next-cli-build/server/chunks/519.js +1 -1
  97. package/app/.next-cli-build/server/chunks/7454.js +1 -1
  98. package/app/.next-cli-build/server/chunks/8400.js +2 -2
  99. package/app/.next-cli-build/server/chunks/869.js +1 -1
  100. package/app/.next-cli-build/server/chunks/8998.js +2 -2
  101. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  102. package/app/.next-cli-build/server/pages/404.html +1 -1
  103. package/app/.next-cli-build/server/pages/500.html +1 -1
  104. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  105. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  106. package/app/.next-cli-build/static/chunks/{1321-01d6c3198a6dd868.js → 1321-de2662d28ab47cf8.js} +1 -1
  107. package/app/open-sse/identity/tls/bin/darwin/arm64/switchboard-claude-tls +0 -0
  108. package/app/open-sse/identity/tls/bin/darwin/x64/switchboard-claude-tls +0 -0
  109. package/app/open-sse/identity/tls/bin/linux/arm64/switchboard-claude-tls +0 -0
  110. package/app/open-sse/identity/tls/bin/linux/x64/switchboard-claude-tls +0 -0
  111. package/app/open-sse/identity/tls/bin/win32/arm64/switchboard-claude-tls.exe +0 -0
  112. package/app/open-sse/identity/tls/bin/win32/x64/switchboard-claude-tls.exe +0 -0
  113. package/app/package.json +1 -1
  114. package/package.json +1 -1
  115. /package/app/.next/static/{lpJKSCNHmXiuvzItFS9ky → lkpY_OQyrCAqK5SbBagdh}/_buildManifest.js +0 -0
  116. /package/app/.next/static/{lpJKSCNHmXiuvzItFS9ky → lkpY_OQyrCAqK5SbBagdh}/_ssgManifest.js +0 -0
  117. /package/app/.next-cli-build/static/{lpJKSCNHmXiuvzItFS9ky → lkpY_OQyrCAqK5SbBagdh}/_buildManifest.js +0 -0
  118. /package/app/.next-cli-build/static/{lpJKSCNHmXiuvzItFS9ky → lkpY_OQyrCAqK5SbBagdh}/_ssgManifest.js +0 -0
@@ -54,17 +54,17 @@ ${e.length} files in ${g.length} dirs:
54
54
  --- preview (first 500 chars) ---
55
55
  ${h}${i}`);return b.stats.bytesAfter+=Buffer.byteLength(n,"utf8"),b.stats.vaulted+=1,n}catch{return a}}async function m(a,b){try{if(!a||"object"!=typeof a||!0===a.is_error||"error"===a.status)return;if("function_call_output"===a.type){if("string"==typeof a.output)a.output=await l(a.output,b);else if(Array.isArray(a.output))for(let c=0;c<a.output.length;c+=1){let d=a.output[c];d?.type==="input_text"&&"string"==typeof d.text&&(d.text=await l(d.text,b))}return}if("tool"===a.role){if("string"==typeof a.content)a.content=await l(a.content,b);else if(Array.isArray(a.content))for(let c=0;c<a.content.length;c+=1){let d=a.content[c];d?.type==="text"&&"string"==typeof d.text&&(d.text=await l(d.text,b))}return}if(!Array.isArray(a.content))return;for(let c=0;c<a.content.length;c+=1){let d=a.content[c];if(d&&"tool_result"===d.type&&!0!==d.is_error&&"error"!==d.status){if("string"==typeof d.content)d.content=await l(d.content,b);else if(Array.isArray(d.content))for(let a=0;a<d.content.length;a+=1){let c=d.content[a];c?.type==="text"&&"string"==typeof c.text&&(c.text=await l(c.text,b))}}}}catch{}}async function n(a,b){try{let c=a?.conversationState,d=Array.isArray(c?.history)?[...c.history]:[];c?.currentMessage&&d.push(c.currentMessage);for(let a=0;a<d.length;a+=1)try{let c=d[a]?.userInputMessage?.userInputMessageContext?.toolResults;if(!Array.isArray(c))continue;for(let a=0;a<c.length;a+=1){let d=c[a];if(d&&!0!==d.is_error&&"error"!==d.status&&Array.isArray(d.content))for(let a=0;a<d.content.length;a+=1){let c=d.content[a];c&&"string"==typeof c.text&&(c.text=await l(c.text,b))}}}catch{}}catch{}}async function o(a,{conversationId:b,thresholdBytes:c,ttlMs:d,toolNameHint:e=null,log:f=null}={}){let g={bytesBefore:0,bytesAfter:0,vaulted:0};try{if(!a||"object"!=typeof a||"string"!=typeof b||!b)return g;let h=Number(c),i=Number(d);if(!Number.isFinite(h)||h<=0||!Number.isFinite(i)||i<=0)return g;let j={conversationId:b,thresholdBytes:h,ttlMs:i,toolNameHint:e,log:f,stats:g};if(a.conversationState)return await n(a,j),g;let l=Array.isArray(a.messages)?a.messages:Array.isArray(a.input)?a.input:null;if(!l)return!k&&(Array.isArray(a?.contents)||Array.isArray(a?.request?.contents))&&(k=!0,f?.warn?.("VAULT","inactive for this upstream body shape (e.g. Gemini contents[]); tool results are not externalized")),g;for(let a=0;a<l.length;a+=1)await m(l[a],j);return g}catch{return{bytesBefore:0,bytesAfter:0,vaulted:0}}}},15142:(a,b,c)=>{c.d(b,{N:()=>p});var d=c(19956),e=c(68057),f=c(49612),g=c(67677),h=c(89865),i=c(60290),j=c(94176),k=c(29461),l=c(12407),m=c(10089),n=c(83611);async function o(a,b){if(!a.body||"function"!=typeof a.body.getReader){let c=await a.text();return(0,j.tQ)(new TextEncoder().encode(c).byteLength,b),c}let c=a.body.getReader(),d=new TextDecoder,e=0,f="";try{for(;;){let{done:a,value:g}=await c.read();if(a)break;e+=g?.byteLength||0,(0,j.tQ)(e,b),f+=d.decode(g,{stream:!0})}f+=d.decode()}catch(a){throw c.cancel().catch(()=>{}),a}finally{try{c.releaseLock()}catch{}}return f}async function p({providerResponse:a,provider:b,model:c,sourceFormat:q,targetFormat: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,trackDone:F,appendLog:G,pxpipe:H,streamSignal:I}){let J;if(F(),(a.headers.get("content-type")||"").includes("text/event-stream")){let d;try{d=await (0,j.iJ)(a.body,c,{signal:I})}catch(a){return G({status:`FAILED ${i.gx.BAD_GATEWAY}`}),console.error(`[ChatCore] Failed to convert SSE response from ${b}:`,a.message),(0,h.A1)(i.gx.BAD_GATEWAY,"Failed to convert streaming response to JSON")}if(!d)return G({status:`FAILED ${i.gx.BAD_GATEWAY}`}),(0,h.A1)(i.gx.BAD_GATEWAY,"Invalid SSE response for non-streaming request");J=d}else try{let b=(0,j.hB)(),c=Number(a.headers.get("content-length"));if(Number.isFinite(c)&&c>b)throw Error(`Upstream JSON body (${c} bytes) exceeds limit (${b} bytes)`);J=JSON.parse(await o(a,b))}catch(a){return G({status:`FAILED ${i.gx.BAD_GATEWAY}`}),console.error(`[ChatCore] Failed to parse JSON from ${b}:`,a.message),(0,h.A1)(i.gx.BAD_GATEWAY,`Invalid JSON response from ${b}`)}D.logProviderResponse(a.status,a.statusText,a.headers,J),C&&Promise.resolve().then(C).catch(a=>{console.error("[ChatCore] onRequestSuccess failed:",a?.message||a)}),J=(0,m.kR)(J,E);let K=(0,k.MK)(J);G({tokens:K,status:"200 OK"}),await (0,k.YZ)({provider:b,model:c,tokens:K,connectionId:y,clientKeyId:z,requestId:A,endpoint:B?.endpoint});let L=q===r&&q!==d.h.OPENAI,M=L?null:r===d.h.OPENAI?J:function(a,b){if(b===d.h.OPENAI)return a;if(b===d.h.OPENAI_RESPONSES)return a?.choices?a:Array.isArray(a?.output)?(0,f.g)(a,a?.model):a;if(b===d.h.GEMINI||b===d.h.ANTIGRAVITY||b===d.h.GEMINI_CLI||b===d.h.VERTEX){let b=a.response||a;if(!b?.candidates?.[0])return a;let c=b.candidates[0],d=c.content,e=b.usageMetadata||a.usageMetadata,f="",g="",h=[];if(d?.parts)for(let a of d.parts){!0===a.thought&&a.text?g+=a.text:void 0!==a.text&&(f+=a.text),a.functionCall&&h.push({id:`call_${a.functionCall.name}_${h.length}`,type:"function",function:{name:a.functionCall.name,arguments:JSON.stringify(a.functionCall.args||{})}});let b=a.inlineData||a.inline_data;if(b?.data){let a=b.mimeType||b.mime_type||"image/png";f+=`
56
56
  ![image](data:${a};base64,${b.data})
57
- `}}let i={role:"assistant"};f&&(i.content=f),g&&(i.reasoning_content=g),h.length>0&&(i.tool_calls=h),i.content||i.tool_calls||(i.content="");let j=String(c.finishReason||"STOP").toUpperCase(),k="stop";"MAX_TOKENS"===j?k="length":("SAFETY"===j||"RECITATION"===j||"BLOCKLIST"===j||"PROHIBITED_CONTENT"===j)&&(k="content_filter"),"stop"===k&&h.length>0&&(k="tool_calls");let l=new Date(b.createTime||Date.now()).getTime(),m=Number.isFinite(l)?Math.floor(l/1e3):Math.floor(Date.now()/1e3),n={id:`chatcmpl-${b.responseId||Date.now()}`,object:"chat.completion",created:m,model:b.modelVersion||"gemini",choices:[{index:0,message:i,finish_reason:k}]};return e&&(n.usage={prompt_tokens:(e.promptTokenCount||0)+(e.thoughtsTokenCount||0),completion_tokens:e.candidatesTokenCount||0,total_tokens:e.totalTokenCount||0},e.thoughtsTokenCount>0&&(n.usage.completion_tokens_details={reasoning_tokens:e.thoughtsTokenCount})),n}if(b===d.h.CLAUDE){if(a.choices||a.content&&!Array.isArray(a.content))return a;let b="",c="",d=[];for(let e of a.content||[])if("text"===e.type){let a=e.text??"",c=a.replace(/^\s*```\s*json\s*\n?/i,"").replace(/\n?\s*```\s*$/i,"");if(c!==a)try{JSON.parse(c),b+=c}catch{b+=a}else b+=a}else"thinking"===e.type?c+=e.thinking||"":"tool_use"===e.type&&d.push({id:e.id,type:"function",function:{name:e.name,arguments:JSON.stringify(e.input||{})}});let e={role:"assistant"};b&&(e.content=b),c&&(e.reasoning_content=c),d.length>0&&(e.tool_calls=d),e.content||e.tool_calls||(e.content="");let f=a.stop_reason||"stop";"end_turn"===f&&(f="stop"),"tool_use"===f&&(f="tool_calls");let g={id:`chatcmpl-${a.id||Date.now()}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:a.model||"claude",choices:[{index:0,message:e,finish_reason:f}]};return a.usage&&(g.usage={prompt_tokens:a.usage.input_tokens||0,completion_tokens:a.usage.output_tokens||0,total_tokens:(a.usage.input_tokens||0)+(a.usage.output_tokens||0)}),g}return b===d.h.OLLAMA?(0,e._)(a):a}(J,r),N=!1;if(M?.choices)for(let a of M.choices){let b=a?.message;if(b?.content&&"string"==typeof b.content){let{content:a,reasoning:c}=(0,n.j)(b.content);c&&(b.reasoning_content=c,b.content=a,N=!0)}}if(M?.choices?.[0]){let a=M.choices[0],b=a.message;if(Array.isArray(b?.tool_calls)&&b.tool_calls.length>0&&"tool_calls"!==a.finish_reason&&(a.finish_reason="tool_calls"),M.object||(M.object="chat.completion"),M.created||(M.created=Math.floor(Date.now()/1e3)),delete M.prompt_filter_results,M.choices)for(let a of M.choices)delete a.content_filter_results;if(M.usage&&(M.usage=(0,g.WL)((0,g.O9)(M.usage),d.h.OPENAI)),!N)for(let a of M.choices)a?.message?.reasoning_content&&a.message.content&&delete a.message.reasoning_content}let O=L?J:(0,f.p)(M,q),P=q===d.h.CLAUDE&&O?.type==="message";D.logConvertedResponse(O);let Q=Date.now()-x,R=P?O?.content?.find?.(a=>"text"===a.type)?.text||null:O?.choices?.[0]?.message?.content||O?.content||null;return(0,l.ox)((0,k.$R)({provider:b,model:c,connectionId:y,latency:{ttft:Q,total:Q},tokens:K||{prompt_tokens:0,completion_tokens:0},request:u??(0,k.Fo)(s,t),providerRequest:w||v||null,providerResponse:J||null,response:{content:R,thinking:O?.choices?.[0]?.message?.reasoning_content||null,finish_reason:O?.choices?.[0]?.finish_reason||O?.stop_reason||"unknown"},status:"success",pxpipe:H},{endpoint:B?.endpoint||null})).catch(a=>{console.error("[RequestDetail] Failed to save:",a.message)}),{success:!0,response:new Response(JSON.stringify(O),{headers:{"Content-Type":"application/json"}})}}},15575:(a,b,c)=>{c.d(b,{Jb:()=>i,jd:()=>g});var d=c(60290),e=c(12828),f=c(1160);function g({onDisconnect:a,onError:b,log:c,provider:d,model:h,reqTag:i="",sessionSeed:j=""}={}){let k=new AbortController,l=Date.now(),m=!1,n=null,o=i||(j?(0,f.sk)(j):(0,f.Eh)()),p=(a,b,e=!1,g="")=>{let i=Date.now()-l;(e?c?.errorLine??f.BP:c?.line??f.n8)(o,a,`${b} \xb7 ${d}/${h} \xb7 ${i}ms${g}`)};return{signal:k.signal,startTime:l,isConnected:()=>!m,handleDisconnect:(b="client_closed")=>{m||(m=!0,p("⚡",`DISCONNECT: ${b}`),(0,e.s)("CTRL",`${d}/${h} | disconnect=${b} | dur=${Date.now()-l}ms`),n=setTimeout(()=>{k.abort()},500),a?.({reason:b,duration:Date.now()-l}))},handleComplete:()=>{!m&&(m=!0,p("\uD83C\uDF0A","COMPLETE"),n&&(clearTimeout(n),n=null))},handleError:a=>{if(!m){if(m=!0,n&&(clearTimeout(n),n=null),"AbortError"===a.name)return void p("⚡","ABORTED");p("✗",`ERROR: ${a.message}`,!0,a.stack?`
58
- ${a.stack}`:""),b?.(a)}},abort:()=>k.abort()}}function h(a,b,c=null){let d=a.readable.getReader(),e=a.writable.getWriter(),f=!1,g=a=>{if(!f&&c){f=!0;try{let b=c();b&&a.enqueue(b)}catch{}}};return new ReadableStream({async pull(a){if(!b.isConnected()){g(a),a.close();return}try{let{done:c,value:e}=await d.read();if(c){b.handleComplete(),a.close();return}a.enqueue(e)}catch(l){let f=b.isConnected(),h=l?.message||"";h.includes("already closed")||h.includes("Invalid state")||b.handleError(l),d.cancel().catch(()=>{}),e.abort().catch(()=>{});let i=l?.message||"",j=l?.code||l?.cause?.code||"",k="AbortError"===l.name||i.includes("aborted")||i.includes("socket hang up")||i.includes("ECONNRESET")||i.includes("ETIMEDOUT")||i.includes("EPIPE")||"ECONNRESET"===j||"ETIMEDOUT"===j||"EPIPE"===j||"UND_ERR_SOCKET"===j;try{!f||k||c?(g(a),a.close()):a.error(l)}catch(a){}}},cancel(a){b.handleDisconnect(a||"cancelled");try{d.cancel()?.catch?.(()=>{})}catch{}try{e.abort()?.catch?.(()=>{})}catch{}}})}function i(a,b,c,f=null,g=d.xM,j=d.Z1){let k=null,l=null,m=0,n=0,o=Date.now(),p=Date.now(),q="STREAM",r=()=>{l&&(clearTimeout(l),l=null)},s=()=>{k&&(clearInterval(k),k=null),r()},t={signal:c.signal,startTime:c.startTime,isConnected:()=>c.isConnected(),handleComplete:()=>{(0,e.s)(q,`complete | chunks=${m} | bytes=${n} | dur=${Date.now()-p}ms`),s(),c.handleComplete()},handleError:a=>{(0,e.s)(q,`error: ${a?.message} | chunks=${m} | bytes=${n} | dur=${Date.now()-p}ms`),s(),c.handleError(a)},handleDisconnect:a=>{(0,e.s)(q,`disconnect: ${a} | chunks=${m} | bytes=${n} | dur=${Date.now()-p}ms`),s(),c.handleDisconnect(a)},abort:()=>{s(),c.abort()}};j>0&&(l=setTimeout(()=>{l=null,0===m&&((0,e.s)(q,`FIRST-CHUNK TIMEOUT ${j}ms`),c.handleError?.(Error("stream first-chunk timeout")),c.abort?.())},j)),(0,e.s)(q,`pipe start | firstChunkTimeout=${j}ms | stallTimeout=${g}ms`);let u=new TransformStream({transform(a,b){1==++m&&(r(),!k&&g>0&&(k=setInterval(()=>{if(Date.now()-o>=g){let a=k;k=null,a&&clearInterval(a),(0,e.s)(q,`STALL TIMEOUT ${g}ms | chunks=${m} | bytes=${n} | sinceLast=${Date.now()-o}ms`),c.handleError?.(Error("stream stall timeout")),c.abort?.()}},Math.min(g,5e3))));let d=a?.byteLength||a?.length||0;n+=d;let f=Date.now(),h=f-o;o=f,e.T&&(m<=5||m%20==0||h>5e3)&&(0,e.s)(q,`chunk #${m} | size=${d}B | gap=${h}ms | total=${n}B`),b.enqueue(a)},flush(){(0,e.s)(q,`upstream EOF | chunks=${m} | bytes=${n} | dur=${Date.now()-p}ms`),s()}});return a?.body?h({readable:a.body.pipeThrough(u).pipeThrough(b),writable:{getWriter:()=>({abort:()=>Promise.resolve()})}},t,f):h({readable:new ReadableStream({start(a){a.error(Error("upstream response missing body"))}}),writable:{getWriter:()=>({abort:()=>Promise.resolve()})}},t,f)}},16799:(a,b,c)=>{c.d(b,{U:()=>l});var d=c(17429);let e="You are a lazy senior developer. Lazy means efficient, not careless. The best code is the code never written.",f="Before writing code, stop at the first rung that holds: 1) Does this need to exist at all? (YAGNI) 2) Stdlib does it? Use it. 3) Native platform feature covers it? Use it (CSS over JS, DB constraint over app code). 4) Already-installed dependency solves it? Use it; never add a new one for what a few lines can do. 5) Can it be one line? One line. 6) Only then: the minimum code that works.",g='No unrequested abstractions (no interface with one implementation, no factory for one product, no config for a value that never changes). No boilerplate or scaffolding "for later". Deletion over addition. Boring over clever. Fewest files possible; shortest working diff wins. Two stdlib options the same size: take the edge-case-correct one. Mark deliberate simplifications with a `ponytail:` comment naming the ceiling and upgrade path.',h="Code first. Then at most three short lines: what was skipped, when to add it. No essays or design notes. Pattern: `[code] → skipped: [X], add when [Y].`",i="Never simplify away: input validation at trust boundaries, error handling that prevents data loss, security, accessibility, anything explicitly requested. Non-trivial logic leaves ONE runnable check behind (an assert-based self-check or one small test file; no frameworks). Trivial one-liners need no test.",j="ACTIVE EVERY RESPONSE. No drift back to over-building. Still active if unsure.",k={lite:[e,"Lite: build what's asked, but name the lazier alternative in one line. User picks.",f,g,h,i,j].join(" "),full:[e,"Full: the ladder enforced. Stdlib and native first. Shortest diff, shortest explanation.",f,g,h,i,j].join(" "),ultra:[e,"Ultra: YAGNI extremist. Deletion before addition. Ship the one-liner and challenge the rest of the requirement in the same response.",f,g,h,i,j].join(" ")};function l(a,b,c){(0,d.J)(a,b,k[c])}},17429:(a,b,c)=>{c.d(b,{J:()=>f});var d=c(19956);function e(a,b){if(!a||!b)return!1;let c="string"==typeof b?b.trim():"";if(!c)return!1;let d=c.slice(0,100);return a.includes(d)}function f(a,b,c){if(a&&c)switch(b){case d.h.CLAUDE:!function(a,b){if("string"==typeof a.system&&a.system.length>0){if(e(a.system,b))return;a.system=`${a.system}
57
+ `}}let i={role:"assistant"};f&&(i.content=f),g&&(i.reasoning_content=g),h.length>0&&(i.tool_calls=h),i.content||i.tool_calls||(i.content="");let j=String(c.finishReason||"STOP").toUpperCase(),k="stop";"MAX_TOKENS"===j?k="length":("SAFETY"===j||"RECITATION"===j||"BLOCKLIST"===j||"PROHIBITED_CONTENT"===j)&&(k="content_filter"),"stop"===k&&h.length>0&&(k="tool_calls");let l=new Date(b.createTime||Date.now()).getTime(),m=Number.isFinite(l)?Math.floor(l/1e3):Math.floor(Date.now()/1e3),n={id:`chatcmpl-${b.responseId||Date.now()}`,object:"chat.completion",created:m,model:b.modelVersion||"gemini",choices:[{index:0,message:i,finish_reason:k}]};return e&&(n.usage={prompt_tokens:(e.promptTokenCount||0)+(e.thoughtsTokenCount||0),completion_tokens:e.candidatesTokenCount||0,total_tokens:e.totalTokenCount||0},e.thoughtsTokenCount>0&&(n.usage.completion_tokens_details={reasoning_tokens:e.thoughtsTokenCount})),n}if(b===d.h.CLAUDE){if(a.choices||a.content&&!Array.isArray(a.content))return a;let b="",c="",d=[];for(let e of a.content||[])if("text"===e.type){let a=e.text??"",c=a.replace(/^\s*```\s*json\s*\n?/i,"").replace(/\n?\s*```\s*$/i,"");if(c!==a)try{JSON.parse(c),b+=c}catch{b+=a}else b+=a}else"thinking"===e.type?c+=e.thinking||"":"tool_use"===e.type&&d.push({id:e.id,type:"function",function:{name:e.name,arguments:JSON.stringify(e.input||{})}});let e={role:"assistant"};b&&(e.content=b),c&&(e.reasoning_content=c),d.length>0&&(e.tool_calls=d),e.content||e.tool_calls||(e.content="");let f=a.stop_reason||"stop";"end_turn"===f&&(f="stop"),"tool_use"===f&&(f="tool_calls");let g={id:`chatcmpl-${a.id||Date.now()}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:a.model||"claude",choices:[{index:0,message:e,finish_reason:f}]};return a.usage&&(g.usage={prompt_tokens:a.usage.input_tokens||0,completion_tokens:a.usage.output_tokens||0,total_tokens:(a.usage.input_tokens||0)+(a.usage.output_tokens||0)}),g}return b===d.h.OLLAMA?(0,e._)(a):a}(J,r),N=!1;if(M?.choices)for(let a of M.choices){let b=a?.message;if(b?.content&&"string"==typeof b.content){let{content:a,reasoning:c}=(0,n.j)(b.content);c&&(b.reasoning_content=c,b.content=a,N=!0)}}if(M?.choices?.[0]){let a=M.choices[0],b=a.message;if(Array.isArray(b?.tool_calls)&&b.tool_calls.length>0&&"tool_calls"!==a.finish_reason&&(a.finish_reason="tool_calls"),M.object||(M.object="chat.completion"),M.created||(M.created=Math.floor(Date.now()/1e3)),delete M.prompt_filter_results,M.choices)for(let a of M.choices)delete a.content_filter_results;if(M.usage&&(M.usage=(0,g.WL)((0,g.O9)(M.usage),d.h.OPENAI)),!N)for(let a of M.choices)a?.message?.reasoning_content&&a.message.content&&delete a.message.reasoning_content}let O=L?J:(0,f.p)(M,q),P=q===d.h.CLAUDE&&O?.type==="message";D.logConvertedResponse(O);let Q=Date.now()-x,R=P?O?.content?.find?.(a=>"text"===a.type)?.text||null:O?.choices?.[0]?.message?.content||O?.content||null;return(0,l.ox)((0,k.$R)({provider:b,model:c,connectionId:y,latency:{ttft:Q,total:Q},tokens:K||{prompt_tokens:0,completion_tokens:0},request:u??(0,k.Fo)(s,t),providerRequest:w||v||null,providerResponse:J||null,response:{content:R,thinking:O?.choices?.[0]?.message?.reasoning_content||null,finish_reason:O?.choices?.[0]?.finish_reason||O?.stop_reason||"unknown"},status:"success",pxpipe:H},{endpoint:B?.endpoint||null})).catch(a=>{console.error("[RequestDetail] Failed to save:",a.message)}),{success:!0,response:new Response(JSON.stringify(O),{headers:{"Content-Type":"application/json"}})}}},15575:(a,b,c)=>{c.d(b,{Jb:()=>j,jd:()=>h});var d=c(60290),e=c(12828),f=c(1160);let g=["[DONE]","finish_reason","response.completed","message_stop"];function h({onDisconnect:a,onError:b,log:c,provider:d,model:g,reqTag:i="",sessionSeed:j=""}={}){let k=new AbortController,l=Date.now(),m=!1,n=null,o=i||(j?(0,f.sk)(j):(0,f.Eh)()),p=(a,b,e=!1,h="")=>{let i=Date.now()-l;(e?c?.errorLine??f.BP:c?.line??f.n8)(o,a,`${b} \xb7 ${d}/${g} \xb7 ${i}ms${h}`)};return{signal:k.signal,startTime:l,isConnected:()=>!m,handleDisconnect:(b="client_closed")=>{m||(m=!0,p("⚡",`DISCONNECT: ${b}`),(0,e.s)("CTRL",`${d}/${g} | disconnect=${b} | dur=${Date.now()-l}ms`),n=setTimeout(()=>{k.abort()},500),a?.({reason:b,duration:Date.now()-l}))},handleComplete:()=>{!m&&(m=!0,p("\uD83C\uDF0A","COMPLETE"),n&&(clearTimeout(n),n=null))},handleError:a=>{if(!m){if(m=!0,n&&(clearTimeout(n),n=null),"AbortError"===a.name)return void p("⚡","ABORTED");p("✗",`ERROR: ${a.message}`,!0,a.stack?`
58
+ ${a.stack}`:""),b?.(a)}},abort:()=>k.abort()}}function i(a,b,c=null){let d=a.readable.getReader(),e=a.writable.getWriter(),f=!1,h=!1,j=0,k="",l=new TextDecoder,m=a=>{if(!f&&c){f=!0;try{let b=c();b&&a.enqueue(b)}catch{}}};return new ReadableStream({async pull(a){if(!b.isConnected()){m(a),a.close();return}try{let{done:c,value:e}=await d.read();if(c){b.handleComplete(),j>0&&!h&&m(a),a.close();return}if(a.enqueue(e),j+=e instanceof Uint8Array?e.byteLength:0,!h){let a=k+l.decode(e,{stream:!0});g.some(b=>a.includes(b))&&(h=!0),k=a.length>32?a.slice(-32):a}}catch(k){let f=b.isConnected(),g=k?.message||"";g.includes("already closed")||g.includes("Invalid state")||b.handleError(k),d.cancel().catch(()=>{}),e.abort().catch(()=>{});let h=k?.message||"",i=k?.code||k?.cause?.code||"",j="AbortError"===k.name||h.includes("aborted")||h.includes("socket hang up")||h.includes("ECONNRESET")||h.includes("ETIMEDOUT")||h.includes("EPIPE")||"ECONNRESET"===i||"ETIMEDOUT"===i||"EPIPE"===i||"UND_ERR_SOCKET"===i;try{!f||j||c?(m(a),a.close()):a.error(k)}catch(a){}}},cancel(a){b.handleDisconnect(a||"cancelled");try{d.cancel()?.catch?.(()=>{})}catch{}try{e.abort()?.catch?.(()=>{})}catch{}}})}function j(a,b,c,f=null,g=d.xM,h=d.Z1){let k=null,l=null,m=0,n=0,o=Date.now(),p=Date.now(),q="STREAM",r=()=>{l&&(clearTimeout(l),l=null)},s=()=>{k&&(clearInterval(k),k=null),r()},t={signal:c.signal,startTime:c.startTime,isConnected:()=>c.isConnected(),handleComplete:()=>{(0,e.s)(q,`complete | chunks=${m} | bytes=${n} | dur=${Date.now()-p}ms`),s(),c.handleComplete()},handleError:a=>{(0,e.s)(q,`error: ${a?.message} | chunks=${m} | bytes=${n} | dur=${Date.now()-p}ms`),s(),c.handleError(a)},handleDisconnect:a=>{(0,e.s)(q,`disconnect: ${a} | chunks=${m} | bytes=${n} | dur=${Date.now()-p}ms`),s(),c.handleDisconnect(a)},abort:()=>{s(),c.abort()}};h>0&&(l=setTimeout(()=>{l=null,0===m&&((0,e.s)(q,`FIRST-CHUNK TIMEOUT ${h}ms`),c.handleError?.(Error("stream first-chunk timeout")),c.abort?.())},h)),(0,e.s)(q,`pipe start | firstChunkTimeout=${h}ms | stallTimeout=${g}ms`);let u=new TransformStream({transform(a,b){1==++m&&(r(),!k&&g>0&&(k=setInterval(()=>{if(Date.now()-o>=g){let a=k;k=null,a&&clearInterval(a),(0,e.s)(q,`STALL TIMEOUT ${g}ms | chunks=${m} | bytes=${n} | sinceLast=${Date.now()-o}ms`),c.handleError?.(Error("stream stall timeout")),c.abort?.()}},Math.min(g,5e3))));let d=a?.byteLength||a?.length||0;n+=d;let f=Date.now(),h=f-o;o=f,e.T&&(m<=5||m%20==0||h>5e3)&&(0,e.s)(q,`chunk #${m} | size=${d}B | gap=${h}ms | total=${n}B`),b.enqueue(a)},flush(){(0,e.s)(q,`upstream EOF | chunks=${m} | bytes=${n} | dur=${Date.now()-p}ms`),s()}});return a?.body?i({readable:a.body.pipeThrough(u).pipeThrough(b),writable:{getWriter:()=>({abort:()=>Promise.resolve()})}},t,f):i({readable:new ReadableStream({start(a){a.error(Error("upstream response missing body"))}}),writable:{getWriter:()=>({abort:()=>Promise.resolve()})}},t,f)}},16799:(a,b,c)=>{c.d(b,{U:()=>l});var d=c(17429);let e="You are a lazy senior developer. Lazy means efficient, not careless. The best code is the code never written.",f="Before writing code, stop at the first rung that holds: 1) Does this need to exist at all? (YAGNI) 2) Stdlib does it? Use it. 3) Native platform feature covers it? Use it (CSS over JS, DB constraint over app code). 4) Already-installed dependency solves it? Use it; never add a new one for what a few lines can do. 5) Can it be one line? One line. 6) Only then: the minimum code that works.",g='No unrequested abstractions (no interface with one implementation, no factory for one product, no config for a value that never changes). No boilerplate or scaffolding "for later". Deletion over addition. Boring over clever. Fewest files possible; shortest working diff wins. Two stdlib options the same size: take the edge-case-correct one. Mark deliberate simplifications with a `ponytail:` comment naming the ceiling and upgrade path.',h="Code first. Then at most three short lines: what was skipped, when to add it. No essays or design notes. Pattern: `[code] → skipped: [X], add when [Y].`",i="Never simplify away: input validation at trust boundaries, error handling that prevents data loss, security, accessibility, anything explicitly requested. Non-trivial logic leaves ONE runnable check behind (an assert-based self-check or one small test file; no frameworks). Trivial one-liners need no test.",j="ACTIVE EVERY RESPONSE. No drift back to over-building. Still active if unsure.",k={lite:[e,"Lite: build what's asked, but name the lazier alternative in one line. User picks.",f,g,h,i,j].join(" "),full:[e,"Full: the ladder enforced. Stdlib and native first. Shortest diff, shortest explanation.",f,g,h,i,j].join(" "),ultra:[e,"Ultra: YAGNI extremist. Deletion before addition. Ship the one-liner and challenge the rest of the requirement in the same response.",f,g,h,i,j].join(" ")};function l(a,b,c){(0,d.J)(a,b,k[c])}},17429:(a,b,c)=>{c.d(b,{J:()=>f});var d=c(19956);function e(a,b){if(!a||!b)return!1;let c="string"==typeof b?b.trim():"";if(!c)return!1;let d=c.slice(0,100);return a.includes(d)}function f(a,b,c){if(a&&c)switch(b){case d.h.CLAUDE:!function(a,b){if("string"==typeof a.system&&a.system.length>0){if(e(a.system,b))return;a.system=`${a.system}
59
59
 
60
60
  ${b}`;return}if(Array.isArray(a.system)){if(e(a.system.map(a=>a?.text||"").join(" "),b))return;let c={type:"text",text:b},d=-1;for(let b=a.system.length-1;b>=0;b--)if(a.system[b]?.cache_control){d=b;break}d>=0?a.system.splice(d,0,c):a.system.push(c);return}a.system=b}(a,c);return;case d.h.GEMINI:case d.h.GEMINI_CLI:case d.h.VERTEX:case d.h.ANTIGRAVITY:!function(a,b){let c=a.request&&"object"==typeof a.request?a.request:a,d=Object.prototype.hasOwnProperty.call(c,"system_instruction")?"system_instruction":"systemInstruction",f=c[d];if(f&&Array.isArray(f.parts)){if(e(f.parts.map(a=>a.text||"").join(" "),b))return;f.parts.push({text:b});return}c[d]={parts:[{text:b}]}}(a,c);return;default:!function(a,b){if("string"==typeof a.instructions){if(e(a.instructions,b))return;a.instructions=a.instructions?`${a.instructions}
61
61
 
62
62
  ${b}`:b;return}let c=Array.isArray(a.messages)?a.messages:Array.isArray(a.input)?a.input: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}
63
63
 
64
- ${h}`:Array.isArray(g.content)?g.content.push({type:"input_text",text:h}):g.content=h}else c.unshift({role:"system",content:b})}(a,c)}}},27226:(a,b,c)=>{c.d(b,{Jz:()=>f,Qf:()=>l,lP:()=>k});var d=c(35570);let e={claude:["claude","anthropic"],"gemini-cli":["gemini-cli"],antigravity:["antigravity"],codex:["codex"]};function f(a={},b={}){let c=a["user-agent"]||"";return"antigravity"===b.userAgent?"antigravity":/^GitHubCopilotChat\/\d+\.\d+\.\d+/i.test(c)&&a["editor-version"]&&a["editor-plugin-version"]?"github-copilot":/claude-(?:cli|code)\/\d+\.\d+\.\d+/i.test(c)?"claude":/^GeminiCLI\/\d+\.\d+\.\d+/i.test(c)?"gemini-cli":/^(?:codex_cli_rs|codex-cli)\/\d+\.\d+\.\d+/i.test(c)?"codex":/^Cline\/\d+\.\d+\.\d+/i.test(c)&&"extension"===a["x-client-type"]?"cline":/^QwenCode\/\d+\.\d+\.\d+/i.test(c)?"qwen":c.includes("deepseek-tui")?"deepseek-tui":null}let g={claude:"claude-cli",codex:"codex-cli","gemini-cli":"gemini-cli",antigravity:"antigravity",cline:"cline",qwen:"qwen","github-copilot":"copilot"},h=/^claude-(?:cli|code)\/(\d+\.\d+\.\d+)(?:\s|\(|$)/i,i=/_session_([a-f0-9-]+)$/;function j(a,b){let c=a?.[b]??a?.[b.toLowerCase()];return"string"==typeof c&&c.trim()?c:null}function k(a,b={},c={}){let e=g[a];if(!e||f(b,c)!==a)return!1;if("claude"!==a)return(0,d.I2)(e,b);if(!function(a={},b={}){if(!a||"object"!=typeof a)return!1;let c=j(a,"user-agent"),e=c?.match(h)?.[1],f=(0,d.zi)("claude-cli")?.version;return!!(e&&e===f&&j(a,"x-app")?.toLowerCase()==="cli"&&j(a,"anthropic-beta")&&j(a,"x-stainless-package-version")&&j(a,"x-stainless-runtime-version")&&j(a,"x-stainless-os")&&j(a,"x-stainless-arch")&&function(a){let b=a?.metadata?.user_id;if("string"!=typeof b||!b)return null;let c=b.match(i)?.[1];if(c)return c;if("{"!==b[0])return null;try{let a=JSON.parse(b)?.session_id;if("string"!=typeof a)return null;let c=a.trim();return c&&c.length<=256?c:null}catch{return null}}(b))}(b,c))return!1;let l=b["user-agent"]||b["User-Agent"];return(0,d.I2)(e,{...b,"user-agent":l.replace(/^claude-code\//i,"claude-cli/")})}function l(a,b){if(!a)return!1;let c=e[a];if(!c)return!1;let d=b.startsWith("anthropic-compatible")?"anthropic":b;return c.includes(d)}},28190:(a,b,c)=>{c.d(b,{F:()=>g});let d=[{triggers:["mcp__exa__web_search_exa","mcp__exa__web_fetch_exa"],strip:["WebSearch","WebFetch","mcp__workspace__web_fetch"]},{triggers:["mcp__tavily__tavily_search","mcp__tavily__tavily_extract"],strip:["WebSearch","WebFetch","mcp__workspace__web_fetch"]},{triggers:[/^mcp__browsermcp__/],strip:[/^mcp__Claude_in_Chrome__/]}];function e(a){return a?.name||a?.function?.name||""}function f(a,b){return"string"==typeof b?a===b:b instanceof RegExp&&b.test(a)}function g(a){if(!Array.isArray(a)||0===a.length)return{tools:a,stripped:[]};let b=a.map(e),c=new Set;for(let a of d)if(b.some(b=>a.triggers.some(a=>f(b,a))))for(let d of b)a.strip.some(a=>f(d,a))&&c.add(d);return 0===c.size?{tools:a,stripped:[]}:{tools:a.filter(a=>!c.has(e(a))),stripped:Array.from(c)}}},29461:(a,b,c)=>{c.d(b,{$R:()=>j,Fo:()=>h,MK:()=>i,YZ:()=>k});var d=c(12407),e=c(6755),f=c(67677);let g=["temperature","top_p","top_k","max_tokens","max_completion_tokens","thinking","reasoning","enable_thinking","presence_penalty","frequency_penalty","seed","stop","tools","tool_choice","response_format","prediction","store","metadata","n","logprobs","top_logprobs","logit_bias","user","parallel_tool_calls"];function h(a,b){let c={messages:a.messages||[],model:a.model,stream:b};for(let b of g)void 0!==a[b]&&(c[b]=a[b]);return c}function i(a){return a&&"object"==typeof a?a.usage?.input_tokens!==void 0?{prompt_tokens:a.usage.input_tokens||0,completion_tokens:a.usage.output_tokens||0,cache_read_input_tokens:a.usage.cache_read_input_tokens,cache_creation_input_tokens:a.usage.cache_creation_input_tokens}:a.usage?.prompt_tokens!==void 0?{prompt_tokens:a.usage.prompt_tokens||0,completion_tokens:a.usage.completion_tokens||0,cached_tokens:a.usage.prompt_tokens_details?.cached_tokens,reasoning_tokens:a.usage.completion_tokens_details?.reasoning_tokens}:a.usageMetadata?{prompt_tokens:a.usageMetadata.promptTokenCount||0,completion_tokens:a.usageMetadata.candidatesTokenCount||0,cached_tokens:a.usageMetadata.cachedContentTokenCount||0,reasoning_tokens:a.usageMetadata.thoughtsTokenCount||0}:null:null}function j(a,b={}){return{provider:a.provider||"unknown",model:a.model||"unknown",connectionId:a.connectionId||void 0,timestamp:new Date().toISOString(),latency:a.latency||{ttft:0,total:0},tokens:a.tokens||{prompt_tokens:0,completion_tokens:0},request:a.request,providerRequest:a.providerRequest||null,providerResponse:a.providerResponse||null,response:a.response||{},pxpipe:a.pxpipe||void 0,rtk:a.rtk||void 0,status:a.status||"success",...b}}function k(a){let b=function({provider:a,model:b,tokens:c,connectionId:g,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=g?` | account=${g.slice(0,8)}...`:"";console.log(`${e.lm.green}[${n}] 📊 [${k}] ${a.toUpperCase()} | in=${l} | out=${m}${o}${e.lm.reset}`);let p=(0,f._6)(c)||{prompt_tokens:c.prompt_tokens??c.input_tokens??0,completion_tokens:c.completion_tokens??c.output_tokens??0};return(0,d.sZ)({provider:a||"unknown",model:b||"unknown",tokens:p,timestamp:new Date().toISOString(),connectionId:g||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=>{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}
64
+ ${h}`:Array.isArray(g.content)?g.content.push({type:"input_text",text:h}):g.content=h}else c.unshift({role:"system",content:b})}(a,c)}}},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}){let h=a.getReader(),i=!1,j=!1,k=!1,l=null,m=null,n=()=>{l&&(clearTimeout(l),l=null)},o=a=>{try{a.error(Error("stream first-chunk timeout"))}catch{}},p=()=>m?.();c?.addEventListener?.("abort",p);let q=()=>{n(),c?.removeEventListener?.("abort",p)};return new ReadableStream({async pull(a){if(k){q(),a.close();return}if(c?.aborted)return(q(),i)?o(a):void a.close();try{for(;;){let b=!i&&f>0?new Promise(a=>{l=setTimeout(()=>a({timeout:!0}),f)}):null,d=c?new Promise(a=>{m=()=>a({aborted:!0}),c.aborted&&m()}):null,e=h.read().catch(a=>({error:a})),g=await Promise.race([e,b,d].filter(Boolean));if(m=null,n(),g.aborted||k){if(q(),await h.cancel().catch(()=>{}),i&&!k)return o(a);a.close();return}if(g.error)throw g.error;if(g.timeout){if(await h.cancel().catch(()=>{}),await r(a,"first-chunk timeout"))continue;return q(),o(a)}if(g.done){if(!i&&await r(a,"empty EOF"))continue;if(q(),!i)return o(a);a.close();return}i=!0,a.enqueue(g.value);return}}catch(b){q();try{a.error(b)}catch{}}},cancel(){k=!0,q(),h?.cancel().catch(()=>{})}});async function r(a,d){if(j||k||c?.aborted)return!1;j=!0,g?.warn?.("STREAM",`zero-byte ${d} | retrying once`);let e=await b();return k||c?.aborted?(await e?.cancel?.().catch(()=>{}),q(),a.close(),!1):!!e&&(h=e.getReader(),i=!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:()=>j,Fo:()=>h,MK:()=>i,YZ:()=>k});var d=c(12407),e=c(6755),f=c(67677);let g=["temperature","top_p","top_k","max_tokens","max_completion_tokens","thinking","reasoning","enable_thinking","presence_penalty","frequency_penalty","seed","stop","tools","tool_choice","response_format","prediction","store","metadata","n","logprobs","top_logprobs","logit_bias","user","parallel_tool_calls"];function h(a,b){let c={messages:a.messages||[],model:a.model,stream:b};for(let b of g)void 0!==a[b]&&(c[b]=a[b]);return c}function i(a){return a&&"object"==typeof a?a.usage?.input_tokens!==void 0?{prompt_tokens:a.usage.input_tokens||0,completion_tokens:a.usage.output_tokens||0,cache_read_input_tokens:a.usage.cache_read_input_tokens,cache_creation_input_tokens:a.usage.cache_creation_input_tokens}:a.usage?.prompt_tokens!==void 0?{prompt_tokens:a.usage.prompt_tokens||0,completion_tokens:a.usage.completion_tokens||0,cached_tokens:a.usage.prompt_tokens_details?.cached_tokens,reasoning_tokens:a.usage.completion_tokens_details?.reasoning_tokens}:a.usageMetadata?{prompt_tokens:a.usageMetadata.promptTokenCount||0,completion_tokens:a.usageMetadata.candidatesTokenCount||0,cached_tokens:a.usageMetadata.cachedContentTokenCount||0,reasoning_tokens:a.usageMetadata.thoughtsTokenCount||0}:null:null}function j(a,b={}){return{provider:a.provider||"unknown",model:a.model||"unknown",connectionId:a.connectionId||void 0,timestamp:new Date().toISOString(),latency:a.latency||{ttft:0,total:0},tokens:a.tokens||{prompt_tokens:0,completion_tokens:0},request:a.request,providerRequest:a.providerRequest||null,providerResponse:a.providerResponse||null,response:a.response||{},pxpipe:a.pxpipe||void 0,rtk:a.rtk||void 0,status:a.status||"success",...b}}function k(a){let b=function({provider:a,model:b,tokens:c,connectionId:g,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=g?` | account=${g.slice(0,8)}...`:"";console.log(`${e.lm.green}[${n}] 📊 [${k}] ${a.toUpperCase()} | in=${l} | out=${m}${o}${e.lm.reset}`);let p=(0,f._6)(c)||{prompt_tokens:c.prompt_tokens??c.input_tokens??0,completion_tokens:c.completion_tokens??c.output_tokens??0};return(0,d.sZ)({provider:a||"unknown",model:b||"unknown",tokens:p,timestamp:new Date().toISOString(),connectionId:g||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=>{try{await Promise.resolve(j?.(a,{upstreamError:q?.error||null}))}catch{}let b=q?.kind==="error_object"?q.line:`data: ${JSON.stringify({error:{code:502,status:"EMPTY_RESPONSE",message:a}})}`;await r(`${b}
65
65
 
66
- `),s()};for(let a=0;;a++){let e=new TextDecoder,j="",k=null,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(c?.aborted)return t();try{a=await l.read()}catch{if(c?.aborted)return t();o=v?"stall":"read_error";break}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{l=(await b()).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:()=>Q});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(27226),D=c(28190),E=c(10640),F=c(37208),G=c(16799),H=c(92),I=c(12197),J=c(54070),K=c(39232),L=c(90197),M=c(43904),N=c(94501),O=c(96145),P=a([w]);w=(P.then?(await P)():P)[0];let R=new Set([h.h.GEMINI,h.h.GEMINI_CLI,h.h.ANTIGRAVITY,h.h.VERTEX]);async function Q({body:a,modelInfo:b,credentials:c,log:d,onCredentialsRefreshed:P,onRequestSuccess:S,onDisconnect:T,onUpstreamEmptyExhausted:U,clientRawRequest:V,connectionId:W,userAgent:X,clientKeyId:Y,ccFilterNaming:Z,rtkEnabled:$,vaultEnabled:_,vaultThresholdKB:aa,vaultTtlHours:ab,vaultConversationId:ac,headroomEnabled:ad,headroomUrl:ae,headroomCompressUserMessages:af,cavemanEnabled:ag,cavemanLevel:ah,ponytailEnabled:ai,ponytailLevel:aj,pxpipeEnabled:ak,pxpipeMinChars:al,pxpipeTimeoutMs:am,pxpipeTransform:an,onPxpipeEvent:ao,sourceFormatOverride:ap,providerThinking:aq,bypassNativePassthrough:ar,vaultInternal:as,abortSignal:at}){let au,av,aw,ax,ay,az,{provider:aA,model:aB}=b,aC=Date.now(),aD=ap||(0,e.Tz)(a),aE=(0,u.c)(a,aB,X,Z);if(aE)return aE;let aF=q.Xg[aA]||aA,aG=(0,q.ux)(aF,aB),aH=(0,q.ez)(aF,aB),aI=aG||(0,e.jJ)(aA,c),aJ=(0,e.oF)(aA,aD,aH),aK=aJ||(0,e.oF)(aA,aI,aH),aL=aJ?.format===aD;c&&(c.runtimeTransport=aK||void 0);let aM=aL?aD:aK?.format||aI,aN=(0,q.cY)(aF,aB),aO=(0,q.kt)(aF,aB);if(aq?.mode&&"auto"!==aq.mode){let b=aq.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 aP=V?.headers?.accept||"",aQ=aP.includes("application/json"),aR=aP.includes("text/event-stream"),aS=aD===h.h.ANTIGRAVITY||aD===h.h.GEMINI||aD===h.h.GEMINI_CLI,aT=!0===a.stream||aS&&!(aQ&&!aR),aU=r.xq[aA]?.forceStream===!0,aV=!!aU||!1!==a.stream,aW=(0,q.OA)(aF,aB);"imageGen"===aW&&("antigravity"===aA||"gemini-cli"===aA)&&(aV=!1);let aX=(0,C.Jz)(V?.headers||{},a);"deepseek-tui"===aX&&!0!==a.stream&&(aV=!1),!aQ||aR||!0===a.stream||aU||(aV=!1),a&&"object"==typeof a&&(a={...a,stream:aV});let aY=await (0,o.q7)(aD,aM,aB);V&&aY.logClientRawRequest(V.endpoint,V.body,V.headers),aY.logRawRequest(a),d?.debug?.("FORMAT",`${aD} → ${aM} | stream=${aV}`);let aZ=(0,C.Jz)(V?.headers||{},a);(0,C.lP)(aZ,V?.headers||{},a);let a$=!ar&&(0,C.Qf)(aZ,aA);if(c&&(c.rawHeaders=V?.headers||{}),!a$){let b=(0,M.nl)(aA,aB);(0,N.X)(a,aD,b)&&d?.debug?.("MODALITY",`stripped unsupported media for ${aA}/${aB}`);try{let b=await (0,O.C)(a,aD,aM,{signal:at});b>0&&d?.debug?.("MODALITY",`prefetched ${b} remote image(s) for ${aM}`)}catch(a){d?.warn?.("MODALITY",`image prefetch failed: ${a.message}`)}}let a_=(0,E.Ay)(a);if(a_>0&&d?.debug?.("TOOLCLEAN",`pre-translation: stripped ${a_} orphaned tool result(s)`),a$)d?.debug?.("PASSTHROUGH",`${aZ} → ${aA} | native lossless`),au={...a,model:(0,g.kD)(aO)},"claude"===aZ&&(0,i.ui)(au,au.model);else{if(!(au=(0,f.GH)(aD,aM,aO,a,aV,c,aA,aY,aN,W,aZ)))return(0,v.uw)(aB,aA,W,!1,!0),(0,s.A1)(t.gx.BAD_REQUEST,`Failed to translate request for ${aD} → ${aM}`);av=au._toolNameMap,delete au._toolNameMap,au.model=(0,g.kD)(aO)}if("claude"===aZ&&Array.isArray(au.tools)){let{tools:a,stripped:b}=(0,D.F)(au.tools);b.length>0&&(au.tools=a,d?.debug?.("TOOLDEDUP",`stripped ${b.length}: ${b.slice(0,3).join(", ")}${b.length>3?"...":""}`))}let a0=a$?aD:aM;"tts"===(0,q.OA)(aF,aB)&&au.messages&&(au.messages=au.messages.filter(a=>"tool"!==a.role),delete au.tools);let a1=null;try{if(_&&ac&&Array.isArray(au?.tools)&&au.tools.length>0&&(aD===h.h.OPENAI||aD===h.h.CLAUDE)){let a=1024*(0,I.u1)(aa??8),b=3600*Math.max(1,Number(ab??24))*1e3;a1=await (0,I.f3)(au,{conversationId:ac,thresholdBytes:a,ttlMs:b,log:d})}}catch(a){d?.warn?.("VAULT",`store failed (dropped): ${a?.message||a}`)}let a2=V?.headers?.[t.SA]?.toLowerCase()!=="off",a3=(0,H.BI)(au,a2&&$),a4=(0,H.fT)(a3);if(a4&&console.log(a4),a1?.vaulted>0){let a=a1.bytesBefore-a1.bytesAfter;(0,J.DL)(a1.vaulted,a),d?.info?.("VAULT",`externalized ${a1.vaulted} tool result(s), saved ${a}B`)}let a5={},a6=await (0,K.SI)(au,{enabled:a2&&ad,url:ae,model:aO,format:a0,compressUserMessages:af,diagnostics:a5}),a7=(0,K.Nv)(a6),a8=(0,K.O2)(a5);a7?(d?.info?.("HEADROOM",`${a7}${a8?` | ${a8}`:""}`),(0,K.cB)(a6,a5)&&d?.warn?.("HEADROOM",`reported token delta, but outbound JSON shrank <5%; provider may bill near-original payload | ${a8}`)):a2&&ad&&d?.warn?.("HEADROOM",`skipped: ${a5.reason||"compression unavailable"}${a5.endpoint?` (${a5.endpoint})`:""}`);let a9=(0,E.Ay)(au);a9>0&&d?.debug?.("TOOLCLEAN",`post-compression: stripped ${a9} orphaned tool result(s)`),a2&&ag&&ah&&((0,F.p)(au,a0,ah),d?.debug?.("CAVEMAN",`${ah} | ${a0}`)),a2&&ai&&aj&&((0,G.U)(au,a0,aj),d?.debug?.("PONYTAIL",`${aj} | ${a0}`));let ba=null;if(a2&&ak){let a=await (0,L.H)(au,{enabled:!0,format:a0,model:aO,minChars:al,timeoutMs:am,transform:an});ba=a.summary;let b=(0,L._)(ba);b?d?.info?.("PXPIPE",b):d?.debug?.("PXPIPE",`skipped: ${ba?.reason||"unknown"}`),a.body&&(au=a.body);try{ao&&ao({provider:aA,model:aB,...ba})}catch{}}if(au&&"object"==typeof au)if(R.has(a0)){let{stream:a,request:b,...c}=au;if(b&&"object"==typeof b){let{stream:a,...d}=b;au={...c,request:d}}else au=c}else au.stream!==aV&&(au={...au,stream:aV});a$&&"claude"===aZ&&(0,i._W)(au);let bb=(0,w.getExecutor)(aA);(0,v.uw)(aB,aA,W,!0),as||(0,v.E5)({model:aB,provider:aA,connectionId:W,status:"PENDING"}).catch(()=>{});let bc=au.messages?.length||au.input?.length||au.contents?.length||au.request?.contents?.length||0;d?.debug?.("REQUEST",`${aA.toUpperCase()} | ${aB} | ${bc} msgs`);let bd=(0,k.jd)({onDisconnect:a=>{(0,v.uw)(aB,aA,W,!1),T&&T(a)},onError:()=>(0,v.uw)(aB,aA,W,!1),log:d,provider:aA,model:aB});if(at)if(at.aborted)try{bd.abort()}catch{}else at.addEventListener("abort",()=>{try{bd.abort()}catch{}},{once:!0});let be=(0,p.$6)(c);if(be.vercelRelayUrl){let a=c?.connectionName||c?.connectionId||"unknown",b=c?.providerSpecificData?.connectionProxyPoolId||"none";d?.info?.("PROXY",`${aA.toUpperCase()} | ${aB} | conn=${a} | pool=${b} | vercel-relay=${be.vercelRelayUrl}`)}else if(be.connectionProxyEnabled&&be.connectionProxyUrl){let a=be.connectionProxyUrl;try{let b=new URL(be.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",`${aA.toUpperCase()} | ${aB} | conn=${e} | pool=${b} | url=${a}`)}if(be.connectionProxyEnabled&&be.connectionNoProxy){let a=c?.connectionName||c?.connectionId||"unknown";d?.debug?.("PROXY",`${aA.toUpperCase()} | ${aB} | conn=${a} | no_proxy=${be.connectionNoProxy}`)}let bf=(0,x.Fo)(a,aV);try{let a=await bb.execute({model:aB,body:structuredClone(au),stream:aV,credentials:c,signal:bd.signal,log:d,proxyOptions:be});aw=a.response,ax=a.url,ay=a.headers,az=a.transformedBody,aY.logTargetRequest(ax,ay,az)}catch(b){if((0,v.uw)(aB,aA,W,!1,!0),aY?.close?.(),(0,v.ox)((0,x.$R)({provider:aA,model:aB,connectionId:W,latency:{ttft:0,total:Date.now()-aC},tokens:{prompt_tokens:0,completion_tokens:0},request:bf,providerRequest:au||null,response:{error:b.message||String(b),status:"AbortError"===b.name?499:502,thinking:null},status:"error",pxpipe:ba||void 0,rtk:a3||void 0})).catch(()=>{}),"AbortError"===b.name)return bd.handleError(b),(0,s.A1)(499,"Request aborted");let a=(0,s.lR)(b,aA,aB,t.gx.BAD_GATEWAY);return console.log(`${j.lm.red}[ERROR] ${a}${j.lm.reset}`),(0,s.A1)(t.gx.BAD_GATEWAY,a)}let bg=null;if(!bb.noAuth&&(aw.status===t.gx.UNAUTHORIZED||aw.status===t.gx.FORBIDDEN))try{let a=await (0,l.qZ)(async()=>{let a=await (0,n.MF)(aA,c,()=>bb.refreshCredentials(c,d,be));return a?.refreshToken&&a.refreshToken!==c.refreshToken&&(a.accessToken&&(c.accessToken=a.accessToken),c.refreshToken=a.refreshToken),a},3,d);if(a?.accessToken||a?.copilotToken){if(d?.info?.("TOKEN",`${aA.toUpperCase()} | refreshed`),Object.assign(c,a),P)try{await P(a)}catch(a){d?.warn?.("TOKEN",`onCredentialsRefreshed failed: ${a.message}`)}try{let a=await bb.execute({model:aB,body:structuredClone(au),stream:aV,credentials:c,signal:bd.signal,log:d,proxyOptions:be});try{await aw.body?.cancel?.()}catch{}aw=a.response,ax=a.url,ay=a.headers??ay,az=a.transformedBody??az,aY.logTargetRequest(ax,ay,az)}catch{d?.warn?.("TOKEN",`${aA.toUpperCase()} | retry after refresh failed`)}}else if((0,l.jT)(a)){let b=a.code||"invalid_grant";if(bg=`OAuth refresh token expired or revoked (${b}): reconnect the ${aA} account in the Switchboard dashboard`,d?.warn?.("TOKEN",`${aA.toUpperCase()} | refresh token revoked, re-auth required (${b})`),P)try{await P({reauthRequired:!0,testStatus:m.RU,lastError:bg,lastErrorAt:new Date().toISOString()})}catch(a){d?.warn?.("TOKEN",`onCredentialsRefreshed failed: ${a.message}`)}}else d?.warn?.("TOKEN",`${aA.toUpperCase()} | refresh failed`)}catch(a){d?.warn?.("TOKEN",`${aA.toUpperCase()} | refresh threw: ${a.message}`)}if(!aw.ok){(0,v.uw)(aB,aA,W,!1,!0),aY?.close?.();let{statusCode:a,message:b,resetsAtMs:c}=await (0,s.zL)(aw,bb),d=bg||b;(0,v.ox)((0,x.$R)({provider:aA,model:aB,connectionId:W,latency:{ttft:0,total:Date.now()-aC},tokens:{prompt_tokens:0,completion_tokens:0},request:bf,providerRequest:az||au||null,response:{error:d,status:a,thinking:null},status:"error",pxpipe:ba||void 0,rtk:a3||void 0})).catch(()=>{});let e=(0,s.lR)(Error(d),aA,aB,a);return console.log(`${j.lm.red}[ERROR] ${e}${j.lm.reset}`),aY.logError(Error(d),az||au),(0,s.A1)(a,e,c)}if(("antigravity"===aA||"gemini-cli"===aA||"gemini"===aA||"vertex"===aA)&&aV&&aw.body){let a=async()=>{let a=await bb.execute({model:aB,body:structuredClone(au),stream:aV,credentials:c,signal:bd.signal,log:d,proxyOptions:be});if(!a.response.ok){let{statusCode:b,message:c}=await (0,s.zL)(a.response,bb);throw Error(`[${b}] ${c}`)}if(!a.response.body)throw Error("upstream returned no body");return a.response.body};aw=new Response((0,B.gH)({body:aw.body,reexecute:a,signal:bd.signal,log:d,onExhausted:(a,{upstreamError:b}={})=>{if(!U)return;let c=bb.parseRetryFromErrorMessage?.(b?.message||a);return U((0,s.lR)(Error(a),aA,aB,t.gx.BAD_GATEWAY),c?Date.now()+c:void 0)}}),{status:aw.status,headers:aw.headers})}let bh=`${Date.now()}-${Math.random().toString(36).slice(2,11)}`,bi={provider:aA,model:aB,body:a,stream:aV,requestConfig:bf,translatedBody:au,finalBody:az,requestStartTime:aC,connectionId:W,clientKeyId:Y,clientRawRequest:V,onRequestSuccess:S,requestId:bh,pxpipe:ba||void 0,streamSignal:bd.signal},bj=a=>{as||(0,v.E5)({model:aB,provider:aA,connectionId:W,...a}).catch(()=>{})},bk=()=>(0,v.uw)(aB,aA,W,!1);if(!aT&&aU){let a=await (0,y.I)({...bi,providerResponse:aw,sourceFormat:aD,targetFormat:aM,trackDone:bk,appendLog:bj});if(a)return bd.handleComplete(),a}if(!aV){let a=await (0,z.N)({...bi,providerResponse:aw,sourceFormat:aD,targetFormat:aM,reqLogger:aY,toolNameMap:av,trackDone:bk,appendLog:bj});return bd.handleComplete(),a}let{onStreamComplete:bl,streamDetailId:bm}=(0,A.$)({...bi});return(0,A.M)({...bi,providerResponse:aw,sourceFormat:aD,targetFormat:aM,userAgent:X,reqLogger:aY,toolNameMap:av,streamController:bd,onStreamComplete:bl,streamDetailId:bm})}d()}catch(a){d(a)}})},37208:(a,b,c)=>{c.d(b,{p:()=>n});var d=c(17429);let e="Code blocks, file paths, commands, errors, URLs: keep exact. Security warnings, irreversible action confirmations, multi-step ordered sequences: write normal. Resume terse style after.",f='Not: "Sure! I\'d be happy to help you with that. The issue you\'re experiencing is likely caused by..." Yes: "Bug in auth middleware. Token expiry check use `<` not `<=`. Fix:"',g="Auto-Clarity: drop caveman for security warnings, irreversible actions, multi-step sequences where fragment ambiguity risks misread, or when user repeats a question. Resume after the clear part.",h="ACTIVE EVERY RESPONSE. No revert after many turns. No filler drift. Still active if unsure.",i="No invented abbreviations. Standard well-known tech acronyms (DB, API, HTTP, URL, JSON, ID, OS, CPU) OK. Names of code symbols, function names, API names, error strings: keep verbatim.",j="Preserve the user's dominant language. User wrote Vietnamese, reply Vietnamese. User wrote English, reply English. Wenyan/classical-Chinese levels override this language-preservation rule. Code identifiers, error strings, file paths, commands: keep in their original form regardless of language.",k='No self-reference. Do not name or announce the style (no "caveman mode", no "me caveman think", no "compressed mode active"). Just respond.',l='No decorative emoji. No narrating tool calls ("I will now search", "I used X to find Y"). No status phrases ("Sure!", "Of course!", "I\'d be happy to"). No causal arrow shorthand ("A -> B -> fails"). State the thing, the action, the reason. Then next step.',m={lite:["Respond tersely. Keep grammar and full sentences but drop filler, hedging and pleasantries (just/really/basically/sure/of course/I'd be happy to). Pattern: state the thing, the action, the reason. Then next step.",f,e,g,h,i,j,k,l].join(" "),full:["Respond like terse caveman. All technical substance stay exact, only fluff die. Drop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries, hedging. Fragments OK. Short synonyms (big not extensive, fix not implement a solution for). Pattern: [thing] [action] [reason]. [next step].",f,e,g,h,i,j,k,l].join(" "),ultra:["Respond ultra-terse. Maximum compression. Telegraphic. Strip conjunctions. One word when one word enough. Pattern: [thing] [action] [reason]. [next step].",f,e,g,h,i,j,k,l].join(" "),"wenyan-lite":["Respond semi-classical. Drop filler/hedging but keep grammar structure, classical register. Use classical Chinese sentence patterns where natural. Keep English for technical terms.",f,e,g,h,i,j,k,l].join(" "),wenyan:["Respond classical Chinese (文言文). Maximum classical terseness. 80-90% character reduction. Classical sentence patterns, verbs precede objects, subjects often omitted, classical particles (之/乃/為/其). Keep English for code, commands, function names, API names, error strings.",f,e,g,h,i,j,k,l].join(" "),"wenyan-ultra":["Respond extreme classical compression (文言文 ultra). Maximum compression, ultra terse. Same classical rules as wenyan-full but even more compressed. One classical particle per clause.",f,e,g,h,i,j,k,l].join(" ")};function n(a,b,c){(0,d.J)(a,b,m[c])}},39232:(a,b,c)=>{c.d(b,{Nv:()=>l,O2:()=>m,SI:()=>k,cB:()=>n});var d=c(37377),e=c(29229),f=c(97579);function g(a){try{return new TextEncoder().encode(JSON.stringify(a)||"").length}catch{return 0}}function h(a){let b=Array.isArray(a?.messages)?a.messages:Array.isArray(a?.input)?a.input:null,c=b?.filter(a=>a?.role==="tool"||a?.role==="function"||a?.tool_calls?.length||a?.content?.some?.(a=>a?.type==="tool_use"||a?.type==="tool_result"))||[];return{bodyBytes:g(a),messageBytes:b?g(b):0,toolSchemaBytes:g(a?.tools||[]),toolHistoryBytes:g(c)}}function i(a,b){a&&!a.reason&&(a.reason=b)}async function j(a,b,c,d,e,f){let g,h=function(a){try{let b=new URL(a);return b.pathname=`${b.pathname.replace(/\/$/,"")}/v1/compress`,b.hash="",b.toString()}catch{let[b,c=""]=String(a).replace(/#.*$/,"").split("?",2),d=`${b.replace(/\/$/,"")}/v1/compress`;return c?`${d}?${c}`:d}}(a);f.endpoint=function(a){try{let b=new URL(a);return b.username="",b.password="",b.search="",b.hash="",b.toString()}catch{return String(a).replace(/\/\/[^/@\s]+@/,"//").replace(/[?#].*$/,"")}}(h);let j={messages:b,model:c};e&&(j.config={compress_user_messages:!0});try{g=await fetch(h,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(j),signal:AbortSignal.timeout(d)})}catch(d){var k;let a,b,c;return i(f,`request failed: ${(k=d,a=k?.cause,b=a?.code||k?.code,c=String(a?.message||k?.message||String(k)).replace(/\/\/[^/@\s]+@/g,"//").replace(/(https?:\/\/[^\s?#]+)[?#][^\s)]*/g,"$1"),b?`${b}: ${c}`:c)}`),null}if(!g.ok)return i(f,`proxy returned HTTP ${g.status}`),null;let l=await g.json();return Array.isArray(l?.messages)?l:(i(f,"proxy response missing messages[]"),null)}async function k(a,{enabled:b,url:c,model:g,format:l,compressUserMessages:m,timeoutMs:n=3e3,diagnostics:o=null}={}){if(!b)return i(o,"disabled"),null;if(!c)return i(o,"missing proxy URL"),null;if(!a)return i(o,"missing request body"),null;try{if(o&&(o.before=h(a)),"claude"===l){let b=(0,d.t)(g,a,!1);if(!Array.isArray(b?.messages))return i(o,"Claude request did not translate to messages[]"),null;let f=await j(c,b.messages,g,n,m,o||{});if(!f)return null;let k=(0,e.p)(g,{...b,messages:f.messages},!1);return Array.isArray(k?.messages)&&(a.messages=k.messages),k?.system!==void 0&&(a.system=k.system),o&&(o.after=h(a)),f}if("openai-responses"===l){if(Array.isArray(a?.input)&&a.input.some(a=>!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.type&&"message"!==a.type))return i(o,"skipped: openai-responses tool/reasoning input is not safe to compress"),null;let b=(0,f.Z)(g,a,!1);if(!Array.isArray(b?.messages))return null;let d=await j(c,b.messages,g,n,m,o||{});if(!d)return null;let e=(0,f.h)(g,{...b,input:void 0,messages:d.messages},!1);return Array.isArray(e?.input)&&(a.input=e.input),o&&(o.after=h(a)),d}let b=Array.isArray(a.messages)?"messages":Array.isArray(a.input)?"input":null;if(!b)return i(o,`unsupported ${l||"unknown"} request shape`),null;let k=await j(c,a[b],g,n,m,o||{});if(!k)return null;return a[b]=k.messages,o&&(o.after=h(a)),k}catch(a){return i(o,`unexpected error: ${a?.message||String(a)}`),null}}function l(a){if(!a)return null;let b=a.tokens_before||0,c=a.tokens_after||0,d=a.tokens_saved||0,e=b>0?(d/b*100).toFixed(1):"0";return`reported token delta=${d} before=${b}${c?` after=${c}`:""} (${e}%)`.trim()}function m(a){let b=a?.before,c=a?.after;if(!b||!c)return"";let d=b.bodyBytes>0?((b.bodyBytes-c.bodyBytes)/b.bodyBytes*100).toFixed(1):"0.0";return`body=${b.bodyBytes}B→${c.bodyBytes}B messages=${b.messageBytes}B→${c.messageBytes}B tools=${b.toolSchemaBytes||0}B→${c.toolSchemaBytes||0}B toolHistory=${b.toolHistoryBytes||0}B→${c.toolHistoryBytes||0}B effective=${d}%`}function n(a,b,c=.05){if(!a?.tokens_saved||a.tokens_saved<=0)return!1;let d=b?.before?.bodyBytes||0,e=b?.after?.bodyBytes||0;return!(d<=0)&&!(e<=0)&&e>=d*(1-c)}},49612:(a,b,c)=>{c.d(b,{g:()=>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,streamDetailId:H,pxpipe:I}){let J=(a.headers.get("content-type")||"").toLowerCase();if((J.includes("application/x-ndjson")||J.includes("application/ndjson"))&&a.body){let b,c,d,e;a=new Response(a.body.pipeThrough((b=new TextDecoder,c=new TextEncoder,d="",new TransformStream({transform(a,e){let f=(d+=b.decode(a,{stream:!0})).split("\n");for(let a of(d=f.pop()||"",f)){let b=a.trim();if(b){if(b.startsWith("data:")||b.startsWith("event:")){e.enqueue(c.encode(a+"\n"));continue}try{JSON.parse(b),e.enqueue(c.encode(`data: ${b}
66
+ `),s()};for(let a=0;;a++){let e=new TextDecoder,j="",k=null,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(c?.aborted)return t();try{a=await l.read()}catch{if(c?.aborted)return t();o=v?"stall":"read_error";break}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{l=(await b()).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:()=>R});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(12197),K=c(54070),L=c(39232),M=c(90197),N=c(43904),O=c(94501),P=c(96145),Q=a([w]);w=(Q.then?(await Q)():Q)[0];let S=new Set([h.h.GEMINI,h.h.GEMINI_CLI,h.h.ANTIGRAVITY,h.h.VERTEX]);async function R({body:a,modelInfo:b,credentials:c,log:d,onCredentialsRefreshed:Q,onRequestSuccess:T,onDisconnect:U,onUpstreamEmptyExhausted:V,clientRawRequest:W,connectionId:X,userAgent:Y,clientKeyId:Z,ccFilterNaming:$,rtkEnabled:_,vaultEnabled:aa,vaultThresholdKB:ab,vaultTtlHours:ac,vaultConversationId:ad,headroomEnabled:ae,headroomUrl:af,headroomCompressUserMessages:ag,cavemanEnabled:ah,cavemanLevel:ai,ponytailEnabled:aj,ponytailLevel:ak,pxpipeEnabled:al,pxpipeMinChars:am,pxpipeTimeoutMs:an,pxpipeTransform:ao,onPxpipeEvent:ap,sourceFormatOverride:aq,providerThinking:ar,bypassNativePassthrough:as,vaultInternal:at,abortSignal:au}){let av,aw,ax,ay,az,aA,{provider:aB,model:aC}=b,aD=Date.now(),aE=aq||(0,e.Tz)(a),aF=(0,u.c)(a,aC,Y,$);if(aF)return aF;let aG=q.Xg[aB]||aB,aH=(0,q.ux)(aG,aC),aI=(0,q.ez)(aG,aC),aJ=aH||(0,e.jJ)(aB,c),aK=(0,e.oF)(aB,aE,aI),aL=aK||(0,e.oF)(aB,aJ,aI),aM=aK?.format===aE;c&&(c.runtimeTransport=aL||void 0);let aN=aM?aE:aL?.format||aJ,aO=(0,q.cY)(aG,aC),aP=(0,q.kt)(aG,aC);if(ar?.mode&&"auto"!==ar.mode){let b=ar.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 aQ=W?.headers?.accept||"",aR=aQ.includes("application/json"),aS=aQ.includes("text/event-stream"),aT=aE===h.h.ANTIGRAVITY||aE===h.h.GEMINI||aE===h.h.GEMINI_CLI,aU=!0===a.stream||aT&&!(aR&&!aS),aV=r.xq[aB]?.forceStream===!0,aW=!!aV||!1!==a.stream,aX=(0,q.OA)(aG,aC);"imageGen"===aX&&("antigravity"===aB||"gemini-cli"===aB)&&(aW=!1);let aY=(0,D.Jz)(W?.headers||{},a);"deepseek-tui"===aY&&!0!==a.stream&&(aW=!1),!aR||aS||!0===a.stream||aV||(aW=!1),a&&"object"==typeof a&&(a={...a,stream:aW});let aZ=await (0,o.q7)(aE,aN,aC);W&&aZ.logClientRawRequest(W.endpoint,W.body,W.headers),aZ.logRawRequest(a),d?.debug?.("FORMAT",`${aE} → ${aN} | stream=${aW}`);let a$=(0,D.Jz)(W?.headers||{},a);(0,D.lP)(a$,W?.headers||{},a);let a_=!as&&(0,D.Qf)(a$,aB);if(c&&(c.rawHeaders=W?.headers||{}),!a_){let b=(0,N.nl)(aB,aC);(0,O.X)(a,aE,b)&&d?.debug?.("MODALITY",`stripped unsupported media for ${aB}/${aC}`);try{let b=await (0,P.C)(a,aE,aN,{signal:au});b>0&&d?.debug?.("MODALITY",`prefetched ${b} remote image(s) for ${aN}`)}catch(a){d?.warn?.("MODALITY",`image prefetch failed: ${a.message}`)}}let a0=(0,F.Ay)(a);if(a0>0&&d?.debug?.("TOOLCLEAN",`pre-translation: stripped ${a0} orphaned tool result(s)`),a_)d?.debug?.("PASSTHROUGH",`${a$} → ${aB} | native lossless`),av={...a,model:(0,g.kD)(aP)},"claude"===a$&&(0,i.ui)(av,av.model);else{if(!(av=(0,f.GH)(aE,aN,aP,a,aW,c,aB,aZ,aO,X,a$)))return(0,v.uw)(aC,aB,X,!1,!0),(0,s.A1)(t.gx.BAD_REQUEST,`Failed to translate request for ${aE} → ${aN}`);aw=av._toolNameMap,delete av._toolNameMap,av.model=(0,g.kD)(aP)}if("claude"===a$&&Array.isArray(av.tools)){let{tools:a,stripped:b}=(0,E.F)(av.tools);b.length>0&&(av.tools=a,d?.debug?.("TOOLDEDUP",`stripped ${b.length}: ${b.slice(0,3).join(", ")}${b.length>3?"...":""}`))}let a1=a_?aE:aN;"tts"===(0,q.OA)(aG,aC)&&av.messages&&(av.messages=av.messages.filter(a=>"tool"!==a.role),delete av.tools);let a2=null;try{if(aa&&ad&&Array.isArray(av?.tools)&&av.tools.length>0&&(aE===h.h.OPENAI||aE===h.h.CLAUDE)){let a=1024*(0,J.u1)(ab??8),b=3600*Math.max(1,Number(ac??24))*1e3;a2=await (0,J.f3)(av,{conversationId:ad,thresholdBytes:a,ttlMs:b,log:d})}}catch(a){d?.warn?.("VAULT",`store failed (dropped): ${a?.message||a}`)}let a3=W?.headers?.[t.SA]?.toLowerCase()!=="off",a4=(0,I.BI)(av,a3&&_),a5=(0,I.fT)(a4);if(a5&&console.log(a5),a2?.vaulted>0){let a=a2.bytesBefore-a2.bytesAfter;(0,K.DL)(a2.vaulted,a),d?.info?.("VAULT",`externalized ${a2.vaulted} tool result(s), saved ${a}B`)}let a6={},a7=await (0,L.SI)(av,{enabled:a3&&ae,url:af,model:aP,format:a1,compressUserMessages:ag,diagnostics:a6}),a8=(0,L.Nv)(a7),a9=(0,L.O2)(a6);a8?(d?.info?.("HEADROOM",`${a8}${a9?` | ${a9}`:""}`),(0,L.cB)(a7,a6)&&d?.warn?.("HEADROOM",`reported token delta, but outbound JSON shrank <5%; provider may bill near-original payload | ${a9}`)):a3&&ae&&d?.warn?.("HEADROOM",`skipped: ${a6.reason||"compression unavailable"}${a6.endpoint?` (${a6.endpoint})`:""}`);let ba=(0,F.Ay)(av);ba>0&&d?.debug?.("TOOLCLEAN",`post-compression: stripped ${ba} orphaned tool result(s)`),a3&&ah&&ai&&((0,G.p)(av,a1,ai),d?.debug?.("CAVEMAN",`${ai} | ${a1}`)),a3&&aj&&ak&&((0,H.U)(av,a1,ak),d?.debug?.("PONYTAIL",`${ak} | ${a1}`));let bb=null;if(a3&&al){let a=await (0,M.H)(av,{enabled:!0,format:a1,model:aP,minChars:am,timeoutMs:an,transform:ao});bb=a.summary;let b=(0,M._)(bb);b?d?.info?.("PXPIPE",b):d?.debug?.("PXPIPE",`skipped: ${bb?.reason||"unknown"}`),a.body&&(av=a.body);try{ap&&ap({provider:aB,model:aC,...bb})}catch{}}if(av&&"object"==typeof av)if(S.has(a1)){let{stream:a,request:b,...c}=av;if(b&&"object"==typeof b){let{stream:a,...d}=b;av={...c,request:d}}else av=c}else av.stream!==aW&&(av={...av,stream:aW});a_&&"claude"===a$&&(0,i._W)(av);let bc=(0,w.getExecutor)(aB);(0,v.uw)(aC,aB,X,!0),at||(0,v.E5)({model:aC,provider:aB,connectionId:X,status:"PENDING"}).catch(()=>{});let bd=av.messages?.length||av.input?.length||av.contents?.length||av.request?.contents?.length||0;d?.debug?.("REQUEST",`${aB.toUpperCase()} | ${aC} | ${bd} msgs`);let be=(0,k.jd)({onDisconnect:a=>{(0,v.uw)(aC,aB,X,!1),U&&U(a)},onError:()=>(0,v.uw)(aC,aB,X,!1),log:d,provider:aB,model:aC});if(au)if(au.aborted)try{be.abort()}catch{}else au.addEventListener("abort",()=>{try{be.abort()}catch{}},{once:!0});let bf=(0,p.$6)(c);if(bf.vercelRelayUrl){let a=c?.connectionName||c?.connectionId||"unknown",b=c?.providerSpecificData?.connectionProxyPoolId||"none";d?.info?.("PROXY",`${aB.toUpperCase()} | ${aC} | conn=${a} | pool=${b} | vercel-relay=${bf.vercelRelayUrl}`)}else if(bf.connectionProxyEnabled&&bf.connectionProxyUrl){let a=bf.connectionProxyUrl;try{let b=new URL(bf.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",`${aB.toUpperCase()} | ${aC} | conn=${e} | pool=${b} | url=${a}`)}if(bf.connectionProxyEnabled&&bf.connectionNoProxy){let a=c?.connectionName||c?.connectionId||"unknown";d?.debug?.("PROXY",`${aB.toUpperCase()} | ${aC} | conn=${a} | no_proxy=${bf.connectionNoProxy}`)}let bg=(0,x.Fo)(a,aW);try{let a=await bc.execute({model:aC,body:structuredClone(av),stream:aW,credentials:c,signal:be.signal,log:d,proxyOptions:bf});ax=a.response,ay=a.url,az=a.headers,aA=a.transformedBody,aZ.logTargetRequest(ay,az,aA)}catch(b){if((0,v.uw)(aC,aB,X,!1,!0),aZ?.close?.(),(0,v.ox)((0,x.$R)({provider:aB,model:aC,connectionId:X,latency:{ttft:0,total:Date.now()-aD},tokens:{prompt_tokens:0,completion_tokens:0},request:bg,providerRequest:av||null,response:{error:b.message||String(b),status:"AbortError"===b.name?499:502,thinking:null},status:"error",pxpipe:bb||void 0,rtk:a4||void 0})).catch(()=>{}),"AbortError"===b.name)return be.handleError(b),(0,s.A1)(499,"Request aborted");let a=(0,s.lR)(b,aB,aC,t.gx.BAD_GATEWAY);return console.log(`${j.lm.red}[ERROR] ${a}${j.lm.reset}`),(0,s.A1)(t.gx.BAD_GATEWAY,a)}let bh=null;if(!bc.noAuth&&(ax.status===t.gx.UNAUTHORIZED||ax.status===t.gx.FORBIDDEN))try{let a=await (0,l.qZ)(async()=>{let a=await (0,n.MF)(aB,c,()=>bc.refreshCredentials(c,d,bf));return a?.refreshToken&&a.refreshToken!==c.refreshToken&&(a.accessToken&&(c.accessToken=a.accessToken),c.refreshToken=a.refreshToken),a},3,d);if(a?.accessToken||a?.copilotToken){if(d?.info?.("TOKEN",`${aB.toUpperCase()} | refreshed`),Object.assign(c,a),Q)try{await Q(a)}catch(a){d?.warn?.("TOKEN",`onCredentialsRefreshed failed: ${a.message}`)}try{let a=await bc.execute({model:aC,body:structuredClone(av),stream:aW,credentials:c,signal:be.signal,log:d,proxyOptions:bf});try{await ax.body?.cancel?.()}catch{}ax=a.response,ay=a.url,az=a.headers??az,aA=a.transformedBody??aA,aZ.logTargetRequest(ay,az,aA)}catch{d?.warn?.("TOKEN",`${aB.toUpperCase()} | retry after refresh failed`)}}else if((0,l.jT)(a)){let b=a.code||"invalid_grant";if(bh=`OAuth refresh token expired or revoked (${b}): reconnect the ${aB} account in the Switchboard dashboard`,d?.warn?.("TOKEN",`${aB.toUpperCase()} | refresh token revoked, re-auth required (${b})`),Q)try{await Q({reauthRequired:!0,testStatus:m.RU,lastError:bh,lastErrorAt:new Date().toISOString()})}catch(a){d?.warn?.("TOKEN",`onCredentialsRefreshed failed: ${a.message}`)}}else d?.warn?.("TOKEN",`${aB.toUpperCase()} | refresh failed`)}catch(a){d?.warn?.("TOKEN",`${aB.toUpperCase()} | refresh threw: ${a.message}`)}if(!ax.ok){(0,v.uw)(aC,aB,X,!1,!0),aZ?.close?.();let{statusCode:a,message:b,resetsAtMs:c}=await (0,s.zL)(ax,bc),d=bh||b;(0,v.ox)((0,x.$R)({provider:aB,model:aC,connectionId:X,latency:{ttft:0,total:Date.now()-aD},tokens:{prompt_tokens:0,completion_tokens:0},request:bg,providerRequest:aA||av||null,response:{error:d,status:a,thinking:null},status:"error",pxpipe:bb||void 0,rtk:a4||void 0})).catch(()=>{});let e=(0,s.lR)(Error(d),aB,aC,a);return console.log(`${j.lm.red}[ERROR] ${e}${j.lm.reset}`),aZ.logError(Error(d),aA||av),(0,s.A1)(a,e,c)}let bi=async()=>{let a=await bc.execute({model:aC,body:structuredClone(av),stream:aW,credentials:c,signal:be.signal,log:d,proxyOptions:bf});if(!a.response.ok){let{statusCode:b,message:c}=await (0,s.zL)(a.response,bc);throw Error(`[${b}] ${c}`)}if(!a.response.body)throw Error("upstream returned no body");return a.response.body},bj="antigravity"===aB||"gemini-cli"===aB||"gemini"===aB||"vertex"===aB;bj&&aW&&ax.body?ax=new Response((0,B.gH)({body:ax.body,reexecute:bi,signal:be.signal,log:d,onExhausted:(a,{upstreamError:b}={})=>{if(!V)return;let c=bc.parseRetryFromErrorMessage?.(b?.message||a);return V((0,s.lR)(Error(a),aB,aC,t.gx.BAD_GATEWAY),c?Date.now()+c:void 0)}}),{status:ax.status,headers:ax.headers}):aW&&ax.body&&(ax=new Response((0,C.Z)({body:ax.body,reexecute:bi,signal:be.signal,log:d}),{status:ax.status,headers:ax.headers}));let bk=`${Date.now()}-${Math.random().toString(36).slice(2,11)}`,bl={provider:aB,model:aC,body:a,stream:aW,requestConfig:bg,translatedBody:av,finalBody:aA,requestStartTime:aD,connectionId:X,clientKeyId:Z,clientRawRequest:W,onRequestSuccess:T,requestId:bk,pxpipe:bb||void 0,streamSignal:be.signal},bm=a=>{at||(0,v.E5)({model:aC,provider:aB,connectionId:X,...a}).catch(()=>{})},bn=()=>(0,v.uw)(aC,aB,X,!1);if(!aU&&aV){let a=await (0,y.I)({...bl,providerResponse:ax,sourceFormat:aE,targetFormat:aN,trackDone:bn,appendLog:bm});if(a)return be.handleComplete(),a}if(!aW){let a=await (0,z.N)({...bl,providerResponse:ax,sourceFormat:aE,targetFormat:aN,reqLogger:aZ,toolNameMap:aw,trackDone:bn,appendLog:bm});return be.handleComplete(),a}let{onStreamComplete:bo,streamDetailId:bp}=(0,A.$)({...bl});return(0,A.M)({...bl,providerResponse:ax,sourceFormat:aE,targetFormat:aN,userAgent:Y,reqLogger:aZ,toolNameMap:aw,streamController:be,onStreamComplete:bo,streamDetailId:bp,firstChunkTimeoutMs:bj?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=(0,d.t)(g,a,!1);if(!Array.isArray(b?.messages))return i(o,"Claude request did not translate to messages[]"),null;let f=await j(c,b.messages,g,n,m,o||{});if(!f)return null;let k=(0,e.p)(g,{...b,messages:f.messages},!1);return Array.isArray(k?.messages)&&(a.messages=k.messages),k?.system!==void 0&&(a.system=k.system),o&&(o.after=h(a)),f}if("openai-responses"===l){if(Array.isArray(a?.input)&&a.input.some(a=>!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.type&&"message"!==a.type))return i(o,"skipped: openai-responses tool/reasoning input is not safe to compress"),null;let b=(0,f.Z)(g,a,!1);if(!Array.isArray(b?.messages))return null;let d=await j(c,b.messages,g,n,m,o||{});if(!d)return null;let e=(0,f.h)(g,{...b,input:void 0,messages:d.messages},!1);return Array.isArray(e?.input)&&(a.input=e.input),o&&(o.after=h(a)),d}let b=Array.isArray(a.messages)?"messages":Array.isArray(a.input)?"input":null;if(!b)return i(o,`unsupported ${l||"unknown"} request shape`),null;let k=await j(c,a[b],g,n,m,o||{});if(!k)return null;return a[b]=k.messages,o&&(o.after=h(a)),k}catch(a){return i(o,`unexpected error: ${a?.message||String(a)}`),null}}function l(a){if(!a)return null;let b=a.tokens_before||0,c=a.tokens_after||0,d=a.tokens_saved||0,e=b>0?(d/b*100).toFixed(1):"0";return`reported token delta=${d} before=${b}${c?` after=${c}`:""} (${e}%)`.trim()}function m(a){let b=a?.before,c=a?.after;if(!b||!c)return"";let d=b.bodyBytes>0?((b.bodyBytes-c.bodyBytes)/b.bodyBytes*100).toFixed(1):"0.0";return`body=${b.bodyBytes}B→${c.bodyBytes}B messages=${b.messageBytes}B→${c.messageBytes}B tools=${b.toolSchemaBytes||0}B→${c.toolSchemaBytes||0}B toolHistory=${b.toolHistoryBytes||0}B→${c.toolHistoryBytes||0}B effective=${d}%`}function n(a,b,c=.05){if(!a?.tokens_saved||a.tokens_saved<=0)return!1;let d=b?.before?.bodyBytes||0,e=b?.after?.bodyBytes||0;return!(d<=0)&&!(e<=0)&&e>=d*(1-c)}},49612:(a,b,c)=>{c.d(b,{g:()=>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,streamDetailId:H,pxpipe:I,firstChunkTimeoutMs:J=i.Z1}){let K=(a.headers.get("content-type")||"").toLowerCase();if((K.includes("application/x-ndjson")||K.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}
67
67
 
68
68
  `))}catch{}}}},flush(a){let b=d.trim();if(b)try{JSON.parse(b),a.enqueue(c.encode(`data: ${b}
69
69
 
70
- `))}catch{}}}))),{status:a.status,statusText:a.statusText,headers:((e=new Headers(a.headers)).set("content-type","text/event-stream"),e)})}else if(J&&!J.includes("text/event-stream")&&!J.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 (${J})`),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 K=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}){let r=g?.toLowerCase().includes("droid")||g?.toLowerCase().includes("codex-cli");if(h.xq[a]?.format===d.h.OPENAI_RESPONSES&&c===d.h.OPENAI_RESPONSES&&!r){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)}({provider:b,sourceFormat:p,targetFormat:q,userAgent:r,reqLogger:D,toolNameMap:E,model:c,connectionId:y,body:s,onStreamComplete:G,clientKeyId:z,terminateOnResponsesTerminal:"responses-websocket"!==a.headers.get("x-switchboard-transport")}),L=p===d.h.OPENAI_RESPONSES&&q===d.h.OPENAI_RESPONSES?j.Hr:q===d.h.OPENAI?j.ah:null,M=h.xq[b]?.stallTimeoutMs||i.xM,N=(0,g.Jb)(a,K,F,L,M);return(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:"success",pxpipe:I},{id:H})).catch(a=>{console.error("[RequestDetail] Failed to save streaming request:",a.message)}),{success:!0,response:new Response(N,{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)}`;return{onStreamComplete:async(p,r,s)=>{let t={ttft:s?s-e:Date.now()-e,total:Date.now()-e},u=p?.content||"[Empty streaming response]",v=p?.thinking||null;(0,l.ox)((0,k.$R)({provider:a,model:b,connectionId:c,latency:t,tokens:r||{prompt_tokens:0,completion_tokens:0},request:h??(0,k.Fo)(f,g),providerRequest:i||j||null,providerResponse:u,response:{content:u,thinking:v,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:r,connectionId:c,clientKeyId:d,requestId:m,endpoint:n?.endpoint,label:"STREAM USAGE"})},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}}};
70
+ `))}catch{}}}))),{status:a.status,statusText:a.statusText,headers:((e=new Headers(a.headers)).set("content-type","text/event-stream"),e)})}else if(K&&!K.includes("text/event-stream")&&!K.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 (${K})`),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 L=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}){let r=g?.toLowerCase().includes("droid")||g?.toLowerCase().includes("codex-cli");if(h.xq[a]?.format===d.h.OPENAI_RESPONSES&&c===d.h.OPENAI_RESPONSES&&!r){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)}({provider:b,sourceFormat:p,targetFormat:q,userAgent:r,reqLogger:D,toolNameMap:E,model:c,connectionId:y,body:s,onStreamComplete:G,clientKeyId:z,terminateOnResponsesTerminal:"responses-websocket"!==a.headers.get("x-switchboard-transport")}),M=p===d.h.OPENAI_RESPONSES&&q===d.h.OPENAI_RESPONSES?j.Hr:q===d.h.OPENAI?j.ah:null,N=h.xq[b]?.stallTimeoutMs||i.xM,O=(0,g.Jb)(a,L,F,M,N,J);return(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:"success",pxpipe:I},{id:H})).catch(a=>{console.error("[RequestDetail] Failed to save streaming request:",a.message)}),{success:!0,response:new Response(O,{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)}`;return{onStreamComplete:async(p,r,s)=>{let t={ttft:s?s-e:Date.now()-e,total:Date.now()-e},u=p?.content||"[Empty streaming response]",v=p?.thinking||null;(0,l.ox)((0,k.$R)({provider:a,model:b,connectionId:c,latency:t,tokens:r||{prompt_tokens:0,completion_tokens:0},request:h??(0,k.Fo)(f,g),providerRequest:i||j||null,providerResponse:u,response:{content:u,thinking:v,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:r,connectionId:c,clientKeyId:d,requestId:m,endpoint:n?.endpoint,label:"STREAM USAGE"})},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}}};
@@ -1 +1 @@
1
- "use strict";exports.id=519,exports.ids=[519],exports.modules={4630:(a,b,c)=>{c.d(b,{Ak:()=>e,Yg:()=>h,sr:()=>d.sr,xq:()=>d.xq});var d=c(45350);function e(a){return(a?.providerSpecificData?.baseUrl?.trim()||"http://localhost:11434").replace(/\/$/,"")}let f=d.xq["xiaomi-tokenplan"]?.regions||{},g=d.xq["xiaomi-tokenplan"]?.defaultRegion;function h(a){return f[a?.providerSpecificData?.region]||f[g]}},21350:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>Q,GET:()=>O,POST:()=>P});var d=c(49796),e=c(23211),f=c(79748),g=c.n(f),h=c(33873),i=c.n(h),j=c(21820),k=c.n(j),l=c(55511),m=c.n(l),n=c(28286),o=c(30869),p=c(54603),q=c(24424);let r=o.h0.appPort,s=`http://localhost:${r}/api/mcp/`,t=null,u=async()=>(t||(t=await (0,p.Xj)("switchboard-cli-auth")),t),v=async a=>{let b=await u();for(let c of a)"string"==typeof c?.url&&c.url.startsWith(s)&&(c.headers={...c.headers||{},"x-switchboard-cli-token":b});return a},w="gateway",x={coworkEgressAllowedHosts:["*"],disabledBuiltinTools:[],isLocalDevMcpEnabled:!0,isDesktopExtensionEnabled:!0,isDesktopExtensionDirectoryEnabled:!0,isDesktopExtensionSignatureRequired:!1,isClaudeCodeForDesktopEnabled:!0,disableEssentialTelemetry:!0,disableNonessentialTelemetry:!0,disableNonessentialServices:!0},y=()=>{if("darwin"===k().platform()){let a=i().join(k().homedir(),"Library","Application Support");return[i().join(a,"Claude-3p"),i().join(a,"Claude")]}if("win32"===k().platform()){let a=process.env.LOCALAPPDATA||i().join(k().homedir(),"AppData","Local"),b=process.env.APPDATA||i().join(k().homedir(),"AppData","Roaming");return[i().join(a,"Claude-3p"),i().join(b,"Claude-3p"),i().join(a,"Claude"),i().join(b,"Claude")]}return[i().join(k().homedir(),".config","Claude-3p"),i().join(k().homedir(),".config","Claude")]},z=async()=>{let a=y();for(let b of a)try{return await g().access(i().join(b,"configLibrary")),b}catch{}return a[0]},A=()=>y()[0],B=async()=>i().join(await z(),"configLibrary"),C=()=>i().join(A(),"configLibrary"),D=async()=>i().join(await B(),"_meta.json"),E=()=>{if("darwin"===k().platform())return i().join(k().homedir(),"Library","Application Support","Claude");if("win32"===k().platform()){let a=process.env.APPDATA||i().join(k().homedir(),"AppData","Roaming");return i().join(a,"Claude")}return i().join(k().homedir(),".config","Claude")},F=()=>i().join(E(),"claude_desktop_config.json"),G=async()=>{try{let a=(await g().readFile(F(),"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(a)||{}}catch(a){return{}}},H=async a=>{await g().mkdir(E(),{recursive:!0}),await g().writeFile(F(),JSON.stringify(a,null,2))},I=async()=>{let a=await G();return"3p"!==a.deploymentMode&&(a.deploymentMode="3p",await H(a),!0)},J=async()=>{let a=await G();if(!a.mcpServers||"object"!=typeof a.mcpServers)return;let b=new Set(n.LOCAL_STDIO_PLUGINS.map(a=>a.name));for(let c of Object.keys(a.mcpServers))b.has(c)&&delete a.mcpServers[c];0===Object.keys(a.mcpServers).length&&delete a.mcpServers,await H(a)},K=async()=>{for(let a of[...y(),...(()=>{if("darwin"===k().platform())return["/Applications/Claude.app",i().join(k().homedir(),"Applications","Claude.app")];if("win32"===k().platform()){let a=process.env.LOCALAPPDATA||i().join(k().homedir(),"AppData","Local"),b=process.env.ProgramFiles||"C:\\Program Files";return[i().join(a,"AnthropicClaude"),i().join(b,"Claude"),i().join(b,"AnthropicClaude")]}return[]})()])try{return await g().access(a),!0}catch{}return!1},L=async a=>{try{let b=(await g().readFile(a,"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(b)}catch(a){return null}},M=async()=>{let a=i().join(C(),"_meta.json"),b=await L(a);if(!b||!b.appliedId){let c=await L(await D());if(c?.appliedId)b=c;else{let a=m().randomUUID();b={appliedId:a,entries:[{id:a,name:"Default"}]}}await g().mkdir(C(),{recursive:!0}),await g().writeFile(a,JSON.stringify(b,null,2))}return b};async function N(a){let b=i().join(A(),"config.json"),c={};try{c=JSON.parse(await g().readFile(b,"utf-8"))||{}}catch(a){if("ENOENT"!==a.code)return{error:a.code}}let d={};for(let b of a)b?.name&&(d[b.name]=!0);return c.operonSkipMcpApprovals=d,await g().mkdir(A(),{recursive:!0}),await g().writeFile(b,JSON.stringify(c,null,2)),{written:Object.keys(d).length}}async function O(){try{if(!await K())return e.NextResponse.json({installed:!1,config:null,message:"Claude Desktop (Cowork mode) not detected"});let a=await L(await D()),b=a?.appliedId||null,c=await B(),d=b?i().join(c,`${b}.json`):null,f=d?await L(d):null,g=f?.inferenceGatewayBaseUrl||null,h=Array.isArray(f?.inferenceModels)?f.inferenceModels.map(a=>"string"==typeof a?a:a?.name).filter(Boolean):[],j=Array.isArray(f?.managedMcpServers)?f.managedMcpServers:[],k=!!(f?.inferenceProvider===w&&g),l=new Set(n.LOCAL_STDIO_PLUGINS.map(a=>a.name)),m=j.filter(a=>l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/")).map(a=>a.name),o=j.filter(a=>a.custom||!l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/")).map(a=>({name:a.name,url:a.url,transport:a.transport,custom:!0}));return e.NextResponse.json({installed:!0,config:f,hasSwitchboard:k,configPath:d,cowork:{appliedId:b,baseUrl:g,models:h,provider:f?.inferenceProvider||null,plugins:j.filter(a=>!a.custom&&!(l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/"))).map(a=>{let b=a.toolPolicy?Object.keys(a.toolPolicy):[],c=`${a.name}-`,d=new Set;for(let a of b){let b=a;for(;b.startsWith(c);)b=b.slice(c.length);d.add(b)}let e=n.DEFAULT_PLUGINS.find(b=>b.name===a.name),f=e&&Array.isArray(e.toolNames)?e.toolNames:Array.from(d);return{name:a.name,url:a.url,transport:a.transport,oauth:!!a.oauth,toolNames:f}}),localPlugins:m,customPlugins:o},defaultPlugins:n.DEFAULT_PLUGINS,localStdioPlugins:n.LOCAL_STDIO_PLUGINS})}catch(a){return console.log("Error reading cowork settings:",a),e.NextResponse.json({error:"Failed to read cowork settings"},{status:500})}}async function P(a){try{let b;try{b=await a.json()}catch{return e.NextResponse.json({error:"Invalid JSON body"},{status:400})}let{baseUrl:c,apiKey:d,models:f,plugins:h,localPlugins:j,customPlugins:k}=b||{};if(!c||!d)return e.NextResponse.json({error:"baseUrl and apiKey are required"},{status:400});try{let a=new URL(c);if(!["http:","https:"].includes(a.protocol))throw Error("unsupported protocol")}catch{return e.NextResponse.json({error:"baseUrl must be a valid HTTP(S) URL"},{status:400})}let l=Array.isArray(f)?f.filter(a=>"string"==typeof a&&a.trim()):[];if(0===l.length)return e.NextResponse.json({error:"At least one model is required"},{status:400});let m=Array.isArray(h)?h:n.DEFAULT_PLUGINS,o=Array.isArray(j)?j:[],p=(Array.isArray(k)?k:[]).filter(a=>a?.url),q=await v((a=>{let b=Array.isArray(a)?a:[],c=[];for(let a of b){let b=n.LOCAL_STDIO_PLUGINS.find(b=>b.name===a);if(!b)continue;let d={name:b.name,url:`http://localhost:${r}/api/mcp/${b.name}/sse`,transport:"sse"};if(Array.isArray(b.toolNames)&&b.toolNames.length>0){let a=`${b.name}-`,c={};for(let d of b.toolNames)c[d]="allow",c[`${a}${d}`]="allow";d.toolPolicy=c}c.push(d)}return c})(o)),s=await v((a=>{if(!Array.isArray(a))return[];let b=[];for(let c of a)c?.name&&c?.url&&b.push({name:c.name,url:c.url,transport:c.transport||"sse",custom:!0});return b})(p)),t=[...(0,n.buildManagedMcpServers)(m),...q,...s],u=await I(),y=await M(),z=i().join(C(),`${y.appliedId}.json`),A={...x,inferenceProvider:w,inferenceGatewayBaseUrl:c.endsWith("/v1")?c:`${c}/v1`,inferenceGatewayApiKey:d,inferenceModels:l.map(a=>({name:a}))};t.length>0&&(A.managedMcpServers=t),await g().writeFile(z,JSON.stringify(A,null,2));let B=null;try{B=await N(t)}catch(a){B={error:a.message}}try{await J()}catch{}return e.NextResponse.json({success:!0,bootstrapped:u,message:u?"Cowork enabled (3p mode set). Quit & reopen Claude Desktop.":"Cowork settings applied. Quit & reopen Claude Desktop.",configPath:z,skipApprovals:B,localMcp:{applied:o,via:"3p-sse-bridge"}})}catch(a){return console.log("Error applying cowork settings:",a),e.NextResponse.json({error:"Failed to apply cowork settings"},{status:500})}}async function Q(){try{let a=await L(await D());if(!a?.appliedId)return e.NextResponse.json({success:!0,message:"No active config to reset"});let b=i().join(await B(),`${a.appliedId}.json`);try{await g().writeFile(b,JSON.stringify({},null,2))}catch(a){if("ENOENT"!==a.code)throw a}try{await N([])}catch{}try{await J()}catch{}return e.NextResponse.json({success:!0,message:"Cowork config reset"})}catch(a){return console.log("Error resetting cowork settings:",a),e.NextResponse.json({error:"Failed to reset cowork settings"},{status:500})}}(0,q.D)([O,P,Q]),(0,d.A)(O,"00b858a9082a1de50b1b4b8979aa6d2d62f0b6643b",null),(0,d.A)(P,"404b0c73ac930c96ee84572b33fd070616b8240506",null),(0,d.A)(Q,"00fc256ef5e7d1c0033ed9f9354581c547f17bfc28",null)},28286:a=>{a.exports={DEFAULT_PLUGINS:[{name:"exa",title:"Exa",description:"Real-time web search and code documentation",url:"https://mcp.exa.ai/mcp",transport:"http",oauth:!1,toolNames:["web_search_exa","web_fetch_exa"]},{name:"tavily",title:"Tavily",description:"Real-time web search optimized for LLM agents",url:"https://mcp.tavily.com/mcp",transport:"http",oauth:!0,toolNames:["tavily_search","tavily_extract","tavily_crawl","tavily_map"]}],LOCAL_STDIO_PLUGINS:[{name:"browsermcp",title:"Browser MCP",description:"Control your running Chrome (requires Chrome extension)",extensionUrl:"https://chromewebstore.google.com/detail/browser-mcp-automate-your/bjfgambnhccakkhmkepdoekmckoijdlc",command:"npx",args:["-y","@browsermcp/mcp@latest"],toolNames:["browser_navigate","browser_snapshot","browser_click","browser_type","browser_screenshot","browser_get_console_logs","browser_wait","browser_press_key","browser_go_back","browser_go_forward"]}],buildManagedMcpServers:function(a){let b=Array.isArray(a)?a:[],c=[],d=new Set;for(let a of b){if(!a?.name||!a?.url||d.has(a.name))continue;d.add(a.name);let b={name:a.name,url:a.url,transport:a.transport||(/\/sse(\b|\/)/i.test(a.url)?"sse":"http")};if(a.oauth&&(b.oauth=!0),Array.isArray(a.toolNames)&&a.toolNames.length>0){let c=`${a.name}-`,d=new Set;for(let b of a.toolNames){if("string"!=typeof b||!b)continue;let a=b;for(;a.startsWith(c);)a=a.slice(c.length);d.add(a)}let e={};for(let a of d)e[a]="allow",e[`${c}${a}`]="allow";b.toolPolicy=e}c.push(b)}return c}}},49120:(a,b,c)=>{c.d(b,{nJ:()=>p,ok:()=>o});var d=c(73024),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);let j="switchboard";function k(a){if("win32"===process.platform){let b=process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming");return g().join(b,a)}return g().join(i().homedir(),`.${a}`)}let l=["db/data.sqlite","machine-id","jwt-secret","auth","db.json"];function m(a){return l.some(b=>e().existsSync(g().join(a,b)))}function n(){let a=k(j);if(m(a))return a;let b=k("9router");return m(b)?(console.warn(`[DATA_DIR] using legacy data directory '${b}' (set DATA_DIR='${a}' to switch)`),b):a}function o(){let a=process.env.DATA_DIR;if(!a)return n();if("win32"===process.platform&&/^\//.test(a))return console.warn(`[DATA_DIR] '${a}' is a Unix path on Windows → fallback to default`),n();try{return e().mkdirSync(a,{recursive:!0}),a}catch(b){if(b?.code==="EACCES"||b?.code==="EPERM")return console.warn(`[DATA_DIR] '${a}' not writable → fallback ~/.${j}`),n();throw b}}let p=o()},54603:(a,b,c)=>{c.d(b,{Xj:()=>q});var d=c(96930),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c.n(i),k=c(49120);let l=h().join(k.nJ,"machine-id"),m=h().join(k.nJ,"auth"),n=h().join(m,"cli-secret"),o=null,p=null;async function q(a=null){let b=a||function(){if(process.env.MACHINE_ID_SALT)return process.env.MACHINE_ID_SALT;let a=h().join(m,"machine-id-salt");try{let b=f().readFileSync(a,"utf8").trim();if(b)return b}catch{}let b=j().randomBytes(32).toString("hex");try{f().mkdirSync(m,{recursive:!0,mode:448}),f().writeFileSync(a,b,{mode:384})}catch{}return b}(),c=function(){if(o)return o;try{if(o=f().readFileSync(l,"utf8").trim())return o}catch{}try{o=(0,d.machineIdSync)()}catch{o=j().randomUUID()}try{f().mkdirSync(k.nJ,{recursive:!0}),f().writeFileSync(l,o,{mode:384})}catch{}return o}(),e="switchboard-cli-auth"===b?function(){if(p)return p;try{if(p=f().readFileSync(n,"utf8").trim())return p}catch{}p=j().randomBytes(32).toString("hex");try{f().mkdirSync(m,{recursive:!0}),f().writeFileSync(n,p,{mode:384})}catch{}return p}():"";return j().createHash("sha256").update(c+b+e).digest("hex").substring(0,16)}}};
1
+ "use strict";exports.id=519,exports.ids=[519],exports.modules={4630:(a,b,c)=>{c.d(b,{Ak:()=>e,Yg:()=>h,sr:()=>d.sr,xq:()=>d.xq});var d=c(45350);function e(a){return(a?.providerSpecificData?.baseUrl?.trim()||"http://localhost:11434").replace(/\/$/,"")}let f=d.xq["xiaomi-tokenplan"]?.regions||{},g=d.xq["xiaomi-tokenplan"]?.defaultRegion;function h(a){return f[a?.providerSpecificData?.region]||f[g]}},21350:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>Q,GET:()=>O,POST:()=>P});var d=c(49796),e=c(23211),f=c(79748),g=c.n(f),h=c(33873),i=c.n(h),j=c(21820),k=c.n(j),l=c(55511),m=c.n(l),n=c(28286),o=c(30869),p=c(54603),q=c(24424);let r=o.h0.appPort,s=`http://localhost:${r}/api/mcp/`,t=null,u=async()=>(t||(t=await (0,p.Xj)("switchboard-cli-auth")),t),v=async a=>{let b=await u();for(let c of a)"string"==typeof c?.url&&c.url.startsWith(s)&&(c.headers={...c.headers||{},"x-switchboard-cli-token":b});return a},w="gateway",x={coworkEgressAllowedHosts:["*"],disabledBuiltinTools:[],isLocalDevMcpEnabled:!0,isDesktopExtensionEnabled:!0,isDesktopExtensionDirectoryEnabled:!0,isDesktopExtensionSignatureRequired:!1,isClaudeCodeForDesktopEnabled:!0,disableEssentialTelemetry:!0,disableNonessentialTelemetry:!0,disableNonessentialServices:!0},y=()=>{if("darwin"===k().platform()){let a=i().join(k().homedir(),"Library","Application Support");return[i().join(a,"Claude-3p"),i().join(a,"Claude")]}if("win32"===k().platform()){let a=process.env.LOCALAPPDATA||i().join(k().homedir(),"AppData","Local"),b=process.env.APPDATA||i().join(k().homedir(),"AppData","Roaming");return[i().join(a,"Claude-3p"),i().join(b,"Claude-3p"),i().join(a,"Claude"),i().join(b,"Claude")]}return[i().join(k().homedir(),".config","Claude-3p"),i().join(k().homedir(),".config","Claude")]},z=async()=>{let a=y();for(let b of a)try{return await g().access(i().join(b,"configLibrary")),b}catch{}return a[0]},A=()=>y()[0],B=async()=>i().join(await z(),"configLibrary"),C=()=>i().join(A(),"configLibrary"),D=async()=>i().join(await B(),"_meta.json"),E=()=>{if("darwin"===k().platform())return i().join(k().homedir(),"Library","Application Support","Claude");if("win32"===k().platform()){let a=process.env.APPDATA||i().join(k().homedir(),"AppData","Roaming");return i().join(a,"Claude")}return i().join(k().homedir(),".config","Claude")},F=()=>i().join(E(),"claude_desktop_config.json"),G=async()=>{try{let a=(await g().readFile(F(),"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(a)||{}}catch(a){return{}}},H=async a=>{await g().mkdir(E(),{recursive:!0}),await g().writeFile(F(),JSON.stringify(a,null,2))},I=async()=>{let a=await G();return"3p"!==a.deploymentMode&&(a.deploymentMode="3p",await H(a),!0)},J=async()=>{let a=await G();if(!a.mcpServers||"object"!=typeof a.mcpServers)return;let b=new Set(n.LOCAL_STDIO_PLUGINS.map(a=>a.name));for(let c of Object.keys(a.mcpServers))b.has(c)&&delete a.mcpServers[c];0===Object.keys(a.mcpServers).length&&delete a.mcpServers,await H(a)},K=async()=>{for(let a of[...y(),...(()=>{if("darwin"===k().platform())return["/Applications/Claude.app",i().join(k().homedir(),"Applications","Claude.app")];if("win32"===k().platform()){let a=process.env.LOCALAPPDATA||i().join(k().homedir(),"AppData","Local"),b=process.env.ProgramFiles||"C:\\Program Files";return[i().join(a,"AnthropicClaude"),i().join(b,"Claude"),i().join(b,"AnthropicClaude")]}return[]})()])try{return await g().access(a),!0}catch{}return!1},L=async a=>{try{let b=(await g().readFile(a,"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(b)}catch(a){return null}},M=async()=>{let a=i().join(C(),"_meta.json"),b=await L(a);if(!b||!b.appliedId){let c=await L(await D());if(c?.appliedId)b=c;else{let a=m().randomUUID();b={appliedId:a,entries:[{id:a,name:"Default"}]}}await g().mkdir(C(),{recursive:!0}),await g().writeFile(a,JSON.stringify(b,null,2))}return b};async function N(a){let b=i().join(A(),"config.json"),c={};try{c=JSON.parse(await g().readFile(b,"utf-8"))||{}}catch(a){if("ENOENT"!==a.code)return{error:a.code}}let d={};for(let b of a)b?.name&&(d[b.name]=!0);return c.operonSkipMcpApprovals=d,await g().mkdir(A(),{recursive:!0}),await g().writeFile(b,JSON.stringify(c,null,2)),{written:Object.keys(d).length}}async function O(){try{if(!await K())return e.NextResponse.json({installed:!1,config:null,message:"Claude Desktop (Cowork mode) not detected"});let a=await L(await D()),b=a?.appliedId||null,c=await B(),d=b?i().join(c,`${b}.json`):null,f=d?await L(d):null,g=f?.inferenceGatewayBaseUrl||null,h=Array.isArray(f?.inferenceModels)?f.inferenceModels.map(a=>"string"==typeof a?a:a?.name).filter(Boolean):[],j=Array.isArray(f?.managedMcpServers)?f.managedMcpServers:[],k=!!(f?.inferenceProvider===w&&g),l=new Set(n.LOCAL_STDIO_PLUGINS.map(a=>a.name)),m=j.filter(a=>l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/")).map(a=>a.name),o=j.filter(a=>a.custom||!l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/")).map(a=>({name:a.name,url:a.url,transport:a.transport,custom:!0}));return e.NextResponse.json({installed:!0,config:f,hasSwitchboard:k,configPath:d,cowork:{appliedId:b,baseUrl:g,models:h,provider:f?.inferenceProvider||null,plugins:j.filter(a=>!a.custom&&!(l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/"))).map(a=>{let b=a.toolPolicy?Object.keys(a.toolPolicy):[],c=`${a.name}-`,d=new Set;for(let a of b){let b=a;for(;b.startsWith(c);)b=b.slice(c.length);d.add(b)}let e=n.DEFAULT_PLUGINS.find(b=>b.name===a.name),f=e&&Array.isArray(e.toolNames)?e.toolNames:Array.from(d);return{name:a.name,url:a.url,transport:a.transport,oauth:!!a.oauth,toolNames:f}}),localPlugins:m,customPlugins:o},defaultPlugins:n.DEFAULT_PLUGINS,localStdioPlugins:n.LOCAL_STDIO_PLUGINS})}catch(a){return console.log("Error reading cowork settings:",a),e.NextResponse.json({error:"Failed to read cowork settings"},{status:500})}}async function P(a){try{let b;try{b=await a.json()}catch{return e.NextResponse.json({error:"Invalid JSON body"},{status:400})}let{baseUrl:c,apiKey:d,models:f,plugins:h,localPlugins:j,customPlugins:k}=b||{};if(!c||!d)return e.NextResponse.json({error:"baseUrl and apiKey are required"},{status:400});try{let a=new URL(c);if(!["http:","https:"].includes(a.protocol))throw Error("unsupported protocol")}catch{return e.NextResponse.json({error:"baseUrl must be a valid HTTP(S) URL"},{status:400})}let l=Array.isArray(f)?f.filter(a=>"string"==typeof a&&a.trim()):[];if(0===l.length)return e.NextResponse.json({error:"At least one model is required"},{status:400});let m=Array.isArray(h)?h:n.DEFAULT_PLUGINS,o=Array.isArray(j)?j:[],p=(Array.isArray(k)?k:[]).filter(a=>a?.url),q=await v((a=>{let b=Array.isArray(a)?a:[],c=[];for(let a of b){let b=n.LOCAL_STDIO_PLUGINS.find(b=>b.name===a);if(!b)continue;let d={name:b.name,url:`http://localhost:${r}/api/mcp/${b.name}/sse`,transport:"sse"};if(Array.isArray(b.toolNames)&&b.toolNames.length>0){let a=`${b.name}-`,c={};for(let d of b.toolNames)c[d]="allow",c[`${a}${d}`]="allow";d.toolPolicy=c}c.push(d)}return c})(o)),s=await v((a=>{if(!Array.isArray(a))return[];let b=[];for(let c of a)c?.name&&c?.url&&b.push({name:c.name,url:c.url,transport:c.transport||"sse",custom:!0});return b})(p)),t=[...(0,n.buildManagedMcpServers)(m),...q,...s],u=await I(),y=await M(),z=i().join(C(),`${y.appliedId}.json`),A={...x,inferenceProvider:w,inferenceGatewayBaseUrl:c.endsWith("/v1")?c:`${c}/v1`,inferenceGatewayApiKey:d,inferenceModels:l.map(a=>({name:a}))};t.length>0&&(A.managedMcpServers=t),await g().writeFile(z,JSON.stringify(A,null,2));let B=null;try{B=await N(t)}catch(a){B={error:a.message}}try{await J()}catch{}return e.NextResponse.json({success:!0,bootstrapped:u,message:u?"Cowork enabled (3p mode set). Quit & reopen Claude Desktop.":"Cowork settings applied. Quit & reopen Claude Desktop.",configPath:z,skipApprovals:B,localMcp:{applied:o,via:"3p-sse-bridge"}})}catch(a){return console.log("Error applying cowork settings:",a),e.NextResponse.json({error:"Failed to apply cowork settings"},{status:500})}}async function Q(){try{let a=await L(await D());if(!a?.appliedId)return e.NextResponse.json({success:!0,message:"No active config to reset"});let b=i().join(await B(),`${a.appliedId}.json`);try{await g().writeFile(b,JSON.stringify({},null,2))}catch(a){if("ENOENT"!==a.code)throw a}try{await N([])}catch{}try{await J()}catch{}return e.NextResponse.json({success:!0,message:"Cowork config reset"})}catch(a){return console.log("Error resetting cowork settings:",a),e.NextResponse.json({error:"Failed to reset cowork settings"},{status:500})}}(0,q.D)([O,P,Q]),(0,d.A)(O,"00efae4354849a3dab44d8295240a5386b005332c7",null),(0,d.A)(P,"40cb8368cc6013a266660dbaa81be2a328881aaf42",null),(0,d.A)(Q,"0062f8d1afb28ce23c34997a3b7303aa8a224627f6",null)},28286:a=>{a.exports={DEFAULT_PLUGINS:[{name:"exa",title:"Exa",description:"Real-time web search and code documentation",url:"https://mcp.exa.ai/mcp",transport:"http",oauth:!1,toolNames:["web_search_exa","web_fetch_exa"]},{name:"tavily",title:"Tavily",description:"Real-time web search optimized for LLM agents",url:"https://mcp.tavily.com/mcp",transport:"http",oauth:!0,toolNames:["tavily_search","tavily_extract","tavily_crawl","tavily_map"]}],LOCAL_STDIO_PLUGINS:[{name:"browsermcp",title:"Browser MCP",description:"Control your running Chrome (requires Chrome extension)",extensionUrl:"https://chromewebstore.google.com/detail/browser-mcp-automate-your/bjfgambnhccakkhmkepdoekmckoijdlc",command:"npx",args:["-y","@browsermcp/mcp@latest"],toolNames:["browser_navigate","browser_snapshot","browser_click","browser_type","browser_screenshot","browser_get_console_logs","browser_wait","browser_press_key","browser_go_back","browser_go_forward"]}],buildManagedMcpServers:function(a){let b=Array.isArray(a)?a:[],c=[],d=new Set;for(let a of b){if(!a?.name||!a?.url||d.has(a.name))continue;d.add(a.name);let b={name:a.name,url:a.url,transport:a.transport||(/\/sse(\b|\/)/i.test(a.url)?"sse":"http")};if(a.oauth&&(b.oauth=!0),Array.isArray(a.toolNames)&&a.toolNames.length>0){let c=`${a.name}-`,d=new Set;for(let b of a.toolNames){if("string"!=typeof b||!b)continue;let a=b;for(;a.startsWith(c);)a=a.slice(c.length);d.add(a)}let e={};for(let a of d)e[a]="allow",e[`${c}${a}`]="allow";b.toolPolicy=e}c.push(b)}return c}}},49120:(a,b,c)=>{c.d(b,{nJ:()=>p,ok:()=>o});var d=c(73024),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);let j="switchboard";function k(a){if("win32"===process.platform){let b=process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming");return g().join(b,a)}return g().join(i().homedir(),`.${a}`)}let l=["db/data.sqlite","machine-id","jwt-secret","auth","db.json"];function m(a){return l.some(b=>e().existsSync(g().join(a,b)))}function n(){let a=k(j);if(m(a))return a;let b=k("9router");return m(b)?(console.warn(`[DATA_DIR] using legacy data directory '${b}' (set DATA_DIR='${a}' to switch)`),b):a}function o(){let a=process.env.DATA_DIR;if(!a)return n();if("win32"===process.platform&&/^\//.test(a))return console.warn(`[DATA_DIR] '${a}' is a Unix path on Windows → fallback to default`),n();try{return e().mkdirSync(a,{recursive:!0}),a}catch(b){if(b?.code==="EACCES"||b?.code==="EPERM")return console.warn(`[DATA_DIR] '${a}' not writable → fallback ~/.${j}`),n();throw b}}let p=o()},54603:(a,b,c)=>{c.d(b,{Xj:()=>q});var d=c(96930),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c.n(i),k=c(49120);let l=h().join(k.nJ,"machine-id"),m=h().join(k.nJ,"auth"),n=h().join(m,"cli-secret"),o=null,p=null;async function q(a=null){let b=a||function(){if(process.env.MACHINE_ID_SALT)return process.env.MACHINE_ID_SALT;let a=h().join(m,"machine-id-salt");try{let b=f().readFileSync(a,"utf8").trim();if(b)return b}catch{}let b=j().randomBytes(32).toString("hex");try{f().mkdirSync(m,{recursive:!0,mode:448}),f().writeFileSync(a,b,{mode:384})}catch{}return b}(),c=function(){if(o)return o;try{if(o=f().readFileSync(l,"utf8").trim())return o}catch{}try{o=(0,d.machineIdSync)()}catch{o=j().randomUUID()}try{f().mkdirSync(k.nJ,{recursive:!0}),f().writeFileSync(l,o,{mode:384})}catch{}return o}(),e="switchboard-cli-auth"===b?function(){if(p)return p;try{if(p=f().readFileSync(n,"utf8").trim())return p}catch{}p=j().randomBytes(32).toString("hex");try{f().mkdirSync(m,{recursive:!0}),f().writeFileSync(n,p,{mode:384})}catch{}return p}():"";return j().createHash("sha256").update(c+b+e).digest("hex").substring(0,16)}}};
@@ -2,4 +2,4 @@ exports.id=7454,exports.ids=[7454],exports.modules={23628:(a,b,c)=>{"use strict"
2
2
  ${e}${n(t)}
3
3
  `}function s(a){let b=o(a,e);if(!b)return a;let c=(0,d.Tp)(p(a,e));if(c.errors.length)throw Error(`Invalid Aider YAML: ${c.errors[0].message}`);for(let a of["openai-api-base","openai-api-key","model","alias"])b[a]?.exists?c.setIn([a],b[a].value):c.deleteIn([a]);return c.toString()}function t(a,{baseUrl:b,models:c,defaultModel:e}){let g=o(a,f)?u(a):a,h=(0,d.Tp)(g||"");if(h.errors.length)throw Error(`Invalid Hermes YAML: ${h.errors[0].message}`);let k=i(c),l=j(e,k),m=q(h.getIn(["custom_providers"])),p=Array.isArray(m)?m:[],r=p.find(a=>a?.name==="switchboard"),s=q(h.getIn(["model"])),v=p.filter(a=>a?.name!=="switchboard"),w=Object.fromEntries(k.map(a=>[a,{}]));return v.push({name:"switchboard",base_url:b,key_env:"SWITCHBOARD_API_KEY",api_mode:"chat_completions",models:w}),h.setIn(["custom_providers"],v),h.setIn(["model"],{...s&&"object"==typeof s?s:{},default:l,provider:"custom:switchboard"}),`${h.toString().trimEnd()}
4
4
  ${f}${n({previousProvider:r??null,previousModel:s??null})}
5
- `}function u(a){let b=o(a,f),c=(0,d.Tp)(p(a,f));if(c.errors.length)throw Error(`Invalid Hermes YAML: ${c.errors[0].message}`);let e=q(c.getIn(["custom_providers"]));if(Array.isArray(e)){let a=e.filter(a=>a?.name!=="switchboard");b?.previousProvider&&a.push(b.previousProvider),a.length?c.setIn(["custom_providers"],a):c.deleteIn(["custom_providers"])}return"custom:switchboard"===q(c.getIn(["model","provider"]))&&(b?.previousModel?c.setIn(["model"],b.previousModel):c.deleteIn(["model"])),c.toString()}function v(a,{baseUrl:b,apiKey:c,models:d,defaultModel:e}){let f=i(d),g=j(e,f);return{...a,model:`switchboard/${g}`,provider:{...a.provider||{},switchboard:{npm:"@ai-sdk/openai-compatible",name:"Switchboard",options:{apiKey:c,baseURL:b},models:Object.fromEntries(f.map(a=>[a,{name:k(a)}]))}}}}function w(a,{baseUrl:b,apiKey:c,models:d,defaultModel:e}){let f=i(d),g=j(e,f),h=a.providers||{},l=a.models||{};return{providers:{...h,providers:{...h.providers||{},switchboard:{type:"openai-compatible",name:"Switchboard",baseUrl:b,apiKey:c,defaultModelId:g}}},models:{...l,providers:{...l.providers||{},switchboard:{provider:{name:"Switchboard",baseUrl:b,defaultModelId:g},models:Object.fromEntries(f.map(a=>[a,{id:a,name:k(a)}]))}}}}}function x(a,{models:b,defaultModel:c}){let d=i(b),e=j(c,d),f=Object.fromEntries(Object.entries(a?.modelConfigs?.modelDefinitions&&"object"==typeof a.modelConfigs.modelDefinitions?a.modelConfigs.modelDefinitions:{}).filter(([,a])=>a?.family!=="switchboard"));return{...a,model:{...a.model||{},name:e},experimental:{...a.experimental||{},dynamicModelConfiguration:!0},modelConfigs:{...a.modelConfigs||{},modelDefinitions:{...f,...Object.fromEntries(d.map(a=>[a,{displayName:`Switchboard \xb7 ${k(a)}`,family:"switchboard",tier:"custom",isPreview:!1,isVisible:!0,features:{thinking:!0,multimodalToolUse:!0}}]))}}}}},57781:(a,b,c)=>{"use strict";c.d(b,{R:()=>h});var d=c(51455),e=c.n(d),f=c(76760),g=c.n(f);async function h(a,b,c="utf-8"){let d=g().dirname(a);await e().mkdir(d,{recursive:!0});let f=g().join(d,`.${g().basename(a)}.sb-tmp-${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`);try{await e().writeFile(f,b,c);try{let a=await e().open(f,"r+");try{await a.sync()}finally{await a.close()}}catch{}await e().rename(f,a)}catch(a){try{await e().unlink(f)}catch{}throw a}}},68393:(a,b,c)=>{"use strict";c.d(b,{AD:()=>x,El:()=>v,JF:()=>r,LU:()=>u,Ng:()=>o,OU:()=>t,Ro:()=>h,_1:()=>s,ao:()=>l,at:()=>B,i6:()=>A,iO:()=>w,s8:()=>z,wN:()=>y});let d=Object.freeze({PASS_THROUGH:"pass-through",PROXY:"proxy",FULL_CATALOG:"full-catalog"}),e="x-switchboard-claude-mode",f="x-switchboard-claude-models",g="x-switchboard-claude-labels",h="x-switchboard-key",i="claude-switchboard-v1/",j=/^(?:claude|anthropic)-[a-z0-9][a-z0-9._-]*$/i,k=Object.freeze(["ANTHROPIC_DEFAULT_OPUS_MODEL","ANTHROPIC_DEFAULT_OPUS_MODEL_NAME","ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION","ANTHROPIC_DEFAULT_SONNET_MODEL","ANTHROPIC_DEFAULT_SONNET_MODEL_NAME","ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION","ANTHROPIC_DEFAULT_FABLE_MODEL","ANTHROPIC_DEFAULT_FABLE_MODEL_NAME","ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION","ANTHROPIC_DEFAULT_HAIKU_MODEL","ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME","ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION"]);function l(a){let b=String(a||"");if(!b)return"";let c=0x811c9dc5;for(let a=0;a<b.length;a+=1)c^=b.charCodeAt(a),c=Math.imul(c,0x1000193);return(c>>>0).toString(16).padStart(8,"0")}let m=a=>a.replace(/(^|-)([a-z])/g,(a,b,c)=>`${b}${c.toUpperCase()}`);function n(a,b){if("string"!=typeof a)return"";for(let c of a.split(/\r?\n/)){let a=c.indexOf(":");if(!(a<0)&&c.slice(0,a).trim().toLowerCase()===b)return c.slice(a+1).trim()}return""}function o(a){return"string"==typeof a&&j.test(a)}function p(a){if(!Array.isArray(a))throw TypeError("Claude catalog models must be an array.");let b=[],c=new Set;for(let d of a){if("string"!=typeof d)throw TypeError("Each Claude catalog model must be a string.");let a=d.trim();if(a){if(/\r|\n/.test(a))throw TypeError("Claude catalog model IDs cannot contain newlines.");c.has(a)||(c.add(a),b.push(a))}}return b}function q(a){if("string"!=typeof a||!a.trim())return[];try{return p(JSON.parse(decodeURIComponent(a)))}catch{return[]}}function r(a){return q(n(a,f))}function s(a){return q(a?.get(f))}function t(a,b){if(!a||"object"!=typeof a||Array.isArray(a))return{};let c=new Set(p(b)),d={};for(let[b,e]of Object.entries(a)){if(!c.has(b))continue;let a=String(e||"").trim().replace(/[·•—–]/g," | ").replace(/[\r\n]+/g," ").replace(/\s+/g," ");a&&(d[b]=a.slice(0,48))}return d}function u(a){var b=a?.get(g);if("string"!=typeof b||!b.trim())return{};try{let a=JSON.parse(decodeURIComponent(b));return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}catch{return{}}}function v(a){let b=String(a||"").trim();if(!b)throw TypeError("A Switchboard model ID is required.");let c=b.split("/").map(encodeURIComponent).join("/");return`${i}${c}`}function w(a){if("string"!=typeof a||!a.startsWith(i))return null;let b=a.slice(i.length);if(!b)return null;try{let c=b.split("/").map(decodeURIComponent).join("/");return v(c)===a?c:null}catch{return null}}function x({baseUrl:a,gatewayKey:b,models:c=[],pickerLabels:h={}}){let i=String(a||"").trim().replace(/\/+$/,""),j=String(b||"").trim();if(!i)throw TypeError("A Switchboard endpoint is required.");if(!j)throw TypeError("A Switchboard API key is required.");let l=p(c),n=t(h,l),o=function(a=[],b={}){let c=p(a),h=[`${m(e)}: ${d.FULL_CATALOG}`,`${m(f)}: ${encodeURIComponent(JSON.stringify(p(c)))}`],i=function(a,b={}){let c=t(b,a);return 0===Object.keys(c).length?"":encodeURIComponent(JSON.stringify(c))}(c,b);return i&&h.push(`${m(g)}: ${i}`),h.join("\n")}(l,n);if(new TextEncoder().encode(o).byteLength>7168)throw TypeError("This catalog is too large for Claude Code request headers. Remove models or shorten picker labels.");let q={ANTHROPIC_API_KEY:"",ANTHROPIC_AUTH_TOKEN:j,ANTHROPIC_BASE_URL:i.endsWith("/v1")?i:`${i}/v1`,ANTHROPIC_CUSTOM_HEADERS:o,ANTHROPIC_CUSTOM_MODEL_OPTION:"",CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY:"1"};for(let a of k)q[a]="";return{env:q,pickerLabels:n}}function y(a){return n(a,e).toLowerCase()===d.PASS_THROUGH}function z(a){let b=n(a,e).toLowerCase();return b===d.FULL_CATALOG||b===d.PROXY}function A(a){return a?.get(e)?.trim().toLowerCase()===d.PASS_THROUGH}function B(a){let b=a?.get(e)?.trim().toLowerCase();return b===d.FULL_CATALOG||b===d.PROXY}},78335:()=>{},92770:(a,b,c)=>{"use strict";c.r(b),c.d(b,{DELETE:()=>S,GET:()=>O,POST:()=>Q});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(63294),o=c(23628),p=c(95510),q=c(68393),r=c(24424);let s=(0,g.promisify)(f.exec),t="switchboard",u=Promise.resolve(),v=a=>{let b=u.then(a,a);return u=b.catch(()=>{}),b},w=()=>k().join(m().homedir(),".pi","agent"),x=()=>k().join(w(),"models.json"),y=()=>k().join(w(),"settings.json"),z=()=>k().join(w(),"switchboard-backup.json"),A=()=>k().join(w(),"models.yml"),B=async()=>{try{let a="win32"===m().platform();return await s(a?"where pi":"which pi",{windowsHide:!0}),!0}catch{try{return await i().access(w()),!0}catch{return!1}}},C=async(a,b)=>{try{let b=await i().readFile(a,"utf-8"),c=JSON.parse(b);if(!c||"object"!=typeof c||Array.isArray(c))throw TypeError(`${a} must contain a JSON object`);return c}catch(a){if("ENOENT"===a.code)return b;throw a}},D=()=>C(x(),{providers:{}}),E=()=>C(y(),{}),F=async(a,b)=>{try{let b=await i().readFile(a,"utf-8"),c=""===b.trim()?{}:(0,n.qg)(b);if(!c||"object"!=typeof c||Array.isArray(c))throw TypeError(`${a} must contain a YAML object`);return c}catch(a){if("ENOENT"===a.code)return b;throw a}},G=()=>F(A(),{providers:{}}),H=a=>Array.isArray(a)?a.map(H):a&&"object"==typeof a?Object.fromEntries(Object.keys(a).sort().map(b=>[b,H(a[b])])):a,I=(a,b)=>JSON.stringify(H(a))===JSON.stringify(H(b)),J=a=>a&&"object"==typeof a&&"boolean"==typeof a.exists,K=a=>{if(null==a)return null;if(1===a.version&&"restored"===a.state)return a;if(1!==a.version||!J(a.provider)||!["defaultProvider","defaultModel","enabledModels"].every(b=>J(a.settings?.[b]))||!a.managedProvider||!a.managedSettings)throw Error("Unsupported or invalid Pi Switchboard backup file");return a},L=async(a,b,c,d)=>{await i().mkdir(w(),{recursive:!0}),await (0,p.M_)([{filePath:z(),content:d?JSON.stringify(d,null,2):null,secret:!0},{filePath:A(),content:(0,n.As)(a),secret:!0},{filePath:x(),content:JSON.stringify(b,null,2),secret:!0},{filePath:y(),content:JSON.stringify(c,null,2),secret:!0}])},M=(a,b,c)=>{("defaultProvider"!==c&&"defaultModel"!==c||a.defaultProvider===t)&&I(a[c],b?.managedSettings?.[c])&&(0,p.S3)(a,{[c]:b.settings?.[c]})};async function N(){try{if(!await B())return e.NextResponse.json({installed:!1,settings:null,message:"Pi is not installed"});let[a,b,c]=await Promise.all([G(),D(),E()]),d=a?.providers?.[t]||null,f=d||b?.providers?.[t]||null,g=Array.isArray(d?.models)?d.models:Array.isArray(b?.providers?.[t]?.models)?b.providers[t].models:[],h=g.map(a=>a?.id).filter(Boolean),i=Object.fromEntries(g.filter(a=>a?.id&&a?.name).map(a=>[a.id,a.name])),j=(c.defaultProvider===t&&h.includes(c.defaultModel)?c.defaultModel:null)||h[0]||null,k=f?.baseUrl||null,l=!!(f&&(a=>{try{let b=new URL(String(a||"")).hostname.toLowerCase();return"localhost"===b||"0.0.0.0"===b||/^127(?:\.\d{1,3}){3}$/.test(b)}catch{return!1}})(k)),m=l&&h.length>0;return e.NextResponse.json({installed:!0,hasSwitchboard:l,settings:{baseUrl:k,model:j,defaultModel:j,models:h,pickerLabels:i,apiKeySet:!!f?.apiKey,provider:t,scopeConfigured:m},configPath:A(),settingsPath:y()})}catch(a){return console.log("Error checking pi settings:",a),e.NextResponse.json({error:"Failed to check pi settings"},{status:500})}}async function O(){return v(N)}async function P(a){try{let b,c;try{b=await a.json()}catch{return e.NextResponse.json({error:"Invalid JSON body"},{status:400})}let{baseUrl:d,apiKey:f,model:g,models:h,defaultModel:i,pickerLabels:j}=b||{},[k,l,m,n]=await Promise.all([G(),D(),E(),C(z(),null)]),r=K(n),s=r?.state==="restored"?null:r,u=Array.isArray(k?.providers?.[t]?.models)?k.providers[t].models:Array.isArray(l?.providers?.[t]?.models)?l.providers[t].models:[],v=void 0===h?[g,...u.map(a=>a?.id)]:h,w=(0,o.rP)(v),x=void 0===j||j&&"object"==typeof j&&!Array.isArray(j)&&Object.values(j).every(a=>"string"==typeof a);if(!(0,o.uI)(d)||!(0,o.iU)(f)||0===w.length||!x)return e.NextResponse.json({error:"baseUrl, models, API key, or picker labels are invalid"},{status:400});let B=(c=String(d||"").replace(/\/+$/,"")).endsWith("/v1")?c:`${c}/v1`,F=f||"sk_switchboard",H=(0,o.F2)(i||g,w),I=(0,q.OU)(j,w),J=a=>{(!a.providers||"object"!=typeof a.providers||Array.isArray(a.providers))&&(a.providers={})};J(k),J(l);let M={baseUrl:B,api:"openai-completions",apiKey:F,authHeader:!0,compat:{supportsDeveloperRole:!1,supportsReasoningEffort:!0,supportsUsageInStreaming:!0},models:(0,o.L6)(w,u,I)},N={...M,discovery:{type:"openai-models-list"}},O=s?.version===1?s:{version:1,state:"active",provider:(0,p.EA)(k.providers,[t])[t],legacyProvider:(0,p.EA)(l.providers,[t])[t],settings:(0,p.EA)(m,["defaultProvider","defaultModel","enabledModels"])};k.providers[t]=N,l.providers[t]=M,m.defaultProvider=t,m.defaultModel=H;let P=((a,b)=>{if(!Array.isArray(a)||0===a.length)return;let c=a.filter(a=>"string"!=typeof a||!a.startsWith(`${t}/`));if(0!==c.length)return[...c,...b]})(m.enabledModels,w.map(a=>`${t}/${a}`));return P?m.enabledModels=P:delete m.enabledModels,O.managedProvider=N,O.managedLegacyProvider=M,O.managedSettings={defaultProvider:t,defaultModel:H,enabledModels:m.enabledModels},await L(k,l,m,O),e.NextResponse.json({success:!0,message:`Pi configured with ${w.length} model${1===w.length?"":"s"}. ${H} is the default; use /model to switch.`,pickerLabels:Object.fromEntries(M.models.map(a=>[a.id,a.name])),configPath:A(),settingsPath:y()})}catch(a){return console.log("Error updating pi settings:",a),e.NextResponse.json({error:"Failed to update pi settings"},{status:500})}}async function Q(a){return v(()=>P(a))}async function R(){try{let[a,b,c,d]=await Promise.all([G(),D(),E(),C(z(),null)]),f=K(d);if(f?.state==="restored")return e.NextResponse.json({success:!0,message:"No Switchboard Pi settings to reset"});let g=a?.providers?.[t],h=b?.providers?.[t],i=!!(g||h),j=c.defaultProvider===t||Array.isArray(c.enabledModels)&&c.enabledModels.some(a=>"string"==typeof a&&a.startsWith(`${t}/`));if(!f&&!i&&!j)return e.NextResponse.json({success:!0,message:"No Switchboard Pi settings to reset"});return g&&(!f?.managedProvider||I(g,f.managedProvider))&&(f?.version===1?(0,p.S3)(a.providers,{[t]:f.provider}):delete a.providers[t]),h&&(!f?.managedLegacyProvider||I(h,f.managedLegacyProvider))&&(f?.version===1?(0,p.S3)(b.providers,{[t]:f.legacyProvider??f.provider}):delete b.providers[t]),f?.version===1?(M(c,f,"defaultModel"),M(c,f,"defaultProvider"),M(c,f,"enabledModels")):c.defaultProvider===t&&(delete c.defaultProvider,delete c.defaultModel),!f&&Array.isArray(c.enabledModels)&&(c.enabledModels=c.enabledModels.filter(a=>"string"!=typeof a||!a.startsWith(`${t}/`)),0===c.enabledModels.length&&delete c.enabledModels),await L(a,b,c,{version:1,state:"restored"}),e.NextResponse.json({success:!0,message:"Switchboard provider removed and previous Pi model settings restored"})}catch(a){return console.log("Error resetting pi settings:",a),e.NextResponse.json({error:"Failed to reset pi settings"},{status:500})}}async function S(){return v(R)}(0,r.D)([O,Q,S]),(0,d.A)(O,"0003f41d101d12907b1f67cda75763a9985a757044",null),(0,d.A)(Q,"400f512d81cf2ded77956e97579f0bb3d23a09d649",null),(0,d.A)(S,"00871664f3682178a0cc0fc372d07346d0e03d8ac4",null)},95510:(a,b,c)=>{"use strict";c.d(b,{EA:()=>i,M_:()=>h,S3:()=>j,Yb:()=>g});var d=c(51455),e=c.n(d),f=c(57781);async function g(a,b,{secret:c=!1}={}){if(await (0,f.R)(a,b,c?{encoding:"utf-8",mode:384}:"utf-8"),c)try{await e().chmod(a,384)}catch{}}async function h(a){let b=await Promise.all(a.map(async({filePath:a})=>{try{return{exists:!0,value:await e().readFile(a)}}catch(a){if(a?.code==="ENOENT")return{exists:!1,value:null};throw a}})),c=async({filePath:a,content:b,secret:c=!1})=>{if(null!==b)return void await g(a,b,{secret:c});try{await e().unlink(a)}catch(a){if(a?.code!=="ENOENT")throw a}};try{for(let b of a)await c(b)}catch(e){let d=(await Promise.allSettled(a.map(({filePath:a,secret:d=!1},e)=>c({filePath:a,content:b[e].exists?b[e].value:null,secret:d})))).filter(a=>"rejected"===a.status);if(d.length>0)throw AggregateError([e,...d.map(a=>a.reason)],"Failed to replace CLI files and roll them back cleanly");throw e}}function i(a,b){return Object.fromEntries(b.map(b=>[b,{exists:Object.hasOwn(a,b),value:a[b]}]))}function j(a,b){for(let[c,d]of Object.entries(b||{}))d?.exists?a[c]=d.value:delete a[c]}},96487:()=>{}};
5
+ `}function u(a){let b=o(a,f),c=(0,d.Tp)(p(a,f));if(c.errors.length)throw Error(`Invalid Hermes YAML: ${c.errors[0].message}`);let e=q(c.getIn(["custom_providers"]));if(Array.isArray(e)){let a=e.filter(a=>a?.name!=="switchboard");b?.previousProvider&&a.push(b.previousProvider),a.length?c.setIn(["custom_providers"],a):c.deleteIn(["custom_providers"])}return"custom:switchboard"===q(c.getIn(["model","provider"]))&&(b?.previousModel?c.setIn(["model"],b.previousModel):c.deleteIn(["model"])),c.toString()}function v(a,{baseUrl:b,apiKey:c,models:d,defaultModel:e}){let f=i(d),g=j(e,f);return{...a,model:`switchboard/${g}`,provider:{...a.provider||{},switchboard:{npm:"@ai-sdk/openai-compatible",name:"Switchboard",options:{apiKey:c,baseURL:b},models:Object.fromEntries(f.map(a=>[a,{name:k(a)}]))}}}}function w(a,{baseUrl:b,apiKey:c,models:d,defaultModel:e}){let f=i(d),g=j(e,f),h=a.providers||{},l=a.models||{};return{providers:{...h,providers:{...h.providers||{},switchboard:{type:"openai-compatible",name:"Switchboard",baseUrl:b,apiKey:c,defaultModelId:g}}},models:{...l,providers:{...l.providers||{},switchboard:{provider:{name:"Switchboard",baseUrl:b,defaultModelId:g},models:Object.fromEntries(f.map(a=>[a,{id:a,name:k(a)}]))}}}}}function x(a,{models:b,defaultModel:c}){let d=i(b),e=j(c,d),f=Object.fromEntries(Object.entries(a?.modelConfigs?.modelDefinitions&&"object"==typeof a.modelConfigs.modelDefinitions?a.modelConfigs.modelDefinitions:{}).filter(([,a])=>a?.family!=="switchboard"));return{...a,model:{...a.model||{},name:e},experimental:{...a.experimental||{},dynamicModelConfiguration:!0},modelConfigs:{...a.modelConfigs||{},modelDefinitions:{...f,...Object.fromEntries(d.map(a=>[a,{displayName:`Switchboard \xb7 ${k(a)}`,family:"switchboard",tier:"custom",isPreview:!1,isVisible:!0,features:{thinking:!0,multimodalToolUse:!0}}]))}}}}},57781:(a,b,c)=>{"use strict";c.d(b,{R:()=>h});var d=c(51455),e=c.n(d),f=c(76760),g=c.n(f);async function h(a,b,c="utf-8"){let d=g().dirname(a);await e().mkdir(d,{recursive:!0});let f=g().join(d,`.${g().basename(a)}.sb-tmp-${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`);try{await e().writeFile(f,b,c);try{let a=await e().open(f,"r+");try{await a.sync()}finally{await a.close()}}catch{}await e().rename(f,a)}catch(a){try{await e().unlink(f)}catch{}throw a}}},68393:(a,b,c)=>{"use strict";c.d(b,{AD:()=>x,El:()=>v,JF:()=>r,LU:()=>u,Ng:()=>o,OU:()=>t,Ro:()=>h,_1:()=>s,ao:()=>l,at:()=>B,i6:()=>A,iO:()=>w,s8:()=>z,wN:()=>y});let d=Object.freeze({PASS_THROUGH:"pass-through",PROXY:"proxy",FULL_CATALOG:"full-catalog"}),e="x-switchboard-claude-mode",f="x-switchboard-claude-models",g="x-switchboard-claude-labels",h="x-switchboard-key",i="claude-switchboard-v1/",j=/^(?:claude|anthropic)-[a-z0-9][a-z0-9._-]*$/i,k=Object.freeze(["ANTHROPIC_DEFAULT_OPUS_MODEL","ANTHROPIC_DEFAULT_OPUS_MODEL_NAME","ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION","ANTHROPIC_DEFAULT_SONNET_MODEL","ANTHROPIC_DEFAULT_SONNET_MODEL_NAME","ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION","ANTHROPIC_DEFAULT_FABLE_MODEL","ANTHROPIC_DEFAULT_FABLE_MODEL_NAME","ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION","ANTHROPIC_DEFAULT_HAIKU_MODEL","ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME","ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION"]);function l(a){let b=String(a||"");if(!b)return"";let c=0x811c9dc5;for(let a=0;a<b.length;a+=1)c^=b.charCodeAt(a),c=Math.imul(c,0x1000193);return(c>>>0).toString(16).padStart(8,"0")}let m=a=>a.replace(/(^|-)([a-z])/g,(a,b,c)=>`${b}${c.toUpperCase()}`);function n(a,b){if("string"!=typeof a)return"";for(let c of a.split(/\r?\n/)){let a=c.indexOf(":");if(!(a<0)&&c.slice(0,a).trim().toLowerCase()===b)return c.slice(a+1).trim()}return""}function o(a){return"string"==typeof a&&j.test(a)}function p(a){if(!Array.isArray(a))throw TypeError("Claude catalog models must be an array.");let b=[],c=new Set;for(let d of a){if("string"!=typeof d)throw TypeError("Each Claude catalog model must be a string.");let a=d.trim();if(a){if(/\r|\n/.test(a))throw TypeError("Claude catalog model IDs cannot contain newlines.");c.has(a)||(c.add(a),b.push(a))}}return b}function q(a){if("string"!=typeof a||!a.trim())return[];try{return p(JSON.parse(decodeURIComponent(a)))}catch{return[]}}function r(a){return q(n(a,f))}function s(a){return q(a?.get(f))}function t(a,b){if(!a||"object"!=typeof a||Array.isArray(a))return{};let c=new Set(p(b)),d={};for(let[b,e]of Object.entries(a)){if(!c.has(b))continue;let a=String(e||"").trim().replace(/[·•—–]/g," | ").replace(/[\r\n]+/g," ").replace(/\s+/g," ");a&&(d[b]=a.slice(0,48))}return d}function u(a){var b=a?.get(g);if("string"!=typeof b||!b.trim())return{};try{let a=JSON.parse(decodeURIComponent(b));return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}catch{return{}}}function v(a){let b=String(a||"").trim();if(!b)throw TypeError("A Switchboard model ID is required.");let c=b.split("/").map(encodeURIComponent).join("/");return`${i}${c}`}function w(a){if("string"!=typeof a||!a.startsWith(i))return null;let b=a.slice(i.length);if(!b)return null;try{let c=b.split("/").map(decodeURIComponent).join("/");return v(c)===a?c:null}catch{return null}}function x({baseUrl:a,gatewayKey:b,models:c=[],pickerLabels:h={}}){let i=String(a||"").trim().replace(/\/+$/,""),j=String(b||"").trim();if(!i)throw TypeError("A Switchboard endpoint is required.");if(!j)throw TypeError("A Switchboard API key is required.");let l=p(c),n=t(h,l),o=function(a=[],b={}){let c=p(a),h=[`${m(e)}: ${d.FULL_CATALOG}`,`${m(f)}: ${encodeURIComponent(JSON.stringify(p(c)))}`],i=function(a,b={}){let c=t(b,a);return 0===Object.keys(c).length?"":encodeURIComponent(JSON.stringify(c))}(c,b);return i&&h.push(`${m(g)}: ${i}`),h.join("\n")}(l,n);if(new TextEncoder().encode(o).byteLength>7168)throw TypeError("This catalog is too large for Claude Code request headers. Remove models or shorten picker labels.");let q={ANTHROPIC_API_KEY:"",ANTHROPIC_AUTH_TOKEN:j,ANTHROPIC_BASE_URL:i.endsWith("/v1")?i:`${i}/v1`,ANTHROPIC_CUSTOM_HEADERS:o,ANTHROPIC_CUSTOM_MODEL_OPTION:"",CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY:"1"};for(let a of k)q[a]="";return{env:q,pickerLabels:n}}function y(a){return n(a,e).toLowerCase()===d.PASS_THROUGH}function z(a){let b=n(a,e).toLowerCase();return b===d.FULL_CATALOG||b===d.PROXY}function A(a){return a?.get(e)?.trim().toLowerCase()===d.PASS_THROUGH}function B(a){let b=a?.get(e)?.trim().toLowerCase();return b===d.FULL_CATALOG||b===d.PROXY}},78335:()=>{},92770:(a,b,c)=>{"use strict";c.r(b),c.d(b,{DELETE:()=>S,GET:()=>O,POST:()=>Q});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(63294),o=c(23628),p=c(95510),q=c(68393),r=c(24424);let s=(0,g.promisify)(f.exec),t="switchboard",u=Promise.resolve(),v=a=>{let b=u.then(a,a);return u=b.catch(()=>{}),b},w=()=>k().join(m().homedir(),".pi","agent"),x=()=>k().join(w(),"models.json"),y=()=>k().join(w(),"settings.json"),z=()=>k().join(w(),"switchboard-backup.json"),A=()=>k().join(w(),"models.yml"),B=async()=>{try{let a="win32"===m().platform();return await s(a?"where pi":"which pi",{windowsHide:!0}),!0}catch{try{return await i().access(w()),!0}catch{return!1}}},C=async(a,b)=>{try{let b=await i().readFile(a,"utf-8"),c=JSON.parse(b);if(!c||"object"!=typeof c||Array.isArray(c))throw TypeError(`${a} must contain a JSON object`);return c}catch(a){if("ENOENT"===a.code)return b;throw a}},D=()=>C(x(),{providers:{}}),E=()=>C(y(),{}),F=async(a,b)=>{try{let b=await i().readFile(a,"utf-8"),c=""===b.trim()?{}:(0,n.qg)(b);if(!c||"object"!=typeof c||Array.isArray(c))throw TypeError(`${a} must contain a YAML object`);return c}catch(a){if("ENOENT"===a.code)return b;throw a}},G=()=>F(A(),{providers:{}}),H=a=>Array.isArray(a)?a.map(H):a&&"object"==typeof a?Object.fromEntries(Object.keys(a).sort().map(b=>[b,H(a[b])])):a,I=(a,b)=>JSON.stringify(H(a))===JSON.stringify(H(b)),J=a=>a&&"object"==typeof a&&"boolean"==typeof a.exists,K=a=>{if(null==a)return null;if(1===a.version&&"restored"===a.state)return a;if(1!==a.version||!J(a.provider)||!["defaultProvider","defaultModel","enabledModels"].every(b=>J(a.settings?.[b]))||!a.managedProvider||!a.managedSettings)throw Error("Unsupported or invalid Pi Switchboard backup file");return a},L=async(a,b,c,d)=>{await i().mkdir(w(),{recursive:!0}),await (0,p.M_)([{filePath:z(),content:d?JSON.stringify(d,null,2):null,secret:!0},{filePath:A(),content:(0,n.As)(a),secret:!0},{filePath:x(),content:JSON.stringify(b,null,2),secret:!0},{filePath:y(),content:JSON.stringify(c,null,2),secret:!0}])},M=(a,b,c)=>{("defaultProvider"!==c&&"defaultModel"!==c||a.defaultProvider===t)&&I(a[c],b?.managedSettings?.[c])&&(0,p.S3)(a,{[c]:b.settings?.[c]})};async function N(){try{if(!await B())return e.NextResponse.json({installed:!1,settings:null,message:"Pi is not installed"});let[a,b,c]=await Promise.all([G(),D(),E()]),d=a?.providers?.[t]||null,f=d||b?.providers?.[t]||null,g=Array.isArray(d?.models)?d.models:Array.isArray(b?.providers?.[t]?.models)?b.providers[t].models:[],h=g.map(a=>a?.id).filter(Boolean),i=Object.fromEntries(g.filter(a=>a?.id&&a?.name).map(a=>[a.id,a.name])),j=(c.defaultProvider===t&&h.includes(c.defaultModel)?c.defaultModel:null)||h[0]||null,k=f?.baseUrl||null,l=!!(f&&(a=>{try{let b=new URL(String(a||"")).hostname.toLowerCase();return"localhost"===b||"0.0.0.0"===b||/^127(?:\.\d{1,3}){3}$/.test(b)}catch{return!1}})(k)),m=l&&h.length>0;return e.NextResponse.json({installed:!0,hasSwitchboard:l,settings:{baseUrl:k,model:j,defaultModel:j,models:h,pickerLabels:i,apiKeySet:!!f?.apiKey,provider:t,scopeConfigured:m},configPath:A(),settingsPath:y()})}catch(a){return console.log("Error checking pi settings:",a),e.NextResponse.json({error:"Failed to check pi settings"},{status:500})}}async function O(){return v(N)}async function P(a){try{let b,c;try{b=await a.json()}catch{return e.NextResponse.json({error:"Invalid JSON body"},{status:400})}let{baseUrl:d,apiKey:f,model:g,models:h,defaultModel:i,pickerLabels:j}=b||{},[k,l,m,n]=await Promise.all([G(),D(),E(),C(z(),null)]),r=K(n),s=r?.state==="restored"?null:r,u=Array.isArray(k?.providers?.[t]?.models)?k.providers[t].models:Array.isArray(l?.providers?.[t]?.models)?l.providers[t].models:[],v=void 0===h?[g,...u.map(a=>a?.id)]:h,w=(0,o.rP)(v),x=void 0===j||j&&"object"==typeof j&&!Array.isArray(j)&&Object.values(j).every(a=>"string"==typeof a);if(!(0,o.uI)(d)||!(0,o.iU)(f)||0===w.length||!x)return e.NextResponse.json({error:"baseUrl, models, API key, or picker labels are invalid"},{status:400});let B=(c=String(d||"").replace(/\/+$/,"")).endsWith("/v1")?c:`${c}/v1`,F=f||"sk_switchboard",H=(0,o.F2)(i||g,w),I=(0,q.OU)(j,w),J=a=>{(!a.providers||"object"!=typeof a.providers||Array.isArray(a.providers))&&(a.providers={})};J(k),J(l);let M={baseUrl:B,api:"openai-completions",apiKey:F,authHeader:!0,compat:{supportsDeveloperRole:!1,supportsReasoningEffort:!0,supportsUsageInStreaming:!0},models:(0,o.L6)(w,u,I)},N={...M,discovery:{type:"openai-models-list"}},O=s?.version===1?s:{version:1,state:"active",provider:(0,p.EA)(k.providers,[t])[t],legacyProvider:(0,p.EA)(l.providers,[t])[t],settings:(0,p.EA)(m,["defaultProvider","defaultModel","enabledModels"])};k.providers[t]=N,l.providers[t]=M,m.defaultProvider=t,m.defaultModel=H;let P=((a,b)=>{if(!Array.isArray(a)||0===a.length)return;let c=a.filter(a=>"string"!=typeof a||!a.startsWith(`${t}/`));if(0!==c.length)return[...c,...b]})(m.enabledModels,w.map(a=>`${t}/${a}`));return P?m.enabledModels=P:delete m.enabledModels,O.managedProvider=N,O.managedLegacyProvider=M,O.managedSettings={defaultProvider:t,defaultModel:H,enabledModels:m.enabledModels},await L(k,l,m,O),e.NextResponse.json({success:!0,message:`Pi configured with ${w.length} model${1===w.length?"":"s"}. ${H} is the default; use /model to switch.`,pickerLabels:Object.fromEntries(M.models.map(a=>[a.id,a.name])),configPath:A(),settingsPath:y()})}catch(a){return console.log("Error updating pi settings:",a),e.NextResponse.json({error:"Failed to update pi settings"},{status:500})}}async function Q(a){return v(()=>P(a))}async function R(){try{let[a,b,c,d]=await Promise.all([G(),D(),E(),C(z(),null)]),f=K(d);if(f?.state==="restored")return e.NextResponse.json({success:!0,message:"No Switchboard Pi settings to reset"});let g=a?.providers?.[t],h=b?.providers?.[t],i=!!(g||h),j=c.defaultProvider===t||Array.isArray(c.enabledModels)&&c.enabledModels.some(a=>"string"==typeof a&&a.startsWith(`${t}/`));if(!f&&!i&&!j)return e.NextResponse.json({success:!0,message:"No Switchboard Pi settings to reset"});return g&&(!f?.managedProvider||I(g,f.managedProvider))&&(f?.version===1?(0,p.S3)(a.providers,{[t]:f.provider}):delete a.providers[t]),h&&(!f?.managedLegacyProvider||I(h,f.managedLegacyProvider))&&(f?.version===1?(0,p.S3)(b.providers,{[t]:f.legacyProvider??f.provider}):delete b.providers[t]),f?.version===1?(M(c,f,"defaultModel"),M(c,f,"defaultProvider"),M(c,f,"enabledModels")):c.defaultProvider===t&&(delete c.defaultProvider,delete c.defaultModel),!f&&Array.isArray(c.enabledModels)&&(c.enabledModels=c.enabledModels.filter(a=>"string"!=typeof a||!a.startsWith(`${t}/`)),0===c.enabledModels.length&&delete c.enabledModels),await L(a,b,c,{version:1,state:"restored"}),e.NextResponse.json({success:!0,message:"Switchboard provider removed and previous Pi model settings restored"})}catch(a){return console.log("Error resetting pi settings:",a),e.NextResponse.json({error:"Failed to reset pi settings"},{status:500})}}async function S(){return v(R)}(0,r.D)([O,Q,S]),(0,d.A)(O,"00677cf6974113bd5f7c1cd8bb59b085d57359d8b0",null),(0,d.A)(Q,"407353c41c2ce829cf9da56dfd8057f5dd12421713",null),(0,d.A)(S,"001a3d1a81a5857289cf61c2f176a1b7efb9d88b6a",null)},95510:(a,b,c)=>{"use strict";c.d(b,{EA:()=>i,M_:()=>h,S3:()=>j,Yb:()=>g});var d=c(51455),e=c.n(d),f=c(57781);async function g(a,b,{secret:c=!1}={}){if(await (0,f.R)(a,b,c?{encoding:"utf-8",mode:384}:"utf-8"),c)try{await e().chmod(a,384)}catch{}}async function h(a){let b=await Promise.all(a.map(async({filePath:a})=>{try{return{exists:!0,value:await e().readFile(a)}}catch(a){if(a?.code==="ENOENT")return{exists:!1,value:null};throw a}})),c=async({filePath:a,content:b,secret:c=!1})=>{if(null!==b)return void await g(a,b,{secret:c});try{await e().unlink(a)}catch(a){if(a?.code!=="ENOENT")throw a}};try{for(let b of a)await c(b)}catch(e){let d=(await Promise.allSettled(a.map(({filePath:a,secret:d=!1},e)=>c({filePath:a,content:b[e].exists?b[e].value:null,secret:d})))).filter(a=>"rejected"===a.status);if(d.length>0)throw AggregateError([e,...d.map(a=>a.reason)],"Failed to replace CLI files and roll them back cleanly");throw e}}function i(a,b){return Object.fromEntries(b.map(b=>[b,{exists:Object.hasOwn(a,b),value:a[b]}]))}function j(a,b){for(let[c,d]of Object.entries(b||{}))d?.exists?a[c]=d.value:delete a[c]}},96487:()=>{}};