import{fU as h,jU as zz}from"./cli-0.5.3-wcx7cnw5.mjs";import{P1 as e,q1 as m}from"./cli-0.5.3-1vt6twff.mjs";import"./cli-0.5.3-7017ez65.mjs";import"./cli-0.5.3-ea94acj4.mjs";import"./cli-0.5.3-3k22nqvy.mjs";import"./cli-0.5.3-vpcrbd8n.mjs";import"./cli-0.5.3-jdw3ajfv.mjs";import"./cli-0.5.3-qg4a557t.mjs";import{_ba as y,fca as s,ica as v,lca as r}from"./cli-0.5.3-t65dek0m.mjs";import"./cli-0.5.3-kavpx97n.mjs";import"./cli-0.5.3-9bdwhdys.mjs";import"./cli-0.5.3-ttc72eq3.mjs";import"./cli-0.5.3-g75gdzrp.mjs";import"./cli-0.5.3-1rg2r7n7.mjs";import"./cli-0.5.3-6j2jk6dt.mjs";import"./cli-0.5.3-66650sba.mjs";import"./cli-0.5.3-9vh3vpap.mjs";import{Nfa as k,Qfa as o}from"./cli-0.5.3-n3cxyxpg.mjs";import"./cli-0.5.3-kbvzmaax.mjs";import"./cli-0.5.3-7wdgps7z.mjs";import"./cli-0.5.3-c8bcrqa4.mjs";import{gma as a,pia as b}from"./cli-0.5.3-qrvd6cmy.mjs";import"./cli-0.5.3-2dk1sk8w.mjs";import{Xma as n}from"./cli-0.5.3-0df3r78b.mjs";function Nz(J){if(!J)return"unknown";return J.replace(/-\d{4,}$/,"").replace(/-latest$/,"").replace(/-preview$/,"")}function Y(J,Q){return Q.split(".").reduce((X,O)=>X!=null?X[O]:void 0,J)}async function R(J,Q,X,O){let q=Date.now(),V;try{V=await fetch(J,{method:"POST",headers:Q,body:JSON.stringify(X)})}catch(B){return{label:O,status:0,elapsed:Date.now()-q,headers:{},usage:null,responseId:null,error:B.message}}let A=Date.now()-q,U={};if(V.headers.forEach((B,w)=>{U[w]=B}),!V.ok){let B=await V.text().catch(()=>"");return{label:O,status:V.status,elapsed:A,headers:U,usage:null,responseId:null,error:B}}let L=await V.text(),$=null,T=null,_=J.endsWith("/responses");for(let B of L.split(`

`)){let w=B.split(`
`).map((x)=>x.trim()).filter(Boolean);if(_){let x=w.find((z)=>z.startsWith("event: ")),j=w.filter((z)=>z.startsWith("data: "));if(!x||!j.length)continue;let C=x.slice(7).trim();if(C==="response.completed"||C==="response.incomplete")try{let z=JSON.parse(j.map((W)=>W.slice(6)).join(`
`));$=z?.response?.usage??null,T=z?.response?.id??null}catch{}}else for(let x of w){if(!x.startsWith("data: "))continue;let j=x.slice(6).trim();if(j==="[DONE]")continue;try{let C=JSON.parse(j);if(C.usage)$=C.usage,T=C.id??null}catch{}}}return{label:O,status:V.status,elapsed:A,headers:U,usage:$,responseId:T,error:null}}function S(J){let Q=[`--- ${J.label} ---`];if(J.error)return Q.push(`  ERROR (HTTP ${J.status}): ${J.error.slice(0,200)}`),Q.join(`
`);if(Q.push(`  HTTP ${J.status} — ${J.elapsed}ms`),J.responseId)Q.push(`  response.id: ${J.responseId}`);if(J.usage)Q.push("  Usage:"),Q.push(`    ${JSON.stringify(J.usage,null,2).replace(/\n/g,`
    `)}`);else Q.push("  Usage: null");for(let X of["openai-processing-ms","x-ratelimit-remaining","x-ratelimit-limit","x-ms-region","x-github-request-id","x-request-id"])if(J.headers[X])Q.push(`  ${X}: ${J.headers[X]}`);return Q.join(`
`)}var Jz,K,M='Say "hello" and nothing else.',g=3000,jz=async(J)=>{let Q=(J??"").trim().split(/\s+/).filter(Boolean),X=Q.includes("--no-key"),q=(Q.find((N)=>!N.startsWith("--"))||void 0)??m(),V=y({model:q}),A=v(),U=A?.transport==="github_copilot";if(U)h();let L=A?.apiKey??A?.extras?.githubToken??"";if(!L)return{type:"text",value:`No API key found. Make sure you are in an active OpenAI-compatible or GitHub Copilot session.
For GitHub Copilot: run /provider and choose GitHub Copilot.
For OpenAI-compatible: configure a profile via /provider.`};let $=V.transport==="codex_responses",T=$?"/responses":"/chat/completions",_=`${V.baseUrl}${T}`,B=Nz(V.resolvedModel),w=`${b()}:${B}`,x={"Content-Type":"application/json",Authorization:`Bearer ${L}`,originator:"claudio"};if(U)Object.assign(x,Jz);let j;if($)j={model:V.resolvedModel,instructions:K,input:[{type:"message",role:"user",content:[{type:"input_text",text:M}]}],stream:!0,...X?{}:{store:!1,prompt_cache_key:w,prompt_cache_retention:"24h"}};else j={model:V.resolvedModel,messages:[{role:"system",content:K},{role:"user",content:M}],stream:!0,stream_options:{include_usage:!0},max_tokens:20,...X?{}:{store:!1,prompt_cache_key:w}};let C=[`[cache-probe] Starting cache probe${X?" (--no-key: cache params OMITTED)":""}`,`  model: ${V.resolvedModel} (family: ${B})`,`  transport: ${V.transport}`,`  endpoint: ${_}`,`  prompt_cache_key: ${X?"NOT SENT":w}`,`  store: ${X?"NOT SENT":"false"}`,`  system prompt: ~${Math.round(K.length/4)} tokens`,`  delay between calls: ${g}ms`].join(`
`);k(C);let z=await R(_,x,j,"CALL 1 — Cold (no cache)");if(k(`[cache-probe]
${S(z)}`),z.error)return{type:"text",value:`Cache probe failed on first call: HTTP ${z.status}
${z.error.slice(0,300)}

Full details in debug log.`};await new Promise((N)=>setTimeout(N,g));let W=await R(_,x,j,"CALL 2 — Warm (cache expected)");k(`[cache-probe]
${S(W)}`);let c=["input_tokens","output_tokens","total_tokens","prompt_tokens","completion_tokens","input_tokens_details.cached_tokens","prompt_tokens_details.cached_tokens","output_tokens_details.reasoning_tokens"],Z=["[cache-probe] COMPARISON"];Z.push(`  ${"Field".padEnd(42)} ${"Call 1".padStart(8)}  ${"Call 2".padStart(8)}  ${"Delta".padStart(8)}`),Z.push(`  ${"-".repeat(72)}`);for(let N of c){let H=Y(z.usage,N),I=Y(W.usage,N);if(H===void 0&&I===void 0)continue;let i=typeof H==="number"&&typeof I==="number"?I-H:"";Z.push(`  ${N.padEnd(42)} ${String(H??"-").padStart(8)}  ${String(I??"-").padStart(8)}  ${String(i).padStart(8)}`)}Z.push(""),Z.push(`  Latency: ${z.elapsed}ms → ${W.elapsed}ms (${W.elapsed-z.elapsed>0?"+":""}${W.elapsed-z.elapsed}ms)`);for(let N of["openai-processing-ms","x-ms-region","x-ratelimit-remaining"]){let H=z.headers[N],I=W.headers[N];if(H||I)Z.push(`  ${N}: ${H??"-"} → ${I??"-"}`)}let D=Y(W.usage,"input_tokens_details.cached_tokens")??Y(W.usage,"prompt_tokens_details.cached_tokens")??0,F=z.usage?.input_tokens??z.usage?.prompt_tokens??0,P=W.usage?.input_tokens??W.usage?.prompt_tokens??0,G;if(D>0){let N=P>0?Math.round(D/P*100):"?";G=`CACHE HIT: ${D} cached tokens (${N}% of input)`}else if(F===0&&P===0)G="INCONCLUSIVE: Server returns 0 input_tokens — cannot measure";else if(W.elapsed<z.elapsed*0.6&&F>100)G=`POSSIBLE SILENT CACHING: Call 2 was ${Math.round((1-W.elapsed/z.elapsed)*100)}% faster but no cached_tokens reported`;else G="NO CACHE DETECTED";Z.push(`
  Verdict: ${G}`);function u(N){return{input_tokens:N?.input_tokens??0,output_tokens:N?.output_tokens??0,cache_creation_input_tokens:0,cache_read_input_tokens:0}}function p(N){return{input_tokens:N?.prompt_tokens??0,output_tokens:N?.completion_tokens??0,cache_creation_input_tokens:0,cache_read_input_tokens:N?.prompt_tokens_details?.cached_tokens??0}}let f=$?u:p,d=f(z.usage),E=f(W.usage);if(Z.push(""),Z.push(`  --- What main's shim reports (${$?"codexShim.makeUsage":"openaiShim.convertChunkUsage"}) ---`),Z.push(`  Call 1: cache_read_input_tokens=${d.cache_read_input_tokens}`),Z.push(`  Call 2: cache_read_input_tokens=${E.cache_read_input_tokens}`),$&&D>0)Z.push(`  BUG: Server returned ${D} cached tokens but main's makeUsage() drops it → reports 0`);else if(!$&&E.cache_read_input_tokens>0)Z.push("  OK: Chat Completions path on main correctly reads cached_tokens");k(Z.join(`
`));let t=X?" (NO cache key sent)":"",l=$?"codexShim.makeUsage()":"openaiShim.convertChunkUsage()";return{type:"text",value:[`Cache Probe — ${V.resolvedModel} via ${$?"Responses API":"Chat Completions"}${t}`,"",`Call 1: ${z.elapsed}ms, input=${F}, cached=${Y(z.usage,"input_tokens_details.cached_tokens")??Y(z.usage,"prompt_tokens_details.cached_tokens")??0}`,`Call 2: ${W.elapsed}ms, input=${P}, cached=${D}`,"",G,"",`What main's ${l} reports:`,`  Call 2 cache_read_input_tokens = ${E.cache_read_input_tokens}${$&&D>0?"  ← BUG: server sent "+D+" but main drops it":""}`,"","Full details written to debug log."].join(`
`)}};var Qz=n(()=>{a();r();s();o();zz();e();Jz={"User-Agent":"GitHubCopilotChat/0.26.7","Editor-Version":"vscode/1.99.3","Editor-Plugin-Version":"copilot-chat/0.26.7","Copilot-Integration-Id":"vscode-chat"},K=["You are a coding assistant. Answer concisely.","CONTEXT: User is working on a TypeScript project with Bun runtime.",...Array.from({length:80},(J,Q)=>`Rule ${Q+1}: Follow best practices for TypeScript including strict typing, error handling, testing, and clean code. Prefer explicit types over any. Use const assertions. Await all async operations.`)].join(`

`)});Qz();export{jz as call};
