@shumai-one/shumai-agent 0.4.3 → 0.4.4

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 (75) hide show
  1. package/bin/chunk-07a5rjnq.js +2 -0
  2. package/bin/chunk-1a493esq.js +2 -0
  3. package/bin/chunk-1y3q1jce.js +2 -0
  4. package/bin/{chunk-rv0jkz1g.js → chunk-2mcnt6jh.js} +4 -4
  5. package/bin/{chunk-7hkzk9pe.js → chunk-33n9p9q4.js} +2 -2
  6. package/bin/chunk-40bcg5we.js +2 -0
  7. package/bin/chunk-4926dhzq.js +4 -0
  8. package/bin/{chunk-3mdhkfgq.js → chunk-4q9h14c1.js} +2 -2
  9. package/bin/chunk-5n4wvh5p.js +3 -0
  10. package/bin/chunk-6195gx01.js +8 -0
  11. package/bin/{chunk-5vk5pgxq.js → chunk-8jd9p0bt.js} +12 -12
  12. package/bin/chunk-8tj47emj.js +2 -0
  13. package/bin/{chunk-xmq8pwcp.js → chunk-9bpp5v13.js} +19 -78
  14. package/bin/chunk-a4xcn19j.js +3 -0
  15. package/bin/chunk-as1vqgag.js +2 -0
  16. package/bin/{chunk-zcx3awzq.js → chunk-b2205272.js} +2 -2
  17. package/bin/chunk-bbz8hcag.js +2 -0
  18. package/bin/chunk-cwq65x99.js +2 -0
  19. package/bin/{chunk-ptxcc9bv.js → chunk-dc4f80kq.js} +1 -1
  20. package/bin/{chunk-phjnj6x5.js → chunk-e7m6nsvr.js} +2 -2
  21. package/bin/chunk-edkxjkdy.js +2 -0
  22. package/bin/{chunk-r8hcdypf.js → chunk-fvz08he3.js} +1 -1
  23. package/bin/chunk-gekdwjxf.js +2 -0
  24. package/bin/chunk-gqtret3n.js +2 -0
  25. package/bin/{chunk-avm8xsd8.js → chunk-grtavkr4.js} +2 -2
  26. package/bin/chunk-h65eqsrp.js +7 -0
  27. package/bin/{chunk-sxrz8e3j.js → chunk-hbmbvjjq.js} +2 -2
  28. package/bin/{chunk-gkwywrkk.js → chunk-jkx975yd.js} +1 -1
  29. package/bin/chunk-jt36jdn3.js +2 -0
  30. package/bin/chunk-k975ym8c.js +7 -0
  31. package/bin/chunk-kd561cva.js +2 -0
  32. package/bin/chunk-m8jmvj7p.js +3 -0
  33. package/bin/chunk-nmxr1m3s.js +2 -0
  34. package/bin/chunk-nwjh8gnr.js +3 -0
  35. package/bin/chunk-s1e2nv5w.js +5 -0
  36. package/bin/chunk-sbtjx4y3.js +2 -0
  37. package/bin/chunk-sfx1j3yr.js +11 -0
  38. package/bin/chunk-sq5rat8t.js +2 -0
  39. package/bin/chunk-td2tpqfb.js +12 -0
  40. package/bin/{chunk-y6h80xaa.js → chunk-tdah647g.js} +8 -8
  41. package/bin/{chunk-c8vf5ezv.js → chunk-vnn8sej7.js} +11 -11
  42. package/bin/chunk-vv932dz6.js +2 -0
  43. package/bin/chunk-vvvkt1vd.js +2 -0
  44. package/bin/chunk-wdvv14a7.js +2 -0
  45. package/bin/chunk-wg6xrc3y.js +3 -0
  46. package/bin/chunk-wzysrq4c.js +16 -0
  47. package/bin/{chunk-dpd0zpsp.js → chunk-xp2anj2s.js} +2 -2
  48. package/bin/chunk-y2adfzyt.js +2 -0
  49. package/bin/chunk-zdkpvcak.js +4 -0
  50. package/bin/shumai-agent-app.js +828 -789
  51. package/package.json +7 -7
  52. package/prisma/migrations/20260907021754_add_asset_upload_id/migration.sql +2 -0
  53. package/prisma/schema.prisma +1 -0
  54. package/bin/chunk-115gx56y.js +0 -12
  55. package/bin/chunk-24s58f6x.js +0 -11
  56. package/bin/chunk-2mj5h53m.js +0 -5
  57. package/bin/chunk-3dr4h1df.js +0 -16
  58. package/bin/chunk-5axrg8rz.js +0 -2
  59. package/bin/chunk-7z62cgr7.js +0 -3
  60. package/bin/chunk-8cz84wva.js +0 -4
  61. package/bin/chunk-97avgejq.js +0 -2
  62. package/bin/chunk-b5hbfteg.js +0 -2
  63. package/bin/chunk-caw017nc.js +0 -3
  64. package/bin/chunk-dak3e9js.js +0 -2
  65. package/bin/chunk-gqvwjf6q.js +0 -2
  66. package/bin/chunk-hme2crct.js +0 -2
  67. package/bin/chunk-hyc2kn1w.js +0 -8
  68. package/bin/chunk-kvt13jb9.js +0 -2
  69. package/bin/chunk-m51y6s92.js +0 -2
  70. package/bin/chunk-p7sczpks.js +0 -3
  71. package/bin/chunk-q7ypqj4c.js +0 -2
  72. package/bin/chunk-shv0zdbp.js +0 -4
  73. package/bin/chunk-smv5ztx4.js +0 -2
  74. package/bin/chunk-spcaxtg5.js +0 -7
  75. package/bin/chunk-v8rxcp9h.js +0 -2
@@ -0,0 +1,8 @@
1
+ // @bun
2
+ import{y}from"./chunk-e7m6nsvr.js";import"./chunk-s1e2nv5w.js";import{Ie}from"./chunk-4q9h14c1.js";import{ce,ue,de}from"./chunk-td2tpqfb.js";import{Y}from"./chunk-nwjh8gnr.js";import{F,Q}from"./chunk-33n9p9q4.js";import{L,B}from"./chunk-xp2anj2s.js";import{U}from"./chunk-m8jmvj7p.js";import{xe,ze,ve,I,S,Je}from"./shumai-agent-app.js";var re=new Set;function ne(e){return re.add(e),()=>{re.delete(e)}}function oe(e){let t=e.filter((o)=>o!==void 0);if(t.length===0)return{cleanup:()=>{}};if(t.length===1)return{signal:t[0],cleanup:()=>{}};let r=new AbortController,n=[],s=(o)=>{if(!r.signal.aborted)r.abort(o.reason)};for(let o of t){if(o.aborted){s(o);break}let i=()=>s(o);o.addEventListener("abort",i,{once:!0}),n.push({signal:o,listener:i})}return{signal:r.signal,cleanup:()=>{for(let{signal:o,listener:i}of n)o.removeEventListener("abort",i)}}}var Ce={ftp:21,gopher:70,http:80,https:443,ws:80,wss:443};function j(e,t){let r=e.toLowerCase(),n=e.toUpperCase();return t?.[r]||t?.[n]||y(r)||y(n)||""}function Oe(e){if(e instanceof URL)return e;try{return new URL(e)}catch{return}}function Ae(e,t,r){let n=j("no_proxy",r).toLowerCase();if(!n)return!0;if(n==="*")return!1;return n.split(/[,\s]/).every((s)=>{if(!s)return!0;let o=s.match(/^(.+):(\d+)$/),i=o?o[1]:s,l=o?Number.parseInt(o[2],10):0;if(l&&l!==t)return!0;if(!/^[.*]/.test(i))return e!==i;if(i.startsWith("*"))i=i.slice(1);return!e.endsWith(i)})}function Le(e,t){let r=Oe(e);if(!r?.protocol||!r.host)return"";let n=r.protocol.split(":",1)[0],s=r.host.replace(/:\d*$/,""),o=Number.parseInt(r.port,10)||Ce[n]||0;if(!Ae(s,o,t))return"";let i=j(`${n}_proxy`,t)||j("all_proxy",t);if(i&&!i.includes("://"))i=`${n}://${i}`;return i}var We="Unsupported proxy protocol. SOCKS and PAC proxy URLs are not supported; use an HTTP or HTTPS proxy URL.";function se(e,t){let r=Le(e,t);if(!r)return;let n;try{n=new URL(r)}catch(s){throw Error(`Invalid proxy URL ${JSON.stringify(r)}: ${s instanceof Error?s.message:String(s)}`)}if(n.protocol!=="http:"&&n.protocol!=="https:")throw Error(`${We} Got ${n.protocol}`);return n}function Ne(){if(typeof process>"u"||!(process.versions?.node||process.versions?.bun))return null;return process.getBuiltinModule?.("node:os")??null}var H=Ne(),Pe="https://chatgpt.com/backend-api",Me="https://api.openai.com/auth",De=0,ie=1000,qe=60000,Be=15000,Ue=3,ye=new Set(["openai","openai-codex","opencode"]),$e=1009,Fe="websocket_connection_limit_reached",He="previous_response_not_found",Ke=new Set(["completed","incomplete","failed","cancelled","queued","in_progress"]);function Ge(e){return/GoUsageLimitError|FreeUsageLimitError|Monthly usage limit reached|available balance|insufficient_quota|out of budget|quota exceeded|billing/i.test(e)}function Xe(e,t){if(e===429&&Ge(t))return!1;if(e===429||e===500||e===502||e===503||e===504)return!0;return/rate.?limit|overloaded|service.?unavailable|upstream.?connect|connection.?refused/i.test(t)}function je(e){let t=e.get("retry-after-ms");if(t!==null){let o=Number(t);if(Number.isFinite(o))return Math.max(0,o)}let r=e.get("retry-after");if(!r)return;let n=Number(r);if(Number.isFinite(n))return Math.max(0,n*1000);let s=Date.parse(r);if(!Number.isNaN(s))return Math.max(0,s-Date.now());return}class ee extends Error{}function Ve(e,t){let r=t?.maxRetryDelayMs??qe;if(r>0&&e>r)throw new ee(`Server requested ${Math.ceil(e/1000)}s retry delay (max: ${Math.ceil(r/1000)}s)`);return e}function ae(e,t){return new Promise((r,n)=>{if(t?.aborted){n(Error("Request was aborted"));return}let s=setTimeout(r,e);t?.addEventListener("abort",()=>{clearTimeout(s),n(Error("Request was aborted"))})})}function le(e){if(e===void 0)return;if(!Number.isFinite(e)||e<0)throw Error(`Invalid timeoutMs: ${String(e)}`);return Math.floor(e)}function Ye(){if(typeof process>"u"||!(process.versions?.node||process.versions?.bun))return null;return process.getBuiltinModule?.("node:zlib")??null}function Ze(e){let t=Ye();if(!t||typeof t.zstdCompressSync!=="function")return null;try{let r=t.zstdCompressSync(e,{params:{[t.constants.ZSTD_c_compressionLevel]:Ue}});return new Uint8Array(r.buffer,r.byteOffset,r.byteLength)}catch{return null}}var Qe=(e,t,r)=>{let n=new I;return(async()=>{let s={role:"assistant",content:[],api:"openai-codex-responses",provider:e.provider,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"stop",timestamp:Date.now()};try{let o=r?.apiKey;if(!o)throw Error(`No API key for provider: ${e.provider}`);let i=Ct(o),l=L(t.tools,e.compat?.supportsOpenAIGrammarTools??!1),a=r?.cacheRetention==="none"?void 0:r?.sessionId,c=Y(a),d=et(e,t,r,c,l),u=await r?.onPayload?.(d,e);if(u!==void 0)d=u;let E=c||Je(),f=Ot(e.headers,r?.headers,i,o,c),_=At(e.headers,r?.headers,i,o,E),m=JSON.stringify(d),p=le(r?.timeoutMs),C=le(r?.websocketConnectTimeoutMs),b=r?.transport||"auto",w=!1,h=b!=="sse"&&Se(a);if(h)fe(a);if(b!=="sse"&&!h){let g=!1,T=!1,A=!1;while(!0){g=!1;try{if(await xt(rt(e.baseUrl),d,_,s,n,e,()=>{if(g=!0,!w)w=!0,n.push({type:"start",partial:s})},p,C,a,l,r),r?.signal?.aborted)throw Error("Request was aborted");n.push({type:"done",reason:s.stopReason,message:s}),n.end();return}catch(x){let D=r?.signal?.aborted,q=!g&&st(x),N=it(x);if(!D&&N&&!A){A=!0;continue}if(!D&&q&&!T){T=!0;continue}if(D||ot(x)&&!q)throw x;if(ve(s,ze("provider_transport_failure",x,{configuredTransport:b,fallbackTransport:g?void 0:"sse",eventsEmitted:g,phase:g?"after_message_stream_start":"before_message_stream_start",requestBytes:new TextEncoder().encode(m).byteLength})),mt(a,x),g)throw x;fe(a);break}}}let O=Ze(m);if(O)f.set("content-encoding","zstd");let W=O??m,k,M,X=r?.maxRetries??De;for(let g=0;g<=X;g++){if(r?.signal?.aborted)throw Error("Request was aborted");try{let T=p!==void 0&&p>0?AbortSignal.timeout(p):void 0,A=oe([r?.signal,T]);try{k=await fetch(we(e.baseUrl),{method:"POST",headers:f,body:W,signal:A.signal})}catch(N){if(T?.aborted&&!r?.signal?.aborted)throw Error(`Codex SSE response headers timed out after ${p}ms`);throw N}finally{A.cleanup()}if(await r?.onResponse?.({status:k.status,headers:U(k.headers)},e),k.ok)break;let x=await k.text();if(g<X&&Xe(k.status,x)){let N=je(k.headers),Re=N===void 0?ie*2**g:Ve(N,r);await ae(Re,r?.signal);continue}let D=new Response(x,{status:k.status,statusText:k.statusText}),q=await vt(D);throw Error(q.friendlyMessage||q.message)}catch(T){if(T instanceof Error){if(T.name==="AbortError"||T.message==="Request was aborted")throw Error("Request was aborted")}if(M=T instanceof Error?T:Error(String(T)),g<X&&!(M instanceof ee)&&!M.message.includes("usage limit")){let A=ie*2**g;await ae(A,r?.signal);continue}throw M}}if(!k?.ok)throw M??Error("Failed after retries");if(!k.body)throw Error("No response body");if(!w)w=!0,n.push({type:"start",partial:s});if(await nt(k,s,n,e,l,r),r?.signal?.aborted)throw Error("Request was aborted");n.push({type:"done",reason:s.stopReason,message:s}),n.end()}catch(o){for(let i of s.content)delete i.partialJson,delete i.customInput;s.stopReason=r?.signal?.aborted?"aborted":"error",s.errorMessage=Q(F(o)),n.push({type:"error",reason:s.stopReason,error:s}),n.end()}})(),n},jt=(e,t,r)=>{let n=r?.apiKey;if(!n)throw Error(`No API key for provider: ${e.provider}`);let s=B(e,t,r,n),o=r?.reasoning?S(e,r.reasoning):void 0;return Qe(e,t,{...s,reasoningEffort:o==="off"?void 0:o})};function et(e,t,r,n,s=L(t.tools,e.compat?.supportsOpenAIGrammarTools??!1)){let o=e.compat?.supportsStrictMode??!0,i=e.compat?.supportsOpenAIGrammarTools??!1,l=Ie(t,e.compat?.supportsToolSearch??!1),a=ce(e,t,ye,{includeSystemPrompt:!1,grammarToolInputProperties:s,deferredTools:l.deferred,toolOptions:{strict:null,supportsStrictMode:o,supportsOpenAIGrammarTools:i}}),c={model:e.id,store:!1,stream:!0,instructions:t.systemPrompt||"You are a helpful assistant.",input:a,text:{verbosity:r?.textVerbosity||"low"},include:["reasoning.encrypted_content"],prompt_cache_key:n,tool_choice:r?.toolChoice??"auto",parallel_tool_calls:!0};if(r?.temperature!==void 0)c.temperature=r.temperature;if(r?.serviceTier!==void 0)c.service_tier=r.serviceTier;if(l.immediate.length>0)c.tools=ue(l.immediate,{strict:null,supportsStrictMode:o,supportsOpenAIGrammarTools:i});if(r?.reasoningEffort!==void 0){let d=r.reasoningEffort==="none"?e.thinkingLevelMap?.off??"none":e.thinkingLevelMap?.[r.reasoningEffort]??r.reasoningEffort;if(d!==null)c.reasoning={effort:d,summary:r.reasoningSummary??"auto"}}return c}function tt(e,t){switch(t){case"flex":return 0.5;case"priority":return e.id==="gpt-5.5"?2.5:2;default:return 1}}function be(e,t,r){let n=tt(r,t);if(n===1)return;e.cost.input*=n,e.cost.output*=n,e.cost.cacheRead*=n,e.cost.cacheWrite*=n,e.cost.total=e.cost.input+e.cost.output+e.cost.cacheRead+e.cost.cacheWrite}function he(e,t){if(e==="default"&&(t==="flex"||t==="priority"))return t;return e??t}function we(e){let r=(e&&e.trim().length>0?e:Pe).replace(/\/+$/,"");if(r.endsWith("/codex/responses"))return r;if(r.endsWith("/codex"))return`${r}/responses`;return`${r}/codex/responses`}function rt(e){let t=new URL(we(e));if(t.protocol==="https:")t.protocol="wss:";if(t.protocol==="http:")t.protocol="ws:";return t.toString()}async function nt(e,t,r,n,s,o){await de(ge(ut(e,o?.signal)),t,r,n,{serviceTier:o?.serviceTier,grammarToolInputProperties:s,resolveServiceTier:he,applyServiceTierPricing:(i,l)=>be(i,l,n)})}class P extends Error{code;payload;constructor(e,t){super(e);this.name="CodexApiError",this.code=t?.code,this.payload=t?.payload,this.cause=t?.cause}}class z extends Error{payload;constructor(e,t){super(e);this.name="CodexProtocolError",this.payload=t?.payload,this.cause=t?.cause}}function ot(e){return e instanceof P||e instanceof z}function st(e){return e instanceof P&&e.code===Fe}function it(e){return e instanceof P&&e.code===He}function at(e){let t=e.error&&typeof e.error==="object"?e.error:void 0;return{code:typeof e.code==="string"?e.code:typeof t?.code==="string"?t.code:void 0,message:typeof e.message==="string"?e.message:typeof t?.message==="string"?t.message:void 0}}async function*ge(e){for await(let t of e){let r=typeof t.type==="string"?t.type:void 0;if(!r)continue;if(r==="error"){let{code:n,message:s}=at(t);throw new P(`Codex error: ${s||n||JSON.stringify(t)}`,{code:n,payload:t})}if(r==="response.failed"){let n=t.response,s=n?.error?.code,o=n?.error?.message;throw new P(o||"Codex response failed",{code:s,payload:t})}if(r==="response.done"||r==="response.completed"||r==="response.incomplete"){let n=t.response,s=n?{...n,status:ct(n.status)}:n;yield{...t,type:"response.completed",response:s};return}yield t}}function ct(e){if(typeof e!=="string")return;return Ke.has(e)?e:void 0}async function*ut(e,t){if(!e.body)return;let r=e.body.getReader(),n=new TextDecoder,s="",o=()=>{r.cancel().catch(()=>{})};t?.addEventListener("abort",o,{once:!0});try{while(!0){if(t?.aborted)throw Error("Request was aborted");let{done:i,value:l}=await r.read();if(t?.aborted)throw Error("Request was aborted");if(i)break;s+=n.decode(l,{stream:!0});let a=s.indexOf(`
3
+
4
+ `);while(a!==-1){let c=s.slice(0,a);s=s.slice(a+2);let d=c.split(`
5
+ `).filter((u)=>u.startsWith("data:")).map((u)=>u.slice(5).trim());if(d.length>0){let u=d.join(`
6
+ `).trim();if(u&&u!=="[DONE]")try{yield JSON.parse(u)}catch(E){throw new z(`Invalid Codex SSE JSON: ${xe(E)}`,{cause:E,payload:u})}}a=s.indexOf(`
7
+
8
+ `)}}}finally{t?.removeEventListener("abort",o);try{await r.cancel()}catch{}try{r.releaseLock()}catch{}}}var lt="responses_websockets=2026-02-06",ft=300000,dt=3300000,R=new Map,J=new Map,G=new Set;function te(e){let t=J.get(e);if(!t)t={requests:0,connectionsCreated:0,connectionsReused:0,cachedContextRequests:0,storeTrueRequests:0,fullContextRequests:0,deltaRequests:0,lastInputItems:0,websocketFailures:0,sseFallbacks:0},J.set(e,t);return t}function Vt(e){let t=J.get(e);return t?{...t}:void 0}function Yt(e){if(e){J.delete(e),G.delete(e);return}J.clear(),G.clear()}function pt(e){let t=(r)=>{if(r.idleTimer)clearTimeout(r.idleTimer);v(r.socket,1000,"debug_close")};if(e){let r=R.get(e);if(r)t(r);R.delete(e);return}for(let r of R.values())t(r);R.clear()}ne(pt);function Se(e){return e?G.has(e):!1}function fe(e){if(!e)return;let t=te(e);t.sseFallbacks++,t.websocketFallbackActive=Se(e)}function mt(e,t){if(!e)return;G.add(e);let r=te(e);r.websocketFailures++,r.lastWebSocketError=xe(t),r.websocketFallbackActive=!0}var V=null;async function yt(e){if(!e&&V)return V;if(typeof process<"u"&&process.versions?.bun){let r=class extends WebSocket{constructor(n,s){let o={};if(Array.isArray(s)||typeof s==="string")o={protocols:s};else o={...s};let i=se(n.toString().replace(/^wss:/,"https:").replace(/^ws:/,"http:"),e);super(n,{...o,...i?{proxy:i.toString()}:{}})}};if(!e)V=r;return r}let t=globalThis.WebSocket;if(typeof t!=="function")return null;return t}class Ee extends Error{code;reason;wasClean;constructor(e,t){super(e);this.name="WebSocketCloseError",this.code=t?.code,this.reason=t?.reason,this.wasClean=t?.wasClean}}function bt(e){let t=e.readyState;return typeof t==="number"?t:void 0}function K(e){let t=bt(e);return t===void 0||t===1}function ht(e){return Date.now()-e.createdAt>=dt}function v(e,t=1000,r="done"){try{e.close(t,r)}catch{}}function pe(e,t){if(t.idleTimer)clearTimeout(t.idleTimer);t.idleTimer=setTimeout(()=>{if(t.busy)return;v(t.socket,1000,"idle_timeout"),R.delete(e)},ft)}async function Z(e,t,r,n=Be,s){let o=await yt(s);if(!o)throw Error("WebSocket transport is not available in this runtime");let i=U(t);return delete i["OpenAI-Beta"],new Promise((l,a)=>{let c=!1,d,u;try{u=new o(e,{headers:i})}catch(b){a(b instanceof Error?b:Error(String(b)));return}let E=()=>{if(d)clearTimeout(d),d=void 0;u.removeEventListener("open",_),u.removeEventListener("error",m),u.removeEventListener("close",p),r?.removeEventListener("abort",C)},f=(b,w)=>{if(c)return;if(c=!0,E(),w)v(u,1000,w);a(b)},_=()=>{if(c)return;c=!0,E(),l(u)},m=(b)=>{f(_e(b))},p=(b)=>{f(ke(b))},C=()=>{f(Error("Request was aborted"),"aborted")};if(u.addEventListener("open",_),u.addEventListener("error",m),u.addEventListener("close",p),r?.addEventListener("abort",C),n>0)d=setTimeout(()=>{f(Error(`WebSocket connect timeout after ${n}ms`),"connect_timeout")},n);if(r?.aborted)C()})}async function wt(e,t,r,n,s,o){if(!r){let c=await Z(e,t,n,s,o);return{socket:c,reused:!1,release:()=>v(c)}}let i=R.get(r);if(i){if(i.idleTimer)clearTimeout(i.idleTimer),i.idleTimer=void 0;if(!i.busy&&ht(i))v(i.socket,1000,"connection_age_limit"),R.delete(r);else if(!i.busy&&K(i.socket))return i.busy=!0,{socket:i.socket,entry:i,reused:!0,release:({keep:c}={})=>{if(!c||!K(i.socket)){v(i.socket),R.delete(r);return}i.busy=!1,pe(r,i)}};if(i.busy){let c=await Z(e,t,n,s,o);return{socket:c,reused:!1,release:()=>{v(c)}}}if(!K(i.socket))v(i.socket),R.delete(r)}let l=await Z(e,t,n,s,o),a={socket:l,busy:!0,createdAt:Date.now()};return R.set(r,a),{socket:l,entry:a,reused:!1,release:({keep:c}={})=>{if(!c||!K(a.socket)){if(v(a.socket),a.idleTimer)clearTimeout(a.idleTimer);if(R.get(r)===a)R.delete(r);return}a.busy=!1,pe(r,a)}}}function _e(e){if(e&&typeof e==="object"){let t="message"in e?e.message:void 0;if(typeof t==="string"&&t.length>0)return Error(t);let r="error"in e?e.error:void 0;if(r instanceof Error&&r.message.length>0)return r;if(r&&typeof r==="object"&&"message"in r){let n=r.message;if(typeof n==="string"&&n.length>0)return Error(n)}}return Error("WebSocket error")}function ke(e){if(e&&typeof e==="object"){let t="code"in e?e.code:void 0,r="reason"in e?e.reason:void 0,n="wasClean"in e?e.wasClean:void 0,s=typeof t==="number"?` ${t}`:"",o=typeof r==="string"&&r.length>0?` ${r}`:"";if(!o&&t===$e)o=" message too big";return new Ee(`WebSocket closed${s}${o}`.trim(),{code:typeof t==="number"?t:void 0,reason:typeof r==="string"&&r.length>0?r:void 0,wasClean:typeof n==="boolean"?n:void 0})}return Error("WebSocket closed")}async function gt(e){if(typeof e==="string")return e;if(e instanceof ArrayBuffer)return new TextDecoder().decode(new Uint8Array(e));if(ArrayBuffer.isView(e)){let t=e;return new TextDecoder().decode(new Uint8Array(t.buffer,t.byteOffset,t.byteLength))}if(e&&typeof e==="object"&&"arrayBuffer"in e){let r=await e.arrayBuffer();return new TextDecoder().decode(new Uint8Array(r))}return null}async function*St(e,t,r){let n=[],s=null,o=!1,i=null,l=!1,a=()=>{if(!s)return;let f=s;s=null,f()},c=(f)=>{(async()=>{let _=null;try{if(!f||typeof f!=="object"||!("data"in f))return;if(_=await gt(f.data),!_)return;let m=JSON.parse(_),p=typeof m.type==="string"?m.type:"";if(p==="response.completed"||p==="response.done"||p==="response.incomplete")l=!0,o=!0;n.push(m),a()}catch(m){i=new z(`Invalid Codex WebSocket JSON: ${xe(m)}`,{cause:m,payload:_}),o=!0,a()}})()},d=(f)=>{i=_e(f),o=!0,a()},u=(f)=>{if(l){o=!0,a();return}if(!i)i=ke(f);o=!0,a()},E=()=>{i=Error("Request was aborted"),o=!0,a()};e.addEventListener("message",c),e.addEventListener("error",d),e.addEventListener("close",u),t?.addEventListener("abort",E);try{while(!0){if(t?.aborted)throw Error("Request was aborted");if(n.length>0){yield n.shift();continue}if(o)break;let f;await new Promise((_,m)=>{if(s=_,r!==void 0&&r>0)f=setTimeout(()=>{let p=Error(`WebSocket idle timeout after ${r}ms`);i=p,o=!0,s=null,v(e,1000,"idle_timeout"),m(p)},r)}).finally(()=>{if(f)clearTimeout(f)})}if(i)throw i;if(!l)throw Error("WebSocket stream closed before response.completed")}finally{e.removeEventListener("message",c),e.removeEventListener("error",d),e.removeEventListener("close",u),t?.removeEventListener("abort",E)}}function me(e){let{input:t,previous_response_id:r,...n}=e;return n}function Et(e,t){return JSON.stringify(e??[])===JSON.stringify(t??[])}function _t(e,t){return JSON.stringify(me(e))===JSON.stringify(me(t))}function kt(e,t){if(!_t(e,t.lastRequestBody))return;let r=e.input??[],n=[...t.lastRequestBody.input??[],...t.lastResponseItems];if(r.length<n.length)return;let s=r.slice(0,n.length);if(!Et(s,n))return;return r.slice(n.length)}function Tt(e,t){let r=e.continuation;if(!r)return t;let n=kt(t,r);if(!n||!r.lastResponseId)return e.continuation=void 0,t;return{...t,previous_response_id:r.lastResponseId,input:n}}async function*Rt(e,t){let r=!1;for await(let n of e){if(!r)r=!0,t();yield n}}async function xt(e,t,r,n,s,o,i,l,a,c,d,u){let{socket:E,entry:f,reused:_,release:m}=await wt(e,r,c,u?.signal,a,u?.env),p=!0,C=u?.transport==="websocket-cached"||u?.transport==="auto",b=t,w=C&&f?Tt(f,b):b,h=c?te(c):void 0;if(h){if(h.requests++,_)h.connectionsReused++;else h.connectionsCreated++;if(C)h.cachedContextRequests++;if(w.store===!0)h.storeTrueRequests++;if(h.lastInputItems=w.input?.length??0,w.previous_response_id)h.deltaRequests++,h.lastDeltaInputItems=w.input?.length??0,h.lastPreviousResponseId=w.previous_response_id;else h.fullContextRequests++,h.lastDeltaInputItems=void 0,h.lastPreviousResponseId=void 0}try{if(E.send(JSON.stringify({type:"response.create",...w})),await de(Rt(ge(St(E,u?.signal,l)),i),n,s,o,{serviceTier:u?.serviceTier,grammarToolInputProperties:d,resolveServiceTier:he,applyServiceTierPricing:(O,W)=>be(O,W,o)}),u?.signal?.aborted)p=!1;else if(C&&f&&n.responseId){let O=ce(o,{messages:[n]},ye,{includeSystemPrompt:!1,grammarToolInputProperties:d}).filter((W)=>W.type!=="function_call_output"&&W.type!=="custom_tool_call_output");f.continuation={lastRequestBody:b,lastResponseId:n.responseId,lastResponseItems:O}}}catch(O){if(f)f.continuation=void 0;throw p=!1,O}finally{m({keep:p})}}async function vt(e){let t=await e.text(),r=t||e.statusText||"Request failed",n;try{let o=JSON.parse(t)?.error;if(o){let i=o.code||o.type||"";if(/usage_limit_reached|usage_not_included|rate_limit_exceeded/i.test(i)||e.status===429){let l=o.plan_type?` (${o.plan_type.toLowerCase()} plan)`:"",a=o.resets_at?Math.max(0,Math.round((o.resets_at*1000-Date.now())/60000)):void 0,c=a!==void 0?` Try again in ~${a} min.`:"";n=`You have hit your ChatGPT usage limit${l}.${c}`.trim()}r=o.message||n||r}}catch{}return{message:r,friendlyMessage:n}}function Ct(e){try{let t=e.split(".");if(t.length!==3)throw Error("Invalid token");let n=JSON.parse(atob(t[1]))?.[Me]?.chatgpt_account_id;if(!n)throw Error("No account ID in token");return n}catch{throw Error("Failed to extract accountId from token")}}function Te(e,t,r,n){let s=new Headers(e);for(let[i,l]of Object.entries(t||{}))if(l===null)s.delete(i);else s.set(i,l);s.set("Authorization",`Bearer ${n}`),s.set("chatgpt-account-id",r),s.set("originator","pi");let o=H?`pi (${H.platform()} ${H.release()}; ${H.arch()})`:"pi (browser)";return s.set("User-Agent",o),s}function Ot(e,t,r,n,s){let o=Te(e,t,r,n);if(o.set("OpenAI-Beta","responses=experimental"),o.set("accept","text/event-stream"),o.set("content-type","application/json"),s)o.set("session-id",s),o.set("x-client-request-id",s);return o}function At(e,t,r,n,s){let o=Te(e,t,r,n);return o.delete("accept"),o.delete("content-type"),o.delete("OpenAI-Beta"),o.delete("openai-beta"),o.set("OpenAI-Beta",lt),o.set("x-client-request-id",s),o.set("session-id",s),o}export{pt as closeOpenAICodexWebSocketSessions,Vt as getOpenAICodexWebSocketDebugStats,Yt as resetOpenAICodexWebSocketDebugStats,Qe as stream,jt as streamSimple};