very-happy-cli 0.2.189 → 0.2.191

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 (203) hide show
  1. package/dist/{AcpBackend-fj16v_cf.mjs → AcpBackend-CCy_9AfR.mjs} +3 -3
  2. package/dist/{AcpBackend-DRPJ2g9G.cjs → AcpBackend-DgrIc1vH.cjs} +3 -3
  3. package/dist/{AcpSessionManager-BZPmUDL5.mjs → AcpSessionManager-CQnxx7gD.mjs} +2 -2
  4. package/dist/{AcpSessionManager-DM-KKg6v.cjs → AcpSessionManager-DVOzCD3P.cjs} +2 -2
  5. package/dist/{BasePermissionHandler-DjM16uJz.cjs → BasePermissionHandler-C9Ag7yvs.cjs} +1 -1
  6. package/dist/{BasePermissionHandler-CVtH-snr.mjs → BasePermissionHandler-DYLN6Ec9.mjs} +1 -1
  7. package/dist/{acpSessionResume-Dxl1LRAT.mjs → acpSessionResume-Bi7pA1n_.mjs} +1 -1
  8. package/dist/{acpSessionResume-2BTMsB7_.cjs → acpSessionResume-TvP_4Zq2.cjs} +1 -1
  9. package/dist/{agentHome-CHctmMzZ.mjs → agentHome-DGv105SR.mjs} +4 -4
  10. package/dist/{agentHome-W17n1gnH.cjs → agentHome-DNUKJWOY.cjs} +4 -4
  11. package/dist/{api-BDuuyys8.cjs → api-BBxZ7y2z.cjs} +19 -10
  12. package/dist/{api-B0yN68XH.mjs → api-jfeMRg5R.mjs} +19 -10
  13. package/dist/{apiMachine-mc9CsKuS.mjs → apiMachine-DRJ7y-BB.mjs} +56 -15
  14. package/dist/{apiMachine-iddD-F19.cjs → apiMachine-DqyjKBZG.cjs} +56 -15
  15. package/dist/{attachmentContent-Cc5b7TPr.cjs → attachmentContent-BO2njyza.cjs} +2 -2
  16. package/dist/{attachmentContent-CcIdMfAx.mjs → attachmentContent-Dm_RIs5L.mjs} +2 -2
  17. package/dist/{auth-DNAgkUkB.mjs → auth-BYDtjVNb.mjs} +8 -8
  18. package/dist/{auth-CyrVvWHF.mjs → auth-DC6rg8lJ.mjs} +5 -5
  19. package/dist/{auth-B7tVmyfX.cjs → auth-DLR3ksCF.cjs} +8 -8
  20. package/dist/{auth-DQKSpaEf.cjs → auth-DnxoVkkf.cjs} +5 -5
  21. package/dist/{auto-CetlumDo.cjs → auto-CwO0u8hB.cjs} +18 -18
  22. package/dist/{auto-BklCipw1.mjs → auto-D5Jhukq1.mjs} +18 -18
  23. package/dist/{bootstrap-DfXwkUQb.mjs → bootstrap-rLaL3kTa.mjs} +2 -2
  24. package/dist/{bootstrap-CDY-Vz8q.cjs → bootstrap-sly4qPPY.cjs} +2 -2
  25. package/dist/{browser-D1yzC0Tu.cjs → browser-BTgZ9d4i.cjs} +1 -1
  26. package/dist/{browser-vb0k1zfI.mjs → browser-CHpVgyni.mjs} +1 -1
  27. package/dist/{claudeLocal-2dJIiTIq.cjs → claudeLocal-1vuTFcL8.cjs} +5 -5
  28. package/dist/{claudeLocal-Bid_rC_v.mjs → claudeLocal-Bgb5GGsq.mjs} +5 -5
  29. package/dist/{claudeLocalLauncher-Jm5oQX5Z.cjs → claudeLocalLauncher-DOsL6HFY.cjs} +10 -10
  30. package/dist/{claudeLocalLauncher-5pzpETxd.mjs → claudeLocalLauncher-T7EfT68h.mjs} +10 -10
  31. package/dist/{claudeSessionFork-DzecSBO4.mjs → claudeSessionFork-CPvi6yDX.mjs} +1 -1
  32. package/dist/{claudeSessionFork-DsbcuDEJ.cjs → claudeSessionFork-Cko4SaVi.cjs} +1 -1
  33. package/dist/{client-CvjjadIE.mjs → client-BXD66ZF5.mjs} +2 -2
  34. package/dist/{client-C9Ecbtko.mjs → client-Bh1aUPh-.mjs} +4 -4
  35. package/dist/{client-B161HwAk.mjs → client-Bi20Ka0h.mjs} +2 -2
  36. package/dist/{client-D0aYWt53.cjs → client-BscskEBk.cjs} +2 -2
  37. package/dist/{client-BNmFaRXZ.cjs → client-C-OdTbrU.cjs} +4 -4
  38. package/dist/{client-DIfxYk7B.cjs → client-C5-C0t2a.cjs} +2 -2
  39. package/dist/codex/happyMcpStdioBridge.cjs +16 -16
  40. package/dist/codex/happyMcpStdioBridge.mjs +16 -16
  41. package/dist/{codexAppServerClient-CO9f4Jr8.cjs → codexAppServerClient-DKXeikEe.cjs} +13 -6
  42. package/dist/{codexAppServerClient-BlVmpjR-.mjs → codexAppServerClient-DXhAf6i-.mjs} +13 -6
  43. package/dist/{codexCommand-CAMR4g5o.mjs → codexCommand-CIaOiiOj.mjs} +137 -55
  44. package/dist/{codexCommand-BfoRP6E9.cjs → codexCommand-DvbbpYBS.cjs} +141 -59
  45. package/dist/{codexTermination-BvGlN02_.mjs → codexTermination-BcQdEDaw.mjs} +1 -1
  46. package/dist/{codexTermination-IrLZQzKC.cjs → codexTermination-BszWfyk5.cjs} +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-Di3Cf6js.cjs} +3 -3
  50. package/dist/{config-CtMgGPvf.mjs → config-OCEcVVK1.mjs} +3 -3
  51. package/dist/{configuration-C0ctLGW2.cjs → configuration-DfPBa-9d.cjs} +1 -1
  52. package/dist/{configuration-1FabKklB.mjs → configuration-ECqXu34R.mjs} +1 -1
  53. package/dist/{connect-DSw-2f52.cjs → connect-BPQRuOw5.cjs} +13 -13
  54. package/dist/{connect-0lSugpjf.mjs → connect-BTfAUhk8.mjs} +13 -13
  55. package/dist/{context-BgxbXWKS.mjs → context-CfgTFpCB.mjs} +1 -1
  56. package/dist/{context-D-hEk5pC.cjs → context-Co7hUaW-.cjs} +1 -1
  57. package/dist/{controlClient-F7hAEEy2.cjs → controlClient-C13_pSKG.cjs} +3 -3
  58. package/dist/{controlClient-DwNnNAUx.mjs → controlClient-ClI7A0qE.mjs} +3 -3
  59. package/dist/{createSessionMetadata-CG6Klinp.mjs → createSessionMetadata-B0eT_Kfj.mjs} +2 -2
  60. package/dist/{createSessionMetadata-DezS33OM.cjs → createSessionMetadata-Cf78KHtt.cjs} +2 -2
  61. package/dist/defaultPermissionMode-m6z2QVyP.mjs +43 -0
  62. package/dist/defaultPermissionMode-oqTupStc.cjs +49 -0
  63. package/dist/{deterministicJson-BMwgK21e.mjs → deterministicJson-BtSwbsok.mjs} +13 -13
  64. package/dist/{deterministicJson-D0LU_XbO.cjs → deterministicJson-CpFFgUL_.cjs} +13 -13
  65. package/dist/{doctor-wVNvRarN.cjs → doctor-BEU0_1Xv.cjs} +7 -7
  66. package/dist/{doctor-D16hySse.mjs → doctor-lsxmAK4o.mjs} +7 -7
  67. package/dist/{downloadTarget-C6tqaXGm.mjs → downloadTarget-BXqXhNF7.mjs} +6 -6
  68. package/dist/{downloadTarget-aNcCxVRL.cjs → downloadTarget-CikzJv1h.cjs} +6 -6
  69. package/dist/{ensureDaemonRunning-CIghxgDR.cjs → ensureDaemonRunning-BUuH-pbE.cjs} +5 -5
  70. package/dist/{ensureDaemonRunning-DZq8bvsp.mjs → ensureDaemonRunning-B_9WAlbU.mjs} +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-BK9XKH_l.mjs} +5 -5
  74. package/dist/{handleResumeCommand-CMUTygsm.cjs → handleResumeCommand-Dj7oi2KO.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-BCQr-5Ei.mjs → index-BdOJOZ6J.mjs} +4 -4
  78. package/dist/{index-CKd20r1W.mjs → index-BjZnpGWX.mjs} +3 -3
  79. package/dist/{index-WKyN-bNy.mjs → index-Bq8NKSCF.mjs} +65 -1
  80. package/dist/{index-BOe6dKnL.cjs → index-CLUHaPU8.cjs} +76 -0
  81. package/dist/{index-CnzsOD19.cjs → index-CauRYQKr.cjs} +133 -54
  82. package/dist/{index-4TpmBb2Q.cjs → index-CmZusg8Q.cjs} +3 -3
  83. package/dist/{index-BuiG8hmg.mjs → index-Cxso1rg4.mjs} +133 -54
  84. package/dist/{index-De02DNu5.cjs → index-D3c7CLot.cjs} +4 -4
  85. package/dist/{index-B81qV_F_.cjs → index-Dg2NAF_-.cjs} +4 -4
  86. package/dist/{index-Df0bc_et.mjs → index-DuK9XYbZ.mjs} +4 -4
  87. package/dist/index.cjs +2 -2
  88. package/dist/index.mjs +2 -2
  89. package/dist/{install-23ehAdTD.mjs → install-DTIveLOS.mjs} +3 -3
  90. package/dist/{install-DNbIEJUk.cjs → install-DXllkuy0.cjs} +3 -3
  91. package/dist/lib.cjs +12 -12
  92. package/dist/lib.d.cts +63 -1
  93. package/dist/lib.d.mts +63 -1
  94. package/dist/lib.mjs +12 -12
  95. package/dist/{lidState-B4dHJCeS.cjs → lidState-C9_DoF9i.cjs} +1 -1
  96. package/dist/{lidState-q5Its2Hm.mjs → lidState-CD81ryTy.mjs} +1 -1
  97. package/dist/{localHappyAgentAuth-CG2nPD_H.cjs → localHappyAgentAuth-CCjUvOfi.cjs} +1 -1
  98. package/dist/{localHappyAgentAuth-C_G5u5lY.mjs → localHappyAgentAuth-Cg-m1lwm.mjs} +1 -1
  99. package/dist/{logger-BP1SW7Cs.cjs → logger-Ct2zvaq0.cjs} +2 -2
  100. package/dist/{logger-DOKH3Zbh.mjs → logger-GcbI0eg2.mjs} +2 -2
  101. package/dist/{machineMetadata-D-5qeIqd.mjs → machineMetadata-CXRmFNOV.mjs} +3 -3
  102. package/dist/{machineMetadata-BKX3ov9g.cjs → machineMetadata-DDCVWb_x.cjs} +3 -3
  103. package/dist/{main-ndpVIaSG.cjs → main-BHC-WIcM.cjs} +49 -48
  104. package/dist/{main-DODz8DQE.mjs → main-omGr_ONk.mjs} +49 -48
  105. package/dist/{mcp-BBwbSODp.mjs → mcp-D5hxmRAq.mjs} +15 -15
  106. package/dist/{mcp-Bc4U4exu.cjs → mcp-xUzii0m8.cjs} +15 -15
  107. package/dist/{mirrorProtocol-CiA3hO2y.cjs → mirrorProtocol-Dfl8Ahyf.cjs} +3 -3
  108. package/dist/{mirrorProtocol-D2vTWteS.mjs → mirrorProtocol-Lcx20Oby.mjs} +3 -3
  109. package/dist/{package-CYDdLA6R.cjs → package-9n7wd2dT.cjs} +7 -7
  110. package/dist/{package-DTcaIhjW.mjs → package-BsUHyqWe.mjs} +7 -7
  111. package/dist/{panels-C2xZ8rqU.cjs → panels-BfknEmt7.cjs} +5 -5
  112. package/dist/{panels-DCaLxlSL.mjs → panels-CpEKWWbI.mjs} +5 -5
  113. package/dist/{peerTools-B4315xjX.cjs → peerTools-CElYh-5u.cjs} +5 -5
  114. package/dist/{peerTools-BtrUnSwz.mjs → peerTools-CwCe6tmJ.mjs} +5 -5
  115. package/dist/{persistence-CrzC7yr_.cjs → persistence-A2NeERZJ.cjs} +6 -2
  116. package/dist/{persistence-0INrP3aB.mjs → persistence-Cpw4yJs8.mjs} +6 -3
  117. package/dist/{piRunnerArgs-BtzW_kfh.cjs → piRunnerArgs-BnFU0K73.cjs} +1 -1
  118. package/dist/{piRunnerArgs-DRuxMlX1.mjs → piRunnerArgs-Bqmu16He.mjs} +1 -1
  119. package/dist/{piRuntime-BMAFpIBV.mjs → piRuntime-Cgn1b0OX.mjs} +1 -1
  120. package/dist/{piRuntime-DEbPE_kW.cjs → piRuntime-DpS9TAIs.cjs} +1 -1
  121. package/dist/{piTerminal-DQXV8_we.mjs → piTerminal-BGdps8f3.mjs} +17 -17
  122. package/dist/{piTerminal-MtxDtBE2.cjs → piTerminal-rmve-VlI.cjs} +17 -17
  123. package/dist/{pushNotifications-CalIS9sq.cjs → pushNotifications-23YSd-0l.cjs} +28 -3
  124. package/dist/{pushNotifications-Cq1s8YVK.mjs → pushNotifications-XAM8__Pg.mjs} +28 -3
  125. package/dist/{query-BYiPBHPC.mjs → query-SZcYnJoW.mjs} +1 -1
  126. package/dist/{query-CE2XDhhw.cjs → query-u2GX-I0C.cjs} +1 -1
  127. package/dist/{rateLimitReporter-DR5LXuiQ.mjs → rateLimitReporter-COUkf446.mjs} +3 -3
  128. package/dist/{rateLimitReporter-BKmoOZQi.cjs → rateLimitReporter-CaTzBe3x.cjs} +3 -3
  129. package/dist/{rateLimitWindows-Cs56YJCH.cjs → rateLimitWindows-B2Kx6L0S.cjs} +1 -1
  130. package/dist/{rateLimitWindows-5vIuNjko.mjs → rateLimitWindows-j_qQk0KY.mjs} +1 -1
  131. package/dist/{registerCommonHandlers-DZPozYxc.cjs → registerCommonHandlers-D1MiSfcB.cjs} +2 -2
  132. package/dist/{registerCommonHandlers-DWkTysjD.mjs → registerCommonHandlers-DRRfinzK.mjs} +2 -2
  133. package/dist/{registerKillSessionHandler-CSCTRIbI.mjs → registerKillSessionHandler-Cpug_r5C.mjs} +16 -6
  134. package/dist/{registerKillSessionHandler-DhCjrs44.cjs → registerKillSessionHandler-hvCsEn7b.cjs} +16 -6
  135. package/dist/{remoteSessionClient-Dq8XTLQP.cjs → remoteSessionClient-6ymeMVa4.cjs} +5 -5
  136. package/dist/{remoteSessionClient-Vfj_5g2-.mjs → remoteSessionClient-BdnJ_n8C.mjs} +5 -5
  137. package/dist/{reportProgressTool-B7zmX7NJ.mjs → reportProgressTool-XgQBzxoD.mjs} +3 -3
  138. package/dist/{reportProgressTool-DznxPKES.cjs → reportProgressTool-tzQLCLIw.cjs} +3 -3
  139. package/dist/{run-DSfNcR62.mjs → run-Bt0AklUU.mjs} +396 -43
  140. package/dist/{run-Ca8BiNCp.cjs → run-DYL_wuj7.cjs} +396 -43
  141. package/dist/{runClaude-hoepv-0X.mjs → runClaude-C3rii_S6.mjs} +47 -27
  142. package/dist/{runClaude-ClQQcgoO.cjs → runClaude-CBEpYO4S.cjs} +49 -29
  143. package/dist/{runClaudeDeps-ck5_GYlP.cjs → runClaudeDeps-CYuozSC6.cjs} +187 -61
  144. package/dist/{runClaudeDeps-D_v8t2SK.mjs → runClaudeDeps-DlVfMG4F.mjs} +192 -66
  145. package/dist/{runGemini-Cj0XsMiM.cjs → runGemini-CEI3b90u.cjs} +33 -33
  146. package/dist/{runGemini-CTr2-cYG.mjs → runGemini-DkYhRk9S.mjs} +33 -33
  147. package/dist/{runOpenClaw-BoN1e3lP.cjs → runOpenClaw-BgjD6E4d.cjs} +18 -18
  148. package/dist/{runOpenClaw-CdDMntiV.mjs → runOpenClaw-DpprWCoz.mjs} +18 -18
  149. package/dist/{sandbox-DcaWB-Ou.mjs → sandbox-DJ7A7lsy.mjs} +4 -4
  150. package/dist/{sandbox-BY2h19gc.cjs → sandbox-XCDUbH72.cjs} +4 -4
  151. package/dist/{selfCheck-DFS_GUaQ.cjs → selfCheck-BYUDB1Uq.cjs} +37 -37
  152. package/dist/selfCheck-C-rNljKV.mjs +86 -0
  153. package/dist/{send-UBTHHNvZ.mjs → send-Ba63huxv.mjs} +8 -8
  154. package/dist/{send-BMsUYU6g.cjs → send-CASDBCyJ.cjs} +8 -8
  155. package/dist/{server-YrHMHNz1.cjs → server-cZoV9XRt.cjs} +6 -6
  156. package/dist/{server-Dt3mCtfQ.mjs → server-w3W0toNd.mjs} +4 -4
  157. package/dist/{sessionLock-DSqiP2lH.cjs → sessionLock-BmLA2S8K.cjs} +134 -3
  158. package/dist/{sessionLock-tEFvFXLD.mjs → sessionLock-G2PMqvsh.mjs} +121 -4
  159. package/dist/{sessionOps-CljctDs5.mjs → sessionOps-DPw5k8vV.mjs} +15 -5
  160. package/dist/{sessionOps-BzeOKIEF.cjs → sessionOps-DXlTmS7J.cjs} +15 -4
  161. package/dist/{sessionProvider-BnUFSJXM.mjs → sessionProvider-DUn91LhJ.mjs} +5 -5
  162. package/dist/{sessionProvider-ORgzmkXy.cjs → sessionProvider-Dg691XQ4.cjs} +5 -5
  163. package/dist/{sessionScanner-Cr6PJ3PT.cjs → sessionScanner-AHjnicxi.cjs} +3 -3
  164. package/dist/{sessionScanner-DZUlkdF6.mjs → sessionScanner-BCXpdZJN.mjs} +3 -3
  165. package/dist/{sessions-aIo_HjmY.cjs → sessions-BiBXOBx0.cjs} +36 -25
  166. package/dist/{sessions-15cag-su.mjs → sessions-Clk8MR5Y.mjs} +35 -26
  167. package/dist/{setupOfflineReconnection-tV0Q1dgR.cjs → setupOfflineReconnection-BKLfOd-i.cjs} +2 -2
  168. package/dist/{setupOfflineReconnection-B7I8R2Ex.mjs → setupOfflineReconnection-DI-QZGYz.mjs} +2 -2
  169. package/dist/{spawn-ByrQgruJ.mjs → spawn-4tsp1uhh.mjs} +15 -15
  170. package/dist/{spawn-VG-HjJiR.cjs → spawn-D5omsx1Q.cjs} +15 -15
  171. package/dist/{spawnAgents-Bh1RPShN.mjs → spawnAgents-CjoU6ZOS.mjs} +8 -2
  172. package/dist/{spawnAgents-C1-4m7aN.cjs → spawnAgents-CtkkIFHd.cjs} +8 -2
  173. package/dist/{spawnHappyCLI-CxiR2Qoy.cjs → spawnHappyCLI-CF_gLi92.cjs} +1 -1
  174. package/dist/{spawnHappyCLI-CEsXwz5V.mjs → spawnHappyCLI-CIA9Sc_5.mjs} +1 -1
  175. package/dist/{startFileWatcher-C-XCZ5t2.cjs → startFileWatcher-9Stpxe7p.cjs} +1 -1
  176. package/dist/{startFileWatcher-DkEeeAtL.mjs → startFileWatcher-CDO6fb2m.mjs} +1 -1
  177. package/dist/{defaultPermissionMode-e2bIIJG4.mjs → startupSessionCreate-BtR4iYEC.mjs} +25 -6
  178. package/dist/{defaultPermissionMode-5EvgRq38.cjs → startupSessionCreate-CcF7rGGB.cjs} +25 -7
  179. package/dist/{streamRelay-D9a4cBEa.cjs → streamRelay-BhI6jqF-.cjs} +1 -1
  180. package/dist/{streamRelay-CqBynIon.mjs → streamRelay-DMwOMTKf.mjs} +1 -1
  181. package/dist/{sync-CoChLEIg.cjs → sync-Ba8N6xba.cjs} +1 -1
  182. package/dist/{sync-BvDMkKAN.mjs → sync-C0PRuTMj.mjs} +1 -1
  183. package/dist/{systemPrompt-CgDaPigN.mjs → systemPrompt-D0q8eyjy.mjs} +2 -2
  184. package/dist/{systemPrompt-Dy_Rf-0Z.cjs → systemPrompt-DV5IReD4.cjs} +2 -2
  185. package/dist/{teams-BC4_e5hR.mjs → teams-BO3_arwM.mjs} +7 -7
  186. package/dist/{teams-DPvfLAk8.cjs → teams-z3Gp-KlV.cjs} +7 -7
  187. package/dist/{template-17HATY_Y.cjs → template-B_5l6pkc.cjs} +1 -1
  188. package/dist/{template-CEK8MEjo.mjs → template-DLR_0hfj.mjs} +1 -1
  189. package/dist/{time-XwEZxKGc.cjs → time-Cy0a-7YX.cjs} +1 -1
  190. package/dist/{time-CUK37wiV.mjs → time-D0jvDRhn.mjs} +1 -1
  191. package/dist/{titleGenerator-DWRVdqMU.mjs → titleGenerator-AGQsXskb.mjs} +1 -1
  192. package/dist/{titleGenerator-DVX0NZUn.cjs → titleGenerator-RGHWP2YL.cjs} +2 -2
  193. package/dist/{todo-BNMGXneA.mjs → todo-BZ954vsz.mjs} +6 -6
  194. package/dist/{todo-CKGrSrRE.cjs → todo-CzIDPLFy.cjs} +6 -6
  195. package/dist/{tools-CjMafO_D.cjs → tools-B1x1j6tz.cjs} +1 -1
  196. package/dist/{tools-CCIEAVbB.mjs → tools-Bei5i03L.mjs} +1 -1
  197. package/dist/{uninstall-CJvJ7gjr.mjs → uninstall-B4T_e3Mr.mjs} +3 -3
  198. package/dist/{uninstall-BdFbTXnL.cjs → uninstall-C3cnIvz1.cjs} +3 -3
  199. package/package.json +7 -7
  200. package/dist/agentAttachments-M_B5qEF2.mjs +0 -18
  201. package/dist/selfCheck-BQ_H2Sns.mjs +0 -86
  202. package/dist/startupSessionCreate-CYc8mra-.cjs +0 -26
  203. package/dist/startupSessionCreate-npXe2TdN.mjs +0 -24
@@ -1,108 +1,109 @@
1
1
  'use strict';
2
2
 
3
- var auth = require('./auth-DQKSpaEf.cjs');
4
- var index = require('./index-BOe6dKnL.cjs');
5
- var deterministicJson = require('./deterministicJson-D0LU_XbO.cjs');
6
- var client = require('./client-DIfxYk7B.cjs');
3
+ var auth = require('./auth-DnxoVkkf.cjs');
4
+ var index = require('./index-CLUHaPU8.cjs');
5
+ var defaultPermissionMode = require('./defaultPermissionMode-oqTupStc.cjs');
6
+ var deterministicJson = require('./deterministicJson-CpFFgUL_.cjs');
7
+ var client = require('./client-C5-C0t2a.cjs');
7
8
  var promises = require('node:fs/promises');
8
9
  var forkBackfill = require('./forkBackfill-8eLDeS73.cjs');
9
10
  var node_crypto = require('node:crypto');
10
11
  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');
12
+ var api = require('./api-BBxZ7y2z.cjs');
13
+ var heldInput = require('./heldInput-BOtqFO2r.cjs');
14
+ var attachmentContent = require('./attachmentContent-BO2njyza.cjs');
14
15
  var ink = require('ink');
15
- var sessionLock = require('./sessionLock-DSqiP2lH.cjs');
16
+ var sessionLock = require('./sessionLock-BmLA2S8K.cjs');
16
17
  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');
18
+ var codexAppServerClient = require('./codexAppServerClient-DKXeikEe.cjs');
19
+ var rateLimitReporter = require('./rateLimitReporter-CaTzBe3x.cjs');
20
+ var logger = require('./logger-Ct2zvaq0.cjs');
21
+ var BasePermissionHandler = require('./BasePermissionHandler-C9Ag7yvs.cjs');
22
+ var codexTermination = require('./codexTermination-BszWfyk5.cjs');
22
23
  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');
24
+ var persistence = require('./persistence-A2NeERZJ.cjs');
25
+ var machineMetadata = require('./machineMetadata-DDCVWb_x.cjs');
26
+ var configuration = require('./configuration-DfPBa-9d.cjs');
27
+ var registerKillSessionHandler = require('./registerKillSessionHandler-hvCsEn7b.cjs');
27
28
  var projectPath = require('./projectPath-C3ioB4Bu.cjs');
28
29
  var path = require('node:path');
29
- var createSessionMetadata = require('./createSessionMetadata-DezS33OM.cjs');
30
+ var createSessionMetadata = require('./createSessionMetadata-Cf78KHtt.cjs');
30
31
  var sessionExitLifecycle = require('./sessionExitLifecycle-DFltxXU8.cjs');
31
- var controlClient = require('./controlClient-F7hAEEy2.cjs');
32
- var defaultPermissionMode = require('./defaultPermissionMode-5EvgRq38.cjs');
32
+ var controlClient = require('./controlClient-C13_pSKG.cjs');
33
+ var startupSessionCreate = require('./startupSessionCreate-CcF7rGGB.cjs');
33
34
  var authRelay = require('./authRelay-Dy1qU9td.cjs');
34
- var setupOfflineReconnection = require('./setupOfflineReconnection-tV0Q1dgR.cjs');
35
- var startupSessionCreate = require('./startupSessionCreate-CYc8mra-.cjs');
35
+ var setupOfflineReconnection = require('./setupOfflineReconnection-BKLfOd-i.cjs');
36
36
  var trimIdent = require('./trimIdent-4gvk9Wk6.cjs');
37
37
  var specialCommands = require('./specialCommands-J3JFOq0J.cjs');
38
38
  var constants = require('./constants-VJ0N6WuG.cjs');
39
39
  var editPaths = require('./editPaths-Bqp4OFPw.cjs');
40
- var ensureDaemonRunning = require('./ensureDaemonRunning-CIghxgDR.cjs');
40
+ var ensureDaemonRunning = require('./ensureDaemonRunning-BUuH-pbE.cjs');
41
41
  require('tweetnacl');
42
42
  require('axios');
43
- require('./time-XwEZxKGc.cjs');
44
- require('./browser-D1yzC0Tu.cjs');
43
+ require('./time-Cy0a-7YX.cjs');
44
+ require('./browser-BTgZ9d4i.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-tzQLCLIw.cjs');
49
+ require('./client-BscskEBk.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-C-OdTbrU.cjs');
57
57
  require('node:util');
58
- require('./context-D-hEk5pC.cjs');
59
- require('./sessionOps-BzeOKIEF.cjs');
58
+ require('./context-Co7hUaW-.cjs');
59
+ require('./sessionOps-DXlTmS7J.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-B1x1j6tz.cjs');
64
+ require('./peerTools-CElYh-5u.cjs');
65
65
  require('./ids-B6ZC0HGt.cjs');
66
- require('./remoteSessionClient-Dq8XTLQP.cjs');
66
+ require('./remoteSessionClient-6ymeMVa4.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-CikzJv1h.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-sly4qPPY.cjs');
76
+ require('./package-9n7wd2dT.cjs');
77
77
  require('./webPanels-FCgFKvVe.cjs');
78
- require('./pushNotifications-CalIS9sq.cjs');
78
+ require('./pushNotifications-23YSd-0l.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-C9_DoF9i.cjs');
83
83
  require('os');
84
84
  require('child_process');
85
85
  require('node:events');
86
- require('./registerCommonHandlers-DZPozYxc.cjs');
86
+ require('./registerCommonHandlers-D1MiSfcB.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-Ba8N6xba.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-B2Kx6L0S.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-CCjUvOfi.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-CF_gLi92.cjs');
106
107
  require('./doctorReadiness-Dl6yRQCy.cjs');
107
108
 
108
109
  function getStartedSubagents(state) {
@@ -1096,6 +1097,13 @@ function unsupportedEffortReason(catalog, model, effort) {
1096
1097
  if (selected.supportedReasoningEfforts.some((option) => option.reasoningEffort === effort)) return null;
1097
1098
  return `Reasoning effort "${effort}" is not supported by ${model ?? "the default model"}. Choose a supported level.`;
1098
1099
  }
1100
+ function settleTurnEffort(catalog, model, effort, opts) {
1101
+ const refusal = unsupportedEffortReason(catalog, model, effort);
1102
+ if (!refusal) return { refusal: null, effort, changed: false };
1103
+ const catalogDefault = catalog.find((entry) => model ? entry.model === model : entry.isDefault)?.defaultReasoningEffort ?? void 0;
1104
+ const settled = !unsupportedEffortReason(catalog, model, opts.fallback) ? opts.fallback : catalogDefault && !unsupportedEffortReason(catalog, model, catalogDefault) ? catalogDefault : void 0;
1105
+ return { refusal: opts.explicit ? refusal : null, effort: settled, changed: true };
1106
+ }
1099
1107
 
1100
1108
  function resolveCodexTurnModel(mode, machineDefault) {
1101
1109
  if (mode.model) return mode.model;
@@ -1499,11 +1507,13 @@ async function runCodex(opts) {
1499
1507
  dangerouslySkipPermissions: initialPermissionMode === "yolo" || initialPermissionMode === "bypassPermissions",
1500
1508
  ...forkedFromSessionId ? { parentSessionId: forkedFromSessionId } : {},
1501
1509
  ...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]
1510
+ 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, index.RUN_INTENT_CAPABILITY]
1503
1511
  });
1504
1512
  metadata.attachmentKinds = [...attachmentContent.CLAUDE_ATTACHMENT_KINDS];
1505
1513
  metadata.stickyModel = null;
1506
1514
  metadata.currentThoughtLevelCode = DEFAULT_CODEX_EFFORT;
1515
+ metadata.modelIntent = null;
1516
+ metadata.effortIntent = null;
1507
1517
  const importCodexThreadId = process.env[IMPORT_CODEX_THREAD_ENV];
1508
1518
  if (importCodexThreadId) {
1509
1519
  metadata.importedFromCodexThreadId = importCodexThreadId;
@@ -1557,6 +1567,7 @@ async function runCodex(opts) {
1557
1567
  logger.logger.debug(`[START] Reconnect without server snapshot (${snapshot.reason}); skipping existing messages`);
1558
1568
  }
1559
1569
  }
1570
+ const resumedEffort = reconnectSeeded && response ? index.restoredEffort(response.metadata, { useReportedLevel: true }) : void 0;
1560
1571
  let session;
1561
1572
  let permissionHandler;
1562
1573
  let client$1;
@@ -1616,9 +1627,13 @@ async function runCodex(opts) {
1616
1627
  const keys = entries.map((entry) => entry.sourceId).filter((key) => typeof key === "string");
1617
1628
  if (keys.length > 0) session.sendQueueCancelReason(keys, entries[0].reason);
1618
1629
  });
1630
+ const heldInput$1 = new heldInput.HeldInput((keys, reason) => session.sendQueueCancelReason(keys, reason));
1619
1631
  let currentPermissionMode = initialPermissionMode;
1620
1632
  let currentModel = DEFAULT_CODEX_MODEL;
1621
- let currentEffort = DEFAULT_CODEX_EFFORT;
1633
+ let currentEffort = resumedEffort !== void 0 ? resumedEffort ?? void 0 : DEFAULT_CODEX_EFFORT;
1634
+ let pendingModelReset = false;
1635
+ let lastStartedEffort = currentEffort;
1636
+ const effortJudgeModel = (model, modelReset) => resolveCodexTurnModel({ model, modelReset }, machineDefaultModel) ?? client$1?.threadModel ?? machineDefaultModel;
1622
1637
  let currentAppendSystemPrompt = void 0;
1623
1638
  let reportedStickyModel = null;
1624
1639
  let reportedCurrentModel;
@@ -1641,8 +1656,6 @@ async function runCodex(opts) {
1641
1656
  });
1642
1657
  };
1643
1658
  const resetCurrentModeDefaults = () => {
1644
- currentEffort = DEFAULT_CODEX_EFFORT;
1645
- reportModeFacts();
1646
1659
  currentAppendSystemPrompt = void 0;
1647
1660
  logger.logger.debug("[Codex] Reset current mode defaults after abort");
1648
1661
  };
@@ -1656,8 +1669,9 @@ async function runCodex(opts) {
1656
1669
  };
1657
1670
  publishPermissionMode(opts.permissionMode);
1658
1671
  let discoveredModels = [];
1672
+ let codexAgentVersion = null;
1659
1673
  let machineDefaultModel;
1660
- agentAttachments.registerAgentAttachmentDownloads(session);
1674
+ heldInput.registerAgentAttachmentDownloads(session);
1661
1675
  const CODEX_IMAGE_MIME_TYPES = ["image/jpeg", "image/png", "image/gif", "image/webp"];
1662
1676
  const steerDeps = {
1663
1677
  ownsTurn: () => turnActive && !abortInProgress && !shouldExit,
@@ -1700,9 +1714,13 @@ async function runCodex(opts) {
1700
1714
  reportModeFacts();
1701
1715
  logger.logger.debug("[Codex] Model override updated", logValueMetadata(message.meta.model));
1702
1716
  } else {
1717
+ messageModelReset = pendingModelReset && !messageModel;
1703
1718
  logger.logger.debug("[Codex] User message received without a model override");
1704
1719
  }
1720
+ pendingModelReset = false;
1705
1721
  let messageEffort = currentEffort;
1722
+ let effortExplicit = false;
1723
+ let effortRefused = false;
1706
1724
  if (message.meta?.hasOwnProperty("effort")) {
1707
1725
  const incoming = message.meta.effort;
1708
1726
  if (incoming === null || incoming === void 0) {
@@ -1712,15 +1730,22 @@ async function runCodex(opts) {
1712
1730
  logger.logger.debug(`[Codex] Effort reset to default`);
1713
1731
  } else if (typeof incoming === "string") {
1714
1732
  messageEffort = incoming;
1715
- currentEffort = messageEffort;
1716
- reportModeFacts();
1717
- logger.logger.debug("[Codex] Valid effort override applied");
1733
+ effortExplicit = true;
1734
+ effortRefused = unsupportedEffortReason(discoveredModels, effortJudgeModel(messageModel, messageModelReset), messageEffort) !== null;
1735
+ if (effortRefused) {
1736
+ logger.logger.debug("[Codex] Effort override refused by the model catalog; sticky level kept", logValueMetadata(incoming));
1737
+ } else {
1738
+ currentEffort = messageEffort;
1739
+ reportModeFacts();
1740
+ logger.logger.debug("[Codex] Valid effort override applied");
1741
+ }
1718
1742
  } else {
1719
1743
  logger.logger.debug("[Codex] Ignoring invalid effort override", logValueMetadata(incoming));
1720
1744
  }
1721
1745
  } else {
1722
1746
  logger.logger.debug("[Codex] User message received without an effort override");
1723
1747
  }
1748
+ defaultPermissionMode.recordRunIntents(session, effortRefused ? defaultPermissionMode.withoutEffort(message.meta) : message.meta);
1724
1749
  let messageAppendSystemPrompt = currentAppendSystemPrompt;
1725
1750
  if (message.meta?.hasOwnProperty("appendSystemPrompt")) {
1726
1751
  messageAppendSystemPrompt = message.meta.appendSystemPrompt || void 0;
@@ -1734,7 +1759,8 @@ async function runCodex(opts) {
1734
1759
  model: messageModel,
1735
1760
  ...messageModelReset ? { modelReset: true } : {},
1736
1761
  appendSystemPrompt: messageAppendSystemPrompt,
1737
- effort: messageEffort
1762
+ effort: messageEffort,
1763
+ ...effortExplicit ? { effortExplicit: true } : {}
1738
1764
  };
1739
1765
  if (message.meta?.delivery === "steer" && !isCodexControlText(message.content.text)) {
1740
1766
  if (await steerIntoRunningTurn(steerDeps, message.content.text, attachments, message.localKey)) {
@@ -1755,6 +1781,7 @@ async function runCodex(opts) {
1755
1781
  }).catch((error) => {
1756
1782
  logger.logger.warn("[Codex] Failed to prepare user attachments", safeCodexErrorMetadata(error));
1757
1783
  session.sendSessionEvent({ type: "message", message: "Could not prepare this message. Please send it again." });
1784
+ if (message.localKey) session.sendQueueCancelReason([message.localKey], "failed");
1758
1785
  });
1759
1786
  });
1760
1787
  let thinking = false;
@@ -1797,7 +1824,8 @@ async function runCodex(opts) {
1797
1824
  }
1798
1825
  let abortController = new AbortController();
1799
1826
  let shouldExit = false;
1800
- const hibernationExit = new defaultPermissionMode.HibernationExitLatch((a, b) => a === "archive" && b !== "archive");
1827
+ let terminating = false;
1828
+ const hibernationExit = new startupSessionCreate.HibernationExitLatch((a, b) => a === "archive" && b !== "archive");
1801
1829
  let hibernationStamp = null;
1802
1830
  let hibernationProbe = null;
1803
1831
  async function handleAbort(source) {
@@ -1850,6 +1878,10 @@ async function runCodex(opts) {
1850
1878
  logger.logger.debug("[Codex] Kill session requested - terminating process");
1851
1879
  const exitCursor = intent === "offline" && session ? sessionLock.exitCursorStamp(session.messageCursor, Date.now()) : void 0;
1852
1880
  if (exitCursor) session.freezeInbound();
1881
+ const exitReason = intent === "archive" ? "aborted" : "restarted";
1882
+ terminating = true;
1883
+ heldInput$1.drop(exitReason);
1884
+ messageQueue.discardAll(exitReason);
1853
1885
  await handleAbort("kill");
1854
1886
  logger.logger.debug("[Codex] Abort completed, proceeding with termination");
1855
1887
  try {
@@ -1875,6 +1907,24 @@ async function runCodex(opts) {
1875
1907
  }
1876
1908
  });
1877
1909
  session.rpcHandlerManager.registerHandler("abort", () => handleAbort("user"));
1910
+ defaultPermissionMode.registerRunIntentRpc(session.rpcHandlerManager, {
1911
+ getMetadata: () => session.getMetadata(),
1912
+ updateMetadata: (handler) => session.updateMetadata(handler)
1913
+ }, (request) => {
1914
+ if (Object.prototype.hasOwnProperty.call(request, "model")) {
1915
+ currentModel = request.model || void 0;
1916
+ pendingModelReset = !currentModel;
1917
+ }
1918
+ let effortRefused = false;
1919
+ if (Object.prototype.hasOwnProperty.call(request, "effort")) {
1920
+ const effort = request.effort || void 0;
1921
+ effortRefused = unsupportedEffortReason(discoveredModels, effortJudgeModel(currentModel, pendingModelReset), effort) !== null;
1922
+ if (!effortRefused) currentEffort = effort;
1923
+ }
1924
+ if (client$1) reportModeFacts();
1925
+ logger.logger.debug("[Codex] Run intent set", logValueMetadata(request.model ?? null));
1926
+ return { effortRefused };
1927
+ });
1878
1928
  const disposeTermination = registerKillSessionHandler.registerKillSessionHandler(session.rpcHandlerManager, () => handleKillSession("archive"), session, { processSignals: true, onSignal: () => handleKillSession("offline") });
1879
1929
  const messageBuffer = new sessionExitLifecycle.MessageBuffer();
1880
1930
  const hasTTY = process.stdout.isTTY && process.stdin.isTTY;
@@ -2075,6 +2125,7 @@ async function runCodex(opts) {
2075
2125
  logger.logger.debug("[codex]: client.connect begin");
2076
2126
  await client$1.connect();
2077
2127
  logger.logger.debug("[codex]: client.connect done");
2128
+ codexAgentVersion = client$1.serverVersion;
2078
2129
  try {
2079
2130
  discoveredModels = await client$1.listModels();
2080
2131
  let configured = null;
@@ -2169,17 +2220,18 @@ async function runCodex(opts) {
2169
2220
  pendingRequests: Object.keys(session.getAgentState()?.requests ?? {}).length,
2170
2221
  backgroundTasks: codexActiveSubagents.size,
2171
2222
  lastActivityAt: session.lastActivityAt,
2223
+ ...codexAgentVersion ? { agentVersion: codexAgentVersion } : {},
2172
2224
  ...shouldExit && !hibernationExit.hibernating ? { exiting: true } : {}
2173
2225
  };
2174
2226
  };
2175
- hibernationProbe = new defaultPermissionMode.HibernationProbe({
2227
+ hibernationProbe = new startupSessionCreate.HibernationProbe({
2176
2228
  onKeepAwakeLatched: () => {
2177
2229
  if (session.getMetadata()?.keepAwake === void 0) session.updateMetadata((m) => m.keepAwake === void 0 ? { ...m, keepAwake: true } : m);
2178
2230
  },
2179
2231
  checkMs: persistence.resolveCheckMs(),
2180
2232
  snapshot: hibernationSnapshot,
2181
2233
  ask: (report) => controlClient.checkDaemonHibernation({ sessionId: session.sessionId, pid: process.pid, report }),
2182
- commit: (idleMs) => defaultPermissionMode.commitHibernation({
2234
+ commit: (idleMs) => startupSessionCreate.commitHibernation({
2183
2235
  client: session,
2184
2236
  claimExit: () => !shouldExit && hibernationExit.begin(),
2185
2237
  exitRequested: () => hibernationExit.exitRequested,
@@ -2199,6 +2251,8 @@ async function runCodex(opts) {
2199
2251
  });
2200
2252
  hibernationProbe.start();
2201
2253
  }
2254
+ const autoUpdated = sessionLock.takeAutoRestartedEvent(process.env, "Codex");
2255
+ if (autoUpdated) session.sendSessionEvent(autoUpdated);
2202
2256
  idleRelease.arm();
2203
2257
  while (!shouldExit) {
2204
2258
  logActiveHandles("loop-top");
@@ -2216,6 +2270,7 @@ async function runCodex(opts) {
2216
2270
  break;
2217
2271
  }
2218
2272
  message = batch;
2273
+ heldInput$1.hold(batch.sourceIds);
2219
2274
  }
2220
2275
  if (!message) {
2221
2276
  break;
@@ -2228,6 +2283,7 @@ async function runCodex(opts) {
2228
2283
  turnActive = true;
2229
2284
  if (isCodexClearText(message.message)) {
2230
2285
  logger.logger.debug("[Codex] Handling /clear command - resetting Codex thread state");
2286
+ heldInput$1.delivered();
2231
2287
  client$1.clearThreadState();
2232
2288
  currentTurnId = null;
2233
2289
  codexStartedSubagents = /* @__PURE__ */ new Set();
@@ -2264,6 +2320,7 @@ async function runCodex(opts) {
2264
2320
  try {
2265
2321
  if (compactCommand !== null) {
2266
2322
  await client$1.ensureConnected();
2323
+ heldInput$1.delivered();
2267
2324
  const outcome = await runCodexCompact(compactCommand, {
2268
2325
  client: client$1,
2269
2326
  notify: (text) => {
@@ -2281,9 +2338,23 @@ async function runCodex(opts) {
2281
2338
  sandboxManagedByHappy
2282
2339
  );
2283
2340
  const turnModel = resolveCodexTurnModel(message.mode, machineDefaultModel);
2284
- const effortRefusal = unsupportedEffortReason(discoveredModels, turnModel ?? client$1.threadModel ?? machineDefaultModel, message.mode.effort);
2285
- if (effortRefusal) {
2286
- throw new Error(effortRefusal);
2341
+ const turnEffort = settleTurnEffort(discoveredModels, turnModel ?? client$1.threadModel ?? machineDefaultModel, message.mode.effort, {
2342
+ explicit: message.mode.effortExplicit === true,
2343
+ fallback: lastStartedEffort
2344
+ });
2345
+ if (turnEffort.changed) {
2346
+ const refused = message.mode.effort;
2347
+ if (currentEffort === refused) {
2348
+ currentEffort = turnEffort.effort;
2349
+ reportModeFacts();
2350
+ }
2351
+ if (index.readEffortIntent(session.getMetadata()?.effortIntent) === refused) {
2352
+ defaultPermissionMode.recordRunIntents(session, { effort: turnEffort.effort ?? null, effortIntent: turnEffort.effort ?? index.EFFORT_INTENT_AUTO });
2353
+ }
2354
+ logger.logger.debug("[Codex] Refused effort settled", logValueMetadata(turnEffort.effort ?? null));
2355
+ }
2356
+ if (turnEffort.refusal) {
2357
+ throw new Error(turnEffort.refusal);
2287
2358
  }
2288
2359
  if (!client$1.hasActiveThread()) {
2289
2360
  const startedThread = await client$1.startThread({
@@ -2312,12 +2383,20 @@ async function runCodex(opts) {
2312
2383
  happyHomeDir: configuration.configuration.happyHomeDir,
2313
2384
  sessionId: session.sessionId
2314
2385
  }) : [];
2386
+ if (terminating) {
2387
+ logger.logger.debug("[Codex] Session is ending; not starting the turn");
2388
+ continue;
2389
+ }
2315
2390
  const result = await client$1.sendTurnAndWait(attachmentContent.appendStagedAttachmentsToPrompt(turnPrompt, staged), {
2316
2391
  images: staged.filter((file) => ["image/jpeg", "image/png", "image/gif", "image/webp"].includes(file.mimeType)).map((file) => file.path),
2317
2392
  model: turnModel,
2318
2393
  approvalPolicy: executionPolicy.approvalPolicy,
2319
2394
  sandbox: executionPolicy.sandbox,
2320
- effort: message.mode.effort
2395
+ effort: turnEffort.effort,
2396
+ onTurnStarted: () => {
2397
+ lastStartedEffort = turnEffort.effort;
2398
+ heldInput$1.delivered();
2399
+ }
2321
2400
  });
2322
2401
  reportModeFacts();
2323
2402
  first = false;
@@ -2329,6 +2408,7 @@ async function runCodex(opts) {
2329
2408
  }
2330
2409
  } catch (error) {
2331
2410
  logger.logger.warn("Error in codex session", safeCodexErrorMetadata(error));
2411
+ if (heldInput$1.drop("failed")) logger.logger.debug("[Codex] Message failed before its turn started; tombstoned");
2332
2412
  const reason = describeThrownTurnError(error);
2333
2413
  if (reason) {
2334
2414
  messageBuffer.addMessage(`Task failed: ${reason}`, "status");
@@ -2360,6 +2440,8 @@ async function runCodex(opts) {
2360
2440
  disposeTermination?.();
2361
2441
  hibernationProbe?.stop();
2362
2442
  session.closePromptQueueDrain();
2443
+ heldInput$1.drop("aborted");
2444
+ messageQueue.discardAll("aborted");
2363
2445
  logger.logger.debug("[codex]: Final cleanup start");
2364
2446
  logActiveHandles("cleanup-start");
2365
2447
  if (reconnectionHandle) {
@@ -1,5 +1,5 @@
1
1
  import { randomUUID } from 'node:crypto';
2
- import { l as logger } from './logger-DOKH3Zbh.mjs';
2
+ import { l as logger } from './logger-GcbI0eg2.mjs';
3
3
  import { O as OFFLINE_EXIT_STAMP_TIMEOUT_MS } from './sessionExitLifecycle-CzkLIgNZ.mjs';
4
4
 
5
5
  class BaseReasoningProcessor {
@@ -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-Ct2zvaq0.cjs');
5
5
  var sessionExitLifecycle = require('./sessionExitLifecycle-DFltxXU8.cjs');
6
6
 
7
7
  class BaseReasoningProcessor {
@@ -100,6 +100,9 @@ async function forkCodexThread(client, opts) {
100
100
  newCodexThreadId: forked.threadId
101
101
  };
102
102
  }
103
+ function firstItemId(turn) {
104
+ return turn.items?.[0]?.id;
105
+ }
103
106
  async function forkCodexBeforeUserMessage(client, opts) {
104
107
  const { thread: source } = await client.readThread({ threadId: opts.threadId, includeTurns: true });
105
108
  rejectAttachedTarget(source, opts.cutBeforeItemId);
@@ -109,24 +112,15 @@ async function forkCodexBeforeUserMessage(client, opts) {
109
112
  throw new Error("Cannot safely rewind a user message inside an existing turn");
110
113
  }
111
114
  if (sourceCut.index === 0) return { type: "success", startFresh: true };
112
- const forked = await client.forkThread({ threadId: opts.threadId, cwd: opts.cwd });
115
+ const kept = (source.turns ?? []).slice(0, sourceCut.index);
116
+ const expected = kept.map(firstItemId);
117
+ const forked = await client.forkThread({ threadId: opts.threadId, cwd: opts.cwd, lastTurnId: kept[kept.length - 1].id });
113
118
  if (forked.threadId === opts.threadId) throw new Error("Codex did not create an independent fork");
114
- rejectAttachedTarget(forked.thread, opts.cutBeforeItemId);
115
- const cut = findCutTurn(forked.thread, opts.cutBeforeItemId);
116
- if (!cut) throw new CodexForkRewindPointNotFoundError(opts.cutBeforeItemId, opts.threadId);
117
- const turns = forked.thread.turns ?? [];
118
- const items = turns[cut.index].items ?? [];
119
- if (items.findIndex((item) => item.id === opts.cutBeforeItemId) !== 0) {
120
- throw new Error("Cannot safely rewind a user message inside an existing turn");
121
- }
122
- if (cut.index === 0) return { type: "success", startFresh: true };
123
- const expectedTurnIds = turns.slice(0, cut.index).map((turn) => turn.id);
124
- const { thread } = await client.rollbackThread({
125
- threadId: forked.threadId,
126
- numTurns: turns.length - cut.index
127
- });
128
- const remaining = thread.turns ?? [];
129
- if (remaining.length !== cut.index || remaining.some((turn, index) => turn.id !== expectedTurnIds[index])) {
119
+ let { thread } = await client.readThread({ threadId: forked.threadId, includeTurns: true });
120
+ const extra = (thread.turns ?? []).length - expected.length;
121
+ if (extra > 0) ({ thread } = await client.rollbackThread({ threadId: forked.threadId, numTurns: extra }));
122
+ const remaining = (thread.turns ?? []).map(firstItemId);
123
+ if (remaining.length !== expected.length || remaining.some((id, index) => id !== expected[index])) {
130
124
  throw new Error("Codex rollback did not preserve the expected history");
131
125
  }
132
126
  return { type: "success", newCodexThreadId: forked.threadId };
@@ -98,6 +98,9 @@ async function forkCodexThread(client, opts) {
98
98
  newCodexThreadId: forked.threadId
99
99
  };
100
100
  }
101
+ function firstItemId(turn) {
102
+ return turn.items?.[0]?.id;
103
+ }
101
104
  async function forkCodexBeforeUserMessage(client, opts) {
102
105
  const { thread: source } = await client.readThread({ threadId: opts.threadId, includeTurns: true });
103
106
  rejectAttachedTarget(source, opts.cutBeforeItemId);
@@ -107,24 +110,15 @@ async function forkCodexBeforeUserMessage(client, opts) {
107
110
  throw new Error("Cannot safely rewind a user message inside an existing turn");
108
111
  }
109
112
  if (sourceCut.index === 0) return { type: "success", startFresh: true };
110
- const forked = await client.forkThread({ threadId: opts.threadId, cwd: opts.cwd });
113
+ const kept = (source.turns ?? []).slice(0, sourceCut.index);
114
+ const expected = kept.map(firstItemId);
115
+ const forked = await client.forkThread({ threadId: opts.threadId, cwd: opts.cwd, lastTurnId: kept[kept.length - 1].id });
111
116
  if (forked.threadId === opts.threadId) throw new Error("Codex did not create an independent fork");
112
- rejectAttachedTarget(forked.thread, opts.cutBeforeItemId);
113
- const cut = findCutTurn(forked.thread, opts.cutBeforeItemId);
114
- if (!cut) throw new CodexForkRewindPointNotFoundError(opts.cutBeforeItemId, opts.threadId);
115
- const turns = forked.thread.turns ?? [];
116
- const items = turns[cut.index].items ?? [];
117
- if (items.findIndex((item) => item.id === opts.cutBeforeItemId) !== 0) {
118
- throw new Error("Cannot safely rewind a user message inside an existing turn");
119
- }
120
- if (cut.index === 0) return { type: "success", startFresh: true };
121
- const expectedTurnIds = turns.slice(0, cut.index).map((turn) => turn.id);
122
- const { thread } = await client.rollbackThread({
123
- threadId: forked.threadId,
124
- numTurns: turns.length - cut.index
125
- });
126
- const remaining = thread.turns ?? [];
127
- if (remaining.length !== cut.index || remaining.some((turn, index) => turn.id !== expectedTurnIds[index])) {
117
+ let { thread } = await client.readThread({ threadId: forked.threadId, includeTurns: true });
118
+ const extra = (thread.turns ?? []).length - expected.length;
119
+ if (extra > 0) ({ thread } = await client.rollbackThread({ threadId: forked.threadId, numTurns: extra }));
120
+ const remaining = (thread.turns ?? []).map(firstItemId);
121
+ if (remaining.length !== expected.length || remaining.some((id, index) => id !== expected[index])) {
128
122
  throw new Error("Codex rollback did not preserve the expected history");
129
123
  }
130
124
  return { type: "success", newCodexThreadId: forked.threadId };
@@ -4,15 +4,15 @@ var require$$0 = require('fs');
4
4
  var require$$1 = require('path');
5
5
  var os = require('os');
6
6
  var child_process = require('child_process');
7
- var logger = require('./logger-BP1SW7Cs.cjs');
7
+ var logger = require('./logger-Ct2zvaq0.cjs');
8
8
  var constants = require('./constants-VJ0N6WuG.cjs');
9
9
  require('chalk');
10
10
  require('node:util');
11
- require('./configuration-C0ctLGW2.cjs');
11
+ require('./configuration-DfPBa-9d.cjs');
12
12
  require('node:fs');
13
13
  require('node:os');
14
14
  require('node:path');
15
- require('./package-CYDdLA6R.cjs');
15
+ require('./package-9n7wd2dT.cjs');
16
16
  require('node:fs/promises');
17
17
  require('./trimIdent-4gvk9Wk6.cjs');
18
18
 
@@ -2,15 +2,15 @@ import { existsSync, readFileSync, mkdirSync, writeFileSync } from 'fs';
2
2
  import { join } from 'path';
3
3
  import { homedir } from 'os';
4
4
  import { execSync } from 'child_process';
5
- import { l as logger } from './logger-DOKH3Zbh.mjs';
5
+ import { l as logger } from './logger-GcbI0eg2.mjs';
6
6
  import { D as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './constants-BC4St0xd.mjs';
7
7
  import 'chalk';
8
8
  import 'node:util';
9
- import './configuration-1FabKklB.mjs';
9
+ import './configuration-ECqXu34R.mjs';
10
10
  import 'node:fs';
11
11
  import 'node:os';
12
12
  import 'node:path';
13
- import './package-DTcaIhjW.mjs';
13
+ import './package-BsUHyqWe.mjs';
14
14
  import 'node:fs/promises';
15
15
  import './trimIdent-BAjmv_TG.mjs';
16
16
 
@@ -3,7 +3,7 @@
3
3
  var node_fs = require('node:fs');
4
4
  var os = require('node:os');
5
5
  var path = require('node:path');
6
- var _package = require('./package-CYDdLA6R.cjs');
6
+ var _package = require('./package-9n7wd2dT.cjs');
7
7
  var promises = require('node:fs/promises');
8
8
 
9
9
  const PRIVATE_DIRECTORY_MODE = 448;
@@ -1,7 +1,7 @@
1
1
  import { mkdirSync, chmodSync, readdirSync, statSync, appendFileSync, writeFileSync, existsSync, readFileSync } from 'node:fs';
2
2
  import { homedir } from 'node:os';
3
3
  import { join } from 'node:path';
4
- import { p as packageJson } from './package-DTcaIhjW.mjs';
4
+ import { p as packageJson } from './package-BsUHyqWe.mjs';
5
5
  import { mkdir, chmod, writeFile } from 'node:fs/promises';
6
6
 
7
7
  const PRIVATE_DIRECTORY_MODE = 448;