@cline/core 0.0.95 → 0.2.0

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 (167) hide show
  1. package/dist/ClineCore.d.ts +6 -1
  2. package/dist/account/rpc.d.ts +3 -1
  3. package/dist/cline-core/runtime-services.d.ts +4 -2
  4. package/dist/cloud/controller.d.ts +5 -2
  5. package/dist/cloud/hub-client.d.ts +51 -0
  6. package/dist/cloud/hub-protocol.d.ts +18 -0
  7. package/dist/cloud/index.d.ts +2 -0
  8. package/dist/cloud/index.js +16 -16
  9. package/dist/cloud/types.d.ts +4 -1
  10. package/dist/extensions/context/compaction-shared.d.ts +1 -0
  11. package/dist/extensions/context/compaction.d.ts +7 -0
  12. package/dist/extensions/context/summarize-conversation.d.ts +7 -0
  13. package/dist/extensions/context/summary-generation.d.ts +14 -0
  14. package/dist/extensions/mcp/apps.d.ts +16 -0
  15. package/dist/extensions/mcp/client.d.ts +1 -0
  16. package/dist/extensions/mcp/index.d.ts +5 -1
  17. package/dist/extensions/mcp/manager.d.ts +2 -1
  18. package/dist/extensions/mcp/session-apps.d.ts +28 -0
  19. package/dist/extensions/mcp/types.d.ts +22 -0
  20. package/dist/extensions/plugin/plugin-command-origin.d.ts +8 -0
  21. package/dist/extensions/plugin/plugin-registry.d.ts +1 -0
  22. package/dist/extensions/plugin/plugin-runtime.d.ts +7 -0
  23. package/dist/hub/client/index.d.ts +6 -0
  24. package/dist/hub/client/managed-hub-build-watcher.d.ts +2 -0
  25. package/dist/hub/client/plugin-commands.d.ts +4 -0
  26. package/dist/hub/client/session-client.d.ts +2 -0
  27. package/dist/hub/daemon/entry.js +241 -228
  28. package/dist/hub/index.d.ts +1 -0
  29. package/dist/hub/index.js +231 -218
  30. package/dist/hub/runtime-host/hub-runtime-host.d.ts +6 -0
  31. package/dist/hub/server/cloud-session-service.d.ts +50 -0
  32. package/dist/hub/server/handlers/capability-handlers.d.ts +18 -1
  33. package/dist/hub/server/handlers/context.d.ts +13 -2
  34. package/dist/hub/server/handlers/mcp-apps-handlers.d.ts +5 -0
  35. package/dist/hub/server/hub-server-options.d.ts +3 -0
  36. package/dist/hub/server/hub-server-transport.d.ts +2 -0
  37. package/dist/index.d.ts +8 -4
  38. package/dist/index.js +278 -258
  39. package/dist/plugin-runtime/node_modules/@cline/agents/dist/index.js +76 -0
  40. package/dist/plugin-runtime/node_modules/@cline/agents/package.json +1 -0
  41. package/dist/plugin-runtime/node_modules/@cline/core/dist/ai-sdk-b1d8eb67.js +1 -0
  42. package/dist/plugin-runtime/node_modules/@cline/core/dist/anthropic-33qvrctr.js +1 -0
  43. package/dist/plugin-runtime/node_modules/@cline/core/dist/bedrock-paabhz8w.js +1 -0
  44. package/dist/plugin-runtime/node_modules/@cline/core/dist/cline-yhsfqcy1.js +1 -0
  45. package/dist/plugin-runtime/node_modules/@cline/core/dist/cloud/index.js +21 -0
  46. package/dist/plugin-runtime/node_modules/@cline/core/dist/community-gqgs7446.js +1 -0
  47. package/dist/plugin-runtime/node_modules/@cline/core/dist/foundation-models-embedding-model-strategy-SAVQFBF4-822304b0.js +1 -0
  48. package/dist/plugin-runtime/node_modules/@cline/core/dist/foundation-models-language-model-strategy-BPQO66W7-hky2m2yx.js +1 -0
  49. package/dist/plugin-runtime/node_modules/@cline/core/dist/getMachineId-bsd-sqf1kd37.js +1 -0
  50. package/dist/plugin-runtime/node_modules/@cline/core/dist/getMachineId-bsd-tx1kp6xn.js +1 -0
  51. package/dist/plugin-runtime/node_modules/@cline/core/dist/getMachineId-darwin-6cpgjxme.js +2 -0
  52. package/dist/plugin-runtime/node_modules/@cline/core/dist/getMachineId-darwin-fxchqbze.js +2 -0
  53. package/dist/plugin-runtime/node_modules/@cline/core/dist/getMachineId-linux-m3bzwmzc.js +1 -0
  54. package/dist/plugin-runtime/node_modules/@cline/core/dist/getMachineId-linux-pr9sb5fr.js +1 -0
  55. package/dist/plugin-runtime/node_modules/@cline/core/dist/getMachineId-unsupported-nckraycx.js +1 -0
  56. package/dist/plugin-runtime/node_modules/@cline/core/dist/getMachineId-unsupported-w91yq3tm.js +1 -0
  57. package/dist/plugin-runtime/node_modules/@cline/core/dist/getMachineId-win-xdyxc2tf.js +1 -0
  58. package/dist/plugin-runtime/node_modules/@cline/core/dist/getMachineId-win-yxsvs11a.js +1 -0
  59. package/dist/plugin-runtime/node_modules/@cline/core/dist/google-pgdk2dm9.js +1 -0
  60. package/dist/plugin-runtime/node_modules/@cline/core/dist/hub/daemon/entry.js +1160 -0
  61. package/dist/plugin-runtime/node_modules/@cline/core/dist/hub/index.js +1147 -0
  62. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-02jpyn9y.js +85 -0
  63. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-0cb4390m.js +137 -0
  64. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-0f8xrhgt.js +209 -0
  65. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-1f8vb421.js +2 -0
  66. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-28c7m0fv.js +16 -0
  67. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-2em3jg4q.js +1 -0
  68. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-4n1zpzbe.js +2 -0
  69. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-54eea0ex.js +2 -0
  70. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-5j92dtg5.js +16 -0
  71. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-6akf3a5d.js +2 -0
  72. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-6k6ep10s.js +136 -0
  73. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-71ym4q6s.js +2 -0
  74. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-91p1ghfk.js +14 -0
  75. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-9qkpjy7x.js +2 -0
  76. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-9swk4nej.js +3 -0
  77. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-aa2s5myc.js +1 -0
  78. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-ae0ajw38.js +13 -0
  79. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-bxvyzjhc.js +1 -0
  80. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-bzy863k0.js +6 -0
  81. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-d96n0s70.js +20 -0
  82. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-dsd6vt8c.js +1 -0
  83. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-e2q4azd9.js +119 -0
  84. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-egd18jj2.js +4 -0
  85. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-eh83hr16.js +2 -0
  86. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-ev9r2dy3.js +1204 -0
  87. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-f2mvvryf.js +190 -0
  88. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-h7gn5v3f.js +2 -0
  89. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-h7s1a560.js +12 -0
  90. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-hkhq3jtz.js +21 -0
  91. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-j8r18nfg.js +15 -0
  92. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-jhny555h.js +6 -0
  93. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-m1gpa2eg.js +146 -0
  94. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-m2ad6tgj.js +1 -0
  95. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-m7mks2jq.js +4 -0
  96. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-mcnngj50.js +62 -0
  97. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-n2srkkh0.js +39 -0
  98. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-nbs1tsny.js +142 -0
  99. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-nqjnz7m4.js +9 -0
  100. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-rmhzyxr8.js +3 -0
  101. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-rtzf3vvk.js +6 -0
  102. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-sw74pcm3.js +2 -0
  103. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-t3eanyjj.js +3 -0
  104. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-tseksj1v.js +1 -0
  105. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-v0ctpcdr.js +12 -0
  106. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-v4-dx8bd4wq.js +1 -0
  107. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-v695918t.js +14 -0
  108. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-v96yy1pw.js +1 -0
  109. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-vfm7r9wk.js +65 -0
  110. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-xecthgrg.js +9 -0
  111. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-xn1xhp06.js +9 -0
  112. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-yfdscfdx.js +1 -0
  113. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-yrnwqsdt.js +2 -0
  114. package/dist/plugin-runtime/node_modules/@cline/core/dist/index.js +1 -0
  115. package/dist/plugin-runtime/node_modules/@cline/core/dist/jiti-static-3mgy2y9y.js +473 -0
  116. package/dist/plugin-runtime/node_modules/@cline/core/dist/jiti-w1xrs0vd.js +1 -0
  117. package/dist/plugin-runtime/node_modules/@cline/core/dist/langfuse-stream-telemetry-9tppg77c.js +1 -0
  118. package/dist/plugin-runtime/node_modules/@cline/core/dist/langfuse-telemetry-y658kpzy.js +1 -0
  119. package/dist/plugin-runtime/node_modules/@cline/core/dist/mistral-cmhqd91b.js +1 -0
  120. package/dist/plugin-runtime/node_modules/@cline/core/dist/multipart-parser-qkjjf8mm.js +2 -0
  121. package/dist/plugin-runtime/node_modules/@cline/core/dist/ollama-8z6y9d1h.js +1 -0
  122. package/dist/plugin-runtime/node_modules/@cline/core/dist/openai-cfmja1ez.js +1 -0
  123. package/dist/plugin-runtime/node_modules/@cline/core/dist/openai-compatible-1t7n5sxj.js +1 -0
  124. package/dist/plugin-runtime/node_modules/@cline/core/dist/orchestration-embedding-model-strategy-GT27AFII-k6yqgnyd.js +1 -0
  125. package/dist/plugin-runtime/node_modules/@cline/core/dist/orchestration-language-model-strategy-YEQPUCOT-6rdyebbq.js +1 -0
  126. package/dist/plugin-runtime/node_modules/@cline/core/dist/services/feature-flags/posthog.js +2 -0
  127. package/dist/plugin-runtime/node_modules/@cline/core/dist/services/telemetry/index.js +1 -0
  128. package/dist/plugin-runtime/node_modules/@cline/core/dist/token-1h068py9.js +1 -0
  129. package/dist/plugin-runtime/node_modules/@cline/core/dist/token-util-7jchft51.js +1 -0
  130. package/dist/plugin-runtime/node_modules/@cline/core/dist/vertex-qfxfsrn4.js +1 -0
  131. package/dist/plugin-runtime/node_modules/@cline/core/package.json +1 -0
  132. package/dist/plugin-runtime/node_modules/@cline/llms/dist/index.browser.js +16 -0
  133. package/dist/plugin-runtime/node_modules/@cline/llms/dist/index.js +1 -0
  134. package/dist/plugin-runtime/node_modules/@cline/llms/package.json +1 -0
  135. package/dist/plugin-runtime/node_modules/@cline/sdk/dist/index.js +1 -0
  136. package/dist/plugin-runtime/node_modules/@cline/sdk/package.json +1 -0
  137. package/dist/plugin-runtime/node_modules/@cline/shared/dist/automation/index.js +57 -0
  138. package/dist/plugin-runtime/node_modules/@cline/shared/dist/db/index.js +127 -0
  139. package/dist/plugin-runtime/node_modules/@cline/shared/dist/index.browser.js +110 -0
  140. package/dist/plugin-runtime/node_modules/@cline/shared/dist/index.js +1 -0
  141. package/dist/plugin-runtime/node_modules/@cline/shared/dist/node.js +1 -0
  142. package/dist/plugin-runtime/node_modules/@cline/shared/dist/remote-config/index.js +68 -0
  143. package/dist/plugin-runtime/node_modules/@cline/shared/dist/storage/index.js +1 -0
  144. package/dist/plugin-runtime/node_modules/@cline/shared/dist/types/index.js +1 -0
  145. package/dist/plugin-runtime/node_modules/@cline/shared/package.json +1 -0
  146. package/dist/plugin-runtime/package.json +1 -0
  147. package/dist/{extensions → plugin-runtime}/plugin-sandbox-bootstrap.js +129 -129
  148. package/dist/remote/remote-environments.d.ts +1 -0
  149. package/dist/runtime/config/agent-runtime-config-builder.d.ts +2 -0
  150. package/dist/runtime/host/local-runtime-host.d.ts +10 -0
  151. package/dist/runtime/host/runtime-host.d.ts +6 -0
  152. package/dist/runtime/orchestration/runtime-oauth-token-manager.d.ts +3 -0
  153. package/dist/runtime/orchestration/session-runtime-orchestrator.d.ts +10 -1
  154. package/dist/runtime/orchestration/session-runtime.d.ts +2 -0
  155. package/dist/runtime/tools/subprocess-sandbox.d.ts +22 -0
  156. package/dist/services/llms/cline-recommended-models.d.ts +2 -0
  157. package/dist/services/local-runtime-bootstrap.d.ts +1 -0
  158. package/dist/services/plugin-command-api.d.ts +47 -0
  159. package/dist/services/plugin-commands.d.ts +25 -27
  160. package/dist/services/skills-cli.d.ts +2 -0
  161. package/dist/services/telemetry/core-events.d.ts +26 -0
  162. package/dist/services/telemetry/index.js +1 -1
  163. package/dist/services/telemetry/run-health.d.ts +40 -0
  164. package/dist/services/telemetry/stall-signals.d.ts +12 -0
  165. package/dist/types/config.d.ts +1 -0
  166. package/dist/types/session.d.ts +7 -0
  167. package/package.json +6 -5
@@ -0,0 +1,16 @@
1
+ import{N,St,ve,b,it,ge,Ae,C,k}from"./index-6k6ep10s.js";import{Ey}from"./index-aa2s5myc.js";import{ie,e,n,r,Qt,L,m,o,t,p,w,d,s,a}from"./index-mcnngj50.js";import{spawn as st}from"child_process";import{randomUUID as xe,randomBytes as Xt}from"crypto";import{createRequire as ot}from"module";import{mkdtempSync as ke,writeFileSync as at,rmSync as ne,readFileSync as Yt}from"fs";import{tmpdir as Re}from"os";import De,{join as X,dirname as Fe}from"path";import{createServer as er}from"http";import{EventEmitter as tr}from"events";import rr from"readline";var nr={debug:(i)=>console.debug(`[DEBUG] ${i}`),info:(i)=>console.info(`[INFO] ${i}`),warn:(i)=>console.warn(`[WARN] ${i}`),error:(i)=>console.error(`[ERROR] ${i}`)},sr={debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}};function oe(i){if(i===!1)return sr;if(i===void 0)return nr;return i}function dt(i,c=!1){if(c)return i;return{debug:()=>{},info:()=>{},warn:i.warn.bind(i),error:i.error.bind(i)}}var ir=/^[A-Za-z0-9_-]+$/,or=/^[A-Za-z0-9_-]+(?:\.[A-Za-z0-9_-]+)*$/;function ct(i){return ir.test(i)}function qe(i){return or.test(i)}function Y(i){if(!ct(i))throw Error(`Invalid MCP server name '${i}'. Names must match /^[A-Za-z0-9_-]+$/.`);return i}function ut(i){if(!qe(i))throw Error(`Invalid config override key '${i}'. Keys must match /^[A-Za-z0-9_-]+(?:\\.[A-Za-z0-9_-]+)*$/.`);return i}function fe(){return{inputTokens:{total:void 0,noCache:void 0,cacheRead:void 0,cacheWrite:void 0},outputTokens:{total:void 0,text:void 0,reasoning:void 0},raw:void 0}}function G(i,c){if(i===void 0&&c===void 0)return;return(i??0)+(c??0)}function ze(i){return typeof i==="object"&&i!==null&&!Array.isArray(i)}function ar(i,c){if(!ze(i))return c;if(!ze(c))return i;let u={...i};for(let[l,h]of Object.entries(c)){let f=u[l];u[l]=typeof h==="number"&&typeof f==="number"?f+h:h}return u}function dr(i,c){return{inputTokens:{total:G(i.inputTokens.total,c.inputTokens.total),noCache:G(i.inputTokens.noCache,c.inputTokens.noCache),cacheRead:G(i.inputTokens.cacheRead,c.inputTokens.cacheRead),cacheWrite:G(i.inputTokens.cacheWrite,c.inputTokens.cacheWrite)},outputTokens:{total:G(i.outputTokens.total,c.outputTokens.total),text:G(i.outputTokens.text,c.outputTokens.text),reasoning:G(i.outputTokens.reasoning,c.outputTokens.reasoning)},raw:ar(i.raw,c.raw)}}function cr(i){switch(i){case"stop":case"end_turn":case void 0:return{unified:"stop",raw:i};case"length":case"max_tokens":return{unified:"length",raw:i};case"content_filter":return{unified:"content-filter",raw:i};case"tool_calls":return{unified:"tool-calls",raw:i};case"error":return{unified:"error",raw:i};default:return{unified:"other",raw:i}}}var lt=Object.freeze({"on-failure":"on-request"});function pt(i){if(typeof i!=="string")return i;let c=lt[i];return c===void 0?i:c}function ye(i){return typeof i==="string"&&Object.hasOwn(lt,i)}function ur(i){return typeof i==="object"&&i!==null&&!Array.isArray(i)&&Object.prototype.toString.call(i)==="[object Object]"}function se(i){if(typeof i!=="object"||i===null)return i;if(Array.isArray(i))return i.map((l)=>se(l));let c=i,u={};for(let[l,h]of Object.entries(c)){if(l==="properties"&&typeof h==="object"&&h!==null&&!Array.isArray(h)){let f=h,g={};for(let[y,v]of Object.entries(f))g[y]=se(v);u[l]=g;continue}if(l==="$schema"||l==="$id"||l==="$ref"||l==="$defs"||l==="definitions"||l==="title"||l==="examples"||l==="default"||l==="format"||l==="pattern")continue;u[l]=se(h)}return u}function ht(i){if(typeof i==="string")return i;try{return JSON.stringify(i)}catch{return String(i)}}function Se(i,c){if(c!==void 0){if(Object.keys(c).length===0)return{};return{...i??{},...c}}if(i)return{...i};return}function lr(i){if(i===void 0)return;return Object.fromEntries(Object.entries(i).filter(([c])=>c.toLowerCase()!=="authorization"))}function pr(i){let c=i.httpHeaders?{...i.httpHeaders}:void 0;if(i.bearerToken===void 0)return c;let u=Object.keys(c??{}).some((l)=>l.toLowerCase()==="authorization");return{...c??{},...u?{}:{Authorization:`Bearer ${i.bearerToken}`}}}function ft(i,c){if(!i||i.transport!==c.transport)return{...c};if(c.transport==="stdio"){let v=i;return{transport:"stdio",command:c.command,args:c.args??v.args,env:Se(v.env,c.env),cwd:c.cwd??v.cwd,enabled:c.enabled??i.enabled,startupTimeoutSec:c.startupTimeoutSec??i.startupTimeoutSec,toolTimeoutSec:c.toolTimeoutSec??i.toolTimeoutSec,enabledTools:c.enabledTools??i.enabledTools,disabledTools:c.disabledTools??i.disabledTools}}let u=i,l=c.bearerToken!==void 0||c.bearerTokenEnvVar!==void 0,h=l?c.bearerToken:u.bearerToken,f=l?c.bearerTokenEnvVar:u.bearerTokenEnvVar,g=l?lr(u.httpHeaders):u.httpHeaders;return{transport:"http",url:c.url,bearerToken:h,bearerTokenEnvVar:f,httpHeaders:Se(g,c.httpHeaders),envHttpHeaders:Se(u.envHttpHeaders,c.envHttpHeaders),enabled:c.enabled??i.enabled,startupTimeoutSec:c.startupTimeoutSec??i.startupTimeoutSec,toolTimeoutSec:c.toolTimeoutSec??i.toolTimeoutSec,enabledTools:c.enabledTools??i.enabledTools,disabledTools:c.disabledTools??i.disabledTools}}function hr(i,c){if(!i&&!c)return;let u={};for(let[h,f]of Object.entries(i??{})){let g=Y(h);u[g]=f}if(!c)return u;let l={...u};for(let[h,f]of Object.entries(c)){let g=Y(h),y=l[g];l[g]=ft(y,f)}return l}function mt(i){let c=[],u=(h,f)=>{if(h!==void 0)c.push({type:"unsupported",feature:f,details:`Codex CLI does not support ${f}; it will be ignored.`})};u(i.temperature,"temperature"),u(i.topP,"topP"),u(i.topK,"topK"),u(i.maxOutputTokens,"maxOutputTokens"),u(i.presencePenalty,"presencePenalty"),u(i.frequencyPenalty,"frequencyPenalty"),u(i.stopSequences?.length?i.stopSequences:void 0,"stopSequences"),u(i.seed,"seed"),u(i.tools,"tools");let l=i.toolChoice;return u(l!==void 0&&l.type==="auto"?void 0:l,"toolChoice"),c}function fr(i,c){let u={},l=(h,f)=>{ut(h),u[h]=f};if(c!==void 0)l("features.rmcp_client",c);if(!i)return u;for(let[h,f]of Object.entries(i)){let y=`mcp_servers.${Y(h)}`;if(f.enabled!==void 0)l(`${y}.enabled`,f.enabled);if(f.startupTimeoutSec!==void 0)l(`${y}.startup_timeout_sec`,f.startupTimeoutSec);if(f.toolTimeoutSec!==void 0)l(`${y}.tool_timeout_sec`,f.toolTimeoutSec);if(f.enabledTools!==void 0)l(`${y}.enabled_tools`,f.enabledTools);if(f.disabledTools!==void 0)l(`${y}.disabled_tools`,f.disabledTools);if(f.transport==="stdio"){if(l(`${y}.command`,f.command),f.args!==void 0)l(`${y}.args`,f.args);if(f.env!==void 0)l(`${y}.env`,f.env);if(f.cwd)l(`${y}.cwd`,f.cwd)}else{if(l(`${y}.url`,f.url),f.bearerTokenEnvVar!==void 0)l(`${y}.bearer_token_env_var`,f.bearerTokenEnvVar);let v=pr(f);if(v!==void 0)l(`${y}.http_headers`,v);if(f.envHttpHeaders!==void 0)l(`${y}.env_http_headers`,f.envHttpHeaders)}}return u}var mr=["none","minimal","low","medium","high","xhigh","max","ultra"],gt=t({debug:L().refine((i)=>typeof i==="function",{message:"debug must be a function"}),info:L().refine((i)=>typeof i==="function",{message:"info must be a function"}),warn:L().refine((i)=>typeof i==="function",{message:"warn must be a function"}),error:L().refine((i)=>typeof i==="function",{message:"error must be a function"})}),yt=t({enabled:r().optional(),startupTimeoutSec:n().int().positive().optional(),toolTimeoutSec:n().int().positive().optional(),enabledTools:o(e()).optional(),disabledTools:o(e()).optional()}),gr=yt.extend({transport:a("stdio"),command:e().min(1),args:o(e()).optional(),env:d(e(),e()).optional(),cwd:e().optional()}),yr=yt.extend({transport:a("http"),url:e().min(1),bearerToken:e().optional(),bearerTokenEnvVar:e().optional(),httpHeaders:d(e(),e()).optional(),envHttpHeaders:d(e(),e()).optional()}),vt=w("transport",[gr,yr]),$e=e().min(1).refine((i)=>ct(i),{message:"MCP server names must match /^[A-Za-z0-9_-]+$/."}),Tt=d($e,vt),vr=t({name:$e,_start:L().refine((i)=>typeof i==="function",{message:"_start must be a function"}),_stop:L().refine((i)=>typeof i==="function",{message:"_stop must be a function"})}).passthrough(),bt=d($e,p([vt,vr])),Tr=e().min(1).refine((i)=>qe(i),{message:"configOverrides keys must match /^[A-Za-z0-9_-]+(?:\\.[A-Za-z0-9_-]+)*$/."}),Te=s(mr),_e=d(Tr,p([e(),n(),r(),t({}).passthrough(),o(L())])).optional(),br=t({cwd:e().optional(),approvalMode:s(["untrusted","on-failure","on-request","never"]).optional(),sandboxMode:s(["read-only","workspace-write","danger-full-access"]).optional(),env:d(e(),e()).optional(),verbose:r().optional(),logger:p([a(!1),gt]).optional(),reasoningEffort:Te.optional(),reasoningSummary:s(["auto","detailed"]).optional(),reasoningSummaryFormat:s(["none","experimental"]).optional(),modelVerbosity:s(["low","medium","high"]).optional(),mcpServers:Tt.optional(),rmcpClient:r().optional(),configOverrides:_e}).strict(),wr=br.extend({codexPath:e().optional(),addDirs:o(e().min(1)).optional(),fullAuto:r().optional(),dangerouslyBypassApprovalsAndSandbox:r().optional(),skipGitRepoCheck:r().optional(),color:s(["always","never","auto"]).optional(),allowNpx:r().optional(),outputLastMessageFile:e().optional(),profile:e().optional(),oss:r().optional(),webSearch:r().optional()}).strict(),Ir=t({reject:t({sandbox_approval:r(),rules:r(),mcp_elicitations:r()})}),xr=t({granular:t({sandbox_approval:r(),rules:r(),mcp_elicitations:r(),skill_approval:r().optional(),request_permissions:r().optional()})}),wt=p([s(["untrusted","on-failure","on-request","never"]),xr,Ir]),It=p([s(["read-only","workspace-write","danger-full-access"]),t({type:e()}).passthrough()]),xt=t({onCommandExecutionApproval:L().refine((i)=>i===void 0||typeof i==="function",{message:"onCommandExecutionApproval must be a function"}).optional(),onFileChangeApproval:L().refine((i)=>i===void 0||typeof i==="function",{message:"onFileChangeApproval must be a function"}).optional(),onSkillApproval:L().refine((i)=>i===void 0||typeof i==="function",{message:"onSkillApproval must be a function"}).optional(),onMcpElicitation:L().refine((i)=>i===void 0||typeof i==="function",{message:"onMcpElicitation must be a function"}).optional(),onToolRequestUserInput:L().refine((i)=>i===void 0||typeof i==="function",{message:"onToolRequestUserInput must be a function"}).optional(),onDynamicToolCall:L().refine((i)=>i===void 0||typeof i==="function",{message:"onDynamicToolCall must be a function"}).optional(),onAuthRefresh:L().refine((i)=>i===void 0||typeof i==="function",{message:"onAuthRefresh must be a function"}).optional(),onUnhandled:L().refine((i)=>i===void 0||typeof i==="function",{message:"onUnhandled must be a function"}).optional()}).strict().optional(),Sr=t({codexPath:e().optional(),cwd:e().optional(),env:d(e(),e()).optional(),verbose:r().optional(),logger:p([a(!1),gt]).optional(),personality:s(["none","friendly","pragmatic"]).optional(),effort:Te.optional(),summary:s(["auto","concise","detailed","none"]).optional(),approvalPolicy:wt.optional(),sandboxPolicy:It.optional(),baseInstructions:e().optional(),developerInstructions:e().optional(),mcpServers:bt.optional(),rmcpClient:r().optional(),configOverrides:_e,autoApprove:r().optional(),persistExtendedHistory:r().optional(),connectionTimeoutMs:n().int().positive().optional(),requestTimeoutMs:n().int().positive().optional(),idleTimeoutMs:n().int().positive().optional(),minCodexVersion:e().regex(/^\d+\.\d+\.\d+(-[A-Za-z0-9.-]+)?$/,"minCodexVersion must be a semver string").optional(),threadMode:s(["stateless","persistent"]).optional(),resume:e().optional(),includeRawChunks:r().optional(),serverRequests:xt,onSessionCreated:L().refine((i)=>i===void 0||typeof i==="function",{message:"onSessionCreated must be a function"}).optional()}).strict(),Cr=t({threadId:e().optional(),resume:e().optional(),threadMode:s(["stateless","persistent"]).optional(),includeRawChunks:r().optional(),personality:s(["none","friendly","pragmatic"]).optional(),effort:Te.optional(),summary:s(["auto","concise","detailed","none"]).optional(),approvalPolicy:wt.optional(),sandboxPolicy:It.optional(),baseInstructions:e().optional(),developerInstructions:e().optional(),mcpServers:bt.optional(),rmcpClient:r().optional(),configOverrides:_e,autoApprove:r().optional(),persistExtendedHistory:r().optional(),serverRequests:xt,onSessionCreated:L().refine((i)=>i===void 0||typeof i==="function",{message:"onSessionCreated must be a function"}).optional()}).strict();function Ct(i){let c=[];if(i&&typeof i==="object"){let{issues:u,errors:l}=i;if(Array.isArray(u))c=u;else if(Array.isArray(l))c=l}return c.map((u)=>{let l=Array.isArray(u?.path)?u.path.join("."):"",h=u?.message||"Invalid value";return`${l?l+": ":""}${h}`})}function kr(i,c){if(!i.success)return{valid:!1,warnings:c,errors:Ct(i.error)};return{valid:!0,warnings:c,errors:[]}}function He(i){let c=[],u=wr.safeParse(i);if(!u.success)return kr(u,c);let l=u.data;if(l.fullAuto&&l.dangerouslyBypassApprovalsAndSandbox)c.push("Both fullAuto and dangerouslyBypassApprovalsAndSandbox specified; fullAuto takes precedence.");if(l.fullAuto&&l.sandboxMode!==void 0&&l.sandboxMode!=="workspace-write")c.push(`fullAuto is deprecated (Codex CLI 0.147 removed --full-auto); its sandbox mapping is ignored because sandboxMode '${l.sandboxMode}' is set explicitly (its approvalMode 'never' default and its precedence over dangerouslyBypassApprovalsAndSandbox still apply).`);else if(l.fullAuto)c.push("fullAuto is deprecated (Codex CLI 0.147 removed --full-auto); it now defaults sandboxMode to 'workspace-write' and approvalMode to 'never' unless those are set explicitly.");if(ye(l.approvalMode))c.push(`approvalMode '${l.approvalMode}' is deprecated (retired by Codex CLI 0.143); it is sent as 'on-request'.`);return{valid:!0,warnings:c,errors:[]}}function Ve(i){let c=[],u=Sr.safeParse(i);if(!u.success)return{valid:!1,warnings:c,errors:Ct(u.error)};let l=u.data;if(l.autoApprove&&l.approvalPolicy!==void 0)c.push("autoApprove overrides approvalPolicy for server-initiated approval requests.");if(ye(l.approvalPolicy))c.push(`approvalPolicy '${l.approvalPolicy}' is deprecated (retired by Codex CLI 0.143 and rejected by app-server >= 0.144); it is sent as 'on-request'.`);else if(typeof l.approvalPolicy==="object"&&l.approvalPolicy!==null&&"reject"in l.approvalPolicy)c.push("approvalPolicy { reject } is deprecated (removed from the Codex app-server protocol); it is translated to the equivalent { granular } policy.");if(l.threadMode==="persistent"&&l.resume)c.push("threadMode=persistent ignores resume when an explicit thread is already active.");return{valid:!0,warnings:c,errors:[]}}function Rr(i){if(!i||i.trim()==="")return"Model ID cannot be empty";return}function Er(i){if(typeof i!=="object"||i===null||!("type"in i))return!1;return i.type==="data"||i.type==="url"||i.type==="reference"||i.type==="text"}function Mr(i,c){if(Ae(i))return i;let u=typeof c==="string"||c instanceof Uint8Array?c:c instanceof ArrayBuffer?new Uint8Array(c):void 0;if(u!==void 0){let l=it({data:u,topLevelType:ge(i)});if(l)return l}return"image/png"}function Ce(i){if(typeof i!=="object"||i===null)return null;let c=i,u=c.type==="file",l=u?c.mediaType||"image/png":c.mimeType||"image/png";if(u&&ge(l).toLowerCase()!=="image")return null;let h=u?c.data:c.image;if(Er(h))if(h.type==="data")h=h.data;else if(h.type==="url")h=h.url;else return null;let f=Mr(l,h);if(typeof h==="string")return te(h,f);if(typeof h==="object"&&h!==null&&h instanceof URL){if(h.protocol==="data:"){let g=h.toString();return te(g,f)}return null}if(Buffer.isBuffer(h)){let g=h.toString("base64");return{data:`data:${f};base64,${g}`,mimeType:f}}if(Ar(h)){let y=Buffer.from(h).toString("base64");return{data:`data:${f};base64,${y}`,mimeType:f}}if(u&&typeof c.url==="string")return te(c.url,f);if(!u&&typeof c.data==="string")return te(c.data,f);if(!u&&typeof c.url==="string")return te(c.url,f);return null}function te(i,c){let u=i.trim();if(/^file:\/\//i.test(u))return null;if(/^https?:\/\//i.test(u))return null;if(u.startsWith("data:")){let h=u.match(/^data:([^;,]+);base64,([^,]+)$/);if(!h)return null;let f=Me(h[2]??"");if(!f)return null;let g=h[1]||c;return{data:`data:${g};base64,${f}`,mimeType:g}}let l=Me(u);if(!l)return null;return{data:`data:${c};base64,${l}`,mimeType:c}}function Ar(i){if(i instanceof ArrayBuffer)return!0;return i instanceof Uint8Array}function kt(i){let c=ke(X(Re(),"codex-img-")),u=Pr(i.mimeType),l=X(c,`image.${u}`),h=i.data.match(/^data:[^;]+;base64,(.+)$/);if(!h)throw Error("Invalid data URL format: expected data:[type];base64,[data]");let f=Me(h[1]??"");if(!f)throw Error("Invalid base64 image payload");let g=Buffer.from(f,"base64");return at(l,g),l}function Ee(i){for(let c of i)try{ne(c,{force:!0});let u=c.replace(/[/\\][^/\\]+$/,"");if(u.includes("codex-img-"))ne(u,{force:!0,recursive:!0})}catch{}}function Pr(i){if(!i)return"png";return{"image/png":"png","image/jpeg":"jpg","image/jpg":"jpg","image/gif":"gif","image/webp":"webp","image/bmp":"bmp","image/svg+xml":"svg"}[i.toLowerCase()]||i.split("/")[1]||"png"}function Me(i){let c=i.replace(/\s+/g,"");if(!c)return null;if(!/^[A-Za-z0-9+/]*={0,2}$/.test(c))return null;if(c.length%4===1)return null;let u=c.padEnd(Math.ceil(c.length/4)*4,"=");try{if(Buffer.from(u,"base64").toString("base64")!==u)return null;return u}catch{return null}}function We(i){return/^https?:\/\//i.test(i.trim())}function Q(i){if(i instanceof URL)return i.protocol==="file:";if(typeof i==="string")return/^file:\/\//i.test(i.trim());return!1}function ue(i){if(i instanceof URL){let c=i.toString();return We(c)?c:void 0}if(typeof i==="string")return We(i)?i.trim():void 0;return}function Rt(i){return ge(i).toLowerCase()==="image"}function Oe(i){return i.type==="file"&&"mediaType"in i&&typeof i.mediaType==="string"}function Et(i){return i.type==="image"}function jr(i){if(typeof i!=="object"||i===null||!("type"in i))return!1;return i.type==="data"||i.type==="url"||i.type==="reference"||i.type==="text"}function qr(i){if(Oe(i)){if(!Rt(i.mediaType))return{kind:"unsupported",warning:`Unsupported file mediaType "${i.mediaType}"; only image/* is supported.`};let c=i.data;if(jr(c)){if(c.type==="reference")return{kind:"unsupported",warning:"File reference data is not supported for images."};if(c.type==="text")return{kind:"unsupported",warning:"Inline text file data is not supported for images."};if(c.type==="url"){let f=ue(c.url);if(f)return{kind:"remote",url:f};if(Q(c.url))return{kind:"unsupported",warning:"file:// image URLs are not supported."}}let h=Ce(i);if(h)return{kind:"local",image:h};return{kind:"unsupported",warning:"Unsupported image format in message."}}let u=ue(c);if(u)return{kind:"remote",url:u};let l=Ce(i);if(l)return{kind:"local",image:l};if(Q(c)||"url"in i&&Q(i.url))return{kind:"unsupported",warning:"file:// image URLs are not supported."};return{kind:"unsupported",warning:"Unsupported image format in message."}}if(Et(i)){let c=ue(i.image)??ue(i.url);if(c)return{kind:"remote",url:c};let u=Ce(i);if(u)return{kind:"local",image:u};if(Q(i.image)||Q(i.url)||Q(i.data))return{kind:"unsupported",warning:"file:// image URLs are not supported."};return{kind:"unsupported",warning:"Unsupported image format in message."}}return}function Pe(i){if(i===void 0)return"";if(typeof i==="string")return i;try{return JSON.stringify(i)}catch{return"[unserializable]"}}function re(i){if(typeof i==="object"&&i!==null&&"type"in i)return String(i.type);return"unknown"}function Mt(i){switch(i.type){case"text":return{text:i.value,warnings:[]};case"json":return{text:Pe(i.value),warnings:[]};case"execution-denied":return{text:i.reason?`Execution denied: ${i.reason}`:"Execution denied",warnings:[]};case"error-text":return{text:`Tool error: ${i.value}`,warnings:[]};case"error-json":return{text:`Tool error: ${Pe(i.value)}`,warnings:[]};case"content":{let c=[];return{text:i.value.map((l)=>{if(l.type==="text")return l.text;if(l.type==="file"){let h=Rt(l.mediaType)?"image":"file",f=l.data;if(f.type==="data")return h==="image"?`[image-data: ${l.mediaType}]`:`[file-data: ${l.mediaType}${l.filename?`, ${l.filename}`:""}]`;if(f.type==="url")return`[${h}-url: ${f.url}]`;if(f.type==="reference")return h==="image"?"[image-file-id]":"[file-id]";if(f.type==="text")return f.text;return c.push({type:"unsupported",feature:"tool-result.content.file",details:`Unsupported tool file content data type "${re(f)}".`}),"[unsupported-tool-content-part]"}if(l.type==="custom")return c.push({type:"unsupported",feature:"tool-result.content.custom",details:"Custom tool content parts are not supported."}),"";return c.push({type:"unsupported",feature:`tool-result.content.${re(l)}`,details:`Unsupported tool content part "${re(l)}".`}),"[unsupported-tool-content-part]"}).filter((l)=>l.length>0).join(`
2
+ `),warnings:c}}default:return{text:"[unsupported-tool-result-output]",warnings:[{type:"unsupported",feature:`tool-result.output.${re(i)}`,details:`Unsupported tool result output type "${re(i)}".`}]}}}function Ue(i){return i.type==="text"&&typeof i.text==="string"}function $r(i){return i.type==="reasoning"&&typeof i.text==="string"}function _r(i){let c=i;return i.type==="tool-call"&&typeof c.toolName==="string"&&typeof c.toolCallId==="string"&&"input"in c}function At(i){let c=i;return i.type==="tool-result"&&typeof c.toolName==="string"&&c.output!==void 0}function Or(i){let c=i;return i.type==="tool-approval-response"&&typeof c.approvalId==="string"&&typeof c.approved==="boolean"&&(c.reason===void 0||typeof c.reason==="string")}function Pt(i){let c=[];for(let u of i){if(u.role!=="system")continue;if(typeof u.content==="string"){let l=u.content.trim();if(l.length>0)c.push(l);continue}for(let l of u.content){if(!Ue(l))continue;let h=l.text.trim();if(h.length>0)c.push(h)}}if(c.length===0)return;return c.join(`
3
+
4
+ `)}function jt(i){let c=[],u=[],l=[],h=[],f=!1;for(let g of i){if(g.role!=="user")continue;if(typeof g.content==="string"){let x=g.content.trim();if(x.length>0)h.push(x);continue}let y=[];for(let x of g.content){if(Ue(x)){let R=x.text.trim();if(R.length>0)y.push(R);continue}if(Oe(x)||Et(x)){let R=qr(x);if(!R)continue;if(f=!0,R.kind==="local")u.push(R.image);else if(R.kind==="remote")l.push(R.url);else c.push({type:"unsupported",feature:`prompt.user.${x.type}`,details:R.warning});continue}c.push({type:"unsupported",feature:`prompt.user.${x.type}`,details:`Unsupported user content part "${x.type}".`})}let v=y.join(`
5
+ `).trim();if(v.length>0)h.push(v)}return{text:h.join(`
6
+ `).trim(),localImages:u,remoteImageUrls:l,warnings:c,sawImages:f}}function Ur(i){let c=[],u=[],l=[];for(let f of i){if(Ue(f)){let g=f.text.trim();if(g.length>0)l.push(g);continue}if($r(f)){let g=f.text.trim();if(g.length>0)u.push(`Assistant Reasoning: ${g}`);continue}if(f.type==="tool-call"){if(_r(f))u.push(`Tool Call (${f.toolName}): ${Pe(f.input)}`);else c.push({type:"unsupported",feature:"prompt.assistant.tool-call.malformed",details:"Malformed assistant tool-call part; expected toolName, toolCallId, and input."});continue}if(At(f)){let g=Mt(f.output);u.push(`Tool Result (${f.toolName}): ${g.text}`),c.push(...g.warnings);continue}if(Oe(f)){u.push(`[assistant-file: ${f.mediaType}]`);continue}if(f.type==="custom"){let g="kind"in f&&typeof f.kind==="string"?f.kind:void 0;c.push({type:"unsupported",feature:"prompt.assistant.custom",details:`Custom content parts are not supported${g?` (kind "${g}")`:""}.`});continue}if(f.type==="reasoning-file"){c.push({type:"unsupported",feature:"prompt.assistant.reasoning-file",details:"Reasoning file parts are not supported."});continue}c.push({type:"unsupported",feature:`prompt.assistant.${f.type}`,details:`Unsupported assistant content part "${f.type}".`})}let h=l.join(`
7
+ `).trim();if(h.length>0)u.unshift(`Assistant: ${h}`);return{lines:u,warnings:c}}function Nr(i){let c=[],u=[];for(let l of i){if(At(l)){let h=Mt(l.output);u.push(`Tool Result (${l.toolName}): ${h.text}`),c.push(...h.warnings);continue}if(Or(l)){let h=l.approved?"approved":"denied",f=l.reason?` (${l.reason})`:"";u.push(`Tool Approval (${l.approvalId}): ${h}${f}`);continue}c.push({type:"unsupported",feature:`prompt.tool.${l.type}`,details:`Unsupported tool message content part "${l.type}".`})}return{lines:u,warnings:c}}function Lr(i,c){let u=[],l=[],h=[],f=[],g=c?.includeRemoteImagesInMarkers??!0;for(let y of i){if(y.role==="system")continue;if(y.role==="user"){let v=jt([y]);u.push(...v.warnings),h.push(...v.localImages),f.push(...v.remoteImageUrls);let x=v.localImages.length+(g?v.remoteImageUrls.length:0),R=v.sawImages&&x>0?`[${x} image${x===1?"":"s"} attached]`:"",T=[v.text,R].filter((E)=>E.length>0).join(`
8
+ `).trim();if(T.length>0)l.push(`User: ${T}`);continue}if(y.role==="assistant"){let v=Array.isArray(y.content)?y.content:[{type:"text",text:String(y.content)}],x=Ur(v);l.push(...x.lines),u.push(...x.warnings);continue}if(y.role==="tool"){let v=Array.isArray(y.content)?y.content:[{type:"text",text:String(y.content)}],x=Nr(v);l.push(...x.lines),u.push(...x.warnings);continue}}return{text:l.join(`
9
+
10
+ `).trim(),localImages:h,remoteImageUrls:f,warnings:u}}function Br(i){let c=[],u=!1;for(let l=i.length-1;l>=0;l-=1){let h=i[l];if(!h)continue;if(h.role==="system")continue;if(h.role==="user"){c.push(h),u=!0;continue}if(u)break}if(c.length>0)return c.reverse();for(let l=i.length-1;l>=0;l-=1){let h=i[l];if(!h)continue;if(h.role==="user")return[h]}return[]}function Dr(i){let c=Br(i),u=jt(c),l=i.filter((g)=>g.role!=="system").length,h=c.length,f=[...u.warnings];if(l>h)f.push({type:"other",message:"Stateful mode ignores earlier prompt messages and only sends the latest user turn."});return{text:u.text,localImages:u.localImages,remoteImageUrls:u.remoteImageUrls,warnings:f}}function qt(i){let c=Pt(i.prompt),u=i.mode==="persistent"?Dr(i.prompt):Lr(i.prompt,{includeRemoteImagesInMarkers:i.includeRemoteImagesInMarkers});return{systemInstruction:c,text:u.text,localImages:u.localImages,remoteImageUrls:u.remoteImageUrls,warnings:u.warnings}}function Fr(i){let c=qt({prompt:i,mode:"stateless",includeRemoteImagesInMarkers:!1}),u=c.warnings.map((h)=>h.type==="unsupported"?{type:"unsupported",feature:h.feature,details:h.details}:{type:"other",message:h.message});if(c.remoteImageUrls.length>0)u.push({type:"unsupported",feature:"prompt.user.image.remote-url.exec",details:"Unsupported image format in message (HTTP URLs not supported)"});let l=[];if(c.systemInstruction)l.push(c.systemInstruction);if(c.text)l.push(c.text);return{promptText:l.join(`
11
+
12
+ `),images:c.localImages,...u.length>0?{warnings:u}:{}}}var je=class extends b{feature;minCodexVersion;serverVersion;constructor({feature:i,minCodexVersion:c,serverVersion:u,message:l}){let h=l??`Feature '${i}' is not supported by this codex app-server`+(u?` (detected ${u})`:"")+(c?`. Requires codex CLI >= ${c}.`:".");super({functionality:i,message:h});this.name="UnsupportedFeatureError",this.feature=i,this.minCodexVersion=c,this.serverVersion=u}};function he({message:i,code:c,exitCode:u,stderr:l,promptExcerpt:h,provider:f="exec",isRetryable:g=!1}){return new N({message:i,isRetryable:g,url:f==="app-server"?"codex-cli://app-server":"codex-cli://exec",requestBodyValues:h?{prompt:h}:void 0,data:{code:c,exitCode:u,stderr:l,promptExcerpt:h}})}function zr(i){return new St({message:i||"Authentication failed. Ensure Codex CLI is logged in (codex login)."})}function Ws(i){if(i instanceof St)return!0;if(i instanceof N){let c=i.data;if(c?.code!==void 0){let u=String(c.code).trim().toLowerCase();if(u==="401"||u==="unauthorized"||u==="auth")return!0}}return!1}function Js(i){return i instanceof je}function Hr(i){return i==="agent_message"||i==="assistant_message"}var Vr={none:!0,minimal:!0,low:!0,medium:!0,high:!0,xhigh:!0,max:!0,ultra:!0},Wr=t({reasoningEffort:Te.optional(),reasoningSummary:s(["auto","detailed"]).optional(),reasoningSummaryFormat:s(["none","experimental"]).optional(),textVerbosity:s(["low","medium","high"]).optional(),addDirs:o(e().min(1)).optional(),configOverrides:d(e().refine((i)=>qe(i),{message:"configOverrides keys must match /^[A-Za-z0-9_-]+(?:\\.[A-Za-z0-9_-]+)*$/."}),p([e(),n(),r(),t({}).passthrough(),o(L())])).optional(),mcpServers:Tt.optional(),rmcpClient:r().optional()}).strict();function Jr(i,c){if(i){let u=i.toLowerCase();if(u.endsWith(".js")||u.endsWith(".mjs")||u.endsWith(".cjs"))return{cmd:"node",args:[i]};return{cmd:i,args:[]}}try{return{cmd:"node",args:[ot(import.meta.url).resolve("@openai/codex/package.json").replace(/package\.json$/,"")+"bin/codex.js"]}}catch{if(c)return{cmd:"npx",args:["-y","@openai/codex"]};return{cmd:"codex",args:[]}}}var Zr=class{specificationVersion="v4";provider="codex-cli";supportedUrls={};modelId;settings;logger;sessionId;deprecationWarningsEmitted=new Set;constructor(i){this.modelId=i.id,this.settings=i.settings??{};let c=oe(this.settings.logger);if(this.logger=dt(c,this.settings.verbose??!1),!this.modelId||this.modelId.trim()==="")throw new ve({modelId:this.modelId,modelType:"languageModel"});let u=Rr(this.modelId);if(u)this.logger.warn(`Codex CLI model: ${u}`)}warnDeprecatedOnce(i,c){if(this.deprecationWarningsEmitted.has(i))return;this.deprecationWarningsEmitted.add(i),this.logger.warn(`[codex-cli] ${c}`)}mergeSettings(i){if(!i)return this.settings;let c=i.configOverrides||this.settings.configOverrides?{...this.settings.configOverrides??{},...i.configOverrides??{}}:void 0,u=i.addDirs||this.settings.addDirs?[...this.settings.addDirs??[],...i.addDirs??[]]:void 0,l=hr(this.settings.mcpServers,i.mcpServers);return{...this.settings,reasoningEffort:i.reasoningEffort??this.settings.reasoningEffort,reasoningSummary:i.reasoningSummary??this.settings.reasoningSummary,reasoningSummaryFormat:i.reasoningSummaryFormat??this.settings.reasoningSummaryFormat,modelVerbosity:i.textVerbosity??this.settings.modelVerbosity,configOverrides:c,addDirs:u,mcpServers:l,rmcpClient:i.rmcpClient??this.settings.rmcpClient}}getItemType(i){if(!i)return;let c=i,u=typeof c.item_type==="string"?c.item_type:void 0,l=typeof c.type==="string"?c.type:void 0;return u??l}buildArgs(i=[],c,u=this.settings){let l=Jr(u.codexPath,u.allowNpx),h=[...l.args,"exec","--experimental-json"];if(u.dangerouslyBypassApprovalsAndSandbox&&!u.fullAuto)h.push("--dangerously-bypass-approvals-and-sandbox");else{let T=u.approvalMode??(u.fullAuto?"never":"on-request");if(ye(T))this.warnDeprecatedOnce(`approvalMode:${T}`,`approvalMode '${T}' is deprecated (retired by Codex CLI 0.143); sending 'on-request' instead.`);let E=pt(T);h.push("-c",`approval_policy=${E}`);let A=u.sandboxMode??"workspace-write";h.push("-c",`sandbox_mode=${A}`)}if(u.skipGitRepoCheck!==!1)h.push("--skip-git-repo-check");if(u.reasoningEffort)h.push("-c",`model_reasoning_effort=${u.reasoningEffort}`);if(u.reasoningSummary)h.push("-c",`model_reasoning_summary=${u.reasoningSummary}`);if(u.reasoningSummaryFormat)h.push("-c",`model_reasoning_summary_format=${u.reasoningSummaryFormat}`);if(u.modelVerbosity)h.push("-c",`model_verbosity=${u.modelVerbosity}`);if(u.profile)h.push("--profile",u.profile);if(u.oss)h.push("--oss");if(u.webSearch)h.push("-c","tools.web_search=true");let f=this.applyMcpSettings(h,u);if(u.color)h.push("--color",u.color);if(this.modelId)h.push("-m",this.modelId);if(u.addDirs?.length){for(let T of u.addDirs)if(typeof T==="string"&&T.trim().length>0)h.push("--add-dir",T)}if(u.configOverrides)for(let[T,E]of Object.entries(u.configOverrides))this.addConfigOverride(h,T,E);let g;if(c?.type==="json"&&c.schema){let T=typeof c.schema==="object"?c.schema:{},E=se(T);if(Object.keys(E).length>0){let O=ke(X(Re(),"codex-schema-"));g=X(O,"schema.json");let P={...E,additionalProperties:!1};at(g,JSON.stringify(P,null,2)),h.push("--output-schema",g)}}let y=[];for(let T of i)try{let E=kt(T);y.push(E),h.push("--image",E)}catch(E){this.logger.warn(`[codex-cli] Failed to write image to temp file: ${String(E)}`)}let v={...process.env,...u.env||{},...f,RUST_LOG:process.env.RUST_LOG||"error"},x=u.outputLastMessageFile,R=!1;if(!x){let T=ke(X(Re(),"codex-cli-"));x=X(T,"last-message.txt"),R=!0}if(h.push("--output-last-message",x),y.length>0)h.push("--");return h.push("-"),{cmd:l.cmd,args:h,env:v,cwd:u.cwd,lastMessagePath:x,lastMessageIsTemp:R,schemaPath:g,tempImagePaths:y.length>0?y:void 0}}applyMcpSettings(i,c){if(c.rmcpClient)this.addConfigOverride(i,"features.rmcp_client",!0);if(!c.mcpServers)return;let u={};for(let[l,h]of Object.entries(c.mcpServers)){let f=Y(l),g=`mcp_servers.${f}`;if(h.enabled!==void 0)this.addConfigOverride(i,`${g}.enabled`,h.enabled);if(h.startupTimeoutSec!==void 0)this.addConfigOverride(i,`${g}.startup_timeout_sec`,h.startupTimeoutSec);if(h.toolTimeoutSec!==void 0)this.addConfigOverride(i,`${g}.tool_timeout_sec`,h.toolTimeoutSec);if(h.enabledTools!==void 0)this.addConfigOverride(i,`${g}.enabled_tools`,h.enabledTools);if(h.disabledTools!==void 0)this.addConfigOverride(i,`${g}.disabled_tools`,h.disabledTools);if(h.transport==="stdio"){if(this.addConfigOverride(i,`${g}.command`,h.command),h.args!==void 0)this.addConfigOverride(i,`${g}.args`,h.args);if(h.env!==void 0)this.addConfigOverride(i,`${g}.env`,h.env);if(h.cwd)this.addConfigOverride(i,`${g}.cwd`,h.cwd)}else{this.addConfigOverride(i,`${g}.url`,h.url);let y=Object.keys(h.httpHeaders??{}).some((v)=>v.toLowerCase()==="authorization");if(h.bearerTokenEnvVar){if(this.addConfigOverride(i,`${g}.bearer_token_env_var`,h.bearerTokenEnvVar),h.bearerToken!==void 0)this.logger.warn(`[codex-cli] MCP server '${f}': both bearerToken and bearerTokenEnvVar are set; using bearerTokenEnvVar and ignoring the inline token.`)}else if(h.bearerToken!==void 0&&!y){let v=this.allocateBearerTokenEnvVar(f,u);u[v]=h.bearerToken,this.addConfigOverride(i,`${g}.bearer_token_env_var`,v)}if(h.httpHeaders!==void 0)this.addConfigOverride(i,`${g}.http_headers`,h.httpHeaders);if(h.envHttpHeaders!==void 0)this.addConfigOverride(i,`${g}.env_http_headers`,h.envHttpHeaders)}}return Object.keys(u).length>0?u:void 0}allocateBearerTokenEnvVar(i,c){let u=`CODEX_MCP_${i.toUpperCase().replace(/-/g,"_")}_BEARER_TOKEN`,l=u,h=2;while(l in c)l=`${u}_${h}`,h+=1;return l}addConfigOverride(i,c,u){if(ut(c),ur(u)){let h=Object.entries(u);if(h.length===0){i.push("-c",`${c}={}`);return}for(let[f,g]of h)this.addConfigOverride(i,`${c}.${f}`,g);return}let l=this.serializeConfigValue(u);i.push("-c",`${c}=${l}`)}serializeConfigValue(i){if(typeof i==="string")return i;if(typeof i==="number"||typeof i==="boolean")return String(i);if(Array.isArray(i))try{return JSON.stringify(i)}catch{return String(i)}if(i&&typeof i==="object")try{return JSON.stringify(i)}catch{return String(i)}return String(i)}parseExperimentalJsonEvent(i){try{return JSON.parse(i)}catch{return}}extractUsage(i){let c=i.usage;if(!c)return;let u=c.input_tokens??0,l=c.output_tokens??0,h=c.cached_input_tokens??0,f=typeof c.cache_write_input_tokens==="number"?c.cache_write_input_tokens:void 0,g=typeof c.reasoning_output_tokens==="number"?c.reasoning_output_tokens:void 0;return{inputTokens:{total:u,noCache:Math.max(0,u-h-(f??0)),cacheRead:h,cacheWrite:f},outputTokens:{total:l,text:void 0,reasoning:g},raw:c}}getToolName(i){if(!i)return;switch(this.getItemType(i)){case"command_execution":return"exec";case"file_change":return"patch";case"mcp_tool_call":{let u=i.tool;if(typeof u==="string"&&u.length>0)return u;return"mcp_tool"}case"web_search":return"web_search";default:return}}buildToolInputPayload(i){if(!i)return;let c=i;switch(this.getItemType(i)){case"command_execution":{let u={};if(typeof c.command==="string")u.command=c.command;if(typeof c.status==="string")u.status=c.status;if(typeof c.cwd==="string")u.cwd=c.cwd;return Object.keys(u).length?u:void 0}case"file_change":{let u={};if(Array.isArray(c.changes))u.changes=c.changes;if(typeof c.status==="string")u.status=c.status;return Object.keys(u).length?u:void 0}case"mcp_tool_call":{let u={};if(typeof c.server==="string")u.server=c.server;if(typeof c.tool==="string")u.tool=c.tool;if(typeof c.status==="string")u.status=c.status;if(c.arguments!==void 0)u.arguments=c.arguments;return Object.keys(u).length?u:void 0}case"web_search":{let u={};if(typeof c.query==="string")u.query=c.query;return Object.keys(u).length?u:void 0}default:return}}buildToolResultPayload(i){if(!i)return{result:{}};let c=i,u={},l=this.getItemType(i);if(typeof l==="string")u.itemType=l;if(typeof i.id==="string")u.itemId=i.id;if(typeof c.status==="string")u.status=c.status;let h=(f)=>({result:f,metadata:Object.keys(u).length?u:void 0});switch(l){case"command_execution":{let f={};if(typeof c.command==="string")f.command=c.command;if(typeof c.aggregated_output==="string")f.aggregatedOutput=c.aggregated_output;if(typeof c.exit_code==="number")f.exitCode=c.exit_code;if(typeof c.status==="string")f.status=c.status;return h(f)}case"file_change":{let f={};if(Array.isArray(c.changes))f.changes=c.changes;if(typeof c.status==="string")f.status=c.status;return h(f)}case"mcp_tool_call":{let f={};if(typeof c.server==="string")f.server=c.server,u.server=c.server;if(typeof c.tool==="string")f.tool=c.tool;if(typeof c.status==="string")f.status=c.status;if(c.result!==void 0)f.result=c.result;if(c.error!==void 0)f.error=c.error;return h(f)}case"web_search":{let f={};if(typeof c.query==="string")f.query=c.query;if(typeof c.status==="string")f.status=c.status;return h(f)}default:{let f={...c};return h(f)}}}emitToolInvocation(i,c,u,l){let h=ht(l);if(i.enqueue({type:"tool-input-start",id:c,toolName:u,providerExecuted:!0,dynamic:!0}),h)i.enqueue({type:"tool-input-delta",id:c,delta:h});i.enqueue({type:"tool-input-end",id:c}),i.enqueue({type:"tool-call",toolCallId:c,toolName:u,input:h,providerExecuted:!0,dynamic:!0})}emitToolResult(i,c,u,l,h,f){let g={...f??{}},y=this.getItemType(l);if(y&&g.itemType===void 0)g.itemType=y;if(l.id&&g.itemId===void 0)g.itemId=l.id;let v;if(y==="command_execution"){let x=l,R=typeof x.exit_code==="number"?x.exit_code:void 0,T=typeof x.status==="string"?x.status:void 0;if(R!==void 0&&R!==0||T==="failed")v=!0}i.enqueue({type:"tool-result",toolCallId:c,toolName:u,result:h??{},dynamic:!0,...v?{isError:!0}:{},...Object.keys(g).length?{providerMetadata:{"codex-cli":g}}:{}})}handleSpawnError(i,c){let u=i&&typeof i==="object"?i:void 0,l=String((u?.message??i)||"Failed to run Codex CLI");if(/login|auth|unauthorized|not\s+logged/i.test(l))return zr(l);return he({message:l,code:typeof u?.code==="string"?u.code:void 0,exitCode:typeof u?.exitCode==="number"?u.exitCode:void 0,stderr:typeof u?.stderr==="string"?u.stderr:void 0,promptExcerpt:c})}async doGenerate(i){this.logger.debug(`[codex-cli] Starting doGenerate request with model: ${this.modelId}`);let{stream:c,request:u}=await this.doStream(i),l=[],h=new Map,f=new Map,g,y,v={id:C(),timestamp:new Date,modelId:this.modelId},x=fe(),R={unified:"other",raw:void 0},T=[],E,A=(I,M)=>{let _=h.get(I);if(_){if(M)_.providerMetadata=M;return _}let U={type:"text",text:"",...M?{providerMetadata:M}:{}};return h.set(I,U),l.push(U),U},O=(I,M)=>{let _=f.get(I);if(_){if(M)_.providerMetadata=M;return _}let U={type:"reasoning",text:"",...M?{providerMetadata:M}:{}};return f.set(I,U),l.push(U),U},P=(I)=>{l.push(I)};for await(let I of c){if(I.type==="stream-start"){T=I.warnings;continue}if(I.type==="response-metadata"){v={id:I.id,timestamp:I.timestamp,modelId:I.modelId};continue}if(I.type==="text-start"){g=I.id,A(I.id,I.providerMetadata);continue}if(I.type==="text-delta"){let M=typeof I.id==="string"?I.id:g??"__default_text_block__";g=M;let _=A(M,I.providerMetadata);_.text=`${_.text}${I.delta}`;continue}if(I.type==="text-end"){let M=typeof I.id==="string"?I.id:g;if(M){let _=A(M,I.providerMetadata);if(I.providerMetadata)_.providerMetadata=I.providerMetadata}if(g===M)g=void 0;continue}if(I.type==="reasoning-start"){y=I.id,O(I.id,I.providerMetadata);continue}if(I.type==="reasoning-delta"){let M=typeof I.id==="string"?I.id:y??"__default_reasoning_block__";y=M;let _=O(M,I.providerMetadata);_.text=`${_.text}${I.delta}`;continue}if(I.type==="reasoning-end"){let M=typeof I.id==="string"?I.id:y;if(M){let _=O(M,I.providerMetadata);if(I.providerMetadata)_.providerMetadata=I.providerMetadata}if(y===M)y=void 0;continue}if(I.type==="file"){P(I);continue}if(I.type==="source"){P(I);continue}if(I.type==="tool-approval-request"){P(I);continue}if(I.type==="tool-call"){P(I);continue}if(I.type==="tool-result"){P(I);continue}if(I.type==="finish")x=I.usage,R=I.finishReason,E=I.providerMetadata}let q=l.filter((I)=>{if(I.type==="text")return I.text.trim().length>0;if(I.type==="reasoning")return I.text.trim().length>0;return!0}),S=E&&typeof E==="object"?{...E}:{};if(this.sessionId){let I=S["codex-cli"],M=I&&typeof I==="object"&&!Array.isArray(I)?I:{};S["codex-cli"]={...M,sessionId:this.sessionId}}return{content:q,usage:x,finishReason:R,warnings:T,response:v,request:u,...Object.keys(S).length>0?{providerMetadata:S}:{}}}async doStream(i){this.logger.debug(`[codex-cli] Starting doStream request with model: ${this.modelId}`);let{promptText:c,images:u,warnings:l}=Fr(i.prompt),h=c.slice(0,200),f=[...mt({temperature:i.temperature,topP:i.topP,topK:i.topK,maxOutputTokens:i.maxOutputTokens,presencePenalty:i.presencePenalty,frequencyPenalty:i.frequencyPenalty,stopSequences:i.stopSequences,seed:i.seed,tools:i.tools,toolChoice:i.toolChoice}),...l??[]];this.logger.debug(`[codex-cli] Converted ${i.prompt.length} messages (${u.length} images) for streaming, response format: ${i.responseFormat?.type??"none"}`);let g=await k({provider:this.provider,providerOptions:i.providerOptions,schema:Wr}),y=this.mergeSettings(g),v=i.reasoning;if(v!==void 0&&v!=="provider-default"&&g?.reasoningEffort===void 0)if(Object.hasOwn(Vr,v))y={...y,reasoningEffort:v};else f.push({type:"unsupported",feature:"reasoning",details:`Codex CLI does not support reasoning effort '${v}'; it will be ignored.`});let x=i.responseFormat?.type==="json"?{type:"json",schema:i.responseFormat.schema}:void 0,{cmd:R,args:T,env:E,cwd:A,lastMessagePath:O,lastMessageIsTemp:P,schemaPath:q,tempImagePaths:S}=this.buildArgs(u,x,y);return this.logger.debug(`[codex-cli] Executing Codex CLI for streaming: ${R} with ${T.length} arguments`),{stream:new ReadableStream({start:(M)=>{let _=Date.now(),U=st(R,T,{env:E,cwd:A,stdio:["pipe","pipe","pipe"]});U.stdin.write(c),U.stdin.end(),M.enqueue({type:"stream-start",warnings:f});let D="",ae="",K="",be=new Map,de=!1,Le,Z,ee=()=>{if(!P||!O)return;try{ne(O,{force:!0})}catch{}try{ne(Fe(O),{recursive:!0,force:!0})}catch{}},we=()=>{if(q)try{let B=Fe(q);ne(B,{recursive:!0,force:!0})}catch{}if(S?.length)Ee(S)},ce=(B={})=>{M.enqueue({type:"response-metadata",id:xe(),timestamp:new Date,modelId:this.modelId,...Object.keys(B).length?{providerMetadata:{"codex-cli":B}}:{}})},Jt=(B)=>{let j=B.item;if(!j)return;if(B.type==="item.completed"&&Hr(this.getItemType(j))&&typeof j.text==="string"){ae=j.text,this.logger.debug(`[codex-cli] Received assistant message, length: ${j.text.length}`);return}let F=this.getToolName(j);if(!F)return;this.logger.debug(`[codex-cli] Tool detected: ${F}, item type: ${this.getItemType(j)}`);let H=typeof j.id==="string"&&j.id.length>0?j.id:xe(),z=be.get(H),V=this.buildToolInputPayload(j);if(!z)z={toolCallId:H,toolName:F,inputPayload:V,hasEmittedCall:!1},be.set(H,z);else if(z.toolName=F,V!==void 0)z.inputPayload=V;if(!z.hasEmittedCall)this.logger.debug(`[codex-cli] Emitting tool invocation: ${z.toolName}`),this.emitToolInvocation(M,z.toolCallId,z.toolName,z.inputPayload),z.hasEmittedCall=!0;if(B.type==="item.completed"){let{result:Kt,metadata:Gt}=this.buildToolResultPayload(j);this.logger.debug(`[codex-cli] Tool completed: ${z.toolName}`),this.emitToolResult(M,z.toolCallId,z.toolName,j,Kt,Gt),be.delete(H)}},Ie=()=>{U.kill("SIGTERM")};if(i.abortSignal){if(i.abortSignal.aborted){U.on("close",ee),U.on("error",ee),U.kill("SIGTERM"),we(),ee(),M.error(i.abortSignal.reason??Error("Request aborted"));return}i.abortSignal.addEventListener("abort",Ie,{once:!0})}let Zt=(B)=>{let j=Date.now()-_;if(B!==0){this.logger.error(`[codex-cli] Stream process exited with code ${B} after ${j}ms`),M.error(he({message:`Codex CLI exited with code ${B}`,exitCode:B??void 0,stderr:D,promptExcerpt:h}));return}if(Z){this.logger.error(`[codex-cli] Stream failed: ${Z}`),M.error(he({message:Z,stderr:D,promptExcerpt:h}));return}let F=ae;if(!F&&O)try{let V=Yt(O,"utf8");if(V)F=V.trim()}catch{}if(F){let V=xe();M.enqueue({type:"text-start",id:V}),M.enqueue({type:"text-delta",id:V,delta:F}),M.enqueue({type:"text-end",id:V})}let H=Le??fe(),z=(H.inputTokens.total??0)+(H.outputTokens.total??0);this.logger.info(`[codex-cli] Stream completed - Session: ${this.sessionId??"N/A"}, Duration: ${j}ms, Tokens: ${z}`),this.logger.debug(`[codex-cli] Token usage - Input: ${H.inputTokens.total??0}, Output: ${H.outputTokens.total??0}, Total: ${z}`),M.enqueue({type:"finish",finishReason:cr(void 0),usage:H}),M.close()},Be=(B)=>{let j=this.parseExperimentalJsonEvent(B);if(!j)return;if(this.logger.debug(`[codex-cli] Stream event: ${j.type??"unknown"}`),j.type==="thread.started"&&typeof j.thread_id==="string"){if(this.sessionId=j.thread_id,this.logger.debug(`[codex-cli] Stream session started: ${this.sessionId}`),!de)de=!0,ce();return}if(j.type==="session.created"&&typeof j.session_id==="string"){if(this.sessionId=j.session_id,this.logger.debug(`[codex-cli] Stream session created: ${this.sessionId}`),!de)de=!0,ce();return}if(j.type==="turn.completed"){let F=this.extractUsage(j);if(F)Le=F;return}if(j.type==="turn.failed"){Z=(j.error&&typeof j.error.message==="string"&&j.error.message||(typeof j.message==="string"?j.message:void 0))??Z??"Codex turn failed",this.logger.error(`[codex-cli] Stream turn failed: ${Z}`),ce({error:Z});return}if(j.type==="error"){let H=(typeof j.message==="string"?j.message:void 0)??"Codex error";Z=Z??H,this.logger.error(`[codex-cli] Stream error event: ${H}`),ce({error:H});return}if(j.type&&j.type.startsWith("item."))Jt(j)};U.stderr.on("data",(B)=>D+=String(B)),U.stdout.setEncoding("utf8"),U.stdout.on("data",(B)=>{let j=(K+B).split(/\r?\n/);K=j.pop()??"";for(let F of j){if(!F)continue;Be(F)}}),U.on("error",(B)=>{if(this.logger.error(`[codex-cli] Stream spawn error: ${String(B)}`),i.abortSignal)i.abortSignal.removeEventListener("abort",Ie);we(),ee(),M.error(this.handleSpawnError(B,h))}),U.on("close",(B)=>{if(i.abortSignal)i.abortSignal.removeEventListener("abort",Ie);we(),setImmediate(()=>{try{if(K)Be(K),K="";Zt(B)}finally{ee()}})})},cancel:()=>{}}),request:{body:c}}}};function Kr(i={}){let c=oe(i.defaultSettings?.logger);if(i.defaultSettings){let h=He(i.defaultSettings);if(!h.valid)throw Error(`Invalid default settings: ${h.errors.join(", ")}`);for(let f of h.warnings)c.warn(`Codex CLI Provider: ${f}`)}let u=(h,f={})=>{let g={...i.defaultSettings,...f},y=He(g);if(!y.valid)throw Error(`Invalid settings: ${y.errors.join(", ")}`);for(let v of y.warnings)c.warn(`Codex CLI: ${v}`);return new Zr({id:h,settings:g})},l=Object.assign(function(h,f){if(new.target)throw Error("The Codex CLI provider function cannot be called with new.");return u(h,f)},{specificationVersion:"v4"});return l.languageModel=u,l.chat=u,l.embeddingModel=(h)=>{throw new ve({modelId:h,modelType:"embeddingModel"})},l.imageModel=(h)=>{throw new ve({modelId:h,modelType:"imageModel"})},l}var Zs=Kr();function Gr(i){switch(i.type){case"text":return{type:"text",text:i.text,text_elements:[]};case"image":return{type:"image",url:i.imageUrl,imageUrl:i.imageUrl};case"localImage":return{type:"localImage",path:i.path};default:throw Error(`Unsupported input type: ${String(i)}`)}}var Qr=class{threadId;modelId;client;defaultTurnParams;requestHandlers;autoApprove;currentTurnId=null;active=!1;constructor(i){this.threadId=i.threadId,this.modelId=i.modelId,this.client=i.client,this.defaultTurnParams=i.defaultTurnParams??{},this.requestHandlers=i.requestHandlers??{},this.autoApprove=i.autoApprove}get turnId(){return this.currentTurnId}isTurnCompleted(i){return this.client.hasTurnCompleted?.(i)??!1}refreshActiveState(){if(!this.active||!this.currentTurnId)return;if(this.isTurnCompleted(this.currentTurnId))this.active=!1}isActive(){return this.refreshActiveState(),this.active}setTurnId(i){this.currentTurnId=i,this.active=!this.isTurnCompleted(i)}setInactive(i){if(i&&this.currentTurnId&&i!==this.currentTurnId)return;this.active=!1}async injectMessage(i){let c=typeof i==="string"?[{type:"text",text:i}]:i;if(c.length===0)return;let u=c.map(Gr),l=await this.client.withThreadLock(this.threadId,async()=>{let g=this.client.registerRequestContext(this.threadId,{handlers:this.requestHandlers,autoApprove:this.autoApprove});try{let y=await this.client.turnStart({threadId:this.threadId,input:u,model:this.modelId,...this.defaultTurnParams});return this.client.bindRequestContext(g,String(y.turn.id)),y}catch(y){throw this.client.clearRequestContext(g),y}}),h=String(l.turn.id),f=this.isTurnCompleted(h);this.currentTurnId=h,this.active=!f}async interrupt(){if(this.refreshActiveState(),!this.active||!this.currentTurnId)return;let i=this.currentTurnId;if(await this.client.turnInterrupt({threadId:this.threadId,turnId:i}),this.currentTurnId===i)this.active=!1}},Xr=class{activeToolNames=new Map;activeToolStarts=new Map;stats={totalCalls:0,totalDurationMs:0,byType:{exec:0,patch:0,mcp:0,web_search:0,other:0}};start(i,c){this.activeToolNames.set(i,c),this.activeToolStarts.set(i,Date.now())}get(i){return this.activeToolNames.get(i)}resolve(i,c){return this.activeToolNames.get(i)??c}complete(i,c,u){let l=this.resolve(i,c),h=this.activeToolStarts.get(i),f=h!==void 0?Math.max(0,Date.now()-h):void 0;return this.recordCompletion(l.toolName,u??f),this.activeToolNames.delete(i),this.activeToolStarts.delete(i),l}getStats(){return{totalCalls:this.stats.totalCalls,totalDurationMs:this.stats.totalDurationMs,byType:{...this.stats.byType}}}toolTypeFromName(i){if(i==="exec")return"exec";if(i==="patch")return"patch";if(i==="web_search")return"web_search";if(i.startsWith("mcp__"))return"mcp";return"other"}recordCompletion(i,c){if(this.stats.totalCalls+=1,this.stats.byType[this.toolTypeFromName(i)]+=1,typeof c==="number"&&Number.isFinite(c)&&c>=0)this.stats.totalDurationMs+=c}};function $t(i){return i.toLowerCase()}function Je(i){let c=$t(i.type);if(c==="commandexecution")return{toolName:"exec",dynamic:!0};if(c==="filechange")return{toolName:"patch",dynamic:!0};if(c==="mcptoolcall"){let u=typeof i.server==="string"?i.server||"server":"server",l=typeof i.tool==="string"?i.tool||"tool":"tool";return{toolName:`mcp__${u}__${l}`,dynamic:!0}}if(c==="dynamictoolcall"){let u="tool"in i&&typeof i.tool==="string"&&i.tool?i.tool:"tool",l="namespace"in i&&typeof i.namespace==="string"&&i.namespace?i.namespace:void 0;return{toolName:l?`${l}__${u}`:u,dynamic:!0}}if(c==="websearch")return{toolName:"web_search",dynamic:!0};return}function Ze(i){return i.inputTokens>0||i.outputTokens>0}function Yr(i,c,u){if(!c||!u)return Ze(i)?i:void 0;let l=(f,g)=>Math.max(0,f-(g??0)),h={totalTokens:l(c.totalTokens,u.totalTokens),inputTokens:l(c.inputTokens,u.inputTokens),cachedInputTokens:l(c.cachedInputTokens,u.cachedInputTokens),outputTokens:l(c.outputTokens,u.outputTokens),reasoningOutputTokens:l(c.reasoningOutputTokens,u.reasoningOutputTokens)};if(typeof c.cacheWriteInputTokens==="number")h.cacheWriteInputTokens=l(c.cacheWriteInputTokens,u.cacheWriteInputTokens);return Ze(h)?h:void 0}function en(i){let c,u=!1,l=(g)=>(y)=>{if(!i.isSameTurn(y)||typeof y.delta!=="string")return;let v=typeof y.itemId==="string"?y.itemId:C();i.reasoningItemIdsWithDelta.add(v),i.emitter.emitReasoningDelta(y.delta,g,v)},h=(g)=>{if(!i.isSameTurn(g))return;if(!g.item||typeof g.item!=="object")return;let y=g.item,v=$t(y.type);if(v==="agentmessage"){let E=typeof y.id==="string"?y.id:C(),A=y.text;if(!i.textItemIdsWithDelta.has(E)&&typeof A==="string"&&A.length>0)i.emitter.emitTextDelta(A,E);return}if(v==="reasoning"){let E=typeof y.id==="string"?y.id:C();if(!i.reasoningItemIdsWithDelta.has(E)){let{summary:A,content:O}=y;if(Array.isArray(A)&&A.length>0)i.emitter.emitReasoningDelta(A.join(`
13
+ `),!0,E);if(typeof A==="string"&&A.length>0)i.emitter.emitReasoningDelta(A,!0,E);if(Array.isArray(O)&&O.length>0)i.emitter.emitReasoningDelta(O.join(`
14
+ `),!1,E);if(typeof O==="string"&&O.length>0)i.emitter.emitReasoningDelta(O,!1,E)}return}let x=Je(y);if(!x)return;let R=typeof y.id==="string"?y.id:C(),T=i.toolTracker.complete(R,x,typeof y.durationMs==="number"?y.durationMs:void 0);i.emitter.emitToolResult(R,T.toolName,y,T.dynamic,y.status==="failed")},f=(g)=>(y)=>{if(!i.isSameTurn(y)||typeof y.delta!=="string")return;let v=typeof y.itemId==="string"?y.itemId:C(),x=i.toolTracker.get(v);i.emitter.emitToolOutputDelta(v,x?.toolName??g,y.delta,x?.dynamic??!0)};return{"item/agentMessage/delta":(g)=>{if(!i.isSameTurn(g)||typeof g.delta!=="string")return;let y=typeof g.itemId==="string"?g.itemId:C();i.textItemIdsWithDelta.add(y),i.emitter.emitTextDelta(g.delta,y)},reasoningTextDelta:l(!1),"item/reasoning/textDelta":l(!1),reasoningSummaryTextDelta:l(!0),"item/reasoning/summaryTextDelta":l(!0),"item/started":(g)=>{if(!i.isSameTurn(g))return;if(!g.item||typeof g.item!=="object")return;let y=g.item,v=Je(y);if(!v)return;let x=typeof y.id==="string"?y.id:C();i.toolTracker.start(x,v),i.emitter.emitToolCall(x,v.toolName,ht(y),v.dynamic)},"item/completed":h,"item/commandExecution/outputDelta":f("exec"),"item/fileChange/outputDelta":f("patch"),"thread/tokenUsage/updated":(g)=>{if(!i.isSameTurn(g))return;let y=g,v=y.tokenUsage?.last;if(!v)return;let x=y.tokenUsage?.total;if(!u){u=!0;let E=i.getBoundTurnId()??y.turnId;c=typeof E==="string"?i.getTokenUsageTotalBeforeTurn(E):void 0}let R=Yr(v,x,c);if(x)c=x;if(!R)return;let T=typeof R.cacheWriteInputTokens==="number"?R.cacheWriteInputTokens:void 0;i.onUsage({inputTokens:{total:R.inputTokens,noCache:Math.max(0,R.inputTokens-R.cachedInputTokens-(T??0)),cacheRead:R.cachedInputTokens,cacheWrite:T},outputTokens:{total:R.outputTokens,text:void 0,reasoning:R.reasoningOutputTokens},raw:{...R}})},"turn/completed":(g)=>{if(!g.turn||typeof g.turn!=="object")return;let y=g.turn,v=i.getBoundTurnId();if(v&&y.id!==v)return;i.onTurnCompleted(y)},error:(g)=>{if(!i.isSameTurn(g))return;if(g.willRetry===!0)return;let y=g.error;if(y&&typeof y==="object"&&typeof y.message==="string")i.onError(Error(y.message))}}}function tn(i){return{"item/commandExecution/requestApproval":(c)=>{if(!i.isSameTurn(c))return;let u=typeof c.itemId==="string"?c.itemId:C();i.emitter.emitApprovalRequest(u)},"item/fileChange/requestApproval":(c)=>{if(!i.isSameTurn(c))return;let u=typeof c.itemId==="string"?c.itemId:C();i.emitter.emitApprovalRequest(u)}}}var rn=class{client;emitter;threadId;onUsage;onThreadTurnCompleted;onTurnCompleted;onError;turnId;bufferedTurnScopedEvents=[];toolTracker=new Xr;textItemIdsWithDelta=new Set;reasoningItemIdsWithDelta=new Set;notificationHandlers;serverRequestHandlers;notificationListener;serverRequestListener;constructor(i){this.client=i.client,this.emitter=i.emitter,this.threadId=i.threadId,this.onUsage=i.onUsage,this.onThreadTurnCompleted=i.onThreadTurnCompleted,this.onTurnCompleted=i.onTurnCompleted,this.onError=i.onError,this.notificationHandlers=en({emitter:this.emitter,toolTracker:this.toolTracker,textItemIdsWithDelta:this.textItemIdsWithDelta,reasoningItemIdsWithDelta:this.reasoningItemIdsWithDelta,onUsage:this.onUsage,onTurnCompleted:this.onTurnCompleted,onError:this.onError,isSameTurn:(c)=>this.isSameTurn(c),getBoundTurnId:()=>this.turnId,getTokenUsageTotalBeforeTurn:(c)=>this.client.getTokenUsageTotalBeforeTurn?.(this.threadId,c)}),this.serverRequestHandlers=tn({emitter:this.emitter,isSameTurn:(c)=>this.isSameTurn(c)})}setTurnId(i){this.turnId=i,this.flushBufferedTurnScopedEvents()}getToolExecutionStats(){return this.toolTracker.getStats()}subscribe(){return this.notificationListener=(i,c)=>{if(!this.isSameThread(c))return;if(i==="turn/completed"&&c.turn&&typeof c.turn==="object")this.onThreadTurnCompleted?.(c.turn);if(this.bufferTurnScopedEventBeforeBinding({kind:"notification",method:i,params:c}))return;this.emitter.emitRaw(i,c),this.handleNotification(i,c)},this.client.on("notification",this.notificationListener),this.serverRequestListener=(i,c,u)=>{if(!this.isSameThread(c))return;if(this.bufferTurnScopedEventBeforeBinding({kind:"server-request",method:i,params:c,id:u}))return;this.emitter.emitRaw(i,c,u),this.handleServerRequest(i,c)},this.client.on("server-request",this.serverRequestListener),()=>this.unsubscribe()}unsubscribe(){if(this.notificationListener)this.client.off("notification",this.notificationListener),this.notificationListener=void 0;if(this.serverRequestListener)this.client.off("server-request",this.serverRequestListener),this.serverRequestListener=void 0;this.bufferedTurnScopedEvents=[]}isSameThread(i){return(typeof i.threadId==="string"?i.threadId:void 0)===this.threadId}getTurnIdFromParams(i){let c=i.turn&&typeof i.turn==="object"?i.turn:void 0;return typeof i.turnId==="string"?i.turnId:typeof c?.id==="string"?c.id:void 0}bufferTurnScopedEventBeforeBinding(i){if(this.turnId)return!1;if(this.getTurnIdFromParams(i.params)===void 0)return!1;return this.bufferedTurnScopedEvents.push(i),!0}flushBufferedTurnScopedEvents(){if(!this.turnId||this.bufferedTurnScopedEvents.length===0)return;let i=this.bufferedTurnScopedEvents;this.bufferedTurnScopedEvents=[];for(let c of i){if(!this.isSameThread(c.params))continue;if(this.getTurnIdFromParams(c.params)!==this.turnId)continue;if(c.kind==="notification")this.emitter.emitRaw(c.method,c.params),this.handleNotification(c.method,c.params);else this.emitter.emitRaw(c.method,c.params,c.id),this.handleServerRequest(c.method,c.params)}}isSameTurn(i){let c=this.getTurnIdFromParams(i);if(!this.turnId)return c===void 0;return c===void 0||c===this.turnId}handleNotification(i,c){if(!this.isSameThread(c))return;let u=this.notificationHandlers[i];if(!u)return;u(c)}handleServerRequest(i,c){if(!this.isSameThread(c))return;let u=this.serverRequestHandlers[i];if(!u)return;u(c)}},nn=class{constructor(i,c){this.controller=i,this.options=c,this.jsonModeLastTextBlockOnly=Boolean(c.jsonModeLastTextBlockOnly)}controller;options;textId;reasoningId;jsonModeLastTextBlockOnly;bufferedCurrentJsonText="";lastCompletedJsonTextId;lastCompletedJsonText="";closed=!1;safeEnqueue(i){if(this.closed)return;try{this.controller.enqueue(i)}catch{this.closed=!0}}emitStreamStart(i){this.safeEnqueue({type:"stream-start",warnings:i})}emitResponseMetadata(){this.safeEnqueue({type:"response-metadata",id:C(),timestamp:new Date,modelId:this.options.modelId})}emitRaw(i,c,u){if(!this.options.includeRawChunks)return;this.safeEnqueue({type:"raw",rawValue:{method:i,params:c,id:u}})}emitTextDelta(i,c){if(this.jsonModeLastTextBlockOnly){let l=c??this.textId??C();if(this.textId&&this.textId!==l)this.lastCompletedJsonTextId=this.textId,this.lastCompletedJsonText=this.bufferedCurrentJsonText,this.textId=void 0,this.bufferedCurrentJsonText="";if(!this.textId)this.textId=l,this.bufferedCurrentJsonText="";this.bufferedCurrentJsonText=`${this.bufferedCurrentJsonText}${i}`;return}let u=c??this.textId??C();if(this.textId&&this.textId!==u)this.safeEnqueue({type:"text-end",id:this.textId}),this.textId=void 0;if(!this.textId)this.textId=u,this.safeEnqueue({type:"text-start",id:this.textId});this.safeEnqueue({type:"text-delta",id:this.textId,delta:i})}emitReasoningDelta(i,c=!1,u){let l=u??this.reasoningId??C();if(this.reasoningId&&this.reasoningId!==l)this.safeEnqueue({type:"reasoning-end",id:this.reasoningId}),this.reasoningId=void 0;if(!this.reasoningId)this.reasoningId=l,this.safeEnqueue({type:"reasoning-start",id:this.reasoningId});this.safeEnqueue({type:"reasoning-delta",id:this.reasoningId,delta:i,...c?{providerMetadata:{"codex-app-server":{isSummary:!0}}}:{}})}emitToolCall(i,c,u,l){if(this.safeEnqueue({type:"tool-input-start",id:i,toolName:c,providerExecuted:!0,...l?{dynamic:!0}:{}}),u)this.safeEnqueue({type:"tool-input-delta",id:i,delta:u});this.safeEnqueue({type:"tool-input-end",id:i}),this.safeEnqueue({type:"tool-call",toolCallId:i,toolName:c,input:u,providerExecuted:!0,...l?{dynamic:!0}:{}})}emitToolOutputDelta(i,c,u,l){this.safeEnqueue({type:"tool-result",toolCallId:i,toolName:c,preliminary:!0,result:{type:"output-delta",delta:u},...l?{dynamic:!0}:{}})}emitToolResult(i,c,u,l,h){this.safeEnqueue({type:"tool-result",toolCallId:i,toolName:c,result:u??{},...l?{dynamic:!0}:{},...h?{isError:!0}:{}})}emitApprovalRequest(i){this.safeEnqueue({type:"tool-approval-request",approvalId:i,toolCallId:i})}emitFinish(i,c,u){if(this.jsonModeLastTextBlockOnly){if(this.textId)this.lastCompletedJsonTextId=this.textId,this.lastCompletedJsonText=this.bufferedCurrentJsonText,this.textId=void 0,this.bufferedCurrentJsonText="";let l=this.lastCompletedJsonTextId;if(l){let h=this.lastCompletedJsonText;if(this.safeEnqueue({type:"text-start",id:l}),h.length>0)this.safeEnqueue({type:"text-delta",id:l,delta:h});this.safeEnqueue({type:"text-end",id:l})}this.lastCompletedJsonTextId=void 0,this.lastCompletedJsonText=""}else if(this.textId)this.safeEnqueue({type:"text-end",id:this.textId});if(this.reasoningId)this.safeEnqueue({type:"reasoning-end",id:this.reasoningId});this.safeEnqueue({type:"finish",finishReason:i,usage:c,...u?{providerMetadata:u}:{}})}close(){if(this.closed)return;this.closed=!0;try{this.controller.close()}catch{}}error(i){if(this.closed)return;this.closed=!0;try{this.controller.error(i)}catch{}}},sn=5000;function on(i,c){return new Promise((u)=>{let l=!1,h=setTimeout(()=>{if(l)return;l=!0,u(void 0)},c);i.then((f)=>{if(l)return;l=!0,clearTimeout(h),u(f)}).catch(()=>{if(l)return;l=!0,clearTimeout(h),u(void 0)})})}function an(i){let c=String(i?.message??i);return/thread.*not found/i.test(c)}function dn(i){return Error(`Thread '${i}' not found after server restart. Create a new thread by omitting threadId.`)}function cn(i){switch(i.status){case"completed":return{unified:"stop",raw:"completed"};case"interrupted":return{unified:"stop",raw:"interrupted"};case"failed":{let c=i.error?.codexErrorInfo;if(c==="contextWindowExceeded")return{unified:"length",raw:"context_window_exceeded"};if(c==="usageLimitExceeded")return{unified:"length",raw:"usage_limit_exceeded"};return{unified:"error",raw:i.error?.message??"failed"}}default:return{unified:"other",raw:i.status}}}var un=class{constructor(i){this.options=i}options;state="created";usage=fe();turnId;requestContextId;cleanedUp=!1;pendingCancelReason;cancelBeforeTurnId=!1;pendingAbortReason;interruptWaitPromise;cancelWaitPromise;settleTurn;turnCompletionPromise=new Promise(()=>{return});emitter;router;unsubscribeRouter;onAbort;isTerminalState(){return this.state==="closed"||this.state==="errored"||this.state==="finishing"}isClosedState(){return this.state==="closed"}async start(i){if(this.state!=="created")return;if(this.state="starting",this.turnCompletionPromise=new Promise((c,u)=>{this.settleTurn={resolve:c,reject:u}}),this.emitter=new nn(i,{modelId:this.options.modelId,threadId:this.options.threadId,includeRawChunks:this.options.includeRawChunks,jsonModeLastTextBlockOnly:this.options.jsonModeLastTextBlockOnly}),this.emitter.emitStreamStart(this.options.warnings),this.emitter.emitResponseMetadata(),this.router=new rn({client:this.options.client,emitter:this.emitter,threadId:this.options.threadId,onUsage:(c)=>{this.usage=dr(this.usage,c)},onThreadTurnCompleted:(c)=>{this.options.session?.setInactive(c.id)},onTurnCompleted:(c)=>{this.settleTurn?.resolve(c)},onError:(c)=>{this.settleTurn?.reject(c)}}),this.unsubscribeRouter=this.router.subscribe(),this.attachAbortSignal(),this.pendingCancelReason!==void 0){if(await this.requestCancel(this.pendingCancelReason),this.isClosedState())return}if(this.pendingAbortReason!==void 0){await this.failWithError(this.pendingAbortReason);return}try{this.state="awaiting_turn_id";let c=this.options.shouldSerializeTurnStart?await this.options.client.withThreadLock(this.options.threadId,async()=>await this.startTurnWithContext()):await this.startTurnWithContext();if(this.turnId=c.turn.id,this.router.setTurnId(this.turnId),this.options.session?.setTurnId(this.turnId),this.isClosedState()){if(this.pendingCancelReason!==void 0&&this.cancelBeforeTurnId)await this.requestCancel(this.pendingCancelReason);return}if(this.state="running",this.pendingCancelReason!==void 0){await this.requestCancel(this.pendingCancelReason);return}if(this.pendingAbortReason!==void 0)throw await this.interruptAndAwaitCompletion(),this.pendingAbortReason;let u=await this.turnCompletionPromise;if(this.pendingCancelReason!==void 0){this.finishSilently();return}if(this.pendingAbortReason!==void 0)throw this.pendingAbortReason;if(this.isTerminalState())return;this.state="finishing";let l=this.router.getToolExecutionStats();this.emitter.emitFinish(cn(u),this.usage,{"codex-app-server":{threadId:this.options.threadId,...this.turnId?{turnId:this.turnId}:{},toolExecutionStats:l}}),this.emitter.close(),this.cleanup(),this.state="closed"}catch(c){if(this.pendingCancelReason!==void 0){if(this.turnId)await this.requestCancel(this.pendingCancelReason);else this.finishSilently();return}if(this.options.hadInitialThreadId&&an(c)){if(this.options.threadResolution.persistent&&!this.options.threadResolution.explicit)this.options.clearPersistentThreadState(this.options.threadId);await this.failWithError(dn(this.options.threadId));return}if(this.pendingAbortReason!==void 0&&this.turnId)await this.interruptAndAwaitCompletion();await this.failWithError(c)}}async cancel(i){switch(this.pendingCancelReason=i??this.pendingCancelReason??Error("Stream canceled"),this.state){case"closed":case"errored":case"finishing":return;case"interrupting":await this.cancelWaitPromise;return;default:await this.requestCancel(i)}}async startTurnWithContext(){this.requestContextId=this.options.client.registerRequestContext(this.options.threadId,{handlers:this.options.requestHandlers??{},autoApprove:this.options.autoApprove});try{let i=await this.options.client.turnStart(this.options.turnStartParams);return this.options.client.bindRequestContext(this.requestContextId,i.turn.id),i}catch(i){if(this.requestContextId)this.options.client.clearRequestContext(this.requestContextId),this.requestContextId=void 0;throw i}}attachAbortSignal(){let i=this.options.abortSignal;if(!i)return;if(i.aborted){this.pendingAbortReason=i.reason??Error("Request aborted");return}this.onAbort=()=>{if(this.pendingAbortReason=i.reason??Error("Request aborted"),!this.turnId)return;(async()=>{await this.interruptAndAwaitCompletion(),await this.failWithError(this.pendingAbortReason)})()},i.addEventListener("abort",this.onAbort,{once:!0})}async requestCancel(i){if(this.pendingCancelReason=i??this.pendingCancelReason??Error("Stream canceled"),!this.turnId){this.cancelBeforeTurnId=this.state==="starting"||this.state==="awaiting_turn_id",this.finishSilently();return}if(this.isTerminalState()&&!this.cancelBeforeTurnId)return;if(!this.cancelWaitPromise)this.cancelWaitPromise=(async()=>{if(this.state="interrupting",this.cancelBeforeTurnId)await this.options.client.turnInterrupt({threadId:this.options.threadId,turnId:this.turnId}).catch(()=>{return}),this.cancelBeforeTurnId=!1;else await this.interruptAndAwaitCompletion();this.finishSilently()})();await this.cancelWaitPromise}async interruptAndAwaitCompletion(){if(!this.turnId)return;if(!this.interruptWaitPromise)this.interruptWaitPromise=(async()=>{await this.options.client.turnInterrupt({threadId:this.options.threadId,turnId:this.turnId}).catch(()=>{return}),await on(this.turnCompletionPromise.then(()=>{return}),sn)})();await this.interruptWaitPromise}async failWithError(i){if(this.isTerminalState())return;this.state="errored",this.emitter?.error(i),this.cleanup()}finishSilently(){if(this.isTerminalState())return;this.cleanup(),this.state="closed"}cleanup(){if(this.cleanedUp)return;if(this.cleanedUp=!0,this.unsubscribeRouter?.(),this.unsubscribeRouter=void 0,this.turnId)this.options.client.clearRequestContextForTurn(this.turnId);if(this.requestContextId)this.options.client.clearRequestContext(this.requestContextId),this.requestContextId=void 0;if(this.options.abortSignal&&this.onAbort)this.options.abortSignal.removeEventListener("abort",this.onAbort);this.onAbort=void 0,this.options.releaseResources()}};function ln(i){return{threadId:i.threadId,input:i.input,cwd:i.settings.cwd,approvalPolicy:i.settings.approvalPolicy,sandboxPolicy:i.settings.sandboxPolicy,model:i.modelId,effort:i.settings.effort,summary:i.settings.summary,personality:i.settings.personality,...i.responseFormat?.type==="json"&&i.responseFormat.schema?{outputSchema:se(i.responseFormat.schema)}:{}}}var pn=1048576;function _t(i){let c=i.trim();return(c.startsWith("[")&&c.endsWith("]")?c.slice(1,-1):c).toLowerCase()}function hn(i){let c=_t(i);return c==="localhost"||c==="::1"||c==="0:0:0:0:0:0:0:1"||c.startsWith("127.")}function fn(i){let c=_t(i);return c.includes(":")?`[${c}]`:c}function mn(i){if(typeof i==="string")return i;let c=JSON.stringify(i);if(c!==void 0)return c;return String(i)}async function gn(i){let{name:c,tools:u,port:l=0,host:h="127.0.0.1",allowNonLoopbackHost:f=!1}=i;if(!hn(h)&&!f)throw Error(`Refusing to bind local MCP server to non-loopback host '${h}'. Set allowNonLoopbackHost: true to override.`);let g=new Map(u.map((P)=>[P.name,P])),y=Xt(32).toString("hex"),v=`Bearer ${y}`,x=async(P)=>{let q=P.id;if(P.method==="initialize")return{jsonrpc:"2.0",id:q,result:{protocolVersion:"2024-11-05",capabilities:{tools:{}},serverInfo:{name:c,version:"1.0.0"}}};if(P.method==="tools/list")return{jsonrpc:"2.0",id:q,result:{tools:u.map((S)=>({name:S.name,description:S.description,inputSchema:S.inputSchema}))}};if(P.method==="tools/call"){let S=typeof P.params?.name==="string"?P.params.name:void 0,I=P.params?.arguments;if(!S||!g.has(S))return{jsonrpc:"2.0",id:q,error:{code:-32602,message:`Unknown tool: ${String(S)}`}};let M=g.get(S);try{let _=await M.execute(I);return{jsonrpc:"2.0",id:q,result:{content:[{type:"text",text:mn(_)}]}}}catch(_){return{jsonrpc:"2.0",id:q,error:{code:-32603,message:_ instanceof Error?_.message:String(_)}}}}if(P.method==="notifications/initialized")return{jsonrpc:"2.0",id:q,result:{}};return{jsonrpc:"2.0",id:q,error:{code:-32601,message:`Method not found: ${P.method}`}}},T=er((P,q)=>{(async()=>{if(P.method!=="POST"){q.writeHead(405,{"Content-Type":"application/json"}),q.end(JSON.stringify({error:"Method not allowed"}));return}let S=P.headers["content-type"];if(typeof S!=="string"||!S.includes("application/json")){q.writeHead(415,{"Content-Type":"application/json"}),q.end(JSON.stringify({error:"Unsupported media type"}));return}if(P.headers.authorization!==v){q.writeHead(401,{"Content-Type":"application/json","WWW-Authenticate":"Bearer"}),q.end(JSON.stringify({error:"Unauthorized"}));return}let M=[],_=0;for await(let ae of P){let K=ae;if(_+=K.length,_>pn){q.writeHead(413,{"Content-Type":"application/json"}),q.end(JSON.stringify({error:"Request body too large"}));return}M.push(K)}let U;try{U=JSON.parse(Buffer.concat(M).toString("utf8"))}catch{q.writeHead(400,{"Content-Type":"application/json"}),q.end(JSON.stringify({jsonrpc:"2.0",error:{code:-32700,message:"Parse error"}}));return}if(U.id===void 0){q.writeHead(202,{"Content-Type":"application/json"}),q.end();return}let D=await x(U);q.writeHead(200,{"Content-Type":"application/json"}),q.end(JSON.stringify(D))})()});await new Promise((P,q)=>{T.once("error",q),T.listen(l,h,()=>{T.off("error",q),P()})});let E=T.address();if(!E||typeof E==="string")throw Error("Failed to resolve local MCP server address");let A=E.port,O=`http://${fn(h)}:${A}`;return{config:{transport:"http",url:O,bearerToken:y},url:O,port:A,stop:async()=>{await new Promise((P,q)=>{T.close((S)=>{if(S){q(S);return}P()})})}}}var Ot=Symbol.for("ai-sdk-provider-codex-cli.sdkMcpServer");function Ks(i){let{name:c,cacheKey:u,tools:l}=i,h,f,g;return{[Ot]:!0,name:c,cacheKey:u?.trim()||void 0,tools:l,get _server(){return h},set _server(y){h=y},async _start(){while(!0){if(h)return h.config;if(f)return(await f).config;if(g){await g;continue}let y=(async()=>{let v=await gn({name:c,tools:l});return h=v,v})();f=y;try{return(await y).config}finally{if(f===y)f=void 0}}},async _stop(){if(g){await g;return}let y=(async()=>{if(f)await f.catch(()=>{return});let v=h;if(h=void 0,v)await v.stop()})();g=y;try{await y}finally{if(g===y)g=void 0;f=void 0}}}}function me(i){let c=typeof i==="object"&&i!==null?i[Ot]:void 0;return typeof i==="object"&&i!==null&&c===!0&&typeof i._start==="function"&&typeof i._stop==="function"}var yn={none:!0,minimal:!0,low:!0,medium:!0,high:!0,xhigh:!0,max:!0,ultra:!0};function vn(i){if(i.providerEffort!==void 0)return{effort:i.providerEffort};let{reasoning:c}=i;if(c===void 0||c==="provider-default")return{effort:i.defaultEffort};if(Object.hasOwn(yn,c))return{effort:c};return{effort:i.defaultEffort,warning:{type:"unsupported",feature:"reasoning",details:`Codex app-server does not support reasoning effort '${c}'; it will be ignored.`}}}function Tn(i){let c=String(i?.message??i);return/thread.*not found/i.test(c)}function bn(i){return Error(`Thread '${i}' not found after server restart. Create a new thread by omitting threadId.`)}function Ke(i){let c=i.sandboxPolicy;if(!c)return;if(typeof c==="string")return c;if(c.type==="readOnly")return"read-only";if(c.type==="workspaceWrite")return"workspace-write";if(c.type==="dangerFullAccess")return"danger-full-access";return}function Ge(i){let c=i.sandboxPolicy;if(!c)return;if(typeof c!=="string")return c;if(c==="read-only")return{type:"readOnly"};if(c==="workspace-write")return{type:"workspaceWrite"};if(c==="danger-full-access")return{type:"dangerFullAccess"};return}function wn(i,c){if(i===void 0)return;if(ye(i)){let u=pt(i);return c?.(`approvalPolicy:${i}`,`approvalPolicy '${i}' is deprecated (retired by Codex CLI 0.143 and rejected by app-server >= 0.144); sending '${u}' instead.`),u}if(typeof i==="object"&&i!==null&&"reject"in i){let{reject:u}=i;return c?.("approvalPolicy:reject","approvalPolicy { reject } is deprecated (removed from the Codex app-server protocol); sending the equivalent { granular } policy instead."),{granular:{sandbox_approval:!u.sandbox_approval,rules:!u.rules,mcp_elicitations:!u.mcp_elicitations,skill_approval:!0,request_permissions:!0}}}return i}function In(i,c){if(!i&&!c)return;return{...i??{},...c??{}}}function xn(i,c){if(!i&&!c)return;let u={};for(let[l,h]of Object.entries(i??{})){let f=Y(l);u[f]=h}if(!c)return u;for(let[l,h]of Object.entries(c)){let f=Y(l),g=u[f];if(!g||me(g)||me(h)){u[f]=h;continue}if(g.transport===h.transport)u[f]=ft(g,h);else u[f]=h}return u}var Sn=class{specificationVersion="v4";provider="codex-app-server";supportedUrls={};modelId;settings;client;logger;onSdkMcpServerUsed;onSdkMcpServerReleased;persistentThreadId;persistentThreadRawEventsEnabled;rawEventsByThreadId=new Map;persistentSession;persistentBootstrapLock=Promise.resolve();deprecationWarningsEmitted=new Set;constructor(i){this.modelId=i.id,this.settings=i.settings??{},this.client=i.client,this.onSdkMcpServerUsed=i.onSdkMcpServerUsed,this.onSdkMcpServerReleased=i.onSdkMcpServerReleased;let c=oe(this.settings.logger);if(this.logger=dt(c,this.settings.verbose??!1),!this.modelId||this.modelId.trim()==="")throw new ve({modelId:this.modelId,modelType:"languageModel"})}warnDeprecatedOnce(i,c){if(this.deprecationWarningsEmitted.has(i))return;this.deprecationWarningsEmitted.add(i),this.logger.warn(`[codex-app-server] ${c}`)}mapApprovalPolicy(i){return wn(i.approvalPolicy,(c,u)=>this.warnDeprecatedOnce(c,u))}mergeSettings(i){if(!i)return this.settings;let c={...this.settings,personality:i.personality??this.settings.personality,effort:i.effort??this.settings.effort,summary:i.summary??this.settings.summary,approvalPolicy:i.approvalPolicy??this.settings.approvalPolicy,sandboxPolicy:i.sandboxPolicy??this.settings.sandboxPolicy,baseInstructions:i.baseInstructions??this.settings.baseInstructions,developerInstructions:i.developerInstructions??this.settings.developerInstructions,autoApprove:i.autoApprove??this.settings.autoApprove,persistExtendedHistory:i.persistExtendedHistory??this.settings.persistExtendedHistory,threadMode:i.threadMode??this.settings.threadMode,resume:i.resume??this.settings.resume,includeRawChunks:i.includeRawChunks??this.settings.includeRawChunks,rmcpClient:i.rmcpClient??this.settings.rmcpClient,configOverrides:{...this.settings.configOverrides??{},...i.configOverrides??{}},serverRequests:In(this.settings.serverRequests,i.serverRequests),onSessionCreated:i.onSessionCreated??this.settings.onSessionCreated};return c.mcpServers=xn(this.settings.mcpServers,i.mcpServers),c}resolveThreadMode(i,c){return c?.threadMode??i.threadMode??"stateless"}resolveTargetThreadId(i,c){let u=this.resolveThreadMode(i,c),l=c?.threadId??c?.resume??i.resume;if(l)return{threadId:l,explicit:!0,persistent:u==="persistent"};if(u==="persistent"&&this.persistentThreadId)return{threadId:this.persistentThreadId,explicit:!1,persistent:!0};return{threadId:void 0,explicit:!1,persistent:u==="persistent"}}resolveIncludeRawChunks(i,c,u){return(i??u?.includeRawChunks??c.includeRawChunks)===!0}async resolveConfig(i,c){let u={},l=[];try{for(let[g,y]of Object.entries(i.mcpServers??{})){if(me(y)){let v=await y._start();this.onSdkMcpServerUsed?.(y,c),l.push(y),u[g]=v;continue}u[g]=y}}catch(g){if(c==="request")for(let y of l)this.onSdkMcpServerReleased?.(y);throw g}let f={...fr(Object.keys(u).length>0?u:void 0,i.rmcpClient),...i.configOverrides??{}};return{configOverrides:Object.keys(f).length>0?f:void 0,usedSdkMcpServers:l}}async buildUserInput(i,c){let u=[],l=[];if(i.trim().length>0)u.push({type:"text",text:i,text_elements:[]});for(let h of c){if(h.type==="remote"){u.push({type:"image",url:h.url,imageUrl:h.url});continue}try{let f=kt(h.data);l.push(f),u.push({type:"localImage",path:f})}catch(f){this.logger.warn(`[codex-app-server] Failed to write image to temp file: ${String(f)}`)}}return{input:u,tempImagePaths:l}}async startOrResumeThread(i){let{settings:c,providerOptions:u,configOverrides:l,developerInstructionsOverride:h,systemInstruction:f,includeRawChunks:g}=i,y=this.resolveTargetThreadId(c,u),v=async(R)=>(await this.client.threadStart({model:this.modelId,cwd:c.cwd,approvalPolicy:this.mapApprovalPolicy(c),sandbox:Ke(c),config:l,baseInstructions:c.baseInstructions,developerInstructions:h??f,personality:c.personality,ephemeral:R,experimentalRawEvents:g,persistExtendedHistory:c.persistExtendedHistory??!1})).thread.id,x=async()=>{let R=async(T)=>{try{await this.client.threadResume({threadId:T.threadId,model:this.modelId,cwd:c.cwd,approvalPolicy:this.mapApprovalPolicy(c),sandbox:Ke(c),config:l,baseInstructions:c.baseInstructions,developerInstructions:h??f,personality:c.personality,persistExtendedHistory:c.persistExtendedHistory??!1});let E=this.rawEventsByThreadId.get(T.threadId),A=E??(T.persistent&&this.persistentThreadId===T.threadId?this.persistentThreadRawEventsEnabled:void 0);if(E!==void 0)this.rememberThreadRawEvents(T.threadId,E);if(T.persistent)this.persistentThreadId=T.threadId,this.persistentThreadRawEventsEnabled=A;return{threadId:T.threadId,persistent:T.persistent,explicit:T.explicit,resumed:!0,rawEventsNegotiated:A}}catch(E){if(!Tn(E))throw E;if(T.persistent&&!T.explicit)this.clearPersistentThreadState(T.threadId);throw bn(T.threadId)}};if(!y.threadId&&y.persistent){if(this.persistentThreadId)return await R({threadId:this.persistentThreadId,persistent:!0,explicit:!1});let T=await v(!1);return this.rememberThreadRawEvents(T,g),this.persistentThreadId=T,this.persistentThreadRawEventsEnabled=g,{threadId:T,persistent:!0,explicit:!1,resumed:!1,rawEventsNegotiated:g}}if(!y.threadId){let T=await v(!y.persistent);if(this.rememberThreadRawEvents(T,g),y.persistent)this.persistentThreadId=T,this.persistentThreadRawEventsEnabled=g;return{threadId:T,persistent:y.persistent,explicit:!1,resumed:!1,rawEventsNegotiated:g}}return await R({threadId:y.threadId,persistent:y.persistent,explicit:y.explicit})};if(y.persistent&&!y.explicit)return await this.withPersistentBootstrapLock(x);return await x()}async withPersistentBootstrapLock(i){let c=this.persistentBootstrapLock,u,l=new Promise((f)=>{u=f}),h=c.then(()=>l);this.persistentBootstrapLock=h,await c;try{return await i()}finally{if(u?.(),this.persistentBootstrapLock===h)this.persistentBootstrapLock=Promise.resolve()}}rememberThreadRawEvents(i,c){if(this.rawEventsByThreadId.delete(i),this.rawEventsByThreadId.set(i,c),this.rawEventsByThreadId.size<=256)return;let u=this.rawEventsByThreadId.keys().next().value;if(typeof u==="string")this.rawEventsByThreadId.delete(u)}clearPersistentThreadState(i){if(i&&this.persistentThreadId&&this.persistentThreadId!==i)return;if(this.persistentThreadId=void 0,this.persistentThreadRawEventsEnabled=void 0,i)this.rawEventsByThreadId.delete(i);if(!i||this.persistentSession?.threadId===i)this.persistentSession=void 0}async createOrReuseSession(i){let{threadId:c,settings:u,providerOptions:l}=i,h=l?.onSessionCreated??u.onSessionCreated;if(!h)return;let f=this.resolveThreadMode(u,l)==="persistent";if(f&&this.persistentSession&&this.persistentSession.threadId===c)return this.persistentSession;let g=new Qr({threadId:c,modelId:this.modelId,client:this.client,defaultTurnParams:{cwd:u.cwd,approvalPolicy:this.mapApprovalPolicy(u),sandboxPolicy:Ge(u),effort:u.effort,summary:u.summary,personality:u.personality},requestHandlers:u.serverRequests??{},autoApprove:u.autoApprove});if(await h(g),f)this.persistentSession=g;return g}preparePrompt(i,c){let u=qt({prompt:i,mode:c?"persistent":"stateless"});return{promptText:u.text,images:[...u.localImages.map((l)=>({type:"local",data:l})),...u.remoteImageUrls.map((l)=>({type:"remote",url:l}))],warnings:u.warnings.map((l)=>l.type==="unsupported"?{type:"unsupported",feature:l.feature,details:l.details}:{type:"other",message:l.message}),systemInstruction:u.systemInstruction}}async doGenerate(i){let{stream:c,request:u}=await this.doStream(i),l=[],h=new Map,f=new Map,g,y,v={id:C(),timestamp:new Date,modelId:this.modelId},x=fe(),R={unified:"other",raw:void 0},T=[],E,A=(S,I)=>{let M=h.get(S);if(M){if(I)M.providerMetadata=I;return M}let _={type:"text",text:"",...I?{providerMetadata:I}:{}};return h.set(S,_),l.push(_),_},O=(S,I)=>{let M=f.get(S);if(M){if(I)M.providerMetadata=I;return M}let _={type:"reasoning",text:"",...I?{providerMetadata:I}:{}};return f.set(S,_),l.push(_),_},P=(S)=>{l.push(S)};for await(let S of c){if(S.type==="stream-start"){T=S.warnings;continue}if(S.type==="response-metadata"){v={id:S.id,timestamp:S.timestamp,modelId:S.modelId};continue}if(S.type==="text-start"){g=S.id,A(S.id,S.providerMetadata);continue}if(S.type==="text-delta"){let I=typeof S.id==="string"?S.id:g??"__default_text_block__";g=I;let M=A(I,S.providerMetadata);M.text=`${M.text}${S.delta}`;continue}if(S.type==="text-end"){let I=typeof S.id==="string"?S.id:g;if(I){let M=A(I,S.providerMetadata);if(S.providerMetadata)M.providerMetadata=S.providerMetadata}if(g===I)g=void 0;continue}if(S.type==="reasoning-start"){y=S.id,O(S.id,S.providerMetadata);continue}if(S.type==="reasoning-delta"){let I=typeof S.id==="string"?S.id:y??"__default_reasoning_block__";y=I;let M=O(I,S.providerMetadata);M.text=`${M.text}${S.delta}`;continue}if(S.type==="reasoning-end"){let I=typeof S.id==="string"?S.id:y;if(I){let M=O(I,S.providerMetadata);if(S.providerMetadata)M.providerMetadata=S.providerMetadata}if(y===I)y=void 0;continue}if(S.type==="file"){P(S);continue}if(S.type==="source"){P(S);continue}if(S.type==="tool-approval-request"){P(S);continue}if(S.type==="tool-call"){P(S);continue}if(S.type==="tool-result"){P(S);continue}if(S.type==="finish")x=S.usage,R=S.finishReason,E=S.providerMetadata}return{content:l.filter((S)=>{if(S.type==="text")return S.text.trim().length>0;if(S.type==="reasoning")return S.text.trim().length>0;return!0}),usage:x,finishReason:R,warnings:T,response:v,request:u,...E?{providerMetadata:E}:{}}}async doStream(i){let c=await k({provider:this.provider,providerOptions:i.providerOptions,schema:Cr}),u=this.mergeSettings(c),l=vn({reasoning:i.reasoning,providerEffort:c?.effort,defaultEffort:u.effort}),h=l.effort===u.effort?u:{...u,effort:l.effort},f=this.resolveThreadMode(h,c)==="persistent"?"provider":"request",g=this.resolveIncludeRawChunks(i.includeRawChunks,h,c),y=[...mt({temperature:i.temperature,topP:i.topP,topK:i.topK,maxOutputTokens:i.maxOutputTokens,presencePenalty:i.presencePenalty,frequencyPenalty:i.frequencyPenalty,stopSequences:i.stopSequences,seed:i.seed,tools:i.tools,toolChoice:i.toolChoice})];if(l.warning)y.push(l.warning);let v=c?.developerInstructions??h.developerInstructions,x=Pt(i.prompt),R=await this.resolveConfig(h,f),T=!1,E=()=>{if(T||f!=="request")return;T=!0;for(let D of R.usedSdkMcpServers)this.onSdkMcpServerReleased?.(D)},A;try{A=await this.startOrResumeThread({settings:h,providerOptions:c,configOverrides:R.configOverrides,developerInstructionsOverride:v,systemInstruction:x,includeRawChunks:g})}catch(D){throw E(),D}let O=A.threadId;if(g&&A.resumed&&A.rawEventsNegotiated!==!0)y.push({type:"other",message:"includeRawChunks was requested while resuming an existing thread that may not emit raw events. Start a new thread to guarantee raw chunk events."});let P=this.preparePrompt(i.prompt,A.resumed);y.push(...P.warnings);let q=[],S=[],I;try{let D=await this.buildUserInput(P.promptText,P.images);q=D.input,S=D.tempImagePaths,I=await this.createOrReuseSession({threadId:O,settings:h,providerOptions:c})}catch(D){throw Ee(S),E(),D}let M=ln({threadId:O,modelId:this.modelId,input:q,settings:{cwd:h.cwd,approvalPolicy:this.mapApprovalPolicy(h),sandboxPolicy:Ge(h),effort:h.effort,summary:h.summary,personality:h.personality},responseFormat:i.responseFormat}),_=new un({client:this.client,modelId:this.modelId,threadId:O,warnings:y,includeRawChunks:g,jsonModeLastTextBlockOnly:i.responseFormat?.type==="json",turnStartParams:M,requestHandlers:h.serverRequests,autoApprove:h.autoApprove,session:I,abortSignal:i.abortSignal,shouldSerializeTurnStart:A.persistent||A.explicit,hadInitialThreadId:A.resumed,threadResolution:{persistent:A.persistent,explicit:A.explicit},releaseResources:()=>{Ee(S),E()},clearPersistentThreadState:(D)=>{this.clearPersistentThreadState(D)}});return{stream:new ReadableStream({start:async(D)=>{await _.start(D)},cancel:async(D)=>{await _.cancel(D)}}),request:{body:P.promptText}}}},J=p([n(),e()]),Cn=t({id:J,method:e().min(1),params:d(e(),m()).optional()}).passthrough(),kn=t({id:J,result:m()}).refine((i)=>Object.prototype.hasOwnProperty.call(i,"result"),{message:"result field is required"}).passthrough(),Rn=t({id:p([J,Qt()]),error:t({code:n(),message:e(),data:m().optional()}).passthrough()}).passthrough(),En=t({method:e().min(1),params:d(e(),m()).optional()}).passthrough(),Mn=t({type:a("text"),text:e(),text_elements:o(m())}).passthrough(),An=t({type:a("image"),url:e().optional(),imageUrl:e().optional()}).refine((i)=>typeof i.url==="string"||typeof i.imageUrl==="string",{message:"image input must provide url or imageUrl"}).passthrough(),Pn=t({type:a("localImage"),path:e()}).passthrough(),jn=t({type:a("skill"),name:e(),path:e()}).passthrough(),qn=t({type:a("mention"),name:e(),path:e()}).passthrough(),$n=w("type",[Mn,An,Pn,jn,qn]),_n=t({type:a("userMessage"),id:e(),content:o($n)}).passthrough(),On=t({type:a("agentMessage"),id:e(),text:e(),phase:e().nullable()}).passthrough(),Un=t({type:a("plan"),id:e(),text:e()}).passthrough(),Nn=t({type:a("reasoning"),id:e(),summary:o(e()),content:o(e())}).passthrough(),Ln=t({type:a("commandExecution"),id:e(),command:e(),cwd:e(),processId:e().nullable(),status:e(),commandActions:o(m()),aggregatedOutput:e().nullable(),exitCode:n().nullable(),durationMs:n().nullable()}).passthrough(),Bn=t({type:a("fileChange"),id:e(),changes:o(m()),status:e()}).passthrough(),Dn=t({type:a("mcpToolCall"),id:e(),server:e(),tool:e(),status:e(),arguments:m(),result:m().nullable(),error:m().nullable(),durationMs:n().nullable()}).passthrough(),Fn=t({type:a("collabAgentToolCall"),id:e(),tool:e(),status:e(),senderThreadId:e(),receiverThreadIds:o(e()),prompt:e().nullable(),agentsStates:d(e(),m())}).passthrough(),zn=t({type:a("webSearch"),id:e(),query:e(),action:m().nullable()}).passthrough(),Hn=t({type:a("imageView"),id:e(),path:e()}).passthrough(),Vn=t({type:a("enteredReviewMode"),id:e(),review:e()}).passthrough(),Wn=t({type:a("exitedReviewMode"),id:e(),review:e()}).passthrough(),Jn=t({type:a("contextCompaction"),id:e()}).passthrough(),Zn=t({type:a("hookPrompt"),id:e(),fragments:o(m())}).passthrough(),Kn=t({type:a("dynamicToolCall"),id:e(),namespace:e().nullable(),tool:e(),arguments:m(),status:e(),contentItems:o(m()).nullable(),success:r().nullable(),durationMs:n().nullable()}).passthrough(),Gn=t({type:a("subAgentActivity"),id:e(),kind:e(),agentThreadId:e(),agentPath:e()}).passthrough(),Qn=t({type:a("sleep"),id:e(),durationMs:n()}).passthrough(),Xn=t({type:a("imageGeneration"),id:e(),status:e(),revisedPrompt:e().nullable(),result:e(),savedPath:e().optional()}).passthrough(),Yn=t({type:e()}).passthrough(),es=w("type",[_n,On,Un,Nn,Ln,Bn,Dn,Kn,Fn,Zn,Gn,Qn,Xn,zn,Hn,Vn,Wn,Jn]),Ne=es.or(Yn),le=t({httpStatusCode:n().nullable()}).passthrough(),Ut=p([s(["contextWindowExceeded","usageLimitExceeded","rateLimitExceeded","sessionBudgetExceeded","misalignmentPolicyViolation","serverOverloaded","cyberPolicy","internalServerError","unauthorized","badRequest","threadRollbackFailed","sandboxError","other"]),t({httpConnectionFailed:le}).passthrough(),t({responseStreamConnectionFailed:le}).passthrough(),t({responseStreamDisconnected:le}).passthrough(),t({responseTooManyFailedAttempts:le}).passthrough(),t({activeTurnNotSteerable:t({turnKind:e()}).passthrough()}).passthrough(),e(),d(e(),m())]),Nt=t({id:e(),items:o(Ne),status:e(),error:t({message:e(),codexErrorInfo:Ut.nullish(),additionalDetails:e().nullish()}).nullish()}).passthrough(),ts=t({thread:t({id:e()}).passthrough()}).passthrough(),rs=t({threadId:e(),turn:Nt}).passthrough(),ns=t({threadId:e(),turn:Nt}).passthrough(),ss=t({item:Ne,threadId:e(),turnId:e()}).passthrough(),is=t({item:Ne,threadId:e(),turnId:e()}).passthrough(),os=t({threadId:e(),turnId:e(),itemId:e(),delta:e()}).passthrough(),Qe=t({threadId:e(),turnId:e(),itemId:e(),delta:e()}).passthrough(),Xe=t({threadId:e(),turnId:e(),itemId:e(),delta:e()}).passthrough(),as=t({threadId:e(),turnId:e(),itemId:e(),delta:e()}).passthrough(),ds=t({threadId:e(),turnId:e(),itemId:e(),delta:e()}).passthrough(),Ye=t({totalTokens:n(),inputTokens:n(),cachedInputTokens:n(),cacheWriteInputTokens:n().optional(),outputTokens:n(),reasoningOutputTokens:n()}).passthrough(),cs=t({threadId:e(),turnId:e(),tokenUsage:t({total:Ye,last:Ye,modelContextWindow:n().nullable()}).passthrough()}).passthrough(),us=t({error:t({message:e(),codexErrorInfo:Ut.nullable(),additionalDetails:e().nullable()}).passthrough(),willRetry:r(),threadId:e(),turnId:e()}).passthrough(),Lt=t({threadId:e(),turnId:e(),itemId:e(),approvalId:e().nullable().optional(),reason:e().nullable().optional(),networkApprovalContext:m().nullable().optional(),command:e().nullable().optional(),cwd:e().nullable().optional(),commandActions:o(m()).nullable().optional(),proposedExecpolicyAmendment:m().nullable().optional()}).passthrough(),Bt=t({threadId:e(),turnId:e(),itemId:e(),reason:e().nullable().optional(),grantRoot:e().nullable().optional()}).passthrough(),Dt=t({threadId:e(),turnId:e(),itemId:e(),questions:o(m())}).passthrough(),Ft=t({itemId:e(),skillName:e()}).passthrough(),zt=t({threadId:e(),turnId:e().nullable().optional(),serverName:e(),mode:e().optional(),message:e().optional(),requestedSchema:m().optional(),url:e().optional(),elicitationId:e().optional(),_meta:d(e(),m()).nullable().optional()}).passthrough(),Ht=t({threadId:e(),turnId:e(),callId:e(),tool:e(),arguments:m()}).passthrough(),Vt=t({reason:e(),previousAccountId:e().nullable().optional()}).passthrough(),ls={"item/commandExecution/requestApproval":Lt,"item/fileChange/requestApproval":Bt,"item/tool/requestUserInput":Dt,"mcpServer/elicitation/request":zt,"skill/requestApproval":Ft,"item/tool/call":Ht,"account/chatgptAuthTokens/refresh":Vt};s(Object.keys(ls));var ps=w("method",[t({id:J,method:a("item/commandExecution/requestApproval"),params:Lt}).passthrough(),t({id:J,method:a("item/fileChange/requestApproval"),params:Bt}).passthrough(),t({id:J,method:a("item/tool/requestUserInput"),params:Dt}).passthrough(),t({id:J,method:a("mcpServer/elicitation/request"),params:zt}).passthrough(),t({id:J,method:a("skill/requestApproval"),params:Ft}).passthrough(),t({id:J,method:a("item/tool/call"),params:Ht}).passthrough(),t({id:J,method:a("account/chatgptAuthTokens/refresh"),params:Vt}).passthrough()]),hs={"thread/started":ts,"turn/started":rs,"turn/completed":ns,"item/started":ss,"item/completed":is,"item/agentMessage/delta":os,reasoningTextDelta:Qe,reasoningSummaryTextDelta:Xe,"item/reasoning/textDelta":Qe,"item/reasoning/summaryTextDelta":Xe,"item/commandExecution/outputDelta":as,"item/fileChange/outputDelta":ds,"thread/tokenUsage/updated":cs,error:us},fs=30000,ms=1024,gs=256,ys=4,pe="0.156.0";function vs(i){if(i){let c=i.toLowerCase();if(c.endsWith(".js")||c.endsWith(".mjs")||c.endsWith(".cjs"))return{cmd:"node",args:[i]};return{cmd:i,args:[]}}try{let u=ot(import.meta.url).resolve("@openai/codex/package.json"),l=De.dirname(u);return{cmd:"node",args:[De.join(l,"bin","codex.js")]}}catch{return{cmd:"codex",args:[]}}}function Ts(i){return i.match(/(\d+\.\d+\.\d+(?:-[A-Za-z0-9.-]+)?)/)?.[1]}function et(i){let c=i.match(/^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?$/);if(!c)return;return{major:Number(c[1]),minor:Number(c[2]),patch:Number(c[3]),prerelease:c[4]?c[4].split("."):[]}}function bs(i,c){let u=/^\d+$/.test(i),l=/^\d+$/.test(c);if(u&&l){let h=Number(i),f=Number(c);if(h>f)return 1;if(h<f)return-1;return 0}if(u&&!l)return-1;if(!u&&l)return 1;return i.localeCompare(c)}function ws(i,c){let u=et(i),l=et(c);if(!u||!l)return;if(u.major!==l.major)return u.major>l.major?1:-1;if(u.minor!==l.minor)return u.minor>l.minor?1:-1;if(u.patch!==l.patch)return u.patch>l.patch?1:-1;let h=u.prerelease,f=l.prerelease;if(h.length===0&&f.length===0)return 0;if(h.length===0)return 1;if(f.length===0)return-1;let g=Math.max(h.length,f.length);for(let y=0;y<g;y++){let v=h[y],x=f[y];if(v===void 0)return-1;if(x===void 0)return 1;let R=bs(v,x);if(R!==0)return R}return 0}var tt=class extends Error{code;constructor(i,c){super(`JSON-RPC error ${i}: ${c}`);this.name="JsonRpcRequestError",this.code=i}},Wt=class extends tr{settings;logger;requestTimeoutMs;clientVersion;child;stdoutReader;state="idle";initPromise;nextId=1;nextRequestContextId=1;pending=new Map;threadLocks=new Map;pendingRequestContexts=new Map;pendingRequestContextIdsByThread=new Map;activeRequestContextsByTurn=new Map;completedTurnIds=new Set;tokenUsageTotalsByThread=new Map;lastStderr="";lastCrashHadStderr=!1;idleTimer;serverCapabilities;expectedExitSignal;writeQueue=Promise.resolve();serverVersion;constructor(i={}){super();this.settings=i.settings??{},this.logger=oe(i.logger??this.settings.logger),this.requestTimeoutMs=i.requestTimeoutMs??this.settings.requestTimeoutMs??fs,this.clientVersion=i.clientVersion??"0.0.0"}async ensureReady(){if(this.state==="ready")return;if(this.state==="closed")throw Error("AppServerRpcClient is closed");if(this.initPromise){await this.initPromise;return}let i=this.state==="error";this.state="starting",this.initPromise=this.startAndInitialize().then(()=>{if(this.state="ready",i)this.emit("reconnected")}).catch((c)=>{throw this.cleanupAfterInitializationFailure(c),c}).finally(()=>{this.initPromise=void 0}),await this.initPromise,this.touchActivity()}async request(i,c,u){return await this.ensureReady(),this.touchActivity(),await this.requestInternal(i,c,u)}async requestInternal(i,c,u){let l=this.nextId++,h={id:l,method:i,...c?{params:c}:{}};return await new Promise((f,g)=>{let y=setTimeout(()=>{this.pending.delete(l),g(Error(`Request timed out for method '${i}'`))},u??this.requestTimeoutMs);this.pending.set(l,{resolve:(v)=>f(v),reject:g,timer:y}),this.writeMessage(h).catch((v)=>{let x=this.pending.get(l);if(!x)return;clearTimeout(x.timer),this.pending.delete(l),x.reject(v)})})}notify(i,c){if(this.state!=="ready")throw Error(`Cannot send notification '${i}' while client is not ready`);this.writeMessage({method:i,...c?{params:c}:{}}).catch((u)=>{this.logger.warn(`[codex-app-server] Failed to send notification '${i}': ${String(u)}`)})}async threadStart(i){return await this.request("thread/start",i)}async threadResume(i){return await this.request("thread/resume",i)}async turnStart(i){return await this.request("turn/start",i)}async turnInterrupt(i){return await this.request("turn/interrupt",i)}async modelList(i){if(await this.ensureReady(),this.touchActivity(),this.serverCapabilities?.modelList===!1)throw new je({feature:"model/list",minCodexVersion:this.settings.minCodexVersion??pe,serverVersion:this.serverVersion});try{return await this.requestInternal("model/list",i)}catch(c){if(c instanceof tt&&c.code===-32601)throw new je({feature:"model/list",minCodexVersion:this.settings.minCodexVersion??pe,serverVersion:this.serverVersion});throw c}}registerRequestContext(i,c){let u=`ctx_${this.nextRequestContextId++}`;this.pendingRequestContexts.set(u,{threadId:i,context:{handlers:c.handlers,autoApprove:c.autoApprove}});let l=this.pendingRequestContextIdsByThread.get(i)??new Set;return l.add(u),this.pendingRequestContextIdsByThread.set(i,l),u}bindRequestContext(i,c){let u=this.pendingRequestContexts.get(i);if(!u)return;if(this.completedTurnIds.has(c)){this.clearRequestContext(i);return}this.activeRequestContextsByTurn.set(c,{handlers:u.context.handlers,autoApprove:u.context.autoApprove}),this.clearRequestContext(i)}clearRequestContext(i){let c=this.pendingRequestContexts.get(i);if(!c)return;this.pendingRequestContexts.delete(i);let u=this.pendingRequestContextIdsByThread.get(c.threadId);if(!u)return;if(u.delete(i),u.size===0)this.pendingRequestContextIdsByThread.delete(c.threadId)}clearRequestContextForTurn(i){this.activeRequestContextsByTurn.delete(i)}hasTurnCompleted(i){return this.completedTurnIds.has(i)}async withThreadLock(i,c){let u=this.threadLocks.get(i)??Promise.resolve(),l,h=new Promise((g)=>{l=g}),f=u.then(()=>h);this.threadLocks.set(i,f),await u;try{return await c()}finally{if(l?.(),this.threadLocks.get(i)===f)this.threadLocks.delete(i)}}async close(){this.state="closed",this.clearIdleTimer(),this.stdoutReader?.close(),this.stdoutReader=void 0;for(let[i,c]of this.pending.entries())clearTimeout(c.timer),c.reject(Error(`Client closed while request ${String(i)} was in flight`));if(this.pending.clear(),this.threadLocks.clear(),this.pendingRequestContexts.clear(),this.pendingRequestContextIdsByThread.clear(),this.activeRequestContextsByTurn.clear(),this.completedTurnIds.clear(),this.tokenUsageTotalsByThread.clear(),this.serverCapabilities=void 0,this.child)this.expectedExitSignal="SIGTERM",this.child.kill("SIGTERM"),this.child=void 0;this.writeQueue=Promise.resolve()}async dispose(){await this.close()}async startAndInitialize(){let i=vs(this.settings.codexPath),c=[...i.args,"app-server","--listen","stdio://"];this.lastStderr="",this.lastCrashHadStderr=!1,this.expectedExitSignal=void 0,this.child=st(i.cmd,c,{stdio:["pipe","pipe","pipe"],env:{...process.env,...this.settings.env??{},RUST_LOG:process.env.RUST_LOG||"error"},cwd:this.settings.cwd});let u=this.child,l="";u.stderr.setEncoding("utf8"),u.stderr.on("data",(g)=>{if(l=(l+String(g)).slice(-4000),this.child===u)this.lastStderr=l}),u.on("error",(g)=>{this.logger.error(`[codex-app-server] process error: ${String(g)}`);let y=String(g),v=this.withStderrTail(y,l);this.lastCrashHadStderr=v!==y,this.handleCrash(Error(v))}),u.on("exit",(g,y)=>{let v=`codex app-server exited (code=${String(g)}, signal=${String(y)})`,x=this.state==="closed"||y!==null&&y===this.expectedExitSignal;if(this.expectedExitSignal=void 0,x){this.logger.info(`[codex-app-server] ${v}`);return}let R=this.markCrashed();if(!R)return;let T=!1,E=()=>{if(T)return;T=!0,u.off("close",E),clearTimeout(A);let O=`codex app-server exited (code=${String(g)}, signal=${String(y)})`,P=this.withStderrTail(O,l);if(this.child===void 0)this.lastStderr=l,this.lastCrashHadStderr=P!==O;this.logger.warn(`[codex-app-server] ${P}`),this.rejectCrashedPending(R,Error(P))};u.once("close",E);let A=setTimeout(E,120);A.unref?.()}),this.stdoutReader=rr.createInterface({input:u.stdout,crlfDelay:1/0}),this.stdoutReader.on("line",(g)=>this.handleLine(g));let h={clientInfo:{name:"ai-sdk-provider-codex-cli",version:this.clientVersion},capabilities:{experimentalApi:!0,optOutNotificationMethods:null}},f;try{f=await this.requestInternal("initialize",h,this.settings.connectionTimeoutMs??this.requestTimeoutMs)}catch(g){let y=String(g?.message??g);if(y.includes("unknown subcommand")||this.lastStderr.includes("unknown subcommand"))throw Error(this.withStderrTail(`codex app-server requires codex CLI >= ${this.settings.minCodexVersion??pe}. Run 'codex --version' to check.`));if(y.includes("ENOENT")||this.lastStderr.includes("ENOENT"))throw Error(this.withStderrTail("codex app-server failed to start: codex executable not found (ENOENT). Check that the codex CLI is installed and its native binary is intact — a corrupted @openai/codex npm install can cause this. Run 'codex --version' to verify."));let v=this.lastCrashHadStderr?y:this.withStderrTail(y);throw he({message:`Failed to initialize codex app-server: ${v}`,stderr:this.lastStderr,provider:"app-server"})}await this.writeMessage({method:"initialized"}),this.checkVersion(f.userAgent),this.serverCapabilities=f.capabilities??null}checkVersion(i){let c=Ts(i);if(!c){this.logger.warn(`[codex-app-server] Could not parse server version from userAgent: ${i}`);return}this.serverVersion=c;let u=this.settings.minCodexVersion??pe,l=ws(c,u);if(l===void 0){this.logger.warn(`[codex-app-server] Could not semver-compare '${c}' against '${u}'.`);return}if(l<0)throw Error(`codex app-server version '${c}' is below required minimum '${u}'.`)}cleanupAfterInitializationFailure(i){if(this.state==="closed")return;this.state="error",this.clearIdleTimer(),this.stdoutReader?.close(),this.stdoutReader=void 0;for(let[c,u]of this.pending.entries())clearTimeout(u.timer),u.reject(Error(`Request ${String(c)} failed during app-server initialization: ${String(i)}`));if(this.pending.clear(),this.threadLocks.clear(),this.pendingRequestContexts.clear(),this.pendingRequestContextIdsByThread.clear(),this.activeRequestContextsByTurn.clear(),this.completedTurnIds.clear(),this.serverCapabilities=void 0,this.child)this.expectedExitSignal="SIGTERM",this.child.kill("SIGTERM"),this.child=void 0;this.writeQueue=Promise.resolve()}markCrashed(){if(this.state==="closed"||this.state==="error")return;if(this.state="error",this.clearIdleTimer(),this.stdoutReader?.close(),this.stdoutReader=void 0,this.child)this.expectedExitSignal="SIGTERM",this.child.kill("SIGTERM"),this.child=void 0;let i=new Map(this.pending);for(let[,c]of i)clearTimeout(c.timer);return this.pending.clear(),this.threadLocks.clear(),this.pendingRequestContexts.clear(),this.pendingRequestContextIdsByThread.clear(),this.activeRequestContextsByTurn.clear(),this.completedTurnIds.clear(),this.serverCapabilities=void 0,this.writeQueue=Promise.resolve(),i}rejectCrashedPending(i,c){for(let[u,l]of i)l.reject(Error(`Request ${String(u)} failed after app-server crash: ${String(c)}`))}handleCrash(i){let c=this.markCrashed();if(!c)return;this.rejectCrashedPending(c,i)}stderrExcerpt(i){if(!i)return"";let c=String.fromCharCode(27),u=new RegExp(`${c}(?:\\[[0-?]*[ -/]*[@-~]|\\][^\\u0007]*(?:\\u0007|${c}\\\\))`,"g"),l=i.replace(u,""),f=Array.from(l).filter((g)=>{let y=g.charCodeAt(0);return g===`
15
+ `||y>=32&&(y<127||y>159)}).join("").split(/\r?\n/).map((g)=>g.trim()).filter(Boolean).slice(-5).join("; ");if(f.length>600)return`…${f.slice(-600)}`;return f}withStderrTail(i,c=this.lastStderr){let u=this.stderrExcerpt(c);return u?`${i} | stderr (tail): ${u}`:i}handleLine(i){let c=i.trim();if(!c)return;this.touchActivity();let u;try{u=JSON.parse(c)}catch{this.logger.warn(`[codex-app-server] Ignoring non-JSON line: ${c.slice(0,200)}`);return}let l=kn.safeParse(u);if(l.success){this.handleResponse(l.data);return}let h=Rn.safeParse(u);if(h.success){this.handleErrorResponse(h.data.id,h.data.error);return}let f=Cn.safeParse(u);if(f.success){let y=f.data;this.handleServerRequest(y.id,y.method,y.params??{}).catch((v)=>{this.logger.warn(`[codex-app-server] Failed to handle server request '${y.method}': ${String(v)}`)});return}let g=En.safeParse(u);if(g.success){let y=g.data,v=hs[y.method];if(v){if(!v.safeParse(y.params??{}).success){this.logger.warn(`[codex-app-server] Notification '${y.method}' failed schema validation; dropping.`);return}}if(y.method==="turn/completed"){let x=y.params,R=typeof x?.turn?.id==="string"?x.turn.id:void 0;if(R)this.clearRequestContextForTurn(R),this.rememberCompletedTurn(R)}if(y.method==="thread/tokenUsage/updated")this.recordThreadTokenUsage(y.params);this.emit("notification",y.method,y.params??{});return}this.logger.warn("[codex-app-server] Received unrecognized JSON-RPC message")}handleResponse(i){this.touchActivity();let c=this.pending.get(i.id);if(!c)return;clearTimeout(c.timer),this.pending.delete(i.id),c.resolve(i.result)}handleErrorResponse(i,c){if(this.touchActivity(),i===null){this.logger.error(`[codex-app-server] JSON-RPC error: ${c.message}`);return}let u=this.pending.get(i);if(!u)return;clearTimeout(u.timer),this.pending.delete(i),u.reject(new tt(c.code,c.message))}getThreadIdFromServerRequest(i){return typeof i.threadId==="string"?i.threadId:void 0}getTurnIdFromServerRequest(i){return typeof i.turnId==="string"?i.turnId:void 0}getPendingContextsForThread(i){let c=this.pendingRequestContextIdsByThread.get(i);if(!c||c.size===0)return[];let u=[];for(let l of c){let h=this.pendingRequestContexts.get(l);if(h)u.push(h.context)}return u}getContextForRequest(i){let c=this.getTurnIdFromServerRequest(i);if(c){let f=this.activeRequestContextsByTurn.get(c);if(f)return f}let u=this.getThreadIdFromServerRequest(i);if(u){let f=this.getPendingContextsForThread(u);if(f.length===1)return f[0];if(f.length>1)this.logger.debug(`[codex-app-server] Received server request for thread '${u}' before turn binding with multiple pending contexts; using settings-level handlers.`);return}let l=this.activeRequestContextsByTurn.size,h=this.pendingRequestContexts.size;if(l+h===1){if(l===1)return this.activeRequestContextsByTurn.values().next().value;return this.pendingRequestContexts.values().next().value?.context}if(l+h>1)this.logger.debug("[codex-app-server] Received threadless server request while multiple request contexts are active; using settings-level handlers.");return}async handleServerRequest(i,c,u){let l=ps.safeParse({id:i,method:c,params:u}),h=l.success?l.data:{id:i,method:c,params:u},f=async(T)=>{try{await this.writeMessage({id:h.id,result:T})}catch(E){this.logger.warn(`[codex-app-server] Failed to send server request result for '${h.method}': ${String(E)}`)}},g=async(T,E)=>{try{await this.writeMessage({id:h.id,error:{code:T,message:E}})}catch(A){this.logger.warn(`[codex-app-server] Failed to send server request error for '${h.method}': ${String(A)}`)}},y=this.getContextForRequest(h.params),v=y?.handlers??this.settings.serverRequests??{},x=y?.autoApprove??this.settings.autoApprove??!1;this.emit("server-request",h.method,h.params,h.id);let R=async(T)=>{if(!T)return;try{let E=T();if(!E)return;return await E}catch(E){this.logger.warn(`[codex-app-server] request handler failed for '${h.method}': ${String(E)}`);return}};switch(h.method){case"item/commandExecution/requestApproval":{let T=await R(()=>v.onCommandExecutionApproval?.(h));if(T!==void 0){await f(T);return}await f({decision:x?"accept":"decline"});return}case"item/fileChange/requestApproval":{let T=await R(()=>v.onFileChangeApproval?.(h));if(T!==void 0){await f(T);return}await f({decision:x?"accept":"decline"});return}case"skill/requestApproval":{let T=await R(()=>v.onSkillApproval?.(h));if(T!==void 0){await f(T);return}await f({decision:x?"approve":"decline"});return}case"mcpServer/elicitation/request":{let T=await R(()=>v.onMcpElicitation?.(h));if(T!==void 0){await f(T);return}let E=await R(()=>v.onUnhandled?.(h));if(E!==void 0){await f(E);return}if(h.params._meta?.codex_approval_kind==="mcp_tool_call"&&x)await f({action:"accept",content:{}});else await f({action:"decline",content:null});return}case"item/tool/requestUserInput":{let T=await R(()=>v.onToolRequestUserInput?.(h));if(T!==void 0){await f(T);return}await f({answers:{}});return}case"item/tool/call":{let T=await R(()=>v.onDynamicToolCall?.(h));if(T!==void 0){await f(T);return}await f({contentItems:[],success:!1});return}case"account/chatgptAuthTokens/refresh":{let T=await R(()=>v.onAuthRefresh?.(h));if(T!==void 0){await f(T);return}await g(-32603,"Auth token refresh not supported by this client");return}default:{let T=await R(()=>v.onUnhandled?.(h));if(T!==void 0){await f(T);return}}await g(-32601,"Method not supported")}}async writeMessage(i){let c=`${JSON.stringify(i)}
16
+ `,u=async()=>{if(!this.child?.stdin.writable)throw Error("codex app-server stdin is not writable");let h=this.child.stdin;if(!h.write(c))await new Promise((g,y)=>{let v=()=>{T(),g()},x=(E)=>{T(),y(E)},R=()=>{T(),y(Error("codex app-server stdin closed before drain"))},T=()=>{h.off("drain",v),h.off("error",x),h.off("close",R)};h.once("drain",v),h.once("error",x),h.once("close",R)});this.touchActivity()},l=this.writeQueue.then(u,u);this.writeQueue=l.catch(()=>{return}),await l}getTokenUsageTotalBeforeTurn(i,c){let u=this.tokenUsageTotalsByThread.get(i);if(!u)return;for(let l=u.length-1;l>=0;l-=1){let h=u[l];if(h&&h.turnId!==c)return h.total}return}recordThreadTokenUsage(i){if(!i||typeof i!=="object")return;let{threadId:c,turnId:u,tokenUsage:l}=i,h=l?.total;if(typeof c!=="string"||!h||typeof h!=="object")return;let f=typeof u==="string"?u:void 0,g=(this.tokenUsageTotalsByThread.get(c)??[]).filter((y)=>y.turnId!==f);if(g.push({turnId:f,total:h}),g.length>ys)g.shift();if(this.tokenUsageTotalsByThread.delete(c),this.tokenUsageTotalsByThread.set(c,g),this.tokenUsageTotalsByThread.size>gs){let y=this.tokenUsageTotalsByThread.keys().next().value;if(typeof y==="string")this.tokenUsageTotalsByThread.delete(y)}}rememberCompletedTurn(i){if(this.completedTurnIds.add(i),this.completedTurnIds.size<=ms)return;let c=this.completedTurnIds.values().next().value;if(typeof c==="string")this.completedTurnIds.delete(c)}clearIdleTimer(){if(this.idleTimer)clearTimeout(this.idleTimer),this.idleTimer=void 0}touchActivity(){let i=this.settings.idleTimeoutMs;if(!i||i<=0||this.state!=="ready")return;this.clearIdleTimer(),this.idleTimer=setTimeout(()=>{if(this.state!=="ready")return;if(this.pending.size>0||this.activeRequestContextsByTurn.size>0||this.pendingRequestContexts.size>0){this.touchActivity();return}if(this.child)this.logger.info(`[codex-app-server] Closing idle app-server process after ${i}ms inactivity.`),this.expectedExitSignal="SIGTERM",this.child.kill("SIGTERM"),this.child=void 0;this.stdoutReader?.close(),this.stdoutReader=void 0,this.state="idle",this.threadLocks.clear(),this.pendingRequestContexts.clear(),this.pendingRequestContextIdsByThread.clear(),this.activeRequestContextsByTurn.clear(),this.completedTurnIds.clear(),this.serverCapabilities=void 0,this.writeQueue=Promise.resolve(),this.emit("idle-timeout")},i)}};function Is(i){return{codexPath:i.codexPath,cwd:i.cwd,env:i.env,logger:i.logger,connectionTimeoutMs:i.connectionTimeoutMs,requestTimeoutMs:i.requestTimeoutMs,idleTimeoutMs:i.idleTimeoutMs,minCodexVersion:i.minCodexVersion}}function xs(i,c){let u=i.env&&Object.keys(i.env).length>0?Object.entries(i.env).sort(([l],[h])=>l.localeCompare(h)):void 0;return JSON.stringify({codexPath:i.codexPath??null,cwd:i.cwd??null,connectionTimeoutMs:i.connectionTimeoutMs??null,requestTimeoutMs:i.requestTimeoutMs??null,idleTimeoutMs:i.idleTimeoutMs??null,minCodexVersion:i.minCodexVersion??null,env:u??null,logger:c.loggerIdentity(i.logger)})}function Ss(i){let c=new Map;return{getOrCreate(u){let l=Is(u),h=xs(l,i),f=c.get(h);if(f)return f;let g=new Wt({settings:l,logger:l.logger});return c.set(h,g),g},async closeAll(){await Promise.allSettled(Array.from(c.values()).map(async(u)=>{await u.close()})),c.clear()}}}function Cs(i){let c=Object.getPrototypeOf(i);return c===Object.prototype||c===null}function ks(i){let c=(u,l=new WeakSet)=>{if(u===null||u===void 0||typeof u==="string"||typeof u==="number"||typeof u==="boolean")return u;if(typeof u==="bigint")return{__bigint:u.toString()};if(typeof u==="symbol")return{__symbol:String(u)};if(typeof u==="function")return{__functionIdentity:i.functionIdentity(u)};if(Array.isArray(u))return u.map((h)=>c(h,l));if(typeof u==="object"){if(l.has(u))return{__objectRef:i.objectIdentity(u)};if(l.add(u),me(u)){if(u.cacheKey)return{__sdkMcpServerCacheKey:u.cacheKey};let f=u.tools.map((g)=>({name:g.name,description:g.description,inputSchema:c(g.inputSchema,l),execute:c(g.execute,l)})).sort((g,y)=>g.name.localeCompare(y.name));return{__sdkMcpServer:{name:u.name,tools:f}}}if(!Cs(u))return{__objectIdentity:i.objectIdentity(u)};let h={};for(let f of Object.keys(u).sort((g,y)=>g.localeCompare(y)))h[f]=c(u[f],l);return h}return String(u)};return{createPersistentModelKey(u,l){let h={...l,logger:l.logger===!1?!1:l.logger?{__loggerIdentity:i.loggerIdentity(l.logger)}:void 0};return JSON.stringify({modelId:u,settings:c(h)})}}}function Rs(){let i=new Map;return{get(c){return i.get(c)},set(c,u){i.set(c,u)},clear(){i.clear()}}}function Es(i){let c=new Set,u=new Set,l=new Map;return{markUsed(h,f){if(c.add(h),f==="provider"){u.add(h);return}let g=l.get(h)??0;l.set(h,g+1)},releaseRequestScoped(h){let f=l.get(h);if(f===void 0)return;if(f>1){l.set(h,f-1);return}if(l.delete(h),u.has(h))return;h._stop().then(()=>{if(!u.has(h)&&!l.has(h))c.delete(h)}).catch((g)=>{i.warn(`[codex-app-server] Failed to stop request-scoped SDK MCP server: ${String(g)}`)})},async closeAll(){await Promise.allSettled(Array.from(c).map(async(h)=>{await h._stop()})),c.clear(),u.clear(),l.clear()}}}function Ms(){let i=new WeakMap,c=new WeakMap,u=new WeakMap,l=1,h=1;return{loggerIdentity(f){if(f===!1)return"logger:false";if(!f)return"logger:default";let g=i.get(f);if(g!==void 0)return`logger:${g}`;let y=l++;return i.set(f,y),`logger:${y}`},functionIdentity(f){let g=c.get(f);if(g!==void 0)return`fn:${g}`;let y=h++;return c.set(f,y),`fn:${y}`},objectIdentity(f){let g=u.get(f);if(g!==void 0)return`obj:${g}`;let y=h++;return u.set(f,y),`obj:${y}`}}}function As(i={}){let c=oe(i.defaultSettings?.logger);if(i.defaultSettings){let x=Ve(i.defaultSettings);if(!x.valid)throw Error(`Invalid default settings: ${x.errors.join(", ")}`);for(let R of x.warnings)c.warn(`Codex App Server Provider: ${R}`)}let u=Ms(),l=ks(u),h=Ss(u),f=Rs(),g=Es(c),y=(x,R={})=>{let T={...i.defaultSettings,...R,configOverrides:{...i.defaultSettings?.configOverrides??{},...R.configOverrides??{}}},E=Ve(T);if(!E.valid)throw Error(`Invalid settings: ${E.errors.join(", ")}`);for(let S of E.warnings)c.warn(`Codex App Server: ${S}`);let A=()=>new Sn({id:x,settings:T,client:h.getOrCreate(T),onSdkMcpServerUsed:(S,I)=>{g.markUsed(S,I)},onSdkMcpServerReleased:(S)=>{g.releaseRequestScoped(S)}});if((T.threadMode??"stateless")!=="persistent")return A();let O=l.createPersistentModelKey(x,T),P=f.get(O);if(P)return P;let q=A();return f.set(O,q),q},v=Object.assign(function(x,R){if(new.target)throw Error("The Codex app-server provider function cannot be called with new.");return y(x,R)},{specificationVersion:"v4"});return v.languageModel=y,v.chat=y,v.embeddingModel=(x)=>{throw new ve({modelId:x,modelType:"embeddingModel"})},v.imageModel=(x)=>{throw new ve({modelId:x,modelType:"imageModel"})},v.close=async()=>{await g.closeAll(),await h.closeAll(),f.clear()},v.dispose=v.close,v.listModels=async(x)=>{let T=await h.getOrCreate(i.defaultSettings??{}).modelList({modelProviders:x??null}),E=T.data??[];return{models:E,defaultModel:E.find((A)=>A.isDefault===!0),nextCursor:T.nextCursor}},v}var Gs=As();async function Qs(i={}){let c=new Wt({settings:{codexPath:i.codexPath,env:i.env,cwd:i.cwd,minCodexVersion:i.minCodexVersion,connectionTimeoutMs:i.connectionTimeoutMs,requestTimeoutMs:i.requestTimeoutMs,logger:!1}});try{let u=await c.modelList({modelProviders:i.modelProviders??null}),l=u.data??[];return{models:l,defaultModel:l.find((h)=>h.isDefault===!0),nextCursor:u.nextCursor}}finally{await c.dispose()}}function Ps(i){let c=i;if(typeof c.toJSON!=="function")return;try{return c.toJSON()}catch{return}}function js(i){let c=Ey;if(typeof c.toJSONSchema!=="function")return;try{let u=c.toJSONSchema(i,{io:"input",target:"jsonSchema7"});if(u&&typeof u==="object")return u}catch{return}return}function rt(i){return i._def??{}}function nt(i){let c=i.typeName;if(typeof c==="string")return c;let u=i.type;if(typeof u==="string")return`Zod${u.charAt(0).toUpperCase()}${u.slice(1)}`;return}function qs(i){let c=rt(i),u=nt(c);if(u==="ZodString")return{type:"string"};if(u==="ZodNumber")return{type:"number"};if(u==="ZodBoolean")return{type:"boolean"};if(u==="ZodNull")return{type:"null"};if(u==="ZodAny"||u==="ZodUnknown")return{};if(u==="ZodLiteral"){let l=c.value;if(l===null)return{type:"null",const:l};return{type:typeof l,const:l}}if(u==="ZodEnum"){let l=c.values;if(Array.isArray(l))return{type:"string",enum:l}}if(u==="ZodObject"){let l=c.shape,h=typeof l==="function"?l():l,f={},g=[];if(h&&typeof h==="object")for(let[v,x]of Object.entries(h)){if(!(x instanceof ie))continue;f[v]=W(x);let R=rt(x),T=nt(R);if(T!=="ZodOptional"&&T!=="ZodDefault")g.push(v)}let y={type:"object",properties:f};if(g.length>0)y.required=g;return y}if(u==="ZodArray"){let l=c.type;if(l instanceof ie)return{type:"array",items:W(l)};return{type:"array",items:{}}}if(u==="ZodTuple"){let l=c.items;if(Array.isArray(l)){let h=l.filter((f)=>f instanceof ie).map((f)=>W(f));return{type:"array",prefixItems:h,minItems:h.length,maxItems:h.length}}return{type:"array"}}if(u==="ZodRecord"){let l=c.valueType;if(l instanceof ie)return{type:"object",additionalProperties:W(l)};return{type:"object",additionalProperties:{}}}if(u==="ZodOptional"||u==="ZodDefault"){let l=c.innerType;if(l instanceof ie)return W(l);return{}}if(u==="ZodNullable"){let l=c.innerType;if(l instanceof ie)return{anyOf:[W(l),{type:"null"}]};return{anyOf:[{},{type:"null"}]}}if(u==="ZodUnion"){let l=c.options;if(Array.isArray(l))return{anyOf:l.filter((f)=>f instanceof ie).map((f)=>W(f))}}if(u==="ZodDiscriminatedUnion"){let l=c.options;if(l&&typeof l==="object")return{anyOf:Array.from(l.values()).filter((f)=>f instanceof ie).map((f)=>W(f))}}if(u==="ZodEffects"||u==="ZodPipeline"){let l=c.schema??c.in??c.out;if(l instanceof ie)return W(l)}return{type:"object"}}function W(i){return Ps(i)??js(i)??qs(i)}function Xs(i){let{name:c,description:u,parameters:l,execute:h}=i;return{name:c,description:u,inputSchema:W(l),execute:async(f)=>{let g=l.parse(f);return await h(g)}}}export{mr as CODEX_REASONING_EFFORTS,Zr as CodexCliLanguageModel,pe as DEFAULT_MIN_CODEX_VERSION,Zr as ExecLanguageModel,je as UnsupportedFeatureError,Gs as codexAppServer,Zs as codexCli,Zs as codexExec,As as createCodexAppServer,Kr as createCodexCli,Kr as createCodexExec,gn as createLocalMcpServer,Ks as createSdkMcpServer,Ws as isAuthenticationError,Js as isUnsupportedFeatureError,Qs as listModels,Xs as tool};
@@ -0,0 +1,2 @@
1
+ import{so,co,Ks,Gr}from"./index-0f8xrhgt.js";import{U2,Ec}from"./index-yrnwqsdt.js";import{lt}from"./index-6k6ep10s.js";import{createRequire as g}from"module";var I=g(import.meta.url),Vl=class{async doEmbed(e,r,d,a){let{abortSignal:i,values:o}=d;try{if(o.length>a)throw new lt({maxEmbeddingsPerCall:a,modelId:e.modelId,provider:e.provider,values:o});let t=e.parsedProviderOptions,m=so(e.provider),l=t?.type??r.type??"text",n=[];this.resolveWarnings(r,n);let p=this.createClient(e,r,t),s=await this.executeCall(p,o,l,Ec(e.requestConfig,i,d.headers)),u=this.extractEmbeddings(s),c=this.extractTokenCount(s),{headers:h,requestId:v}=this.extractResponseMetadata(s);return U2({embeddings:u,modelId:e.modelId,providerName:m,requestId:v,responseHeaders:h,totalTokens:c,version:Gr,warnings:n})}catch(t){if(t instanceof lt)throw t;throw Ks(t,{modelId:e.modelId,modelType:"embeddingModel",operation:"doEmbed",requestBody:{values:o.length},url:this.getUrl()})}}extractResponseMetadata(e){return{headers:void 0,requestId:void 0}}mergeModelParams(e,r){return co(e.modelParams??{},r?.modelParams??{})}resolveWarnings(e,r){return}};
2
+ export{Vl};