very-happy-cli 0.2.194 → 0.2.195

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 (208) hide show
  1. package/dist/{AcpBackend-C3Kx0QJb.mjs → AcpBackend-BTIF87yb.mjs} +3 -3
  2. package/dist/{AcpBackend-DJzsue14.cjs → AcpBackend-CXSV6FF5.cjs} +3 -3
  3. package/dist/{AcpSessionManager-Bc3iafB1.cjs → AcpSessionManager-BbWODxSp.cjs} +2 -2
  4. package/dist/{AcpSessionManager-SteuoqMY.mjs → AcpSessionManager-CEpU_GVk.mjs} +2 -2
  5. package/dist/{BasePermissionHandler-D2pNcAXn.mjs → BasePermissionHandler-B5ka7Aaf.mjs} +1 -1
  6. package/dist/{BasePermissionHandler-DKzNFVCh.cjs → BasePermissionHandler-C6iF28Ct.cjs} +1 -1
  7. package/dist/{account-ByVjlvFj.cjs → account-Bvcdk9CH.cjs} +11 -11
  8. package/dist/{account-DC2YyU24.mjs → account-WSJcdMGl.mjs} +11 -11
  9. package/dist/{accountService-Cd7bnkfd.mjs → accountService-BtEgv0fC.mjs} +4 -4
  10. package/dist/{accountService-CuUSJDhP.cjs → accountService-DL6xhVUa.cjs} +4 -4
  11. package/dist/{acpSessionResume-DHHgbNnk.cjs → acpSessionResume-B2hd1Wub.cjs} +1 -1
  12. package/dist/{acpSessionResume-B6VClxKQ.mjs → acpSessionResume-BYMm4w8Q.mjs} +1 -1
  13. package/dist/{agentHome-Bov1aHYS.cjs → agentHome-CVM15_3U.cjs} +4 -4
  14. package/dist/{agentHome-9caXwo7k.mjs → agentHome-Jl8yWAjF.mjs} +4 -4
  15. package/dist/{api-aE60mNjs.mjs → api-DOzNOoVJ.mjs} +10 -10
  16. package/dist/{api-wYwQCJml.cjs → api-TpjZJXV-.cjs} +10 -10
  17. package/dist/{apiMachine-DwaqfM9Q.cjs → apiMachine-COkvJAmd.cjs} +18 -18
  18. package/dist/{apiMachine-CvNB38Xg.mjs → apiMachine-M-Fs9g5Y.mjs} +18 -18
  19. package/dist/{attachmentContent-DB8ZsxGE.cjs → attachmentContent-BiBOjTXX.cjs} +2 -2
  20. package/dist/{attachmentContent-C2ymY_-w.mjs → attachmentContent-D6PjMVDq.mjs} +2 -2
  21. package/dist/{auth-Bce0Zk3q.cjs → auth-BOceB8cL.cjs} +8 -8
  22. package/dist/{auth-BYtmGgE1.mjs → auth-BfHLe1gU.mjs} +8 -8
  23. package/dist/{auth-CWO6cQ4G.mjs → auth-Bfe3Ue_B.mjs} +5 -5
  24. package/dist/{auth-boIcb7iq.cjs → auth-DfcdjMUp.cjs} +5 -5
  25. package/dist/{auto-B-kopWQx.mjs → auto-CDeivd5V.mjs} +17 -17
  26. package/dist/{auto-AaggdihK.cjs → auto-CnTitokD.cjs} +17 -17
  27. package/dist/{bootstrap-CiWwfHB2.mjs → bootstrap-BxcKrgR9.mjs} +2 -2
  28. package/dist/{bootstrap-kywZ0tvD.cjs → bootstrap-DpyP22Wx.cjs} +2 -2
  29. package/dist/{browser-CFfZM3yg.mjs → browser-Bb0Gqffc.mjs} +1 -1
  30. package/dist/{browser-Do2MFdq6.cjs → browser-ac0aPrVE.cjs} +1 -1
  31. package/dist/{claudeAccountEnv-BL1pR_37.mjs → claudeAccountEnv-NyoxjLuJ.mjs} +1 -1
  32. package/dist/{claudeAccountEnv-CEX_EMZr.cjs → claudeAccountEnv-_O3x5AJ1.cjs} +1 -1
  33. package/dist/{claudeLocal-DLd8ogcH.cjs → claudeLocal-RGWhplSr.cjs} +5 -5
  34. package/dist/{claudeLocal-B47NjZfB.mjs → claudeLocal-otwxWF6e.mjs} +5 -5
  35. package/dist/{claudeLocalLauncher-5DDuHpCD.mjs → claudeLocalLauncher-CTibA4cU.mjs} +10 -10
  36. package/dist/{claudeLocalLauncher-D_UTQ4o_.cjs → claudeLocalLauncher-yG-MBhY7.cjs} +10 -10
  37. package/dist/{claudeSessionFork-4g6-Sk3Q.cjs → claudeSessionFork-DH_Su4uO.cjs} +1 -1
  38. package/dist/{claudeSessionFork-BrJTncNL.mjs → claudeSessionFork-HFFwivGY.mjs} +1 -1
  39. package/dist/{client-DS5JEsHs.mjs → client-BhAjEv8Z.mjs} +4 -4
  40. package/dist/{client-BIg2LPVx.cjs → client-BlV73Gbw.cjs} +2 -2
  41. package/dist/{client-Cbxr9VUE.mjs → client-CydHzidF.mjs} +2 -2
  42. package/dist/{client-CsfPUxLy.cjs → client-DcXLNaF2.cjs} +2 -2
  43. package/dist/{client-OjYRPhZs.mjs → client-DpTk1S7C.mjs} +2 -2
  44. package/dist/{client-BfDga3xi.cjs → client-DxjYsJ8d.cjs} +4 -4
  45. package/dist/codex/happyMcpStdioBridge.cjs +16 -16
  46. package/dist/codex/happyMcpStdioBridge.mjs +16 -16
  47. package/dist/{codexAccount-NOX5pmQf.mjs → codexAccount-CKXpXq0B.mjs} +1 -1
  48. package/dist/{codexAccount-BDQjRbtI.cjs → codexAccount-CYhQir50.cjs} +1 -1
  49. package/dist/{codexAppServerClient-Bj5vN7sb.cjs → codexAppServerClient-C1xBSuVk.cjs} +60 -3
  50. package/dist/{codexAppServerClient-HKAm8f_D.mjs → codexAppServerClient-mln0W8vT.mjs} +60 -3
  51. package/dist/{codexCommand-655pR6CR.mjs → codexCommand-CmWhYduF.mjs} +136 -47
  52. package/dist/{codexCommand-DtbDjHZp.cjs → codexCommand-Plm-_aRy.cjs} +137 -48
  53. package/dist/{codexTermination-CX_FHKT5.cjs → codexTermination-C9c80lIF.cjs} +1 -1
  54. package/dist/{codexTermination-DxLR-bb5.mjs → codexTermination-QltAvFpq.mjs} +1 -1
  55. package/dist/{config-Cv-A-Bw0.cjs → config-BH75enfT.cjs} +3 -3
  56. package/dist/{config-CIvXVGlP.mjs → config-DK27kWTT.mjs} +3 -3
  57. package/dist/{configuration-2Pbg3a0H.cjs → configuration-CKaq0tNe.cjs} +1 -1
  58. package/dist/{configuration-rTcdHkhE.mjs → configuration-CwfgJZKs.mjs} +1 -1
  59. package/dist/{connect-BAYNAE8A.cjs → connect-_QkCFMxO.cjs} +13 -13
  60. package/dist/{connect-B9Bl68PF.mjs → connect-h3_VMJst.mjs} +13 -13
  61. package/dist/{context-CLTyu_tQ.cjs → context-DbENnaVc.cjs} +1 -1
  62. package/dist/{context-C7QarZMk.mjs → context-DcOpvIiR.mjs} +1 -1
  63. package/dist/{controlClient-CIqHL07h.cjs → controlClient-D_HIbnnS.cjs} +3 -3
  64. package/dist/{controlClient-BIdGnYBo.mjs → controlClient-Dv6IvvUq.mjs} +4 -4
  65. package/dist/{createSessionMetadata-BHjzRzPc.cjs → createSessionMetadata-CusO22Am.cjs} +2 -2
  66. package/dist/{createSessionMetadata-PrN-dT7K.mjs → createSessionMetadata-DimBsfVG.mjs} +2 -2
  67. package/dist/{daemonAccounts-CpGDY_4k.cjs → daemonAccounts-CxMJw7x2.cjs} +2 -2
  68. package/dist/{daemonAccounts-DwPwKxvv.mjs → daemonAccounts-QT-RDDEp.mjs} +3 -3
  69. package/dist/{defaultPermissionMode-DF5AfeBb.mjs → defaultPermissionMode-B-Vt8ECY.mjs} +1 -1
  70. package/dist/{defaultPermissionMode-BakXiqRr.cjs → defaultPermissionMode-BCWCMONI.cjs} +1 -1
  71. package/dist/{deterministicJson-ZBFn1jtS.cjs → deterministicJson-BYqRKTmL.cjs} +13 -13
  72. package/dist/{deterministicJson-DFwJ57jR.mjs → deterministicJson-CMApF2Rl.mjs} +13 -13
  73. package/dist/{doctor-CFYpAXvt.mjs → doctor-BkyoZ0Uw.mjs} +7 -7
  74. package/dist/{doctor-yyM-zii7.cjs → doctor-Czbl7gk2.cjs} +7 -7
  75. package/dist/{downloadTarget-DlmqPQp9.cjs → downloadTarget-C5BzZ_bz.cjs} +6 -6
  76. package/dist/{downloadTarget-CVPBZMnY.mjs → downloadTarget-CM0BZNSY.mjs} +6 -6
  77. package/dist/{ensureDaemonRunning-D2ny0yon.cjs → ensureDaemonRunning-D508DmcP.cjs} +5 -5
  78. package/dist/{ensureDaemonRunning-B6Y-CMWe.mjs → ensureDaemonRunning-P399ot_C.mjs} +5 -5
  79. package/dist/{handleResumeCommand-DlrDcV5B.mjs → handleResumeCommand-BK_2ShBf.mjs} +5 -5
  80. package/dist/{handleResumeCommand-D-mGugcu.cjs → handleResumeCommand-CCgK7-0v.cjs} +5 -5
  81. package/dist/{index-Bi3dVJ0S.mjs → index-BENDk1i9.mjs} +4 -4
  82. package/dist/{index-5c33fqLQ.cjs → index-BalJgriQ.cjs} +4 -4
  83. package/dist/{index-D1YnIih6.mjs → index-BlWyEpMw.mjs} +2 -1
  84. package/dist/{index-2Fcq3AGX.cjs → index-Bz9Bj7l1.cjs} +3 -3
  85. package/dist/{index-CPkSLWP_.cjs → index-CGKn-GTK.cjs} +4 -4
  86. package/dist/{index-BWvmUCQF.cjs → index-CSO1-mZ9.cjs} +42 -42
  87. package/dist/{index-BUFrKZeQ.cjs → index-D9Hidq-g.cjs} +2 -0
  88. package/dist/{index-DEN6vfEY.mjs → index-DR3NJLVk.mjs} +4 -4
  89. package/dist/{index-BJsenPFp.mjs → index-QSAckvNv.mjs} +3 -3
  90. package/dist/{index-DuDD9khO.mjs → index-_DRVKtSd.mjs} +43 -43
  91. package/dist/index.cjs +2 -2
  92. package/dist/index.mjs +2 -2
  93. package/dist/{install-BOA4nEbm.cjs → install-CqXaN7_C.cjs} +3 -3
  94. package/dist/{install-BVYL-wSO.mjs → install-DMTvEPrB.mjs} +3 -3
  95. package/dist/lib.cjs +12 -12
  96. package/dist/lib.mjs +12 -12
  97. package/dist/{lidState-DYeb7Wud.cjs → lidState-Btv4N_B8.cjs} +1 -1
  98. package/dist/{lidState-zy20u7T3.mjs → lidState-Cb3TbhPb.mjs} +1 -1
  99. package/dist/{localHappyAgentAuth-CScN2McN.cjs → localHappyAgentAuth-B3Q5DNLR.cjs} +1 -1
  100. package/dist/{localHappyAgentAuth-CBsX08VJ.mjs → localHappyAgentAuth-CAAIUJyY.mjs} +1 -1
  101. package/dist/{logger-CepF8C5Z.cjs → logger-BZ5TcbEh.cjs} +2 -2
  102. package/dist/{logger-SGCwRIV5.mjs → logger-UgDpJA2u.mjs} +2 -2
  103. package/dist/{machineMetadata-ClJfd7ay.mjs → machineMetadata-BYHC-3Vx.mjs} +3 -3
  104. package/dist/{machineMetadata-ObK4hjF0.cjs → machineMetadata-DLb-m4fL.cjs} +3 -3
  105. package/dist/{main-C7ZcZVBY.mjs → main-CwW6lHIw.mjs} +47 -47
  106. package/dist/{main-mhXOpUV7.cjs → main-LavPb80B.cjs} +47 -47
  107. package/dist/{mcp-Zz7m0j8A.cjs → mcp-BQbWhqUh.cjs} +18 -18
  108. package/dist/{mcp-BuCpkYTY.mjs → mcp-BjYz5Ymf.mjs} +18 -18
  109. package/dist/{mirrorProtocol-B0H9UTBM.mjs → mirrorProtocol-BH5eT99U.mjs} +3 -3
  110. package/dist/{mirrorProtocol-IhICxf0K.cjs → mirrorProtocol-Ci9YmCEV.cjs} +3 -3
  111. package/dist/{package-C7WgesIw.cjs → package-B61-BBlh.cjs} +7 -7
  112. package/dist/{package-Q_ELj5DL.mjs → package-C4OfB2YF.mjs} +7 -7
  113. package/dist/{panels-yyxpwZnk.cjs → panels-ByprLJag.cjs} +5 -5
  114. package/dist/{panels-Cm69UXgE.mjs → panels-cBJT5Up1.mjs} +5 -5
  115. package/dist/{peerTools-BcZAbqBL.cjs → peerTools-BXSjS8lB.cjs} +5 -5
  116. package/dist/{peerTools-DUg9RduG.mjs → peerTools-DS6GqJcn.mjs} +5 -5
  117. package/dist/{persistence-mr4Y484W.mjs → persistence-CQhmtobL.mjs} +2 -2
  118. package/dist/{persistence-D0gNvqXe.cjs → persistence-DBmeYlwT.cjs} +2 -2
  119. package/dist/{piRunnerArgs-DK_DDkYW.cjs → piRunnerArgs-CmEE058l.cjs} +1 -1
  120. package/dist/{piRunnerArgs-CGjpl4iF.mjs → piRunnerArgs-Dy-3vN_Q.mjs} +1 -1
  121. package/dist/{piRuntime-CtZRNOEb.cjs → piRuntime-BCXjC4__.cjs} +1 -1
  122. package/dist/{piRuntime-HUA19wG8.mjs → piRuntime-Rq9v4M4e.mjs} +1 -1
  123. package/dist/{piTerminal-Bgy1W9mA.mjs → piTerminal-CRhDUqX7.mjs} +20 -20
  124. package/dist/{piTerminal-D9OPouek.cjs → piTerminal-ehNQOvLL.cjs} +20 -20
  125. package/dist/{pushNotifications-DjEl8G0a.mjs → pushNotifications-67GmbVfE.mjs} +3 -3
  126. package/dist/{pushNotifications-CH0XVPQe.cjs → pushNotifications-qCS7_tDF.cjs} +3 -3
  127. package/dist/{query-Df3WhSA0.cjs → query-B4QIiI7e.cjs} +1 -1
  128. package/dist/{query-DmIo5OXf.mjs → query-CIDBGnv6.mjs} +1 -1
  129. package/dist/{rateLimitWindows-a2yE3kCv.mjs → rateLimitWindows-8-khalzj.mjs} +1 -1
  130. package/dist/{rateLimitWindows-B9PERFm1.cjs → rateLimitWindows-BIfLMxOk.cjs} +1 -1
  131. package/dist/{registerCommonHandlers-CND00Dpj.mjs → registerCommonHandlers-C7hlztAO.mjs} +2 -2
  132. package/dist/{registerCommonHandlers-D4uXC0he.cjs → registerCommonHandlers-G2p0MJu4.cjs} +2 -2
  133. package/dist/{registerKillSessionHandler-DQKsD9CW.cjs → registerKillSessionHandler-BWvl6wro.cjs} +6 -6
  134. package/dist/{registerKillSessionHandler-CwyHwm_n.mjs → registerKillSessionHandler-rwXdO0t0.mjs} +6 -6
  135. package/dist/registerSideQuestionHandler-CsyPnjce.cjs +366 -0
  136. package/dist/registerSideQuestionHandler-Xg46gSVh.mjs +358 -0
  137. package/dist/{remoteSessionClient-DOWgca08.cjs → remoteSessionClient-D6_7vNKc.cjs} +5 -5
  138. package/dist/{remoteSessionClient-mIr_9OL_.mjs → remoteSessionClient-DQSnC7ox.mjs} +5 -5
  139. package/dist/{reportProgressTool-BLw2_Ohi.cjs → reportProgressTool-CIHGKraF.cjs} +3 -3
  140. package/dist/{reportProgressTool-DTKlUlHv.mjs → reportProgressTool-HjzV5y_2.mjs} +3 -3
  141. package/dist/{run-bfxXYL5N.mjs → run-M06F1958.mjs} +40 -40
  142. package/dist/{run-1V6DLzTY.cjs → run-tQ4bFkHu.cjs} +40 -40
  143. package/dist/{runClaude-DuFgZZwO.cjs → runClaude-Ct0_mShC.cjs} +28 -26
  144. package/dist/{runClaude-BgvDhl2p.mjs → runClaude-Dm9kQZ-w.mjs} +28 -26
  145. package/dist/{runClaudeDeps-DeVinBmE.cjs → runClaudeDeps-BT2kWCrQ.cjs} +44 -333
  146. package/dist/{runClaudeDeps-CX7GtH7O.mjs → runClaudeDeps-DNOzXjc3.mjs} +47 -336
  147. package/dist/{runGemini-Cd27u-7R.mjs → runGemini-BvN-yeQR.mjs} +33 -33
  148. package/dist/{runGemini-DiYSk3s1.cjs → runGemini-cua7_iuR.cjs} +33 -33
  149. package/dist/{runOpenClaw-CWkkfRSo.mjs → runOpenClaw-C9E2XzmX.mjs} +18 -18
  150. package/dist/{runOpenClaw-DyQnBzpy.cjs → runOpenClaw-NpYFRhKm.cjs} +18 -18
  151. package/dist/{sandbox-C35zDrkc.mjs → sandbox-C-BXZbt9.mjs} +4 -4
  152. package/dist/{sandbox-BAXXYewR.cjs → sandbox-hImfD0-T.cjs} +4 -4
  153. package/dist/{selfCheck-R71q-x7u.cjs → selfCheck-B3ulijQM.cjs} +39 -39
  154. package/dist/selfCheck-D-e9kVhc.mjs +88 -0
  155. package/dist/{send-3Wa9th3D.cjs → send-BCVQkTOl.cjs} +8 -8
  156. package/dist/{send-DiSaR5Bk.mjs → send-Dv2L8IRW.mjs} +8 -8
  157. package/dist/{server-BxMJxaE6.mjs → server-BBBfuSB-.mjs} +4 -4
  158. package/dist/{server-BJu2bFBy.cjs → server-DYxyCyYF.cjs} +6 -6
  159. package/dist/{sessionLock-BJ1ngLgm.cjs → sessionLock-B8fsnpZD.cjs} +3 -3
  160. package/dist/{sessionLock-dbi4JPhP.mjs → sessionLock-BexUoWhZ.mjs} +3 -3
  161. package/dist/{sessionOps-BUlpeaUe.cjs → sessionOps-74pSDXoS.cjs} +4 -4
  162. package/dist/{sessionOps-C9wRmCBg.mjs → sessionOps-BkEgNA2O.mjs} +4 -4
  163. package/dist/{sessionProvider-DYD6JepE.cjs → sessionProvider-CWgHsZUA.cjs} +10 -10
  164. package/dist/{sessionProvider-BEHfI5gs.mjs → sessionProvider-DXkhlJE6.mjs} +10 -10
  165. package/dist/{sessionScanner-BwbjEoSf.cjs → sessionScanner-D56EkcIj.cjs} +3 -3
  166. package/dist/{sessionScanner-CFITViIZ.mjs → sessionScanner-Dhh1wREW.mjs} +3 -3
  167. package/dist/{sessions-C-wBd0fN.cjs → sessions-C1zRTjUe.cjs} +10 -10
  168. package/dist/{sessions-wOcO2X-k.mjs → sessions-dJR6k3JY.mjs} +10 -10
  169. package/dist/{setupOfflineReconnection-Bd6XsWhA.cjs → setupOfflineReconnection-CMUdHtFT.cjs} +2 -2
  170. package/dist/{setupOfflineReconnection-BrljmbqX.mjs → setupOfflineReconnection-Dp1rC-eP.mjs} +2 -2
  171. package/dist/{spawn-BPioepNz.mjs → spawn-D3-Weoiq.mjs} +14 -14
  172. package/dist/{spawn-Crprnq9Z.cjs → spawn-kMKI09Kh.cjs} +14 -14
  173. package/dist/{spawnAgents-B9olJ8xn.cjs → spawnAgents-Cm23BW-D.cjs} +1 -1
  174. package/dist/{spawnAgents-I29H9nO8.mjs → spawnAgents-hKFGQaSJ.mjs} +1 -1
  175. package/dist/{spawnHappyCLI-BA1bTIiO.mjs → spawnHappyCLI-CgjpjSTT.mjs} +1 -1
  176. package/dist/{spawnHappyCLI-C0XAWy8V.cjs → spawnHappyCLI-Du1IgJGA.cjs} +1 -1
  177. package/dist/{startFileWatcher-Ca5izs24.cjs → startFileWatcher-DGOnF95-.cjs} +1 -1
  178. package/dist/{startFileWatcher-COCEjNT8.mjs → startFileWatcher-DapvIGxp.mjs} +1 -1
  179. package/dist/{startupSessionCreate-BnEPBxsJ.mjs → startupSessionCreate-CSi60oo_.mjs} +3 -3
  180. package/dist/{startupSessionCreate-Cmg1gkKS.cjs → startupSessionCreate-rkIMVGJW.cjs} +3 -3
  181. package/dist/{store-Vej_738f.mjs → store-Tf-r1ouq.mjs} +1 -1
  182. package/dist/{store-CkNa6oj4.cjs → store-aa3CVNwS.cjs} +1 -1
  183. package/dist/{streamRelay-C0G1HOOd.cjs → streamRelay-C2Lb2z39.cjs} +1 -1
  184. package/dist/{streamRelay-C5U-C4GS.mjs → streamRelay-C9lzMo0V.mjs} +1 -1
  185. package/dist/{sync-BfrnSdL1.cjs → sync-Cj8Vhltg.cjs} +1 -1
  186. package/dist/{sync-DVcNkv8e.mjs → sync-GJkf-HGu.mjs} +1 -1
  187. package/dist/{systemPrompt-BxZebU75.mjs → systemPrompt-BEagRbDZ.mjs} +2 -2
  188. package/dist/{systemPrompt-Os5ca7pu.cjs → systemPrompt-Cne9i1SE.cjs} +2 -2
  189. package/dist/{teams-CNB3DE_n.mjs → teams-C_18IMNM.mjs} +7 -7
  190. package/dist/{teams--pv0QFMA.cjs → teams-ClTg6hQ1.cjs} +7 -7
  191. package/dist/{template-B9pLEP8v.cjs → template-B1AORlgU.cjs} +1 -1
  192. package/dist/{template-CL9EvQLQ.mjs → template-Ci-cyigF.mjs} +1 -1
  193. package/dist/{time-Da5GIiCa.cjs → time-BPPTQ_sE.cjs} +1 -1
  194. package/dist/{time-0Ru4clBD.mjs → time-CIkdLyza.mjs} +1 -1
  195. package/dist/{titleGenerator-9xIXHA5K.cjs → titleGenerator-B_OgL9Pd.cjs} +3 -3
  196. package/dist/{titleGenerator-CaCzpYyA.mjs → titleGenerator-DnwTdTB_.mjs} +2 -2
  197. package/dist/{todo-DUY_J3l_.cjs → todo-DPQHtZVM.cjs} +6 -6
  198. package/dist/{todo-CZXHl2Lg.mjs → todo-DmHolFRy.mjs} +6 -6
  199. package/dist/{tools-hPD2Hvei.cjs → tools-B3KGMSU5.cjs} +1 -1
  200. package/dist/{tools-DqA2Jt2R.mjs → tools-DqjPHq9I.mjs} +1 -1
  201. package/dist/{uninstall-CjMzELYw.mjs → uninstall-Cm97eybp.mjs} +3 -3
  202. package/dist/{uninstall-rTvdpRLt.cjs → uninstall-CrK5dgx8.cjs} +3 -3
  203. package/dist/{wrapperAccount-D2A4DuZy.cjs → wrapperAccount-BubTurHU.cjs} +2 -2
  204. package/dist/{wrapperAccount-BkufO_9g.mjs → wrapperAccount-Cq7eZRMx.mjs} +2 -2
  205. package/package.json +7 -7
  206. package/dist/rateLimitReporter-B_PZClib.mjs +0 -42
  207. package/dist/rateLimitReporter-M_IKRRS7.cjs +0 -44
  208. package/dist/selfCheck-DKMF0Dyu.mjs +0 -88
@@ -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-CepF8C5Z.cjs');
6
+ var logger = require('./logger-BZ5TcbEh.cjs');
7
7
  var contentLogMetadata = require('./contentLogMetadata-ZSFk_NjQ.cjs');
8
8
  var manager = require('./manager-HrEj442o.cjs');
9
- var _package = require('./package-C7WgesIw.cjs');
10
- var rateLimitWindows = require('./rateLimitWindows-B9PERFm1.cjs');
9
+ var _package = require('./package-B61-BBlh.cjs');
10
+ var rateLimitWindows = require('./rateLimitWindows-BIfLMxOk.cjs');
11
11
  var processTree = require('./processTree-CMHWlVse.cjs');
12
12
 
13
13
  const CODEX_HELPER_LABEL_MAX_CHARS = 80;
@@ -191,6 +191,7 @@ class CodexAppServerClient {
191
191
  static MAX_CHILD_LABELS = 128;
192
192
  // Handlers set by the consumer (runCodex.ts)
193
193
  eventHandler = null;
194
+ rawNotificationListeners = /* @__PURE__ */ new Set();
194
195
  approvalHandler = null;
195
196
  // B-555: subscription rate-limit snapshots (sparse notifications + throttled reads).
196
197
  rateLimitHandler = null;
@@ -868,6 +869,55 @@ ${text}`.slice(-400);
868
869
  };
869
870
  return await this.request("thread/inject_items", params);
870
871
  }
872
+ // ─── B-861 side questions ───────────────────────────────────
873
+ // A side client (its own app-server process) drives a throwaway thread
874
+ // with these; none of them touch `_threadId` / `_turnId`, so the client's
875
+ // turn tracking and reconnect-resume stay out of it.
876
+ /** Every app-server notification, raw. Returns the unsubscribe. */
877
+ onRawNotification(listener) {
878
+ this.rawNotificationListeners.add(listener);
879
+ return () => {
880
+ this.rawNotificationListeners.delete(listener);
881
+ };
882
+ }
883
+ /**
884
+ * An ephemeral (never persisted) thread for one side question. With
885
+ * `sourceThreadId`: `thread/fork` of the main thread — Codex 0.154 forks a
886
+ * running thread from a second app-server with the turn in flight as
887
+ * `interrupted`, and writes nothing to the source rollout
888
+ * (vh-team-B-861/codex-probe1.log). `excludeTurns` is required for an
889
+ * ephemeral fork of a paginated thread. Read-only sandbox, approval never.
890
+ */
891
+ async openSideThread(opts) {
892
+ await this.ensureConnected();
893
+ const common = {
894
+ model: opts.model ?? null,
895
+ modelProvider: this.accountOverrides.modelProvider ?? null,
896
+ cwd: opts.cwd,
897
+ approvalPolicy: "never",
898
+ sandbox: "read-only",
899
+ config: { ...this.accountOverrides.config, "features.hooks": false },
900
+ baseInstructions: null,
901
+ developerInstructions: opts.developerInstructions,
902
+ ephemeral: true,
903
+ persistExtendedHistory: false
904
+ };
905
+ const result = opts.sourceThreadId ? await this.request("thread/fork", { ...common, threadId: opts.sourceThreadId, excludeTurns: true, threadSource: null }) : await this.request("thread/start", { ...common, profile: null, compactPrompt: null, includeApplyPatchTool: false, experimentalRawEvents: false });
906
+ return { threadId: result.thread.id };
907
+ }
908
+ /** `turn/start` on a side thread; resolves with the turn id once accepted. */
909
+ async startSideTurn(threadId, text) {
910
+ const result = await this.request("turn/start", {
911
+ threadId,
912
+ input: [{ type: "text", text }],
913
+ approvalPolicy: "never",
914
+ sandboxPolicy: { type: "readOnly" }
915
+ });
916
+ return typeof result?.turn?.id === "string" ? result.turn.id : null;
917
+ }
918
+ async interruptSideTurn(threadId, turnId) {
919
+ await this.request("turn/interrupt", { threadId, turnId });
920
+ }
871
921
  async reconnectAndResumeThread() {
872
922
  const threadId = this._threadId;
873
923
  await this.disconnectInternal({ preserveThreadState: !!threadId });
@@ -1505,6 +1555,13 @@ ${text}`.slice(-400);
1505
1555
  }
1506
1556
  handleNotification(method, params) {
1507
1557
  this.touchTurnWatchdog();
1558
+ for (const listener of this.rawNotificationListeners) {
1559
+ try {
1560
+ listener(method, params);
1561
+ } catch (error) {
1562
+ logger.logger.debug("[CodexAppServer] raw notification listener failed", contentLogMetadata.errorLogMetadata(error));
1563
+ }
1564
+ }
1508
1565
  if (method === "codex/event" || method.startsWith("codex/event/")) {
1509
1566
  this.notificationProtocol = "legacy";
1510
1567
  const msg = params?.msg;
@@ -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-SGCwRIV5.mjs';
4
+ import { l as logger } from './logger-UgDpJA2u.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-Q_ELj5DL.mjs';
8
- import { s as shouldReadCodexRateLimits, i as isUnsupportedCodexMethodError } from './rateLimitWindows-a2yE3kCv.mjs';
7
+ import { p as packageJson } from './package-C4OfB2YF.mjs';
8
+ import { s as shouldReadCodexRateLimits, i as isUnsupportedCodexMethodError } from './rateLimitWindows-8-khalzj.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;
@@ -189,6 +189,7 @@ class CodexAppServerClient {
189
189
  static MAX_CHILD_LABELS = 128;
190
190
  // Handlers set by the consumer (runCodex.ts)
191
191
  eventHandler = null;
192
+ rawNotificationListeners = /* @__PURE__ */ new Set();
192
193
  approvalHandler = null;
193
194
  // B-555: subscription rate-limit snapshots (sparse notifications + throttled reads).
194
195
  rateLimitHandler = null;
@@ -866,6 +867,55 @@ ${text}`.slice(-400);
866
867
  };
867
868
  return await this.request("thread/inject_items", params);
868
869
  }
870
+ // ─── B-861 side questions ───────────────────────────────────
871
+ // A side client (its own app-server process) drives a throwaway thread
872
+ // with these; none of them touch `_threadId` / `_turnId`, so the client's
873
+ // turn tracking and reconnect-resume stay out of it.
874
+ /** Every app-server notification, raw. Returns the unsubscribe. */
875
+ onRawNotification(listener) {
876
+ this.rawNotificationListeners.add(listener);
877
+ return () => {
878
+ this.rawNotificationListeners.delete(listener);
879
+ };
880
+ }
881
+ /**
882
+ * An ephemeral (never persisted) thread for one side question. With
883
+ * `sourceThreadId`: `thread/fork` of the main thread — Codex 0.154 forks a
884
+ * running thread from a second app-server with the turn in flight as
885
+ * `interrupted`, and writes nothing to the source rollout
886
+ * (vh-team-B-861/codex-probe1.log). `excludeTurns` is required for an
887
+ * ephemeral fork of a paginated thread. Read-only sandbox, approval never.
888
+ */
889
+ async openSideThread(opts) {
890
+ await this.ensureConnected();
891
+ const common = {
892
+ model: opts.model ?? null,
893
+ modelProvider: this.accountOverrides.modelProvider ?? null,
894
+ cwd: opts.cwd,
895
+ approvalPolicy: "never",
896
+ sandbox: "read-only",
897
+ config: { ...this.accountOverrides.config, "features.hooks": false },
898
+ baseInstructions: null,
899
+ developerInstructions: opts.developerInstructions,
900
+ ephemeral: true,
901
+ persistExtendedHistory: false
902
+ };
903
+ const result = opts.sourceThreadId ? await this.request("thread/fork", { ...common, threadId: opts.sourceThreadId, excludeTurns: true, threadSource: null }) : await this.request("thread/start", { ...common, profile: null, compactPrompt: null, includeApplyPatchTool: false, experimentalRawEvents: false });
904
+ return { threadId: result.thread.id };
905
+ }
906
+ /** `turn/start` on a side thread; resolves with the turn id once accepted. */
907
+ async startSideTurn(threadId, text) {
908
+ const result = await this.request("turn/start", {
909
+ threadId,
910
+ input: [{ type: "text", text }],
911
+ approvalPolicy: "never",
912
+ sandboxPolicy: { type: "readOnly" }
913
+ });
914
+ return typeof result?.turn?.id === "string" ? result.turn.id : null;
915
+ }
916
+ async interruptSideTurn(threadId, turnId) {
917
+ await this.request("turn/interrupt", { threadId, turnId });
918
+ }
869
919
  async reconnectAndResumeThread() {
870
920
  const threadId = this._threadId;
871
921
  await this.disconnectInternal({ preserveThreadState: !!threadId });
@@ -1503,6 +1553,13 @@ ${text}`.slice(-400);
1503
1553
  }
1504
1554
  handleNotification(method, params) {
1505
1555
  this.touchTurnWatchdog();
1556
+ for (const listener of this.rawNotificationListeners) {
1557
+ try {
1558
+ listener(method, params);
1559
+ } catch (error) {
1560
+ logger.debug("[CodexAppServer] raw notification listener failed", errorLogMetadata(error));
1561
+ }
1562
+ }
1506
1563
  if (method === "codex/event" || method.startsWith("codex/event/")) {
1507
1564
  this.notificationProtocol = "legacy";
1508
1565
  const msg = params?.msg;
@@ -1,112 +1,112 @@
1
- import { a as authAndSetupMachineIfNeeded } from './auth-CWO6cQ4G.mjs';
2
- import { k as createEnvelope, w as BUILTIN_TODO_DISCOVERY, r as restoredEffort, o as readEffortIntent, Q as EFFORT_INTENT_AUTO, P as PROMPT_QUEUE_CAPABILITY, a5 as CODEX_STEER_CAPABILITY, a as PROJECT_SESSION_CAPABILITY, a6 as CODEX_COMPACT_CAPABILITY, R as RUN_INTENT_CAPABILITY, A as AGENT_PROFILE_SESSION_CAPABILITY } from './index-D1YnIih6.mjs';
3
- import { a as recordRunIntents, w as withoutEffort, r as registerRunIntentRpc, b as DEFAULT_CODEX_PERMISSION_MODE } from './defaultPermissionMode-DF5AfeBb.mjs';
4
- import { h as hashObject, s as startHappyServer, c as createProjectInjector } from './deterministicJson-DFwJ57jR.mjs';
5
- import { s as sharedProjectsClient } from './client-Cbxr9VUE.mjs';
1
+ import { a as authAndSetupMachineIfNeeded } from './auth-Bfe3Ue_B.mjs';
2
+ import { k as createEnvelope, w as BUILTIN_TODO_DISCOVERY, r as restoredEffort, o as readEffortIntent, Q as EFFORT_INTENT_AUTO, P as PROMPT_QUEUE_CAPABILITY, a5 as CODEX_STEER_CAPABILITY, a as PROJECT_SESSION_CAPABILITY, a6 as CODEX_COMPACT_CAPABILITY, R as RUN_INTENT_CAPABILITY, A as AGENT_PROFILE_SESSION_CAPABILITY, a7 as CODEX_BTW_CAPABILITY } from './index-BlWyEpMw.mjs';
3
+ import { a as recordRunIntents, w as withoutEffort, r as registerRunIntentRpc, b as DEFAULT_CODEX_PERMISSION_MODE } from './defaultPermissionMode-B-Vt8ECY.mjs';
4
+ import { h as hashObject, s as startHappyServer, c as createProjectInjector } from './deterministicJson-CMApF2Rl.mjs';
5
+ import { s as sharedProjectsClient } from './client-CydHzidF.mjs';
6
6
  import { unlink } from 'node:fs/promises';
7
7
  import { p as publishForkBackfillWhenCommitted, F as FORK_BACKFILL_CAPABILITY } from './forkBackfill-DYIjlN1Z.mjs';
8
8
  import { randomUUID } from 'node:crypto';
9
9
  import { createId } from '@paralleldrive/cuid2';
10
- import { t as textResultPayload, d as toolResultContentText, c as connectionState, A as ApiClient } from './api-aE60mNjs.mjs';
10
+ import { t as textResultPayload, d as toolResultContentText, c as connectionState, A as ApiClient } from './api-DOzNOoVJ.mjs';
11
11
  import { r as registerAgentAttachmentDownloads, H as HeldInput } from './heldInput-C69lA2dH.mjs';
12
- import { C as CLAUDE_ATTACHMENT_KINDS, a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt } from './attachmentContent-C2ymY_-w.mjs';
12
+ import { C as CLAUDE_ATTACHMENT_KINDS, a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt } from './attachmentContent-D6PjMVDq.mjs';
13
13
  import { useStdout, useInput, Box, Text, render } from 'ink';
14
- import { c as claimSessionOrExit, a as applyServerSnapshot, b as applyReconnectReplay, w as withoutServerSnapshot, m as mergeReconnectMetadata, t as takeAutoRestartedEvent, A as AUTO_RESTART_CAPABILITY, e as exitCursorStamp } from './sessionLock-dbi4JPhP.mjs';
14
+ import { c as claimSessionOrExit, a as applyServerSnapshot, b as applyReconnectReplay, w as withoutServerSnapshot, m as mergeReconnectMetadata, t as takeAutoRestartedEvent, A as AUTO_RESTART_CAPABILITY, e as exitCursorStamp } from './sessionLock-BexUoWhZ.mjs';
15
15
  import React, { useState, useRef, useEffect, useCallback } from 'react';
16
- import { C as CodexAppServerClient } from './codexAppServerClient-HKAm8f_D.mjs';
17
- import { w as wrapperRateLimitReporter } from './rateLimitReporter-B_PZClib.mjs';
18
- import { l as logger } from './logger-SGCwRIV5.mjs';
19
- import { B as BasePermissionHandler } from './BasePermissionHandler-D2pNcAXn.mjs';
20
- import { B as BaseReasoningProcessor, s as settleCodexSession } from './codexTermination-DxLR-bb5.mjs';
16
+ import { C as CodexAppServerClient } from './codexAppServerClient-mln0W8vT.mjs';
17
+ import { S as SIDE_QUESTION_SYSTEM_PROMPT, b as buildSideQuestionPrompt, t as toolAttemptNotice, r as registerSideQuestionHandler, d as describePendingApprovals, w as wrapperRateLimitReporter } from './registerSideQuestionHandler-Xg46gSVh.mjs';
18
+ import { l as logger } from './logger-UgDpJA2u.mjs';
19
+ import { B as BasePermissionHandler } from './BasePermissionHandler-B5ka7Aaf.mjs';
20
+ import { B as BaseReasoningProcessor, s as settleCodexSession } from './codexTermination-QltAvFpq.mjs';
21
21
  import { execSync } from 'node:child_process';
22
- import { r as readSettings, l as latchKeepAwake, e as evaluateWrapperIdle, a as resolveCheckMs, H as HIBERNATION_CAPABILITY } from './persistence-mr4Y484W.mjs';
23
- import { g as getInitialMachineMetadata } from './machineMetadata-ClJfd7ay.mjs';
24
- import { c as configuration } from './configuration-rTcdHkhE.mjs';
25
- import { M as MessageQueue2, r as registerKillSessionHandler } from './registerKillSessionHandler-CwyHwm_n.mjs';
22
+ import { r as readSettings, l as latchKeepAwake, e as evaluateWrapperIdle, a as resolveCheckMs, H as HIBERNATION_CAPABILITY } from './persistence-CQhmtobL.mjs';
23
+ import { g as getInitialMachineMetadata } from './machineMetadata-BYHC-3Vx.mjs';
24
+ import { c as configuration } from './configuration-CwfgJZKs.mjs';
25
+ import { M as MessageQueue2, r as registerKillSessionHandler } from './registerKillSessionHandler-rwXdO0t0.mjs';
26
26
  import { p as projectPath } from './projectPath-BTBIMB57.mjs';
27
27
  import { dirname, join } from 'node:path';
28
- import { c as createSessionMetadata } from './createSessionMetadata-PrN-dT7K.mjs';
28
+ import { c as createSessionMetadata } from './createSessionMetadata-DimBsfVG.mjs';
29
29
  import { M as MessageBuffer } from './sessionExitLifecycle-CzkLIgNZ.mjs';
30
- import { n as notifyDaemonSessionStarted, o as reportSessionEditToDaemon, c as checkDaemonHibernation } from './controlClient-BIdGnYBo.mjs';
31
- import { c as createSessionForStartup, b as HibernationExitLatch, H as HibernationProbe, a as commitHibernation } from './startupSessionCreate-BnEPBxsJ.mjs';
30
+ import { n as notifyDaemonSessionStarted, o as reportSessionEditToDaemon, c as checkDaemonHibernation } from './controlClient-Dv6IvvUq.mjs';
31
+ import { c as createSessionForStartup, b as HibernationExitLatch, H as HibernationProbe, a as commitHibernation } from './startupSessionCreate-CSi60oo_.mjs';
32
32
  import { d as decodeBase64, e as encodeBase64 } from './authRelay-DhQhkBvX.mjs';
33
- import { s as setupOfflineReconnection } from './setupOfflineReconnection-BrljmbqX.mjs';
33
+ import { s as setupOfflineReconnection } from './setupOfflineReconnection-Dp1rC-eP.mjs';
34
34
  import { t as trimIdent } from './trimIdent-BAjmv_TG.mjs';
35
35
  import { a as parseSpecialCommand, c as compactCommandText, b as parseCompact } from './specialCommands-MXUN0wfI.mjs';
36
36
  import { C as CHANGE_TITLE_INSTRUCTION } from './constants-BC4St0xd.mjs';
37
37
  import { E as EditReportThrottle, a as extractCodexPatchPaths } from './editPaths-BVfS_FFL.mjs';
38
38
  import { t as takeReconnectEnv } from './reconnectEnv-DeSvHl3q.mjs';
39
- import { r as readSessionBindings, w as writeSessionBinding, d as defaultSecretProbe, a as readAccounts, c as readAccountsFileV2, f as writeAccountsFile, S as SPAWN_ACCOUNT_ENV } from './store-Vej_738f.mjs';
39
+ import { r as readSessionBindings, w as writeSessionBinding, d as defaultSecretProbe, a as readAccounts, c as readAccountsFileV2, f as writeAccountsFile, S as SPAWN_ACCOUNT_ENV } from './store-Tf-r1ouq.mjs';
40
40
  import { mkdirSync, writeFileSync, chmodSync, rmSync } from 'node:fs';
41
- import { a as resolveCodexAccount, r as readCodexProviders, s as syncCodexOverlay, b as baseCodexHome, c as codexAccountSwitched, d as readCodexDefaultProvider, e as codexAccountDefaultModel, f as accountModelsAsCatalog, i as isHistoryRejectedError, g as isCodexAuthRejection } from './codexAccount-NOX5pmQf.mjs';
42
- import { s as shouldRecordSpawnAccount, u as unavailableNotice } from './wrapperAccount-BkufO_9g.mjs';
43
- import { a as extractNoSandboxFlag, e as ensureDaemonRunning } from './ensureDaemonRunning-B6Y-CMWe.mjs';
41
+ import { a as resolveCodexAccount, r as readCodexProviders, s as syncCodexOverlay, b as baseCodexHome, c as codexAccountSwitched, d as readCodexDefaultProvider, e as codexAccountDefaultModel, f as accountModelsAsCatalog, i as isHistoryRejectedError, g as isCodexAuthRejection } from './codexAccount-CKXpXq0B.mjs';
42
+ import { s as shouldRecordSpawnAccount, u as unavailableNotice } from './wrapperAccount-Cq7eZRMx.mjs';
43
+ import { a as extractNoSandboxFlag, e as ensureDaemonRunning } from './ensureDaemonRunning-P399ot_C.mjs';
44
44
  import 'tweetnacl';
45
45
  import 'axios';
46
- import './time-0Ru4clBD.mjs';
47
- import './browser-CFfZM3yg.mjs';
46
+ import './time-CIkdLyza.mjs';
47
+ import './browser-Bb0Gqffc.mjs';
48
48
  import 'open';
49
49
  import 'zod';
50
50
  import './prompt-QHuFx9j6.mjs';
51
- import './reportProgressTool-DTKlUlHv.mjs';
52
- import './client-OjYRPhZs.mjs';
51
+ import './reportProgressTool-HjzV5y_2.mjs';
52
+ import './client-DpTk1S7C.mjs';
53
53
  import './precheckCompat-DeEbilbr.mjs';
54
54
  import './agentGuidance-BDYt2Qy2.mjs';
55
55
  import 'node:os';
56
56
  import './pi-CqyoZMjI.mjs';
57
57
  import './fileStore-5qpetZS0.mjs';
58
- import './client-DS5JEsHs.mjs';
58
+ import './client-BhAjEv8Z.mjs';
59
59
  import 'node:util';
60
- import './context-C7QarZMk.mjs';
61
- import './sessionOps-C9wRmCBg.mjs';
60
+ import './context-DcOpvIiR.mjs';
61
+ import './sessionOps-BkEgNA2O.mjs';
62
62
  import 'socket.io-client';
63
63
  import './backgroundTaskActivity-8PdPxrvy.mjs';
64
64
  import './resources-CLP_MpK4.mjs';
65
- import './tools-DqA2Jt2R.mjs';
66
- import './peerTools-DUg9RduG.mjs';
65
+ import './tools-DqjPHq9I.mjs';
66
+ import './peerTools-DS6GqJcn.mjs';
67
67
  import './ids-DU6sLx4C.mjs';
68
- import './remoteSessionClient-mIr_9OL_.mjs';
68
+ import './remoteSessionClient-DQSnC7ox.mjs';
69
69
  import '@modelcontextprotocol/sdk/server/mcp.js';
70
70
  import 'node:http';
71
71
  import '@modelcontextprotocol/sdk/server/streamableHttp.js';
72
72
  import './limits-DIo7rEBR.mjs';
73
- import './downloadTarget-CVPBZMnY.mjs';
73
+ import './downloadTarget-CM0BZNSY.mjs';
74
74
  import './terminals-Dlg0x3nY.mjs';
75
75
  import './terminalTitleSuggest-CeKsX_V6.mjs';
76
76
  import './tmuxSocket-B8Yx20sT.mjs';
77
- import './bootstrap-CiWwfHB2.mjs';
78
- import './package-Q_ELj5DL.mjs';
77
+ import './bootstrap-BxcKrgR9.mjs';
78
+ import './package-C4OfB2YF.mjs';
79
79
  import './webPanels-B2_C2-3g.mjs';
80
- import './pushNotifications-DjEl8G0a.mjs';
80
+ import './pushNotifications-67GmbVfE.mjs';
81
81
  import './contentLogMetadata-BlWI0egu.mjs';
82
82
  import './previewPath-CXN4Vag0.mjs';
83
83
  import 'crypto';
84
- import './lidState-zy20u7T3.mjs';
84
+ import './lidState-Cb3TbhPb.mjs';
85
85
  import 'os';
86
86
  import 'child_process';
87
87
  import 'node:events';
88
- import './registerCommonHandlers-CND00Dpj.mjs';
88
+ import './registerCommonHandlers-C7hlztAO.mjs';
89
89
  import 'util';
90
90
  import 'fs/promises';
91
91
  import 'path';
92
92
  import 'cross-spawn';
93
- import './sync-DVcNkv8e.mjs';
93
+ import './sync-GJkf-HGu.mjs';
94
94
  import 'chalk';
95
95
  import './cliUpdate-Y34VGe9Y.mjs';
96
96
  import './processTreeSnapshot-CuLJDNC-.mjs';
97
97
  import 'node:readline';
98
98
  import './manager-BEsI4qt3.mjs';
99
99
  import '@anthropic-ai/sandbox-runtime';
100
- import './rateLimitWindows-a2yE3kCv.mjs';
100
+ import './rateLimitWindows-8-khalzj.mjs';
101
101
  import './processTree-CP5IvQ2Z.mjs';
102
102
  import './detectCLI-CSGMlV51.mjs';
103
103
  import 'fs';
104
- import './localHappyAgentAuth-CBsX08VJ.mjs';
104
+ import './localHappyAgentAuth-CAAIUJyY.mjs';
105
105
  import './fsMkdir-DumgLTzR.mjs';
106
106
  import './types-CkqAACXx.mjs';
107
107
  import 'url';
108
- import './claudeAccountEnv-BL1pR_37.mjs';
109
- import './spawnHappyCLI-BA1bTIiO.mjs';
108
+ import './claudeAccountEnv-NyoxjLuJ.mjs';
109
+ import './spawnHappyCLI-CgjpjSTT.mjs';
110
110
  import './doctorReadiness-C208SMN9.mjs';
111
111
 
112
112
  function getStartedSubagents(state) {
@@ -1399,6 +1399,84 @@ async function steerIntoRunningTurn(deps, text, attachments, localKey) {
1399
1399
  return false;
1400
1400
  }
1401
1401
 
1402
+ const CODEX_SIDE_QUESTION_INSTRUCTIONS = `${SIDE_QUESTION_SYSTEM_PROMPT} Do not run commands or call tools.`;
1403
+ const ANSWER_ITEMS = /* @__PURE__ */ new Set(["userMessage", "agentMessage", "reasoning"]);
1404
+ function toolName(item) {
1405
+ if (item.type === "commandExecution") return "a shell command";
1406
+ if (item.type === "mcpToolCall" && typeof item.tool === "string") return typeof item.server === "string" ? `${item.server}.${item.tool}` : item.tool;
1407
+ return typeof item.type === "string" ? item.type : "a tool";
1408
+ }
1409
+ function turnError(turn) {
1410
+ if (!turn || turn.status === "completed") return null;
1411
+ const message = turn.error && typeof turn.error.message === "string" ? turn.error.message : "";
1412
+ return message || `Side question ended (${String(turn.status ?? "unknown")})`;
1413
+ }
1414
+ async function runCodexSideQuestion(createClient, input) {
1415
+ const client = createClient();
1416
+ const signal = input.signal;
1417
+ if (signal?.aborted) throw new Error("Side question cancelled");
1418
+ let threadId = null;
1419
+ let turnId = null;
1420
+ let streamed = "";
1421
+ const messages = /* @__PURE__ */ new Map();
1422
+ let toolAttempt = null;
1423
+ let settle;
1424
+ const done = new Promise((resolve) => {
1425
+ settle = resolve;
1426
+ });
1427
+ const interrupt = () => {
1428
+ if (threadId && turnId) void client.interruptSideTurn(threadId, turnId).catch(() => {
1429
+ });
1430
+ };
1431
+ const off = client.onRawNotification((method, params) => {
1432
+ if (!threadId || params?.threadId !== threadId) return;
1433
+ if (!turnId && typeof params.turnId === "string") turnId = params.turnId;
1434
+ if (method === "item/agentMessage/delta" && typeof params.delta === "string") {
1435
+ streamed += params.delta;
1436
+ input.onText?.(streamed);
1437
+ } else if (method === "item/started" && params.item && !ANSWER_ITEMS.has(params.item.type)) {
1438
+ toolAttempt ??= toolName(params.item);
1439
+ interrupt();
1440
+ } else if (method === "item/completed" && params.item?.type === "agentMessage" && typeof params.item.text === "string") {
1441
+ messages.set(params.item.id ?? String(messages.size), params.item.text);
1442
+ } else if (method === "turn/completed") {
1443
+ settle({ error: toolAttempt ? void 0 : turnError(params.turn) ?? void 0 });
1444
+ }
1445
+ });
1446
+ const onAbort = () => {
1447
+ interrupt();
1448
+ settle({ error: "Side question cancelled" });
1449
+ };
1450
+ signal?.addEventListener("abort", onAbort, { once: true });
1451
+ try {
1452
+ await client.connect();
1453
+ let hadContext = Boolean(input.resumeSessionId);
1454
+ try {
1455
+ ({ threadId } = await client.openSideThread({ sourceThreadId: input.resumeSessionId, cwd: input.cwd, model: input.model, developerInstructions: CODEX_SIDE_QUESTION_INSTRUCTIONS }));
1456
+ } catch (error) {
1457
+ if (!input.resumeSessionId || signal?.aborted) throw error;
1458
+ hadContext = false;
1459
+ ({ threadId } = await client.openSideThread({ sourceThreadId: null, cwd: input.cwd, model: input.model, developerInstructions: CODEX_SIDE_QUESTION_INSTRUCTIONS }));
1460
+ }
1461
+ if (signal?.aborted) throw new Error("Side question cancelled");
1462
+ turnId = await client.startSideTurn(threadId, buildSideQuestionPrompt(input.question, input.history, input.mainStatus)) ?? turnId;
1463
+ if (signal?.aborted || toolAttempt) interrupt();
1464
+ const outcome = await done;
1465
+ if (signal?.aborted) throw new Error("Side question cancelled");
1466
+ if (outcome.error) throw new Error(outcome.error);
1467
+ const final = [...messages.values()].filter((text) => text.trim()).join("\n\n") || streamed;
1468
+ const answer = toolAttempt ? [final.trim(), toolAttemptNotice(toolAttempt)].filter(Boolean).join("\n\n") : final;
1469
+ if (!answer.trim()) throw new Error("Side question ended without a result");
1470
+ input.onText?.(answer);
1471
+ return { answer, hadContext, mode: "fork" };
1472
+ } finally {
1473
+ off();
1474
+ signal?.removeEventListener("abort", onAbort);
1475
+ await client.disconnect().catch(() => {
1476
+ });
1477
+ }
1478
+ }
1479
+
1402
1480
  function hashCodexEnhancedMode(mode) {
1403
1481
  return hashObject({
1404
1482
  permissionMode: mode.permissionMode,
@@ -1577,7 +1655,7 @@ async function runCodex(opts) {
1577
1655
  dangerouslySkipPermissions: initialPermissionMode === "yolo" || initialPermissionMode === "bypassPermissions",
1578
1656
  ...forkedFromSessionId ? { parentSessionId: forkedFromSessionId } : {},
1579
1657
  ...forkedFromMessageId ? { forkedFromMessageId } : {},
1580
- capabilities: [PROMPT_QUEUE_CAPABILITY, FORK_BACKFILL_CAPABILITY, HIBERNATION_CAPABILITY, AUTO_RESTART_CAPABILITY, CODEX_STEER_CAPABILITY, PROJECT_SESSION_CAPABILITY, CODEX_COMPACT_CAPABILITY, RUN_INTENT_CAPABILITY, AGENT_PROFILE_SESSION_CAPABILITY]
1658
+ capabilities: [PROMPT_QUEUE_CAPABILITY, FORK_BACKFILL_CAPABILITY, HIBERNATION_CAPABILITY, AUTO_RESTART_CAPABILITY, CODEX_STEER_CAPABILITY, PROJECT_SESSION_CAPABILITY, CODEX_COMPACT_CAPABILITY, RUN_INTENT_CAPABILITY, AGENT_PROFILE_SESSION_CAPABILITY, CODEX_BTW_CAPABILITY]
1581
1659
  });
1582
1660
  metadata.attachmentKinds = [...CLAUDE_ATTACHMENT_KINDS];
1583
1661
  metadata.stickyModel = null;
@@ -2063,6 +2141,17 @@ async function runCodex(opts) {
2063
2141
  }
2064
2142
  client = new CodexAppServerClient(sandboxConfig);
2065
2143
  client.setAccountOverrides(codexAccount.overrides);
2144
+ registerSideQuestionHandler(session.rpcHandlerManager, {
2145
+ getClaudeSessionId: () => client?.threadId ?? null,
2146
+ getModel: () => currentModel ?? client?.threadModel ?? void 0,
2147
+ cwd: process.cwd(),
2148
+ getMainStatus: () => describePendingApprovals(session.getAgentState()?.requests),
2149
+ run: (input) => runCodexSideQuestion(() => {
2150
+ const side = new CodexAppServerClient(sandboxConfig);
2151
+ side.setAccountOverrides(codexAccount.overrides);
2152
+ return side;
2153
+ }, input)
2154
+ });
2066
2155
  const idleRelease = new CodexIdleReleaseTimer({
2067
2156
  delayMs: resolveCodexIdleReleaseMs(process.env[CODEX_IDLE_RELEASE_ENV]),
2068
2157
  isIdle: () => shouldReleaseIdleCodex({