very-happy-cli 0.2.163 → 0.2.164

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 (172) hide show
  1. package/dist/{AcpBackend-CuOUXVRX.mjs → AcpBackend-B8l1ZePt.mjs} +3 -3
  2. package/dist/{AcpBackend-C2rzKnvT.cjs → AcpBackend-CHDqSii9.cjs} +3 -3
  3. package/dist/{AcpSessionManager-BvIuBzoO.cjs → AcpSessionManager-9yN2iH4b.cjs} +1 -1
  4. package/dist/{AcpSessionManager-BSIBnWUb.mjs → AcpSessionManager-BQnDJvct.mjs} +1 -1
  5. package/dist/{BasePermissionHandler-D6PdH-OU.cjs → BasePermissionHandler-DGQYvBPg.cjs} +1 -1
  6. package/dist/{BasePermissionHandler-Ng5h8JpY.mjs → BasePermissionHandler-DgtAtJTV.mjs} +1 -1
  7. package/dist/{BaseReasoningProcessor-C0cXz1mg.cjs → BaseReasoningProcessor-BqalZhQO.cjs} +1 -1
  8. package/dist/{BaseReasoningProcessor-CM-ijU4F.mjs → BaseReasoningProcessor-Dfacnfhj.mjs} +1 -1
  9. package/dist/{agentHome-Bt4lOwFE.mjs → agentHome-DM0urHEI.mjs} +4 -4
  10. package/dist/{agentHome-CAMEVRZZ.cjs → agentHome-DtsPKfTS.cjs} +4 -4
  11. package/dist/{api-DGFBAPr7.cjs → api-EKlS0r1w.cjs} +41 -15
  12. package/dist/{api-D5kfP3JF.mjs → api-Yoh_zKdR.mjs} +41 -15
  13. package/dist/{apiMachine-BxCy5_No.cjs → apiMachine-q71suojS.cjs} +20 -17
  14. package/dist/{apiMachine-C58eizxs.mjs → apiMachine-s3HiV-SL.mjs} +20 -17
  15. package/dist/{assistantTools-BvKH9eRc.mjs → assistantTools-BWfAV349.mjs} +6 -6
  16. package/dist/{assistantTools-NC7DMNvV.cjs → assistantTools-D3cZvgUX.cjs} +6 -6
  17. package/dist/{attachmentContent-CCE0Y3gR.mjs → attachmentContent-BLyyo1al.mjs} +2 -2
  18. package/dist/{attachmentContent-CUKdzh4v.cjs → attachmentContent-Bakb0XV3.cjs} +2 -2
  19. package/dist/{attachmentLimits-D5pgmASK.mjs → attachmentLimits-B8nzhw-i.mjs} +1 -1
  20. package/dist/{attachmentLimits-DzlBPyJP.cjs → attachmentLimits-eJZ4ZBjF.cjs} +1 -1
  21. package/dist/{auth-gdc8gI9D.mjs → auth-BTfv8yW0.mjs} +8 -8
  22. package/dist/{auth-Ddz597Rw.cjs → auth-Cn3dQInF.cjs} +5 -5
  23. package/dist/{auth-CRm8yNv6.mjs → auth-Cxhx5evk.mjs} +5 -5
  24. package/dist/{auth-CILb5DeW.cjs → auth-Hpg4Yxfa.cjs} +8 -8
  25. package/dist/{auto-lLjHfAOO.mjs → auto-BAAEVGZa.mjs} +14 -14
  26. package/dist/{auto-CXtt6MfS.cjs → auto-CK8irHum.cjs} +14 -14
  27. package/dist/{bootstrap-DSWZAtGy.mjs → bootstrap-CTNjn_aj.mjs} +2 -2
  28. package/dist/{bootstrap-CccIDvh4.cjs → bootstrap-D9SUykG_.cjs} +2 -2
  29. package/dist/{browser-lizgdXYj.cjs → browser-C8ztaIkm.cjs} +1 -1
  30. package/dist/{browser-DU9kI-Q-.mjs → browser-DydXWySF.mjs} +1 -1
  31. package/dist/{claudeLocal-CTR2xlPT.mjs → claudeLocal-CdJJovWq.mjs} +5 -5
  32. package/dist/{claudeLocal-Bp-lf6yb.cjs → claudeLocal-CsLFMvFU.cjs} +5 -5
  33. package/dist/{claudeLocalLauncher-DFkwLMqU.mjs → claudeLocalLauncher-CKazNnl0.mjs} +10 -10
  34. package/dist/{claudeLocalLauncher-aQyL3g7I.cjs → claudeLocalLauncher-DRc-tET5.cjs} +10 -10
  35. package/dist/{claudeSessionFork-DdJFvxwf.cjs → claudeSessionFork-BWdhyy9B.cjs} +1 -1
  36. package/dist/{claudeSessionFork-DABSCbkf.mjs → claudeSessionFork-BfPW9D2S.mjs} +1 -1
  37. package/dist/{client-CQzHoynf.cjs → client-BZtKFCJr.cjs} +2 -2
  38. package/dist/{client-CXvsRLAz.cjs → client-C1GAIJ04.cjs} +3 -3
  39. package/dist/{client-CyUhxs-0.mjs → client-DkoV3VWl.mjs} +2 -2
  40. package/dist/{client-BbNFS1WW.mjs → client-Do5CHQnZ.mjs} +3 -3
  41. package/dist/codex/happyMcpStdioBridge.cjs +15 -15
  42. package/dist/codex/happyMcpStdioBridge.mjs +15 -15
  43. package/dist/{codexAppServerClient-Dto99RVH.mjs → codexAppServerClient-CfF33X-8.mjs} +2 -2
  44. package/dist/{codexAppServerClient-5jNbTlE5.cjs → codexAppServerClient-JddkV_aP.cjs} +2 -2
  45. package/dist/{codexCommand-LUp0vkNi.cjs → codexCommand-Bdj3XZbi.cjs} +39 -39
  46. package/dist/{codexCommand-BHfrAyds.mjs → codexCommand-btJso8yC.mjs} +39 -39
  47. package/dist/{config-CAD5NR1h.cjs → config-DpCNivmg.cjs} +3 -3
  48. package/dist/{config-BEvt_OYR.mjs → config-nziuMb7g.mjs} +3 -3
  49. package/dist/{configuration-B0c-OP_h.mjs → configuration-CiBUH72C.mjs} +1 -1
  50. package/dist/{configuration-CepfrPZ_.cjs → configuration-PXAE4-FP.cjs} +1 -1
  51. package/dist/{connect-BPMzMoiQ.cjs → connect-D7ehaW2C.cjs} +13 -13
  52. package/dist/{connect-BeK0dMYB.mjs → connect-XHdi6Vtc.mjs} +13 -13
  53. package/dist/{context-mMg17HJv.mjs → context-BpEYcuLv.mjs} +1 -1
  54. package/dist/{context-BhZMRQho.cjs → context-DhvXl1oC.cjs} +1 -1
  55. package/dist/{controlClient-HPMsyxLb.cjs → controlClient-DI-Er-Ww.cjs} +3 -3
  56. package/dist/{controlClient-BKmjlbGs.mjs → controlClient-DzmCQrY_.mjs} +3 -3
  57. package/dist/{createSessionMetadata-KOL67aSN.mjs → createSessionMetadata-B47GrTX6.mjs} +2 -2
  58. package/dist/{createSessionMetadata-CGuyVxsM.cjs → createSessionMetadata-D04x6OMW.cjs} +2 -2
  59. package/dist/{deterministicJson-BFzPcsCh.cjs → deterministicJson-BM8e8QwP.cjs} +9 -9
  60. package/dist/{deterministicJson-CaWami7M.mjs → deterministicJson-CKqT3awl.mjs} +9 -9
  61. package/dist/{doctor-DX2P7IlL.mjs → doctor-CSgzbG5L.mjs} +6 -6
  62. package/dist/{doctor-BHNVY9DE.cjs → doctor-Cl6cqvok.cjs} +6 -6
  63. package/dist/{ensureDaemonRunning-BahhZpQ1.cjs → ensureDaemonRunning-CJ4-U32n.cjs} +5 -5
  64. package/dist/{ensureDaemonRunning-CnWMrL5b.mjs → ensureDaemonRunning-fPVSsjIm.mjs} +5 -5
  65. package/dist/{handleResumeCommand-bToC6FDH.mjs → handleResumeCommand-B84dt2aH.mjs} +5 -5
  66. package/dist/{handleResumeCommand-Ca334R4t.cjs → handleResumeCommand-bX-aNF_z.cjs} +5 -5
  67. package/dist/{index-B6MVw_Xb.cjs → index-B2UvSWo_.cjs} +3 -3
  68. package/dist/{index-vFMUVtSL.cjs → index-CP2fh7JX.cjs} +38 -38
  69. package/dist/{index-B5v5fZi6.mjs → index-CRJtZCK-.mjs} +39 -39
  70. package/dist/{index-D3AsOj4j.mjs → index-CbF87SeZ.mjs} +3 -3
  71. package/dist/{index-DoMsO8_G.cjs → index-DaTxsAC3.cjs} +4 -4
  72. package/dist/{index-DJ-oV52i.cjs → index-DqlyNgt4.cjs} +6 -1
  73. package/dist/{index-CpFreRx8.mjs → index-OEGj3BxE.mjs} +4 -4
  74. package/dist/{index-BBg9j0XK.mjs → index-vVWpCoTr.mjs} +6 -1
  75. package/dist/index.cjs +2 -2
  76. package/dist/index.mjs +2 -2
  77. package/dist/{install-Dixfzmb_.mjs → install-CurvoW2u.mjs} +3 -3
  78. package/dist/{install-BnTP73AE.cjs → install-__Mni4NU.cjs} +3 -3
  79. package/dist/lib.cjs +17 -17
  80. package/dist/lib.d.cts +26 -0
  81. package/dist/lib.d.mts +26 -0
  82. package/dist/lib.mjs +17 -17
  83. package/dist/{lidState-X7iQg4y5.mjs → lidState-BbR6y9rq.mjs} +66 -2
  84. package/dist/{lidState-BGWXfx1e.cjs → lidState-De2HP6nu.cjs} +67 -1
  85. package/dist/{localHappyAgentAuth-r83bTscW.mjs → localHappyAgentAuth-C7rDePjF.mjs} +1 -1
  86. package/dist/{localHappyAgentAuth-D_Gc4K7h.cjs → localHappyAgentAuth-CboZb3_a.cjs} +1 -1
  87. package/dist/{logger-BIzr7JN0.mjs → logger-8dtZPn3n.mjs} +2 -2
  88. package/dist/{logger-Ca5eRZ2j.cjs → logger-B1k7eZnq.cjs} +2 -2
  89. package/dist/{machineMetadata-DakW9c61.mjs → machineMetadata-Bhp_w3-_.mjs} +3 -3
  90. package/dist/{machineMetadata-GlObivJ-.cjs → machineMetadata-C4OfKn6I.cjs} +3 -3
  91. package/dist/{main-BJlGidfv.mjs → main-BQTaUrz0.mjs} +44 -44
  92. package/dist/{main-BfA1Vtqq.cjs → main-eAiLspBM.cjs} +44 -44
  93. package/dist/{mcp-Bb7AD1SD.mjs → mcp-DXCdbQHM.mjs} +14 -14
  94. package/dist/{mcp-BVzt1llv.cjs → mcp-fapbM7Q4.cjs} +14 -14
  95. package/dist/{package-BfnmIH4b.cjs → package-CC_txQ31.cjs} +8 -8
  96. package/dist/{package-D-W_r_pd.mjs → package-tVYgFJoK.mjs} +8 -8
  97. package/dist/{peerTools-C1cELmtZ.mjs → peerTools-C1cduHh1.mjs} +4 -4
  98. package/dist/{peerTools-CADjnFDx.cjs → peerTools-CqIcCEIg.cjs} +4 -4
  99. package/dist/{persistence-DgBhXxu7.mjs → persistence-C_xFQLsD.mjs} +3 -3
  100. package/dist/{persistence-Ceb-BPk6.cjs → persistence-d3ZyER6o.cjs} +3 -3
  101. package/dist/{piRunnerArgs-Bem-saSg.cjs → piRunnerArgs-DSxolPlV.cjs} +1 -1
  102. package/dist/{piRunnerArgs-CH6oh6w0.mjs → piRunnerArgs-aq0zJX1Q.mjs} +1 -1
  103. package/dist/{piRuntime-BRKG6Yoz.mjs → piRuntime-BnNl5Lmb.mjs} +1 -1
  104. package/dist/{piRuntime-Be0UP44z.cjs → piRuntime-Dne1LPu-.cjs} +1 -1
  105. package/dist/{piTerminal-DVOAWiZx.mjs → piTerminal-CKWxWtW-.mjs} +16 -16
  106. package/dist/{piTerminal-ibKBMmuK.cjs → piTerminal-fjado4cR.cjs} +16 -16
  107. package/dist/{registerCommonHandlers-DPOHFlxp.cjs → registerCommonHandlers-Dausbdsb.cjs} +2 -2
  108. package/dist/{registerCommonHandlers-t15dS7xt.mjs → registerCommonHandlers-bSskMveZ.mjs} +2 -2
  109. package/dist/{registerKillSessionHandler-BS5afGeA.mjs → registerKillSessionHandler-Ben5lAsN.mjs} +6 -6
  110. package/dist/{registerKillSessionHandler-DGDubZLv.cjs → registerKillSessionHandler-CgKyzwqw.cjs} +6 -6
  111. package/dist/{remoteSessionClient-DbnVs1Tv.cjs → remoteSessionClient-BkJt8SHa.cjs} +5 -5
  112. package/dist/{remoteSessionClient-N7JsQ0XS.mjs → remoteSessionClient-DnCIuZpQ.mjs} +5 -5
  113. package/dist/{run-CptLbkQ4.cjs → run-B8dxbDsg.cjs} +33 -33
  114. package/dist/{run-FZRugy70.mjs → run-BEYMVE4J.mjs} +32 -32
  115. package/dist/{runClaude-Cnv0SnA4.cjs → runClaude-Cy_HzLyO.cjs} +22 -22
  116. package/dist/{runClaude-DNW3i-k4.mjs → runClaude-Dd_P1c0f.mjs} +22 -22
  117. package/dist/{runClaudeDeps-CpAiml84.mjs → runClaudeDeps-JG7EUH7B.mjs} +441 -49
  118. package/dist/{runClaudeDeps-lb6LlVPa.cjs → runClaudeDeps-dxv910DR.cjs} +436 -44
  119. package/dist/{runGemini-CRn8exeY.mjs → runGemini-CpaBuvoW.mjs} +34 -34
  120. package/dist/{runGemini-BzS_Yw3F.cjs → runGemini-DY1IDW_f.cjs} +34 -34
  121. package/dist/{runOpenClaw-QoDQpR9a.cjs → runOpenClaw-C0VARcYj.cjs} +20 -20
  122. package/dist/{runOpenClaw-DuS_zRVT.mjs → runOpenClaw-C7vrDQbq.mjs} +20 -20
  123. package/dist/{sandbox-CT9CGjEI.cjs → sandbox-Bx9-M9rN.cjs} +4 -4
  124. package/dist/{sandbox-DysMM_pn.mjs → sandbox-DRUJZuaM.mjs} +4 -4
  125. package/dist/{selfCheck-DIn7j8MD.cjs → selfCheck-Ba1sECTO.cjs} +34 -34
  126. package/dist/selfCheck-DdT8r263.mjs +84 -0
  127. package/dist/{send-CA6fSF3S.mjs → send-BrzkbMy2.mjs} +8 -8
  128. package/dist/{send-97xYN_Yw.cjs → send-Dqdpx-w5.cjs} +8 -8
  129. package/dist/{server-r50NNW9e.mjs → server-CPMPoEAA.mjs} +4 -4
  130. package/dist/{server-C67NGJoX.cjs → server-CfB8EWCg.cjs} +6 -6
  131. package/dist/{sessionLock-CS4fdsmu.cjs → sessionLock-BsP3Y_nG.cjs} +2 -2
  132. package/dist/{sessionLock-Dab6_dCd.mjs → sessionLock-DukLVzAQ.mjs} +2 -2
  133. package/dist/{sessionModeFile-3yV7P9R-.mjs → sessionModeFile-CSvi4H_t.mjs} +1 -1
  134. package/dist/{sessionModeFile-BhqlFlHZ.cjs → sessionModeFile-JWWF6Nn7.cjs} +1 -1
  135. package/dist/{sessionOps-DJSwzwP-.mjs → sessionOps-BlMg1uAa.mjs} +4 -4
  136. package/dist/{sessionOps-DWsGWwfZ.cjs → sessionOps-HuoMXcIZ.cjs} +4 -4
  137. package/dist/{sessionScanner-D6WqRtJQ.cjs → sessionScanner-BWU6KvZw.cjs} +3 -3
  138. package/dist/{sessionScanner-jilpq2aE.mjs → sessionScanner-Ct-JoNHP.mjs} +3 -3
  139. package/dist/{sessions-RXTp4x0o.mjs → sessions-3Hw1xXMV.mjs} +9 -9
  140. package/dist/{sessions-C22q-Z_s.cjs → sessions-AjflCj5y.cjs} +9 -9
  141. package/dist/{setupOfflineReconnection-rd1PCWiN.mjs → setupOfflineReconnection-B_9xp36H.mjs} +2 -2
  142. package/dist/{setupOfflineReconnection-BrnWBRUP.cjs → setupOfflineReconnection-Cxh9Sz9M.cjs} +2 -2
  143. package/dist/{spawn-D8CEQPbN.mjs → spawn-BXEVKCQK.mjs} +12 -12
  144. package/dist/{spawn-Ccy5qAtp.cjs → spawn-CN8PH11G.cjs} +12 -12
  145. package/dist/{spawnAgents-Y1LjnCt9.mjs → spawnAgents-Czi2VDzj.mjs} +1 -1
  146. package/dist/{spawnAgents-iSu1Xzs5.cjs → spawnAgents-McixdtV1.cjs} +1 -1
  147. package/dist/{spawnHappyCLI-wowHF2IL.mjs → spawnHappyCLI-BFN0h2fK.mjs} +1 -1
  148. package/dist/{spawnHappyCLI-Dz2ZHrsN.cjs → spawnHappyCLI-Cj-9-d_7.cjs} +1 -1
  149. package/dist/{startFileWatcher-Ce17H9pG.cjs → startFileWatcher-BfMu444W.cjs} +1 -1
  150. package/dist/{startFileWatcher-C1wjDI_o.mjs → startFileWatcher-Csql7gdv.mjs} +1 -1
  151. package/dist/{streamRelay-BLgU9X3R.mjs → streamRelay-BzMEEvJU.mjs} +1 -1
  152. package/dist/{streamRelay-DnObXZZj.cjs → streamRelay-C0AffuX6.cjs} +1 -1
  153. package/dist/{sync-fDRF_nO1.cjs → sync--uxtLWbo.cjs} +1 -1
  154. package/dist/{sync-DnmsgL3w.mjs → sync-SCvDzRy6.mjs} +1 -1
  155. package/dist/{systemPrompt-9PWg4OU6.cjs → systemPrompt-C1tRiZ-u.cjs} +2 -2
  156. package/dist/{systemPrompt-Db9O7KGe.mjs → systemPrompt-D0KMySrK.mjs} +2 -2
  157. package/dist/{teams-C5PwKr4K.mjs → teams-By-hcvMF.mjs} +6 -6
  158. package/dist/{teams-DkHPUc6j.cjs → teams-CYDIFXEC.cjs} +6 -6
  159. package/dist/{time-xNkWLTSj.cjs → time-C7BplxuS.cjs} +1 -1
  160. package/dist/{time-TxDyvAKk.mjs → time-CRvAaC5H.mjs} +1 -1
  161. package/dist/{titleGenerator-oK414IZc.mjs → titleGenerator-CUG-n2r3.mjs} +1 -1
  162. package/dist/{titleGenerator-C8arvXNG.cjs → titleGenerator-Kw3sTnNQ.cjs} +2 -2
  163. package/dist/{todo-VqQuYyFq.cjs → todo-B7a7J5Ng.cjs} +6 -6
  164. package/dist/{todo-CLHIGRUf.mjs → todo-yuIsUvU8.mjs} +6 -6
  165. package/dist/{tools-GnqHEZHb.cjs → tools-BTBgpiRc.cjs} +2 -2
  166. package/dist/{tools-xQ38ufgo.cjs → tools-D7UeLMZ7.cjs} +1 -1
  167. package/dist/{tools-sPgOmLr_.mjs → tools-RvMKw7yx.mjs} +1 -1
  168. package/dist/{tools-BSzD246o.mjs → tools-gUjkPpCw.mjs} +2 -2
  169. package/dist/{uninstall-DKM0j1qI.cjs → uninstall-D5D16-KM.cjs} +3 -3
  170. package/dist/{uninstall-DyoXxpgI.mjs → uninstall-Dx9FmLXs.mjs} +3 -3
  171. package/package.json +8 -8
  172. package/dist/selfCheck-BTltA-ZZ.mjs +0 -84
package/dist/lib.cjs CHANGED
@@ -1,25 +1,25 @@
1
1
  'use strict';
2
2
 
3
- var api = require('./api-DGFBAPr7.cjs');
4
- var logger = require('./logger-Ca5eRZ2j.cjs');
5
- var configuration = require('./configuration-CepfrPZ_.cjs');
3
+ var api = require('./api-EKlS0r1w.cjs');
4
+ var logger = require('./logger-B1k7eZnq.cjs');
5
+ var configuration = require('./configuration-PXAE4-FP.cjs');
6
6
  var types = require('./types-CRS-srZK.cjs');
7
7
  require('axios');
8
- require('node:events');
9
- require('socket.io-client');
10
- require('./attachmentLimits-DzlBPyJP.cjs');
11
- require('zod');
12
- require('./index-DJ-oV52i.cjs');
13
- require('@paralleldrive/cuid2');
8
+ require('./lidState-De2HP6nu.cjs');
14
9
  require('./authRelay-BdYkC1Po.cjs');
15
10
  require('node:crypto');
16
11
  require('tweetnacl');
17
- require('./limits-C-a7gr04.cjs');
18
- require('./time-xNkWLTSj.cjs');
19
- require('./lidState-BGWXfx1e.cjs');
20
12
  require('os');
21
13
  require('child_process');
22
- require('./registerCommonHandlers-DPOHFlxp.cjs');
14
+ require('node:events');
15
+ require('socket.io-client');
16
+ require('./attachmentLimits-eJZ4ZBjF.cjs');
17
+ require('zod');
18
+ require('./index-DqlyNgt4.cjs');
19
+ require('@paralleldrive/cuid2');
20
+ require('./limits-C-a7gr04.cjs');
21
+ require('./time-C7BplxuS.cjs');
22
+ require('./registerCommonHandlers-Dausbdsb.cjs');
23
23
  require('util');
24
24
  require('fs/promises');
25
25
  require('crypto');
@@ -27,10 +27,10 @@ require('path');
27
27
  require('cross-spawn');
28
28
  require('./projectPath-ChLhdOyt.cjs');
29
29
  require('url');
30
- require('./sync-fDRF_nO1.cjs');
30
+ require('./sync--uxtLWbo.cjs');
31
31
  require('./backgroundTaskActivity-CBvUdj39.cjs');
32
- require('./controlClient-HPMsyxLb.cjs');
33
- require('./persistence-Ceb-BPk6.cjs');
32
+ require('./controlClient-DI-Er-Ww.cjs');
33
+ require('./persistence-d3ZyER6o.cjs');
34
34
  require('node:fs/promises');
35
35
  require('node:fs');
36
36
  require('./contentLogMetadata-ZSFk_NjQ.cjs');
@@ -38,7 +38,7 @@ require('chalk');
38
38
  require('node:util');
39
39
  require('node:path');
40
40
  require('node:os');
41
- require('./package-BfnmIH4b.cjs');
41
+ require('./package-CC_txQ31.cjs');
42
42
 
43
43
 
44
44
 
package/dist/lib.d.cts CHANGED
@@ -164,6 +164,7 @@ declare const sessionEnvelopeSchema: z.ZodObject<{
164
164
  fromSeq: z.ZodNumber;
165
165
  toSeq: z.ZodOptional<z.ZodNumber>;
166
166
  reason: z.ZodOptional<z.ZodString>;
167
+ requestId: z.ZodOptional<z.ZodString>;
167
168
  }, z.core.$strip>], "t">;
168
169
  }, z.core.$strip>;
169
170
  type SessionEnvelope = z.infer<typeof sessionEnvelopeSchema>;
@@ -731,6 +732,21 @@ type Metadata = {
731
732
  failed?: boolean;
732
733
  completedAt: number;
733
734
  };
735
+ /**
736
+ * B-544: the newest in-place rewind (conversation-rewind with a requestId).
737
+ * `pending` until the web's transcript-drop tombstone with the same
738
+ * requestId confirms it; otherwise the wrapper switches back to
739
+ * `sourceClaudeSessionId` (`reverted`). The web reads `requestId` when the
740
+ * RPC ack was lost. Plain strings throughout; old web/CLI ignore it.
741
+ */
742
+ rewind?: {
743
+ requestId: string;
744
+ action: string;
745
+ sourceClaudeSessionId: string;
746
+ claudeSessionId: string | null;
747
+ at: number;
748
+ state: string;
749
+ } | null;
734
750
  /**
735
751
  * B-290: the Claude conversation this session was imported from (the
736
752
  * on-disk transcript written by claude CLI / desktop / claude.ai that was
@@ -1331,6 +1347,16 @@ declare class ApiSessionClient extends EventEmitter {
1331
1347
  */
1332
1348
  suppressNextArchiveSignal(): void;
1333
1349
  skipExistingMessages(): void;
1350
+ /**
1351
+ * B-544: the newest `limit` session records, decrypted, ascending seq.
1352
+ * Read-only (no routing, no lastSeq change) — rewind reconcile reads the
1353
+ * durable log with it. Undecryptable records come back with `body: null`.
1354
+ */
1355
+ readLogTail(limit: number): Promise<Array<{
1356
+ seq: number;
1357
+ localId: string | null;
1358
+ body: unknown;
1359
+ }>>;
1334
1360
  updateMetadata(handler: (metadata: Metadata) => Metadata): void;
1335
1361
  /**
1336
1362
  * Update session agent state
package/dist/lib.d.mts CHANGED
@@ -164,6 +164,7 @@ declare const sessionEnvelopeSchema: z.ZodObject<{
164
164
  fromSeq: z.ZodNumber;
165
165
  toSeq: z.ZodOptional<z.ZodNumber>;
166
166
  reason: z.ZodOptional<z.ZodString>;
167
+ requestId: z.ZodOptional<z.ZodString>;
167
168
  }, z.core.$strip>], "t">;
168
169
  }, z.core.$strip>;
169
170
  type SessionEnvelope = z.infer<typeof sessionEnvelopeSchema>;
@@ -731,6 +732,21 @@ type Metadata = {
731
732
  failed?: boolean;
732
733
  completedAt: number;
733
734
  };
735
+ /**
736
+ * B-544: the newest in-place rewind (conversation-rewind with a requestId).
737
+ * `pending` until the web's transcript-drop tombstone with the same
738
+ * requestId confirms it; otherwise the wrapper switches back to
739
+ * `sourceClaudeSessionId` (`reverted`). The web reads `requestId` when the
740
+ * RPC ack was lost. Plain strings throughout; old web/CLI ignore it.
741
+ */
742
+ rewind?: {
743
+ requestId: string;
744
+ action: string;
745
+ sourceClaudeSessionId: string;
746
+ claudeSessionId: string | null;
747
+ at: number;
748
+ state: string;
749
+ } | null;
734
750
  /**
735
751
  * B-290: the Claude conversation this session was imported from (the
736
752
  * on-disk transcript written by claude CLI / desktop / claude.ai that was
@@ -1331,6 +1347,16 @@ declare class ApiSessionClient extends EventEmitter {
1331
1347
  */
1332
1348
  suppressNextArchiveSignal(): void;
1333
1349
  skipExistingMessages(): void;
1350
+ /**
1351
+ * B-544: the newest `limit` session records, decrypted, ascending seq.
1352
+ * Read-only (no routing, no lastSeq change) — rewind reconcile reads the
1353
+ * durable log with it. Undecryptable records come back with `body: null`.
1354
+ */
1355
+ readLogTail(limit: number): Promise<Array<{
1356
+ seq: number;
1357
+ localId: string | null;
1358
+ body: unknown;
1359
+ }>>;
1334
1360
  updateMetadata(handler: (metadata: Metadata) => Metadata): void;
1335
1361
  /**
1336
1362
  * Update session agent state
package/dist/lib.mjs CHANGED
@@ -1,23 +1,23 @@
1
- export { A as ApiClient, a as ApiSessionClient } from './api-D5kfP3JF.mjs';
2
- export { l as logger } from './logger-BIzr7JN0.mjs';
3
- export { c as configuration } from './configuration-B0c-OP_h.mjs';
1
+ export { A as ApiClient, a as ApiSessionClient } from './api-Yoh_zKdR.mjs';
2
+ export { l as logger } from './logger-8dtZPn3n.mjs';
3
+ export { c as configuration } from './configuration-CiBUH72C.mjs';
4
4
  export { R as RawJSONLinesSchema } from './types-CkqAACXx.mjs';
5
5
  import 'axios';
6
- import 'node:events';
7
- import 'socket.io-client';
8
- import './attachmentLimits-D5pgmASK.mjs';
9
- import 'zod';
10
- import './index-BBg9j0XK.mjs';
11
- import '@paralleldrive/cuid2';
6
+ import './lidState-BbR6y9rq.mjs';
12
7
  import './authRelay-DSAvg1uv.mjs';
13
8
  import 'node:crypto';
14
9
  import 'tweetnacl';
15
- import './limits-DIo7rEBR.mjs';
16
- import './time-TxDyvAKk.mjs';
17
- import './lidState-X7iQg4y5.mjs';
18
10
  import 'os';
19
11
  import 'child_process';
20
- import './registerCommonHandlers-t15dS7xt.mjs';
12
+ import 'node:events';
13
+ import 'socket.io-client';
14
+ import './attachmentLimits-B8nzhw-i.mjs';
15
+ import 'zod';
16
+ import './index-vVWpCoTr.mjs';
17
+ import '@paralleldrive/cuid2';
18
+ import './limits-DIo7rEBR.mjs';
19
+ import './time-CRvAaC5H.mjs';
20
+ import './registerCommonHandlers-bSskMveZ.mjs';
21
21
  import 'util';
22
22
  import 'fs/promises';
23
23
  import 'crypto';
@@ -25,10 +25,10 @@ import 'path';
25
25
  import 'cross-spawn';
26
26
  import './projectPath-BTBIMB57.mjs';
27
27
  import 'url';
28
- import './sync-DnmsgL3w.mjs';
28
+ import './sync-SCvDzRy6.mjs';
29
29
  import './backgroundTaskActivity-8PdPxrvy.mjs';
30
- import './controlClient-BKmjlbGs.mjs';
31
- import './persistence-DgBhXxu7.mjs';
30
+ import './controlClient-DzmCQrY_.mjs';
31
+ import './persistence-C_xFQLsD.mjs';
32
32
  import 'node:fs/promises';
33
33
  import 'node:fs';
34
34
  import './contentLogMetadata-BlWI0egu.mjs';
@@ -36,4 +36,4 @@ import 'chalk';
36
36
  import 'node:util';
37
37
  import 'node:path';
38
38
  import 'node:os';
39
- import './package-D-W_r_pd.mjs';
39
+ import './package-tVYgFJoK.mjs';
@@ -1,8 +1,72 @@
1
- import { l as logger } from './logger-BIzr7JN0.mjs';
1
+ import { l as logger } from './logger-8dtZPn3n.mjs';
2
2
  import { e as encodeBase64, g as encrypt, h as decrypt, d as decodeBase64 } from './authRelay-DSAvg1uv.mjs';
3
3
  import os from 'os';
4
4
  import { execSync } from 'child_process';
5
5
 
6
+ const CONNECT_PENDING_MAX_MS = 15e3;
7
+ function decideConnect(input) {
8
+ if (input.connected) return "skip-connected";
9
+ if (input.pendingSince === null) return "connect";
10
+ const maxPendingMs = input.maxPendingMs ?? CONNECT_PENDING_MAX_MS;
11
+ const age = input.now - input.pendingSince;
12
+ if (age < 0 || age >= maxPendingMs) return "restart";
13
+ return "skip-pending";
14
+ }
15
+ class SocketConnectGuard {
16
+ constructor(socket, options = {}) {
17
+ this.socket = socket;
18
+ this.options = options;
19
+ this.now = options.now ?? Date.now;
20
+ const clear = () => {
21
+ this.pendingSince = null;
22
+ };
23
+ socket.on("connect", clear);
24
+ socket.on("connect_error", clear);
25
+ socket.on("disconnect", clear);
26
+ if (socket.active && !socket.connected) this.pendingSince = this.now();
27
+ }
28
+ pendingSince = null;
29
+ now;
30
+ connect(reason) {
31
+ const now = this.now();
32
+ const decision = decideConnect({
33
+ connected: this.socket.connected,
34
+ pendingSince: this.pendingSince,
35
+ now,
36
+ maxPendingMs: this.options.maxPendingMs
37
+ });
38
+ if (decision === "skip-connected") return decision;
39
+ if (decision === "skip-pending") {
40
+ this.options.log?.(`[socket-guard] ${reason}: CONNECT pending ${now - this.pendingSince}ms \u2014 not sending another`);
41
+ return decision;
42
+ }
43
+ if (decision === "restart") {
44
+ this.options.log?.(`[socket-guard] ${reason}: CONNECT pending ${now - this.pendingSince}ms \u2014 rebuilding the engine connection`);
45
+ this.pendingSince = null;
46
+ this.socket.disconnect();
47
+ }
48
+ this.pendingSince = now;
49
+ this.socket.connect();
50
+ return decision;
51
+ }
52
+ /** Test/diagnostic view. */
53
+ get pendingSinceMs() {
54
+ return this.pendingSince;
55
+ }
56
+ }
57
+ const guards = /* @__PURE__ */ new WeakMap();
58
+ function socketConnectGuard(socket, options) {
59
+ let guard = guards.get(socket);
60
+ if (!guard) {
61
+ guard = new SocketConnectGuard(socket, options);
62
+ guards.set(socket, guard);
63
+ }
64
+ return guard;
65
+ }
66
+ function connectGuarded(socket, reason, options) {
67
+ return socketConnectGuard(socket, options).connect(reason);
68
+ }
69
+
6
70
  function isRateQuotaCode(code) {
7
71
  return typeof code === "string" && code.endsWith("_rate_quota_exceeded");
8
72
  }
@@ -294,4 +358,4 @@ function shouldReconnect() {
294
358
  return true;
295
359
  }
296
360
 
297
- export { RpcHandlerManager as R, answerSocketRequest as a, shouldReconnect as b, describeSocketAckDrop as d, isRateQuotaCode as i, pauseForRateQuota as p, safeAck as s };
361
+ export { RpcHandlerManager as R, answerSocketRequest as a, safeAck as b, connectGuarded as c, describeSocketAckDrop as d, shouldReconnect as e, isRateQuotaCode as i, pauseForRateQuota as p, socketConnectGuard as s };
@@ -1,10 +1,74 @@
1
1
  'use strict';
2
2
 
3
- var logger = require('./logger-Ca5eRZ2j.cjs');
3
+ var logger = require('./logger-B1k7eZnq.cjs');
4
4
  var authRelay = require('./authRelay-BdYkC1Po.cjs');
5
5
  var os = require('os');
6
6
  var child_process = require('child_process');
7
7
 
8
+ const CONNECT_PENDING_MAX_MS = 15e3;
9
+ function decideConnect(input) {
10
+ if (input.connected) return "skip-connected";
11
+ if (input.pendingSince === null) return "connect";
12
+ const maxPendingMs = input.maxPendingMs ?? CONNECT_PENDING_MAX_MS;
13
+ const age = input.now - input.pendingSince;
14
+ if (age < 0 || age >= maxPendingMs) return "restart";
15
+ return "skip-pending";
16
+ }
17
+ class SocketConnectGuard {
18
+ constructor(socket, options = {}) {
19
+ this.socket = socket;
20
+ this.options = options;
21
+ this.now = options.now ?? Date.now;
22
+ const clear = () => {
23
+ this.pendingSince = null;
24
+ };
25
+ socket.on("connect", clear);
26
+ socket.on("connect_error", clear);
27
+ socket.on("disconnect", clear);
28
+ if (socket.active && !socket.connected) this.pendingSince = this.now();
29
+ }
30
+ pendingSince = null;
31
+ now;
32
+ connect(reason) {
33
+ const now = this.now();
34
+ const decision = decideConnect({
35
+ connected: this.socket.connected,
36
+ pendingSince: this.pendingSince,
37
+ now,
38
+ maxPendingMs: this.options.maxPendingMs
39
+ });
40
+ if (decision === "skip-connected") return decision;
41
+ if (decision === "skip-pending") {
42
+ this.options.log?.(`[socket-guard] ${reason}: CONNECT pending ${now - this.pendingSince}ms \u2014 not sending another`);
43
+ return decision;
44
+ }
45
+ if (decision === "restart") {
46
+ this.options.log?.(`[socket-guard] ${reason}: CONNECT pending ${now - this.pendingSince}ms \u2014 rebuilding the engine connection`);
47
+ this.pendingSince = null;
48
+ this.socket.disconnect();
49
+ }
50
+ this.pendingSince = now;
51
+ this.socket.connect();
52
+ return decision;
53
+ }
54
+ /** Test/diagnostic view. */
55
+ get pendingSinceMs() {
56
+ return this.pendingSince;
57
+ }
58
+ }
59
+ const guards = /* @__PURE__ */ new WeakMap();
60
+ function socketConnectGuard(socket, options) {
61
+ let guard = guards.get(socket);
62
+ if (!guard) {
63
+ guard = new SocketConnectGuard(socket, options);
64
+ guards.set(socket, guard);
65
+ }
66
+ return guard;
67
+ }
68
+ function connectGuarded(socket, reason, options) {
69
+ return socketConnectGuard(socket, options).connect(reason);
70
+ }
71
+
8
72
  function isRateQuotaCode(code) {
9
73
  return typeof code === "string" && code.endsWith("_rate_quota_exceeded");
10
74
  }
@@ -298,8 +362,10 @@ function shouldReconnect() {
298
362
 
299
363
  exports.RpcHandlerManager = RpcHandlerManager;
300
364
  exports.answerSocketRequest = answerSocketRequest;
365
+ exports.connectGuarded = connectGuarded;
301
366
  exports.describeSocketAckDrop = describeSocketAckDrop;
302
367
  exports.isRateQuotaCode = isRateQuotaCode;
303
368
  exports.pauseForRateQuota = pauseForRateQuota;
304
369
  exports.safeAck = safeAck;
305
370
  exports.shouldReconnect = shouldReconnect;
371
+ exports.socketConnectGuard = socketConnectGuard;
@@ -4,7 +4,7 @@ import { join } from 'node:path';
4
4
  import tweetnacl from 'tweetnacl';
5
5
  import { z } from 'zod';
6
6
  import { c as credentialRelayProblem, d as decodeBase64 } from './authRelay-DSAvg1uv.mjs';
7
- import { c as configuration } from './configuration-B0c-OP_h.mjs';
7
+ import { c as configuration } from './configuration-CiBUH72C.mjs';
8
8
 
9
9
  const AgentCredentialsSchema = z.object({
10
10
  token: z.string().min(1),
@@ -6,7 +6,7 @@ var path = require('node:path');
6
6
  var tweetnacl = require('tweetnacl');
7
7
  var z = require('zod');
8
8
  var authRelay = require('./authRelay-BdYkC1Po.cjs');
9
- var configuration = require('./configuration-CepfrPZ_.cjs');
9
+ var configuration = require('./configuration-PXAE4-FP.cjs');
10
10
 
11
11
  const AgentCredentialsSchema = z.z.object({
12
12
  token: z.z.string().min(1),
@@ -1,6 +1,6 @@
1
1
  import chalk from 'chalk';
2
2
  import { inspect } from 'node:util';
3
- import { d as appendPrivateFileSync, c as configuration } from './configuration-B0c-OP_h.mjs';
3
+ import { d as appendPrivateFileSync, c as configuration } from './configuration-CiBUH72C.mjs';
4
4
  import { existsSync, readdirSync, statSync } from 'node:fs';
5
5
  import { join, basename } from 'node:path';
6
6
 
@@ -236,7 +236,7 @@ async function listDaemonLogFiles(limit = 50) {
236
236
  return { file, path: fullPath, modified: stats.mtime };
237
237
  }).sort((a, b) => b.modified.getTime() - a.modified.getTime());
238
238
  try {
239
- const { readDaemonState } = await import('./persistence-DgBhXxu7.mjs');
239
+ const { readDaemonState } = await import('./persistence-C_xFQLsD.mjs');
240
240
  const state = await readDaemonState();
241
241
  if (!state) {
242
242
  return logs;
@@ -2,7 +2,7 @@
2
2
 
3
3
  var chalk = require('chalk');
4
4
  var node_util = require('node:util');
5
- var configuration = require('./configuration-CepfrPZ_.cjs');
5
+ var configuration = require('./configuration-PXAE4-FP.cjs');
6
6
  var node_fs = require('node:fs');
7
7
  var path = require('node:path');
8
8
 
@@ -238,7 +238,7 @@ async function listDaemonLogFiles(limit = 50) {
238
238
  return { file, path: fullPath, modified: stats.mtime };
239
239
  }).sort((a, b) => b.modified.getTime() - a.modified.getTime());
240
240
  try {
241
- const { readDaemonState } = await Promise.resolve().then(function () { return require('./persistence-Ceb-BPk6.cjs'); });
241
+ const { readDaemonState } = await Promise.resolve().then(function () { return require('./persistence-d3ZyER6o.cjs'); });
242
242
  const state = await readDaemonState();
243
243
  if (!state) {
244
244
  return logs;
@@ -1,9 +1,9 @@
1
1
  import os from 'node:os';
2
- import { p as packageJson } from './package-D-W_r_pd.mjs';
3
- import { c as configuration } from './configuration-B0c-OP_h.mjs';
2
+ import { p as packageJson } from './package-tVYgFJoK.mjs';
3
+ import { c as configuration } from './configuration-CiBUH72C.mjs';
4
4
  import { p as projectPath } from './projectPath-BTBIMB57.mjs';
5
5
  import { d as detectCLIAvailability } from './detectCLI-CSGMlV51.mjs';
6
- import { d as detectResumeSupport } from './localHappyAgentAuth-r83bTscW.mjs';
6
+ import { d as detectResumeSupport } from './localHappyAgentAuth-C7rDePjF.mjs';
7
7
 
8
8
  function buildInitialMachineMetadata(cliAvailability) {
9
9
  const hostSuffix = process.env.HAPPY_VARIANT === "dev" ? "-dev" : "";
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
3
  var os = require('node:os');
4
- var _package = require('./package-BfnmIH4b.cjs');
5
- var configuration = require('./configuration-CepfrPZ_.cjs');
4
+ var _package = require('./package-CC_txQ31.cjs');
5
+ var configuration = require('./configuration-PXAE4-FP.cjs');
6
6
  var projectPath = require('./projectPath-ChLhdOyt.cjs');
7
7
  var detectCLI = require('./detectCLI-DR9ZaN6B.cjs');
8
- var localHappyAgentAuth = require('./localHappyAgentAuth-D_Gc4K7h.cjs');
8
+ var localHappyAgentAuth = require('./localHappyAgentAuth-CboZb3_a.cjs');
9
9
 
10
10
  function buildInitialMachineMetadata(cliAvailability) {
11
11
  const hostSuffix = process.env.HAPPY_VARIANT === "dev" ? "-dev" : "";