very-happy-cli 0.2.175 → 0.2.177

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 (185) hide show
  1. package/dist/{AcpBackend-Sb6N_HcB.cjs → AcpBackend-B-ny68XM.cjs} +188 -37
  2. package/dist/{AcpBackend-BZrLVcHb.mjs → AcpBackend-B0K0WrtW.mjs} +187 -38
  3. package/dist/{AcpSessionManager-C2MqOirs.cjs → AcpSessionManager-CjdJLofq.cjs} +1 -1
  4. package/dist/{AcpSessionManager-y1Iy1mzc.mjs → AcpSessionManager-DykjzBM4.mjs} +1 -1
  5. package/dist/{BasePermissionHandler-BbLYwd13.cjs → BasePermissionHandler-DR6nxuEn.cjs} +1 -1
  6. package/dist/{BasePermissionHandler-DriZLITp.mjs → BasePermissionHandler-hdY7kTqX.mjs} +1 -1
  7. package/dist/{agentHome-BoYfpemd.cjs → agentHome-BdTXEUPe.cjs} +4 -4
  8. package/dist/{agentHome-BtuRubHG.mjs → agentHome-GRN2VfHv.mjs} +4 -4
  9. package/dist/{api-KZmVqSKO.cjs → api-BWX10o97.cjs} +17 -10
  10. package/dist/{api-D08IEaWa.mjs → api-CKBViqI3.mjs} +18 -11
  11. package/dist/{apiMachine-Dct2GDAq.cjs → apiMachine-BYYFGgFs.cjs} +15 -14
  12. package/dist/{apiMachine-Cx9Zn-78.mjs → apiMachine-DttO4UFj.mjs} +15 -14
  13. package/dist/{attachmentContent-PrNJg8gG.mjs → attachmentContent-cPVF463_.mjs} +2 -2
  14. package/dist/{attachmentContent-4L9dO8E3.cjs → attachmentContent-kJKXpkMX.cjs} +2 -2
  15. package/dist/{attachmentLimits-BLbji11b.mjs → attachmentLimits-Di1Z93lN.mjs} +1 -1
  16. package/dist/{attachmentLimits-D6bT2jU1.cjs → attachmentLimits-DtFqqiwR.cjs} +1 -1
  17. package/dist/{auth-D1qHU-i_.mjs → auth-BmESeKuM.mjs} +5 -5
  18. package/dist/{auth-PY_HGlzz.mjs → auth-CKdXb9zp.mjs} +8 -8
  19. package/dist/{auth-BGmM3Vlm.cjs → auth-CTECt2Oz.cjs} +5 -5
  20. package/dist/{auth-BI0CsMcy.cjs → auth-DNxVmVbn.cjs} +8 -8
  21. package/dist/{auto-COMphIfD.mjs → auto-Ch3203qd.mjs} +17 -16
  22. package/dist/{auto-DM4_FeKb.cjs → auto-D1ypjjfx.cjs} +16 -15
  23. package/dist/{backgroundTaskActivity-8PdPxrvy.mjs → backgroundTaskActivity-BVwJBl02.mjs} +1 -1
  24. package/dist/{bootstrap-DTJ6-vYT.cjs → bootstrap-6OI698q9.cjs} +2 -2
  25. package/dist/{bootstrap-CWjpC5-J.mjs → bootstrap-C0s2bPFQ.mjs} +2 -2
  26. package/dist/{browser-xuW4fiHo.mjs → browser-BlLWZUMx.mjs} +1 -1
  27. package/dist/{browser-DmgVoopB.cjs → browser-DG6Uof5O.cjs} +1 -1
  28. package/dist/{claudeLocal-B0P-wVJJ.mjs → claudeLocal-CcWcKnoo.mjs} +5 -5
  29. package/dist/{claudeLocal-CtZVz3ee.cjs → claudeLocal-CemsIArT.cjs} +5 -5
  30. package/dist/{claudeLocalLauncher-D4vmjI3c.mjs → claudeLocalLauncher-7p6y88nj.mjs} +15 -18
  31. package/dist/{claudeLocalLauncher-Dnv4CH8r.cjs → claudeLocalLauncher-A4VuevIi.cjs} +15 -18
  32. package/dist/{claudeSessionFork-CxjOBoBh.mjs → claudeSessionFork-BtROOjqf.mjs} +1 -1
  33. package/dist/{claudeSessionFork-DQk5-dzR.cjs → claudeSessionFork-CbDfm8Fz.cjs} +1 -1
  34. package/dist/{client-eQjOvC55.mjs → client-BPMWutfs.mjs} +3 -3
  35. package/dist/{client-BhLhjj_x.cjs → client-COmgDDy0.cjs} +2 -2
  36. package/dist/{client-C4ddTzrD.mjs → client-DG5ndWLw.mjs} +2 -2
  37. package/dist/{client-BHZVyQwi.cjs → client-DyvBTYee.cjs} +3 -3
  38. package/dist/codex/happyMcpStdioBridge.cjs +15 -15
  39. package/dist/codex/happyMcpStdioBridge.mjs +16 -16
  40. package/dist/{codexAppServerClient-CppPl_R6.mjs → codexAppServerClient-D-Z8qSfI.mjs} +233 -24
  41. package/dist/{codexAppServerClient-D-9z-lWP.cjs → codexAppServerClient-R24WZZfg.cjs} +233 -24
  42. package/dist/{codexCommand-AgVJYnFU.cjs → codexCommand-6hW19gsq.cjs} +159 -84
  43. package/dist/{codexCommand-BdrBNbZu.mjs → codexCommand-CVTkZJ1o.mjs} +158 -83
  44. package/dist/{BaseReasoningProcessor-_S1PbSvH.cjs → codexTermination-BBU7e92y.cjs} +25 -1
  45. package/dist/{BaseReasoningProcessor-DnykPlPo.mjs → codexTermination-CCIfwzcx.mjs} +25 -2
  46. package/dist/{config-Cr3VUzbE.mjs → config-CvsNChKX.mjs} +3 -3
  47. package/dist/{config-D89sE3wK.cjs → config-DhdrvOLV.cjs} +3 -3
  48. package/dist/{configuration-BNGPXg07.mjs → configuration-D55F0t16.mjs} +1 -1
  49. package/dist/{configuration-UV4EE5ui.cjs → configuration-DZPy0T9Z.cjs} +1 -1
  50. package/dist/{connect-C0iLkCiY.mjs → connect-CwCXMRmD.mjs} +14 -14
  51. package/dist/{connect-B35YXbdZ.cjs → connect-Wz-XZYXW.cjs} +13 -13
  52. package/dist/{context-BmH2BKip.cjs → context-BKbrZ55r.cjs} +1 -1
  53. package/dist/{context-Ptdnlcv6.mjs → context-CCRpVXFo.mjs} +1 -1
  54. package/dist/{controlClient-DqtC0pq1.mjs → controlClient-C4xB5J6O.mjs} +4 -4
  55. package/dist/{controlClient-CtsQMw--.cjs → controlClient-SX8gSza2.cjs} +3 -3
  56. package/dist/{createSessionMetadata-2IuH5nlA.cjs → createSessionMetadata-BCFmYlBo.cjs} +2 -2
  57. package/dist/{createSessionMetadata-CtNMvfth.mjs → createSessionMetadata-Bi-m0Y_O.mjs} +2 -2
  58. package/dist/{defaultPermissionMode-Bn4HcU8S.cjs → defaultPermissionMode-DMBEnXll.cjs} +2 -2
  59. package/dist/{defaultPermissionMode-DYihjV2g.mjs → defaultPermissionMode-wBcbBezm.mjs} +2 -2
  60. package/dist/{deterministicJson-DF4xv6MH.mjs → deterministicJson-BkQETt8_.mjs} +9 -9
  61. package/dist/{deterministicJson-je21npNx.cjs → deterministicJson-ChGfQEF6.cjs} +9 -9
  62. package/dist/{doctor-Ba92L7-b.mjs → doctor-B9c2C9dF.mjs} +8 -8
  63. package/dist/{doctor-BXKcYVGU.cjs → doctor-BsN3JZJn.cjs} +7 -7
  64. package/dist/{downloadTarget-CUJg8iJV.mjs → downloadTarget-ByXzbDK4.mjs} +6 -6
  65. package/dist/{downloadTarget-JC7FZl7W.cjs → downloadTarget-Dj3WoVJa.cjs} +6 -6
  66. package/dist/{ensureDaemonRunning-JPA9tHNE.mjs → ensureDaemonRunning--HYzs5Ce.mjs} +5 -5
  67. package/dist/{ensureDaemonRunning-bIp6-vgi.cjs → ensureDaemonRunning-7Wb8M7Lv.cjs} +5 -5
  68. package/dist/{handleResumeCommand-B6lE5DtU.mjs → handleResumeCommand-DHddBkNJ.mjs} +5 -5
  69. package/dist/{handleResumeCommand-B6b9kIYf.cjs → handleResumeCommand-OmuUGYjQ.cjs} +5 -5
  70. package/dist/{index-B2KL0aPc.cjs → index-BRJzH4sc.cjs} +141 -87
  71. package/dist/{index-CjE4kBKx.mjs → index-BzJNDsJq.mjs} +143 -89
  72. package/dist/{index-B6UGRQ7h.mjs → index-CEjJnq05.mjs} +3 -0
  73. package/dist/{index-CZLwo1FS.mjs → index-CEm0MYiS.mjs} +3 -3
  74. package/dist/{index-B1ABQRrB.cjs → index-CrR4JISa.cjs} +4 -4
  75. package/dist/{index-D759ViMU.cjs → index-D9NoYc5I.cjs} +3 -3
  76. package/dist/{index-D3kI0hDR.cjs → index-DFPT4HOO.cjs} +3 -0
  77. package/dist/{index-boE-d8CM.mjs → index-DMy3OCBe.mjs} +8 -1
  78. package/dist/{index-BZdhwBKa.cjs → index-De8L5lFK.cjs} +8 -0
  79. package/dist/{index-DW1ONaGc.mjs → index-Dhl6_bw7.mjs} +4 -4
  80. package/dist/index.cjs +2 -2
  81. package/dist/index.mjs +2 -2
  82. package/dist/{install-KjIsK_EA.cjs → install-1qn-D9FS.cjs} +3 -3
  83. package/dist/{install-CmojqnLK.mjs → install-BDIUtPXi.mjs} +3 -3
  84. package/dist/lib.cjs +12 -12
  85. package/dist/lib.d.cts +7 -1
  86. package/dist/lib.d.mts +7 -1
  87. package/dist/lib.mjs +13 -13
  88. package/dist/{lidState-CL1NdKfQ.mjs → lidState-BqVsw7H1.mjs} +1 -1
  89. package/dist/{lidState-BmJp2pLt.cjs → lidState-DxbK0qfu.cjs} +1 -1
  90. package/dist/{localHappyAgentAuth-B7f4Ysn0.mjs → localHappyAgentAuth-Ce8kO2yc.mjs} +1 -1
  91. package/dist/{localHappyAgentAuth-9SP7hdiw.cjs → localHappyAgentAuth-D5tANdRD.cjs} +1 -1
  92. package/dist/{logger-D5EzMy30.mjs → logger-13cBr_ew.mjs} +2 -2
  93. package/dist/{logger-C7dRaCkE.cjs → logger-LvwVeATU.cjs} +2 -2
  94. package/dist/{machineMetadata-DYYuK_0c.cjs → machineMetadata-29h7vgf4.cjs} +3 -3
  95. package/dist/{machineMetadata-DqplCWue.mjs → machineMetadata-dMida2qq.mjs} +3 -3
  96. package/dist/{main-kgCQgknK.cjs → main-DpM5jaFH.cjs} +44 -44
  97. package/dist/{main-CnV62agu.mjs → main-x4nAhdH5.mjs} +44 -44
  98. package/dist/{mcp-bDPaj-tM.mjs → mcp-DMiFGYMT.mjs} +15 -15
  99. package/dist/{mcp-BV0vxHtz.cjs → mcp-DQv3caXs.cjs} +14 -14
  100. package/dist/{mirrorProtocol-BSHVZ8Nf.cjs → mirrorProtocol-BfrERW7Z.cjs} +3 -3
  101. package/dist/{mirrorProtocol-ClKhNXYe.mjs → mirrorProtocol-Bz8tEabR.mjs} +3 -3
  102. package/dist/{package-VqWv7EI5.cjs → package-Ch9WGDV_.cjs} +7 -7
  103. package/dist/{package-D0dxZ-W8.mjs → package-CjlsAaRe.mjs} +7 -7
  104. package/dist/{peerTools-B_eiNB3P.mjs → peerTools-CxmrKnfV.mjs} +4 -4
  105. package/dist/{peerTools-BktGmlpd.cjs → peerTools-DtGKWli5.cjs} +4 -4
  106. package/dist/{persistence-CIIhP0Uw.mjs → persistence-C_tYtOqK.mjs} +2 -2
  107. package/dist/{persistence-DweHi8xa.cjs → persistence-DXbKOHxl.cjs} +2 -2
  108. package/dist/{piRunnerArgs-BNzWTNRV.cjs → piRunnerArgs-BVRZe2AR.cjs} +1 -1
  109. package/dist/{piRunnerArgs-cQafsadv.mjs → piRunnerArgs-BpHc-JZl.mjs} +1 -1
  110. package/dist/{piRuntime-VZLSwW-4.cjs → piRuntime-D7eio8Ix.cjs} +1 -1
  111. package/dist/{piRuntime-Bel5lOLb.mjs → piRuntime-DOdGF395.mjs} +1 -1
  112. package/dist/{piTerminal-CS5SDi_H.mjs → piTerminal-dpxz4Q8D.mjs} +17 -17
  113. package/dist/{piTerminal-DkR8sPv-.cjs → piTerminal-y_PRo2NY.cjs} +16 -16
  114. package/dist/processTree-CMHWlVse.cjs +66 -0
  115. package/dist/processTree-CP5IvQ2Z.mjs +61 -0
  116. package/dist/{rateLimitWindows-Bp4T21RI.cjs → rateLimitWindows-DFnMU2Vt.cjs} +1 -1
  117. package/dist/{rateLimitWindows-Bo6XVnie.mjs → rateLimitWindows-DYHDGuzQ.mjs} +1 -1
  118. package/dist/{registerCommonHandlers-B7QZxkCL.cjs → registerCommonHandlers-60VuTkdg.cjs} +2 -2
  119. package/dist/{registerCommonHandlers-CR5jpiSx.mjs → registerCommonHandlers-D8OMpBbQ.mjs} +2 -2
  120. package/dist/{registerKillSessionHandler-DLiu24CQ.mjs → registerKillSessionHandler-Drhf7-Vz.mjs} +6 -6
  121. package/dist/{registerKillSessionHandler-CcX84g-T.cjs → registerKillSessionHandler-pqChBKwO.cjs} +6 -6
  122. package/dist/{remoteSessionClient-CL3akj0K.cjs → remoteSessionClient-B7NvjHD3.cjs} +5 -5
  123. package/dist/{remoteSessionClient-CUjw1COc.mjs → remoteSessionClient-D01Hso2-.mjs} +5 -5
  124. package/dist/{reportProgressTool-BLLwMQrN.mjs → reportProgressTool-B203EZCR.mjs} +2 -2
  125. package/dist/{reportProgressTool-DzMi4mvH.cjs → reportProgressTool-Du_zAK4h.cjs} +2 -2
  126. package/dist/{run-DGokR_6q.mjs → run-DX4Zs3Ug.mjs} +34 -34
  127. package/dist/{run-5pmOElaW.cjs → run-DZ5jU53c.cjs} +34 -34
  128. package/dist/{runClaude-BFlpZQds.mjs → runClaude-CgPHXP0L.mjs} +27 -23
  129. package/dist/{runClaude-EnYNvkV0.cjs → runClaude-ClRhHpwR.cjs} +26 -22
  130. package/dist/{runClaudeDeps-CUDebE9e.cjs → runClaudeDeps-D2v_WDSL.cjs} +387 -89
  131. package/dist/{runClaudeDeps-D1M1dzlZ.mjs → runClaudeDeps-Dz2iydq4.mjs} +393 -95
  132. package/dist/{runGemini-Bu69Zu1u.cjs → runGemini-BtZqGFkp.cjs} +208 -193
  133. package/dist/{runGemini-Bub8T5cM.mjs → runGemini-DBXxpoY8.mjs} +208 -193
  134. package/dist/{runOpenClaw-DVu73F_i.mjs → runOpenClaw-BOHpzCEU.mjs} +19 -19
  135. package/dist/{runOpenClaw-Cob5F3FC.cjs → runOpenClaw-D8q8G57u.cjs} +18 -18
  136. package/dist/{sandbox-9EKOFyQF.mjs → sandbox-C452Vrsc.mjs} +4 -4
  137. package/dist/{sandbox-GDqMagSF.cjs → sandbox-Cu9mMzjx.cjs} +4 -4
  138. package/dist/selfCheck-BAvqBwBR.mjs +84 -0
  139. package/dist/{selfCheck-DiNo34da.cjs → selfCheck-gKa3uVr1.cjs} +35 -35
  140. package/dist/{send-ThC80164.cjs → send-2Vb5eppI.cjs} +8 -8
  141. package/dist/{send-wgtHphq8.mjs → send-B8HARi7x.mjs} +9 -9
  142. package/dist/{server-Bb8v2fOj.mjs → server-BBWCIZyS.mjs} +4 -4
  143. package/dist/{server-bidHnstE.cjs → server-Db9Wuam3.cjs} +6 -6
  144. package/dist/{sessionLock-BWBcBZKh.cjs → sessionLock-6qL_N6Rn.cjs} +3 -3
  145. package/dist/{sessionLock-gb32sVPR.mjs → sessionLock-ZfvFVdUi.mjs} +3 -3
  146. package/dist/{sessionModeFile-C-fr1M1h.mjs → sessionModeFile-CWVq8AT9.mjs} +1 -1
  147. package/dist/{sessionModeFile-DhuTNcJr.cjs → sessionModeFile-CsLtn_PL.cjs} +1 -1
  148. package/dist/{sessionOps-ByZJbkMq.mjs → sessionOps-CdgbEJgf.mjs} +5 -5
  149. package/dist/{sessionOps-9MChM9Op.cjs → sessionOps-Dmt7WUUs.cjs} +4 -4
  150. package/dist/{sessionScanner-CxXPAVyS.mjs → sessionScanner-CNVaSNOn.mjs} +34 -4
  151. package/dist/{sessionScanner-BpegdnXK.cjs → sessionScanner-CQL_WSaC.cjs} +34 -3
  152. package/dist/{sessions-C1X4z_Lm.cjs → sessions-BJblG_Hx.cjs} +9 -9
  153. package/dist/{sessions-l-UgJGjV.mjs → sessions-DTomHfFg.mjs} +10 -10
  154. package/dist/{setupOfflineReconnection-CgtXlV74.mjs → setupOfflineReconnection-C5trsV-j.mjs} +2 -2
  155. package/dist/{setupOfflineReconnection-CS_8Da8R.cjs → setupOfflineReconnection-DVA0VpQL.cjs} +2 -2
  156. package/dist/{spawn-FyoHqYWo.mjs → spawn-CQJFgoOq.mjs} +15 -14
  157. package/dist/{spawn-D2BlNdZu.cjs → spawn-DRyNAqD8.cjs} +14 -13
  158. package/dist/{spawnAgents-BhsbJ253.mjs → spawnAgents-BjtmjBvP.mjs} +1 -1
  159. package/dist/{spawnAgents-CgMKuOhZ.cjs → spawnAgents-CCjJifAW.cjs} +1 -1
  160. package/dist/{spawnHappyCLI-DsC256j_.mjs → spawnHappyCLI-B_0RWxD4.mjs} +1 -1
  161. package/dist/{spawnHappyCLI-DByQcqEN.cjs → spawnHappyCLI-ChniczJ5.cjs} +1 -1
  162. package/dist/{specialCommands-DGUeZqdm.cjs → specialCommands-DbntVs0d.cjs} +3 -3
  163. package/dist/{specialCommands-DUUBqzvd.mjs → specialCommands-DkdFJi4N.mjs} +3 -3
  164. package/dist/{startFileWatcher-BtBaahTn.cjs → startFileWatcher-C292fhra.cjs} +1 -1
  165. package/dist/{startFileWatcher-CaYRObJu.mjs → startFileWatcher-UQyTSRAP.mjs} +1 -1
  166. package/dist/{streamRelay-DqPFsCgx.cjs → streamRelay-Cx01enfe.cjs} +1 -1
  167. package/dist/{streamRelay-C8zI7OnR.mjs → streamRelay-_qCd873P.mjs} +1 -1
  168. package/dist/{sync-D5YqUVjS.mjs → sync-C3p7-KLn.mjs} +1 -1
  169. package/dist/{sync-BK-IBkuB.cjs → sync-C7sxoUYG.cjs} +1 -1
  170. package/dist/{systemPrompt-e-qeag_h.mjs → systemPrompt-CdHOlyVW.mjs} +2 -2
  171. package/dist/{systemPrompt-DaTKLEb-.cjs → systemPrompt-DtibzbRU.cjs} +2 -2
  172. package/dist/{teams-D9xwa_d3.cjs → teams-D7O7TpVU.cjs} +6 -6
  173. package/dist/{teams-ClrppvKu.mjs → teams-ujXr3AFn.mjs} +6 -6
  174. package/dist/{time-0szhiPo4.cjs → time-Dg5tVB8S.cjs} +1 -1
  175. package/dist/{time-CvrpeD3S.mjs → time-yEL6wHUF.mjs} +1 -1
  176. package/dist/{titleGenerator-Dz5P7sE1.cjs → titleGenerator-BMEaDTwU.cjs} +2 -2
  177. package/dist/{titleGenerator-BZ5770wq.mjs → titleGenerator-Dr-BtjzO.mjs} +1 -1
  178. package/dist/{todo-CkmNJQey.cjs → todo-CUcFamGs.cjs} +6 -6
  179. package/dist/{todo-o-miKcN2.mjs → todo-CvJe4M2C.mjs} +6 -6
  180. package/dist/{tools-Cp0qJeBq.mjs → tools-BrM3bZW5.mjs} +1 -1
  181. package/dist/{tools-C77-Ssan.cjs → tools-DDKTB5aQ.cjs} +1 -1
  182. package/dist/{uninstall-DGUPERDX.cjs → uninstall-7oLuhYIu.cjs} +3 -3
  183. package/dist/{uninstall-jNJDCLD_.mjs → uninstall-CEcMMQGz.mjs} +3 -3
  184. package/package.json +7 -7
  185. package/dist/selfCheck-CNo4uzGB.mjs +0 -84
@@ -1,96 +1,97 @@
1
- import { a as authAndSetupMachineIfNeeded } from './auth-D1qHU-i_.mjs';
2
- import { c as createEnvelope, o as BUILTIN_TODO_DISCOVERY, P as PROMPT_QUEUE_CAPABILITY } from './index-boE-d8CM.mjs';
1
+ import { a as authAndSetupMachineIfNeeded } from './auth-BmESeKuM.mjs';
2
+ import { c as createEnvelope, o as BUILTIN_TODO_DISCOVERY, P as PROMPT_QUEUE_CAPABILITY, r as CODEX_STEER_CAPABILITY } from './index-DMy3OCBe.mjs';
3
+ import { unlink } from 'node:fs/promises';
3
4
  import { p as publishForkBackfillWhenCommitted, F as FORK_BACKFILL_CAPABILITY } from './forkBackfill-DYIjlN1Z.mjs';
4
5
  import { randomUUID } from 'node:crypto';
5
6
  import { createId } from '@paralleldrive/cuid2';
6
7
  import { r as registerAgentAttachmentDownloads } from './agentAttachments-M_B5qEF2.mjs';
7
- import { C as CLAUDE_ATTACHMENT_KINDS, a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt } from './attachmentContent-PrNJg8gG.mjs';
8
+ import { C as CLAUDE_ATTACHMENT_KINDS, a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt } from './attachmentContent-cPVF463_.mjs';
8
9
  import { useStdout, useInput, Box, Text, render } from 'ink';
9
- import { c as claimSessionOrExit, a as applyServerSnapshot, b as applyHibernationReplay, w as withoutServerSnapshot, m as mergeReconnectMetadata } from './sessionLock-gb32sVPR.mjs';
10
+ import { c as claimSessionOrExit, a as applyServerSnapshot, b as applyHibernationReplay, w as withoutServerSnapshot, m as mergeReconnectMetadata } from './sessionLock-ZfvFVdUi.mjs';
10
11
  import React, { useState, useRef, useEffect, useCallback } from 'react';
11
- import { c as connectionState, A as ApiClient } from './api-D08IEaWa.mjs';
12
- import { C as CodexAppServerClient } from './codexAppServerClient-CppPl_R6.mjs';
13
- import { p as parseSpecialCommand, w as wrapperRateLimitReporter } from './specialCommands-DUUBqzvd.mjs';
14
- import { l as logger } from './logger-D5EzMy30.mjs';
15
- import { B as BasePermissionHandler } from './BasePermissionHandler-DriZLITp.mjs';
16
- import { B as BaseReasoningProcessor } from './BaseReasoningProcessor-DnykPlPo.mjs';
12
+ import { c as connectionState, A as ApiClient } from './api-CKBViqI3.mjs';
13
+ import { C as CodexAppServerClient } from './codexAppServerClient-D-Z8qSfI.mjs';
14
+ import { p as parseSpecialCommand, w as wrapperRateLimitReporter } from './specialCommands-DkdFJi4N.mjs';
15
+ import { l as logger } from './logger-13cBr_ew.mjs';
16
+ import { B as BasePermissionHandler } from './BasePermissionHandler-hdY7kTqX.mjs';
17
+ import { B as BaseReasoningProcessor, s as settleCodexSession } from './codexTermination-CCIfwzcx.mjs';
17
18
  import { execSync } from 'node:child_process';
18
- import { r as readSettings, l as latchKeepAwake, e as evaluateWrapperIdle, a as resolveCheckMs, H as HIBERNATION_CAPABILITY } from './persistence-CIIhP0Uw.mjs';
19
- import { g as getInitialMachineMetadata } from './machineMetadata-DqplCWue.mjs';
20
- import { c as configuration } from './configuration-BNGPXg07.mjs';
21
- import { M as MessageQueue2, r as registerKillSessionHandler } from './registerKillSessionHandler-DLiu24CQ.mjs';
19
+ import { r as readSettings, l as latchKeepAwake, e as evaluateWrapperIdle, a as resolveCheckMs, H as HIBERNATION_CAPABILITY } from './persistence-C_tYtOqK.mjs';
20
+ import { g as getInitialMachineMetadata } from './machineMetadata-dMida2qq.mjs';
21
+ import { c as configuration } from './configuration-D55F0t16.mjs';
22
+ import { M as MessageQueue2, r as registerKillSessionHandler } from './registerKillSessionHandler-Drhf7-Vz.mjs';
22
23
  import { p as projectPath } from './projectPath-BTBIMB57.mjs';
23
24
  import { join } from 'node:path';
24
- import { c as createSessionMetadata } from './createSessionMetadata-CtNMvfth.mjs';
25
- import { h as hashObject, s as startHappyServer } from './deterministicJson-DF4xv6MH.mjs';
25
+ import { c as createSessionMetadata } from './createSessionMetadata-Bi-m0Y_O.mjs';
26
+ import { h as hashObject, s as startHappyServer } from './deterministicJson-BkQETt8_.mjs';
26
27
  import { M as MessageBuffer } from './messageBuffer-BWlGgR3A.mjs';
27
- import { n as notifyDaemonSessionStarted, j as reportSessionEditToDaemon, c as checkDaemonHibernation } from './controlClient-DqtC0pq1.mjs';
28
- import { a as HibernationExitLatch, H as HibernationProbe, c as commitHibernation, b as DEFAULT_CODEX_PERMISSION_MODE } from './defaultPermissionMode-DYihjV2g.mjs';
28
+ import { n as notifyDaemonSessionStarted, j as reportSessionEditToDaemon, c as checkDaemonHibernation } from './controlClient-C4xB5J6O.mjs';
29
+ import { a as HibernationExitLatch, H as HibernationProbe, c as commitHibernation, b as DEFAULT_CODEX_PERMISSION_MODE } from './defaultPermissionMode-wBcbBezm.mjs';
29
30
  import { d as decodeBase64, e as encodeBase64 } from './authRelay-DSAvg1uv.mjs';
30
- import { s as setupOfflineReconnection } from './setupOfflineReconnection-CgtXlV74.mjs';
31
+ import { s as setupOfflineReconnection } from './setupOfflineReconnection-C5trsV-j.mjs';
31
32
  import { t as trimIdent } from './trimIdent-BAjmv_TG.mjs';
32
33
  import { C as CHANGE_TITLE_INSTRUCTION } from './constants-BC4St0xd.mjs';
33
34
  import { E as EditReportThrottle, a as extractCodexPatchPaths } from './editPaths-BVfS_FFL.mjs';
34
- import { a as extractNoSandboxFlag, e as ensureDaemonRunning } from './ensureDaemonRunning-JPA9tHNE.mjs';
35
+ import { a as extractNoSandboxFlag, e as ensureDaemonRunning } from './ensureDaemonRunning--HYzs5Ce.mjs';
35
36
  import 'tweetnacl';
36
37
  import 'axios';
37
- import './time-CvrpeD3S.mjs';
38
- import './browser-xuW4fiHo.mjs';
38
+ import './time-yEL6wHUF.mjs';
39
+ import './browser-BlLWZUMx.mjs';
39
40
  import 'open';
40
41
  import 'zod';
41
- import 'node:fs/promises';
42
- import './attachmentLimits-BLbji11b.mjs';
42
+ import './attachmentLimits-Di1Z93lN.mjs';
43
43
  import 'node:fs';
44
- import './lidState-CL1NdKfQ.mjs';
44
+ import './lidState-BqVsw7H1.mjs';
45
45
  import 'os';
46
46
  import 'child_process';
47
47
  import 'node:events';
48
48
  import 'socket.io-client';
49
49
  import './limits-DIo7rEBR.mjs';
50
- import './registerCommonHandlers-CR5jpiSx.mjs';
50
+ import './registerCommonHandlers-D8OMpBbQ.mjs';
51
51
  import 'util';
52
52
  import 'fs/promises';
53
53
  import 'crypto';
54
54
  import 'path';
55
55
  import 'cross-spawn';
56
- import './sync-D5YqUVjS.mjs';
57
- import './backgroundTaskActivity-8PdPxrvy.mjs';
56
+ import './sync-C3p7-KLn.mjs';
57
+ import './backgroundTaskActivity-BVwJBl02.mjs';
58
58
  import './contentLogMetadata-BlWI0egu.mjs';
59
59
  import 'chalk';
60
60
  import 'node:readline';
61
61
  import './manager-BEsI4qt3.mjs';
62
62
  import '@anthropic-ai/sandbox-runtime';
63
63
  import 'node:os';
64
- import './package-D0dxZ-W8.mjs';
65
- import './rateLimitWindows-Bo6XVnie.mjs';
64
+ import './package-CjlsAaRe.mjs';
65
+ import './rateLimitWindows-DYHDGuzQ.mjs';
66
+ import './processTree-CP5IvQ2Z.mjs';
66
67
  import 'node:util';
67
68
  import './detectCLI-CSGMlV51.mjs';
68
69
  import 'fs';
69
- import './localHappyAgentAuth-B7f4Ysn0.mjs';
70
+ import './localHappyAgentAuth-Ce8kO2yc.mjs';
70
71
  import './types-CkqAACXx.mjs';
71
72
  import 'url';
72
- import './client-eQjOvC55.mjs';
73
- import './context-Ptdnlcv6.mjs';
74
- import './sessionOps-ByZJbkMq.mjs';
73
+ import './client-BPMWutfs.mjs';
74
+ import './context-CCRpVXFo.mjs';
75
+ import './sessionOps-CdgbEJgf.mjs';
75
76
  import './resources-BdFBQi8r.mjs';
76
- import './tools-Cp0qJeBq.mjs';
77
- import './reportProgressTool-BLLwMQrN.mjs';
78
- import './client-C4ddTzrD.mjs';
77
+ import './tools-BrM3bZW5.mjs';
78
+ import './reportProgressTool-B203EZCR.mjs';
79
+ import './client-DG5ndWLw.mjs';
79
80
  import './precheckCompat-DeEbilbr.mjs';
80
81
  import './agentGuidance-BDYt2Qy2.mjs';
81
- import './peerTools-B_eiNB3P.mjs';
82
+ import './peerTools-CxmrKnfV.mjs';
82
83
  import './ids-DU6sLx4C.mjs';
83
- import './remoteSessionClient-CUjw1COc.mjs';
84
+ import './remoteSessionClient-D01Hso2-.mjs';
84
85
  import '@modelcontextprotocol/sdk/server/mcp.js';
85
86
  import 'node:http';
86
87
  import '@modelcontextprotocol/sdk/server/streamableHttp.js';
87
- import './downloadTarget-CUJg8iJV.mjs';
88
+ import './downloadTarget-ByXzbDK4.mjs';
88
89
  import './terminals-Dlg0x3nY.mjs';
89
90
  import './terminalTitleSuggest-CeKsX_V6.mjs';
90
91
  import './tmuxSocket-B8Yx20sT.mjs';
91
- import './bootstrap-CWjpC5-J.mjs';
92
+ import './bootstrap-C0s2bPFQ.mjs';
92
93
  import './previewPath-CXN4Vag0.mjs';
93
- import './spawnHappyCLI-DsC256j_.mjs';
94
+ import './spawnHappyCLI-B_0RWxD4.mjs';
94
95
  import './doctorReadiness-C208SMN9.mjs';
95
96
 
96
97
  function getStartedSubagents(state) {
@@ -102,13 +103,29 @@ function getActiveSubagents(state) {
102
103
  function getProviderSubagentToSessionSubagent(state) {
103
104
  return state.providerSubagentToSessionSubagent ?? /* @__PURE__ */ new Map();
104
105
  }
105
- function maybeEmitSubagentStart(subagent, opts, startedSubagents, activeSubagents, envelopes) {
106
- if (!subagent || startedSubagents.has(subagent)) {
106
+ function getLabeledSubagents(state) {
107
+ return state.labeledSubagents ?? /* @__PURE__ */ new Set();
108
+ }
109
+ function maybeEmitSubagentStart(subagent, opts, startedSubagents, activeSubagents, envelopes, label, labeledSubagents = /* @__PURE__ */ new Set()) {
110
+ if (!subagent) {
107
111
  return;
108
112
  }
109
- envelopes.push(createEnvelope("agent", { t: "start" }, { ...opts, subagent }));
113
+ if (startedSubagents.has(subagent)) {
114
+ if (label && !labeledSubagents.has(subagent)) {
115
+ envelopes.push(createEnvelope("agent", { t: "start", description: label }, { ...opts, subagent }));
116
+ labeledSubagents.add(subagent);
117
+ }
118
+ return;
119
+ }
120
+ envelopes.push(createEnvelope("agent", { t: "start", ...label ? { description: label } : {} }, { ...opts, subagent }));
110
121
  startedSubagents.add(subagent);
111
122
  activeSubagents.add(subagent);
123
+ if (label) labeledSubagents.add(subagent);
124
+ }
125
+ function subagentStopStatus(status) {
126
+ if (status === "failed") return "failed";
127
+ if (status === "interrupted" || status === "cancelled" || status === "canceled" || status === "aborted") return "stopped";
128
+ return "completed";
112
129
  }
113
130
  function emitSubagentStops(opts, startedSubagents, activeSubagents) {
114
131
  const envelopes = [];
@@ -134,6 +151,10 @@ function pickProviderSubagent(message) {
134
151
  }
135
152
  return void 0;
136
153
  }
154
+ function pickSubagentLabel(message) {
155
+ const label = message.subagent_label;
156
+ return typeof label === "string" && label.length > 0 ? label : void 0;
157
+ }
137
158
  function resolveSessionSubagent(message, providerSubagentToSessionSubagent) {
138
159
  const providerSubagent = pickProviderSubagent(message);
139
160
  if (!providerSubagent) {
@@ -412,14 +433,25 @@ function mapCodexMcpMessageToSessionEnvelopes(message, state) {
412
433
  const startedSubagents = getStartedSubagents(state);
413
434
  const activeSubagents = getActiveSubagents(state);
414
435
  const providerSubagentToSessionSubagent = getProviderSubagentToSessionSubagent(state);
436
+ const labeledSubagents = getLabeledSubagents(state);
415
437
  if (type === "collab_agent_item") {
416
- return {
417
- currentTurnId: state.currentTurnId,
418
- startedSubagents,
419
- activeSubagents,
420
- providerSubagentToSessionSubagent,
421
- envelopes: mapCodexCollaborationItem(message.item, buildEnvelopeOptions(state.currentTurnId), "live")
422
- };
438
+ const subagent2 = resolveSessionSubagent(message, providerSubagentToSessionSubagent);
439
+ const opts2 = buildEnvelopeOptions(state.currentTurnId, subagent2);
440
+ const envelopes = [];
441
+ maybeEmitSubagentStart(subagent2, opts2, startedSubagents, activeSubagents, envelopes, pickSubagentLabel(message), labeledSubagents);
442
+ envelopes.push(...mapCodexCollaborationItem(message.item, opts2, "live"));
443
+ return { currentTurnId: state.currentTurnId, startedSubagents, activeSubagents, providerSubagentToSessionSubagent, labeledSubagents, envelopes };
444
+ }
445
+ if (type === "subagent_turn_end") {
446
+ const providerSubagent = pickProviderSubagent(message);
447
+ const sessionSubagent = providerSubagent ? providerSubagentToSessionSubagent.get(providerSubagent) : void 0;
448
+ const envelopes = [];
449
+ if (sessionSubagent && activeSubagents.has(sessionSubagent)) {
450
+ envelopes.push(createEnvelope("agent", { t: "stop", status: subagentStopStatus(message.status) }, buildEnvelopeOptions(state.currentTurnId, sessionSubagent)));
451
+ activeSubagents.delete(sessionSubagent);
452
+ startedSubagents.delete(sessionSubagent);
453
+ }
454
+ return { currentTurnId: state.currentTurnId, startedSubagents, activeSubagents, providerSubagentToSessionSubagent, labeledSubagents, envelopes };
423
455
  }
424
456
  if (type === "task_started") {
425
457
  const turnId = createId();
@@ -427,11 +459,13 @@ function mapCodexMcpMessageToSessionEnvelopes(message, state) {
427
459
  startedSubagents.clear();
428
460
  activeSubagents.clear();
429
461
  providerSubagentToSessionSubagent.clear();
462
+ labeledSubagents.clear();
430
463
  return {
431
464
  currentTurnId: turnId,
432
465
  startedSubagents,
433
466
  activeSubagents,
434
467
  providerSubagentToSessionSubagent,
468
+ labeledSubagents,
435
469
  envelopes: [turnStart]
436
470
  };
437
471
  }
@@ -442,16 +476,19 @@ function mapCodexMcpMessageToSessionEnvelopes(message, state) {
442
476
  startedSubagents,
443
477
  activeSubagents,
444
478
  providerSubagentToSessionSubagent,
479
+ labeledSubagents,
445
480
  envelopes: []
446
481
  };
447
482
  }
448
483
  const lifecycleOpts = { turn: state.currentTurnId };
449
484
  providerSubagentToSessionSubagent.clear();
485
+ labeledSubagents.clear();
450
486
  return {
451
487
  currentTurnId: null,
452
488
  startedSubagents,
453
489
  activeSubagents,
454
490
  providerSubagentToSessionSubagent,
491
+ labeledSubagents,
455
492
  envelopes: [
456
493
  ...emitSubagentStops(lifecycleOpts, startedSubagents, activeSubagents),
457
494
  createEnvelope("agent", {
@@ -467,6 +504,7 @@ function mapCodexMcpMessageToSessionEnvelopes(message, state) {
467
504
  startedSubagents,
468
505
  activeSubagents,
469
506
  providerSubagentToSessionSubagent,
507
+ labeledSubagents,
470
508
  envelopes: []
471
509
  };
472
510
  }
@@ -479,17 +517,19 @@ function mapCodexMcpMessageToSessionEnvelopes(message, state) {
479
517
  startedSubagents,
480
518
  activeSubagents,
481
519
  providerSubagentToSessionSubagent,
520
+ labeledSubagents,
482
521
  envelopes: []
483
522
  };
484
523
  }
485
524
  const envelopes = [];
486
- maybeEmitSubagentStart(subagent, opts, startedSubagents, activeSubagents, envelopes);
525
+ maybeEmitSubagentStart(subagent, opts, startedSubagents, activeSubagents, envelopes, pickSubagentLabel(message), labeledSubagents);
487
526
  envelopes.push(createEnvelope("agent", { t: "text", text: message.message }, opts));
488
527
  return {
489
528
  currentTurnId: state.currentTurnId,
490
529
  startedSubagents,
491
530
  activeSubagents,
492
531
  providerSubagentToSessionSubagent,
532
+ labeledSubagents,
493
533
  envelopes
494
534
  };
495
535
  }
@@ -501,17 +541,19 @@ function mapCodexMcpMessageToSessionEnvelopes(message, state) {
501
541
  startedSubagents,
502
542
  activeSubagents,
503
543
  providerSubagentToSessionSubagent,
544
+ labeledSubagents,
504
545
  envelopes: []
505
546
  };
506
547
  }
507
548
  const envelopes = [];
508
- maybeEmitSubagentStart(subagent, opts, startedSubagents, activeSubagents, envelopes);
549
+ maybeEmitSubagentStart(subagent, opts, startedSubagents, activeSubagents, envelopes, pickSubagentLabel(message), labeledSubagents);
509
550
  envelopes.push(createEnvelope("agent", { t: "text", text, thinking: true }, opts));
510
551
  return {
511
552
  currentTurnId: state.currentTurnId,
512
553
  startedSubagents,
513
554
  activeSubagents,
514
555
  providerSubagentToSessionSubagent,
556
+ labeledSubagents,
515
557
  envelopes
516
558
  };
517
559
  }
@@ -521,7 +563,7 @@ function mapCodexMcpMessageToSessionEnvelopes(message, state) {
521
563
  const command = summarizeCommand(args.command);
522
564
  const description = typeof args.description === "string" ? args.description : command ?? "Execute command";
523
565
  const envelopes = [];
524
- maybeEmitSubagentStart(subagent, opts, startedSubagents, activeSubagents, envelopes);
566
+ maybeEmitSubagentStart(subagent, opts, startedSubagents, activeSubagents, envelopes, pickSubagentLabel(message), labeledSubagents);
525
567
  envelopes.push(
526
568
  createEnvelope("agent", {
527
569
  t: "tool-call-start",
@@ -537,19 +579,21 @@ function mapCodexMcpMessageToSessionEnvelopes(message, state) {
537
579
  startedSubagents,
538
580
  activeSubagents,
539
581
  providerSubagentToSessionSubagent,
582
+ labeledSubagents,
540
583
  envelopes
541
584
  };
542
585
  }
543
586
  if (type === "exec_command_end") {
544
587
  const call = pickCallId(message);
545
588
  const envelopes = [];
546
- maybeEmitSubagentStart(subagent, opts, startedSubagents, activeSubagents, envelopes);
589
+ maybeEmitSubagentStart(subagent, opts, startedSubagents, activeSubagents, envelopes, pickSubagentLabel(message), labeledSubagents);
547
590
  envelopes.push(createEnvelope("agent", { t: "tool-call-end", call }, opts));
548
591
  return {
549
592
  currentTurnId: state.currentTurnId,
550
593
  startedSubagents,
551
594
  activeSubagents,
552
595
  providerSubagentToSessionSubagent,
596
+ labeledSubagents,
553
597
  envelopes
554
598
  };
555
599
  }
@@ -558,7 +602,7 @@ function mapCodexMcpMessageToSessionEnvelopes(message, state) {
558
602
  const autoApproved = message.auto_approved;
559
603
  const changes = message.changes;
560
604
  const envelopes = [];
561
- maybeEmitSubagentStart(subagent, opts, startedSubagents, activeSubagents, envelopes);
605
+ maybeEmitSubagentStart(subagent, opts, startedSubagents, activeSubagents, envelopes, pickSubagentLabel(message), labeledSubagents);
562
606
  envelopes.push(
563
607
  createEnvelope("agent", {
564
608
  t: "tool-call-start",
@@ -577,19 +621,21 @@ function mapCodexMcpMessageToSessionEnvelopes(message, state) {
577
621
  startedSubagents,
578
622
  activeSubagents,
579
623
  providerSubagentToSessionSubagent,
624
+ labeledSubagents,
580
625
  envelopes
581
626
  };
582
627
  }
583
628
  if (type === "patch_apply_end") {
584
629
  const call = pickCallId(message);
585
630
  const envelopes = [];
586
- maybeEmitSubagentStart(subagent, opts, startedSubagents, activeSubagents, envelopes);
631
+ maybeEmitSubagentStart(subagent, opts, startedSubagents, activeSubagents, envelopes, pickSubagentLabel(message), labeledSubagents);
587
632
  envelopes.push(createEnvelope("agent", { t: "tool-call-end", call }, opts));
588
633
  return {
589
634
  currentTurnId: state.currentTurnId,
590
635
  startedSubagents,
591
636
  activeSubagents,
592
637
  providerSubagentToSessionSubagent,
638
+ labeledSubagents,
593
639
  envelopes
594
640
  };
595
641
  }
@@ -598,6 +644,7 @@ function mapCodexMcpMessageToSessionEnvelopes(message, state) {
598
644
  startedSubagents,
599
645
  activeSubagents,
600
646
  providerSubagentToSessionSubagent,
647
+ labeledSubagents,
601
648
  envelopes: []
602
649
  };
603
650
  }
@@ -929,29 +976,6 @@ const CodexDisplay = ({ messageBuffer, logPath, onExit }) => {
929
976
  ));
930
977
  };
931
978
 
932
- async function settleCodexSession(session, intent, deactivate, log = () => {
933
- }) {
934
- if (intent === "archive") {
935
- session.updateMetadata((currentMetadata) => ({
936
- ...currentMetadata,
937
- lifecycleState: "archived",
938
- lifecycleStateSince: Date.now(),
939
- archivedBy: "cli",
940
- archiveReason: "User terminated"
941
- }));
942
- }
943
- session.sendSessionDeath();
944
- await session.flush();
945
- if (intent === "offline") {
946
- try {
947
- await deactivate(session.sessionId);
948
- } catch (error) {
949
- log("[Codex] deactivate on signal failed", error);
950
- }
951
- }
952
- await session.close();
953
- }
954
-
955
979
  function resolveCodexExecutionPolicy(permissionMode, sandboxManagedByHappy) {
956
980
  if (sandboxManagedByHappy) {
957
981
  return {
@@ -1248,6 +1272,27 @@ function enqueueCodexUserText(opts) {
1248
1272
  return "queued";
1249
1273
  }
1250
1274
 
1275
+ async function steerIntoRunningTurn(deps, text, attachments, localKey) {
1276
+ if (!deps.ownsTurn()) return false;
1277
+ const staged = attachments?.length ? await deps.stage(attachments) : [];
1278
+ try {
1279
+ const outcome = await deps.steer({
1280
+ text: deps.withAttachments(text, staged),
1281
+ images: staged.filter((file) => deps.isImage(file)).map((file) => file.path),
1282
+ clientId: localKey
1283
+ });
1284
+ if (outcome === "steered") {
1285
+ deps.onSteered(text);
1286
+ return true;
1287
+ }
1288
+ deps.log(`[Codex] Steer not taken (${outcome}); queuing the message for the next turn`);
1289
+ } catch (error) {
1290
+ deps.log(`[Codex] Steer failed; queuing the message for the next turn: ${error instanceof Error ? error.message : String(error)}`);
1291
+ }
1292
+ await Promise.all(staged.map((file) => deps.unlink(file.path).catch(() => void 0)));
1293
+ return false;
1294
+ }
1295
+
1251
1296
  function hashCodexEnhancedMode(mode) {
1252
1297
  return hashObject({
1253
1298
  permissionMode: mode.permissionMode,
@@ -1349,7 +1394,7 @@ async function runCodex(opts) {
1349
1394
  dangerouslySkipPermissions: initialPermissionMode === "yolo" || initialPermissionMode === "bypassPermissions",
1350
1395
  ...forkedFromSessionId ? { parentSessionId: forkedFromSessionId } : {},
1351
1396
  ...forkedFromMessageId ? { forkedFromMessageId } : {},
1352
- capabilities: [PROMPT_QUEUE_CAPABILITY, FORK_BACKFILL_CAPABILITY, HIBERNATION_CAPABILITY]
1397
+ capabilities: [PROMPT_QUEUE_CAPABILITY, FORK_BACKFILL_CAPABILITY, HIBERNATION_CAPABILITY, CODEX_STEER_CAPABILITY]
1353
1398
  });
1354
1399
  metadata.attachmentKinds = [...CLAUDE_ATTACHMENT_KINDS];
1355
1400
  const importCodexThreadId = process.env[IMPORT_CODEX_THREAD_ENV];
@@ -1480,6 +1525,20 @@ async function runCodex(opts) {
1480
1525
  ];
1481
1526
  let discoveredModels = [];
1482
1527
  registerAgentAttachmentDownloads(session);
1528
+ const CODEX_IMAGE_MIME_TYPES = ["image/jpeg", "image/png", "image/gif", "image/webp"];
1529
+ const steerDeps = {
1530
+ ownsTurn: () => turnActive && !abortInProgress && !shouldExit,
1531
+ steer: (input) => client.steerTurn(input),
1532
+ stage: (attachments) => stageClaudeAttachments(attachments, {
1533
+ happyHomeDir: configuration.happyHomeDir,
1534
+ sessionId: session.sessionId
1535
+ }),
1536
+ withAttachments: appendStagedAttachmentsToPrompt,
1537
+ unlink: (path) => unlink(path),
1538
+ isImage: (file) => CODEX_IMAGE_MIME_TYPES.includes(file.mimeType),
1539
+ onSteered: (text) => messageBuffer.addMessage(text, "user"),
1540
+ log: (message) => logger.debug(message)
1541
+ };
1483
1542
  let userMessageDelivery = Promise.resolve();
1484
1543
  session.onUserMessage((message) => {
1485
1544
  const downloads = session.drainAttachmentsForUserMessage();
@@ -1537,6 +1596,12 @@ async function runCodex(opts) {
1537
1596
  appendSystemPrompt: messageAppendSystemPrompt,
1538
1597
  effort: messageEffort
1539
1598
  };
1599
+ if (message.meta?.delivery === "steer" && !isCodexClearText(message.content.text)) {
1600
+ if (await steerIntoRunningTurn(steerDeps, message.content.text, attachments, message.localKey)) {
1601
+ logger.debug("[Codex] User message steered into the current turn");
1602
+ return;
1603
+ }
1604
+ }
1540
1605
  const enqueueResult = enqueueCodexUserText({
1541
1606
  text: message.content.text,
1542
1607
  mode: enhancedMode,
@@ -1557,6 +1622,7 @@ async function runCodex(opts) {
1557
1622
  let codexStartedSubagents = /* @__PURE__ */ new Set();
1558
1623
  let codexActiveSubagents = /* @__PURE__ */ new Set();
1559
1624
  let codexProviderSubagentToSessionSubagent = /* @__PURE__ */ new Map();
1625
+ let codexLabeledSubagents = /* @__PURE__ */ new Set();
1560
1626
  session.keepAlive(thinking, "remote");
1561
1627
  const keepAliveInterval = setInterval(() => {
1562
1628
  session.keepAlive(thinking, "remote");
@@ -1778,6 +1844,12 @@ async function runCodex(opts) {
1778
1844
  const notice = describeCodexRetry(msg);
1779
1845
  messageBuffer.addMessage(notice, "status");
1780
1846
  session.sendSessionEvent({ type: "message", message: notice });
1847
+ } else if (msg.type === "steer_dropped") {
1848
+ const clientIds = Array.isArray(msg.client_ids) ? msg.client_ids.filter((id) => typeof id === "string" && id.length > 0) : [];
1849
+ if (clientIds.length > 0) {
1850
+ session.sendQueueCancelReason(clientIds, "aborted");
1851
+ messageBuffer.addMessage("A steered message was not read before the turn ended", "status");
1852
+ }
1781
1853
  }
1782
1854
  if (msg.type === "task_started") {
1783
1855
  if (!thinking) {
@@ -1832,12 +1904,14 @@ async function runCodex(opts) {
1832
1904
  currentTurnId,
1833
1905
  startedSubagents: codexStartedSubagents,
1834
1906
  activeSubagents: codexActiveSubagents,
1835
- providerSubagentToSessionSubagent: codexProviderSubagentToSessionSubagent
1907
+ providerSubagentToSessionSubagent: codexProviderSubagentToSessionSubagent,
1908
+ labeledSubagents: codexLabeledSubagents
1836
1909
  });
1837
1910
  currentTurnId = mapped.currentTurnId;
1838
1911
  codexStartedSubagents = mapped.startedSubagents;
1839
1912
  codexActiveSubagents = mapped.activeSubagents;
1840
1913
  codexProviderSubagentToSessionSubagent = mapped.providerSubagentToSessionSubagent;
1914
+ codexLabeledSubagents = mapped.labeledSubagents;
1841
1915
  for (const envelope of mapped.envelopes) {
1842
1916
  session.sendSessionProtocolMessage(envelope);
1843
1917
  }
@@ -2005,6 +2079,7 @@ async function runCodex(opts) {
2005
2079
  codexStartedSubagents = /* @__PURE__ */ new Set();
2006
2080
  codexActiveSubagents = /* @__PURE__ */ new Set();
2007
2081
  codexProviderSubagentToSessionSubagent = /* @__PURE__ */ new Map();
2082
+ codexLabeledSubagents = /* @__PURE__ */ new Set();
2008
2083
  permissionHandler.reset();
2009
2084
  reasoningProcessor.abort();
2010
2085
  diffProcessor.reset();
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var node_crypto = require('node:crypto');
4
- var logger = require('./logger-C7dRaCkE.cjs');
4
+ var logger = require('./logger-LvwVeATU.cjs');
5
5
 
6
6
  class BaseReasoningProcessor {
7
7
  accumulator = "";
@@ -197,4 +197,28 @@ class BaseReasoningProcessor {
197
197
  }
198
198
  }
199
199
 
200
+ async function settleCodexSession(session, intent, deactivate, log = () => {
201
+ }) {
202
+ if (intent === "archive") {
203
+ session.updateMetadata((currentMetadata) => ({
204
+ ...currentMetadata,
205
+ lifecycleState: "archived",
206
+ lifecycleStateSince: Date.now(),
207
+ archivedBy: "cli",
208
+ archiveReason: "User terminated"
209
+ }));
210
+ }
211
+ session.sendSessionDeath();
212
+ await session.flush();
213
+ if (intent === "offline") {
214
+ try {
215
+ await deactivate(session.sessionId);
216
+ } catch (error) {
217
+ log("[Codex] deactivate on signal failed", error);
218
+ }
219
+ }
220
+ await session.close();
221
+ }
222
+
200
223
  exports.BaseReasoningProcessor = BaseReasoningProcessor;
224
+ exports.settleCodexSession = settleCodexSession;
@@ -1,5 +1,5 @@
1
1
  import { randomUUID } from 'node:crypto';
2
- import { l as logger } from './logger-D5EzMy30.mjs';
2
+ import { l as logger } from './logger-13cBr_ew.mjs';
3
3
 
4
4
  class BaseReasoningProcessor {
5
5
  accumulator = "";
@@ -195,4 +195,27 @@ class BaseReasoningProcessor {
195
195
  }
196
196
  }
197
197
 
198
- export { BaseReasoningProcessor as B };
198
+ async function settleCodexSession(session, intent, deactivate, log = () => {
199
+ }) {
200
+ if (intent === "archive") {
201
+ session.updateMetadata((currentMetadata) => ({
202
+ ...currentMetadata,
203
+ lifecycleState: "archived",
204
+ lifecycleStateSince: Date.now(),
205
+ archivedBy: "cli",
206
+ archiveReason: "User terminated"
207
+ }));
208
+ }
209
+ session.sendSessionDeath();
210
+ await session.flush();
211
+ if (intent === "offline") {
212
+ try {
213
+ await deactivate(session.sessionId);
214
+ } catch (error) {
215
+ log("[Codex] deactivate on signal failed", error);
216
+ }
217
+ }
218
+ await session.close();
219
+ }
220
+
221
+ export { BaseReasoningProcessor as B, settleCodexSession as s };
@@ -2,15 +2,15 @@ import { existsSync, readFileSync, mkdirSync, writeFileSync } from 'fs';
2
2
  import { join } from 'path';
3
3
  import { homedir } from 'os';
4
4
  import { execSync } from 'child_process';
5
- import { l as logger } from './logger-D5EzMy30.mjs';
5
+ import { l as logger } from './logger-13cBr_ew.mjs';
6
6
  import { D as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './constants-BC4St0xd.mjs';
7
7
  import 'chalk';
8
8
  import 'node:util';
9
- import './configuration-BNGPXg07.mjs';
9
+ import './configuration-D55F0t16.mjs';
10
10
  import 'node:fs';
11
11
  import 'node:os';
12
12
  import 'node:path';
13
- import './package-D0dxZ-W8.mjs';
13
+ import './package-CjlsAaRe.mjs';
14
14
  import 'node:fs/promises';
15
15
  import './trimIdent-BAjmv_TG.mjs';
16
16
 
@@ -4,15 +4,15 @@ var fs = require('fs');
4
4
  var path = require('path');
5
5
  var os = require('os');
6
6
  var child_process = require('child_process');
7
- var logger = require('./logger-C7dRaCkE.cjs');
7
+ var logger = require('./logger-LvwVeATU.cjs');
8
8
  var constants = require('./constants-VJ0N6WuG.cjs');
9
9
  require('chalk');
10
10
  require('node:util');
11
- require('./configuration-UV4EE5ui.cjs');
11
+ require('./configuration-DZPy0T9Z.cjs');
12
12
  require('node:fs');
13
13
  require('node:os');
14
14
  require('node:path');
15
- require('./package-VqWv7EI5.cjs');
15
+ require('./package-Ch9WGDV_.cjs');
16
16
  require('node:fs/promises');
17
17
  require('./trimIdent-4gvk9Wk6.cjs');
18
18
 
@@ -1,7 +1,7 @@
1
1
  import { mkdirSync, chmodSync, readdirSync, statSync, appendFileSync, writeFileSync, existsSync, readFileSync } from 'node:fs';
2
2
  import { homedir } from 'node:os';
3
3
  import { join } from 'node:path';
4
- import { p as packageJson } from './package-D0dxZ-W8.mjs';
4
+ import { p as packageJson } from './package-CjlsAaRe.mjs';
5
5
  import { mkdir, chmod, writeFile } from 'node:fs/promises';
6
6
 
7
7
  const PRIVATE_DIRECTORY_MODE = 448;
@@ -3,7 +3,7 @@
3
3
  var node_fs = require('node:fs');
4
4
  var os = require('node:os');
5
5
  var path = require('node:path');
6
- var _package = require('./package-VqWv7EI5.cjs');
6
+ var _package = require('./package-Ch9WGDV_.cjs');
7
7
  var promises = require('node:fs/promises');
8
8
 
9
9
  const PRIVATE_DIRECTORY_MODE = 448;