very-happy-cli 0.2.188 → 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 (202) hide show
  1. package/dist/{AcpBackend-2loP7MpF.mjs → AcpBackend-Dd1h-Rgt.mjs} +3 -3
  2. package/dist/{AcpBackend-B8AYkp5n.cjs → AcpBackend-dkRv9QHm.cjs} +3 -3
  3. package/dist/{AcpSessionManager-CLqo9R9Y.cjs → AcpSessionManager-AqWAqahm.cjs} +3 -3
  4. package/dist/{AcpSessionManager-C17doAoR.mjs → AcpSessionManager-QBZ-CIf7.mjs} +4 -4
  5. package/dist/{BasePermissionHandler-CrfyUmqO.mjs → BasePermissionHandler-CLp1ge-4.mjs} +1 -1
  6. package/dist/{BasePermissionHandler-C8UEcFz0.cjs → BasePermissionHandler-CpSugp7Z.cjs} +1 -1
  7. package/dist/{acpSessionResume-OuYlLGxL.cjs → acpSessionResume-CZao6QEd.cjs} +1 -1
  8. package/dist/{acpSessionResume-F705a1cF.mjs → acpSessionResume-CcpDuIO5.mjs} +1 -1
  9. package/dist/{agentHome-Dc7LYF3d.mjs → agentHome-BJGRA2Kx.mjs} +4 -4
  10. package/dist/{agentHome-DsKHJ_Sf.cjs → agentHome-fIUqT-pn.cjs} +4 -4
  11. package/dist/{api-BOqjYd5r.cjs → api-CXL6jp-p.cjs} +18 -9
  12. package/dist/{api-DNKa7kVy.mjs → api-Dw8gFsQi.mjs} +19 -10
  13. package/dist/{apiMachine-Di1G9ECW.mjs → apiMachine-BBNEtjf7.mjs} +56 -15
  14. package/dist/{apiMachine--rcPpMmt.cjs → apiMachine-C6UqHoPF.cjs} +55 -14
  15. package/dist/{attachmentContent-C9S4ekAz.mjs → attachmentContent-CC4yIrSm.mjs} +2 -2
  16. package/dist/{attachmentContent-BFRMLong.cjs → attachmentContent-NmVfKp-B.cjs} +2 -2
  17. package/dist/{auth-CXmI92aj.cjs → auth-Bb_SL2os.cjs} +5 -5
  18. package/dist/{auth-Bzwo_vOM.mjs → auth-Bh6SUoGi.mjs} +8 -8
  19. package/dist/{auth-BNhhk2Fr.mjs → auth-Bj0psrD2.mjs} +5 -5
  20. package/dist/{auth-CQtfznF0.cjs → auth-DKa4MsAi.cjs} +8 -8
  21. package/dist/{auto-DXLdaX5O.cjs → auto-C9Qohh0P.cjs} +17 -16
  22. package/dist/{auto-DHYOLnXB.mjs → auto-DK7pbCnV.mjs} +19 -18
  23. package/dist/{bootstrap-Di38SnpN.mjs → bootstrap-Ct9Nb4sv.mjs} +2 -2
  24. package/dist/{bootstrap-eJ1l7VYl.cjs → bootstrap-DBJB0y-H.cjs} +2 -2
  25. package/dist/{browser-6Cg7G6bb.mjs → browser-BGxDRhHy.mjs} +1 -1
  26. package/dist/{browser-D3uBFRQu.cjs → browser-CLJWcodR.cjs} +1 -1
  27. package/dist/{claudeLocal-BBaE4QF_.cjs → claudeLocal-B6YDYlnY.cjs} +4 -4
  28. package/dist/{claudeLocal-CqaEs-81.mjs → claudeLocal-Ux31hZyC.mjs} +5 -5
  29. package/dist/{claudeLocalLauncher-BDUPxtsI.mjs → claudeLocalLauncher-D06QijMw.mjs} +10 -10
  30. package/dist/{claudeLocalLauncher-wPxKtH_P.cjs → claudeLocalLauncher-DFvmF8rC.cjs} +9 -9
  31. package/dist/{claudeSessionFork-DzWFzj9m.mjs → claudeSessionFork-D2GI7P59.mjs} +1 -1
  32. package/dist/{claudeSessionFork-CmY25Fl3.cjs → claudeSessionFork-DTLZ2rek.cjs} +1 -1
  33. package/dist/{client-DmY03OZZ.cjs → client-Bffkrs5p.cjs} +2 -2
  34. package/dist/{client-C2HcMqRF.cjs → client-CARZ_lNS.cjs} +3 -3
  35. package/dist/{client-agH03Irm.cjs → client-CMKGrnmT.cjs} +2 -2
  36. package/dist/{client-DWws_aQK.mjs → client-CnGNYidN.mjs} +2 -2
  37. package/dist/{client-qJ0y8fus.mjs → client-CtL0Vtww.mjs} +4 -4
  38. package/dist/{client-DcDE6Ifk.mjs → client-DZkBUoh9.mjs} +2 -2
  39. package/dist/codex/happyMcpStdioBridge.cjs +16 -15
  40. package/dist/codex/happyMcpStdioBridge.mjs +17 -16
  41. package/dist/{codexAppServerClient-DgE99i7X.mjs → codexAppServerClient-CLc5nhLT.mjs} +37 -6
  42. package/dist/{codexAppServerClient-DwzC8LR0.cjs → codexAppServerClient-CpT9F6EM.cjs} +37 -6
  43. package/dist/{codexCommand-1vFEA1KT.cjs → codexCommand-39kH99SJ.cjs} +148 -61
  44. package/dist/{codexCommand-DUSVzbKh.mjs → codexCommand-Dliq3EBv.mjs} +143 -56
  45. package/dist/{codexTermination-DuDPyBRR.cjs → codexTermination-ByW7tRjr.cjs} +1 -1
  46. package/dist/{codexTermination-Bybovr2z.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-C4xOL5bH.cjs → config-CeIzCsfj.cjs} +3 -3
  50. package/dist/{config-BrzZ0O-6.mjs → config-CxSsGO1Z.mjs} +3 -3
  51. package/dist/{configuration-BZHpFD7K.mjs → configuration-Dechcvd-.mjs} +1 -1
  52. package/dist/{configuration-DyPW9mVa.cjs → configuration-Dt5lKW3P.cjs} +1 -1
  53. package/dist/{connect-DurKwMEo.cjs → connect-NPDzIVC6.cjs} +12 -12
  54. package/dist/{connect-Cw_INlj8.mjs → connect-UwQHvCpR.mjs} +13 -13
  55. package/dist/{context-2xDvjkQp.cjs → context-BdZssgF0.cjs} +1 -1
  56. package/dist/{context-t7YV0aZc.mjs → context-C9JbJoNe.mjs} +1 -1
  57. package/dist/{controlClient-DvFaPsg6.cjs → controlClient-BRk65BRO.cjs} +3 -3
  58. package/dist/{controlClient-Bw56NIrj.mjs → controlClient-D7NGfmtq.mjs} +3 -3
  59. package/dist/{createSessionMetadata-Dpg6bV6f.cjs → createSessionMetadata-B_HZCDj_.cjs} +2 -2
  60. package/dist/{createSessionMetadata-Dn5BkLfU.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-D0BrV1FD.cjs → deterministicJson-BEygolBQ.cjs} +12 -12
  64. package/dist/{deterministicJson-CsRckxVq.mjs → deterministicJson-DNmMVhFu.mjs} +13 -13
  65. package/dist/{doctor-CYe4d9kU.cjs → doctor-B9lW1WlG.cjs} +7 -7
  66. package/dist/{doctor-B4HQiW6j.mjs → doctor-BdBi7TFZ.mjs} +7 -7
  67. package/dist/{downloadTarget-tYMV_VHo.mjs → downloadTarget-CGojGjaN.mjs} +6 -6
  68. package/dist/{downloadTarget-CuhBVvuC.cjs → downloadTarget-DS0zT2AU.cjs} +6 -6
  69. package/dist/{ensureDaemonRunning-DVtIG9z7.mjs → ensureDaemonRunning-BOdbryDM.mjs} +5 -5
  70. package/dist/{ensureDaemonRunning-Ce3BlWiR.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-BU1uMNyv.mjs → handleResumeCommand-CgLzBYne.mjs} +5 -5
  74. package/dist/{handleResumeCommand-CLxsmAW0.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-KwuXqLwe.cjs → index-Bs5FD8JF.cjs} +4 -4
  78. package/dist/{index-ChX0eVXw.mjs → index-CBHfkQNY.mjs} +142 -60
  79. package/dist/{index-DoXbGEAi.cjs → index-CwRW11hT.cjs} +3 -3
  80. package/dist/{index-CVHRt3SS.mjs → index-DUByZsKe.mjs} +4 -4
  81. package/dist/{index-wWJJAQRk.cjs → index-DXSIi6j_.cjs} +4 -4
  82. package/dist/{index-DDz0Ftoy.mjs → index-Db0HIC-k.mjs} +4 -4
  83. package/dist/{index-WKyN-bNy.mjs → index-DmqsRnV7.mjs} +1 -1
  84. package/dist/{index-DG1kGjkF.cjs → index-f8oDidjV.cjs} +142 -60
  85. package/dist/{index-B1OxWiNG.mjs → index-rNTX33in.mjs} +3 -3
  86. package/dist/index.cjs +2 -2
  87. package/dist/index.mjs +2 -2
  88. package/dist/{install-cAYvHxXR.cjs → install-CXIL_FYx.cjs} +3 -3
  89. package/dist/{install-CMa_FOWu.mjs → install-DfPrEWGG.mjs} +3 -3
  90. package/dist/lib.cjs +11 -11
  91. package/dist/lib.d.cts +61 -1
  92. package/dist/lib.d.mts +61 -1
  93. package/dist/lib.mjs +12 -12
  94. package/dist/{lidState-D-lsD1FS.mjs → lidState-D0DF20oG.mjs} +1 -1
  95. package/dist/{lidState-d1vgQ3n7.cjs → lidState-q_XFYg33.cjs} +1 -1
  96. package/dist/{localHappyAgentAuth-wvDp-nGj.mjs → localHappyAgentAuth-BBhM4Qk1.mjs} +1 -1
  97. package/dist/{localHappyAgentAuth-DucSnCg3.cjs → localHappyAgentAuth-CKNW-MXw.cjs} +1 -1
  98. package/dist/{logger-C3vZG6Q0.cjs → logger-BBRTTVsQ.cjs} +2 -2
  99. package/dist/{logger-RpzJ4d8V.mjs → logger-CL7pin9b.mjs} +2 -2
  100. package/dist/{machineMetadata-CiQ2_1Mq.mjs → machineMetadata-DP06qdBk.mjs} +3 -3
  101. package/dist/{machineMetadata-CAvFq1Jg.cjs → machineMetadata-DnFNlrVK.cjs} +3 -3
  102. package/dist/{main-ChpYcFZi.cjs → main-DLOXykOR.cjs} +49 -48
  103. package/dist/{main-IPhaImjm.mjs → main-DO7nRvhf.mjs} +49 -48
  104. package/dist/{mcp-CWnMvju6.mjs → mcp-C-4sPTae.mjs} +16 -15
  105. package/dist/{mcp-2xF232hL.cjs → mcp-Du0MgR7e.cjs} +15 -14
  106. package/dist/{mirrorProtocol-CVzPObON.cjs → mirrorProtocol-GuWMxLkh.cjs} +2 -2
  107. package/dist/{mirrorProtocol-Dr7fNq8V.mjs → mirrorProtocol-dkq2ZENA.mjs} +3 -3
  108. package/dist/{package-CwB8rFJt.mjs → package-C6uiXULx.mjs} +7 -7
  109. package/dist/{package-Gnf_935w.cjs → package-DrY090nZ.cjs} +7 -7
  110. package/dist/{panels-DTlTsndU.cjs → panels-4DRBKHZP.cjs} +5 -5
  111. package/dist/{panels-L1mSkC-y.mjs → panels-DXYdJA6n.mjs} +5 -5
  112. package/dist/{peerTools-C1E5cQ86.cjs → peerTools-5ZM4spcZ.cjs} +5 -5
  113. package/dist/{peerTools-2_8Bw9PU.mjs → peerTools-dY1aJez4.mjs} +5 -5
  114. package/dist/{persistence-CqtjFiD1.cjs → persistence-Bl5S3TLB.cjs} +6 -2
  115. package/dist/{persistence-Bn4qEbDg.mjs → persistence-Dogj7JIp.mjs} +6 -3
  116. package/dist/{piRunnerArgs-BI8yQRBZ.cjs → piRunnerArgs-C3jZ1M6b.cjs} +1 -1
  117. package/dist/{piRunnerArgs-DWBb63W9.mjs → piRunnerArgs-D8nN_Iit.mjs} +1 -1
  118. package/dist/{piRuntime--mQ43MSM.cjs → piRuntime-Bd9-eq6M.cjs} +1 -1
  119. package/dist/{piRuntime-Do8oqbm3.mjs → piRuntime-BoeMsAXK.mjs} +1 -1
  120. package/dist/{piTerminal-BzcvLFsP.cjs → piTerminal-C3j1ca3x.cjs} +17 -16
  121. package/dist/{piTerminal-GC1KHTYQ.mjs → piTerminal-GEPkIGD4.mjs} +18 -17
  122. package/dist/{pushNotifications-Bb-QSqXw.cjs → pushNotifications-CfspRcl-.cjs} +20 -2
  123. package/dist/{pushNotifications-BThg4nVd.mjs → pushNotifications-dUceOIni.mjs} +21 -3
  124. package/dist/{query-Bz3pocKH.cjs → query-DjsVgG3E.cjs} +1 -1
  125. package/dist/{query-CkgIJ_Dy.mjs → query-iYH-tm7L.mjs} +1 -1
  126. package/dist/{rateLimitReporter-BkHyvLru.cjs → rateLimitReporter-DUu2KydZ.cjs} +3 -3
  127. package/dist/{rateLimitReporter-Iw4k3Bbr.mjs → rateLimitReporter-jeVi-fym.mjs} +3 -3
  128. package/dist/{rateLimitWindows-Bm_dcQGW.cjs → rateLimitWindows-Bx3ROBP5.cjs} +1 -1
  129. package/dist/{rateLimitWindows-CQ4tIQnx.mjs → rateLimitWindows-CEn0DXaX.mjs} +1 -1
  130. package/dist/{registerCommonHandlers-CIs6H2DV.cjs → registerCommonHandlers-Beun-cQv.cjs} +2 -2
  131. package/dist/{registerCommonHandlers-CaWl9ll1.mjs → registerCommonHandlers-DWZ7mfdt.mjs} +2 -2
  132. package/dist/{specialCommands-BsvSoDhC.cjs → registerKillSessionHandler-CA1FFr_F.cjs} +15 -62
  133. package/dist/{specialCommands-DHU7TNeK.mjs → registerKillSessionHandler-CzgklwLG.mjs} +17 -60
  134. package/dist/{remoteSessionClient-uPj7omsw.mjs → remoteSessionClient-BiC2KDew.mjs} +5 -5
  135. package/dist/{remoteSessionClient-DgUMfPW4.cjs → remoteSessionClient-DGFI__5Z.cjs} +5 -5
  136. package/dist/{reportProgressTool-DUEq3xAL.mjs → reportProgressTool-CgPy6n_7.mjs} +3 -3
  137. package/dist/{reportProgressTool-CaJ8EwLq.cjs → reportProgressTool-CvPGov1F.cjs} +2 -2
  138. package/dist/{run-DTUJBD6p.mjs → run-B_gFgJVB.mjs} +393 -42
  139. package/dist/{run-DyyGMqND.cjs → run-rPqQwDi_.cjs} +391 -40
  140. package/dist/{runClaude-DTNvIz2J.mjs → runClaude-CykqeXK7.mjs} +26 -23
  141. package/dist/{runClaude-8JDaPoGQ.cjs → runClaude-DM8gm8iu.cjs} +27 -24
  142. package/dist/{runClaudeDeps-CgGkgg7e.mjs → runClaudeDeps-D2phXGut.mjs} +106 -46
  143. package/dist/{runClaudeDeps-BeLo5zss.cjs → runClaudeDeps-DGAomimZ.cjs} +101 -40
  144. package/dist/{runGemini-BSOdU563.cjs → runGemini-CXTeSOZp.cjs} +50 -49
  145. package/dist/{runGemini-eU8UOzfc.mjs → runGemini-CtWCVkj5.mjs} +49 -48
  146. package/dist/{runOpenClaw-D8RZiA1e.mjs → runOpenClaw-BBdjlViJ.mjs} +25 -24
  147. package/dist/{runOpenClaw-CYyFoGRZ.cjs → runOpenClaw-CH_9_RyZ.cjs} +26 -25
  148. package/dist/{sandbox-C8zfNX-4.cjs → sandbox-Bb5IMun3.cjs} +4 -4
  149. package/dist/{sandbox-DlPahdhl.mjs → sandbox-DGmXZ6Zz.mjs} +4 -4
  150. package/dist/selfCheck-BfK945YQ.mjs +86 -0
  151. package/dist/{selfCheck-D28nvuPJ.cjs → selfCheck-CccwNTTK.cjs} +37 -37
  152. package/dist/{send-DBpv-1eh.mjs → send-B6rHg8GT.mjs} +9 -8
  153. package/dist/{send-C58kX4qz.cjs → send-BpiXPkDo.cjs} +9 -8
  154. package/dist/{server-J5K6pOox.mjs → server-BkdAyHhC.mjs} +4 -4
  155. package/dist/{server-I_CETZzn.cjs → server-DHUzjApC.cjs} +6 -6
  156. package/dist/{sessionLock-DjE7O0LS.cjs → sessionLock-BFBReiKq.cjs} +134 -3
  157. package/dist/{sessionLock-C7Wg1RVd.mjs → sessionLock-Ca_bIo50.mjs} +121 -4
  158. package/dist/{sessionOps-CYjMT7Ad.mjs → sessionOps-CA2kpm66.mjs} +36 -5
  159. package/dist/{sessionOps-DGMpl9NB.cjs → sessionOps-DeWVqpe4.cjs} +36 -4
  160. package/dist/{sessionProvider-DVtxrOuM.cjs → sessionProvider-VFbtUmMR.cjs} +5 -5
  161. package/dist/{sessionProvider-TLiFn9kD.mjs → sessionProvider-g18IiK74.mjs} +5 -5
  162. package/dist/{sessionScanner-BZ1ZSn6I.cjs → sessionScanner-CGzsN8V6.cjs} +3 -3
  163. package/dist/{sessionScanner-CknV1IlN.mjs → sessionScanner-DDDud5re.mjs} +3 -3
  164. package/dist/{sessions-DU4bxkap.mjs → sessions-B4d50sCI.mjs} +36 -26
  165. package/dist/{sessions-CTkBKs5U.cjs → sessions-CKJPWFgu.cjs} +37 -25
  166. package/dist/{setupOfflineReconnection-DaOXnGuH.mjs → setupOfflineReconnection-CyPNgyCe.mjs} +2 -2
  167. package/dist/{setupOfflineReconnection-CQHNuP_0.cjs → setupOfflineReconnection-DPXRo_zf.cjs} +2 -2
  168. package/dist/{spawn-C0wZc03S.cjs → spawn-CgSJzzWS.cjs} +17 -16
  169. package/dist/{spawn-DdnYTtQe.mjs → spawn-CrYN_OOT.mjs} +18 -17
  170. package/dist/{spawnAgents-BjyU78Ue.cjs → spawnAgents-C1-4m7aN.cjs} +3 -1
  171. package/dist/{spawnAgents-D-7wMw-a.mjs → spawnAgents-DWCDYCQ1.mjs} +4 -2
  172. package/dist/{spawnHappyCLI-BJUd974I.cjs → spawnHappyCLI-CTy3p6V_.cjs} +1 -1
  173. package/dist/{spawnHappyCLI-CnyyJk74.mjs → spawnHappyCLI-DjbkiSH1.mjs} +1 -1
  174. package/dist/specialCommands-J3JFOq0J.cjs +60 -0
  175. package/dist/specialCommands-MXUN0wfI.mjs +54 -0
  176. package/dist/{startFileWatcher-DBboREco.cjs → startFileWatcher-BQs0cJA-.cjs} +1 -1
  177. package/dist/{startFileWatcher-CpO5Mwbr.mjs → startFileWatcher-Dedtu1vq.mjs} +1 -1
  178. package/dist/{defaultPermissionMode-DMTnlccv.mjs → startupSessionCreate-BKFU4v_h.mjs} +25 -6
  179. package/dist/{defaultPermissionMode-Dlm0q1m0.cjs → startupSessionCreate-Dxy3X4DG.cjs} +25 -7
  180. package/dist/{streamRelay-CqBynIon.mjs → streamRelay-P9e7Sohm.mjs} +1 -1
  181. package/dist/{sync-6HFRJP1h.cjs → sync-DtWB7RzA.cjs} +1 -1
  182. package/dist/{sync-I8NYmycF.mjs → sync-eZkXnsW_.mjs} +1 -1
  183. package/dist/{systemPrompt-BDWj5QSL.cjs → systemPrompt-2XOpZ1j6.cjs} +1 -1
  184. package/dist/{systemPrompt-C1RSY_60.mjs → systemPrompt-Bn6g6aCH.mjs} +2 -2
  185. package/dist/{teams-eUD7ymif.cjs → teams-ecFay4Gn.cjs} +6 -6
  186. package/dist/{teams-GpLFbXXE.mjs → teams-nadkqrbW.mjs} +7 -7
  187. package/dist/{template-CEK8MEjo.mjs → template-BiTD-jI9.mjs} +1 -1
  188. package/dist/{time-umG7yHkb.mjs → time-CN3TuSVG.mjs} +1 -1
  189. package/dist/{time-BAJRbB6U.cjs → time-gPD_EmA-.cjs} +1 -1
  190. package/dist/{titleGenerator-dmFlxkRs.mjs → titleGenerator-DgzTQdn2.mjs} +1 -1
  191. package/dist/{titleGenerator-iqb2jOF1.cjs → titleGenerator-lT5ldPuN.cjs} +2 -2
  192. package/dist/{todo-DsR7WnQS.cjs → todo-B1VeMk5A.cjs} +5 -5
  193. package/dist/{todo-CT4AJ3sH.mjs → todo-BIxd7l2Q.mjs} +6 -6
  194. package/dist/{tools-30E66QL_.cjs → tools-DvqbLsCF.cjs} +1 -1
  195. package/dist/{tools-BOWazSD6.mjs → tools-zXJpxiG_.mjs} +1 -1
  196. package/dist/{uninstall-DImXs6VZ.mjs → uninstall-9htK6mb7.mjs} +3 -3
  197. package/dist/{uninstall-BtTc9hHa.cjs → uninstall-CvIOpwB5.cjs} +3 -3
  198. package/package.json +7 -7
  199. package/dist/agentAttachments-M_B5qEF2.mjs +0 -18
  200. package/dist/selfCheck-4bcdHPFQ.mjs +0 -86
  201. package/dist/startupSessionCreate-BgaVuvQp.mjs +0 -24
  202. package/dist/startupSessionCreate-C1u2dtz8.cjs +0 -26
@@ -1,107 +1,109 @@
1
1
  'use strict';
2
2
 
3
- var auth = require('./auth-CXmI92aj.cjs');
3
+ var auth = require('./auth-Bb_SL2os.cjs');
4
4
  var index = require('./index-BOe6dKnL.cjs');
5
- var deterministicJson = require('./deterministicJson-D0BrV1FD.cjs');
6
- var client = require('./client-agH03Irm.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-BOqjYd5r.cjs');
12
- var agentAttachments = require('./agentAttachments-Dbw8iMCZ.cjs');
13
- var attachmentContent = require('./attachmentContent-BFRMLong.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-DjE7O0LS.cjs');
15
+ var sessionLock = require('./sessionLock-BFBReiKq.cjs');
16
16
  var React = require('react');
17
- var codexAppServerClient = require('./codexAppServerClient-DwzC8LR0.cjs');
18
- var rateLimitReporter = require('./rateLimitReporter-BkHyvLru.cjs');
19
- var logger = require('./logger-C3vZG6Q0.cjs');
20
- var BasePermissionHandler = require('./BasePermissionHandler-C8UEcFz0.cjs');
21
- var codexTermination = require('./codexTermination-DuDPyBRR.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-CqtjFiD1.cjs');
24
- var machineMetadata = require('./machineMetadata-CAvFq1Jg.cjs');
25
- var configuration = require('./configuration-DyPW9mVa.cjs');
26
- var specialCommands = require('./specialCommands-BsvSoDhC.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-Dpg6bV6f.cjs');
29
+ var createSessionMetadata = require('./createSessionMetadata-B_HZCDj_.cjs');
30
30
  var sessionExitLifecycle = require('./sessionExitLifecycle-DFltxXU8.cjs');
31
- var controlClient = require('./controlClient-DvFaPsg6.cjs');
32
- var defaultPermissionMode = require('./defaultPermissionMode-Dlm0q1m0.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-CQHNuP_0.cjs');
35
- var startupSessionCreate = require('./startupSessionCreate-C1u2dtz8.cjs');
34
+ var setupOfflineReconnection = require('./setupOfflineReconnection-DPXRo_zf.cjs');
36
35
  var trimIdent = require('./trimIdent-4gvk9Wk6.cjs');
36
+ var specialCommands = require('./specialCommands-J3JFOq0J.cjs');
37
37
  var constants = require('./constants-VJ0N6WuG.cjs');
38
+ var defaultPermissionMode = require('./defaultPermissionMode-CxmTXUQR.cjs');
38
39
  var editPaths = require('./editPaths-Bqp4OFPw.cjs');
39
- var ensureDaemonRunning = require('./ensureDaemonRunning-Ce3BlWiR.cjs');
40
+ var ensureDaemonRunning = require('./ensureDaemonRunning-Bibp6vhe.cjs');
40
41
  require('tweetnacl');
41
42
  require('axios');
42
- require('./time-BAJRbB6U.cjs');
43
- require('./browser-D3uBFRQu.cjs');
43
+ require('./time-gPD_EmA-.cjs');
44
+ require('./browser-CLJWcodR.cjs');
44
45
  require('open');
45
46
  require('zod');
46
47
  require('./prompt-Bof2aQkI.cjs');
47
- require('./reportProgressTool-CaJ8EwLq.cjs');
48
- require('./client-DmY03OZZ.cjs');
48
+ require('./reportProgressTool-CvPGov1F.cjs');
49
+ require('./client-Bffkrs5p.cjs');
49
50
  require('./precheckCompat-CWOi5c9L.cjs');
50
51
  require('./agentGuidance-BtBx2xxE.cjs');
51
52
  require('node:fs');
52
53
  require('node:os');
53
54
  require('./pi-DlsrPCTa.cjs');
54
55
  require('./fileStore-7qhnbs6N.cjs');
55
- require('./client-C2HcMqRF.cjs');
56
+ require('./client-CARZ_lNS.cjs');
56
57
  require('node:util');
57
- require('./context-2xDvjkQp.cjs');
58
- require('./sessionOps-DGMpl9NB.cjs');
58
+ require('./context-BdZssgF0.cjs');
59
+ require('./sessionOps-DeWVqpe4.cjs');
59
60
  require('socket.io-client');
60
61
  require('./backgroundTaskActivity-CBvUdj39.cjs');
61
62
  require('./resources-BZ_Be0qM.cjs');
62
- require('./tools-30E66QL_.cjs');
63
- require('./peerTools-C1E5cQ86.cjs');
63
+ require('./tools-DvqbLsCF.cjs');
64
+ require('./peerTools-5ZM4spcZ.cjs');
64
65
  require('./ids-B6ZC0HGt.cjs');
65
- require('./remoteSessionClient-DgUMfPW4.cjs');
66
+ require('./remoteSessionClient-DGFI__5Z.cjs');
66
67
  require('@modelcontextprotocol/sdk/server/mcp.js');
67
68
  require('node:http');
68
69
  require('@modelcontextprotocol/sdk/server/streamableHttp.js');
69
70
  require('./limits-C-a7gr04.cjs');
70
- require('./downloadTarget-CuhBVvuC.cjs');
71
+ require('./downloadTarget-DS0zT2AU.cjs');
71
72
  require('./terminals-B_bfC9c2.cjs');
72
73
  require('./terminalTitleSuggest-DhvRFX3H.cjs');
73
74
  require('./tmuxSocket-D-Xt6Vn-.cjs');
74
- require('./bootstrap-eJ1l7VYl.cjs');
75
- require('./package-Gnf_935w.cjs');
75
+ require('./bootstrap-DBJB0y-H.cjs');
76
+ require('./package-DrY090nZ.cjs');
76
77
  require('./webPanels-FCgFKvVe.cjs');
77
- require('./pushNotifications-Bb-QSqXw.cjs');
78
+ require('./pushNotifications-CfspRcl-.cjs');
78
79
  require('./contentLogMetadata-ZSFk_NjQ.cjs');
79
80
  require('./previewPath-B0rBdhy1.cjs');
80
81
  require('crypto');
81
- require('./lidState-d1vgQ3n7.cjs');
82
+ require('./lidState-q_XFYg33.cjs');
82
83
  require('os');
83
84
  require('child_process');
84
85
  require('node:events');
85
- require('./registerCommonHandlers-CIs6H2DV.cjs');
86
+ require('./registerCommonHandlers-Beun-cQv.cjs');
86
87
  require('util');
87
88
  require('fs/promises');
88
89
  require('path');
89
90
  require('cross-spawn');
90
- require('./sync-6HFRJP1h.cjs');
91
+ require('./sync-DtWB7RzA.cjs');
91
92
  require('chalk');
93
+ require('./cliUpdate-DsKXPFYp.cjs');
92
94
  require('./processTreeSnapshot-mDbnuojn.cjs');
93
95
  require('node:readline');
94
96
  require('./manager-HrEj442o.cjs');
95
97
  require('@anthropic-ai/sandbox-runtime');
96
- require('./rateLimitWindows-Bm_dcQGW.cjs');
98
+ require('./rateLimitWindows-Bx3ROBP5.cjs');
97
99
  require('./processTree-CMHWlVse.cjs');
98
100
  require('./detectCLI-BuYR_Qxe.cjs');
99
101
  require('fs');
100
- require('./localHappyAgentAuth-DucSnCg3.cjs');
102
+ require('./localHappyAgentAuth-CKNW-MXw.cjs');
101
103
  require('./fsMkdir-0K3yENml.cjs');
102
104
  require('./types-CRS-srZK.cjs');
103
105
  require('url');
104
- require('./spawnHappyCLI-BJUd974I.cjs');
106
+ require('./spawnHappyCLI-CTy3p6V_.cjs');
105
107
  require('./doctorReadiness-Dl6yRQCy.cjs');
106
108
 
107
109
  function getStartedSubagents(state) {
@@ -1096,6 +1098,19 @@ function unsupportedEffortReason(catalog, model, effort) {
1096
1098
  return `Reasoning effort "${effort}" is not supported by ${model ?? "the default model"}. Choose a supported level.`;
1097
1099
  }
1098
1100
 
1101
+ function resolveCodexTurnModel(mode, machineDefault) {
1102
+ if (mode.model) return mode.model;
1103
+ return mode.modelReset ? machineDefault || void 0 : void 0;
1104
+ }
1105
+ function codexModelFacts(input) {
1106
+ const { threadModel, pendingModel, machineDefault } = input;
1107
+ if (!threadModel) return { stickyModel: pendingModel ?? null };
1108
+ return {
1109
+ stickyModel: threadModel !== machineDefault ? threadModel : null,
1110
+ currentModelCode: threadModel
1111
+ };
1112
+ }
1113
+
1099
1114
  const UNEXPECTED_STATUS = /^unexpected status (\d{3}) ([^:]*?):\s*([\s\S]*?)(?:,\s*url:\s*(\S+))?$/;
1100
1115
  function readableCodexErrorText(text) {
1101
1116
  const trimmed = text.trim();
@@ -1377,6 +1392,7 @@ function hashCodexEnhancedMode(mode) {
1377
1392
  return deterministicJson.hashObject({
1378
1393
  permissionMode: mode.permissionMode,
1379
1394
  model: mode.model,
1395
+ modelReset: mode.modelReset,
1380
1396
  appendSystemPrompt: mode.appendSystemPrompt,
1381
1397
  effort: mode.effort
1382
1398
  });
@@ -1430,6 +1446,16 @@ function safeCodexErrorMetadata(value) {
1430
1446
  };
1431
1447
  }
1432
1448
 
1449
+ const CODEX_REMOTE_PERMISSION_MODES = [
1450
+ "default",
1451
+ "read-only",
1452
+ "safe-yolo",
1453
+ "yolo"
1454
+ ];
1455
+ function codexPublishablePermissionMode(mode) {
1456
+ return typeof mode === "string" && CODEX_REMOTE_PERMISSION_MODES.includes(mode) ? mode : null;
1457
+ }
1458
+
1433
1459
  const DEFAULT_CODEX_MODEL = void 0;
1434
1460
  const DEFAULT_CODEX_EFFORT = "medium";
1435
1461
  async function runCodex(opts) {
@@ -1474,9 +1500,11 @@ async function runCodex(opts) {
1474
1500
  dangerouslySkipPermissions: initialPermissionMode === "yolo" || initialPermissionMode === "bypassPermissions",
1475
1501
  ...forkedFromSessionId ? { parentSessionId: forkedFromSessionId } : {},
1476
1502
  ...forkedFromMessageId ? { forkedFromMessageId } : {},
1477
- 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]
1478
1504
  });
1479
1505
  metadata.attachmentKinds = [...attachmentContent.CLAUDE_ATTACHMENT_KINDS];
1506
+ metadata.stickyModel = null;
1507
+ metadata.currentThoughtLevelCode = DEFAULT_CODEX_EFFORT;
1480
1508
  const importCodexThreadId = process.env[IMPORT_CODEX_THREAD_ENV];
1481
1509
  if (importCodexThreadId) {
1482
1510
  metadata.importedFromCodexThreadId = importCodexThreadId;
@@ -1577,7 +1605,7 @@ async function runCodex(opts) {
1577
1605
  logger.logger.debug("[START] Failed to report to daemon (may not be running)", safeCodexErrorMetadata(error));
1578
1606
  }
1579
1607
  }
1580
- const messageQueue = new specialCommands.MessageQueue2(hashCodexEnhancedMode);
1608
+ const messageQueue = new registerKillSessionHandler.MessageQueue2(hashCodexEnhancedMode);
1581
1609
  function attachPromptQueueDrain(client2) {
1582
1610
  const drain = client2.attachPromptQueueDrain({
1583
1611
  isIdle: () => messageQueue.size() === 0 && messageQueue.isWaiting()
@@ -1589,25 +1617,50 @@ async function runCodex(opts) {
1589
1617
  const keys = entries.map((entry) => entry.sourceId).filter((key) => typeof key === "string");
1590
1618
  if (keys.length > 0) session.sendQueueCancelReason(keys, entries[0].reason);
1591
1619
  });
1620
+ const heldInput$1 = new heldInput.HeldInput((keys, reason) => session.sendQueueCancelReason(keys, reason));
1592
1621
  let currentPermissionMode = initialPermissionMode;
1593
1622
  let currentModel = DEFAULT_CODEX_MODEL;
1594
1623
  let currentEffort = DEFAULT_CODEX_EFFORT;
1595
1624
  let currentAppendSystemPrompt = void 0;
1625
+ let reportedStickyModel = null;
1626
+ let reportedCurrentModel;
1627
+ let reportedEffort = DEFAULT_CODEX_EFFORT;
1628
+ const reportModeFacts = () => {
1629
+ const facts = codexModelFacts({ threadModel: client$1.threadModel, pendingModel: currentModel, machineDefault: machineDefaultModel });
1630
+ const effort = currentEffort;
1631
+ if (facts.stickyModel === reportedStickyModel && facts.currentModelCode === reportedCurrentModel && effort === reportedEffort) return;
1632
+ reportedStickyModel = facts.stickyModel;
1633
+ reportedCurrentModel = facts.currentModelCode;
1634
+ reportedEffort = effort;
1635
+ session.updateMetadata((metadata2) => {
1636
+ const { currentThoughtLevelCode: _previous, currentModelCode: _model, ...rest } = metadata2;
1637
+ return {
1638
+ ...rest,
1639
+ stickyModel: facts.stickyModel,
1640
+ ...facts.currentModelCode ? { currentModelCode: facts.currentModelCode } : {},
1641
+ ...effort ? { currentThoughtLevelCode: effort } : {}
1642
+ };
1643
+ });
1644
+ };
1596
1645
  const resetCurrentModeDefaults = () => {
1597
- currentPermissionMode = defaultPermissionMode.DEFAULT_CODEX_PERMISSION_MODE;
1598
- currentModel = DEFAULT_CODEX_MODEL;
1599
1646
  currentEffort = DEFAULT_CODEX_EFFORT;
1647
+ reportModeFacts();
1600
1648
  currentAppendSystemPrompt = void 0;
1601
1649
  logger.logger.debug("[Codex] Reset current mode defaults after abort");
1602
1650
  };
1603
- const VALID_REMOTE_PERMISSION_MODES = [
1604
- "default",
1605
- "read-only",
1606
- "safe-yolo",
1607
- "yolo"
1608
- ];
1651
+ const VALID_REMOTE_PERMISSION_MODES = CODEX_REMOTE_PERMISSION_MODES;
1652
+ let publishedPermissionMode = null;
1653
+ const publishPermissionMode = (mode) => {
1654
+ const publishable = codexPublishablePermissionMode(mode);
1655
+ if (!publishable || publishable === publishedPermissionMode) return;
1656
+ publishedPermissionMode = publishable;
1657
+ session.updateMetadata((currentMetadata) => ({ ...currentMetadata, permissionMode: publishable }));
1658
+ };
1659
+ publishPermissionMode(opts.permissionMode);
1609
1660
  let discoveredModels = [];
1610
- agentAttachments.registerAgentAttachmentDownloads(session);
1661
+ let codexAgentVersion = null;
1662
+ let machineDefaultModel;
1663
+ heldInput.registerAgentAttachmentDownloads(session);
1611
1664
  const CODEX_IMAGE_MIME_TYPES = ["image/jpeg", "image/png", "image/gif", "image/webp"];
1612
1665
  const steerDeps = {
1613
1666
  ownsTurn: () => turnActive && !abortInProgress && !shouldExit,
@@ -1633,6 +1686,7 @@ async function runCodex(opts) {
1633
1686
  if (VALID_REMOTE_PERMISSION_MODES.includes(incoming)) {
1634
1687
  messagePermissionMode = incoming;
1635
1688
  currentPermissionMode = messagePermissionMode;
1689
+ publishPermissionMode(incoming);
1636
1690
  logger.logger.debug("[Codex] Valid permission mode override applied");
1637
1691
  } else {
1638
1692
  logger.logger.debug("[Codex] Ignoring invalid permission mode override", logValueMetadata(message.meta.permissionMode));
@@ -1641,9 +1695,12 @@ async function runCodex(opts) {
1641
1695
  logger.logger.debug("[Codex] User message received without a permission mode override");
1642
1696
  }
1643
1697
  let messageModel = currentModel;
1698
+ let messageModelReset = false;
1644
1699
  if (message.meta?.hasOwnProperty("model")) {
1645
1700
  messageModel = message.meta.model || void 0;
1701
+ messageModelReset = !messageModel;
1646
1702
  currentModel = messageModel;
1703
+ reportModeFacts();
1647
1704
  logger.logger.debug("[Codex] Model override updated", logValueMetadata(message.meta.model));
1648
1705
  } else {
1649
1706
  logger.logger.debug("[Codex] User message received without a model override");
@@ -1654,10 +1711,12 @@ async function runCodex(opts) {
1654
1711
  if (incoming === null || incoming === void 0) {
1655
1712
  messageEffort = void 0;
1656
1713
  currentEffort = void 0;
1714
+ reportModeFacts();
1657
1715
  logger.logger.debug(`[Codex] Effort reset to default`);
1658
1716
  } else if (typeof incoming === "string") {
1659
1717
  messageEffort = incoming;
1660
1718
  currentEffort = messageEffort;
1719
+ reportModeFacts();
1661
1720
  logger.logger.debug("[Codex] Valid effort override applied");
1662
1721
  } else {
1663
1722
  logger.logger.debug("[Codex] Ignoring invalid effort override", logValueMetadata(incoming));
@@ -1676,6 +1735,7 @@ async function runCodex(opts) {
1676
1735
  const enhancedMode = {
1677
1736
  permissionMode: messagePermissionMode || "default",
1678
1737
  model: messageModel,
1738
+ ...messageModelReset ? { modelReset: true } : {},
1679
1739
  appendSystemPrompt: messageAppendSystemPrompt,
1680
1740
  effort: messageEffort
1681
1741
  };
@@ -1698,6 +1758,7 @@ async function runCodex(opts) {
1698
1758
  }).catch((error) => {
1699
1759
  logger.logger.warn("[Codex] Failed to prepare user attachments", safeCodexErrorMetadata(error));
1700
1760
  session.sendSessionEvent({ type: "message", message: "Could not prepare this message. Please send it again." });
1761
+ if (message.localKey) session.sendQueueCancelReason([message.localKey], "failed");
1701
1762
  });
1702
1763
  });
1703
1764
  let thinking = false;
@@ -1740,7 +1801,8 @@ async function runCodex(opts) {
1740
1801
  }
1741
1802
  let abortController = new AbortController();
1742
1803
  let shouldExit = false;
1743
- 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");
1744
1806
  let hibernationStamp = null;
1745
1807
  let hibernationProbe = null;
1746
1808
  async function handleAbort(source) {
@@ -1793,6 +1855,10 @@ async function runCodex(opts) {
1793
1855
  logger.logger.debug("[Codex] Kill session requested - terminating process");
1794
1856
  const exitCursor = intent === "offline" && session ? sessionLock.exitCursorStamp(session.messageCursor, Date.now()) : void 0;
1795
1857
  if (exitCursor) session.freezeInbound();
1858
+ const exitReason = intent === "archive" ? "aborted" : "restarted";
1859
+ terminating = true;
1860
+ heldInput$1.drop(exitReason);
1861
+ messageQueue.discardAll(exitReason);
1796
1862
  await handleAbort("kill");
1797
1863
  logger.logger.debug("[Codex] Abort completed, proceeding with termination");
1798
1864
  try {
@@ -1818,7 +1884,7 @@ async function runCodex(opts) {
1818
1884
  }
1819
1885
  });
1820
1886
  session.rpcHandlerManager.registerHandler("abort", () => handleAbort("user"));
1821
- const disposeTermination = specialCommands.registerKillSessionHandler(session.rpcHandlerManager, () => handleKillSession("archive"), session, { processSignals: true, onSignal: () => handleKillSession("offline") });
1887
+ const disposeTermination = registerKillSessionHandler.registerKillSessionHandler(session.rpcHandlerManager, () => handleKillSession("archive"), session, { processSignals: true, onSignal: () => handleKillSession("offline") });
1822
1888
  const messageBuffer = new sessionExitLifecycle.MessageBuffer();
1823
1889
  const hasTTY = process.stdout.isTTY && process.stdin.isTTY;
1824
1890
  let inkInstance = null;
@@ -2018,6 +2084,7 @@ async function runCodex(opts) {
2018
2084
  logger.logger.debug("[codex]: client.connect begin");
2019
2085
  await client$1.connect();
2020
2086
  logger.logger.debug("[codex]: client.connect done");
2087
+ codexAgentVersion = client$1.serverVersion;
2021
2088
  try {
2022
2089
  discoveredModels = await client$1.listModels();
2023
2090
  let configured = null;
@@ -2026,6 +2093,7 @@ async function runCodex(opts) {
2026
2093
  } catch (error) {
2027
2094
  logger.logger.debug("[Codex] config/read unavailable", safeCodexErrorMetadata(error));
2028
2095
  }
2096
+ machineDefaultModel = configured?.model ?? discoveredModels.find((model) => model.isDefault)?.model;
2029
2097
  if (discoveredModels.length > 0 || configured) {
2030
2098
  session.updateMetadata((metadata2) => ({
2031
2099
  ...metadata2,
@@ -2069,6 +2137,7 @@ async function runCodex(opts) {
2069
2137
  first = false;
2070
2138
  appendSystemPromptInjected = true;
2071
2139
  }
2140
+ reportModeFacts();
2072
2141
  const forkCodexThreadId = process.env.HAPPY_FORK_CODEX_THREAD_ID;
2073
2142
  if (!reconnectSessionId && forkCodexThreadId) {
2074
2143
  try {
@@ -2110,17 +2179,18 @@ async function runCodex(opts) {
2110
2179
  pendingRequests: Object.keys(session.getAgentState()?.requests ?? {}).length,
2111
2180
  backgroundTasks: codexActiveSubagents.size,
2112
2181
  lastActivityAt: session.lastActivityAt,
2182
+ ...codexAgentVersion ? { agentVersion: codexAgentVersion } : {},
2113
2183
  ...shouldExit && !hibernationExit.hibernating ? { exiting: true } : {}
2114
2184
  };
2115
2185
  };
2116
- hibernationProbe = new defaultPermissionMode.HibernationProbe({
2186
+ hibernationProbe = new startupSessionCreate.HibernationProbe({
2117
2187
  onKeepAwakeLatched: () => {
2118
2188
  if (session.getMetadata()?.keepAwake === void 0) session.updateMetadata((m) => m.keepAwake === void 0 ? { ...m, keepAwake: true } : m);
2119
2189
  },
2120
2190
  checkMs: persistence.resolveCheckMs(),
2121
2191
  snapshot: hibernationSnapshot,
2122
2192
  ask: (report) => controlClient.checkDaemonHibernation({ sessionId: session.sessionId, pid: process.pid, report }),
2123
- commit: (idleMs) => defaultPermissionMode.commitHibernation({
2193
+ commit: (idleMs) => startupSessionCreate.commitHibernation({
2124
2194
  client: session,
2125
2195
  claimExit: () => !shouldExit && hibernationExit.begin(),
2126
2196
  exitRequested: () => hibernationExit.exitRequested,
@@ -2140,6 +2210,8 @@ async function runCodex(opts) {
2140
2210
  });
2141
2211
  hibernationProbe.start();
2142
2212
  }
2213
+ const autoUpdated = sessionLock.takeAutoRestartedEvent(process.env, "Codex");
2214
+ if (autoUpdated) session.sendSessionEvent(autoUpdated);
2143
2215
  idleRelease.arm();
2144
2216
  while (!shouldExit) {
2145
2217
  logActiveHandles("loop-top");
@@ -2157,6 +2229,7 @@ async function runCodex(opts) {
2157
2229
  break;
2158
2230
  }
2159
2231
  message = batch;
2232
+ heldInput$1.hold(batch.sourceIds);
2160
2233
  }
2161
2234
  if (!message) {
2162
2235
  break;
@@ -2169,6 +2242,7 @@ async function runCodex(opts) {
2169
2242
  turnActive = true;
2170
2243
  if (isCodexClearText(message.message)) {
2171
2244
  logger.logger.debug("[Codex] Handling /clear command - resetting Codex thread state");
2245
+ heldInput$1.delivered();
2172
2246
  client$1.clearThreadState();
2173
2247
  currentTurnId = null;
2174
2248
  codexStartedSubagents = /* @__PURE__ */ new Set();
@@ -2179,6 +2253,7 @@ async function runCodex(opts) {
2179
2253
  reasoningProcessor.abort();
2180
2254
  diffProcessor.reset();
2181
2255
  appendSystemPromptInjected = false;
2256
+ projectInjector.reset();
2182
2257
  thinking = false;
2183
2258
  session.keepAlive(thinking, "remote");
2184
2259
  messageBuffer.addMessage("Context was reset", "status");
@@ -2204,6 +2279,7 @@ async function runCodex(opts) {
2204
2279
  try {
2205
2280
  if (compactCommand !== null) {
2206
2281
  await client$1.ensureConnected();
2282
+ heldInput$1.delivered();
2207
2283
  const outcome = await runCodexCompact(compactCommand, {
2208
2284
  client: client$1,
2209
2285
  notify: (text) => {
@@ -2220,13 +2296,14 @@ async function runCodex(opts) {
2220
2296
  message.mode.permissionMode,
2221
2297
  sandboxManagedByHappy
2222
2298
  );
2223
- const effortRefusal = unsupportedEffortReason(discoveredModels, message.mode.model, message.mode.effort);
2299
+ const turnModel = resolveCodexTurnModel(message.mode, machineDefaultModel);
2300
+ const effortRefusal = unsupportedEffortReason(discoveredModels, turnModel ?? client$1.threadModel ?? machineDefaultModel, message.mode.effort);
2224
2301
  if (effortRefusal) {
2225
2302
  throw new Error(effortRefusal);
2226
2303
  }
2227
2304
  if (!client$1.hasActiveThread()) {
2228
2305
  const startedThread = await client$1.startThread({
2229
- model: message.mode.model,
2306
+ model: turnModel,
2230
2307
  cwd: process.cwd(),
2231
2308
  approvalPolicy: executionPolicy.approvalPolicy,
2232
2309
  sandbox: executionPolicy.sandbox,
@@ -2236,6 +2313,7 @@ async function runCodex(opts) {
2236
2313
  ...currentMetadata,
2237
2314
  codexThreadId: startedThread.threadId
2238
2315
  }));
2316
+ reportModeFacts();
2239
2317
  }
2240
2318
  const includeAppendSystemPrompt = Boolean(
2241
2319
  message.mode.appendSystemPrompt && !appendSystemPromptInjected
@@ -2250,13 +2328,19 @@ async function runCodex(opts) {
2250
2328
  happyHomeDir: configuration.configuration.happyHomeDir,
2251
2329
  sessionId: session.sessionId
2252
2330
  }) : [];
2331
+ if (terminating) {
2332
+ logger.logger.debug("[Codex] Session is ending; not starting the turn");
2333
+ continue;
2334
+ }
2253
2335
  const result = await client$1.sendTurnAndWait(attachmentContent.appendStagedAttachmentsToPrompt(turnPrompt, staged), {
2254
2336
  images: staged.filter((file) => ["image/jpeg", "image/png", "image/gif", "image/webp"].includes(file.mimeType)).map((file) => file.path),
2255
- model: message.mode.model,
2337
+ model: turnModel,
2256
2338
  approvalPolicy: executionPolicy.approvalPolicy,
2257
2339
  sandbox: executionPolicy.sandbox,
2258
- effort: message.mode.effort
2340
+ effort: message.mode.effort,
2341
+ onTurnStarted: () => heldInput$1.delivered()
2259
2342
  });
2343
+ reportModeFacts();
2260
2344
  first = false;
2261
2345
  if (includeAppendSystemPrompt) {
2262
2346
  appendSystemPromptInjected = true;
@@ -2266,6 +2350,7 @@ async function runCodex(opts) {
2266
2350
  }
2267
2351
  } catch (error) {
2268
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");
2269
2354
  const reason = describeThrownTurnError(error);
2270
2355
  if (reason) {
2271
2356
  messageBuffer.addMessage(`Task failed: ${reason}`, "status");
@@ -2297,6 +2382,8 @@ async function runCodex(opts) {
2297
2382
  disposeTermination?.();
2298
2383
  hibernationProbe?.stop();
2299
2384
  session.closePromptQueueDrain();
2385
+ heldInput$1.drop("aborted");
2386
+ messageQueue.discardAll("aborted");
2300
2387
  logger.logger.debug("[codex]: Final cleanup start");
2301
2388
  logActiveHandles("cleanup-start");
2302
2389
  if (reconnectionHandle) {