very-happy-cli 0.2.189 → 0.2.190

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 (199) hide show
  1. package/dist/{AcpBackend-fj16v_cf.mjs → AcpBackend-Dd1h-Rgt.mjs} +3 -3
  2. package/dist/{AcpBackend-DRPJ2g9G.cjs → AcpBackend-dkRv9QHm.cjs} +3 -3
  3. package/dist/{AcpSessionManager-DM-KKg6v.cjs → AcpSessionManager-AqWAqahm.cjs} +1 -1
  4. package/dist/{AcpSessionManager-BZPmUDL5.mjs → AcpSessionManager-QBZ-CIf7.mjs} +2 -2
  5. package/dist/{BasePermissionHandler-CVtH-snr.mjs → BasePermissionHandler-CLp1ge-4.mjs} +1 -1
  6. package/dist/{BasePermissionHandler-DjM16uJz.cjs → BasePermissionHandler-CpSugp7Z.cjs} +1 -1
  7. package/dist/{acpSessionResume-2BTMsB7_.cjs → acpSessionResume-CZao6QEd.cjs} +1 -1
  8. package/dist/{acpSessionResume-Dxl1LRAT.mjs → acpSessionResume-CcpDuIO5.mjs} +1 -1
  9. package/dist/{agentHome-CHctmMzZ.mjs → agentHome-BJGRA2Kx.mjs} +4 -4
  10. package/dist/{agentHome-W17n1gnH.cjs → agentHome-fIUqT-pn.cjs} +4 -4
  11. package/dist/{api-BDuuyys8.cjs → api-CXL6jp-p.cjs} +18 -9
  12. package/dist/{api-B0yN68XH.mjs → api-Dw8gFsQi.mjs} +19 -10
  13. package/dist/{apiMachine-mc9CsKuS.mjs → apiMachine-BBNEtjf7.mjs} +56 -15
  14. package/dist/{apiMachine-iddD-F19.cjs → apiMachine-C6UqHoPF.cjs} +55 -14
  15. package/dist/{attachmentContent-CcIdMfAx.mjs → attachmentContent-CC4yIrSm.mjs} +2 -2
  16. package/dist/{attachmentContent-Cc5b7TPr.cjs → attachmentContent-NmVfKp-B.cjs} +2 -2
  17. package/dist/{auth-DQKSpaEf.cjs → auth-Bb_SL2os.cjs} +5 -5
  18. package/dist/{auth-DNAgkUkB.mjs → auth-Bh6SUoGi.mjs} +8 -8
  19. package/dist/{auth-CyrVvWHF.mjs → auth-Bj0psrD2.mjs} +5 -5
  20. package/dist/{auth-B7tVmyfX.cjs → auth-DKa4MsAi.cjs} +8 -8
  21. package/dist/{auto-CetlumDo.cjs → auto-C9Qohh0P.cjs} +15 -15
  22. package/dist/{auto-BklCipw1.mjs → auto-DK7pbCnV.mjs} +18 -18
  23. package/dist/{bootstrap-DfXwkUQb.mjs → bootstrap-Ct9Nb4sv.mjs} +2 -2
  24. package/dist/{bootstrap-CDY-Vz8q.cjs → bootstrap-DBJB0y-H.cjs} +2 -2
  25. package/dist/{browser-vb0k1zfI.mjs → browser-BGxDRhHy.mjs} +1 -1
  26. package/dist/{browser-D1yzC0Tu.cjs → browser-CLJWcodR.cjs} +1 -1
  27. package/dist/{claudeLocal-2dJIiTIq.cjs → claudeLocal-B6YDYlnY.cjs} +4 -4
  28. package/dist/{claudeLocal-Bid_rC_v.mjs → claudeLocal-Ux31hZyC.mjs} +5 -5
  29. package/dist/{claudeLocalLauncher-5pzpETxd.mjs → claudeLocalLauncher-D06QijMw.mjs} +10 -10
  30. package/dist/{claudeLocalLauncher-Jm5oQX5Z.cjs → claudeLocalLauncher-DFvmF8rC.cjs} +9 -9
  31. package/dist/{claudeSessionFork-DzecSBO4.mjs → claudeSessionFork-D2GI7P59.mjs} +1 -1
  32. package/dist/{claudeSessionFork-DsbcuDEJ.cjs → claudeSessionFork-DTLZ2rek.cjs} +1 -1
  33. package/dist/{client-D0aYWt53.cjs → client-Bffkrs5p.cjs} +2 -2
  34. package/dist/{client-BNmFaRXZ.cjs → client-CARZ_lNS.cjs} +3 -3
  35. package/dist/{client-DIfxYk7B.cjs → client-CMKGrnmT.cjs} +2 -2
  36. package/dist/{client-B161HwAk.mjs → client-CnGNYidN.mjs} +2 -2
  37. package/dist/{client-C9Ecbtko.mjs → client-CtL0Vtww.mjs} +4 -4
  38. package/dist/{client-CvjjadIE.mjs → client-DZkBUoh9.mjs} +2 -2
  39. package/dist/codex/happyMcpStdioBridge.cjs +15 -15
  40. package/dist/codex/happyMcpStdioBridge.mjs +16 -16
  41. package/dist/{codexAppServerClient-BlVmpjR-.mjs → codexAppServerClient-CLc5nhLT.mjs} +13 -6
  42. package/dist/{codexAppServerClient-CO9f4Jr8.cjs → codexAppServerClient-CpT9F6EM.cjs} +13 -6
  43. package/dist/{codexCommand-BfoRP6E9.cjs → codexCommand-39kH99SJ.cjs} +72 -48
  44. package/dist/{codexCommand-CAMR4g5o.mjs → codexCommand-Dliq3EBv.mjs} +69 -45
  45. package/dist/{codexTermination-IrLZQzKC.cjs → codexTermination-ByW7tRjr.cjs} +1 -1
  46. package/dist/{codexTermination-BvGlN02_.mjs → codexTermination-ORIw0gpU.mjs} +1 -1
  47. package/dist/{codexThreadFork-DNekT4nQ.cjs → codexThreadFork-5kwoKjMu.cjs} +11 -17
  48. package/dist/{codexThreadFork-R76RU5H0.mjs → codexThreadFork-DobPd19R.mjs} +11 -17
  49. package/dist/{config-BGFqQGvh.cjs → config-CeIzCsfj.cjs} +3 -3
  50. package/dist/{config-CtMgGPvf.mjs → config-CxSsGO1Z.mjs} +3 -3
  51. package/dist/{configuration-1FabKklB.mjs → configuration-Dechcvd-.mjs} +1 -1
  52. package/dist/{configuration-C0ctLGW2.cjs → configuration-Dt5lKW3P.cjs} +1 -1
  53. package/dist/{connect-DSw-2f52.cjs → connect-NPDzIVC6.cjs} +12 -12
  54. package/dist/{connect-0lSugpjf.mjs → connect-UwQHvCpR.mjs} +13 -13
  55. package/dist/{context-D-hEk5pC.cjs → context-BdZssgF0.cjs} +1 -1
  56. package/dist/{context-BgxbXWKS.mjs → context-C9JbJoNe.mjs} +1 -1
  57. package/dist/{controlClient-F7hAEEy2.cjs → controlClient-BRk65BRO.cjs} +3 -3
  58. package/dist/{controlClient-DwNnNAUx.mjs → controlClient-D7NGfmtq.mjs} +3 -3
  59. package/dist/{createSessionMetadata-DezS33OM.cjs → createSessionMetadata-B_HZCDj_.cjs} +2 -2
  60. package/dist/{createSessionMetadata-CG6Klinp.mjs → createSessionMetadata-DyhFKAby.mjs} +2 -2
  61. package/dist/defaultPermissionMode-BnxJPVHT.mjs +4 -0
  62. package/dist/defaultPermissionMode-CxmTXUQR.cjs +7 -0
  63. package/dist/{deterministicJson-D0LU_XbO.cjs → deterministicJson-BEygolBQ.cjs} +12 -12
  64. package/dist/{deterministicJson-BMwgK21e.mjs → deterministicJson-DNmMVhFu.mjs} +13 -13
  65. package/dist/{doctor-wVNvRarN.cjs → doctor-B9lW1WlG.cjs} +7 -7
  66. package/dist/{doctor-D16hySse.mjs → doctor-BdBi7TFZ.mjs} +7 -7
  67. package/dist/{downloadTarget-C6tqaXGm.mjs → downloadTarget-CGojGjaN.mjs} +6 -6
  68. package/dist/{downloadTarget-aNcCxVRL.cjs → downloadTarget-DS0zT2AU.cjs} +6 -6
  69. package/dist/{ensureDaemonRunning-DZq8bvsp.mjs → ensureDaemonRunning-BOdbryDM.mjs} +5 -5
  70. package/dist/{ensureDaemonRunning-CIghxgDR.cjs → ensureDaemonRunning-Bibp6vhe.cjs} +5 -5
  71. package/dist/exitAfterFlush-AbKNZM0N.mjs +23 -0
  72. package/dist/exitAfterFlush-DIT_sIxR.cjs +25 -0
  73. package/dist/{handleResumeCommand-BNnD7EuD.mjs → handleResumeCommand-CgLzBYne.mjs} +5 -5
  74. package/dist/{handleResumeCommand-CMUTygsm.cjs → handleResumeCommand-DXOuWr4p.cjs} +5 -5
  75. package/dist/{agentAttachments-Dbw8iMCZ.cjs → heldInput-BOtqFO2r.cjs} +27 -0
  76. package/dist/heldInput-C69lA2dH.mjs +44 -0
  77. package/dist/{index-De02DNu5.cjs → index-Bs5FD8JF.cjs} +4 -4
  78. package/dist/{index-BuiG8hmg.mjs → index-CBHfkQNY.mjs} +133 -54
  79. package/dist/{index-4TpmBb2Q.cjs → index-CwRW11hT.cjs} +3 -3
  80. package/dist/{index-Df0bc_et.mjs → index-DUByZsKe.mjs} +4 -4
  81. package/dist/{index-B81qV_F_.cjs → index-DXSIi6j_.cjs} +4 -4
  82. package/dist/{index-BCQr-5Ei.mjs → index-Db0HIC-k.mjs} +4 -4
  83. package/dist/{index-WKyN-bNy.mjs → index-DmqsRnV7.mjs} +1 -1
  84. package/dist/{index-CnzsOD19.cjs → index-f8oDidjV.cjs} +131 -52
  85. package/dist/{index-CKd20r1W.mjs → index-rNTX33in.mjs} +3 -3
  86. package/dist/index.cjs +2 -2
  87. package/dist/index.mjs +2 -2
  88. package/dist/{install-DNbIEJUk.cjs → install-CXIL_FYx.cjs} +3 -3
  89. package/dist/{install-23ehAdTD.mjs → install-DfPrEWGG.mjs} +3 -3
  90. package/dist/lib.cjs +11 -11
  91. package/dist/lib.d.cts +53 -1
  92. package/dist/lib.d.mts +53 -1
  93. package/dist/lib.mjs +12 -12
  94. package/dist/{lidState-q5Its2Hm.mjs → lidState-D0DF20oG.mjs} +1 -1
  95. package/dist/{lidState-B4dHJCeS.cjs → lidState-q_XFYg33.cjs} +1 -1
  96. package/dist/{localHappyAgentAuth-C_G5u5lY.mjs → localHappyAgentAuth-BBhM4Qk1.mjs} +1 -1
  97. package/dist/{localHappyAgentAuth-CG2nPD_H.cjs → localHappyAgentAuth-CKNW-MXw.cjs} +1 -1
  98. package/dist/{logger-BP1SW7Cs.cjs → logger-BBRTTVsQ.cjs} +2 -2
  99. package/dist/{logger-DOKH3Zbh.mjs → logger-CL7pin9b.mjs} +2 -2
  100. package/dist/{machineMetadata-D-5qeIqd.mjs → machineMetadata-DP06qdBk.mjs} +3 -3
  101. package/dist/{machineMetadata-BKX3ov9g.cjs → machineMetadata-DnFNlrVK.cjs} +3 -3
  102. package/dist/{main-ndpVIaSG.cjs → main-DLOXykOR.cjs} +49 -48
  103. package/dist/{main-DODz8DQE.mjs → main-DO7nRvhf.mjs} +49 -48
  104. package/dist/{mcp-BBwbSODp.mjs → mcp-C-4sPTae.mjs} +15 -15
  105. package/dist/{mcp-Bc4U4exu.cjs → mcp-Du0MgR7e.cjs} +14 -14
  106. package/dist/{mirrorProtocol-CiA3hO2y.cjs → mirrorProtocol-GuWMxLkh.cjs} +2 -2
  107. package/dist/{mirrorProtocol-D2vTWteS.mjs → mirrorProtocol-dkq2ZENA.mjs} +3 -3
  108. package/dist/{package-DTcaIhjW.mjs → package-C6uiXULx.mjs} +7 -7
  109. package/dist/{package-CYDdLA6R.cjs → package-DrY090nZ.cjs} +7 -7
  110. package/dist/{panels-C2xZ8rqU.cjs → panels-4DRBKHZP.cjs} +5 -5
  111. package/dist/{panels-DCaLxlSL.mjs → panels-DXYdJA6n.mjs} +5 -5
  112. package/dist/{peerTools-B4315xjX.cjs → peerTools-5ZM4spcZ.cjs} +5 -5
  113. package/dist/{peerTools-BtrUnSwz.mjs → peerTools-dY1aJez4.mjs} +5 -5
  114. package/dist/{persistence-CrzC7yr_.cjs → persistence-Bl5S3TLB.cjs} +6 -2
  115. package/dist/{persistence-0INrP3aB.mjs → persistence-Dogj7JIp.mjs} +6 -3
  116. package/dist/{piRunnerArgs-BtzW_kfh.cjs → piRunnerArgs-C3jZ1M6b.cjs} +1 -1
  117. package/dist/{piRunnerArgs-DRuxMlX1.mjs → piRunnerArgs-D8nN_Iit.mjs} +1 -1
  118. package/dist/{piRuntime-DEbPE_kW.cjs → piRuntime-Bd9-eq6M.cjs} +1 -1
  119. package/dist/{piRuntime-BMAFpIBV.mjs → piRuntime-BoeMsAXK.mjs} +1 -1
  120. package/dist/{piTerminal-MtxDtBE2.cjs → piTerminal-C3j1ca3x.cjs} +16 -16
  121. package/dist/{piTerminal-DQXV8_we.mjs → piTerminal-GEPkIGD4.mjs} +17 -17
  122. package/dist/{pushNotifications-CalIS9sq.cjs → pushNotifications-CfspRcl-.cjs} +20 -2
  123. package/dist/{pushNotifications-Cq1s8YVK.mjs → pushNotifications-dUceOIni.mjs} +21 -3
  124. package/dist/{query-CE2XDhhw.cjs → query-DjsVgG3E.cjs} +1 -1
  125. package/dist/{query-BYiPBHPC.mjs → query-iYH-tm7L.mjs} +1 -1
  126. package/dist/{rateLimitReporter-BKmoOZQi.cjs → rateLimitReporter-DUu2KydZ.cjs} +3 -3
  127. package/dist/{rateLimitReporter-DR5LXuiQ.mjs → rateLimitReporter-jeVi-fym.mjs} +3 -3
  128. package/dist/{rateLimitWindows-Cs56YJCH.cjs → rateLimitWindows-Bx3ROBP5.cjs} +1 -1
  129. package/dist/{rateLimitWindows-5vIuNjko.mjs → rateLimitWindows-CEn0DXaX.mjs} +1 -1
  130. package/dist/{registerCommonHandlers-DZPozYxc.cjs → registerCommonHandlers-Beun-cQv.cjs} +2 -2
  131. package/dist/{registerCommonHandlers-DWkTysjD.mjs → registerCommonHandlers-DWZ7mfdt.mjs} +2 -2
  132. package/dist/{registerKillSessionHandler-DhCjrs44.cjs → registerKillSessionHandler-CA1FFr_F.cjs} +15 -5
  133. package/dist/{registerKillSessionHandler-CSCTRIbI.mjs → registerKillSessionHandler-CzgklwLG.mjs} +16 -6
  134. package/dist/{remoteSessionClient-Vfj_5g2-.mjs → remoteSessionClient-BiC2KDew.mjs} +5 -5
  135. package/dist/{remoteSessionClient-Dq8XTLQP.cjs → remoteSessionClient-DGFI__5Z.cjs} +5 -5
  136. package/dist/{reportProgressTool-B7zmX7NJ.mjs → reportProgressTool-CgPy6n_7.mjs} +3 -3
  137. package/dist/{reportProgressTool-DznxPKES.cjs → reportProgressTool-CvPGov1F.cjs} +2 -2
  138. package/dist/{run-DSfNcR62.mjs → run-B_gFgJVB.mjs} +392 -42
  139. package/dist/{run-Ca8BiNCp.cjs → run-rPqQwDi_.cjs} +389 -39
  140. package/dist/{runClaude-hoepv-0X.mjs → runClaude-CykqeXK7.mjs} +26 -23
  141. package/dist/{runClaude-ClQQcgoO.cjs → runClaude-DM8gm8iu.cjs} +27 -24
  142. package/dist/{runClaudeDeps-D_v8t2SK.mjs → runClaudeDeps-D2phXGut.mjs} +101 -44
  143. package/dist/{runClaudeDeps-ck5_GYlP.cjs → runClaudeDeps-DGAomimZ.cjs} +94 -37
  144. package/dist/{runGemini-Cj0XsMiM.cjs → runGemini-CXTeSOZp.cjs} +32 -32
  145. package/dist/{runGemini-CTr2-cYG.mjs → runGemini-CtWCVkj5.mjs} +33 -33
  146. package/dist/{runOpenClaw-CdDMntiV.mjs → runOpenClaw-BBdjlViJ.mjs} +18 -18
  147. package/dist/{runOpenClaw-BoN1e3lP.cjs → runOpenClaw-CH_9_RyZ.cjs} +17 -17
  148. package/dist/{sandbox-BY2h19gc.cjs → sandbox-Bb5IMun3.cjs} +4 -4
  149. package/dist/{sandbox-DcaWB-Ou.mjs → sandbox-DGmXZ6Zz.mjs} +4 -4
  150. package/dist/selfCheck-BfK945YQ.mjs +86 -0
  151. package/dist/{selfCheck-DFS_GUaQ.cjs → selfCheck-CccwNTTK.cjs} +37 -37
  152. package/dist/{send-UBTHHNvZ.mjs → send-B6rHg8GT.mjs} +8 -8
  153. package/dist/{send-BMsUYU6g.cjs → send-BpiXPkDo.cjs} +8 -8
  154. package/dist/{server-Dt3mCtfQ.mjs → server-BkdAyHhC.mjs} +4 -4
  155. package/dist/{server-YrHMHNz1.cjs → server-DHUzjApC.cjs} +6 -6
  156. package/dist/{sessionLock-DSqiP2lH.cjs → sessionLock-BFBReiKq.cjs} +134 -3
  157. package/dist/{sessionLock-tEFvFXLD.mjs → sessionLock-Ca_bIo50.mjs} +121 -4
  158. package/dist/{sessionOps-CljctDs5.mjs → sessionOps-CA2kpm66.mjs} +13 -5
  159. package/dist/{sessionOps-BzeOKIEF.cjs → sessionOps-DeWVqpe4.cjs} +13 -4
  160. package/dist/{sessionProvider-ORgzmkXy.cjs → sessionProvider-VFbtUmMR.cjs} +5 -5
  161. package/dist/{sessionProvider-BnUFSJXM.mjs → sessionProvider-g18IiK74.mjs} +5 -5
  162. package/dist/{sessionScanner-Cr6PJ3PT.cjs → sessionScanner-CGzsN8V6.cjs} +3 -3
  163. package/dist/{sessionScanner-DZUlkdF6.mjs → sessionScanner-DDDud5re.mjs} +3 -3
  164. package/dist/{sessions-15cag-su.mjs → sessions-B4d50sCI.mjs} +35 -26
  165. package/dist/{sessions-aIo_HjmY.cjs → sessions-CKJPWFgu.cjs} +36 -25
  166. package/dist/{setupOfflineReconnection-B7I8R2Ex.mjs → setupOfflineReconnection-CyPNgyCe.mjs} +2 -2
  167. package/dist/{setupOfflineReconnection-tV0Q1dgR.cjs → setupOfflineReconnection-DPXRo_zf.cjs} +2 -2
  168. package/dist/{spawn-VG-HjJiR.cjs → spawn-CgSJzzWS.cjs} +13 -13
  169. package/dist/{spawn-ByrQgruJ.mjs → spawn-CrYN_OOT.mjs} +15 -15
  170. package/dist/{spawnAgents-Bh1RPShN.mjs → spawnAgents-DWCDYCQ1.mjs} +1 -1
  171. package/dist/{spawnHappyCLI-CxiR2Qoy.cjs → spawnHappyCLI-CTy3p6V_.cjs} +1 -1
  172. package/dist/{spawnHappyCLI-CEsXwz5V.mjs → spawnHappyCLI-DjbkiSH1.mjs} +1 -1
  173. package/dist/{startFileWatcher-C-XCZ5t2.cjs → startFileWatcher-BQs0cJA-.cjs} +1 -1
  174. package/dist/{startFileWatcher-DkEeeAtL.mjs → startFileWatcher-Dedtu1vq.mjs} +1 -1
  175. package/dist/{defaultPermissionMode-e2bIIJG4.mjs → startupSessionCreate-BKFU4v_h.mjs} +25 -6
  176. package/dist/{defaultPermissionMode-5EvgRq38.cjs → startupSessionCreate-Dxy3X4DG.cjs} +25 -7
  177. package/dist/{streamRelay-CqBynIon.mjs → streamRelay-P9e7Sohm.mjs} +1 -1
  178. package/dist/{sync-CoChLEIg.cjs → sync-DtWB7RzA.cjs} +1 -1
  179. package/dist/{sync-BvDMkKAN.mjs → sync-eZkXnsW_.mjs} +1 -1
  180. package/dist/{systemPrompt-Dy_Rf-0Z.cjs → systemPrompt-2XOpZ1j6.cjs} +1 -1
  181. package/dist/{systemPrompt-CgDaPigN.mjs → systemPrompt-Bn6g6aCH.mjs} +2 -2
  182. package/dist/{teams-DPvfLAk8.cjs → teams-ecFay4Gn.cjs} +6 -6
  183. package/dist/{teams-BC4_e5hR.mjs → teams-nadkqrbW.mjs} +7 -7
  184. package/dist/{template-CEK8MEjo.mjs → template-BiTD-jI9.mjs} +1 -1
  185. package/dist/{time-CUK37wiV.mjs → time-CN3TuSVG.mjs} +1 -1
  186. package/dist/{time-XwEZxKGc.cjs → time-gPD_EmA-.cjs} +1 -1
  187. package/dist/{titleGenerator-DWRVdqMU.mjs → titleGenerator-DgzTQdn2.mjs} +1 -1
  188. package/dist/{titleGenerator-DVX0NZUn.cjs → titleGenerator-lT5ldPuN.cjs} +2 -2
  189. package/dist/{todo-CKGrSrRE.cjs → todo-B1VeMk5A.cjs} +5 -5
  190. package/dist/{todo-BNMGXneA.mjs → todo-BIxd7l2Q.mjs} +6 -6
  191. package/dist/{tools-CjMafO_D.cjs → tools-DvqbLsCF.cjs} +1 -1
  192. package/dist/{tools-CCIEAVbB.mjs → tools-zXJpxiG_.mjs} +1 -1
  193. package/dist/{uninstall-CJvJ7gjr.mjs → uninstall-9htK6mb7.mjs} +3 -3
  194. package/dist/{uninstall-BdFbTXnL.cjs → uninstall-CvIOpwB5.cjs} +3 -3
  195. package/package.json +7 -7
  196. package/dist/agentAttachments-M_B5qEF2.mjs +0 -18
  197. package/dist/selfCheck-BQ_H2Sns.mjs +0 -86
  198. package/dist/startupSessionCreate-CYc8mra-.cjs +0 -26
  199. package/dist/startupSessionCreate-npXe2TdN.mjs +0 -24
@@ -3,11 +3,11 @@
3
3
  var node_child_process = require('node:child_process');
4
4
  var spawn = require('cross-spawn');
5
5
  var node_readline = require('node:readline');
6
- var logger = require('./logger-BP1SW7Cs.cjs');
6
+ var logger = require('./logger-BBRTTVsQ.cjs');
7
7
  var contentLogMetadata = require('./contentLogMetadata-ZSFk_NjQ.cjs');
8
8
  var manager = require('./manager-HrEj442o.cjs');
9
- var _package = require('./package-CYDdLA6R.cjs');
10
- var rateLimitWindows = require('./rateLimitWindows-Cs56YJCH.cjs');
9
+ var _package = require('./package-DrY090nZ.cjs');
10
+ var rateLimitWindows = require('./rateLimitWindows-Bx3ROBP5.cjs');
11
11
  var processTree = require('./processTree-CMHWlVse.cjs');
12
12
 
13
13
  const CODEX_HELPER_LABEL_MAX_CHARS = 80;
@@ -127,6 +127,8 @@ class CodexAppServerClient {
127
127
  pending = /* @__PURE__ */ new Map();
128
128
  processEpoch = 0;
129
129
  connected = false;
130
+ /** B-852: agent version from the last `initialize` (null = unknown). */
131
+ serverVersion = null;
130
132
  sandboxConfig;
131
133
  sandboxCleanup = null;
132
134
  sandboxEnabled = false;
@@ -627,7 +629,8 @@ ${text}`.slice(-400);
627
629
  experimentalApi: true
628
630
  }
629
631
  };
630
- await this.request("initialize", initParams);
632
+ const initialized = await this.request("initialize", initParams);
633
+ this.serverVersion = typeof initialized?.userAgent === "string" ? initialized.userAgent.match(/\/(\d+\.\d+\.\d+)\b/)?.[1] ?? null : null;
631
634
  this.notify("initialized");
632
635
  this.connected = true;
633
636
  logger.logger.debug("[CodexAppServer] Connected and initialized");
@@ -813,7 +816,8 @@ ${text}`.slice(-400);
813
816
  baseInstructions: null,
814
817
  developerInstructions: null,
815
818
  ephemeral: false,
816
- threadSource: null
819
+ threadSource: null,
820
+ ...opts.lastTurnId ? { lastTurnId: opts.lastTurnId } : {}
817
821
  };
818
822
  const result = await this.request("thread/fork", params);
819
823
  this._threadId = result.thread.id;
@@ -1120,7 +1124,10 @@ ${text}`.slice(-400);
1120
1124
  * Returns { aborted: true } if the turn was aborted (user cancel, permission reject, etc.).
1121
1125
  */
1122
1126
  async sendTurnAndWait(prompt, opts) {
1123
- const { aborted } = await this.runTurnAndWait(() => this.sendTurn(prompt, opts), opts);
1127
+ const { aborted } = await this.runTurnAndWait(async () => {
1128
+ await this.sendTurn(prompt, opts);
1129
+ opts?.onTurnStarted?.();
1130
+ }, opts);
1124
1131
  return { aborted };
1125
1132
  }
1126
1133
  /**
@@ -1,108 +1,109 @@
1
1
  'use strict';
2
2
 
3
- var auth = require('./auth-DQKSpaEf.cjs');
3
+ var auth = require('./auth-Bb_SL2os.cjs');
4
4
  var index = require('./index-BOe6dKnL.cjs');
5
- var deterministicJson = require('./deterministicJson-D0LU_XbO.cjs');
6
- var client = require('./client-DIfxYk7B.cjs');
5
+ var deterministicJson = require('./deterministicJson-BEygolBQ.cjs');
6
+ var client = require('./client-CMKGrnmT.cjs');
7
7
  var promises = require('node:fs/promises');
8
8
  var forkBackfill = require('./forkBackfill-8eLDeS73.cjs');
9
9
  var node_crypto = require('node:crypto');
10
10
  var cuid2 = require('@paralleldrive/cuid2');
11
- var api = require('./api-BDuuyys8.cjs');
12
- var agentAttachments = require('./agentAttachments-Dbw8iMCZ.cjs');
13
- var attachmentContent = require('./attachmentContent-Cc5b7TPr.cjs');
11
+ var api = require('./api-CXL6jp-p.cjs');
12
+ var heldInput = require('./heldInput-BOtqFO2r.cjs');
13
+ var attachmentContent = require('./attachmentContent-NmVfKp-B.cjs');
14
14
  var ink = require('ink');
15
- var sessionLock = require('./sessionLock-DSqiP2lH.cjs');
15
+ var sessionLock = require('./sessionLock-BFBReiKq.cjs');
16
16
  var React = require('react');
17
- var codexAppServerClient = require('./codexAppServerClient-CO9f4Jr8.cjs');
18
- var rateLimitReporter = require('./rateLimitReporter-BKmoOZQi.cjs');
19
- var logger = require('./logger-BP1SW7Cs.cjs');
20
- var BasePermissionHandler = require('./BasePermissionHandler-DjM16uJz.cjs');
21
- var codexTermination = require('./codexTermination-IrLZQzKC.cjs');
17
+ var codexAppServerClient = require('./codexAppServerClient-CpT9F6EM.cjs');
18
+ var rateLimitReporter = require('./rateLimitReporter-DUu2KydZ.cjs');
19
+ var logger = require('./logger-BBRTTVsQ.cjs');
20
+ var BasePermissionHandler = require('./BasePermissionHandler-CpSugp7Z.cjs');
21
+ var codexTermination = require('./codexTermination-ByW7tRjr.cjs');
22
22
  var node_child_process = require('node:child_process');
23
- var persistence = require('./persistence-CrzC7yr_.cjs');
24
- var machineMetadata = require('./machineMetadata-BKX3ov9g.cjs');
25
- var configuration = require('./configuration-C0ctLGW2.cjs');
26
- var registerKillSessionHandler = require('./registerKillSessionHandler-DhCjrs44.cjs');
23
+ var persistence = require('./persistence-Bl5S3TLB.cjs');
24
+ var machineMetadata = require('./machineMetadata-DnFNlrVK.cjs');
25
+ var configuration = require('./configuration-Dt5lKW3P.cjs');
26
+ var registerKillSessionHandler = require('./registerKillSessionHandler-CA1FFr_F.cjs');
27
27
  var projectPath = require('./projectPath-C3ioB4Bu.cjs');
28
28
  var path = require('node:path');
29
- var createSessionMetadata = require('./createSessionMetadata-DezS33OM.cjs');
29
+ var createSessionMetadata = require('./createSessionMetadata-B_HZCDj_.cjs');
30
30
  var sessionExitLifecycle = require('./sessionExitLifecycle-DFltxXU8.cjs');
31
- var controlClient = require('./controlClient-F7hAEEy2.cjs');
32
- var defaultPermissionMode = require('./defaultPermissionMode-5EvgRq38.cjs');
31
+ var controlClient = require('./controlClient-BRk65BRO.cjs');
32
+ var startupSessionCreate = require('./startupSessionCreate-Dxy3X4DG.cjs');
33
33
  var authRelay = require('./authRelay-Dy1qU9td.cjs');
34
- var setupOfflineReconnection = require('./setupOfflineReconnection-tV0Q1dgR.cjs');
35
- var startupSessionCreate = require('./startupSessionCreate-CYc8mra-.cjs');
34
+ var setupOfflineReconnection = require('./setupOfflineReconnection-DPXRo_zf.cjs');
36
35
  var trimIdent = require('./trimIdent-4gvk9Wk6.cjs');
37
36
  var specialCommands = require('./specialCommands-J3JFOq0J.cjs');
38
37
  var constants = require('./constants-VJ0N6WuG.cjs');
38
+ var defaultPermissionMode = require('./defaultPermissionMode-CxmTXUQR.cjs');
39
39
  var editPaths = require('./editPaths-Bqp4OFPw.cjs');
40
- var ensureDaemonRunning = require('./ensureDaemonRunning-CIghxgDR.cjs');
40
+ var ensureDaemonRunning = require('./ensureDaemonRunning-Bibp6vhe.cjs');
41
41
  require('tweetnacl');
42
42
  require('axios');
43
- require('./time-XwEZxKGc.cjs');
44
- require('./browser-D1yzC0Tu.cjs');
43
+ require('./time-gPD_EmA-.cjs');
44
+ require('./browser-CLJWcodR.cjs');
45
45
  require('open');
46
46
  require('zod');
47
47
  require('./prompt-Bof2aQkI.cjs');
48
- require('./reportProgressTool-DznxPKES.cjs');
49
- require('./client-D0aYWt53.cjs');
48
+ require('./reportProgressTool-CvPGov1F.cjs');
49
+ require('./client-Bffkrs5p.cjs');
50
50
  require('./precheckCompat-CWOi5c9L.cjs');
51
51
  require('./agentGuidance-BtBx2xxE.cjs');
52
52
  require('node:fs');
53
53
  require('node:os');
54
54
  require('./pi-DlsrPCTa.cjs');
55
55
  require('./fileStore-7qhnbs6N.cjs');
56
- require('./client-BNmFaRXZ.cjs');
56
+ require('./client-CARZ_lNS.cjs');
57
57
  require('node:util');
58
- require('./context-D-hEk5pC.cjs');
59
- require('./sessionOps-BzeOKIEF.cjs');
58
+ require('./context-BdZssgF0.cjs');
59
+ require('./sessionOps-DeWVqpe4.cjs');
60
60
  require('socket.io-client');
61
61
  require('./backgroundTaskActivity-CBvUdj39.cjs');
62
62
  require('./resources-BZ_Be0qM.cjs');
63
- require('./tools-CjMafO_D.cjs');
64
- require('./peerTools-B4315xjX.cjs');
63
+ require('./tools-DvqbLsCF.cjs');
64
+ require('./peerTools-5ZM4spcZ.cjs');
65
65
  require('./ids-B6ZC0HGt.cjs');
66
- require('./remoteSessionClient-Dq8XTLQP.cjs');
66
+ require('./remoteSessionClient-DGFI__5Z.cjs');
67
67
  require('@modelcontextprotocol/sdk/server/mcp.js');
68
68
  require('node:http');
69
69
  require('@modelcontextprotocol/sdk/server/streamableHttp.js');
70
70
  require('./limits-C-a7gr04.cjs');
71
- require('./downloadTarget-aNcCxVRL.cjs');
71
+ require('./downloadTarget-DS0zT2AU.cjs');
72
72
  require('./terminals-B_bfC9c2.cjs');
73
73
  require('./terminalTitleSuggest-DhvRFX3H.cjs');
74
74
  require('./tmuxSocket-D-Xt6Vn-.cjs');
75
- require('./bootstrap-CDY-Vz8q.cjs');
76
- require('./package-CYDdLA6R.cjs');
75
+ require('./bootstrap-DBJB0y-H.cjs');
76
+ require('./package-DrY090nZ.cjs');
77
77
  require('./webPanels-FCgFKvVe.cjs');
78
- require('./pushNotifications-CalIS9sq.cjs');
78
+ require('./pushNotifications-CfspRcl-.cjs');
79
79
  require('./contentLogMetadata-ZSFk_NjQ.cjs');
80
80
  require('./previewPath-B0rBdhy1.cjs');
81
81
  require('crypto');
82
- require('./lidState-B4dHJCeS.cjs');
82
+ require('./lidState-q_XFYg33.cjs');
83
83
  require('os');
84
84
  require('child_process');
85
85
  require('node:events');
86
- require('./registerCommonHandlers-DZPozYxc.cjs');
86
+ require('./registerCommonHandlers-Beun-cQv.cjs');
87
87
  require('util');
88
88
  require('fs/promises');
89
89
  require('path');
90
90
  require('cross-spawn');
91
- require('./sync-CoChLEIg.cjs');
91
+ require('./sync-DtWB7RzA.cjs');
92
92
  require('chalk');
93
+ require('./cliUpdate-DsKXPFYp.cjs');
93
94
  require('./processTreeSnapshot-mDbnuojn.cjs');
94
95
  require('node:readline');
95
96
  require('./manager-HrEj442o.cjs');
96
97
  require('@anthropic-ai/sandbox-runtime');
97
- require('./rateLimitWindows-Cs56YJCH.cjs');
98
+ require('./rateLimitWindows-Bx3ROBP5.cjs');
98
99
  require('./processTree-CMHWlVse.cjs');
99
100
  require('./detectCLI-BuYR_Qxe.cjs');
100
101
  require('fs');
101
- require('./localHappyAgentAuth-CG2nPD_H.cjs');
102
+ require('./localHappyAgentAuth-CKNW-MXw.cjs');
102
103
  require('./fsMkdir-0K3yENml.cjs');
103
104
  require('./types-CRS-srZK.cjs');
104
105
  require('url');
105
- require('./spawnHappyCLI-CxiR2Qoy.cjs');
106
+ require('./spawnHappyCLI-CTy3p6V_.cjs');
106
107
  require('./doctorReadiness-Dl6yRQCy.cjs');
107
108
 
108
109
  function getStartedSubagents(state) {
@@ -1499,7 +1500,7 @@ async function runCodex(opts) {
1499
1500
  dangerouslySkipPermissions: initialPermissionMode === "yolo" || initialPermissionMode === "bypassPermissions",
1500
1501
  ...forkedFromSessionId ? { parentSessionId: forkedFromSessionId } : {},
1501
1502
  ...forkedFromMessageId ? { forkedFromMessageId } : {},
1502
- capabilities: [index.PROMPT_QUEUE_CAPABILITY, forkBackfill.FORK_BACKFILL_CAPABILITY, persistence.HIBERNATION_CAPABILITY, index.CODEX_STEER_CAPABILITY, index.PROJECT_SESSION_CAPABILITY, index.CODEX_COMPACT_CAPABILITY]
1503
+ capabilities: [index.PROMPT_QUEUE_CAPABILITY, forkBackfill.FORK_BACKFILL_CAPABILITY, persistence.HIBERNATION_CAPABILITY, sessionLock.AUTO_RESTART_CAPABILITY, index.CODEX_STEER_CAPABILITY, index.PROJECT_SESSION_CAPABILITY, index.CODEX_COMPACT_CAPABILITY]
1503
1504
  });
1504
1505
  metadata.attachmentKinds = [...attachmentContent.CLAUDE_ATTACHMENT_KINDS];
1505
1506
  metadata.stickyModel = null;
@@ -1616,6 +1617,7 @@ async function runCodex(opts) {
1616
1617
  const keys = entries.map((entry) => entry.sourceId).filter((key) => typeof key === "string");
1617
1618
  if (keys.length > 0) session.sendQueueCancelReason(keys, entries[0].reason);
1618
1619
  });
1620
+ const heldInput$1 = new heldInput.HeldInput((keys, reason) => session.sendQueueCancelReason(keys, reason));
1619
1621
  let currentPermissionMode = initialPermissionMode;
1620
1622
  let currentModel = DEFAULT_CODEX_MODEL;
1621
1623
  let currentEffort = DEFAULT_CODEX_EFFORT;
@@ -1656,8 +1658,9 @@ async function runCodex(opts) {
1656
1658
  };
1657
1659
  publishPermissionMode(opts.permissionMode);
1658
1660
  let discoveredModels = [];
1661
+ let codexAgentVersion = null;
1659
1662
  let machineDefaultModel;
1660
- agentAttachments.registerAgentAttachmentDownloads(session);
1663
+ heldInput.registerAgentAttachmentDownloads(session);
1661
1664
  const CODEX_IMAGE_MIME_TYPES = ["image/jpeg", "image/png", "image/gif", "image/webp"];
1662
1665
  const steerDeps = {
1663
1666
  ownsTurn: () => turnActive && !abortInProgress && !shouldExit,
@@ -1755,6 +1758,7 @@ async function runCodex(opts) {
1755
1758
  }).catch((error) => {
1756
1759
  logger.logger.warn("[Codex] Failed to prepare user attachments", safeCodexErrorMetadata(error));
1757
1760
  session.sendSessionEvent({ type: "message", message: "Could not prepare this message. Please send it again." });
1761
+ if (message.localKey) session.sendQueueCancelReason([message.localKey], "failed");
1758
1762
  });
1759
1763
  });
1760
1764
  let thinking = false;
@@ -1797,7 +1801,8 @@ async function runCodex(opts) {
1797
1801
  }
1798
1802
  let abortController = new AbortController();
1799
1803
  let shouldExit = false;
1800
- const hibernationExit = new defaultPermissionMode.HibernationExitLatch((a, b) => a === "archive" && b !== "archive");
1804
+ let terminating = false;
1805
+ const hibernationExit = new startupSessionCreate.HibernationExitLatch((a, b) => a === "archive" && b !== "archive");
1801
1806
  let hibernationStamp = null;
1802
1807
  let hibernationProbe = null;
1803
1808
  async function handleAbort(source) {
@@ -1850,6 +1855,10 @@ async function runCodex(opts) {
1850
1855
  logger.logger.debug("[Codex] Kill session requested - terminating process");
1851
1856
  const exitCursor = intent === "offline" && session ? sessionLock.exitCursorStamp(session.messageCursor, Date.now()) : void 0;
1852
1857
  if (exitCursor) session.freezeInbound();
1858
+ const exitReason = intent === "archive" ? "aborted" : "restarted";
1859
+ terminating = true;
1860
+ heldInput$1.drop(exitReason);
1861
+ messageQueue.discardAll(exitReason);
1853
1862
  await handleAbort("kill");
1854
1863
  logger.logger.debug("[Codex] Abort completed, proceeding with termination");
1855
1864
  try {
@@ -2075,6 +2084,7 @@ async function runCodex(opts) {
2075
2084
  logger.logger.debug("[codex]: client.connect begin");
2076
2085
  await client$1.connect();
2077
2086
  logger.logger.debug("[codex]: client.connect done");
2087
+ codexAgentVersion = client$1.serverVersion;
2078
2088
  try {
2079
2089
  discoveredModels = await client$1.listModels();
2080
2090
  let configured = null;
@@ -2169,17 +2179,18 @@ async function runCodex(opts) {
2169
2179
  pendingRequests: Object.keys(session.getAgentState()?.requests ?? {}).length,
2170
2180
  backgroundTasks: codexActiveSubagents.size,
2171
2181
  lastActivityAt: session.lastActivityAt,
2182
+ ...codexAgentVersion ? { agentVersion: codexAgentVersion } : {},
2172
2183
  ...shouldExit && !hibernationExit.hibernating ? { exiting: true } : {}
2173
2184
  };
2174
2185
  };
2175
- hibernationProbe = new defaultPermissionMode.HibernationProbe({
2186
+ hibernationProbe = new startupSessionCreate.HibernationProbe({
2176
2187
  onKeepAwakeLatched: () => {
2177
2188
  if (session.getMetadata()?.keepAwake === void 0) session.updateMetadata((m) => m.keepAwake === void 0 ? { ...m, keepAwake: true } : m);
2178
2189
  },
2179
2190
  checkMs: persistence.resolveCheckMs(),
2180
2191
  snapshot: hibernationSnapshot,
2181
2192
  ask: (report) => controlClient.checkDaemonHibernation({ sessionId: session.sessionId, pid: process.pid, report }),
2182
- commit: (idleMs) => defaultPermissionMode.commitHibernation({
2193
+ commit: (idleMs) => startupSessionCreate.commitHibernation({
2183
2194
  client: session,
2184
2195
  claimExit: () => !shouldExit && hibernationExit.begin(),
2185
2196
  exitRequested: () => hibernationExit.exitRequested,
@@ -2199,6 +2210,8 @@ async function runCodex(opts) {
2199
2210
  });
2200
2211
  hibernationProbe.start();
2201
2212
  }
2213
+ const autoUpdated = sessionLock.takeAutoRestartedEvent(process.env, "Codex");
2214
+ if (autoUpdated) session.sendSessionEvent(autoUpdated);
2202
2215
  idleRelease.arm();
2203
2216
  while (!shouldExit) {
2204
2217
  logActiveHandles("loop-top");
@@ -2216,6 +2229,7 @@ async function runCodex(opts) {
2216
2229
  break;
2217
2230
  }
2218
2231
  message = batch;
2232
+ heldInput$1.hold(batch.sourceIds);
2219
2233
  }
2220
2234
  if (!message) {
2221
2235
  break;
@@ -2228,6 +2242,7 @@ async function runCodex(opts) {
2228
2242
  turnActive = true;
2229
2243
  if (isCodexClearText(message.message)) {
2230
2244
  logger.logger.debug("[Codex] Handling /clear command - resetting Codex thread state");
2245
+ heldInput$1.delivered();
2231
2246
  client$1.clearThreadState();
2232
2247
  currentTurnId = null;
2233
2248
  codexStartedSubagents = /* @__PURE__ */ new Set();
@@ -2264,6 +2279,7 @@ async function runCodex(opts) {
2264
2279
  try {
2265
2280
  if (compactCommand !== null) {
2266
2281
  await client$1.ensureConnected();
2282
+ heldInput$1.delivered();
2267
2283
  const outcome = await runCodexCompact(compactCommand, {
2268
2284
  client: client$1,
2269
2285
  notify: (text) => {
@@ -2312,12 +2328,17 @@ async function runCodex(opts) {
2312
2328
  happyHomeDir: configuration.configuration.happyHomeDir,
2313
2329
  sessionId: session.sessionId
2314
2330
  }) : [];
2331
+ if (terminating) {
2332
+ logger.logger.debug("[Codex] Session is ending; not starting the turn");
2333
+ continue;
2334
+ }
2315
2335
  const result = await client$1.sendTurnAndWait(attachmentContent.appendStagedAttachmentsToPrompt(turnPrompt, staged), {
2316
2336
  images: staged.filter((file) => ["image/jpeg", "image/png", "image/gif", "image/webp"].includes(file.mimeType)).map((file) => file.path),
2317
2337
  model: turnModel,
2318
2338
  approvalPolicy: executionPolicy.approvalPolicy,
2319
2339
  sandbox: executionPolicy.sandbox,
2320
- effort: message.mode.effort
2340
+ effort: message.mode.effort,
2341
+ onTurnStarted: () => heldInput$1.delivered()
2321
2342
  });
2322
2343
  reportModeFacts();
2323
2344
  first = false;
@@ -2329,6 +2350,7 @@ async function runCodex(opts) {
2329
2350
  }
2330
2351
  } catch (error) {
2331
2352
  logger.logger.warn("Error in codex session", safeCodexErrorMetadata(error));
2353
+ if (heldInput$1.drop("failed")) logger.logger.debug("[Codex] Message failed before its turn started; tombstoned");
2332
2354
  const reason = describeThrownTurnError(error);
2333
2355
  if (reason) {
2334
2356
  messageBuffer.addMessage(`Task failed: ${reason}`, "status");
@@ -2360,6 +2382,8 @@ async function runCodex(opts) {
2360
2382
  disposeTermination?.();
2361
2383
  hibernationProbe?.stop();
2362
2384
  session.closePromptQueueDrain();
2385
+ heldInput$1.drop("aborted");
2386
+ messageQueue.discardAll("aborted");
2363
2387
  logger.logger.debug("[codex]: Final cleanup start");
2364
2388
  logActiveHandles("cleanup-start");
2365
2389
  if (reconnectionHandle) {
@@ -1,106 +1,107 @@
1
- import { a as authAndSetupMachineIfNeeded } from './auth-CyrVvWHF.mjs';
2
- import { g as createEnvelope, j as BUILTIN_TODO_DISCOVERY, P as PROMPT_QUEUE_CAPABILITY, J as CODEX_STEER_CAPABILITY, a as PROJECT_SESSION_CAPABILITY, K as CODEX_COMPACT_CAPABILITY } from './index-WKyN-bNy.mjs';
3
- import { h as hashObject, s as startHappyServer, c as createProjectInjector } from './deterministicJson-BMwgK21e.mjs';
4
- import { s as sharedProjectsClient } from './client-B161HwAk.mjs';
1
+ import { a as authAndSetupMachineIfNeeded } from './auth-Bj0psrD2.mjs';
2
+ import { g as createEnvelope, j as BUILTIN_TODO_DISCOVERY, P as PROMPT_QUEUE_CAPABILITY, J as CODEX_STEER_CAPABILITY, a as PROJECT_SESSION_CAPABILITY, K as CODEX_COMPACT_CAPABILITY } from './index-DmqsRnV7.mjs';
3
+ import { h as hashObject, s as startHappyServer, c as createProjectInjector } from './deterministicJson-DNmMVhFu.mjs';
4
+ import { s as sharedProjectsClient } from './client-CnGNYidN.mjs';
5
5
  import { unlink } from 'node:fs/promises';
6
6
  import { p as publishForkBackfillWhenCommitted, F as FORK_BACKFILL_CAPABILITY } from './forkBackfill-DYIjlN1Z.mjs';
7
7
  import { randomUUID } from 'node:crypto';
8
8
  import { createId } from '@paralleldrive/cuid2';
9
- import { t as textResultPayload, d as toolResultContentText, c as connectionState, A as ApiClient } from './api-B0yN68XH.mjs';
10
- import { r as registerAgentAttachmentDownloads } from './agentAttachments-M_B5qEF2.mjs';
11
- import { C as CLAUDE_ATTACHMENT_KINDS, a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt } from './attachmentContent-CcIdMfAx.mjs';
9
+ import { t as textResultPayload, d as toolResultContentText, c as connectionState, A as ApiClient } from './api-Dw8gFsQi.mjs';
10
+ import { r as registerAgentAttachmentDownloads, H as HeldInput } from './heldInput-C69lA2dH.mjs';
11
+ import { C as CLAUDE_ATTACHMENT_KINDS, a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt } from './attachmentContent-CC4yIrSm.mjs';
12
12
  import { useStdout, useInput, Box, Text, render } from 'ink';
13
- import { c as claimSessionOrExit, a as applyServerSnapshot, b as applyReconnectReplay, w as withoutServerSnapshot, m as mergeReconnectMetadata, e as exitCursorStamp } from './sessionLock-tEFvFXLD.mjs';
13
+ import { c as claimSessionOrExit, a as applyServerSnapshot, b as applyReconnectReplay, w as withoutServerSnapshot, m as mergeReconnectMetadata, t as takeAutoRestartedEvent, A as AUTO_RESTART_CAPABILITY, e as exitCursorStamp } from './sessionLock-Ca_bIo50.mjs';
14
14
  import React, { useState, useRef, useEffect, useCallback } from 'react';
15
- import { C as CodexAppServerClient } from './codexAppServerClient-BlVmpjR-.mjs';
16
- import { w as wrapperRateLimitReporter } from './rateLimitReporter-DR5LXuiQ.mjs';
17
- import { l as logger } from './logger-DOKH3Zbh.mjs';
18
- import { B as BasePermissionHandler } from './BasePermissionHandler-CVtH-snr.mjs';
19
- import { B as BaseReasoningProcessor, s as settleCodexSession } from './codexTermination-BvGlN02_.mjs';
15
+ import { C as CodexAppServerClient } from './codexAppServerClient-CLc5nhLT.mjs';
16
+ import { w as wrapperRateLimitReporter } from './rateLimitReporter-jeVi-fym.mjs';
17
+ import { l as logger } from './logger-CL7pin9b.mjs';
18
+ import { B as BasePermissionHandler } from './BasePermissionHandler-CLp1ge-4.mjs';
19
+ import { B as BaseReasoningProcessor, s as settleCodexSession } from './codexTermination-ORIw0gpU.mjs';
20
20
  import { execSync } from 'node:child_process';
21
- import { r as readSettings, l as latchKeepAwake, e as evaluateWrapperIdle, a as resolveCheckMs, H as HIBERNATION_CAPABILITY } from './persistence-0INrP3aB.mjs';
22
- import { g as getInitialMachineMetadata } from './machineMetadata-D-5qeIqd.mjs';
23
- import { c as configuration } from './configuration-1FabKklB.mjs';
24
- import { M as MessageQueue2, r as registerKillSessionHandler } from './registerKillSessionHandler-CSCTRIbI.mjs';
21
+ import { r as readSettings, l as latchKeepAwake, e as evaluateWrapperIdle, a as resolveCheckMs, H as HIBERNATION_CAPABILITY } from './persistence-Dogj7JIp.mjs';
22
+ import { g as getInitialMachineMetadata } from './machineMetadata-DP06qdBk.mjs';
23
+ import { c as configuration } from './configuration-Dechcvd-.mjs';
24
+ import { M as MessageQueue2, r as registerKillSessionHandler } from './registerKillSessionHandler-CzgklwLG.mjs';
25
25
  import { p as projectPath } from './projectPath-BTBIMB57.mjs';
26
26
  import { join } from 'node:path';
27
- import { c as createSessionMetadata } from './createSessionMetadata-CG6Klinp.mjs';
27
+ import { c as createSessionMetadata } from './createSessionMetadata-DyhFKAby.mjs';
28
28
  import { M as MessageBuffer } from './sessionExitLifecycle-CzkLIgNZ.mjs';
29
- import { n as notifyDaemonSessionStarted, k as reportSessionEditToDaemon, c as checkDaemonHibernation } from './controlClient-DwNnNAUx.mjs';
30
- import { a as HibernationExitLatch, H as HibernationProbe, c as commitHibernation, b as DEFAULT_CODEX_PERMISSION_MODE } from './defaultPermissionMode-e2bIIJG4.mjs';
29
+ import { n as notifyDaemonSessionStarted, k as reportSessionEditToDaemon, c as checkDaemonHibernation } from './controlClient-D7NGfmtq.mjs';
30
+ import { c as createSessionForStartup, b as HibernationExitLatch, H as HibernationProbe, a as commitHibernation } from './startupSessionCreate-BKFU4v_h.mjs';
31
31
  import { d as decodeBase64, e as encodeBase64 } from './authRelay-DhQhkBvX.mjs';
32
- import { s as setupOfflineReconnection } from './setupOfflineReconnection-B7I8R2Ex.mjs';
33
- import { c as createSessionForStartup } from './startupSessionCreate-npXe2TdN.mjs';
32
+ import { s as setupOfflineReconnection } from './setupOfflineReconnection-CyPNgyCe.mjs';
34
33
  import { t as trimIdent } from './trimIdent-BAjmv_TG.mjs';
35
34
  import { a as parseSpecialCommand, c as compactCommandText, b as parseCompact } from './specialCommands-MXUN0wfI.mjs';
36
35
  import { C as CHANGE_TITLE_INSTRUCTION } from './constants-BC4St0xd.mjs';
36
+ import { a as DEFAULT_CODEX_PERMISSION_MODE } from './defaultPermissionMode-BnxJPVHT.mjs';
37
37
  import { E as EditReportThrottle, a as extractCodexPatchPaths } from './editPaths-BVfS_FFL.mjs';
38
- import { a as extractNoSandboxFlag, e as ensureDaemonRunning } from './ensureDaemonRunning-DZq8bvsp.mjs';
38
+ import { a as extractNoSandboxFlag, e as ensureDaemonRunning } from './ensureDaemonRunning-BOdbryDM.mjs';
39
39
  import 'tweetnacl';
40
40
  import 'axios';
41
- import './time-CUK37wiV.mjs';
42
- import './browser-vb0k1zfI.mjs';
41
+ import './time-CN3TuSVG.mjs';
42
+ import './browser-BGxDRhHy.mjs';
43
43
  import 'open';
44
44
  import 'zod';
45
45
  import './prompt-QHuFx9j6.mjs';
46
- import './reportProgressTool-B7zmX7NJ.mjs';
47
- import './client-CvjjadIE.mjs';
46
+ import './reportProgressTool-CgPy6n_7.mjs';
47
+ import './client-DZkBUoh9.mjs';
48
48
  import './precheckCompat-DeEbilbr.mjs';
49
49
  import './agentGuidance-BDYt2Qy2.mjs';
50
50
  import 'node:fs';
51
51
  import 'node:os';
52
52
  import './pi-CqyoZMjI.mjs';
53
53
  import './fileStore-5qpetZS0.mjs';
54
- import './client-C9Ecbtko.mjs';
54
+ import './client-CtL0Vtww.mjs';
55
55
  import 'node:util';
56
- import './context-BgxbXWKS.mjs';
57
- import './sessionOps-CljctDs5.mjs';
56
+ import './context-C9JbJoNe.mjs';
57
+ import './sessionOps-CA2kpm66.mjs';
58
58
  import 'socket.io-client';
59
59
  import './backgroundTaskActivity-8PdPxrvy.mjs';
60
60
  import './resources-CLP_MpK4.mjs';
61
- import './tools-CCIEAVbB.mjs';
62
- import './peerTools-BtrUnSwz.mjs';
61
+ import './tools-zXJpxiG_.mjs';
62
+ import './peerTools-dY1aJez4.mjs';
63
63
  import './ids-DU6sLx4C.mjs';
64
- import './remoteSessionClient-Vfj_5g2-.mjs';
64
+ import './remoteSessionClient-BiC2KDew.mjs';
65
65
  import '@modelcontextprotocol/sdk/server/mcp.js';
66
66
  import 'node:http';
67
67
  import '@modelcontextprotocol/sdk/server/streamableHttp.js';
68
68
  import './limits-DIo7rEBR.mjs';
69
- import './downloadTarget-C6tqaXGm.mjs';
69
+ import './downloadTarget-CGojGjaN.mjs';
70
70
  import './terminals-Dlg0x3nY.mjs';
71
71
  import './terminalTitleSuggest-CeKsX_V6.mjs';
72
72
  import './tmuxSocket-B8Yx20sT.mjs';
73
- import './bootstrap-DfXwkUQb.mjs';
74
- import './package-DTcaIhjW.mjs';
73
+ import './bootstrap-Ct9Nb4sv.mjs';
74
+ import './package-C6uiXULx.mjs';
75
75
  import './webPanels-B2_C2-3g.mjs';
76
- import './pushNotifications-Cq1s8YVK.mjs';
76
+ import './pushNotifications-dUceOIni.mjs';
77
77
  import './contentLogMetadata-BlWI0egu.mjs';
78
78
  import './previewPath-CXN4Vag0.mjs';
79
79
  import 'crypto';
80
- import './lidState-q5Its2Hm.mjs';
80
+ import './lidState-D0DF20oG.mjs';
81
81
  import 'os';
82
82
  import 'child_process';
83
83
  import 'node:events';
84
- import './registerCommonHandlers-DWkTysjD.mjs';
84
+ import './registerCommonHandlers-DWZ7mfdt.mjs';
85
85
  import 'util';
86
86
  import 'fs/promises';
87
87
  import 'path';
88
88
  import 'cross-spawn';
89
- import './sync-BvDMkKAN.mjs';
89
+ import './sync-eZkXnsW_.mjs';
90
90
  import 'chalk';
91
+ import './cliUpdate-Y34VGe9Y.mjs';
91
92
  import './processTreeSnapshot-CuLJDNC-.mjs';
92
93
  import 'node:readline';
93
94
  import './manager-BEsI4qt3.mjs';
94
95
  import '@anthropic-ai/sandbox-runtime';
95
- import './rateLimitWindows-5vIuNjko.mjs';
96
+ import './rateLimitWindows-CEn0DXaX.mjs';
96
97
  import './processTree-CP5IvQ2Z.mjs';
97
98
  import './detectCLI-CSGMlV51.mjs';
98
99
  import 'fs';
99
- import './localHappyAgentAuth-C_G5u5lY.mjs';
100
+ import './localHappyAgentAuth-BBhM4Qk1.mjs';
100
101
  import './fsMkdir-DumgLTzR.mjs';
101
102
  import './types-CkqAACXx.mjs';
102
103
  import 'url';
103
- import './spawnHappyCLI-CEsXwz5V.mjs';
104
+ import './spawnHappyCLI-DjbkiSH1.mjs';
104
105
  import './doctorReadiness-C208SMN9.mjs';
105
106
 
106
107
  function getStartedSubagents(state) {
@@ -1497,7 +1498,7 @@ async function runCodex(opts) {
1497
1498
  dangerouslySkipPermissions: initialPermissionMode === "yolo" || initialPermissionMode === "bypassPermissions",
1498
1499
  ...forkedFromSessionId ? { parentSessionId: forkedFromSessionId } : {},
1499
1500
  ...forkedFromMessageId ? { forkedFromMessageId } : {},
1500
- capabilities: [PROMPT_QUEUE_CAPABILITY, FORK_BACKFILL_CAPABILITY, HIBERNATION_CAPABILITY, CODEX_STEER_CAPABILITY, PROJECT_SESSION_CAPABILITY, CODEX_COMPACT_CAPABILITY]
1501
+ capabilities: [PROMPT_QUEUE_CAPABILITY, FORK_BACKFILL_CAPABILITY, HIBERNATION_CAPABILITY, AUTO_RESTART_CAPABILITY, CODEX_STEER_CAPABILITY, PROJECT_SESSION_CAPABILITY, CODEX_COMPACT_CAPABILITY]
1501
1502
  });
1502
1503
  metadata.attachmentKinds = [...CLAUDE_ATTACHMENT_KINDS];
1503
1504
  metadata.stickyModel = null;
@@ -1614,6 +1615,7 @@ async function runCodex(opts) {
1614
1615
  const keys = entries.map((entry) => entry.sourceId).filter((key) => typeof key === "string");
1615
1616
  if (keys.length > 0) session.sendQueueCancelReason(keys, entries[0].reason);
1616
1617
  });
1618
+ const heldInput = new HeldInput((keys, reason) => session.sendQueueCancelReason(keys, reason));
1617
1619
  let currentPermissionMode = initialPermissionMode;
1618
1620
  let currentModel = DEFAULT_CODEX_MODEL;
1619
1621
  let currentEffort = DEFAULT_CODEX_EFFORT;
@@ -1654,6 +1656,7 @@ async function runCodex(opts) {
1654
1656
  };
1655
1657
  publishPermissionMode(opts.permissionMode);
1656
1658
  let discoveredModels = [];
1659
+ let codexAgentVersion = null;
1657
1660
  let machineDefaultModel;
1658
1661
  registerAgentAttachmentDownloads(session);
1659
1662
  const CODEX_IMAGE_MIME_TYPES = ["image/jpeg", "image/png", "image/gif", "image/webp"];
@@ -1753,6 +1756,7 @@ async function runCodex(opts) {
1753
1756
  }).catch((error) => {
1754
1757
  logger.warn("[Codex] Failed to prepare user attachments", safeCodexErrorMetadata(error));
1755
1758
  session.sendSessionEvent({ type: "message", message: "Could not prepare this message. Please send it again." });
1759
+ if (message.localKey) session.sendQueueCancelReason([message.localKey], "failed");
1756
1760
  });
1757
1761
  });
1758
1762
  let thinking = false;
@@ -1795,6 +1799,7 @@ async function runCodex(opts) {
1795
1799
  }
1796
1800
  let abortController = new AbortController();
1797
1801
  let shouldExit = false;
1802
+ let terminating = false;
1798
1803
  const hibernationExit = new HibernationExitLatch((a, b) => a === "archive" && b !== "archive");
1799
1804
  let hibernationStamp = null;
1800
1805
  let hibernationProbe = null;
@@ -1848,6 +1853,10 @@ async function runCodex(opts) {
1848
1853
  logger.debug("[Codex] Kill session requested - terminating process");
1849
1854
  const exitCursor = intent === "offline" && session ? exitCursorStamp(session.messageCursor, Date.now()) : void 0;
1850
1855
  if (exitCursor) session.freezeInbound();
1856
+ const exitReason = intent === "archive" ? "aborted" : "restarted";
1857
+ terminating = true;
1858
+ heldInput.drop(exitReason);
1859
+ messageQueue.discardAll(exitReason);
1851
1860
  await handleAbort("kill");
1852
1861
  logger.debug("[Codex] Abort completed, proceeding with termination");
1853
1862
  try {
@@ -2073,6 +2082,7 @@ async function runCodex(opts) {
2073
2082
  logger.debug("[codex]: client.connect begin");
2074
2083
  await client.connect();
2075
2084
  logger.debug("[codex]: client.connect done");
2085
+ codexAgentVersion = client.serverVersion;
2076
2086
  try {
2077
2087
  discoveredModels = await client.listModels();
2078
2088
  let configured = null;
@@ -2167,6 +2177,7 @@ async function runCodex(opts) {
2167
2177
  pendingRequests: Object.keys(session.getAgentState()?.requests ?? {}).length,
2168
2178
  backgroundTasks: codexActiveSubagents.size,
2169
2179
  lastActivityAt: session.lastActivityAt,
2180
+ ...codexAgentVersion ? { agentVersion: codexAgentVersion } : {},
2170
2181
  ...shouldExit && !hibernationExit.hibernating ? { exiting: true } : {}
2171
2182
  };
2172
2183
  };
@@ -2197,6 +2208,8 @@ async function runCodex(opts) {
2197
2208
  });
2198
2209
  hibernationProbe.start();
2199
2210
  }
2211
+ const autoUpdated = takeAutoRestartedEvent(process.env, "Codex");
2212
+ if (autoUpdated) session.sendSessionEvent(autoUpdated);
2200
2213
  idleRelease.arm();
2201
2214
  while (!shouldExit) {
2202
2215
  logActiveHandles("loop-top");
@@ -2214,6 +2227,7 @@ async function runCodex(opts) {
2214
2227
  break;
2215
2228
  }
2216
2229
  message = batch;
2230
+ heldInput.hold(batch.sourceIds);
2217
2231
  }
2218
2232
  if (!message) {
2219
2233
  break;
@@ -2226,6 +2240,7 @@ async function runCodex(opts) {
2226
2240
  turnActive = true;
2227
2241
  if (isCodexClearText(message.message)) {
2228
2242
  logger.debug("[Codex] Handling /clear command - resetting Codex thread state");
2243
+ heldInput.delivered();
2229
2244
  client.clearThreadState();
2230
2245
  currentTurnId = null;
2231
2246
  codexStartedSubagents = /* @__PURE__ */ new Set();
@@ -2262,6 +2277,7 @@ async function runCodex(opts) {
2262
2277
  try {
2263
2278
  if (compactCommand !== null) {
2264
2279
  await client.ensureConnected();
2280
+ heldInput.delivered();
2265
2281
  const outcome = await runCodexCompact(compactCommand, {
2266
2282
  client,
2267
2283
  notify: (text) => {
@@ -2310,12 +2326,17 @@ async function runCodex(opts) {
2310
2326
  happyHomeDir: configuration.happyHomeDir,
2311
2327
  sessionId: session.sessionId
2312
2328
  }) : [];
2329
+ if (terminating) {
2330
+ logger.debug("[Codex] Session is ending; not starting the turn");
2331
+ continue;
2332
+ }
2313
2333
  const result = await client.sendTurnAndWait(appendStagedAttachmentsToPrompt(turnPrompt, staged), {
2314
2334
  images: staged.filter((file) => ["image/jpeg", "image/png", "image/gif", "image/webp"].includes(file.mimeType)).map((file) => file.path),
2315
2335
  model: turnModel,
2316
2336
  approvalPolicy: executionPolicy.approvalPolicy,
2317
2337
  sandbox: executionPolicy.sandbox,
2318
- effort: message.mode.effort
2338
+ effort: message.mode.effort,
2339
+ onTurnStarted: () => heldInput.delivered()
2319
2340
  });
2320
2341
  reportModeFacts();
2321
2342
  first = false;
@@ -2327,6 +2348,7 @@ async function runCodex(opts) {
2327
2348
  }
2328
2349
  } catch (error) {
2329
2350
  logger.warn("Error in codex session", safeCodexErrorMetadata(error));
2351
+ if (heldInput.drop("failed")) logger.debug("[Codex] Message failed before its turn started; tombstoned");
2330
2352
  const reason = describeThrownTurnError(error);
2331
2353
  if (reason) {
2332
2354
  messageBuffer.addMessage(`Task failed: ${reason}`, "status");
@@ -2358,6 +2380,8 @@ async function runCodex(opts) {
2358
2380
  disposeTermination?.();
2359
2381
  hibernationProbe?.stop();
2360
2382
  session.closePromptQueueDrain();
2383
+ heldInput.drop("aborted");
2384
+ messageQueue.discardAll("aborted");
2361
2385
  logger.debug("[codex]: Final cleanup start");
2362
2386
  logActiveHandles("cleanup-start");
2363
2387
  if (reconnectionHandle) {
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var node_crypto = require('node:crypto');
4
- var logger = require('./logger-BP1SW7Cs.cjs');
4
+ var logger = require('./logger-BBRTTVsQ.cjs');
5
5
  var sessionExitLifecycle = require('./sessionExitLifecycle-DFltxXU8.cjs');
6
6
 
7
7
  class BaseReasoningProcessor {