very-happy-cli 0.2.187 → 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 (194) hide show
  1. package/dist/{AcpBackend-C4Emg-H3.mjs → AcpBackend-2loP7MpF.mjs} +3 -3
  2. package/dist/{AcpBackend-B2-ReWTo.cjs → AcpBackend-B8AYkp5n.cjs} +3 -3
  3. package/dist/{AcpSessionManager-Nard_zFS.mjs → AcpSessionManager-C17doAoR.mjs} +2 -2
  4. package/dist/{AcpSessionManager-DR4-oZCz.cjs → AcpSessionManager-CLqo9R9Y.cjs} +2 -2
  5. package/dist/{BasePermissionHandler-CZ19WzsP.cjs → BasePermissionHandler-C8UEcFz0.cjs} +1 -1
  6. package/dist/{BasePermissionHandler-Bk9DmVZH.mjs → BasePermissionHandler-CrfyUmqO.mjs} +1 -1
  7. package/dist/{acpSessionResume-DPSfMe7r.mjs → acpSessionResume-F705a1cF.mjs} +1 -1
  8. package/dist/{acpSessionResume-Hto_b8MK.cjs → acpSessionResume-OuYlLGxL.cjs} +1 -1
  9. package/dist/{agentHome-4-odnrAk.mjs → agentHome-Dc7LYF3d.mjs} +4 -4
  10. package/dist/{agentHome-Mveyfa24.cjs → agentHome-DsKHJ_Sf.cjs} +4 -4
  11. package/dist/{api-DVEzYcoy.cjs → api-BOqjYd5r.cjs} +10 -10
  12. package/dist/{api-cVvbFZVK.mjs → api-DNKa7kVy.mjs} +10 -10
  13. package/dist/{apiMachine-Bd1C_JN6.cjs → apiMachine--rcPpMmt.cjs} +14 -14
  14. package/dist/{apiMachine-M7qY1izH.mjs → apiMachine-Di1G9ECW.mjs} +14 -14
  15. package/dist/{attachmentContent-D8hViGiA.cjs → attachmentContent-BFRMLong.cjs} +2 -2
  16. package/dist/{attachmentContent-NNF-Eo4O.mjs → attachmentContent-C9S4ekAz.mjs} +2 -2
  17. package/dist/{auth-BCHL8Fx5.mjs → auth-BNhhk2Fr.mjs} +5 -5
  18. package/dist/{auth-CKNEKwEV.mjs → auth-Bzwo_vOM.mjs} +8 -8
  19. package/dist/{auth-BHw8be0X.cjs → auth-CQtfznF0.cjs} +8 -8
  20. package/dist/{auth-b_1h0677.cjs → auth-CXmI92aj.cjs} +5 -5
  21. package/dist/{auto-D716QYa3.mjs → auto-DHYOLnXB.mjs} +17 -17
  22. package/dist/{auto-Da4rCLal.cjs → auto-DXLdaX5O.cjs} +17 -17
  23. package/dist/{bootstrap-CndcegDb.mjs → bootstrap-Di38SnpN.mjs} +2 -2
  24. package/dist/{bootstrap-j2RuoHVy.cjs → bootstrap-eJ1l7VYl.cjs} +2 -2
  25. package/dist/{browser-CLsM513o.mjs → browser-6Cg7G6bb.mjs} +1 -1
  26. package/dist/{browser-DIYTnD_T.cjs → browser-D3uBFRQu.cjs} +1 -1
  27. package/dist/{claudeLocal-C_uUbEO_.cjs → claudeLocal-BBaE4QF_.cjs} +5 -5
  28. package/dist/{claudeLocal-3HbTx7K-.mjs → claudeLocal-CqaEs-81.mjs} +5 -5
  29. package/dist/{claudeLocalLauncher-DXh2chq3.mjs → claudeLocalLauncher-BDUPxtsI.mjs} +10 -10
  30. package/dist/{claudeLocalLauncher-BxWouVYk.cjs → claudeLocalLauncher-wPxKtH_P.cjs} +10 -10
  31. package/dist/{claudeSessionFork-CsU96yXX.cjs → claudeSessionFork-CmY25Fl3.cjs} +1 -1
  32. package/dist/{claudeSessionFork-B4olbwfj.mjs → claudeSessionFork-DzWFzj9m.mjs} +1 -1
  33. package/dist/{client-CCy72Phz.cjs → client-C2HcMqRF.cjs} +4 -4
  34. package/dist/{client-C8w9aQYe.mjs → client-DWws_aQK.mjs} +2 -2
  35. package/dist/{client-Zqg7DXHl.mjs → client-DcDE6Ifk.mjs} +2 -2
  36. package/dist/{client-CWSfPlGD.cjs → client-DmY03OZZ.cjs} +2 -2
  37. package/dist/{client-q1aNOKgy.cjs → client-agH03Irm.cjs} +2 -2
  38. package/dist/{client-D8p1YjVt.mjs → client-qJ0y8fus.mjs} +4 -4
  39. package/dist/codex/happyMcpStdioBridge.cjs +16 -16
  40. package/dist/codex/happyMcpStdioBridge.mjs +16 -16
  41. package/dist/{codexAppServerClient-Csc-XsRV.mjs → codexAppServerClient-DgE99i7X.mjs} +39 -5
  42. package/dist/{codexAppServerClient-g8npaIU9.cjs → codexAppServerClient-DwzC8LR0.cjs} +39 -5
  43. package/dist/{codexCommand-BV8pTAtv.cjs → codexCommand-1vFEA1KT.cjs} +117 -59
  44. package/dist/{codexCommand-BS-foS_R.mjs → codexCommand-DUSVzbKh.mjs} +114 -56
  45. package/dist/{codexTermination-lOO15mt2.mjs → codexTermination-Bybovr2z.mjs} +1 -1
  46. package/dist/{codexTermination-B5WgZAWO.cjs → codexTermination-DuDPyBRR.cjs} +1 -1
  47. package/dist/{config-Ba5ufl-D.mjs → config-BrzZ0O-6.mjs} +3 -3
  48. package/dist/{config-BOnZRJIG.cjs → config-C4xOL5bH.cjs} +3 -3
  49. package/dist/{configuration-8EAa2X9P.mjs → configuration-BZHpFD7K.mjs} +1 -1
  50. package/dist/{configuration-CAfdO4IC.cjs → configuration-DyPW9mVa.cjs} +1 -1
  51. package/dist/{connect-BHWHNe54.mjs → connect-Cw_INlj8.mjs} +13 -13
  52. package/dist/{connect-2hWuvxRM.cjs → connect-DurKwMEo.cjs} +13 -13
  53. package/dist/{context-BtCz06PX.cjs → context-2xDvjkQp.cjs} +1 -1
  54. package/dist/{context-B-jybQhf.mjs → context-t7YV0aZc.mjs} +1 -1
  55. package/dist/{controlClient-O-vf2MkJ.mjs → controlClient-Bw56NIrj.mjs} +4 -4
  56. package/dist/{controlClient-mH9AxBwT.cjs → controlClient-DvFaPsg6.cjs} +3 -3
  57. package/dist/{createSessionMetadata-HlzlfP0U.mjs → createSessionMetadata-Dn5BkLfU.mjs} +2 -2
  58. package/dist/{createSessionMetadata-Bcn7b8QB.cjs → createSessionMetadata-Dpg6bV6f.cjs} +2 -2
  59. package/dist/{defaultPermissionMode-BPDeX4S8.mjs → defaultPermissionMode-DMTnlccv.mjs} +2 -2
  60. package/dist/{defaultPermissionMode-BN3PdltF.cjs → defaultPermissionMode-Dlm0q1m0.cjs} +2 -2
  61. package/dist/{deterministicJson-CruOxFA6.mjs → deterministicJson-CsRckxVq.mjs} +13 -13
  62. package/dist/{deterministicJson-D9pZQhU9.cjs → deterministicJson-D0BrV1FD.cjs} +13 -13
  63. package/dist/{doctor-BNhLBBTK.mjs → doctor-B4HQiW6j.mjs} +7 -7
  64. package/dist/{doctor-lHD1YZH6.cjs → doctor-CYe4d9kU.cjs} +7 -7
  65. package/dist/{downloadTarget-BhkQxTa8.cjs → downloadTarget-CuhBVvuC.cjs} +6 -6
  66. package/dist/{downloadTarget-ByTxs_N5.mjs → downloadTarget-tYMV_VHo.mjs} +6 -6
  67. package/dist/{ensureDaemonRunning-BiCK6RiS.cjs → ensureDaemonRunning-Ce3BlWiR.cjs} +5 -5
  68. package/dist/{ensureDaemonRunning-Cv0AMaHK.mjs → ensureDaemonRunning-DVtIG9z7.mjs} +5 -5
  69. package/dist/{handleResumeCommand-Cy_KW0LN.mjs → handleResumeCommand-BU1uMNyv.mjs} +5 -5
  70. package/dist/{handleResumeCommand-WB4VDeKk.cjs → handleResumeCommand-CLxsmAW0.cjs} +5 -5
  71. package/dist/{index-BpSpw6jG.mjs → index-B1OxWiNG.mjs} +3 -3
  72. package/dist/{index-BumVulwx.cjs → index-BOe6dKnL.cjs} +215 -18
  73. package/dist/{index-lWXWV0H2.mjs → index-CVHRt3SS.mjs} +4 -4
  74. package/dist/{index-CdOz1uDl.mjs → index-ChX0eVXw.mjs} +91 -45
  75. package/dist/{index-CVMbboXv.mjs → index-DDz0Ftoy.mjs} +4 -4
  76. package/dist/{index-B44ft-m4.cjs → index-DG1kGjkF.cjs} +92 -46
  77. package/dist/{index-BpWESchl.cjs → index-DoXbGEAi.cjs} +3 -3
  78. package/dist/{index-Bcp-PEGc.cjs → index-KwuXqLwe.cjs} +4 -4
  79. package/dist/{index-B9f1vKcC.mjs → index-WKyN-bNy.mjs} +212 -17
  80. package/dist/{index-Vtcax4oD.cjs → index-wWJJAQRk.cjs} +4 -4
  81. package/dist/index.cjs +2 -2
  82. package/dist/index.mjs +2 -2
  83. package/dist/{install-mK93DJ6L.mjs → install-CMa_FOWu.mjs} +3 -3
  84. package/dist/{install-DdRVv9IS.cjs → install-cAYvHxXR.cjs} +3 -3
  85. package/dist/lib.cjs +12 -12
  86. package/dist/lib.d.cts +6 -0
  87. package/dist/lib.d.mts +6 -0
  88. package/dist/lib.mjs +12 -12
  89. package/dist/{lidState-LtdUCXi-.mjs → lidState-D-lsD1FS.mjs} +1 -1
  90. package/dist/{lidState-XyjQaZtU.cjs → lidState-d1vgQ3n7.cjs} +1 -1
  91. package/dist/{localHappyAgentAuth-C9Aj_wGD.cjs → localHappyAgentAuth-DucSnCg3.cjs} +1 -1
  92. package/dist/{localHappyAgentAuth-DqFE0Adr.mjs → localHappyAgentAuth-wvDp-nGj.mjs} +1 -1
  93. package/dist/{logger-BILSzq2s.cjs → logger-C3vZG6Q0.cjs} +2 -2
  94. package/dist/{logger-SAU4uSs4.mjs → logger-RpzJ4d8V.mjs} +2 -2
  95. package/dist/{machineMetadata-C5TgUTpD.cjs → machineMetadata-CAvFq1Jg.cjs} +3 -3
  96. package/dist/{machineMetadata-ZVnihOuL.mjs → machineMetadata-CiQ2_1Mq.mjs} +3 -3
  97. package/dist/{main-CVfx_-l7.cjs → main-ChpYcFZi.cjs} +46 -46
  98. package/dist/{main-BjOHtX8u.mjs → main-IPhaImjm.mjs} +46 -46
  99. package/dist/{mcp-By9XK193.cjs → mcp-2xF232hL.cjs} +15 -15
  100. package/dist/{mcp-CWVr7KbQ.mjs → mcp-CWnMvju6.mjs} +15 -15
  101. package/dist/{mirrorProtocol-C0wyaesn.cjs → mirrorProtocol-CVzPObON.cjs} +3 -3
  102. package/dist/{mirrorProtocol-BI6XbokT.mjs → mirrorProtocol-Dr7fNq8V.mjs} +3 -3
  103. package/dist/{package-BMBwnCn3.mjs → package-CwB8rFJt.mjs} +7 -7
  104. package/dist/{package-Bbfq2KR7.cjs → package-Gnf_935w.cjs} +7 -7
  105. package/dist/{panels-rQmysHlY.cjs → panels-DTlTsndU.cjs} +5 -5
  106. package/dist/{panels-CbIUwV6q.mjs → panels-L1mSkC-y.mjs} +5 -5
  107. package/dist/{peerTools-CyruQrOo.mjs → peerTools-2_8Bw9PU.mjs} +5 -5
  108. package/dist/{peerTools-CZfiq_Dx.cjs → peerTools-C1E5cQ86.cjs} +5 -5
  109. package/dist/{persistence-C7T3HYjq.mjs → persistence-Bn4qEbDg.mjs} +2 -2
  110. package/dist/{persistence-DPeSC0SK.cjs → persistence-CqtjFiD1.cjs} +2 -2
  111. package/dist/{piRunnerArgs-DAq8vIpP.cjs → piRunnerArgs-BI8yQRBZ.cjs} +1 -1
  112. package/dist/{piRunnerArgs-CsWompo8.mjs → piRunnerArgs-DWBb63W9.mjs} +1 -1
  113. package/dist/{piRuntime-CFqlQFoz.cjs → piRuntime--mQ43MSM.cjs} +1 -1
  114. package/dist/{piRuntime-Dxd8Gfun.mjs → piRuntime-Do8oqbm3.mjs} +1 -1
  115. package/dist/{piTerminal-DHG3Kzve.cjs → piTerminal-BzcvLFsP.cjs} +17 -17
  116. package/dist/{piTerminal-BssuKDtJ.mjs → piTerminal-GC1KHTYQ.mjs} +17 -17
  117. package/dist/{pushNotifications-Bi72c41d.mjs → pushNotifications-BThg4nVd.mjs} +3 -3
  118. package/dist/{pushNotifications-CsSyhnHu.cjs → pushNotifications-Bb-QSqXw.cjs} +3 -3
  119. package/dist/{query-Cuef299f.cjs → query-Bz3pocKH.cjs} +1 -1
  120. package/dist/{query-BQOwsKS1.mjs → query-CkgIJ_Dy.mjs} +1 -1
  121. package/dist/{specialCommands-35KxDNE8.cjs → rateLimitReporter-BkHyvLru.cjs} +3 -55
  122. package/dist/{specialCommands-CTtmGCCf.mjs → rateLimitReporter-Iw4k3Bbr.mjs} +4 -55
  123. package/dist/{rateLimitWindows-bfwC81Z-.cjs → rateLimitWindows-Bm_dcQGW.cjs} +1 -1
  124. package/dist/{rateLimitWindows-B6IAWYN5.mjs → rateLimitWindows-CQ4tIQnx.mjs} +1 -1
  125. package/dist/{registerCommonHandlers-CQC04iF3.cjs → registerCommonHandlers-CIs6H2DV.cjs} +2 -2
  126. package/dist/{registerCommonHandlers-qzb6TQqo.mjs → registerCommonHandlers-CaWl9ll1.mjs} +2 -2
  127. package/dist/{remoteSessionClient-DffolBcQ.cjs → remoteSessionClient-DgUMfPW4.cjs} +5 -5
  128. package/dist/{remoteSessionClient-D3XhN_sd.mjs → remoteSessionClient-uPj7omsw.mjs} +5 -5
  129. package/dist/{reportProgressTool-BieTXE_R.cjs → reportProgressTool-CaJ8EwLq.cjs} +3 -3
  130. package/dist/{reportProgressTool-irHR-XEW.mjs → reportProgressTool-DUEq3xAL.mjs} +3 -3
  131. package/dist/{run-DCUaxe2S.mjs → run-DTUJBD6p.mjs} +35 -35
  132. package/dist/{run-Ck_WA6Nj.cjs → run-DyyGMqND.cjs} +35 -35
  133. package/dist/{runClaude-BUGku2Qp.cjs → runClaude-8JDaPoGQ.cjs} +22 -22
  134. package/dist/{runClaude-BryAvfNV.mjs → runClaude-DTNvIz2J.mjs} +22 -22
  135. package/dist/{runClaudeDeps-Dbk1VrOW.cjs → runClaudeDeps-BeLo5zss.cjs} +82 -53
  136. package/dist/{runClaudeDeps-BZkWM9_u.mjs → runClaudeDeps-CgGkgg7e.mjs} +84 -54
  137. package/dist/{runGemini-B6AZ2bv0.cjs → runGemini-BSOdU563.cjs} +54 -50
  138. package/dist/{runGemini-DT379gpi.mjs → runGemini-eU8UOzfc.mjs} +52 -48
  139. package/dist/{runOpenClaw-eBUYlIVJ.cjs → runOpenClaw-CYyFoGRZ.cjs} +30 -26
  140. package/dist/{runOpenClaw-Bpp9mkyO.mjs → runOpenClaw-D8RZiA1e.mjs} +28 -24
  141. package/dist/{sandbox-Bv4H1P6u.cjs → sandbox-C8zfNX-4.cjs} +4 -4
  142. package/dist/{sandbox-Z8TM9eUg.mjs → sandbox-DlPahdhl.mjs} +4 -4
  143. package/dist/selfCheck-4bcdHPFQ.mjs +86 -0
  144. package/dist/{selfCheck--1k2Ptf6.cjs → selfCheck-D28nvuPJ.cjs} +37 -37
  145. package/dist/{send-BG4KYe6f.cjs → send-C58kX4qz.cjs} +8 -8
  146. package/dist/{send-CKTovWuQ.mjs → send-DBpv-1eh.mjs} +8 -8
  147. package/dist/{server-BTNwH-sA.cjs → server-I_CETZzn.cjs} +6 -6
  148. package/dist/{server-DLpXtoiZ.mjs → server-J5K6pOox.mjs} +4 -4
  149. package/dist/{sessionLock-DhzB5ZI9.mjs → sessionLock-C7Wg1RVd.mjs} +3 -3
  150. package/dist/{sessionLock-Cf6RlgfF.cjs → sessionLock-DjE7O0LS.cjs} +3 -3
  151. package/dist/{sessionOps-CiFjBCMa.mjs → sessionOps-CYjMT7Ad.mjs} +4 -4
  152. package/dist/{sessionOps-R52JWMnX.cjs → sessionOps-DGMpl9NB.cjs} +4 -4
  153. package/dist/{sessionProvider-LATn-lZL.cjs → sessionProvider-DVtxrOuM.cjs} +5 -5
  154. package/dist/{sessionProvider-f2tUhwBc.mjs → sessionProvider-TLiFn9kD.mjs} +5 -5
  155. package/dist/{sessionScanner-DRzZtGtu.cjs → sessionScanner-BZ1ZSn6I.cjs} +3 -3
  156. package/dist/{sessionScanner-lS1puA5H.mjs → sessionScanner-CknV1IlN.mjs} +3 -3
  157. package/dist/{sessions-DGd8Fin6.cjs → sessions-CTkBKs5U.cjs} +10 -10
  158. package/dist/{sessions-D01nnjOE.mjs → sessions-DU4bxkap.mjs} +10 -10
  159. package/dist/{setupOfflineReconnection-Ds7ywGwR.cjs → setupOfflineReconnection-CQHNuP_0.cjs} +2 -2
  160. package/dist/{setupOfflineReconnection-UApZjcU5.mjs → setupOfflineReconnection-DaOXnGuH.mjs} +2 -2
  161. package/dist/{spawn-CT3g4p8A.cjs → spawn-C0wZc03S.cjs} +67 -25
  162. package/dist/{spawn-ct8aSMA8.mjs → spawn-DdnYTtQe.mjs} +67 -26
  163. package/dist/{spawnAgents-DsJSyLDl.cjs → spawnAgents-BjyU78Ue.cjs} +21 -9
  164. package/dist/{spawnAgents-f2q31uUV.mjs → spawnAgents-D-7wMw-a.mjs} +21 -10
  165. package/dist/{spawnHappyCLI-DedrWByd.cjs → spawnHappyCLI-BJUd974I.cjs} +1 -1
  166. package/dist/{spawnHappyCLI-Dp05fHcp.mjs → spawnHappyCLI-CnyyJk74.mjs} +1 -1
  167. package/dist/{registerKillSessionHandler-BraKB5Ks.cjs → specialCommands-BsvSoDhC.cjs} +91 -6
  168. package/dist/{registerKillSessionHandler-DMPrrNKX.mjs → specialCommands-DHU7TNeK.mjs} +88 -7
  169. package/dist/{startFileWatcher-BLdxJdgu.mjs → startFileWatcher-CpO5Mwbr.mjs} +1 -1
  170. package/dist/{startFileWatcher-72w11DP_.cjs → startFileWatcher-DBboREco.cjs} +1 -1
  171. package/dist/{startupSessionCreate-CJFR_Zom.mjs → startupSessionCreate-BgaVuvQp.mjs} +1 -1
  172. package/dist/{startupSessionCreate-Cy4J4-Ep.cjs → startupSessionCreate-C1u2dtz8.cjs} +1 -1
  173. package/dist/{streamRelay-B3FloUTT.mjs → streamRelay-CqBynIon.mjs} +1 -1
  174. package/dist/{streamRelay-Cn_uGG6m.cjs → streamRelay-D9a4cBEa.cjs} +1 -1
  175. package/dist/{sync-lxDpbIh3.cjs → sync-6HFRJP1h.cjs} +1 -1
  176. package/dist/{sync-BWX1OVQi.mjs → sync-I8NYmycF.mjs} +1 -1
  177. package/dist/{systemPrompt-0DqWPGY6.cjs → systemPrompt-BDWj5QSL.cjs} +2 -2
  178. package/dist/{systemPrompt-BIilbjt_.mjs → systemPrompt-C1RSY_60.mjs} +2 -2
  179. package/dist/{teams-CvpB8Rdm.mjs → teams-GpLFbXXE.mjs} +7 -7
  180. package/dist/{teams-CImmJLlM.cjs → teams-eUD7ymif.cjs} +7 -7
  181. package/dist/{template-DPsqlHJQ.cjs → template-17HATY_Y.cjs} +1 -1
  182. package/dist/{template-DuKZw-Sz.mjs → template-CEK8MEjo.mjs} +1 -1
  183. package/dist/{time-BbQJi3Eh.cjs → time-BAJRbB6U.cjs} +1 -1
  184. package/dist/{time-DjS5me2q.mjs → time-umG7yHkb.mjs} +1 -1
  185. package/dist/{titleGenerator-CGdBp5lQ.mjs → titleGenerator-dmFlxkRs.mjs} +1 -1
  186. package/dist/{titleGenerator-CfJme6ep.cjs → titleGenerator-iqb2jOF1.cjs} +2 -2
  187. package/dist/{todo-BxfUKwTM.mjs → todo-CT4AJ3sH.mjs} +6 -6
  188. package/dist/{todo-rN20m9lT.cjs → todo-DsR7WnQS.cjs} +6 -6
  189. package/dist/{tools-kGtSjG8h.cjs → tools-30E66QL_.cjs} +1 -1
  190. package/dist/{tools-B_W7xJNh.mjs → tools-BOWazSD6.mjs} +1 -1
  191. package/dist/{uninstall-CBQsxEmD.cjs → uninstall-BtTc9hHa.cjs} +3 -3
  192. package/dist/{uninstall-DUjvgLlg.mjs → uninstall-DImXs6VZ.mjs} +3 -3
  193. package/package.json +7 -7
  194. package/dist/selfCheck-DIGghfQz.mjs +0 -86
@@ -3,9 +3,9 @@
3
3
  var node_fs = require('node:fs');
4
4
  var promises = require('node:fs/promises');
5
5
  var path = require('node:path');
6
- var configuration = require('./configuration-CAfdO4IC.cjs');
6
+ var configuration = require('./configuration-DyPW9mVa.cjs');
7
7
  require('node:os');
8
- require('./package-Bbfq2KR7.cjs');
8
+ require('./package-Gnf_935w.cjs');
9
9
 
10
10
  const ASSISTANT_CLAUDE_MD = `# very-happy \u8C03\u5EA6\u4E2D\u5FC3\uFF08\u8BED\u97F3\u52A9\u624B\uFF09
11
11
 
@@ -1,5 +1,5 @@
1
1
  import open from 'open';
2
- import { l as logger } from './logger-SAU4uSs4.mjs';
2
+ import { l as logger } from './logger-RpzJ4d8V.mjs';
3
3
 
4
4
  async function openBrowser(url) {
5
5
  try {
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var open = require('open');
4
- var logger = require('./logger-BILSzq2s.cjs');
4
+ var logger = require('./logger-C3vZG6Q0.cjs');
5
5
 
6
6
  async function openBrowser(url) {
7
7
  try {
@@ -4,21 +4,21 @@ var spawn = require('cross-spawn');
4
4
  var node_readline = require('node:readline');
5
5
  var node_fs = require('node:fs');
6
6
  var node_crypto = require('node:crypto');
7
- var logger = require('./logger-BILSzq2s.cjs');
7
+ var logger = require('./logger-C3vZG6Q0.cjs');
8
8
  var promptCacheTtl = require('./promptCacheTtl-B8PCzE6k.cjs');
9
9
  var path$1 = require('node:path');
10
10
  var path = require('./path-B7zW-WwE.cjs');
11
- var systemPrompt = require('./systemPrompt-0DqWPGY6.cjs');
11
+ var systemPrompt = require('./systemPrompt-BDWj5QSL.cjs');
12
12
  var manager = require('./manager-HrEj442o.cjs');
13
13
  var contentLogMetadata = require('./contentLogMetadata-ZSFk_NjQ.cjs');
14
14
  var claudeCliPath = require('./claudeCliPath-GaP3UUz1.cjs');
15
15
  require('chalk');
16
16
  require('node:util');
17
- require('./configuration-CAfdO4IC.cjs');
17
+ require('./configuration-DyPW9mVa.cjs');
18
18
  require('node:os');
19
- require('./package-Bbfq2KR7.cjs');
19
+ require('./package-Gnf_935w.cjs');
20
20
  require('node:fs/promises');
21
- require('./index-BumVulwx.cjs');
21
+ require('./index-BOe6dKnL.cjs');
22
22
  require('zod');
23
23
  require('@paralleldrive/cuid2');
24
24
  require('./trimIdent-4gvk9Wk6.cjs');
@@ -2,21 +2,21 @@ import { spawn } from 'cross-spawn';
2
2
  import { createInterface } from 'node:readline';
3
3
  import { readdirSync, statSync, mkdirSync, existsSync } from 'node:fs';
4
4
  import { randomUUID } from 'node:crypto';
5
- import { l as logger } from './logger-SAU4uSs4.mjs';
5
+ import { l as logger } from './logger-RpzJ4d8V.mjs';
6
6
  import { p as pinSmallFastModel, a as applyPromptCacheTtlDefault, e as ensureLocalProxyBypass } from './promptCacheTtl-Ce0TVbrx.mjs';
7
7
  import { join } from 'node:path';
8
8
  import { g as getProjectPath } from './path-D2wdaNSk.mjs';
9
- import { c as claudeCheckSession, s as systemPrompt } from './systemPrompt-BIilbjt_.mjs';
9
+ import { c as claudeCheckSession, s as systemPrompt } from './systemPrompt-C1RSY_60.mjs';
10
10
  import { i as initializeSandbox, a as wrapCommand } from './manager-BEsI4qt3.mjs';
11
11
  import { c as contentLogMetadata } from './contentLogMetadata-BlWI0egu.mjs';
12
12
  import { claudeCliPath } from './claudeCliPath-BqkaH2oR.mjs';
13
13
  import 'chalk';
14
14
  import 'node:util';
15
- import './configuration-8EAa2X9P.mjs';
15
+ import './configuration-BZHpFD7K.mjs';
16
16
  import 'node:os';
17
- import './package-BMBwnCn3.mjs';
17
+ import './package-CwB8rFJt.mjs';
18
18
  import 'node:fs/promises';
19
- import './index-B9f1vKcC.mjs';
19
+ import './index-WKyN-bNy.mjs';
20
20
  import 'zod';
21
21
  import '@paralleldrive/cuid2';
22
22
  import './trimIdent-BAjmv_TG.mjs';
@@ -1,21 +1,21 @@
1
- import { l as logger } from './logger-SAU4uSs4.mjs';
2
- import { claudeLocal, ExitCodeError } from './claudeLocal-3HbTx7K-.mjs';
3
- import { c as createSessionScanner, F as Future, d as describeClaudeProcessExit } from './sessionScanner-lS1puA5H.mjs';
1
+ import { l as logger } from './logger-RpzJ4d8V.mjs';
2
+ import { claudeLocal, ExitCodeError } from './claudeLocal-CqaEs-81.mjs';
3
+ import { c as createSessionScanner, F as Future, d as describeClaudeProcessExit } from './sessionScanner-CknV1IlN.mjs';
4
4
  import 'chalk';
5
5
  import 'node:util';
6
- import './configuration-8EAa2X9P.mjs';
6
+ import './configuration-BZHpFD7K.mjs';
7
7
  import 'node:fs';
8
8
  import 'node:os';
9
9
  import 'node:path';
10
- import './package-BMBwnCn3.mjs';
10
+ import './package-CwB8rFJt.mjs';
11
11
  import 'node:fs/promises';
12
12
  import 'cross-spawn';
13
13
  import 'node:readline';
14
14
  import 'node:crypto';
15
15
  import './promptCacheTtl-Ce0TVbrx.mjs';
16
16
  import './path-D2wdaNSk.mjs';
17
- import './systemPrompt-BIilbjt_.mjs';
18
- import './index-B9f1vKcC.mjs';
17
+ import './systemPrompt-C1RSY_60.mjs';
18
+ import './index-WKyN-bNy.mjs';
19
19
  import 'zod';
20
20
  import '@paralleldrive/cuid2';
21
21
  import './trimIdent-BAjmv_TG.mjs';
@@ -28,11 +28,11 @@ import './claudeCliPath-BqkaH2oR.mjs';
28
28
  import './projectPath-BTBIMB57.mjs';
29
29
  import 'path';
30
30
  import 'url';
31
- import './sync-BWX1OVQi.mjs';
32
- import './time-DjS5me2q.mjs';
31
+ import './sync-I8NYmycF.mjs';
32
+ import './time-umG7yHkb.mjs';
33
33
  import './types-CkqAACXx.mjs';
34
34
  import './transcriptCursor-B7T_gkQ0.mjs';
35
- import './startFileWatcher-BLdxJdgu.mjs';
35
+ import './startFileWatcher-CpO5Mwbr.mjs';
36
36
  import 'fs/promises';
37
37
 
38
38
  async function claudeLocalLauncher(session) {
@@ -1,23 +1,23 @@
1
1
  'use strict';
2
2
 
3
- var logger = require('./logger-BILSzq2s.cjs');
4
- var claudeLocal = require('./claudeLocal-C_uUbEO_.cjs');
5
- var sessionScanner = require('./sessionScanner-DRzZtGtu.cjs');
3
+ var logger = require('./logger-C3vZG6Q0.cjs');
4
+ var claudeLocal = require('./claudeLocal-BBaE4QF_.cjs');
5
+ var sessionScanner = require('./sessionScanner-BZ1ZSn6I.cjs');
6
6
  require('chalk');
7
7
  require('node:util');
8
- require('./configuration-CAfdO4IC.cjs');
8
+ require('./configuration-DyPW9mVa.cjs');
9
9
  require('node:fs');
10
10
  require('node:os');
11
11
  require('node:path');
12
- require('./package-Bbfq2KR7.cjs');
12
+ require('./package-Gnf_935w.cjs');
13
13
  require('node:fs/promises');
14
14
  require('cross-spawn');
15
15
  require('node:readline');
16
16
  require('node:crypto');
17
17
  require('./promptCacheTtl-B8PCzE6k.cjs');
18
18
  require('./path-B7zW-WwE.cjs');
19
- require('./systemPrompt-0DqWPGY6.cjs');
20
- require('./index-BumVulwx.cjs');
19
+ require('./systemPrompt-BDWj5QSL.cjs');
20
+ require('./index-BOe6dKnL.cjs');
21
21
  require('zod');
22
22
  require('@paralleldrive/cuid2');
23
23
  require('./trimIdent-4gvk9Wk6.cjs');
@@ -30,11 +30,11 @@ require('./claudeCliPath-GaP3UUz1.cjs');
30
30
  require('./projectPath-C3ioB4Bu.cjs');
31
31
  require('path');
32
32
  require('url');
33
- require('./sync-lxDpbIh3.cjs');
34
- require('./time-BbQJi3Eh.cjs');
33
+ require('./sync-6HFRJP1h.cjs');
34
+ require('./time-BAJRbB6U.cjs');
35
35
  require('./types-CRS-srZK.cjs');
36
36
  require('./transcriptCursor-DcXGLeSc.cjs');
37
- require('./startFileWatcher-72w11DP_.cjs');
37
+ require('./startFileWatcher-DBboREco.cjs');
38
38
  require('fs/promises');
39
39
 
40
40
  async function claudeLocalLauncher(session) {
@@ -5,7 +5,7 @@ var promises = require('node:fs/promises');
5
5
  var node_fs = require('node:fs');
6
6
  var path = require('node:path');
7
7
  var node_readline = require('node:readline');
8
- var logger = require('./logger-BILSzq2s.cjs');
8
+ var logger = require('./logger-C3vZG6Q0.cjs');
9
9
 
10
10
  class ForkTruncateUuidNotFoundError extends Error {
11
11
  constructor(cutAfterUuid, sourcePath) {
@@ -3,7 +3,7 @@ import { copyFile, unlink, readFile, rename, writeFile } from 'node:fs/promises'
3
3
  import { createReadStream, createWriteStream } from 'node:fs';
4
4
  import { join } from 'node:path';
5
5
  import { createInterface } from 'node:readline';
6
- import { l as logger } from './logger-SAU4uSs4.mjs';
6
+ import { l as logger } from './logger-RpzJ4d8V.mjs';
7
7
 
8
8
  class ForkTruncateUuidNotFoundError extends Error {
9
9
  constructor(cutAfterUuid, sourcePath) {
@@ -4,10 +4,10 @@ var node_crypto = require('node:crypto');
4
4
  var node_child_process = require('node:child_process');
5
5
  var node_util = require('node:util');
6
6
  var path = require('node:path');
7
- var index = require('./index-BumVulwx.cjs');
8
- var configuration = require('./configuration-CAfdO4IC.cjs');
9
- var persistence = require('./persistence-DPeSC0SK.cjs');
10
- var context = require('./context-BtCz06PX.cjs');
7
+ var index = require('./index-BOe6dKnL.cjs');
8
+ var configuration = require('./configuration-DyPW9mVa.cjs');
9
+ var persistence = require('./persistence-CqtjFiD1.cjs');
10
+ var context = require('./context-2xDvjkQp.cjs');
11
11
 
12
12
  async function teamRequest(path, method, token, scoped, body) {
13
13
  const response = await fetch(`${configuration.configuration.serverUrl}${path}`, {
@@ -1,5 +1,5 @@
1
- import { c as configuration } from './configuration-8EAa2X9P.mjs';
2
- import { b as readCredentialsForConfiguredRelay } from './persistence-C7T3HYjq.mjs';
1
+ import { c as configuration } from './configuration-BZHpFD7K.mjs';
2
+ import { b as readCredentialsForConfiguredRelay } from './persistence-Bn4qEbDg.mjs';
3
3
 
4
4
  const UNSUPPORTED_BACKOFF_MS = 10 * 6e4;
5
5
  class ProjectsUnsupportedError extends Error {
@@ -1,5 +1,5 @@
1
- import { c as configuration } from './configuration-8EAa2X9P.mjs';
2
- import { b as readCredentialsForConfiguredRelay, r as readSettings } from './persistence-C7T3HYjq.mjs';
1
+ import { c as configuration } from './configuration-BZHpFD7K.mjs';
2
+ import { b as readCredentialsForConfiguredRelay, r as readSettings } from './persistence-Bn4qEbDg.mjs';
3
3
 
4
4
  class AutomationsRequestError extends Error {
5
5
  constructor(status, code, runStatus, invalidFields = []) {
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var configuration = require('./configuration-CAfdO4IC.cjs');
4
- var persistence = require('./persistence-DPeSC0SK.cjs');
3
+ var configuration = require('./configuration-DyPW9mVa.cjs');
4
+ var persistence = require('./persistence-CqtjFiD1.cjs');
5
5
 
6
6
  class AutomationsRequestError extends Error {
7
7
  constructor(status, code, runStatus, invalidFields = []) {
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var configuration = require('./configuration-CAfdO4IC.cjs');
4
- var persistence = require('./persistence-DPeSC0SK.cjs');
3
+ var configuration = require('./configuration-DyPW9mVa.cjs');
4
+ var persistence = require('./persistence-CqtjFiD1.cjs');
5
5
 
6
6
  const UNSUPPORTED_BACKOFF_MS = 10 * 6e4;
7
7
  class ProjectsUnsupportedError extends Error {
@@ -2,10 +2,10 @@ import { randomUUID } from 'node:crypto';
2
2
  import { execFile } from 'node:child_process';
3
3
  import { promisify } from 'node:util';
4
4
  import { basename, dirname } from 'node:path';
5
- import { f as isInsideTeamWorktree, r as rebaseTeamWorktreePath } from './index-B9f1vKcC.mjs';
6
- import { c as configuration } from './configuration-8EAa2X9P.mjs';
7
- import { r as readSettings, c as readPersistedSessions, b as readCredentialsForConfiguredRelay } from './persistence-C7T3HYjq.mjs';
8
- import { r as readTeamScope, t as teamScopePath, w as writeTeamScope } from './context-B-jybQhf.mjs';
5
+ import { f as isInsideTeamWorktree, r as rebaseTeamWorktreePath } from './index-WKyN-bNy.mjs';
6
+ import { c as configuration } from './configuration-BZHpFD7K.mjs';
7
+ import { r as readSettings, c as readPersistedSessions, b as readCredentialsForConfiguredRelay } from './persistence-Bn4qEbDg.mjs';
8
+ import { r as readTeamScope, t as teamScopePath, w as writeTeamScope } from './context-t7YV0aZc.mjs';
9
9
 
10
10
  async function teamRequest(path, method, token, scoped, body) {
11
11
  const response = await fetch(`${configuration.serverUrl}${path}`, {
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var tools = require('../tools-kGtSjG8h.cjs');
4
- var reportProgressTool = require('../reportProgressTool-BieTXE_R.cjs');
5
- var peerTools = require('../peerTools-CZfiq_Dx.cjs');
3
+ var tools = require('../tools-30E66QL_.cjs');
4
+ var reportProgressTool = require('../reportProgressTool-CaJ8EwLq.cjs');
5
+ var peerTools = require('../peerTools-C1E5cQ86.cjs');
6
6
  var agentGuidance = require('../agentGuidance-BtBx2xxE.cjs');
7
7
  var mcp_js = require('@modelcontextprotocol/sdk/server/mcp.js');
8
8
  var stdio_js = require('@modelcontextprotocol/sdk/server/stdio.js');
@@ -10,36 +10,36 @@ var index_js = require('@modelcontextprotocol/sdk/client/index.js');
10
10
  var streamableHttp_js = require('@modelcontextprotocol/sdk/client/streamableHttp.js');
11
11
  var z = require('zod');
12
12
  var limits = require('../limits-C-a7gr04.cjs');
13
- require('../client-CCy72Phz.cjs');
13
+ require('../client-C2HcMqRF.cjs');
14
14
  require('node:crypto');
15
15
  require('node:child_process');
16
16
  require('node:util');
17
17
  require('node:path');
18
- require('../index-BumVulwx.cjs');
18
+ require('../index-BOe6dKnL.cjs');
19
19
  require('@paralleldrive/cuid2');
20
- require('../configuration-CAfdO4IC.cjs');
20
+ require('../configuration-DyPW9mVa.cjs');
21
21
  require('node:fs');
22
22
  require('node:os');
23
- require('../package-Bbfq2KR7.cjs');
23
+ require('../package-Gnf_935w.cjs');
24
24
  require('node:fs/promises');
25
- require('../persistence-DPeSC0SK.cjs');
25
+ require('../persistence-CqtjFiD1.cjs');
26
26
  require('../authRelay-Dy1qU9td.cjs');
27
27
  require('tweetnacl');
28
- require('../logger-BILSzq2s.cjs');
28
+ require('../logger-C3vZG6Q0.cjs');
29
29
  require('chalk');
30
- require('../context-BtCz06PX.cjs');
31
- require('../client-CWSfPlGD.cjs');
30
+ require('../context-2xDvjkQp.cjs');
31
+ require('../client-DmY03OZZ.cjs');
32
32
  require('../precheckCompat-CWOi5c9L.cjs');
33
- require('../client-q1aNOKgy.cjs');
33
+ require('../client-agH03Irm.cjs');
34
34
  require('../prompt-Bof2aQkI.cjs');
35
35
  require('../ids-B6ZC0HGt.cjs');
36
- require('../controlClient-mH9AxBwT.cjs');
37
- require('../sessionOps-R52JWMnX.cjs');
36
+ require('../controlClient-DvFaPsg6.cjs');
37
+ require('../sessionOps-DGMpl9NB.cjs');
38
38
  require('axios');
39
- require('../time-BbQJi3Eh.cjs');
39
+ require('../time-BAJRbB6U.cjs');
40
40
  require('socket.io-client');
41
41
  require('../backgroundTaskActivity-CBvUdj39.cjs');
42
- require('../remoteSessionClient-DffolBcQ.cjs');
42
+ require('../remoteSessionClient-DgUMfPW4.cjs');
43
43
  require('../trimIdent-4gvk9Wk6.cjs');
44
44
 
45
45
  function parseArgs(argv) {
@@ -1,6 +1,6 @@
1
- import { r as registerTeamsTools } from '../tools-B_W7xJNh.mjs';
2
- import { r as registerAutomationTools, a as registerProjectTools, b as registerReportProgressTool } from '../reportProgressTool-irHR-XEW.mjs';
3
- import { r as registerSessionPeerTools } from '../peerTools-CyruQrOo.mjs';
1
+ import { r as registerTeamsTools } from '../tools-BOWazSD6.mjs';
2
+ import { r as registerAutomationTools, a as registerProjectTools, b as registerReportProgressTool } from '../reportProgressTool-DUEq3xAL.mjs';
3
+ import { r as registerSessionPeerTools } from '../peerTools-2_8Bw9PU.mjs';
4
4
  import { P as PREVIEW_TOOL_NAME, a as PREVIEW_TOOL_TITLE, b as PREVIEW_TOOL_DESCRIPTION, c as PREVIEW_DOWNLOAD_PARAM_DESCRIPTION, R as REPORT_PROGRESS_TOOL_NAME } from '../agentGuidance-BDYt2Qy2.mjs';
5
5
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
6
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
@@ -8,36 +8,36 @@ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
8
8
  import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
9
9
  import { z } from 'zod';
10
10
  import { C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION } from '../limits-DIo7rEBR.mjs';
11
- import '../client-D8p1YjVt.mjs';
11
+ import '../client-qJ0y8fus.mjs';
12
12
  import 'node:crypto';
13
13
  import 'node:child_process';
14
14
  import 'node:util';
15
15
  import 'node:path';
16
- import '../index-B9f1vKcC.mjs';
16
+ import '../index-WKyN-bNy.mjs';
17
17
  import '@paralleldrive/cuid2';
18
- import '../configuration-8EAa2X9P.mjs';
18
+ import '../configuration-BZHpFD7K.mjs';
19
19
  import 'node:fs';
20
20
  import 'node:os';
21
- import '../package-BMBwnCn3.mjs';
21
+ import '../package-CwB8rFJt.mjs';
22
22
  import 'node:fs/promises';
23
- import '../persistence-C7T3HYjq.mjs';
23
+ import '../persistence-Bn4qEbDg.mjs';
24
24
  import '../authRelay-DhQhkBvX.mjs';
25
25
  import 'tweetnacl';
26
- import '../logger-SAU4uSs4.mjs';
26
+ import '../logger-RpzJ4d8V.mjs';
27
27
  import 'chalk';
28
- import '../context-B-jybQhf.mjs';
29
- import '../client-Zqg7DXHl.mjs';
28
+ import '../context-t7YV0aZc.mjs';
29
+ import '../client-DcDE6Ifk.mjs';
30
30
  import '../precheckCompat-DeEbilbr.mjs';
31
- import '../client-C8w9aQYe.mjs';
31
+ import '../client-DWws_aQK.mjs';
32
32
  import '../prompt-QHuFx9j6.mjs';
33
33
  import '../ids-DU6sLx4C.mjs';
34
- import '../controlClient-O-vf2MkJ.mjs';
35
- import '../sessionOps-CiFjBCMa.mjs';
34
+ import '../controlClient-Bw56NIrj.mjs';
35
+ import '../sessionOps-CYjMT7Ad.mjs';
36
36
  import 'axios';
37
- import '../time-DjS5me2q.mjs';
37
+ import '../time-umG7yHkb.mjs';
38
38
  import 'socket.io-client';
39
39
  import '../backgroundTaskActivity-8PdPxrvy.mjs';
40
- import '../remoteSessionClient-D3XhN_sd.mjs';
40
+ import '../remoteSessionClient-uPj7omsw.mjs';
41
41
  import '../trimIdent-BAjmv_TG.mjs';
42
42
 
43
43
  function parseArgs(argv) {
@@ -1,11 +1,11 @@
1
1
  import { execSync } from 'node:child_process';
2
2
  import { spawn } from 'cross-spawn';
3
3
  import { createInterface } from 'node:readline';
4
- import { l as logger } from './logger-SAU4uSs4.mjs';
4
+ import { l as logger } from './logger-RpzJ4d8V.mjs';
5
5
  import { e as errorLogMetadata, c as contentLogMetadata } from './contentLogMetadata-BlWI0egu.mjs';
6
6
  import { i as initializeSandbox, w as wrapForMcpTransport } from './manager-BEsI4qt3.mjs';
7
- import { p as packageJson } from './package-BMBwnCn3.mjs';
8
- import { s as shouldReadCodexRateLimits, i as isUnsupportedCodexMethodError } from './rateLimitWindows-B6IAWYN5.mjs';
7
+ import { p as packageJson } from './package-CwB8rFJt.mjs';
8
+ import { s as shouldReadCodexRateLimits, i as isUnsupportedCodexMethodError } from './rateLimitWindows-CQ4tIQnx.mjs';
9
9
  import { s as stopProcessGracefully, k as killProcessTree } from './processTree-CP5IvQ2Z.mjs';
10
10
 
11
11
  const CODEX_HELPER_LABEL_MAX_CHARS = 80;
@@ -140,6 +140,8 @@ class CodexAppServerClient {
140
140
  completedTurnIds = /* @__PURE__ */ new Set();
141
141
  /** B-625: turns whose failure has already been forwarded, so a second failed frame is not. */
142
142
  failedTurnIds = /* @__PURE__ */ new Set();
143
+ /** The turn the last pending completion was resolved for (runTurnAndWait reads its verdict). */
144
+ lastResolvedTurnId = null;
143
145
  // B-625: the app-server speaks for every thread it hosts — the session's own and the
144
146
  // children `spawn_agent` opens — so a lifecycle frame (turn/started, turn/completed,
145
147
  // thread/status/changed, error, thread/closed) is the session's only when its `threadId`
@@ -858,6 +860,7 @@ ${text}`.slice(-400);
858
860
  }
859
861
  resolvePendingTurn(aborted) {
860
862
  if (!this.pendingTurnCompletion) return;
863
+ this.lastResolvedTurnId = this.pendingTurnCompletion.turnId;
861
864
  this.clearTurnWatchdog();
862
865
  this.clearThreadStopGrace();
863
866
  this.pendingTurnCompletion.resolve(aborted);
@@ -992,6 +995,7 @@ ${text}`.slice(-400);
992
995
  );
993
996
  return;
994
997
  }
998
+ if (!pending.turnId && turnId) pending.turnId = turnId;
995
999
  this.resolvePendingTurn(aborted);
996
1000
  }
997
1001
  async waitForTurnCompletion(timeoutMs) {
@@ -1091,6 +1095,24 @@ ${text}`.slice(-400);
1091
1095
  * Returns { aborted: true } if the turn was aborted (user cancel, permission reject, etc.).
1092
1096
  */
1093
1097
  async sendTurnAndWait(prompt, opts) {
1098
+ const { aborted } = await this.runTurnAndWait(() => this.sendTurn(prompt, opts), opts);
1099
+ return { aborted };
1100
+ }
1101
+ /**
1102
+ * `/compact`: Codex compacts the thread in a turn of its own
1103
+ * (`thread/compact/start` answers `{}`, then `turn/started` →
1104
+ * `contextCompaction` item → `turn/completed`, probed on codex-cli 0.154).
1105
+ * Waits for that turn like any other; `failed` is the turn's own verdict.
1106
+ */
1107
+ async compactThreadAndWait(opts) {
1108
+ return this.runTurnAndWait(async () => {
1109
+ if (!this._threadId) {
1110
+ throw new Error("No active thread. Call startThread first.");
1111
+ }
1112
+ await this.request("thread/compact/start", { threadId: this._threadId });
1113
+ }, opts);
1114
+ }
1115
+ async runTurnAndWait(start, opts) {
1094
1116
  if (this.pendingInterrupt) {
1095
1117
  await this.pendingInterrupt;
1096
1118
  await new Promise((resolve) => setTimeout(resolve, 0));
@@ -1108,7 +1130,7 @@ ${text}`.slice(-400);
1108
1130
  this.armTurnWatchdog(timeoutMs);
1109
1131
  });
1110
1132
  try {
1111
- await this.sendTurn(prompt, opts);
1133
+ await start();
1112
1134
  } catch (err) {
1113
1135
  this.clearTurnWatchdog();
1114
1136
  this.pendingTurnCompletion = null;
@@ -1117,7 +1139,8 @@ ${text}`.slice(-400);
1117
1139
  }
1118
1140
  const aborted = await completion;
1119
1141
  this.clearTurnWatchdog();
1120
- return { aborted };
1142
+ const turnId = this.lastResolvedTurnId;
1143
+ return { aborted, failed: turnId !== null && this.failedTurnIds.has(turnId) };
1121
1144
  }
1122
1145
  armTurnWatchdog(timeoutMs) {
1123
1146
  this.clearTurnWatchdog();
@@ -1208,6 +1231,17 @@ ${text}`.slice(-400);
1208
1231
  } while (cursor);
1209
1232
  return models;
1210
1233
  }
1234
+ /**
1235
+ * B-844: the model Codex's effective configuration pins (config.toml,
1236
+ * profile, CLI overrides) via `config/read`; null = nothing pinned.
1237
+ * Throws when this Codex has no `config/read` — the caller then reports
1238
+ * nothing (unknown) and the web sends no model.
1239
+ */
1240
+ async readConfiguredModel(cwd) {
1241
+ const response = await this.request("config/read", { cwd }, 1e4);
1242
+ const model = response?.config?.model;
1243
+ return typeof model === "string" && model.trim() ? model.trim() : null;
1244
+ }
1211
1245
  request(method, params, timeoutMs) {
1212
1246
  const timeout = timeoutMs ?? CodexAppServerClient.REQUEST_TIMEOUT_MS;
1213
1247
  return new Promise((resolve, reject) => {
@@ -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-BILSzq2s.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-Bbfq2KR7.cjs');
10
- var rateLimitWindows = require('./rateLimitWindows-bfwC81Z-.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) => {