very-happy-cli 0.2.188 → 0.2.190

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/dist/{AcpBackend-2loP7MpF.mjs → AcpBackend-Dd1h-Rgt.mjs} +3 -3
  2. package/dist/{AcpBackend-B8AYkp5n.cjs → AcpBackend-dkRv9QHm.cjs} +3 -3
  3. package/dist/{AcpSessionManager-CLqo9R9Y.cjs → AcpSessionManager-AqWAqahm.cjs} +3 -3
  4. package/dist/{AcpSessionManager-C17doAoR.mjs → AcpSessionManager-QBZ-CIf7.mjs} +4 -4
  5. package/dist/{BasePermissionHandler-CrfyUmqO.mjs → BasePermissionHandler-CLp1ge-4.mjs} +1 -1
  6. package/dist/{BasePermissionHandler-C8UEcFz0.cjs → BasePermissionHandler-CpSugp7Z.cjs} +1 -1
  7. package/dist/{acpSessionResume-OuYlLGxL.cjs → acpSessionResume-CZao6QEd.cjs} +1 -1
  8. package/dist/{acpSessionResume-F705a1cF.mjs → acpSessionResume-CcpDuIO5.mjs} +1 -1
  9. package/dist/{agentHome-Dc7LYF3d.mjs → agentHome-BJGRA2Kx.mjs} +4 -4
  10. package/dist/{agentHome-DsKHJ_Sf.cjs → agentHome-fIUqT-pn.cjs} +4 -4
  11. package/dist/{api-BOqjYd5r.cjs → api-CXL6jp-p.cjs} +18 -9
  12. package/dist/{api-DNKa7kVy.mjs → api-Dw8gFsQi.mjs} +19 -10
  13. package/dist/{apiMachine-Di1G9ECW.mjs → apiMachine-BBNEtjf7.mjs} +56 -15
  14. package/dist/{apiMachine--rcPpMmt.cjs → apiMachine-C6UqHoPF.cjs} +55 -14
  15. package/dist/{attachmentContent-C9S4ekAz.mjs → attachmentContent-CC4yIrSm.mjs} +2 -2
  16. package/dist/{attachmentContent-BFRMLong.cjs → attachmentContent-NmVfKp-B.cjs} +2 -2
  17. package/dist/{auth-CXmI92aj.cjs → auth-Bb_SL2os.cjs} +5 -5
  18. package/dist/{auth-Bzwo_vOM.mjs → auth-Bh6SUoGi.mjs} +8 -8
  19. package/dist/{auth-BNhhk2Fr.mjs → auth-Bj0psrD2.mjs} +5 -5
  20. package/dist/{auth-CQtfznF0.cjs → auth-DKa4MsAi.cjs} +8 -8
  21. package/dist/{auto-DXLdaX5O.cjs → auto-C9Qohh0P.cjs} +17 -16
  22. package/dist/{auto-DHYOLnXB.mjs → auto-DK7pbCnV.mjs} +19 -18
  23. package/dist/{bootstrap-Di38SnpN.mjs → bootstrap-Ct9Nb4sv.mjs} +2 -2
  24. package/dist/{bootstrap-eJ1l7VYl.cjs → bootstrap-DBJB0y-H.cjs} +2 -2
  25. package/dist/{browser-6Cg7G6bb.mjs → browser-BGxDRhHy.mjs} +1 -1
  26. package/dist/{browser-D3uBFRQu.cjs → browser-CLJWcodR.cjs} +1 -1
  27. package/dist/{claudeLocal-BBaE4QF_.cjs → claudeLocal-B6YDYlnY.cjs} +4 -4
  28. package/dist/{claudeLocal-CqaEs-81.mjs → claudeLocal-Ux31hZyC.mjs} +5 -5
  29. package/dist/{claudeLocalLauncher-BDUPxtsI.mjs → claudeLocalLauncher-D06QijMw.mjs} +10 -10
  30. package/dist/{claudeLocalLauncher-wPxKtH_P.cjs → claudeLocalLauncher-DFvmF8rC.cjs} +9 -9
  31. package/dist/{claudeSessionFork-DzWFzj9m.mjs → claudeSessionFork-D2GI7P59.mjs} +1 -1
  32. package/dist/{claudeSessionFork-CmY25Fl3.cjs → claudeSessionFork-DTLZ2rek.cjs} +1 -1
  33. package/dist/{client-DmY03OZZ.cjs → client-Bffkrs5p.cjs} +2 -2
  34. package/dist/{client-C2HcMqRF.cjs → client-CARZ_lNS.cjs} +3 -3
  35. package/dist/{client-agH03Irm.cjs → client-CMKGrnmT.cjs} +2 -2
  36. package/dist/{client-DWws_aQK.mjs → client-CnGNYidN.mjs} +2 -2
  37. package/dist/{client-qJ0y8fus.mjs → client-CtL0Vtww.mjs} +4 -4
  38. package/dist/{client-DcDE6Ifk.mjs → client-DZkBUoh9.mjs} +2 -2
  39. package/dist/codex/happyMcpStdioBridge.cjs +16 -15
  40. package/dist/codex/happyMcpStdioBridge.mjs +17 -16
  41. package/dist/{codexAppServerClient-DgE99i7X.mjs → codexAppServerClient-CLc5nhLT.mjs} +37 -6
  42. package/dist/{codexAppServerClient-DwzC8LR0.cjs → codexAppServerClient-CpT9F6EM.cjs} +37 -6
  43. package/dist/{codexCommand-1vFEA1KT.cjs → codexCommand-39kH99SJ.cjs} +148 -61
  44. package/dist/{codexCommand-DUSVzbKh.mjs → codexCommand-Dliq3EBv.mjs} +143 -56
  45. package/dist/{codexTermination-DuDPyBRR.cjs → codexTermination-ByW7tRjr.cjs} +1 -1
  46. package/dist/{codexTermination-Bybovr2z.mjs → codexTermination-ORIw0gpU.mjs} +1 -1
  47. package/dist/{codexThreadFork-DNekT4nQ.cjs → codexThreadFork-5kwoKjMu.cjs} +11 -17
  48. package/dist/{codexThreadFork-R76RU5H0.mjs → codexThreadFork-DobPd19R.mjs} +11 -17
  49. package/dist/{config-C4xOL5bH.cjs → config-CeIzCsfj.cjs} +3 -3
  50. package/dist/{config-BrzZ0O-6.mjs → config-CxSsGO1Z.mjs} +3 -3
  51. package/dist/{configuration-BZHpFD7K.mjs → configuration-Dechcvd-.mjs} +1 -1
  52. package/dist/{configuration-DyPW9mVa.cjs → configuration-Dt5lKW3P.cjs} +1 -1
  53. package/dist/{connect-DurKwMEo.cjs → connect-NPDzIVC6.cjs} +12 -12
  54. package/dist/{connect-Cw_INlj8.mjs → connect-UwQHvCpR.mjs} +13 -13
  55. package/dist/{context-2xDvjkQp.cjs → context-BdZssgF0.cjs} +1 -1
  56. package/dist/{context-t7YV0aZc.mjs → context-C9JbJoNe.mjs} +1 -1
  57. package/dist/{controlClient-DvFaPsg6.cjs → controlClient-BRk65BRO.cjs} +3 -3
  58. package/dist/{controlClient-Bw56NIrj.mjs → controlClient-D7NGfmtq.mjs} +3 -3
  59. package/dist/{createSessionMetadata-Dpg6bV6f.cjs → createSessionMetadata-B_HZCDj_.cjs} +2 -2
  60. package/dist/{createSessionMetadata-Dn5BkLfU.mjs → createSessionMetadata-DyhFKAby.mjs} +2 -2
  61. package/dist/defaultPermissionMode-BnxJPVHT.mjs +4 -0
  62. package/dist/defaultPermissionMode-CxmTXUQR.cjs +7 -0
  63. package/dist/{deterministicJson-D0BrV1FD.cjs → deterministicJson-BEygolBQ.cjs} +12 -12
  64. package/dist/{deterministicJson-CsRckxVq.mjs → deterministicJson-DNmMVhFu.mjs} +13 -13
  65. package/dist/{doctor-CYe4d9kU.cjs → doctor-B9lW1WlG.cjs} +7 -7
  66. package/dist/{doctor-B4HQiW6j.mjs → doctor-BdBi7TFZ.mjs} +7 -7
  67. package/dist/{downloadTarget-tYMV_VHo.mjs → downloadTarget-CGojGjaN.mjs} +6 -6
  68. package/dist/{downloadTarget-CuhBVvuC.cjs → downloadTarget-DS0zT2AU.cjs} +6 -6
  69. package/dist/{ensureDaemonRunning-DVtIG9z7.mjs → ensureDaemonRunning-BOdbryDM.mjs} +5 -5
  70. package/dist/{ensureDaemonRunning-Ce3BlWiR.cjs → ensureDaemonRunning-Bibp6vhe.cjs} +5 -5
  71. package/dist/exitAfterFlush-AbKNZM0N.mjs +23 -0
  72. package/dist/exitAfterFlush-DIT_sIxR.cjs +25 -0
  73. package/dist/{handleResumeCommand-BU1uMNyv.mjs → handleResumeCommand-CgLzBYne.mjs} +5 -5
  74. package/dist/{handleResumeCommand-CLxsmAW0.cjs → handleResumeCommand-DXOuWr4p.cjs} +5 -5
  75. package/dist/{agentAttachments-Dbw8iMCZ.cjs → heldInput-BOtqFO2r.cjs} +27 -0
  76. package/dist/heldInput-C69lA2dH.mjs +44 -0
  77. package/dist/{index-KwuXqLwe.cjs → index-Bs5FD8JF.cjs} +4 -4
  78. package/dist/{index-ChX0eVXw.mjs → index-CBHfkQNY.mjs} +142 -60
  79. package/dist/{index-DoXbGEAi.cjs → index-CwRW11hT.cjs} +3 -3
  80. package/dist/{index-CVHRt3SS.mjs → index-DUByZsKe.mjs} +4 -4
  81. package/dist/{index-wWJJAQRk.cjs → index-DXSIi6j_.cjs} +4 -4
  82. package/dist/{index-DDz0Ftoy.mjs → index-Db0HIC-k.mjs} +4 -4
  83. package/dist/{index-WKyN-bNy.mjs → index-DmqsRnV7.mjs} +1 -1
  84. package/dist/{index-DG1kGjkF.cjs → index-f8oDidjV.cjs} +142 -60
  85. package/dist/{index-B1OxWiNG.mjs → index-rNTX33in.mjs} +3 -3
  86. package/dist/index.cjs +2 -2
  87. package/dist/index.mjs +2 -2
  88. package/dist/{install-cAYvHxXR.cjs → install-CXIL_FYx.cjs} +3 -3
  89. package/dist/{install-CMa_FOWu.mjs → install-DfPrEWGG.mjs} +3 -3
  90. package/dist/lib.cjs +11 -11
  91. package/dist/lib.d.cts +61 -1
  92. package/dist/lib.d.mts +61 -1
  93. package/dist/lib.mjs +12 -12
  94. package/dist/{lidState-D-lsD1FS.mjs → lidState-D0DF20oG.mjs} +1 -1
  95. package/dist/{lidState-d1vgQ3n7.cjs → lidState-q_XFYg33.cjs} +1 -1
  96. package/dist/{localHappyAgentAuth-wvDp-nGj.mjs → localHappyAgentAuth-BBhM4Qk1.mjs} +1 -1
  97. package/dist/{localHappyAgentAuth-DucSnCg3.cjs → localHappyAgentAuth-CKNW-MXw.cjs} +1 -1
  98. package/dist/{logger-C3vZG6Q0.cjs → logger-BBRTTVsQ.cjs} +2 -2
  99. package/dist/{logger-RpzJ4d8V.mjs → logger-CL7pin9b.mjs} +2 -2
  100. package/dist/{machineMetadata-CiQ2_1Mq.mjs → machineMetadata-DP06qdBk.mjs} +3 -3
  101. package/dist/{machineMetadata-CAvFq1Jg.cjs → machineMetadata-DnFNlrVK.cjs} +3 -3
  102. package/dist/{main-ChpYcFZi.cjs → main-DLOXykOR.cjs} +49 -48
  103. package/dist/{main-IPhaImjm.mjs → main-DO7nRvhf.mjs} +49 -48
  104. package/dist/{mcp-CWnMvju6.mjs → mcp-C-4sPTae.mjs} +16 -15
  105. package/dist/{mcp-2xF232hL.cjs → mcp-Du0MgR7e.cjs} +15 -14
  106. package/dist/{mirrorProtocol-CVzPObON.cjs → mirrorProtocol-GuWMxLkh.cjs} +2 -2
  107. package/dist/{mirrorProtocol-Dr7fNq8V.mjs → mirrorProtocol-dkq2ZENA.mjs} +3 -3
  108. package/dist/{package-CwB8rFJt.mjs → package-C6uiXULx.mjs} +7 -7
  109. package/dist/{package-Gnf_935w.cjs → package-DrY090nZ.cjs} +7 -7
  110. package/dist/{panels-DTlTsndU.cjs → panels-4DRBKHZP.cjs} +5 -5
  111. package/dist/{panels-L1mSkC-y.mjs → panels-DXYdJA6n.mjs} +5 -5
  112. package/dist/{peerTools-C1E5cQ86.cjs → peerTools-5ZM4spcZ.cjs} +5 -5
  113. package/dist/{peerTools-2_8Bw9PU.mjs → peerTools-dY1aJez4.mjs} +5 -5
  114. package/dist/{persistence-CqtjFiD1.cjs → persistence-Bl5S3TLB.cjs} +6 -2
  115. package/dist/{persistence-Bn4qEbDg.mjs → persistence-Dogj7JIp.mjs} +6 -3
  116. package/dist/{piRunnerArgs-BI8yQRBZ.cjs → piRunnerArgs-C3jZ1M6b.cjs} +1 -1
  117. package/dist/{piRunnerArgs-DWBb63W9.mjs → piRunnerArgs-D8nN_Iit.mjs} +1 -1
  118. package/dist/{piRuntime--mQ43MSM.cjs → piRuntime-Bd9-eq6M.cjs} +1 -1
  119. package/dist/{piRuntime-Do8oqbm3.mjs → piRuntime-BoeMsAXK.mjs} +1 -1
  120. package/dist/{piTerminal-BzcvLFsP.cjs → piTerminal-C3j1ca3x.cjs} +17 -16
  121. package/dist/{piTerminal-GC1KHTYQ.mjs → piTerminal-GEPkIGD4.mjs} +18 -17
  122. package/dist/{pushNotifications-Bb-QSqXw.cjs → pushNotifications-CfspRcl-.cjs} +20 -2
  123. package/dist/{pushNotifications-BThg4nVd.mjs → pushNotifications-dUceOIni.mjs} +21 -3
  124. package/dist/{query-Bz3pocKH.cjs → query-DjsVgG3E.cjs} +1 -1
  125. package/dist/{query-CkgIJ_Dy.mjs → query-iYH-tm7L.mjs} +1 -1
  126. package/dist/{rateLimitReporter-BkHyvLru.cjs → rateLimitReporter-DUu2KydZ.cjs} +3 -3
  127. package/dist/{rateLimitReporter-Iw4k3Bbr.mjs → rateLimitReporter-jeVi-fym.mjs} +3 -3
  128. package/dist/{rateLimitWindows-Bm_dcQGW.cjs → rateLimitWindows-Bx3ROBP5.cjs} +1 -1
  129. package/dist/{rateLimitWindows-CQ4tIQnx.mjs → rateLimitWindows-CEn0DXaX.mjs} +1 -1
  130. package/dist/{registerCommonHandlers-CIs6H2DV.cjs → registerCommonHandlers-Beun-cQv.cjs} +2 -2
  131. package/dist/{registerCommonHandlers-CaWl9ll1.mjs → registerCommonHandlers-DWZ7mfdt.mjs} +2 -2
  132. package/dist/{specialCommands-BsvSoDhC.cjs → registerKillSessionHandler-CA1FFr_F.cjs} +15 -62
  133. package/dist/{specialCommands-DHU7TNeK.mjs → registerKillSessionHandler-CzgklwLG.mjs} +17 -60
  134. package/dist/{remoteSessionClient-uPj7omsw.mjs → remoteSessionClient-BiC2KDew.mjs} +5 -5
  135. package/dist/{remoteSessionClient-DgUMfPW4.cjs → remoteSessionClient-DGFI__5Z.cjs} +5 -5
  136. package/dist/{reportProgressTool-DUEq3xAL.mjs → reportProgressTool-CgPy6n_7.mjs} +3 -3
  137. package/dist/{reportProgressTool-CaJ8EwLq.cjs → reportProgressTool-CvPGov1F.cjs} +2 -2
  138. package/dist/{run-DTUJBD6p.mjs → run-B_gFgJVB.mjs} +393 -42
  139. package/dist/{run-DyyGMqND.cjs → run-rPqQwDi_.cjs} +391 -40
  140. package/dist/{runClaude-DTNvIz2J.mjs → runClaude-CykqeXK7.mjs} +26 -23
  141. package/dist/{runClaude-8JDaPoGQ.cjs → runClaude-DM8gm8iu.cjs} +27 -24
  142. package/dist/{runClaudeDeps-CgGkgg7e.mjs → runClaudeDeps-D2phXGut.mjs} +106 -46
  143. package/dist/{runClaudeDeps-BeLo5zss.cjs → runClaudeDeps-DGAomimZ.cjs} +101 -40
  144. package/dist/{runGemini-BSOdU563.cjs → runGemini-CXTeSOZp.cjs} +50 -49
  145. package/dist/{runGemini-eU8UOzfc.mjs → runGemini-CtWCVkj5.mjs} +49 -48
  146. package/dist/{runOpenClaw-D8RZiA1e.mjs → runOpenClaw-BBdjlViJ.mjs} +25 -24
  147. package/dist/{runOpenClaw-CYyFoGRZ.cjs → runOpenClaw-CH_9_RyZ.cjs} +26 -25
  148. package/dist/{sandbox-C8zfNX-4.cjs → sandbox-Bb5IMun3.cjs} +4 -4
  149. package/dist/{sandbox-DlPahdhl.mjs → sandbox-DGmXZ6Zz.mjs} +4 -4
  150. package/dist/selfCheck-BfK945YQ.mjs +86 -0
  151. package/dist/{selfCheck-D28nvuPJ.cjs → selfCheck-CccwNTTK.cjs} +37 -37
  152. package/dist/{send-DBpv-1eh.mjs → send-B6rHg8GT.mjs} +9 -8
  153. package/dist/{send-C58kX4qz.cjs → send-BpiXPkDo.cjs} +9 -8
  154. package/dist/{server-J5K6pOox.mjs → server-BkdAyHhC.mjs} +4 -4
  155. package/dist/{server-I_CETZzn.cjs → server-DHUzjApC.cjs} +6 -6
  156. package/dist/{sessionLock-DjE7O0LS.cjs → sessionLock-BFBReiKq.cjs} +134 -3
  157. package/dist/{sessionLock-C7Wg1RVd.mjs → sessionLock-Ca_bIo50.mjs} +121 -4
  158. package/dist/{sessionOps-CYjMT7Ad.mjs → sessionOps-CA2kpm66.mjs} +36 -5
  159. package/dist/{sessionOps-DGMpl9NB.cjs → sessionOps-DeWVqpe4.cjs} +36 -4
  160. package/dist/{sessionProvider-DVtxrOuM.cjs → sessionProvider-VFbtUmMR.cjs} +5 -5
  161. package/dist/{sessionProvider-TLiFn9kD.mjs → sessionProvider-g18IiK74.mjs} +5 -5
  162. package/dist/{sessionScanner-BZ1ZSn6I.cjs → sessionScanner-CGzsN8V6.cjs} +3 -3
  163. package/dist/{sessionScanner-CknV1IlN.mjs → sessionScanner-DDDud5re.mjs} +3 -3
  164. package/dist/{sessions-DU4bxkap.mjs → sessions-B4d50sCI.mjs} +36 -26
  165. package/dist/{sessions-CTkBKs5U.cjs → sessions-CKJPWFgu.cjs} +37 -25
  166. package/dist/{setupOfflineReconnection-DaOXnGuH.mjs → setupOfflineReconnection-CyPNgyCe.mjs} +2 -2
  167. package/dist/{setupOfflineReconnection-CQHNuP_0.cjs → setupOfflineReconnection-DPXRo_zf.cjs} +2 -2
  168. package/dist/{spawn-C0wZc03S.cjs → spawn-CgSJzzWS.cjs} +17 -16
  169. package/dist/{spawn-DdnYTtQe.mjs → spawn-CrYN_OOT.mjs} +18 -17
  170. package/dist/{spawnAgents-BjyU78Ue.cjs → spawnAgents-C1-4m7aN.cjs} +3 -1
  171. package/dist/{spawnAgents-D-7wMw-a.mjs → spawnAgents-DWCDYCQ1.mjs} +4 -2
  172. package/dist/{spawnHappyCLI-BJUd974I.cjs → spawnHappyCLI-CTy3p6V_.cjs} +1 -1
  173. package/dist/{spawnHappyCLI-CnyyJk74.mjs → spawnHappyCLI-DjbkiSH1.mjs} +1 -1
  174. package/dist/specialCommands-J3JFOq0J.cjs +60 -0
  175. package/dist/specialCommands-MXUN0wfI.mjs +54 -0
  176. package/dist/{startFileWatcher-DBboREco.cjs → startFileWatcher-BQs0cJA-.cjs} +1 -1
  177. package/dist/{startFileWatcher-CpO5Mwbr.mjs → startFileWatcher-Dedtu1vq.mjs} +1 -1
  178. package/dist/{defaultPermissionMode-DMTnlccv.mjs → startupSessionCreate-BKFU4v_h.mjs} +25 -6
  179. package/dist/{defaultPermissionMode-Dlm0q1m0.cjs → startupSessionCreate-Dxy3X4DG.cjs} +25 -7
  180. package/dist/{streamRelay-CqBynIon.mjs → streamRelay-P9e7Sohm.mjs} +1 -1
  181. package/dist/{sync-6HFRJP1h.cjs → sync-DtWB7RzA.cjs} +1 -1
  182. package/dist/{sync-I8NYmycF.mjs → sync-eZkXnsW_.mjs} +1 -1
  183. package/dist/{systemPrompt-BDWj5QSL.cjs → systemPrompt-2XOpZ1j6.cjs} +1 -1
  184. package/dist/{systemPrompt-C1RSY_60.mjs → systemPrompt-Bn6g6aCH.mjs} +2 -2
  185. package/dist/{teams-eUD7ymif.cjs → teams-ecFay4Gn.cjs} +6 -6
  186. package/dist/{teams-GpLFbXXE.mjs → teams-nadkqrbW.mjs} +7 -7
  187. package/dist/{template-CEK8MEjo.mjs → template-BiTD-jI9.mjs} +1 -1
  188. package/dist/{time-umG7yHkb.mjs → time-CN3TuSVG.mjs} +1 -1
  189. package/dist/{time-BAJRbB6U.cjs → time-gPD_EmA-.cjs} +1 -1
  190. package/dist/{titleGenerator-dmFlxkRs.mjs → titleGenerator-DgzTQdn2.mjs} +1 -1
  191. package/dist/{titleGenerator-iqb2jOF1.cjs → titleGenerator-lT5ldPuN.cjs} +2 -2
  192. package/dist/{todo-DsR7WnQS.cjs → todo-B1VeMk5A.cjs} +5 -5
  193. package/dist/{todo-CT4AJ3sH.mjs → todo-BIxd7l2Q.mjs} +6 -6
  194. package/dist/{tools-30E66QL_.cjs → tools-DvqbLsCF.cjs} +1 -1
  195. package/dist/{tools-BOWazSD6.mjs → tools-zXJpxiG_.mjs} +1 -1
  196. package/dist/{uninstall-DImXs6VZ.mjs → uninstall-9htK6mb7.mjs} +3 -3
  197. package/dist/{uninstall-BtTc9hHa.cjs → uninstall-CvIOpwB5.cjs} +3 -3
  198. package/package.json +7 -7
  199. package/dist/agentAttachments-M_B5qEF2.mjs +0 -18
  200. package/dist/selfCheck-4bcdHPFQ.mjs +0 -86
  201. package/dist/startupSessionCreate-BgaVuvQp.mjs +0 -24
  202. package/dist/startupSessionCreate-C1u2dtz8.cjs +0 -26
@@ -1,27 +1,29 @@
1
1
  import chalk from 'chalk';
2
- import { D as DEFAULT_RECENT_LIMIT, M as MAX_READ_LIMIT, l as listAccountSessions, a as listSessions, w as waitForTurnEnd, T as TurnWaitTimeoutError, r as readSessionTranscript, b as stopSession, c as resolvePermissionRequest, d as archiveSession } from './sessionOps-CYjMT7Ad.mjs';
2
+ import { e as exitAfterFlush } from './exitAfterFlush-AbKNZM0N.mjs';
3
+ import { D as DEFAULT_RECENT_LIMIT, M as MAX_READ_LIMIT, l as listAccountSessions, a as listSessions, w as waitForTurnEnd, T as TurnWaitTimeoutError, r as readSessionTranscript, b as stopSession, c as resolvePermissionRequest, d as archiveSession } from './sessionOps-CA2kpm66.mjs';
3
4
  import { i as isValidSessionId } from './ids-DU6sLx4C.mjs';
4
- import { c as cliPeerSelf, e as executeSessionPeerTool, l as listPeerSessions, s as sendPeerMessage, P as PEER_SCOPES } from './peerTools-2_8Bw9PU.mjs';
5
- import { c as readPersistedSessions } from './persistence-Bn4qEbDg.mjs';
5
+ import { P as PEER_SCOPES, c as cliPeerSelf, e as executeSessionPeerTool, l as listPeerSessions, s as sendPeerMessage } from './peerTools-dY1aJez4.mjs';
6
+ import { c as readPersistedSessions } from './persistence-Dogj7JIp.mjs';
6
7
  import { resolve } from 'node:path';
7
- import { f as fillForeignAccountRows, l as listRemoteSessions, a as listRemotePeers, w as waitForRemoteTurnEnd, r as readRemoteTranscript } from './remoteSessionClient-uPj7omsw.mjs';
8
+ import { f as fillForeignAccountRows, l as listRemoteSessions, a as listRemotePeers, w as waitForRemoteTurnEnd, r as readRemoteTranscript } from './remoteSessionClient-BiC2KDew.mjs';
8
9
  import 'axios';
9
- import './configuration-BZHpFD7K.mjs';
10
+ import './configuration-Dechcvd-.mjs';
10
11
  import 'node:fs';
11
12
  import 'node:os';
12
- import './package-CwB8rFJt.mjs';
13
+ import './package-C6uiXULx.mjs';
13
14
  import 'node:fs/promises';
14
15
  import './authRelay-DhQhkBvX.mjs';
15
16
  import 'node:crypto';
16
17
  import 'tweetnacl';
17
- import './controlClient-Bw56NIrj.mjs';
18
- import './logger-RpzJ4d8V.mjs';
18
+ import './controlClient-D7NGfmtq.mjs';
19
+ import './logger-CL7pin9b.mjs';
19
20
  import 'node:util';
20
- import './time-umG7yHkb.mjs';
21
+ import './time-CN3TuSVG.mjs';
22
+ import './specialCommands-MXUN0wfI.mjs';
21
23
  import 'socket.io-client';
22
24
  import './backgroundTaskActivity-8PdPxrvy.mjs';
23
25
  import 'zod';
24
- import './client-DWws_aQK.mjs';
26
+ import './client-CnGNYidN.mjs';
25
27
 
26
28
  const MACHINE_ID_RE = /^[a-zA-Z0-9_-]{1,128}$/;
27
29
  const ACTIONS = ["list", "read", "stop", "archive", "approve", "deny", "peers", "message"];
@@ -184,6 +186,9 @@ ${chalk.bold("Actions:")}
184
186
  async sub-agents / backgrounded commands still running after
185
187
  the turn ended \u2014 such a session is NOT idle (absent = the
186
188
  daemon or CLI is too old to report it).
189
+ A forked session shows \`parent=<id>\` (\`parentSessionId\`,
190
+ plus \`forkedFromMessageId\` for a fork from a message, in
191
+ --json) in list, list --all and read.
187
192
  stop SIGTERM the session's process via the local daemon.
188
193
  archive Mark the session inactive server-side (it stays resumable).
189
194
  approve Answer a pending permission request \`requestId\` with approve \u2014
@@ -279,6 +284,7 @@ function formatAccountSummaryLine(summary) {
279
284
  if (summary.flavor) parts.push(`agent=${summary.flavor}`);
280
285
  if (summary.tags?.length) parts.push(`tags=${summary.tags.join(",")}`);
281
286
  if (summary.variant) parts.push(`variant=${summary.variant}`);
287
+ if (summary.parentSessionId) parts.push(`parent=${summary.parentSessionId}`);
282
288
  if (summary.machineId) parts.push(`machine=${summary.machineId}`);
283
289
  if (summary.cwd) parts.push(`cwd=${summary.cwd}`);
284
290
  if (summary.backgroundTasks && summary.backgroundTasks.count > 0) parts.push(formatBackgroundTasks(summary.backgroundTasks));
@@ -305,6 +311,7 @@ function formatSummaryLine(summary) {
305
311
  if (summary.flavor) parts.push(`agent=${summary.flavor}`);
306
312
  if (summary.tags?.length) parts.push(`tags=${summary.tags.join(",")}`);
307
313
  if (summary.variant) parts.push(`variant=${summary.variant}`);
314
+ if (summary.parentSessionId) parts.push(`parent=${summary.parentSessionId}`);
308
315
  if (summary.cwd) parts.push(`cwd=${summary.cwd}`);
309
316
  if (summary.pid !== void 0) parts.push(`pid=${summary.pid}`);
310
317
  if (summary.backgroundTasks && summary.backgroundTasks.count > 0) parts.push(formatBackgroundTasks(summary.backgroundTasks));
@@ -312,17 +319,20 @@ function formatSummaryLine(summary) {
312
319
  return parts.join(" ");
313
320
  }
314
321
  async function handleSessionsCommand(args) {
322
+ return exitAfterFlush(await runSessionsCommand(args));
323
+ }
324
+ async function runSessionsCommand(args) {
315
325
  let options;
316
326
  try {
317
327
  options = parseSessionsArgs(args);
318
328
  } catch (error) {
319
329
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : String(error));
320
330
  console.error(`Run ${chalk.cyan("very-happy sessions --help")} for usage.`);
321
- process.exit(1);
331
+ return 1;
322
332
  }
323
333
  if (options.action === "help") {
324
334
  console.log(SESSIONS_HELP);
325
- process.exit(0);
335
+ return 0;
326
336
  }
327
337
  try {
328
338
  if (options.action === "list" && options.all) {
@@ -353,7 +363,7 @@ async function handleSessionsCommand(args) {
353
363
  console.log(chalk.dim(`${foreign} session(s) belong to a machine that is not reachable right now${why}.`));
354
364
  }
355
365
  }
356
- process.exit(0);
366
+ return 0;
357
367
  }
358
368
  if (options.action === "list" && options.machine) {
359
369
  const listing = await listRemoteSessions(options.machine, { tag: options.tag, limit: options.limit });
@@ -366,7 +376,7 @@ async function handleSessionsCommand(args) {
366
376
  console.log(chalk.dim(`machine ${listing.host} (${listing.machineId})`));
367
377
  for (const summary of sessions) console.log(formatSummaryLine(summary));
368
378
  }
369
- process.exit(0);
379
+ return 0;
370
380
  }
371
381
  if (options.action === "list") {
372
382
  const sessions = await listSessions({ tag: options.tag, recentLimit: options.limit });
@@ -377,7 +387,7 @@ async function handleSessionsCommand(args) {
377
387
  } else {
378
388
  for (const summary of sessions) console.log(formatSummaryLine(summary));
379
389
  }
380
- process.exit(0);
390
+ return 0;
381
391
  }
382
392
  if (options.action === "peers" || options.action === "message") {
383
393
  const cwd = options.cwd ? resolve(options.cwd) : process.cwd();
@@ -390,7 +400,7 @@ async function handleSessionsCommand(args) {
390
400
  else if (!listing.project) console.log(`Not in a project (${self.sessionId}).`);
391
401
  else if (listing.peers.length === 0) console.log(`No other sessions in project "${listing.project.name}".`);
392
402
  else for (const peer of listing.peers) console.log([peer.sessionId, `[${peer.state ?? "?"}]`, peer.title ? `title="${peer.title}"` : "", peer.agent ? `agent=${peer.agent}` : "", peer.machine ? `machine=${peer.machine}` : "", peer.doing ? `doing="${peer.doing}"` : "", peer.url].filter(Boolean).join(" "));
393
- process.exit(0);
403
+ return 0;
394
404
  }
395
405
  if (options.action === "peers") {
396
406
  const scope = options.scope === "project" ? void 0 : options.scope;
@@ -411,7 +421,7 @@ async function handleSessionsCommand(args) {
411
421
  for (const edit of peer.edits) console.log(chalk.dim(` ${edit.tool} ${edit.path} (${Math.round((Date.now() - edit.at) / 6e4)}m ago)`));
412
422
  }
413
423
  }
414
- process.exit(0);
424
+ return 0;
415
425
  }
416
426
  const target = options.sessionId;
417
427
  try {
@@ -422,7 +432,7 @@ ${result.url}`);
422
432
  else if (result.status === "offline-stored") console.log(`Message ${result.messageId} ${result.note ?? "stored"} (${target} is not running; same project)
423
433
  ${result.url}`);
424
434
  else console.error(chalk.yellow("Not delivered:"), result.error ?? `session is ${result.status}`, result.stored ? "(stored server-side, unread)" : "");
425
- process.exit(peerMessageExitCode(result));
435
+ return peerMessageExitCode(result);
426
436
  } catch (error) {
427
437
  if (options.json) console.log(JSON.stringify({ delivered: false, to: target, error: error instanceof Error ? error.message : String(error) }));
428
438
  throw error;
@@ -473,18 +483,18 @@ ${result.url}`);
473
483
  const turn = result.turn;
474
484
  console.log(chalk.dim(`--- latest turn: ${turn.ended ? `ended (${turn.status ?? "unknown"})` : "running"}${turn.error ? ` \u2014 ${turn.error}` : ""} ---`));
475
485
  }
476
- process.exit(timedOut ? 2 : 0);
486
+ return timedOut ? 2 : 0;
477
487
  }
478
488
  if (options.action === "stop") {
479
489
  const stopped = await stopSession(sessionId);
480
490
  if (!stopped) {
481
491
  if (options.json) console.log(JSON.stringify({ sessionId, stopped: false }));
482
492
  console.error(chalk.red("Error:"), `Session ${sessionId} is not among the daemon's running sessions.`);
483
- process.exit(1);
493
+ return 1;
484
494
  }
485
495
  if (options.json) console.log(JSON.stringify({ sessionId, stopped: true }));
486
496
  else console.log(`Stopped ${sessionId}`);
487
- process.exit(0);
497
+ return 0;
488
498
  }
489
499
  if (options.action === "approve" || options.action === "deny") {
490
500
  const requestId = options.requestId;
@@ -506,7 +516,7 @@ ${result.url}`);
506
516
  if (options.json) console.log(JSON.stringify(result));
507
517
  const hint = result.outcome.status === "rate-limited" ? ` \u2014 the request is still pending; re-run in ~${Math.ceil(result.outcome.retryAfterMs / 1e3)}s` : "";
508
518
  console.error(chalk.red("Error:"), `${options.action} of ${requestId} on ${sessionId} was not delivered (${result.outcome.status}): ${result.outcome.message}${hint}`);
509
- process.exit(1);
519
+ return 1;
510
520
  }
511
521
  if (options.json) {
512
522
  console.log(JSON.stringify(result));
@@ -514,16 +524,16 @@ ${result.url}`);
514
524
  const verb = options.action === "approve" ? "Approved" : "Denied";
515
525
  console.log(`${verb} ${requestId} on ${sessionId} (${result.payload.decision})${result.settled ? "" : " \u2014 wrapper acknowledged, but the request was still listed as pending when we stopped waiting"}`);
516
526
  }
517
- process.exit(0);
527
+ return 0;
518
528
  }
519
529
  await archiveSession(sessionId);
520
530
  if (options.json) console.log(JSON.stringify({ sessionId, archived: true }));
521
531
  else console.log(`Archived ${sessionId}`);
522
- process.exit(0);
532
+ return 0;
523
533
  } catch (error) {
524
534
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : String(error));
525
- process.exit(1);
535
+ return 1;
526
536
  }
527
537
  }
528
538
 
529
- export { SESSIONS_HELP, handleSessionsCommand, parseSessionsArgs, peerMessageExitCode, permissionFailureRecord };
539
+ export { SESSIONS_HELP, formatAccountSummaryLine, formatSummaryLine, handleSessionsCommand, parseSessionsArgs, peerMessageExitCode, permissionFailureRecord };
@@ -1,29 +1,31 @@
1
1
  'use strict';
2
2
 
3
3
  var chalk = require('chalk');
4
- var sessionOps = require('./sessionOps-DGMpl9NB.cjs');
4
+ var exitAfterFlush = require('./exitAfterFlush-DIT_sIxR.cjs');
5
+ var sessionOps = require('./sessionOps-DeWVqpe4.cjs');
5
6
  var ids = require('./ids-B6ZC0HGt.cjs');
6
- var peerTools = require('./peerTools-C1E5cQ86.cjs');
7
- var persistence = require('./persistence-CqtjFiD1.cjs');
7
+ var peerTools = require('./peerTools-5ZM4spcZ.cjs');
8
+ var persistence = require('./persistence-Bl5S3TLB.cjs');
8
9
  var path = require('node:path');
9
- var remoteSessionClient = require('./remoteSessionClient-DgUMfPW4.cjs');
10
+ var remoteSessionClient = require('./remoteSessionClient-DGFI__5Z.cjs');
10
11
  require('axios');
11
- require('./configuration-DyPW9mVa.cjs');
12
+ require('./configuration-Dt5lKW3P.cjs');
12
13
  require('node:fs');
13
14
  require('node:os');
14
- require('./package-Gnf_935w.cjs');
15
+ require('./package-DrY090nZ.cjs');
15
16
  require('node:fs/promises');
16
17
  require('./authRelay-Dy1qU9td.cjs');
17
18
  require('node:crypto');
18
19
  require('tweetnacl');
19
- require('./controlClient-DvFaPsg6.cjs');
20
- require('./logger-C3vZG6Q0.cjs');
20
+ require('./controlClient-BRk65BRO.cjs');
21
+ require('./logger-BBRTTVsQ.cjs');
21
22
  require('node:util');
22
- require('./time-BAJRbB6U.cjs');
23
+ require('./time-gPD_EmA-.cjs');
24
+ require('./specialCommands-J3JFOq0J.cjs');
23
25
  require('socket.io-client');
24
26
  require('./backgroundTaskActivity-CBvUdj39.cjs');
25
27
  require('zod');
26
- require('./client-agH03Irm.cjs');
28
+ require('./client-CMKGrnmT.cjs');
27
29
 
28
30
  const MACHINE_ID_RE = /^[a-zA-Z0-9_-]{1,128}$/;
29
31
  const ACTIONS = ["list", "read", "stop", "archive", "approve", "deny", "peers", "message"];
@@ -186,6 +188,9 @@ ${chalk.bold("Actions:")}
186
188
  async sub-agents / backgrounded commands still running after
187
189
  the turn ended \u2014 such a session is NOT idle (absent = the
188
190
  daemon or CLI is too old to report it).
191
+ A forked session shows \`parent=<id>\` (\`parentSessionId\`,
192
+ plus \`forkedFromMessageId\` for a fork from a message, in
193
+ --json) in list, list --all and read.
189
194
  stop SIGTERM the session's process via the local daemon.
190
195
  archive Mark the session inactive server-side (it stays resumable).
191
196
  approve Answer a pending permission request \`requestId\` with approve \u2014
@@ -281,6 +286,7 @@ function formatAccountSummaryLine(summary) {
281
286
  if (summary.flavor) parts.push(`agent=${summary.flavor}`);
282
287
  if (summary.tags?.length) parts.push(`tags=${summary.tags.join(",")}`);
283
288
  if (summary.variant) parts.push(`variant=${summary.variant}`);
289
+ if (summary.parentSessionId) parts.push(`parent=${summary.parentSessionId}`);
284
290
  if (summary.machineId) parts.push(`machine=${summary.machineId}`);
285
291
  if (summary.cwd) parts.push(`cwd=${summary.cwd}`);
286
292
  if (summary.backgroundTasks && summary.backgroundTasks.count > 0) parts.push(formatBackgroundTasks(summary.backgroundTasks));
@@ -307,6 +313,7 @@ function formatSummaryLine(summary) {
307
313
  if (summary.flavor) parts.push(`agent=${summary.flavor}`);
308
314
  if (summary.tags?.length) parts.push(`tags=${summary.tags.join(",")}`);
309
315
  if (summary.variant) parts.push(`variant=${summary.variant}`);
316
+ if (summary.parentSessionId) parts.push(`parent=${summary.parentSessionId}`);
310
317
  if (summary.cwd) parts.push(`cwd=${summary.cwd}`);
311
318
  if (summary.pid !== void 0) parts.push(`pid=${summary.pid}`);
312
319
  if (summary.backgroundTasks && summary.backgroundTasks.count > 0) parts.push(formatBackgroundTasks(summary.backgroundTasks));
@@ -314,17 +321,20 @@ function formatSummaryLine(summary) {
314
321
  return parts.join(" ");
315
322
  }
316
323
  async function handleSessionsCommand(args) {
324
+ return exitAfterFlush.exitAfterFlush(await runSessionsCommand(args));
325
+ }
326
+ async function runSessionsCommand(args) {
317
327
  let options;
318
328
  try {
319
329
  options = parseSessionsArgs(args);
320
330
  } catch (error) {
321
331
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : String(error));
322
332
  console.error(`Run ${chalk.cyan("very-happy sessions --help")} for usage.`);
323
- process.exit(1);
333
+ return 1;
324
334
  }
325
335
  if (options.action === "help") {
326
336
  console.log(SESSIONS_HELP);
327
- process.exit(0);
337
+ return 0;
328
338
  }
329
339
  try {
330
340
  if (options.action === "list" && options.all) {
@@ -355,7 +365,7 @@ async function handleSessionsCommand(args) {
355
365
  console.log(chalk.dim(`${foreign} session(s) belong to a machine that is not reachable right now${why}.`));
356
366
  }
357
367
  }
358
- process.exit(0);
368
+ return 0;
359
369
  }
360
370
  if (options.action === "list" && options.machine) {
361
371
  const listing = await remoteSessionClient.listRemoteSessions(options.machine, { tag: options.tag, limit: options.limit });
@@ -368,7 +378,7 @@ async function handleSessionsCommand(args) {
368
378
  console.log(chalk.dim(`machine ${listing.host} (${listing.machineId})`));
369
379
  for (const summary of sessions) console.log(formatSummaryLine(summary));
370
380
  }
371
- process.exit(0);
381
+ return 0;
372
382
  }
373
383
  if (options.action === "list") {
374
384
  const sessions = await sessionOps.listSessions({ tag: options.tag, recentLimit: options.limit });
@@ -379,7 +389,7 @@ async function handleSessionsCommand(args) {
379
389
  } else {
380
390
  for (const summary of sessions) console.log(formatSummaryLine(summary));
381
391
  }
382
- process.exit(0);
392
+ return 0;
383
393
  }
384
394
  if (options.action === "peers" || options.action === "message") {
385
395
  const cwd = options.cwd ? path.resolve(options.cwd) : process.cwd();
@@ -392,7 +402,7 @@ async function handleSessionsCommand(args) {
392
402
  else if (!listing.project) console.log(`Not in a project (${self.sessionId}).`);
393
403
  else if (listing.peers.length === 0) console.log(`No other sessions in project "${listing.project.name}".`);
394
404
  else for (const peer of listing.peers) console.log([peer.sessionId, `[${peer.state ?? "?"}]`, peer.title ? `title="${peer.title}"` : "", peer.agent ? `agent=${peer.agent}` : "", peer.machine ? `machine=${peer.machine}` : "", peer.doing ? `doing="${peer.doing}"` : "", peer.url].filter(Boolean).join(" "));
395
- process.exit(0);
405
+ return 0;
396
406
  }
397
407
  if (options.action === "peers") {
398
408
  const scope = options.scope === "project" ? void 0 : options.scope;
@@ -413,7 +423,7 @@ async function handleSessionsCommand(args) {
413
423
  for (const edit of peer.edits) console.log(chalk.dim(` ${edit.tool} ${edit.path} (${Math.round((Date.now() - edit.at) / 6e4)}m ago)`));
414
424
  }
415
425
  }
416
- process.exit(0);
426
+ return 0;
417
427
  }
418
428
  const target = options.sessionId;
419
429
  try {
@@ -424,7 +434,7 @@ ${result.url}`);
424
434
  else if (result.status === "offline-stored") console.log(`Message ${result.messageId} ${result.note ?? "stored"} (${target} is not running; same project)
425
435
  ${result.url}`);
426
436
  else console.error(chalk.yellow("Not delivered:"), result.error ?? `session is ${result.status}`, result.stored ? "(stored server-side, unread)" : "");
427
- process.exit(peerMessageExitCode(result));
437
+ return peerMessageExitCode(result);
428
438
  } catch (error) {
429
439
  if (options.json) console.log(JSON.stringify({ delivered: false, to: target, error: error instanceof Error ? error.message : String(error) }));
430
440
  throw error;
@@ -475,18 +485,18 @@ ${result.url}`);
475
485
  const turn = result.turn;
476
486
  console.log(chalk.dim(`--- latest turn: ${turn.ended ? `ended (${turn.status ?? "unknown"})` : "running"}${turn.error ? ` \u2014 ${turn.error}` : ""} ---`));
477
487
  }
478
- process.exit(timedOut ? 2 : 0);
488
+ return timedOut ? 2 : 0;
479
489
  }
480
490
  if (options.action === "stop") {
481
491
  const stopped = await sessionOps.stopSession(sessionId);
482
492
  if (!stopped) {
483
493
  if (options.json) console.log(JSON.stringify({ sessionId, stopped: false }));
484
494
  console.error(chalk.red("Error:"), `Session ${sessionId} is not among the daemon's running sessions.`);
485
- process.exit(1);
495
+ return 1;
486
496
  }
487
497
  if (options.json) console.log(JSON.stringify({ sessionId, stopped: true }));
488
498
  else console.log(`Stopped ${sessionId}`);
489
- process.exit(0);
499
+ return 0;
490
500
  }
491
501
  if (options.action === "approve" || options.action === "deny") {
492
502
  const requestId = options.requestId;
@@ -508,7 +518,7 @@ ${result.url}`);
508
518
  if (options.json) console.log(JSON.stringify(result));
509
519
  const hint = result.outcome.status === "rate-limited" ? ` \u2014 the request is still pending; re-run in ~${Math.ceil(result.outcome.retryAfterMs / 1e3)}s` : "";
510
520
  console.error(chalk.red("Error:"), `${options.action} of ${requestId} on ${sessionId} was not delivered (${result.outcome.status}): ${result.outcome.message}${hint}`);
511
- process.exit(1);
521
+ return 1;
512
522
  }
513
523
  if (options.json) {
514
524
  console.log(JSON.stringify(result));
@@ -516,19 +526,21 @@ ${result.url}`);
516
526
  const verb = options.action === "approve" ? "Approved" : "Denied";
517
527
  console.log(`${verb} ${requestId} on ${sessionId} (${result.payload.decision})${result.settled ? "" : " \u2014 wrapper acknowledged, but the request was still listed as pending when we stopped waiting"}`);
518
528
  }
519
- process.exit(0);
529
+ return 0;
520
530
  }
521
531
  await sessionOps.archiveSession(sessionId);
522
532
  if (options.json) console.log(JSON.stringify({ sessionId, archived: true }));
523
533
  else console.log(`Archived ${sessionId}`);
524
- process.exit(0);
534
+ return 0;
525
535
  } catch (error) {
526
536
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : String(error));
527
- process.exit(1);
537
+ return 1;
528
538
  }
529
539
  }
530
540
 
531
541
  exports.SESSIONS_HELP = SESSIONS_HELP;
542
+ exports.formatAccountSummaryLine = formatAccountSummaryLine;
543
+ exports.formatSummaryLine = formatSummaryLine;
532
544
  exports.handleSessionsCommand = handleSessionsCommand;
533
545
  exports.parseSessionsArgs = parseSessionsArgs;
534
546
  exports.peerMessageExitCode = peerMessageExitCode;
@@ -1,5 +1,5 @@
1
- import { c as configuration } from './configuration-BZHpFD7K.mjs';
2
- import { s as startOfflineReconnection } from './api-DNKa7kVy.mjs';
1
+ import { c as configuration } from './configuration-Dechcvd-.mjs';
2
+ import { s as startOfflineReconnection } from './api-Dw8gFsQi.mjs';
3
3
 
4
4
  function createOfflineSessionStub(sessionTag) {
5
5
  return {
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var configuration = require('./configuration-DyPW9mVa.cjs');
4
- var api = require('./api-BOqjYd5r.cjs');
3
+ var configuration = require('./configuration-Dt5lKW3P.cjs');
4
+ var api = require('./api-CXL6jp-p.cjs');
5
5
 
6
6
  function createOfflineSessionStub(sessionTag) {
7
7
  return {
@@ -1,21 +1,21 @@
1
1
  'use strict';
2
2
 
3
- var spawnAgents = require('./spawnAgents-BjyU78Ue.cjs');
4
- var client = require('./client-agH03Irm.cjs');
3
+ var spawnAgents = require('./spawnAgents-C1-4m7aN.cjs');
4
+ var client = require('./client-CMKGrnmT.cjs');
5
5
  var chalk = require('chalk');
6
6
  var node_fs = require('node:fs');
7
7
  var path$1 = require('node:path');
8
- var controlClient = require('./controlClient-DvFaPsg6.cjs');
9
- var persistence = require('./persistence-CqtjFiD1.cjs');
8
+ var controlClient = require('./controlClient-BRk65BRO.cjs');
9
+ var persistence = require('./persistence-Bl5S3TLB.cjs');
10
10
  var index = require('./index-BOe6dKnL.cjs');
11
- var configuration = require('./configuration-DyPW9mVa.cjs');
11
+ var configuration = require('./configuration-Dt5lKW3P.cjs');
12
12
  var path = require('./path-B7zW-WwE.cjs');
13
- var claudeSessionFork = require('./claudeSessionFork-CmY25Fl3.cjs');
14
- var codexAppServerClient = require('./codexAppServerClient-DwzC8LR0.cjs');
15
- var codexThreadFork = require('./codexThreadFork-DNekT4nQ.cjs');
16
- var sessionOps = require('./sessionOps-DGMpl9NB.cjs');
17
- var createSessionMetadata = require('./createSessionMetadata-Dpg6bV6f.cjs');
18
- var logger = require('./logger-C3vZG6Q0.cjs');
13
+ var claudeSessionFork = require('./claudeSessionFork-DTLZ2rek.cjs');
14
+ var codexAppServerClient = require('./codexAppServerClient-CpT9F6EM.cjs');
15
+ var codexThreadFork = require('./codexThreadFork-5kwoKjMu.cjs');
16
+ var sessionOps = require('./sessionOps-DeWVqpe4.cjs');
17
+ var createSessionMetadata = require('./createSessionMetadata-B_HZCDj_.cjs');
18
+ var logger = require('./logger-BBRTTVsQ.cjs');
19
19
  var forkBackfill = require('./forkBackfill-8eLDeS73.cjs');
20
20
  require('node:fs/promises');
21
21
  require('zod');
@@ -24,17 +24,18 @@ require('node:crypto');
24
24
  require('tweetnacl');
25
25
  require('@paralleldrive/cuid2');
26
26
  require('node:os');
27
- require('./package-Gnf_935w.cjs');
27
+ require('./package-DrY090nZ.cjs');
28
28
  require('node:readline');
29
29
  require('node:child_process');
30
30
  require('cross-spawn');
31
31
  require('./contentLogMetadata-ZSFk_NjQ.cjs');
32
32
  require('./manager-HrEj442o.cjs');
33
33
  require('@anthropic-ai/sandbox-runtime');
34
- require('./rateLimitWindows-Bm_dcQGW.cjs');
34
+ require('./rateLimitWindows-Bx3ROBP5.cjs');
35
35
  require('./processTree-CMHWlVse.cjs');
36
36
  require('axios');
37
- require('./time-BAJRbB6U.cjs');
37
+ require('./time-gPD_EmA-.cjs');
38
+ require('./specialCommands-J3JFOq0J.cjs');
38
39
  require('socket.io-client');
39
40
  require('./backgroundTaskActivity-CBvUdj39.cjs');
40
41
  require('./projectPath-C3ioB4Bu.cjs');
@@ -205,8 +206,8 @@ ${chalk.bold("Options:")}
205
206
  1-24 chars: [a-z0-9] plus - or _. Shows as a chip in
206
207
  the web list and is searchable as #<name>.
207
208
  --permission-mode <m> Permission mode for the new session: default,
208
- acceptEdits, plan, yolo, bypassPermissions.
209
- Default = the web launcher's: yolo for claude /
209
+ acceptEdits, plan, yolo, bypassPermissions (Codex
210
+ also read-only, safe-yolo). Default = the web launcher's: yolo for claude /
210
211
  codex / pi, 'default' for gemini / openclaw. A fork
211
212
  keeps its source's mode. 'default' stops at the first
212
213
  un-allowlisted tool until someone approves it (see
@@ -1,19 +1,19 @@
1
- import { r as resolveSpawnPermissionMode, c as chooseProject, j as joinProject, a as resolveFirstMessageMeta, w as waitsForModelCatalog, s as sanitizeSpawnPermissionMode, A as ALLOWED_SPAWN_PERMISSION_MODES, S as SPAWN_AGENTS } from './spawnAgents-D-7wMw-a.mjs';
2
- import { s as sharedProjectsClient } from './client-DWws_aQK.mjs';
1
+ import { r as resolveSpawnPermissionMode, c as chooseProject, j as joinProject, a as resolveFirstMessageMeta, w as waitsForModelCatalog, s as sanitizeSpawnPermissionMode, A as ALLOWED_SPAWN_PERMISSION_MODES, S as SPAWN_AGENTS } from './spawnAgents-DWCDYCQ1.mjs';
2
+ import { s as sharedProjectsClient } from './client-CnGNYidN.mjs';
3
3
  import chalk from 'chalk';
4
4
  import { readFileSync, statSync } from 'node:fs';
5
5
  import { resolve } from 'node:path';
6
- import { b as checkIfDaemonRunningAndCleanupStaleState, g as spawnDaemonSession, f as stopDaemonSession } from './controlClient-Bw56NIrj.mjs';
7
- import { c as readPersistedSessions } from './persistence-Bn4qEbDg.mjs';
8
- import { p as parseLatestModelTable } from './index-WKyN-bNy.mjs';
9
- import { c as configuration } from './configuration-BZHpFD7K.mjs';
6
+ import { b as checkIfDaemonRunningAndCleanupStaleState, g as spawnDaemonSession, f as stopDaemonSession } from './controlClient-D7NGfmtq.mjs';
7
+ import { c as readPersistedSessions } from './persistence-Dogj7JIp.mjs';
8
+ import { p as parseLatestModelTable } from './index-DmqsRnV7.mjs';
9
+ import { c as configuration } from './configuration-Dechcvd-.mjs';
10
10
  import { g as getProjectPath } from './path-D2wdaNSk.mjs';
11
- import { f as forkSession, F as ForkSourceMissingError } from './claudeSessionFork-DzWFzj9m.mjs';
12
- import { C as CodexAppServerClient } from './codexAppServerClient-DgE99i7X.mjs';
13
- import { f as forkCodexThread } from './codexThreadFork-R76RU5H0.mjs';
14
- import { e as sendUserMessage, f as readSessionMetadata, g as waitForSessionKey, s as sessionWebUrl } from './sessionOps-CYjMT7Ad.mjs';
15
- import { i as isValidSpawnOrigin } from './createSessionMetadata-Dn5BkLfU.mjs';
16
- import { l as logger } from './logger-RpzJ4d8V.mjs';
11
+ import { f as forkSession, F as ForkSourceMissingError } from './claudeSessionFork-D2GI7P59.mjs';
12
+ import { C as CodexAppServerClient } from './codexAppServerClient-CLc5nhLT.mjs';
13
+ import { f as forkCodexThread } from './codexThreadFork-DobPd19R.mjs';
14
+ import { e as sendUserMessage, f as readSessionMetadata, g as waitForSessionKey, s as sessionWebUrl } from './sessionOps-CA2kpm66.mjs';
15
+ import { i as isValidSpawnOrigin } from './createSessionMetadata-DyhFKAby.mjs';
16
+ import { l as logger } from './logger-CL7pin9b.mjs';
17
17
  import { w as waitForForkBackfill } from './forkBackfill-DYIjlN1Z.mjs';
18
18
  import 'node:fs/promises';
19
19
  import 'zod';
@@ -22,17 +22,18 @@ import 'node:crypto';
22
22
  import 'tweetnacl';
23
23
  import '@paralleldrive/cuid2';
24
24
  import 'node:os';
25
- import './package-CwB8rFJt.mjs';
25
+ import './package-C6uiXULx.mjs';
26
26
  import 'node:readline';
27
27
  import 'node:child_process';
28
28
  import 'cross-spawn';
29
29
  import './contentLogMetadata-BlWI0egu.mjs';
30
30
  import './manager-BEsI4qt3.mjs';
31
31
  import '@anthropic-ai/sandbox-runtime';
32
- import './rateLimitWindows-CQ4tIQnx.mjs';
32
+ import './rateLimitWindows-CEn0DXaX.mjs';
33
33
  import './processTree-CP5IvQ2Z.mjs';
34
34
  import 'axios';
35
- import './time-umG7yHkb.mjs';
35
+ import './time-CN3TuSVG.mjs';
36
+ import './specialCommands-MXUN0wfI.mjs';
36
37
  import 'socket.io-client';
37
38
  import './backgroundTaskActivity-8PdPxrvy.mjs';
38
39
  import './projectPath-BTBIMB57.mjs';
@@ -203,8 +204,8 @@ ${chalk.bold("Options:")}
203
204
  1-24 chars: [a-z0-9] plus - or _. Shows as a chip in
204
205
  the web list and is searchable as #<name>.
205
206
  --permission-mode <m> Permission mode for the new session: default,
206
- acceptEdits, plan, yolo, bypassPermissions.
207
- Default = the web launcher's: yolo for claude /
207
+ acceptEdits, plan, yolo, bypassPermissions (Codex
208
+ also read-only, safe-yolo). Default = the web launcher's: yolo for claude /
208
209
  codex / pi, 'default' for gemini / openclaw. A fork
209
210
  keeps its source's mode. 'default' stops at the first
210
211
  un-allowlisted tool until someone approves it (see
@@ -77,7 +77,9 @@ const ALLOWED_SPAWN_PERMISSION_MODES = [
77
77
  "acceptEdits",
78
78
  "plan",
79
79
  "yolo",
80
- "bypassPermissions"
80
+ "bypassPermissions",
81
+ "read-only",
82
+ "safe-yolo"
81
83
  ];
82
84
  function sanitizeSpawnPermissionMode(value) {
83
85
  if (typeof value !== "string") return null;
@@ -1,4 +1,4 @@
1
- import { k as getAgentCodeDefaults, l as isLatestModelMode, m as resolveLatestModel, n as normalizeAgentKey } from './index-WKyN-bNy.mjs';
1
+ import { k as getAgentCodeDefaults, l as isLatestModelMode, m as resolveLatestModel, n as normalizeAgentKey } from './index-DmqsRnV7.mjs';
2
2
 
3
3
  function chooseProject(opts) {
4
4
  if (opts.project) return { kind: "explicit", projectId: opts.project };
@@ -75,7 +75,9 @@ const ALLOWED_SPAWN_PERMISSION_MODES = [
75
75
  "acceptEdits",
76
76
  "plan",
77
77
  "yolo",
78
- "bypassPermissions"
78
+ "bypassPermissions",
79
+ "read-only",
80
+ "safe-yolo"
79
81
  ];
80
82
  function sanitizeSpawnPermissionMode(value) {
81
83
  if (typeof value !== "string") return null;
@@ -3,7 +3,7 @@
3
3
  var spawn = require('cross-spawn');
4
4
  var path = require('node:path');
5
5
  var projectPath = require('./projectPath-C3ioB4Bu.cjs');
6
- var logger = require('./logger-C3vZG6Q0.cjs');
6
+ var logger = require('./logger-BBRTTVsQ.cjs');
7
7
  var node_fs = require('node:fs');
8
8
 
9
9
  let cachedRuntime = null;
@@ -1,7 +1,7 @@
1
1
  import { spawn } from 'cross-spawn';
2
2
  import { join } from 'node:path';
3
3
  import { p as projectPath } from './projectPath-BTBIMB57.mjs';
4
- import { l as logger } from './logger-RpzJ4d8V.mjs';
4
+ import { l as logger } from './logger-CL7pin9b.mjs';
5
5
  import { existsSync } from 'node:fs';
6
6
 
7
7
  let cachedRuntime = null;