import{n as e}from"./chunk-DR8-3Aex.js";import{l as t,s as n,u as r}from"./envUtils-BWeoiL4Y.js";import{ai as i,ci as a,cr as o,dr as s}from"./paths-Ci1iwL5Y.js";import{l as c,p as l}from"./debug-otxXY3j-.js";import{Eo as u,G_ as d,H_ as f,K_ as p,Qo as m,Tm as ee,U_ as h,Uo as g,W_ as _,Xo as v,aE as y,dD as te,km as b,mo as x,nl as S,oE as C,q_ as w,rl as T,sE as E,st as D,tl as O,uD as k,ut as ne}from"./loadAgentsDir-C_wFhytF.js";import{$n as A,Qn as j,Zn as M,i as N,r as P,t as F}from"./prompt-6ZKyqv6z.js";import{F as I,I as L,L as R,P as z,R as B,Y as V}from"./rcDebugLog-C42A0pX1.js";import{n as H,t as U}from"./openaiShared-C-AuktRP.js";import{randomUUID as W}from"crypto";function G(e){return typeof e==`string`?e:Array.isArray(e)?e.map(e=>{if(!e||typeof e!=`object`)return``;let t=e;return typeof t.text==`string`?t.text:``}).filter(Boolean).join(`
`):``}function re(e){if(typeof e==`string`)return e;if(!Array.isArray(e))return G(e);let t=[];for(let n of e){if(!n||typeof n!=`object`)continue;let e=n;if(e.type===`text`&&typeof e.text==`string`)t.push({type:`input_text`,text:e.text});else if(e.type===`image_url`){let n=e.image_url;typeof n?.url==`string`&&t.push({type:`input_image`,image_url:n.url})}}return t.length>0?t:G(e)}function K(e){let t=[],n=[];for(let r of e){if(!r||typeof r!=`object`)continue;let e=r,i=e.role;if(i===`system`||i===`developer`){let t=G(e.content);t&&n.push(t);continue}if(i===`tool`){let n=e.tool_call_id;typeof n==`string`&&t.push({type:`function_call_output`,call_id:n,output:G(e.content)});continue}if(i===`assistant`){let n=G(e.content);n&&t.push({role:`assistant`,content:n});let r=e.tool_calls;if(Array.isArray(r))for(let e of r){if(!e||typeof e!=`object`)continue;let n=e,r=n.function,i=typeof n.id==`string`?n.id:void 0,a=typeof r?.name==`string`?r.name:void 0;!i||!a||t.push({type:`function_call`,call_id:i,name:a,arguments:typeof r?.arguments==`string`?r.arguments:`{}`})}continue}i===`user`&&t.push({role:`user`,content:re(e.content)})}return{input:t,instructions:n.length>0?n.join(`

`):void 0}}function q(e){let t=[];for(let n of e){if(!n||typeof n!=`object`)continue;let e=n.function,r=typeof e?.name==`string`?e.name:void 0;r&&t.push({type:`function`,name:r,description:typeof e?.description==`string`?e.description:``,parameters:e?.parameters&&typeof e.parameters==`object`?e.parameters:{type:`object`,properties:{}},strict:!1})}return t}function J(e){if(e===`required`)return`required`;if(e===`auto`)return`auto`;if(!e||typeof e!=`object`)return e;let t=e,n=t.function;return t.type===`function`&&typeof n?.name==`string`?{type:`function`,name:n.name}:e}function Y(e){let{input:t,instructions:n}=K(e.messages),r=q(e.tools);return{model:e.model,stream:!0,store:!1,input:t,...n?{instructions:n}:{},...r.length>0?{tools:r}:{},...e.toolChoice?{tool_choice:J(e.toolChoice)}:{},...e.reasoningEffort?{reasoning:{effort:e.reasoningEffort}}:{},parallel_tool_calls:!0}}async function*X(e){if(!e.body)throw Error(`ChatGPT response did not include a body`);let t=e.body.getReader(),n=new TextDecoder,r=``;for(;;){let{done:e,value:i}=await t.read();if(e)break;r+=n.decode(i,{stream:!0});let a=r.indexOf(`

`);for(;a>=0;){let e=r.slice(0,a);r=r.slice(a+2);let t=e.split(/\r?\n/).filter(e=>e.startsWith(`data:`)).map(e=>e.slice(5).trimStart()).join(`
`);if(t&&t!==`[DONE]`){let e=JSON.parse(t);e&&typeof e==`object`&&(yield e)}a=r.indexOf(`

`)}}}function ie(e){let t=e?.usage,n=t?.input_tokens_details;return{input_tokens:typeof t?.input_tokens==`number`?t.input_tokens:0,output_tokens:typeof t?.output_tokens==`number`?t.output_tokens:0,cache_creation_input_tokens:0,cache_read_input_tokens:typeof n?.cached_tokens==`number`?n.cached_tokens:0}}function ae(e){return e?.status===`incomplete`?`max_tokens`:`end_turn`}async function*oe(e,t){let n=`msg_${W().replace(/-/g,``).slice(0,24)}`,r=new Map,i=!1,a=-1,o=!1,s=!1,c=async function*(){i||(i=!0,yield{type:`message_start`,message:{id:n,type:`message`,role:`assistant`,content:[],model:t,stop_reason:null,stop_sequence:null,usage:{input_tokens:0,output_tokens:0,cache_creation_input_tokens:0,cache_read_input_tokens:0}}})};for await(let t of e){for await(let e of c())yield e;let e=t.type;if(e===`response.output_text.delta`){o||(s&&(yield{type:`content_block_stop`,index:a},s=!1),a++,o=!0,yield{type:`content_block_start`,index:a,content_block:{type:`text`,text:``}}),yield{type:`content_block_delta`,index:a,delta:{type:`text_delta`,text:String(t.delta??``)}};continue}if(e===`response.reasoning_text.delta`){s||(o&&(yield{type:`content_block_stop`,index:a},o=!1),a++,s=!0,yield{type:`content_block_start`,index:a,content_block:{type:`thinking`,thinking:``,signature:``}}),yield{type:`content_block_delta`,index:a,delta:{type:`thinking_delta`,thinking:String(t.delta??``)}};continue}if(e===`response.output_item.added`){let e=t.item,n=typeof t.output_index==`number`?t.output_index:-1;if(e?.type===`function_call`&&n>=0){o&&(yield{type:`content_block_stop`,index:a},o=!1),s&&(yield{type:`content_block_stop`,index:a},s=!1),a++;let t=String(e.call_id??e.id??`call_${n}`),i=String(e.name??``);r.set(n,{contentIndex:a,open:!0,name:i,id:t}),yield{type:`content_block_start`,index:a,content_block:{type:`tool_use`,id:t,name:i,input:{}}}}continue}if(e===`response.function_call_arguments.delta`){let e=typeof t.output_index==`number`?t.output_index:-1,n=r.get(e);n&&(yield{type:`content_block_delta`,index:n.contentIndex,delta:{type:`input_json_delta`,partial_json:String(t.delta??``)}});continue}if(e===`response.output_item.done`){let e=typeof t.output_index==`number`?t.output_index:-1,n=r.get(e);n?.open&&(yield{type:`content_block_stop`,index:n.contentIndex},n.open=!1);continue}if(e===`response.error`){let e=t.error;throw Error(String(e?.message??`ChatGPT Responses API error`))}if(e===`response.failed`){let e=t.response?.error;throw Error(String(e?.message??`ChatGPT Responses API failed`))}if(e===`response.completed`||e===`response.incomplete`){o&&(yield{type:`content_block_stop`,index:a},o=!1),s&&(yield{type:`content_block_stop`,index:a},s=!1);let e=t.response;yield{type:`message_delta`,delta:{stop_reason:ae(e),stop_sequence:null},usage:ie(e)},yield{type:`message_stop`}}}}async function se(e){let t=await y(),n=e.fetchOverride??globalThis.fetch,r={Authorization:`Bearer ${t.accessToken}`,"Content-Type":`application/json`,Accept:`text/event-stream`,"OpenAI-Beta":`responses=experimental`,Origin:`https://chatgpt.com`,Referer:`https://chatgpt.com/`,originator:`claude-code-best`};t.accountId&&(r[`ChatGPT-Account-Id`]=t.accountId);let i=await n(`https://chatgpt.com/backend-api/codex/responses`,{method:`POST`,headers:r,body:JSON.stringify(e.request),signal:e.signal});if(!i.ok){let e=await i.text().catch(()=>``);throw Error(`ChatGPT Responses API request failed (${i.status})${e?`: ${e.slice(0,500)}`:``}`)}return X(i)}var ce=e((()=>{C()}));function Z(e){if(t(process.env.OPENAI_ENABLE_THINKING))return!1;if(r(process.env.OPENAI_ENABLE_THINKING))return!0;let n=e.toLowerCase();return n.includes(`deepseek`)||n.includes(`mimo`)}function le(e,t){return t??(process.env.OPENAI_MAX_TOKENS&&parseInt(process.env.OPENAI_MAX_TOKENS,10)||void 0)??(process.env.CLAUDE_CODE_MAX_OUTPUT_TOKENS&&parseInt(process.env.CLAUDE_CODE_MAX_OUTPUT_TOKENS,10)||void 0)??e}function ue(e){let{model:t,messages:n,tools:r,toolChoice:i,enableThinking:a,maxTokens:o,temperatureOverride:s}=e;return{model:t,messages:n,max_tokens:o,...r.length>0&&{tools:r,...i&&{tool_choice:i}},stream:!0,stream_options:{include_usage:!0},...a&&{thinking:{type:`enabled`},enable_thinking:!0,chat_template_kwargs:{thinking:!0,enable_thinking:!0}},...!a&&s!==void 0&&{temperature:s}}}var de=e((()=>{n()}));function Q(e){if(e===`low`)return`low`;if(e===`medium`)return`medium`;if(e===`high`)return`high`;if(e===`xhigh`||e===`max`)return`xhigh`;if(typeof e==`number`)return`high`}function fe(e){let t=process.env.CLAUDE_CODE_EFFORT_LEVEL?.toLowerCase();if(!(t===`auto`||t===`unset`))return Q(t)??Q(e)??`medium`}function pe(e,t,n,r){if(!r||S())return e;let i=t.filter(e=>n.has(e.name)).map(F).sort().join(`
`);return i?[u({content:`<available-deferred-tools>\n${i}\n</available-deferred-tools>`,isMeta:!0}),...e]:e}function me(e){return e.type===`assistant`||e.type===`user`}function $(e){let{partialMessage:t,contentBlocks:n,tools:r,agentId:i,usage:a,stopReason:o,maxTokens:s}=e,c=[],l=Object.keys(n).sort((e,t)=>Number(e)-Number(t)).map(e=>n[Number(e)]).filter(Boolean);return l.length>0&&t&&c.push({message:{...t,content:v(l,r,i),usage:a,stop_reason:o,stop_sequence:null},requestId:void 0,type:`assistant`,uuid:W(),timestamp:new Date().toISOString()}),o===`max_tokens`&&c.push(x({content:`Output truncated: response exceeded the ${s} token limit. Set OPENAI_MAX_TOKENS or CLAUDE_CODE_MAX_OUTPUT_TOKENS to override.`,apiError:`max_output_tokens`,error:`max_output_tokens`})),c}async function*he(e,t,n,r,a){try{let s=V(a.model),c=m(e,n),u=await T(a.model,n,a.getToolPermissionContext||(async()=>M()),a.agents||[],a.querySource),h=new Set;if(u)for(let e of n)N(e)&&h.add(e.name);let g=n;u&&h.size>0&&(g=n.filter(e=>!!(!h.has(e.name)||A(e,`SearchExtraTools`))));let v=await Promise.all(g.map(e=>ne(e,{getToolPermissionContext:a.getToolPermissionContext,tools:n,agents:a.agents,allowedAgentTypes:a.allowedAgentTypes,model:a.model,deferLoading:u&&h.has(e.name)}))),y=v.filter(e=>{let t=e;return t.type!==`advisor_20260301`&&t.type!==`computer_20250124`}),b=Z(s),x=B(pe(c.filter(me),n,h,u),t,{enableThinking:b}),S=R(y),C=L(a.toolChoice),w=fe(a.effortValue);if(u){let e=g.filter(e=>h.has(e.name)).length;l(`[OpenAI] Tool search enabled: ${e}/${h.size} deferred tools included, total tools=${S.length}`)}else l(`[OpenAI] Tool search disabled, total tools=${S.length}`);let{upperLimit:D}=o(s),O=le(D,a.maxOutputTokensOverride);l(`[OpenAI] Calling model=${s}, messages=${x.length}, tools=${S.length}, thinking=${b}`);let k=E()?oe(await se({request:Y({model:s,messages:x,tools:S,toolChoice:C,reasoningEffort:w}),signal:r,fetchOverride:a.fetchOverride}),s):I(await f({maxRetries:0,fetchOverride:a.fetchOverride,source:a.querySource}).chat.completions.create(ue({model:s,messages:x,tools:S,toolChoice:C,enableThinking:b,maxTokens:O,temperatureOverride:a.temperatureOverride}),{signal:r}),s),j={},P=[],F=null,z=null,U={input_tokens:0,output_tokens:0,cache_creation_input_tokens:0,cache_read_input_tokens:0},W=0,G=Date.now();for await(let e of k){switch(e.type){case`message_start`:F=e.message,W=Date.now()-G,e.message.usage&&(U={...U,...e.message.usage});break;case`content_block_start`:{let t=e.index,n=e.content_block;n.type===`tool_use`?j[t]={...n,input:``}:n.type===`text`?j[t]={...n,text:``}:n.type===`thinking`?j[t]={...n,thinking:``,signature:``}:j[t]={...n};break}case`content_block_delta`:{let t=e.index,n=e.delta,r=j[t];if(!r)break;n.type===`text_delta`?r.text=(r.text||``)+n.text:n.type===`input_json_delta`?r.input=(r.input||``)+n.partial_json:n.type===`thinking_delta`?r.thinking=(r.thinking||``)+n.thinking:n.type===`signature_delta`&&(r.signature=n.signature);break}case`content_block_stop`:break;case`message_delta`:{let t=e.usage;t&&(U=H(U,t)),e.delta.stop_reason!=null&&(z=e.delta.stop_reason);break}case`message_stop`:if(F){for(let e of $({partialMessage:F,contentBlocks:j,tools:n,agentId:a.agentId,usage:U,stopReason:z,maxTokens:O}))e.type===`assistant`&&P.push(e),yield e;F=null}U.input_tokens+U.output_tokens>0&&ee(i(s,U),U,a.model);break}yield{type:`stream_event`,event:e,...e.type===`message_start`?{ttftMs:W}:void 0}}if(te(a.langfuseTrace??null,{model:s,provider:`openai`,input:_(x),output:d(P),usage:{input_tokens:U.input_tokens,output_tokens:U.output_tokens,cache_creation_input_tokens:U.cache_creation_input_tokens,cache_read_input_tokens:U.cache_read_input_tokens},startTime:new Date(G),endTime:new Date,completionStartTime:W>0?new Date(G+W):void 0,tools:p(v),...b&&{thinking:{type:`enabled`}}}),F)for(let e of $({partialMessage:F,contentBlocks:j,tools:n,agentId:a.agentId,usage:U,stopReason:z,maxTokens:O}))yield e}catch(e){let t=e instanceof Error?e.message:String(e);l(`[OpenAI] Error: ${t}`,{level:`error`}),yield x({content:`API Error: ${t}`,apiError:`api_error`,error:e instanceof Error?e:Error(String(e))})}}e((()=>{h(),U(),z(),C(),ce(),g(),D(),j(),c(),b(),a(),de(),k(),w(),s(),O(),P()}))();export{he as queryModelOpenAI};