very-happy-cli 0.2.186 → 0.2.188

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 (204) hide show
  1. package/dist/{AcpBackend-ConXUH67.mjs → AcpBackend-2loP7MpF.mjs} +3 -3
  2. package/dist/{AcpBackend-aVv-_nH_.cjs → AcpBackend-B8AYkp5n.cjs} +3 -3
  3. package/dist/{AcpSessionManager-BxD1AQ8L.mjs → AcpSessionManager-C17doAoR.mjs} +2 -2
  4. package/dist/{AcpSessionManager-aRdzf_6R.cjs → AcpSessionManager-CLqo9R9Y.cjs} +2 -2
  5. package/dist/{BasePermissionHandler-BsOLZCNB.cjs → BasePermissionHandler-C8UEcFz0.cjs} +1 -1
  6. package/dist/{BasePermissionHandler-Hj7Qregq.mjs → BasePermissionHandler-CrfyUmqO.mjs} +1 -1
  7. package/dist/{acpSessionResume-CKacrrHV.mjs → acpSessionResume-F705a1cF.mjs} +1 -1
  8. package/dist/{acpSessionResume-CpPNoxaW.cjs → acpSessionResume-OuYlLGxL.cjs} +1 -1
  9. package/dist/{agentHome-CawmLuWV.mjs → agentHome-Dc7LYF3d.mjs} +4 -4
  10. package/dist/{agentHome-VS7FrFQZ.cjs → agentHome-DsKHJ_Sf.cjs} +4 -4
  11. package/dist/{api-DjqQTT16.cjs → api-BOqjYd5r.cjs} +10 -10
  12. package/dist/{api-DUFy21Nf.mjs → api-DNKa7kVy.mjs} +10 -10
  13. package/dist/{apiMachine-D2BrVBYu.cjs → apiMachine--rcPpMmt.cjs} +14 -14
  14. package/dist/{apiMachine-B0sBCHNZ.mjs → apiMachine-Di1G9ECW.mjs} +14 -14
  15. package/dist/{attachmentContent-2kInPZrP.cjs → attachmentContent-BFRMLong.cjs} +2 -2
  16. package/dist/{attachmentContent-D01-pLOB.mjs → attachmentContent-C9S4ekAz.mjs} +2 -2
  17. package/dist/{auth-DP3eN2Fv.mjs → auth-BNhhk2Fr.mjs} +5 -5
  18. package/dist/{auth-B-CqTcVh.mjs → auth-Bzwo_vOM.mjs} +8 -8
  19. package/dist/{auth-CujfCIv-.cjs → auth-CQtfznF0.cjs} +8 -8
  20. package/dist/{auth-CImUXAjH.cjs → auth-CXmI92aj.cjs} +5 -5
  21. package/dist/{auto-D4KRQIBu.mjs → auto-DHYOLnXB.mjs} +19 -19
  22. package/dist/{auto-oWgZl7mM.cjs → auto-DXLdaX5O.cjs} +19 -19
  23. package/dist/{bootstrap-MFmMruyB.mjs → bootstrap-Di38SnpN.mjs} +2 -2
  24. package/dist/{bootstrap-B7YvJcVK.cjs → bootstrap-eJ1l7VYl.cjs} +2 -2
  25. package/dist/{browser-CfFbN1Us.mjs → browser-6Cg7G6bb.mjs} +1 -1
  26. package/dist/{browser-C19iD31j.cjs → browser-D3uBFRQu.cjs} +1 -1
  27. package/dist/{claudeLocal-C4A7-BmS.cjs → claudeLocal-BBaE4QF_.cjs} +9 -8
  28. package/dist/{claudeLocal-C6wNx9qH.mjs → claudeLocal-CqaEs-81.mjs} +7 -6
  29. package/dist/{claudeLocalLauncher-DdPfufcS.mjs → claudeLocalLauncher-BDUPxtsI.mjs} +11 -11
  30. package/dist/{claudeLocalLauncher-BfCKs7Le.cjs → claudeLocalLauncher-wPxKtH_P.cjs} +11 -11
  31. package/dist/{claudeSessionFork-B8NjdHYD.cjs → claudeSessionFork-CmY25Fl3.cjs} +1 -1
  32. package/dist/{claudeSessionFork-D8XT48Lf.mjs → claudeSessionFork-DzWFzj9m.mjs} +1 -1
  33. package/dist/{client-jAdkYZRf.cjs → client-C2HcMqRF.cjs} +14 -5
  34. package/dist/{client-DAnQqPmc.mjs → client-DWws_aQK.mjs} +2 -2
  35. package/dist/{client-BfGuTBMO.mjs → client-DcDE6Ifk.mjs} +2 -2
  36. package/dist/{client-CMIhQ32m.cjs → client-DmY03OZZ.cjs} +2 -2
  37. package/dist/{client-CTNxuHVc.cjs → client-agH03Irm.cjs} +2 -2
  38. package/dist/{client-CKM07bJH.mjs → client-qJ0y8fus.mjs} +14 -5
  39. package/dist/codex/happyMcpStdioBridge.cjs +18 -17
  40. package/dist/codex/happyMcpStdioBridge.mjs +18 -17
  41. package/dist/{codexAppServerClient-DhOC61k9.mjs → codexAppServerClient-DgE99i7X.mjs} +39 -5
  42. package/dist/{codexAppServerClient-Dv1Mh3MS.cjs → codexAppServerClient-DwzC8LR0.cjs} +39 -5
  43. package/dist/{codexCommand-CWrFt3Ne.cjs → codexCommand-1vFEA1KT.cjs} +118 -60
  44. package/dist/{codexCommand-D3_i93Rm.mjs → codexCommand-DUSVzbKh.mjs} +115 -57
  45. package/dist/{codexTermination-B08GgahL.mjs → codexTermination-Bybovr2z.mjs} +1 -1
  46. package/dist/{codexTermination-DErS0cGt.cjs → codexTermination-DuDPyBRR.cjs} +1 -1
  47. package/dist/{config-D3OBduhj.mjs → config-BrzZ0O-6.mjs} +3 -3
  48. package/dist/{config-D_aj3xgw.cjs → config-C4xOL5bH.cjs} +3 -3
  49. package/dist/{configuration-DbCHeEeP.mjs → configuration-BZHpFD7K.mjs} +1 -1
  50. package/dist/{configuration-CI0GWwaT.cjs → configuration-DyPW9mVa.cjs} +1 -1
  51. package/dist/{connect-BuwVpjkZ.mjs → connect-Cw_INlj8.mjs} +13 -13
  52. package/dist/{connect-839tEkPN.cjs → connect-DurKwMEo.cjs} +13 -13
  53. package/dist/{context-zhirgqSw.cjs → context-2xDvjkQp.cjs} +1 -1
  54. package/dist/{context-D2Y_qLs0.mjs → context-t7YV0aZc.mjs} +1 -1
  55. package/dist/{controlClient-Dv80mB_j.mjs → controlClient-Bw56NIrj.mjs} +4 -4
  56. package/dist/{controlClient-BIi1tzEo.cjs → controlClient-DvFaPsg6.cjs} +3 -3
  57. package/dist/{createSessionMetadata-Dqy_DfoF.mjs → createSessionMetadata-Dn5BkLfU.mjs} +2 -2
  58. package/dist/{createSessionMetadata-DT24NjY2.cjs → createSessionMetadata-Dpg6bV6f.cjs} +2 -2
  59. package/dist/{defaultPermissionMode-yR27mevc.mjs → defaultPermissionMode-DMTnlccv.mjs} +2 -2
  60. package/dist/{defaultPermissionMode-BYqJbPhc.cjs → defaultPermissionMode-Dlm0q1m0.cjs} +2 -2
  61. package/dist/{deterministicJson-COiJcmUR.mjs → deterministicJson-CsRckxVq.mjs} +14 -14
  62. package/dist/{deterministicJson-CoWlyn_X.cjs → deterministicJson-D0BrV1FD.cjs} +14 -14
  63. package/dist/{doctor-Ymj096qP.mjs → doctor-B4HQiW6j.mjs} +7 -7
  64. package/dist/{doctor-DI6aIOne.cjs → doctor-CYe4d9kU.cjs} +7 -7
  65. package/dist/{downloadTarget-BOXHrxbm.cjs → downloadTarget-CuhBVvuC.cjs} +6 -6
  66. package/dist/{downloadTarget-DRXCRDub.mjs → downloadTarget-tYMV_VHo.mjs} +6 -6
  67. package/dist/{ensureDaemonRunning-BqNjYnar.cjs → ensureDaemonRunning-Ce3BlWiR.cjs} +5 -5
  68. package/dist/{ensureDaemonRunning-DTrrXAdz.mjs → ensureDaemonRunning-DVtIG9z7.mjs} +5 -5
  69. package/dist/{handleResumeCommand-DW_MRgtz.mjs → handleResumeCommand-BU1uMNyv.mjs} +5 -5
  70. package/dist/{handleResumeCommand-BBKUGhCv.cjs → handleResumeCommand-CLxsmAW0.cjs} +5 -5
  71. package/dist/{index-Cyu_8WAd.mjs → index-B1OxWiNG.mjs} +3 -3
  72. package/dist/{index-BumVulwx.cjs → index-BOe6dKnL.cjs} +215 -18
  73. package/dist/{index-04pYyzsJ.mjs → index-CVHRt3SS.mjs} +4 -4
  74. package/dist/{index-WW17yjQO.mjs → index-ChX0eVXw.mjs} +92 -46
  75. package/dist/{index-CmlAXizv.mjs → index-DDz0Ftoy.mjs} +7 -7
  76. package/dist/{index-D9lJhXUk.cjs → index-DG1kGjkF.cjs} +93 -47
  77. package/dist/{index-W8wlfp57.cjs → index-DoXbGEAi.cjs} +3 -3
  78. package/dist/{index-Bq6VHNdk.cjs → index-KwuXqLwe.cjs} +4 -4
  79. package/dist/{index-B9f1vKcC.mjs → index-WKyN-bNy.mjs} +212 -17
  80. package/dist/{index-CY573fnz.cjs → index-wWJJAQRk.cjs} +7 -7
  81. package/dist/index.cjs +2 -2
  82. package/dist/index.mjs +2 -2
  83. package/dist/{install-F3rP8tBU.mjs → install-B8O1JpJH.mjs} +1 -1
  84. package/dist/{install-BATFlr_l.cjs → install-BOHlqewf.cjs} +1 -1
  85. package/dist/{install-C5XCDwgD.mjs → install-CMa_FOWu.mjs} +3 -3
  86. package/dist/{install-C1y_g7kj.cjs → install-cAYvHxXR.cjs} +3 -3
  87. package/dist/lib.cjs +12 -12
  88. package/dist/lib.d.cts +6 -0
  89. package/dist/lib.d.mts +6 -0
  90. package/dist/lib.mjs +12 -12
  91. package/dist/{lidState-CZ1ggYiB.mjs → lidState-D-lsD1FS.mjs} +1 -1
  92. package/dist/{lidState-BxHu6dus.cjs → lidState-d1vgQ3n7.cjs} +1 -1
  93. package/dist/{localHappyAgentAuth-BHklNDKQ.cjs → localHappyAgentAuth-DucSnCg3.cjs} +1 -1
  94. package/dist/{localHappyAgentAuth-OJk4xDwg.mjs → localHappyAgentAuth-wvDp-nGj.mjs} +1 -1
  95. package/dist/{logger-L0pLBOLK.cjs → logger-C3vZG6Q0.cjs} +2 -2
  96. package/dist/{logger-CpaeM90D.mjs → logger-RpzJ4d8V.mjs} +2 -2
  97. package/dist/{machineMetadata-YeHF4gSY.cjs → machineMetadata-CAvFq1Jg.cjs} +3 -3
  98. package/dist/{machineMetadata-ukaYmmlK.mjs → machineMetadata-CiQ2_1Mq.mjs} +3 -3
  99. package/dist/{main-VyiAJXfb.cjs → main-ChpYcFZi.cjs} +46 -46
  100. package/dist/{main-pkH_VRP-.mjs → main-IPhaImjm.mjs} +46 -46
  101. package/dist/{mcp-Y8Xsr2Xh.cjs → mcp-2xF232hL.cjs} +15 -15
  102. package/dist/{mcp-BwoAhEnN.mjs → mcp-CWnMvju6.mjs} +15 -15
  103. package/dist/{mirrorProtocol-Did0-1jn.cjs → mirrorProtocol-CVzPObON.cjs} +3 -3
  104. package/dist/{mirrorProtocol-DukUp2Bj.mjs → mirrorProtocol-Dr7fNq8V.mjs} +3 -3
  105. package/dist/{package-DagIeOhi.mjs → package-CwB8rFJt.mjs} +10 -10
  106. package/dist/{package-BuATIMpK.cjs → package-Gnf_935w.cjs} +10 -10
  107. package/dist/{panels-CZ_CRUbM.cjs → panels-DTlTsndU.cjs} +5 -5
  108. package/dist/{panels-C3dUoUbA.mjs → panels-L1mSkC-y.mjs} +5 -5
  109. package/dist/{peerTools-CUCqJ83-.mjs → peerTools-2_8Bw9PU.mjs} +5 -5
  110. package/dist/{peerTools-Cs3Ln6d0.cjs → peerTools-C1E5cQ86.cjs} +5 -5
  111. package/dist/{persistence-FgtDuVAP.mjs → persistence-Bn4qEbDg.mjs} +2 -2
  112. package/dist/{persistence-CIzOAWK6.cjs → persistence-CqtjFiD1.cjs} +2 -2
  113. package/dist/{piRunnerArgs-CJhXFPM9.cjs → piRunnerArgs-BI8yQRBZ.cjs} +1 -1
  114. package/dist/{piRunnerArgs-YbYkfixz.mjs → piRunnerArgs-DWBb63W9.mjs} +1 -1
  115. package/dist/{piRuntime-CEzoAYHe.cjs → piRuntime--mQ43MSM.cjs} +2 -2
  116. package/dist/{piRuntime-CShuw-1A.mjs → piRuntime-Do8oqbm3.mjs} +2 -2
  117. package/dist/{piTerminal-DVr2W6bI.cjs → piTerminal-BzcvLFsP.cjs} +18 -18
  118. package/dist/{piTerminal-BvvcgVoW.mjs → piTerminal-GC1KHTYQ.mjs} +18 -18
  119. package/dist/promptCacheTtl-B8PCzE6k.cjs +76 -0
  120. package/dist/promptCacheTtl-Ce0TVbrx.mjs +72 -0
  121. package/dist/{pushNotifications-2CyhYAte.mjs → pushNotifications-BThg4nVd.mjs} +3 -3
  122. package/dist/{pushNotifications-OtQY-Mfa.cjs → pushNotifications-Bb-QSqXw.cjs} +3 -3
  123. package/dist/{query-DimRl61I.cjs → query-Bz3pocKH.cjs} +5 -4
  124. package/dist/{query-B7DvMlYM.mjs → query-CkgIJ_Dy.mjs} +3 -2
  125. package/dist/{specialCommands-ByrcSYSh.cjs → rateLimitReporter-BkHyvLru.cjs} +3 -55
  126. package/dist/{specialCommands-B-DAeFrU.mjs → rateLimitReporter-Iw4k3Bbr.mjs} +4 -55
  127. package/dist/{rateLimitWindows-DwhrA5wy.cjs → rateLimitWindows-Bm_dcQGW.cjs} +1 -1
  128. package/dist/{rateLimitWindows-C0zbGT7K.mjs → rateLimitWindows-CQ4tIQnx.mjs} +1 -1
  129. package/dist/{registerCommonHandlers-De54jKz8.cjs → registerCommonHandlers-CIs6H2DV.cjs} +2 -2
  130. package/dist/{registerCommonHandlers-X9lnO2TF.mjs → registerCommonHandlers-CaWl9ll1.mjs} +2 -2
  131. package/dist/{remoteSessionClient-9j3N_bzV.cjs → remoteSessionClient-DgUMfPW4.cjs} +5 -5
  132. package/dist/{remoteSessionClient-BApor-c2.mjs → remoteSessionClient-uPj7omsw.mjs} +5 -5
  133. package/dist/{reportProgressTool-RR5VkbDf.cjs → reportProgressTool-CaJ8EwLq.cjs} +3 -3
  134. package/dist/{reportProgressTool-6mDoxKuq.mjs → reportProgressTool-DUEq3xAL.mjs} +3 -3
  135. package/dist/{resources-CqwHPhdK.cjs → resources-BZ_Be0qM.cjs} +1 -1
  136. package/dist/{resources-CLdQfe3b.mjs → resources-CLP_MpK4.mjs} +1 -1
  137. package/dist/{run-CmA3cPD_.mjs → run-DTUJBD6p.mjs} +37 -37
  138. package/dist/{run-B2ZorDI7.cjs → run-DyyGMqND.cjs} +37 -37
  139. package/dist/{runClaude-Dk73bQ0n.cjs → runClaude-8JDaPoGQ.cjs} +22 -22
  140. package/dist/{runClaude-bxwea9mX.mjs → runClaude-DTNvIz2J.mjs} +22 -22
  141. package/dist/{runClaudeDeps-dVfReVd4.cjs → runClaudeDeps-BeLo5zss.cjs} +84 -55
  142. package/dist/{runClaudeDeps-DoaYM017.mjs → runClaudeDeps-CgGkgg7e.mjs} +86 -56
  143. package/dist/{runGemini-BD-wQe5q.cjs → runGemini-BSOdU563.cjs} +55 -51
  144. package/dist/{runGemini-Dq2iv4UF.mjs → runGemini-eU8UOzfc.mjs} +53 -49
  145. package/dist/{runOpenClaw-BXLv_bvU.cjs → runOpenClaw-CYyFoGRZ.cjs} +30 -26
  146. package/dist/{runOpenClaw-C1NB1aLx.mjs → runOpenClaw-D8RZiA1e.mjs} +28 -24
  147. package/dist/{sandbox-9MIBf8kS.cjs → sandbox-C8zfNX-4.cjs} +4 -4
  148. package/dist/{sandbox-Dqs_T8Jw.mjs → sandbox-DlPahdhl.mjs} +4 -4
  149. package/dist/selfCheck-4bcdHPFQ.mjs +86 -0
  150. package/dist/{selfCheck-CkUezhrg.cjs → selfCheck-D28nvuPJ.cjs} +37 -37
  151. package/dist/{send-rdhpycNB.cjs → send-C58kX4qz.cjs} +8 -8
  152. package/dist/{send-4q066vij.mjs → send-DBpv-1eh.mjs} +8 -8
  153. package/dist/{server-DxTjt1mK.cjs → server-I_CETZzn.cjs} +6 -6
  154. package/dist/{server-DN6TvjhP.mjs → server-J5K6pOox.mjs} +4 -4
  155. package/dist/{sessionLock-DOsE5UUf.mjs → sessionLock-C7Wg1RVd.mjs} +3 -3
  156. package/dist/{sessionLock-h4162Jrf.cjs → sessionLock-DjE7O0LS.cjs} +3 -3
  157. package/dist/{sessionOps--9p2IzVA.mjs → sessionOps-CYjMT7Ad.mjs} +4 -4
  158. package/dist/{sessionOps-tmBKG5qg.cjs → sessionOps-DGMpl9NB.cjs} +4 -4
  159. package/dist/{sessionProvider-B9w7rFDR.cjs → sessionProvider-DVtxrOuM.cjs} +5 -5
  160. package/dist/{sessionProvider-C6MHJZ9Z.mjs → sessionProvider-TLiFn9kD.mjs} +5 -5
  161. package/dist/{sessionScanner-Bgvz8Uiy.cjs → sessionScanner-BZ1ZSn6I.cjs} +3 -3
  162. package/dist/{sessionScanner-B6hzp5R9.mjs → sessionScanner-CknV1IlN.mjs} +3 -3
  163. package/dist/{sessions-DJMVXKRz.cjs → sessions-CTkBKs5U.cjs} +10 -10
  164. package/dist/{sessions-iItaUQAF.mjs → sessions-DU4bxkap.mjs} +10 -10
  165. package/dist/{setupOfflineReconnection-DL4HUMDJ.cjs → setupOfflineReconnection-CQHNuP_0.cjs} +2 -2
  166. package/dist/{setupOfflineReconnection-DF78nz1N.mjs → setupOfflineReconnection-DaOXnGuH.mjs} +2 -2
  167. package/dist/{spawn-CL9A8dBJ.cjs → spawn-C0wZc03S.cjs} +67 -25
  168. package/dist/{spawn-CoYfACsc.mjs → spawn-DdnYTtQe.mjs} +67 -26
  169. package/dist/{spawnAgents-DsJSyLDl.cjs → spawnAgents-BjyU78Ue.cjs} +21 -9
  170. package/dist/{spawnAgents-f2q31uUV.mjs → spawnAgents-D-7wMw-a.mjs} +21 -10
  171. package/dist/{spawnHappyCLI-BWOub_Uf.cjs → spawnHappyCLI-BJUd974I.cjs} +1 -1
  172. package/dist/{spawnHappyCLI-BcSO1rF6.mjs → spawnHappyCLI-CnyyJk74.mjs} +1 -1
  173. package/dist/{registerKillSessionHandler-CAif4Uz4.cjs → specialCommands-BsvSoDhC.cjs} +91 -6
  174. package/dist/{registerKillSessionHandler-CrLsN5m3.mjs → specialCommands-DHU7TNeK.mjs} +88 -7
  175. package/dist/{startFileWatcher-DVia64Vg.mjs → startFileWatcher-CpO5Mwbr.mjs} +1 -1
  176. package/dist/{startFileWatcher-BZrpUz7_.cjs → startFileWatcher-DBboREco.cjs} +1 -1
  177. package/dist/{startupSessionCreate-CY4tPjlZ.mjs → startupSessionCreate-BgaVuvQp.mjs} +1 -1
  178. package/dist/{startupSessionCreate-63ABDnfJ.cjs → startupSessionCreate-C1u2dtz8.cjs} +1 -1
  179. package/dist/{streamRelay-B3FloUTT.mjs → streamRelay-CqBynIon.mjs} +1 -1
  180. package/dist/{streamRelay-Cn_uGG6m.cjs → streamRelay-D9a4cBEa.cjs} +1 -1
  181. package/dist/{sync-CKSmwxec.cjs → sync-6HFRJP1h.cjs} +1 -1
  182. package/dist/{sync-CZjyTC4v.mjs → sync-I8NYmycF.mjs} +1 -1
  183. package/dist/{systemPrompt-BPzhf5d5.cjs → systemPrompt-BDWj5QSL.cjs} +2 -2
  184. package/dist/{systemPrompt-BKUVX-fd.mjs → systemPrompt-C1RSY_60.mjs} +2 -2
  185. package/dist/{teams-B2-KPjRg.mjs → teams-GpLFbXXE.mjs} +9 -9
  186. package/dist/{teams-CHBszdmc.cjs → teams-eUD7ymif.cjs} +9 -9
  187. package/dist/{template-DPsqlHJQ.cjs → template-17HATY_Y.cjs} +1 -1
  188. package/dist/{template-DuKZw-Sz.mjs → template-CEK8MEjo.mjs} +1 -1
  189. package/dist/{time-DcICfW0N.cjs → time-BAJRbB6U.cjs} +1 -1
  190. package/dist/{time-BsNUVcKH.mjs → time-umG7yHkb.mjs} +1 -1
  191. package/dist/{titleGenerator-B4b4ah--.mjs → titleGenerator-dmFlxkRs.mjs} +1 -1
  192. package/dist/{titleGenerator-Bvk1mx7G.cjs → titleGenerator-iqb2jOF1.cjs} +2 -2
  193. package/dist/{todo-C7--CBge.mjs → todo-CT4AJ3sH.mjs} +6 -6
  194. package/dist/{todo-BN4hhun6.cjs → todo-DsR7WnQS.cjs} +6 -6
  195. package/dist/tools-30E66QL_.cjs +140 -0
  196. package/dist/tools-BOWazSD6.mjs +137 -0
  197. package/dist/{uninstall-_qDbgdxh.cjs → uninstall-BtTc9hHa.cjs} +3 -3
  198. package/dist/{uninstall-Bjwl9bqK.mjs → uninstall-DImXs6VZ.mjs} +3 -3
  199. package/package.json +10 -10
  200. package/dist/selfCheck-Dz_Sm7w8.mjs +0 -86
  201. package/dist/smallFastModel-BLNgMrwR.mjs +0 -18
  202. package/dist/smallFastModel-D_uxGMo3.cjs +0 -21
  203. package/dist/tools-BILbS8Hh.mjs +0 -60
  204. package/dist/tools-Bl5Q_6Nr.cjs +0 -63
@@ -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-L0pLBOLK.cjs');
6
+ var logger = require('./logger-C3vZG6Q0.cjs');
7
7
  var contentLogMetadata = require('./contentLogMetadata-ZSFk_NjQ.cjs');
8
8
  var manager = require('./manager-HrEj442o.cjs');
9
- var _package = require('./package-BuATIMpK.cjs');
10
- var rateLimitWindows = require('./rateLimitWindows-DwhrA5wy.cjs');
9
+ var _package = require('./package-Gnf_935w.cjs');
10
+ var rateLimitWindows = require('./rateLimitWindows-Bm_dcQGW.cjs');
11
11
  var processTree = require('./processTree-CMHWlVse.cjs');
12
12
 
13
13
  const CODEX_HELPER_LABEL_MAX_CHARS = 80;
@@ -142,6 +142,8 @@ class CodexAppServerClient {
142
142
  completedTurnIds = /* @__PURE__ */ new Set();
143
143
  /** B-625: turns whose failure has already been forwarded, so a second failed frame is not. */
144
144
  failedTurnIds = /* @__PURE__ */ new Set();
145
+ /** The turn the last pending completion was resolved for (runTurnAndWait reads its verdict). */
146
+ lastResolvedTurnId = null;
145
147
  // B-625: the app-server speaks for every thread it hosts — the session's own and the
146
148
  // children `spawn_agent` opens — so a lifecycle frame (turn/started, turn/completed,
147
149
  // thread/status/changed, error, thread/closed) is the session's only when its `threadId`
@@ -860,6 +862,7 @@ ${text}`.slice(-400);
860
862
  }
861
863
  resolvePendingTurn(aborted) {
862
864
  if (!this.pendingTurnCompletion) return;
865
+ this.lastResolvedTurnId = this.pendingTurnCompletion.turnId;
863
866
  this.clearTurnWatchdog();
864
867
  this.clearThreadStopGrace();
865
868
  this.pendingTurnCompletion.resolve(aborted);
@@ -994,6 +997,7 @@ ${text}`.slice(-400);
994
997
  );
995
998
  return;
996
999
  }
1000
+ if (!pending.turnId && turnId) pending.turnId = turnId;
997
1001
  this.resolvePendingTurn(aborted);
998
1002
  }
999
1003
  async waitForTurnCompletion(timeoutMs) {
@@ -1093,6 +1097,24 @@ ${text}`.slice(-400);
1093
1097
  * Returns { aborted: true } if the turn was aborted (user cancel, permission reject, etc.).
1094
1098
  */
1095
1099
  async sendTurnAndWait(prompt, opts) {
1100
+ const { aborted } = await this.runTurnAndWait(() => this.sendTurn(prompt, opts), opts);
1101
+ return { aborted };
1102
+ }
1103
+ /**
1104
+ * `/compact`: Codex compacts the thread in a turn of its own
1105
+ * (`thread/compact/start` answers `{}`, then `turn/started` →
1106
+ * `contextCompaction` item → `turn/completed`, probed on codex-cli 0.154).
1107
+ * Waits for that turn like any other; `failed` is the turn's own verdict.
1108
+ */
1109
+ async compactThreadAndWait(opts) {
1110
+ return this.runTurnAndWait(async () => {
1111
+ if (!this._threadId) {
1112
+ throw new Error("No active thread. Call startThread first.");
1113
+ }
1114
+ await this.request("thread/compact/start", { threadId: this._threadId });
1115
+ }, opts);
1116
+ }
1117
+ async runTurnAndWait(start, opts) {
1096
1118
  if (this.pendingInterrupt) {
1097
1119
  await this.pendingInterrupt;
1098
1120
  await new Promise((resolve) => setTimeout(resolve, 0));
@@ -1110,7 +1132,7 @@ ${text}`.slice(-400);
1110
1132
  this.armTurnWatchdog(timeoutMs);
1111
1133
  });
1112
1134
  try {
1113
- await this.sendTurn(prompt, opts);
1135
+ await start();
1114
1136
  } catch (err) {
1115
1137
  this.clearTurnWatchdog();
1116
1138
  this.pendingTurnCompletion = null;
@@ -1119,7 +1141,8 @@ ${text}`.slice(-400);
1119
1141
  }
1120
1142
  const aborted = await completion;
1121
1143
  this.clearTurnWatchdog();
1122
- return { aborted };
1144
+ const turnId = this.lastResolvedTurnId;
1145
+ return { aborted, failed: turnId !== null && this.failedTurnIds.has(turnId) };
1123
1146
  }
1124
1147
  armTurnWatchdog(timeoutMs) {
1125
1148
  this.clearTurnWatchdog();
@@ -1210,6 +1233,17 @@ ${text}`.slice(-400);
1210
1233
  } while (cursor);
1211
1234
  return models;
1212
1235
  }
1236
+ /**
1237
+ * B-844: the model Codex's effective configuration pins (config.toml,
1238
+ * profile, CLI overrides) via `config/read`; null = nothing pinned.
1239
+ * Throws when this Codex has no `config/read` — the caller then reports
1240
+ * nothing (unknown) and the web sends no model.
1241
+ */
1242
+ async readConfiguredModel(cwd) {
1243
+ const response = await this.request("config/read", { cwd }, 1e4);
1244
+ const model = response?.config?.model;
1245
+ return typeof model === "string" && model.trim() ? model.trim() : null;
1246
+ }
1213
1247
  request(method, params, timeoutMs) {
1214
1248
  const timeout = timeoutMs ?? CodexAppServerClient.REQUEST_TIMEOUT_MS;
1215
1249
  return new Promise((resolve, reject) => {
@@ -1,107 +1,107 @@
1
1
  'use strict';
2
2
 
3
- var auth = require('./auth-CImUXAjH.cjs');
4
- var index = require('./index-BumVulwx.cjs');
5
- var deterministicJson = require('./deterministicJson-CoWlyn_X.cjs');
6
- var client = require('./client-CTNxuHVc.cjs');
3
+ var auth = require('./auth-CXmI92aj.cjs');
4
+ var index = require('./index-BOe6dKnL.cjs');
5
+ var deterministicJson = require('./deterministicJson-D0BrV1FD.cjs');
6
+ var client = require('./client-agH03Irm.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-DjqQTT16.cjs');
11
+ var api = require('./api-BOqjYd5r.cjs');
12
12
  var agentAttachments = require('./agentAttachments-Dbw8iMCZ.cjs');
13
- var attachmentContent = require('./attachmentContent-2kInPZrP.cjs');
13
+ var attachmentContent = require('./attachmentContent-BFRMLong.cjs');
14
14
  var ink = require('ink');
15
- var sessionLock = require('./sessionLock-h4162Jrf.cjs');
15
+ var sessionLock = require('./sessionLock-DjE7O0LS.cjs');
16
16
  var React = require('react');
17
- var codexAppServerClient = require('./codexAppServerClient-Dv1Mh3MS.cjs');
18
- var specialCommands = require('./specialCommands-ByrcSYSh.cjs');
19
- var logger = require('./logger-L0pLBOLK.cjs');
20
- var BasePermissionHandler = require('./BasePermissionHandler-BsOLZCNB.cjs');
21
- var codexTermination = require('./codexTermination-DErS0cGt.cjs');
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');
22
22
  var node_child_process = require('node:child_process');
23
- var persistence = require('./persistence-CIzOAWK6.cjs');
24
- var machineMetadata = require('./machineMetadata-YeHF4gSY.cjs');
25
- var configuration = require('./configuration-CI0GWwaT.cjs');
26
- var registerKillSessionHandler = require('./registerKillSessionHandler-CAif4Uz4.cjs');
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');
27
27
  var projectPath = require('./projectPath-C3ioB4Bu.cjs');
28
28
  var path = require('node:path');
29
- var createSessionMetadata = require('./createSessionMetadata-DT24NjY2.cjs');
29
+ var createSessionMetadata = require('./createSessionMetadata-Dpg6bV6f.cjs');
30
30
  var sessionExitLifecycle = require('./sessionExitLifecycle-DFltxXU8.cjs');
31
- var controlClient = require('./controlClient-BIi1tzEo.cjs');
32
- var defaultPermissionMode = require('./defaultPermissionMode-BYqJbPhc.cjs');
31
+ var controlClient = require('./controlClient-DvFaPsg6.cjs');
32
+ var defaultPermissionMode = require('./defaultPermissionMode-Dlm0q1m0.cjs');
33
33
  var authRelay = require('./authRelay-Dy1qU9td.cjs');
34
- var setupOfflineReconnection = require('./setupOfflineReconnection-DL4HUMDJ.cjs');
35
- var startupSessionCreate = require('./startupSessionCreate-63ABDnfJ.cjs');
34
+ var setupOfflineReconnection = require('./setupOfflineReconnection-CQHNuP_0.cjs');
35
+ var startupSessionCreate = require('./startupSessionCreate-C1u2dtz8.cjs');
36
36
  var trimIdent = require('./trimIdent-4gvk9Wk6.cjs');
37
37
  var constants = require('./constants-VJ0N6WuG.cjs');
38
38
  var editPaths = require('./editPaths-Bqp4OFPw.cjs');
39
- var ensureDaemonRunning = require('./ensureDaemonRunning-BqNjYnar.cjs');
39
+ var ensureDaemonRunning = require('./ensureDaemonRunning-Ce3BlWiR.cjs');
40
40
  require('tweetnacl');
41
41
  require('axios');
42
- require('./time-DcICfW0N.cjs');
43
- require('./browser-C19iD31j.cjs');
42
+ require('./time-BAJRbB6U.cjs');
43
+ require('./browser-D3uBFRQu.cjs');
44
44
  require('open');
45
45
  require('zod');
46
46
  require('./prompt-Bof2aQkI.cjs');
47
- require('./reportProgressTool-RR5VkbDf.cjs');
48
- require('./client-CMIhQ32m.cjs');
47
+ require('./reportProgressTool-CaJ8EwLq.cjs');
48
+ require('./client-DmY03OZZ.cjs');
49
49
  require('./precheckCompat-CWOi5c9L.cjs');
50
50
  require('./agentGuidance-BtBx2xxE.cjs');
51
51
  require('node:fs');
52
52
  require('node:os');
53
53
  require('./pi-DlsrPCTa.cjs');
54
54
  require('./fileStore-7qhnbs6N.cjs');
55
- require('./client-jAdkYZRf.cjs');
55
+ require('./client-C2HcMqRF.cjs');
56
56
  require('node:util');
57
- require('./context-zhirgqSw.cjs');
58
- require('./sessionOps-tmBKG5qg.cjs');
57
+ require('./context-2xDvjkQp.cjs');
58
+ require('./sessionOps-DGMpl9NB.cjs');
59
59
  require('socket.io-client');
60
60
  require('./backgroundTaskActivity-CBvUdj39.cjs');
61
- require('./resources-CqwHPhdK.cjs');
62
- require('./tools-Bl5Q_6Nr.cjs');
63
- require('./peerTools-Cs3Ln6d0.cjs');
61
+ require('./resources-BZ_Be0qM.cjs');
62
+ require('./tools-30E66QL_.cjs');
63
+ require('./peerTools-C1E5cQ86.cjs');
64
64
  require('./ids-B6ZC0HGt.cjs');
65
- require('./remoteSessionClient-9j3N_bzV.cjs');
65
+ require('./remoteSessionClient-DgUMfPW4.cjs');
66
66
  require('@modelcontextprotocol/sdk/server/mcp.js');
67
67
  require('node:http');
68
68
  require('@modelcontextprotocol/sdk/server/streamableHttp.js');
69
69
  require('./limits-C-a7gr04.cjs');
70
- require('./downloadTarget-BOXHrxbm.cjs');
70
+ require('./downloadTarget-CuhBVvuC.cjs');
71
71
  require('./terminals-B_bfC9c2.cjs');
72
72
  require('./terminalTitleSuggest-DhvRFX3H.cjs');
73
73
  require('./tmuxSocket-D-Xt6Vn-.cjs');
74
- require('./bootstrap-B7YvJcVK.cjs');
75
- require('./package-BuATIMpK.cjs');
74
+ require('./bootstrap-eJ1l7VYl.cjs');
75
+ require('./package-Gnf_935w.cjs');
76
76
  require('./webPanels-FCgFKvVe.cjs');
77
- require('./pushNotifications-OtQY-Mfa.cjs');
77
+ require('./pushNotifications-Bb-QSqXw.cjs');
78
78
  require('./contentLogMetadata-ZSFk_NjQ.cjs');
79
79
  require('./previewPath-B0rBdhy1.cjs');
80
80
  require('crypto');
81
- require('./lidState-BxHu6dus.cjs');
81
+ require('./lidState-d1vgQ3n7.cjs');
82
82
  require('os');
83
83
  require('child_process');
84
84
  require('node:events');
85
- require('./registerCommonHandlers-De54jKz8.cjs');
85
+ require('./registerCommonHandlers-CIs6H2DV.cjs');
86
86
  require('util');
87
87
  require('fs/promises');
88
88
  require('path');
89
89
  require('cross-spawn');
90
- require('./sync-CKSmwxec.cjs');
90
+ require('./sync-6HFRJP1h.cjs');
91
91
  require('chalk');
92
92
  require('./processTreeSnapshot-mDbnuojn.cjs');
93
93
  require('node:readline');
94
94
  require('./manager-HrEj442o.cjs');
95
95
  require('@anthropic-ai/sandbox-runtime');
96
- require('./rateLimitWindows-DwhrA5wy.cjs');
96
+ require('./rateLimitWindows-Bm_dcQGW.cjs');
97
97
  require('./processTree-CMHWlVse.cjs');
98
98
  require('./detectCLI-BuYR_Qxe.cjs');
99
99
  require('fs');
100
- require('./localHappyAgentAuth-BHklNDKQ.cjs');
100
+ require('./localHappyAgentAuth-DucSnCg3.cjs');
101
101
  require('./fsMkdir-0K3yENml.cjs');
102
102
  require('./types-CRS-srZK.cjs');
103
103
  require('url');
104
- require('./spawnHappyCLI-BWOub_Uf.cjs');
104
+ require('./spawnHappyCLI-BJUd974I.cjs');
105
105
  require('./doctorReadiness-Dl6yRQCy.cjs');
106
106
 
107
107
  function getStartedSubagents(state) {
@@ -1307,15 +1307,51 @@ class CodexIdleReleaseTimer {
1307
1307
  function isCodexClearText(text) {
1308
1308
  return specialCommands.parseSpecialCommand(text).type === "clear";
1309
1309
  }
1310
+ function codexCompactCommand(text) {
1311
+ return specialCommands.compactCommandText(text);
1312
+ }
1313
+ function isCodexControlText(text) {
1314
+ return isCodexClearText(text) || codexCompactCommand(text) !== null;
1315
+ }
1310
1316
  function enqueueCodexUserText(opts) {
1311
1317
  if (isCodexClearText(opts.text)) {
1312
1318
  opts.queue.pushIsolateAndClear(opts.text, opts.mode, opts.attachments, opts.sourceId);
1313
1319
  return "clear";
1314
1320
  }
1321
+ const compact = codexCompactCommand(opts.text);
1322
+ if (compact !== null) {
1323
+ opts.queue.pushIsolate(compact, opts.mode, opts.attachments, opts.sourceId);
1324
+ return "compact";
1325
+ }
1315
1326
  opts.queue.push(opts.text, opts.mode, opts.attachments, opts.sourceId);
1316
1327
  return "queued";
1317
1328
  }
1318
1329
 
1330
+ async function runCodexCompact(command, deps) {
1331
+ if (!deps.client.hasActiveThread()) {
1332
+ deps.notify("Compaction failed: there is no conversation to compact yet");
1333
+ return "no-thread";
1334
+ }
1335
+ const instructions = specialCommands.parseCompact(command).originalMessage.slice("/compact".length).trim();
1336
+ if (instructions) {
1337
+ deps.notify("Codex does not take compaction instructions; compacting the whole conversation");
1338
+ }
1339
+ deps.notify("Compaction started");
1340
+ try {
1341
+ const result = await deps.client.compactThreadAndWait();
1342
+ if (result.aborted) return "aborted";
1343
+ if (result.failed) {
1344
+ deps.notify("Compaction failed: Codex could not compact the conversation");
1345
+ return "failed";
1346
+ }
1347
+ deps.notify("Compaction completed");
1348
+ return "completed";
1349
+ } catch (error) {
1350
+ deps.notify(`Compaction failed: ${error instanceof Error ? error.message : String(error)}`);
1351
+ return "failed";
1352
+ }
1353
+ }
1354
+
1319
1355
  async function steerIntoRunningTurn(deps, text, attachments, localKey) {
1320
1356
  if (!deps.ownsTurn()) return false;
1321
1357
  const staged = attachments?.length ? await deps.stage(attachments) : [];
@@ -1394,7 +1430,7 @@ function safeCodexErrorMetadata(value) {
1394
1430
  };
1395
1431
  }
1396
1432
 
1397
- const DEFAULT_CODEX_MODEL = "gpt-5.5";
1433
+ const DEFAULT_CODEX_MODEL = void 0;
1398
1434
  const DEFAULT_CODEX_EFFORT = "medium";
1399
1435
  async function runCodex(opts) {
1400
1436
  try {
@@ -1438,7 +1474,7 @@ async function runCodex(opts) {
1438
1474
  dangerouslySkipPermissions: initialPermissionMode === "yolo" || initialPermissionMode === "bypassPermissions",
1439
1475
  ...forkedFromSessionId ? { parentSessionId: forkedFromSessionId } : {},
1440
1476
  ...forkedFromMessageId ? { forkedFromMessageId } : {},
1441
- capabilities: [index.PROMPT_QUEUE_CAPABILITY, forkBackfill.FORK_BACKFILL_CAPABILITY, persistence.HIBERNATION_CAPABILITY, index.CODEX_STEER_CAPABILITY, index.PROJECT_SESSION_CAPABILITY]
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]
1442
1478
  });
1443
1479
  metadata.attachmentKinds = [...attachmentContent.CLAUDE_ATTACHMENT_KINDS];
1444
1480
  const importCodexThreadId = process.env[IMPORT_CODEX_THREAD_ENV];
@@ -1541,7 +1577,7 @@ async function runCodex(opts) {
1541
1577
  logger.logger.debug("[START] Failed to report to daemon (may not be running)", safeCodexErrorMetadata(error));
1542
1578
  }
1543
1579
  }
1544
- const messageQueue = new registerKillSessionHandler.MessageQueue2(hashCodexEnhancedMode);
1580
+ const messageQueue = new specialCommands.MessageQueue2(hashCodexEnhancedMode);
1545
1581
  function attachPromptQueueDrain(client2) {
1546
1582
  const drain = client2.attachPromptQueueDrain({
1547
1583
  isIdle: () => messageQueue.size() === 0 && messageQueue.isWaiting()
@@ -1643,7 +1679,7 @@ async function runCodex(opts) {
1643
1679
  appendSystemPrompt: messageAppendSystemPrompt,
1644
1680
  effort: messageEffort
1645
1681
  };
1646
- if (message.meta?.delivery === "steer" && !isCodexClearText(message.content.text)) {
1682
+ if (message.meta?.delivery === "steer" && !isCodexControlText(message.content.text)) {
1647
1683
  if (await steerIntoRunningTurn(steerDeps, message.content.text, attachments, message.localKey)) {
1648
1684
  logger.logger.debug("[Codex] User message steered into the current turn");
1649
1685
  return;
@@ -1656,8 +1692,8 @@ async function runCodex(opts) {
1656
1692
  attachments,
1657
1693
  sourceId: message.localKey
1658
1694
  });
1659
- if (enqueueResult === "clear") {
1660
- logger.logger.debug("[Codex] /clear command pushed to isolated queue");
1695
+ if (enqueueResult === "clear" || enqueueResult === "compact") {
1696
+ logger.logger.debug(`[Codex] /${enqueueResult} command pushed to isolated queue`);
1661
1697
  }
1662
1698
  }).catch((error) => {
1663
1699
  logger.logger.warn("[Codex] Failed to prepare user attachments", safeCodexErrorMetadata(error));
@@ -1782,7 +1818,7 @@ async function runCodex(opts) {
1782
1818
  }
1783
1819
  });
1784
1820
  session.rpcHandlerManager.registerHandler("abort", () => handleAbort("user"));
1785
- const disposeTermination = registerKillSessionHandler.registerKillSessionHandler(session.rpcHandlerManager, () => handleKillSession("archive"), session, { processSignals: true, onSignal: () => handleKillSession("offline") });
1821
+ const disposeTermination = specialCommands.registerKillSessionHandler(session.rpcHandlerManager, () => handleKillSession("archive"), session, { processSignals: true, onSignal: () => handleKillSession("offline") });
1786
1822
  const messageBuffer = new sessionExitLifecycle.MessageBuffer();
1787
1823
  const hasTTY = process.stdout.isTTY && process.stdin.isTTY;
1788
1824
  let inkInstance = null;
@@ -1852,7 +1888,7 @@ async function runCodex(opts) {
1852
1888
  }
1853
1889
  });
1854
1890
  const editThrottle = new editPaths.EditReportThrottle();
1855
- client$1.setRateLimitHandler((snapshot) => specialCommands.wrapperRateLimitReporter().observeCodex(snapshot));
1891
+ client$1.setRateLimitHandler((snapshot) => rateLimitReporter.wrapperRateLimitReporter().observeCodex(snapshot));
1856
1892
  client$1.setEventHandler((msg) => {
1857
1893
  if (msg.type === "token_count") {
1858
1894
  session.sendAgentUsageSnapshot("codex", msg);
@@ -1984,17 +2020,26 @@ async function runCodex(opts) {
1984
2020
  logger.logger.debug("[codex]: client.connect done");
1985
2021
  try {
1986
2022
  discoveredModels = await client$1.listModels();
1987
- if (discoveredModels.length > 0) {
2023
+ let configured = null;
2024
+ try {
2025
+ configured = { model: await client$1.readConfiguredModel(process.cwd()) };
2026
+ } catch (error) {
2027
+ logger.logger.debug("[Codex] config/read unavailable", safeCodexErrorMetadata(error));
2028
+ }
2029
+ if (discoveredModels.length > 0 || configured) {
1988
2030
  session.updateMetadata((metadata2) => ({
1989
2031
  ...metadata2,
1990
- models: discoveredModels.map((model) => ({
1991
- code: model.model,
1992
- value: model.displayName,
1993
- description: model.description,
1994
- reasoningEfforts: model.supportedReasoningEfforts.map((option) => option.reasoningEffort),
1995
- defaultReasoningEffort: model.defaultReasoningEffort
1996
- })),
1997
- defaultModelCode: discoveredModels.find((model) => model.isDefault)?.model
2032
+ ...discoveredModels.length > 0 ? {
2033
+ models: discoveredModels.map((model) => ({
2034
+ code: model.model,
2035
+ value: model.displayName,
2036
+ description: model.description,
2037
+ reasoningEfforts: model.supportedReasoningEfforts.map((option) => option.reasoningEffort),
2038
+ defaultReasoningEffort: model.defaultReasoningEffort
2039
+ }))
2040
+ } : {},
2041
+ defaultModelCode: configured?.model ?? discoveredModels.find((model) => model.isDefault)?.model,
2042
+ ...configured ? { configuredModel: configured.model } : {}
1998
2043
  }));
1999
2044
  }
2000
2045
  } catch (error) {
@@ -2155,7 +2200,20 @@ async function runCodex(opts) {
2155
2200
  continue;
2156
2201
  }
2157
2202
  messageBuffer.addMessage(message.message, "user");
2203
+ const compactCommand = codexCompactCommand(message.message);
2158
2204
  try {
2205
+ if (compactCommand !== null) {
2206
+ await client$1.ensureConnected();
2207
+ const outcome = await runCodexCompact(compactCommand, {
2208
+ client: client$1,
2209
+ notify: (text) => {
2210
+ messageBuffer.addMessage(text, "status");
2211
+ session.sendSessionEvent({ type: "message", message: text });
2212
+ }
2213
+ });
2214
+ logger.logger.debug(`[Codex] /compact ${outcome}`);
2215
+ continue;
2216
+ }
2159
2217
  await client$1.ensureConnected();
2160
2218
  const sandboxManagedByHappy = client$1.sandboxEnabled;
2161
2219
  const executionPolicy = resolveCodexExecutionPolicy(