very-happy-cli 0.2.162 → 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 (174) hide show
  1. package/dist/{AcpBackend--TmFHgRH.mjs → AcpBackend-B8l1ZePt.mjs} +3 -3
  2. package/dist/{AcpBackend-9asD_DL7.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-D4B-NNu2.cjs → BasePermissionHandler-DGQYvBPg.cjs} +1 -1
  6. package/dist/{BasePermissionHandler-DUBySe0f.mjs → BasePermissionHandler-DgtAtJTV.mjs} +1 -1
  7. package/dist/{BaseReasoningProcessor-CqLl-ikP.cjs → BaseReasoningProcessor-BqalZhQO.cjs} +1 -1
  8. package/dist/{BaseReasoningProcessor-9TybUGTq.mjs → BaseReasoningProcessor-Dfacnfhj.mjs} +1 -1
  9. package/dist/{agentHome-DQrq_FG1.mjs → agentHome-DM0urHEI.mjs} +4 -4
  10. package/dist/{agentHome-BohNUYnE.cjs → agentHome-DtsPKfTS.cjs} +4 -4
  11. package/dist/{api-CQnLOqRS.cjs → api-EKlS0r1w.cjs} +57 -15
  12. package/dist/{api-D57dsd6_.mjs → api-Yoh_zKdR.mjs} +57 -15
  13. package/dist/{apiMachine-fFFaWxYy.cjs → apiMachine-q71suojS.cjs} +20 -17
  14. package/dist/{apiMachine-78Aqzg--.mjs → apiMachine-s3HiV-SL.mjs} +20 -17
  15. package/dist/{assistantTools-mEz6uNqL.mjs → assistantTools-BWfAV349.mjs} +6 -6
  16. package/dist/{assistantTools-CwESq24n.cjs → assistantTools-D3cZvgUX.cjs} +6 -6
  17. package/dist/{attachmentContent-s1xPha4Q.mjs → attachmentContent-BLyyo1al.mjs} +2 -2
  18. package/dist/{attachmentContent-GHOk6Muq.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-BOaHWquu.mjs → auth-BTfv8yW0.mjs} +8 -8
  22. package/dist/{auth-BbSdXMQ_.cjs → auth-Cn3dQInF.cjs} +5 -5
  23. package/dist/{auth-C8V7-oUT.mjs → auth-Cxhx5evk.mjs} +5 -5
  24. package/dist/{auth-B8EagV6G.cjs → auth-Hpg4Yxfa.cjs} +8 -8
  25. package/dist/{auto-CWDOX35m.mjs → auto-BAAEVGZa.mjs} +15 -14
  26. package/dist/{auto-Bw_h0yVc.cjs → auto-CK8irHum.cjs} +15 -14
  27. package/dist/{bootstrap-BKmsYSwh.mjs → bootstrap-CTNjn_aj.mjs} +2 -2
  28. package/dist/{bootstrap-DvZjEa9_.cjs → bootstrap-D9SUykG_.cjs} +2 -2
  29. package/dist/{browser-CBZj-1Wx.cjs → browser-C8ztaIkm.cjs} +1 -1
  30. package/dist/{browser-CrMAr5fI.mjs → browser-DydXWySF.mjs} +1 -1
  31. package/dist/{claudeLocal-dhdlcQ6F.mjs → claudeLocal-CdJJovWq.mjs} +5 -5
  32. package/dist/{claudeLocal-Bpw-u9et.cjs → claudeLocal-CsLFMvFU.cjs} +5 -5
  33. package/dist/{claudeLocalLauncher-BFfGT4eY.mjs → claudeLocalLauncher-CKazNnl0.mjs} +10 -10
  34. package/dist/{claudeLocalLauncher-DWFWuLhY.cjs → claudeLocalLauncher-DRc-tET5.cjs} +10 -10
  35. package/dist/{claudeSessionFork-D9-mANmu.cjs → claudeSessionFork-BWdhyy9B.cjs} +1 -1
  36. package/dist/{claudeSessionFork-_DUrXaqd.mjs → claudeSessionFork-BfPW9D2S.mjs} +1 -1
  37. package/dist/{client-CVQJWqjx.cjs → client-BZtKFCJr.cjs} +2 -2
  38. package/dist/{client-DiBTHWNU.cjs → client-C1GAIJ04.cjs} +3 -3
  39. package/dist/{client-DwqHDsLb.mjs → client-DkoV3VWl.mjs} +2 -2
  40. package/dist/{client-Dk7x-s-O.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-C2ybs2mZ.mjs → codexAppServerClient-CfF33X-8.mjs} +2 -2
  44. package/dist/{codexAppServerClient-DlKv5TjG.cjs → codexAppServerClient-JddkV_aP.cjs} +2 -2
  45. package/dist/{codexCommand-4vLE31fj.cjs → codexCommand-Bdj3XZbi.cjs} +43 -40
  46. package/dist/{codexCommand-DnmFr9Qx.mjs → codexCommand-btJso8yC.mjs} +43 -40
  47. package/dist/{config-Btd4B05_.cjs → config-DpCNivmg.cjs} +3 -3
  48. package/dist/{config-CSOG_ZcP.mjs → config-nziuMb7g.mjs} +3 -3
  49. package/dist/{configuration-A5gW_0GE.mjs → configuration-CiBUH72C.mjs} +1 -1
  50. package/dist/{configuration-UsI0sxEv.cjs → configuration-PXAE4-FP.cjs} +1 -1
  51. package/dist/{connect-C9yxp8Om.cjs → connect-D7ehaW2C.cjs} +13 -13
  52. package/dist/{connect-DWYj8LP_.mjs → connect-XHdi6Vtc.mjs} +13 -13
  53. package/dist/{context-BXnxalWW.mjs → context-BpEYcuLv.mjs} +1 -1
  54. package/dist/{context-0FjjA4vJ.cjs → context-DhvXl1oC.cjs} +1 -1
  55. package/dist/{controlClient-BXktrQ4z.cjs → controlClient-DI-Er-Ww.cjs} +3 -3
  56. package/dist/{controlClient-CYzHrh3e.mjs → controlClient-DzmCQrY_.mjs} +3 -3
  57. package/dist/{createSessionMetadata-Dyg33ZlU.mjs → createSessionMetadata-B47GrTX6.mjs} +2 -2
  58. package/dist/{createSessionMetadata-EX1eAlHx.cjs → createSessionMetadata-D04x6OMW.cjs} +2 -2
  59. package/dist/{deterministicJson-eha_oMZ2.cjs → deterministicJson-BM8e8QwP.cjs} +9 -9
  60. package/dist/{deterministicJson-DiR7EOMO.mjs → deterministicJson-CKqT3awl.mjs} +9 -9
  61. package/dist/{doctor-FuCvKdRa.mjs → doctor-CSgzbG5L.mjs} +6 -6
  62. package/dist/{doctor-DunLBgVi.cjs → doctor-Cl6cqvok.cjs} +6 -6
  63. package/dist/{ensureDaemonRunning-B4dZFmUy.cjs → ensureDaemonRunning-CJ4-U32n.cjs} +5 -5
  64. package/dist/{ensureDaemonRunning-EZkb-CAF.mjs → ensureDaemonRunning-fPVSsjIm.mjs} +5 -5
  65. package/dist/forkBackfill-8eLDeS73.cjs +66 -0
  66. package/dist/forkBackfill-DYIjlN1Z.mjs +62 -0
  67. package/dist/{handleResumeCommand-CsXendKb.mjs → handleResumeCommand-B84dt2aH.mjs} +5 -5
  68. package/dist/{handleResumeCommand-CKMIw4pE.cjs → handleResumeCommand-bX-aNF_z.cjs} +5 -5
  69. package/dist/{index-DRhWHEuW.cjs → index-B2UvSWo_.cjs} +3 -3
  70. package/dist/{index-BOhgL3rh.cjs → index-CP2fh7JX.cjs} +38 -38
  71. package/dist/{index-9L39wqYR.mjs → index-CRJtZCK-.mjs} +39 -39
  72. package/dist/{index-CvXcVQ06.mjs → index-CbF87SeZ.mjs} +3 -3
  73. package/dist/{index-CZWAiydF.cjs → index-DaTxsAC3.cjs} +4 -4
  74. package/dist/{index-DJ-oV52i.cjs → index-DqlyNgt4.cjs} +6 -1
  75. package/dist/{index-DK2JpTJf.mjs → index-OEGj3BxE.mjs} +4 -4
  76. package/dist/{index-BBg9j0XK.mjs → index-vVWpCoTr.mjs} +6 -1
  77. package/dist/index.cjs +2 -2
  78. package/dist/index.mjs +2 -2
  79. package/dist/{install-B2duVo9a.mjs → install-CurvoW2u.mjs} +3 -3
  80. package/dist/{install-C8WyZI9K.cjs → install-__Mni4NU.cjs} +3 -3
  81. package/dist/lib.cjs +17 -17
  82. package/dist/lib.d.cts +47 -0
  83. package/dist/lib.d.mts +47 -0
  84. package/dist/lib.mjs +17 -17
  85. package/dist/{lidState-CigXWxhe.mjs → lidState-BbR6y9rq.mjs} +66 -2
  86. package/dist/{lidState-Ds-6ytZV.cjs → lidState-De2HP6nu.cjs} +67 -1
  87. package/dist/{localHappyAgentAuth-CaCyKzYp.mjs → localHappyAgentAuth-C7rDePjF.mjs} +1 -1
  88. package/dist/{localHappyAgentAuth-l0Na-5Ys.cjs → localHappyAgentAuth-CboZb3_a.cjs} +1 -1
  89. package/dist/{logger-CGE4C8ho.mjs → logger-8dtZPn3n.mjs} +2 -2
  90. package/dist/{logger-7ucWm9wp.cjs → logger-B1k7eZnq.cjs} +2 -2
  91. package/dist/{machineMetadata-ue1nkowa.mjs → machineMetadata-Bhp_w3-_.mjs} +3 -3
  92. package/dist/{machineMetadata-lMPtpF16.cjs → machineMetadata-C4OfKn6I.cjs} +3 -3
  93. package/dist/{main-3fIFXD-t.mjs → main-BQTaUrz0.mjs} +44 -44
  94. package/dist/{main-CFI0datL.cjs → main-eAiLspBM.cjs} +44 -44
  95. package/dist/{mcp-DARQBZ7l.mjs → mcp-DXCdbQHM.mjs} +14 -14
  96. package/dist/{mcp-DfxLAc1G.cjs → mcp-fapbM7Q4.cjs} +14 -14
  97. package/dist/{package-D1A-8ZJy.cjs → package-CC_txQ31.cjs} +8 -8
  98. package/dist/{package-DQsvY1XN.mjs → package-tVYgFJoK.mjs} +8 -8
  99. package/dist/{peerTools-D19hhSQF.mjs → peerTools-C1cduHh1.mjs} +4 -4
  100. package/dist/{peerTools-DLwNaEEV.cjs → peerTools-CqIcCEIg.cjs} +4 -4
  101. package/dist/{persistence-Cw8aLoyL.mjs → persistence-C_xFQLsD.mjs} +3 -3
  102. package/dist/{persistence-i0nQMLlk.cjs → persistence-d3ZyER6o.cjs} +3 -3
  103. package/dist/{piRunnerArgs-BUyxPxjZ.cjs → piRunnerArgs-DSxolPlV.cjs} +1 -1
  104. package/dist/{piRunnerArgs-58t454gw.mjs → piRunnerArgs-aq0zJX1Q.mjs} +1 -1
  105. package/dist/{piRuntime-DVPixFjl.mjs → piRuntime-BnNl5Lmb.mjs} +1 -1
  106. package/dist/{piRuntime-Dff73XCb.cjs → piRuntime-Dne1LPu-.cjs} +1 -1
  107. package/dist/{piTerminal-gHWFAyzq.mjs → piTerminal-CKWxWtW-.mjs} +16 -16
  108. package/dist/{piTerminal-Dz1RrO70.cjs → piTerminal-fjado4cR.cjs} +16 -16
  109. package/dist/{registerCommonHandlers-CMROPdJz.cjs → registerCommonHandlers-Dausbdsb.cjs} +2 -2
  110. package/dist/{registerCommonHandlers-Ckv5boQI.mjs → registerCommonHandlers-bSskMveZ.mjs} +2 -2
  111. package/dist/{registerKillSessionHandler-Cll4-o8Y.mjs → registerKillSessionHandler-Ben5lAsN.mjs} +6 -6
  112. package/dist/{registerKillSessionHandler-CA9-oelM.cjs → registerKillSessionHandler-CgKyzwqw.cjs} +6 -6
  113. package/dist/{remoteSessionClient-DX9jHLeW.cjs → remoteSessionClient-BkJt8SHa.cjs} +5 -5
  114. package/dist/{remoteSessionClient-BMjsbuBh.mjs → remoteSessionClient-DnCIuZpQ.mjs} +5 -5
  115. package/dist/{run-CjbGo2wb.cjs → run-B8dxbDsg.cjs} +33 -33
  116. package/dist/{run-CrunzDlt.mjs → run-BEYMVE4J.mjs} +32 -32
  117. package/dist/{runClaude-KN-4Y4LH.cjs → runClaude-Cy_HzLyO.cjs} +26 -23
  118. package/dist/{runClaude-WDBWRtnF.mjs → runClaude-Dd_P1c0f.mjs} +26 -23
  119. package/dist/{runClaudeDeps-QaEx8y5r.mjs → runClaudeDeps-JG7EUH7B.mjs} +441 -49
  120. package/dist/{runClaudeDeps-DW-8lnHv.cjs → runClaudeDeps-dxv910DR.cjs} +436 -44
  121. package/dist/{runGemini-Nf6SKBpw.mjs → runGemini-CpaBuvoW.mjs} +34 -34
  122. package/dist/{runGemini-Djmwjdv1.cjs → runGemini-DY1IDW_f.cjs} +34 -34
  123. package/dist/{runOpenClaw-CAqP5KFH.cjs → runOpenClaw-C0VARcYj.cjs} +20 -20
  124. package/dist/{runOpenClaw-9nHtmYbN.mjs → runOpenClaw-C7vrDQbq.mjs} +20 -20
  125. package/dist/{sandbox-C8Dd8GPM.cjs → sandbox-Bx9-M9rN.cjs} +4 -4
  126. package/dist/{sandbox-SP0THMt0.mjs → sandbox-DRUJZuaM.mjs} +4 -4
  127. package/dist/{selfCheck-D9ZXrK7h.cjs → selfCheck-Ba1sECTO.cjs} +34 -34
  128. package/dist/selfCheck-DdT8r263.mjs +84 -0
  129. package/dist/{send-DOx9aQsx.mjs → send-BrzkbMy2.mjs} +8 -8
  130. package/dist/{send-LPk6Q5HI.cjs → send-Dqdpx-w5.cjs} +8 -8
  131. package/dist/{server-BZNi8Hq_.mjs → server-CPMPoEAA.mjs} +4 -4
  132. package/dist/{server-CxT8jNyn.cjs → server-CfB8EWCg.cjs} +6 -6
  133. package/dist/{sessionLock-y9rnA4LK.cjs → sessionLock-BsP3Y_nG.cjs} +2 -2
  134. package/dist/{sessionLock-CfLqJfeI.mjs → sessionLock-DukLVzAQ.mjs} +2 -2
  135. package/dist/{sessionModeFile-BKxgNH3P.mjs → sessionModeFile-CSvi4H_t.mjs} +1 -1
  136. package/dist/{sessionModeFile-B5YeoQJh.cjs → sessionModeFile-JWWF6Nn7.cjs} +1 -1
  137. package/dist/{sessionOps-CdwVPSZz.mjs → sessionOps-BlMg1uAa.mjs} +5 -5
  138. package/dist/{sessionOps-GsELm2PZ.cjs → sessionOps-HuoMXcIZ.cjs} +4 -4
  139. package/dist/{sessionScanner-aLEv7mD3.cjs → sessionScanner-BWU6KvZw.cjs} +3 -3
  140. package/dist/{sessionScanner-Cdukzo70.mjs → sessionScanner-Ct-JoNHP.mjs} +3 -3
  141. package/dist/{sessions-Dne-OiRL.mjs → sessions-3Hw1xXMV.mjs} +9 -9
  142. package/dist/{sessions-CfG4WGN0.cjs → sessions-AjflCj5y.cjs} +9 -9
  143. package/dist/{setupOfflineReconnection-DiQma2Cc.mjs → setupOfflineReconnection-B_9xp36H.mjs} +2 -2
  144. package/dist/{setupOfflineReconnection-CFwltTcP.cjs → setupOfflineReconnection-Cxh9Sz9M.cjs} +2 -2
  145. package/dist/{spawn-DkgP2BGF.mjs → spawn-BXEVKCQK.mjs} +38 -18
  146. package/dist/{spawn-BI_sdgWs.cjs → spawn-CN8PH11G.cjs} +38 -17
  147. package/dist/{spawnAgents-Y1LjnCt9.mjs → spawnAgents-Czi2VDzj.mjs} +1 -1
  148. package/dist/{spawnAgents-iSu1Xzs5.cjs → spawnAgents-McixdtV1.cjs} +1 -1
  149. package/dist/{spawnHappyCLI-9mx4lPxh.mjs → spawnHappyCLI-BFN0h2fK.mjs} +1 -1
  150. package/dist/{spawnHappyCLI-BRdx0sAX.cjs → spawnHappyCLI-Cj-9-d_7.cjs} +1 -1
  151. package/dist/{startFileWatcher-C2HC2_Dg.cjs → startFileWatcher-BfMu444W.cjs} +1 -1
  152. package/dist/{startFileWatcher-COD5UKNs.mjs → startFileWatcher-Csql7gdv.mjs} +1 -1
  153. package/dist/{streamRelay-BLgU9X3R.mjs → streamRelay-BzMEEvJU.mjs} +1 -1
  154. package/dist/{streamRelay-DnObXZZj.cjs → streamRelay-C0AffuX6.cjs} +1 -1
  155. package/dist/{sync-Dj92ZJ8Y.cjs → sync--uxtLWbo.cjs} +5 -1
  156. package/dist/{sync-BpLasLu2.mjs → sync-SCvDzRy6.mjs} +5 -1
  157. package/dist/{systemPrompt-CyEz_IfR.cjs → systemPrompt-C1tRiZ-u.cjs} +2 -2
  158. package/dist/{systemPrompt-DsQoUgQw.mjs → systemPrompt-D0KMySrK.mjs} +2 -2
  159. package/dist/{teams-BETNMjpZ.mjs → teams-By-hcvMF.mjs} +6 -6
  160. package/dist/{teams-Ctx9zXn4.cjs → teams-CYDIFXEC.cjs} +6 -6
  161. package/dist/{time-CLwVAz6s.cjs → time-C7BplxuS.cjs} +1 -1
  162. package/dist/{time-CVvxdEDh.mjs → time-CRvAaC5H.mjs} +1 -1
  163. package/dist/{titleGenerator-B4AW3dLr.mjs → titleGenerator-CUG-n2r3.mjs} +1 -1
  164. package/dist/{titleGenerator-FDpdizn7.cjs → titleGenerator-Kw3sTnNQ.cjs} +2 -2
  165. package/dist/{todo-C3tyFeq1.cjs → todo-B7a7J5Ng.cjs} +6 -6
  166. package/dist/{todo-Jk4Vs7hP.mjs → todo-yuIsUvU8.mjs} +6 -6
  167. package/dist/{tools-CGxq3I52.cjs → tools-BTBgpiRc.cjs} +2 -2
  168. package/dist/{tools-O5beDK-s.cjs → tools-D7UeLMZ7.cjs} +1 -1
  169. package/dist/{tools-_kFe4m_l.mjs → tools-RvMKw7yx.mjs} +1 -1
  170. package/dist/{tools-BA1qkiV1.mjs → tools-gUjkPpCw.mjs} +2 -2
  171. package/dist/{uninstall-DHKF90lo.cjs → uninstall-D5D16-KM.cjs} +3 -3
  172. package/dist/{uninstall-C_mdAZlm.mjs → uninstall-Dx9FmLXs.mjs} +3 -3
  173. package/package.json +8 -8
  174. package/dist/selfCheck-7FaZtVu2.mjs +0 -84
@@ -1,34 +1,34 @@
1
- import { D as DefaultTransport, A as AcpBackend } from './AcpBackend--TmFHgRH.mjs';
2
- export { a as DEFAULT_IDLE_TIMEOUT_MS, b as DEFAULT_TOOL_CALL_TIMEOUT_MS, e as extractErrorDetail, f as formatDuration, c as formatDurationMinutes, h as handleAgentMessageChunk, d as handleAgentThoughtChunk, g as handleLegacyMessageChunk, i as handlePlanUpdate, j as handleThinkingUpdate, k as handleToolCall, l as handleToolCallUpdate, p as parseArgsFromContent } from './AcpBackend--TmFHgRH.mjs';
3
- import { l as logger } from './logger-CGE4C8ho.mjs';
4
- import { A as AcpSessionManager } from './AcpSessionManager-BSIBnWUb.mjs';
5
- import { l as BUILTIN_TODO_DISCOVERY, P as PROMPT_QUEUE_CAPABILITY } from './index-BBg9j0XK.mjs';
1
+ import { D as DefaultTransport, A as AcpBackend } from './AcpBackend-B8l1ZePt.mjs';
2
+ export { a as DEFAULT_IDLE_TIMEOUT_MS, b as DEFAULT_TOOL_CALL_TIMEOUT_MS, e as extractErrorDetail, f as formatDuration, c as formatDurationMinutes, h as handleAgentMessageChunk, d as handleAgentThoughtChunk, g as handleLegacyMessageChunk, i as handlePlanUpdate, j as handleThinkingUpdate, k as handleToolCall, l as handleToolCallUpdate, p as parseArgsFromContent } from './AcpBackend-B8l1ZePt.mjs';
3
+ import { l as logger } from './logger-8dtZPn3n.mjs';
4
+ import { A as AcpSessionManager } from './AcpSessionManager-BQnDJvct.mjs';
5
+ import { l as BUILTIN_TODO_DISCOVERY, P as PROMPT_QUEUE_CAPABILITY } from './index-vVWpCoTr.mjs';
6
6
  import { r as registerAgentAttachmentDownloads } from './agentAttachments-M_B5qEF2.mjs';
7
- import { c as configuration } from './configuration-A5gW_0GE.mjs';
8
- import { C as CLAUDE_ATTACHMENT_KINDS, a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt } from './attachmentContent-s1xPha4Q.mjs';
9
- import { p as preparePiTeamsRuntime } from './piRuntime-DVPixFjl.mjs';
7
+ import { c as configuration } from './configuration-CiBUH72C.mjs';
8
+ import { C as CLAUDE_ATTACHMENT_KINDS, a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt } from './attachmentContent-BLyyo1al.mjs';
9
+ import { p as preparePiTeamsRuntime } from './piRuntime-BnNl5Lmb.mjs';
10
10
  import { randomUUID } from 'node:crypto';
11
11
  import { join } from 'node:path';
12
- import { c as connectionState, A as ApiClient } from './api-D57dsd6_.mjs';
13
- import { M as MessageQueue2, r as registerKillSessionHandler } from './registerKillSessionHandler-Cll4-o8Y.mjs';
14
- import { h as hashObject, s as startHappyServer } from './deterministicJson-DiR7EOMO.mjs';
15
- import { readSettings } from './persistence-Cw8aLoyL.mjs';
16
- import { g as getInitialMachineMetadata } from './machineMetadata-ue1nkowa.mjs';
17
- import { c as createSessionMetadata } from './createSessionMetadata-Dyg33ZlU.mjs';
18
- import { s as setupOfflineReconnection } from './setupOfflineReconnection-DiQma2Cc.mjs';
19
- import { n as notifyDaemonSessionStarted, g as reportSessionEditToDaemon } from './controlClient-CYzHrh3e.mjs';
12
+ import { c as connectionState, A as ApiClient } from './api-Yoh_zKdR.mjs';
13
+ import { M as MessageQueue2, r as registerKillSessionHandler } from './registerKillSessionHandler-Ben5lAsN.mjs';
14
+ import { h as hashObject, s as startHappyServer } from './deterministicJson-CKqT3awl.mjs';
15
+ import { readSettings } from './persistence-C_xFQLsD.mjs';
16
+ import { g as getInitialMachineMetadata } from './machineMetadata-Bhp_w3-_.mjs';
17
+ import { c as createSessionMetadata } from './createSessionMetadata-B47GrTX6.mjs';
18
+ import { s as setupOfflineReconnection } from './setupOfflineReconnection-B_9xp36H.mjs';
19
+ import { n as notifyDaemonSessionStarted, g as reportSessionEditToDaemon } from './controlClient-DzmCQrY_.mjs';
20
20
  import { e as encodeBase64 } from './authRelay-DSAvg1uv.mjs';
21
- import { S as StreamRelay } from './streamRelay-BLgU9X3R.mjs';
21
+ import { S as StreamRelay } from './streamRelay-BzMEEvJU.mjs';
22
22
  import { p as projectPath } from './projectPath-BTBIMB57.mjs';
23
- import { B as BasePermissionHandler } from './BasePermissionHandler-DUBySe0f.mjs';
24
- import { T as TitleGenerator } from './titleGenerator-B4AW3dLr.mjs';
25
- import { w as writeSessionModeFile, n as normalizeAcpPermissionMode, r as removeSessionModeFile } from './sessionModeFile-BKxgNH3P.mjs';
23
+ import { B as BasePermissionHandler } from './BasePermissionHandler-DgtAtJTV.mjs';
24
+ import { T as TitleGenerator } from './titleGenerator-CUG-n2r3.mjs';
25
+ import { w as writeSessionModeFile, n as normalizeAcpPermissionMode, r as removeSessionModeFile } from './sessionModeFile-CSvi4H_t.mjs';
26
26
  import { E as EditReportThrottle, e as extractAcpEditPaths } from './editPaths-BVfS_FFL.mjs';
27
27
  import 'node:child_process';
28
28
  import '@agentclientprotocol/sdk';
29
- import './time-CVvxdEDh.mjs';
29
+ import './time-CRvAaC5H.mjs';
30
30
  import './contentLogMetadata-BlWI0egu.mjs';
31
- import './package-DQsvY1XN.mjs';
31
+ import './package-tVYgFJoK.mjs';
32
32
  import 'chalk';
33
33
  import 'node:util';
34
34
  import 'node:fs';
@@ -36,48 +36,48 @@ import '@paralleldrive/cuid2';
36
36
  import 'zod';
37
37
  import 'node:os';
38
38
  import 'node:fs/promises';
39
- import './attachmentLimits-D5pgmASK.mjs';
39
+ import './attachmentLimits-B8nzhw-i.mjs';
40
40
  import './resources-BdFBQi8r.mjs';
41
41
  import 'axios';
42
+ import './lidState-BbR6y9rq.mjs';
43
+ import 'os';
44
+ import 'child_process';
42
45
  import 'node:events';
43
46
  import 'socket.io-client';
44
47
  import './limits-DIo7rEBR.mjs';
45
- import './lidState-CigXWxhe.mjs';
46
- import 'os';
47
- import 'child_process';
48
- import './registerCommonHandlers-Ckv5boQI.mjs';
48
+ import './registerCommonHandlers-bSskMveZ.mjs';
49
49
  import 'util';
50
50
  import 'fs/promises';
51
51
  import 'crypto';
52
52
  import 'path';
53
53
  import 'cross-spawn';
54
- import './sync-BpLasLu2.mjs';
54
+ import './sync-SCvDzRy6.mjs';
55
55
  import './backgroundTaskActivity-8PdPxrvy.mjs';
56
56
  import 'tweetnacl';
57
57
  import './types-CkqAACXx.mjs';
58
- import './client-Dk7x-s-O.mjs';
59
- import './context-BXnxalWW.mjs';
60
- import './sessionOps-CdwVPSZz.mjs';
61
- import './tools-_kFe4m_l.mjs';
62
- import './tools-BA1qkiV1.mjs';
63
- import './client-DwqHDsLb.mjs';
64
- import './peerTools-D19hhSQF.mjs';
58
+ import './client-Do5CHQnZ.mjs';
59
+ import './context-BpEYcuLv.mjs';
60
+ import './sessionOps-BlMg1uAa.mjs';
61
+ import './tools-RvMKw7yx.mjs';
62
+ import './tools-gUjkPpCw.mjs';
63
+ import './client-DkoV3VWl.mjs';
64
+ import './peerTools-C1cduHh1.mjs';
65
65
  import './ids-DU6sLx4C.mjs';
66
- import './remoteSessionClient-BMjsbuBh.mjs';
66
+ import './remoteSessionClient-DnCIuZpQ.mjs';
67
67
  import '@modelcontextprotocol/sdk/server/mcp.js';
68
68
  import 'node:http';
69
69
  import '@modelcontextprotocol/sdk/server/streamableHttp.js';
70
- import './assistantTools-mEz6uNqL.mjs';
70
+ import './assistantTools-BWfAV349.mjs';
71
71
  import './terminals-Dlg0x3nY.mjs';
72
72
  import './terminalTitleSuggest-CeKsX_V6.mjs';
73
73
  import './tmuxSocket-B8Yx20sT.mjs';
74
- import './bootstrap-BKmsYSwh.mjs';
74
+ import './bootstrap-CTNjn_aj.mjs';
75
75
  import './agentGuidance-CQuNlNx8.mjs';
76
76
  import './trimIdent-BAjmv_TG.mjs';
77
77
  import './previewPath-CXN4Vag0.mjs';
78
78
  import './detectCLI-CSGMlV51.mjs';
79
79
  import 'fs';
80
- import './localHappyAgentAuth-CaCyKzYp.mjs';
80
+ import './localHappyAgentAuth-C7rDePjF.mjs';
81
81
  import 'url';
82
82
  import 'node:module';
83
83
  import './oneShotPrompts-DT4p6RNd.mjs';
@@ -1,4 +1,4 @@
1
- import { p as packageJson } from './package-DQsvY1XN.mjs';
1
+ import { p as packageJson } from './package-tVYgFJoK.mjs';
2
2
  import module$1 from 'node:module';
3
3
  import { existsSync } from 'node:fs';
4
4
  import { readdir, rm } from 'node:fs/promises';
@@ -57,10 +57,10 @@ async function pruneStaleCompileCaches(happyHomeDir, cliVersion) {
57
57
  async function run(args) {
58
58
  enableCompileCacheIfPossible(packageJson.version);
59
59
  if (isStandaloneVersionRequest(args) || isSelfCheckRequest(args)) {
60
- const { selfCheckMain } = await import('./selfCheck-7FaZtVu2.mjs');
60
+ const { selfCheckMain } = await import('./selfCheck-DdT8r263.mjs');
61
61
  process.exit(await selfCheckMain({ verbose: isSelfCheckRequest(args) }));
62
62
  }
63
- const { main } = await import('./main-3fIFXD-t.mjs');
63
+ const { main } = await import('./main-BQTaUrz0.mjs');
64
64
  await main();
65
65
  }
66
66
  void run(process.argv.slice(2));
@@ -2,14 +2,14 @@
2
2
 
3
3
  var node_fs = require('node:fs');
4
4
  var os = require('node:os');
5
- var logger = require('./logger-7ucWm9wp.cjs');
6
- var persistence = require('./persistence-i0nQMLlk.cjs');
5
+ var logger = require('./logger-B1k7eZnq.cjs');
6
+ var persistence = require('./persistence-d3ZyER6o.cjs');
7
7
  var loginShellEnv = require('./loginShellEnv-BkuYtExZ.cjs');
8
8
  require('chalk');
9
9
  require('node:util');
10
- require('./configuration-UsI0sxEv.cjs');
10
+ require('./configuration-PXAE4-FP.cjs');
11
11
  require('node:path');
12
- require('./package-D1A-8ZJy.cjs');
12
+ require('./package-CC_txQ31.cjs');
13
13
  require('node:fs/promises');
14
14
  require('zod');
15
15
  require('./authRelay-BdYkC1Po.cjs');
@@ -131,7 +131,12 @@ const sessionTranscriptDropEventSchema = z__namespace.object({
131
131
  t: z__namespace.literal("transcript-drop"),
132
132
  fromSeq: z__namespace.number().int().nonnegative(),
133
133
  toSeq: z__namespace.number().int().nonnegative().optional(),
134
- reason: z__namespace.string().min(1).optional()
134
+ reason: z__namespace.string().min(1).optional(),
135
+ /**
136
+ * B-544: the `conversation-rewind` requestId this tombstone answers. The
137
+ * wrapper keeps a rewind provisional until it sees it; absent from old web.
138
+ */
139
+ requestId: z__namespace.string().min(1).optional()
135
140
  });
136
141
  const sessionEventSchema = z__namespace.discriminatedUnion("t", [
137
142
  sessionTextEventSchema,
@@ -1,14 +1,14 @@
1
1
  import { statSync, readdirSync } from 'node:fs';
2
2
  import { homedir } from 'node:os';
3
- import { l as logger } from './logger-CGE4C8ho.mjs';
4
- import { readSettings } from './persistence-Cw8aLoyL.mjs';
3
+ import { l as logger } from './logger-8dtZPn3n.mjs';
4
+ import { readSettings } from './persistence-C_xFQLsD.mjs';
5
5
  import { d as describeAgentHome, C as CLAUDE_CONFIG_DIR_ENV, a as CODEX_HOME_ENV, f as findClaudeConversation, b as agentHomeCandidates, c as findCodexThread, r as resolveAgentHomes, A as AGENT_HOME_ENV_NAMES, g as agentHomeEnv, p as probeLoginShellEnv } from './loginShellEnv-Dw8M7tkI.mjs';
6
6
  export { h as claudeConversationPath, i as claudeProjectDirName, j as codexRolloutFileMatches, e as expandHomePath } from './loginShellEnv-Dw8M7tkI.mjs';
7
7
  import 'chalk';
8
8
  import 'node:util';
9
- import './configuration-A5gW_0GE.mjs';
9
+ import './configuration-CiBUH72C.mjs';
10
10
  import 'node:path';
11
- import './package-DQsvY1XN.mjs';
11
+ import './package-tVYgFJoK.mjs';
12
12
  import 'node:fs/promises';
13
13
  import 'zod';
14
14
  import './authRelay-DSAvg1uv.mjs';
@@ -111,7 +111,12 @@ const sessionTranscriptDropEventSchema = z.object({
111
111
  t: z.literal("transcript-drop"),
112
112
  fromSeq: z.number().int().nonnegative(),
113
113
  toSeq: z.number().int().nonnegative().optional(),
114
- reason: z.string().min(1).optional()
114
+ reason: z.string().min(1).optional(),
115
+ /**
116
+ * B-544: the `conversation-rewind` requestId this tombstone answers. The
117
+ * wrapper keeps a rewind provisional until it sees it; absent from old web.
118
+ */
119
+ requestId: z.string().min(1).optional()
115
120
  });
116
121
  const sessionEventSchema = z.discriminatedUnion("t", [
117
122
  sessionTextEventSchema,
package/dist/index.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- require('./package-D1A-8ZJy.cjs');
4
- require('./index-DRhWHEuW.cjs');
3
+ require('./package-CC_txQ31.cjs');
4
+ require('./index-B2UvSWo_.cjs');
5
5
  require('node:module');
6
6
  require('node:fs');
7
7
  require('node:fs/promises');
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import './package-DQsvY1XN.mjs';
2
- import './index-CvXcVQ06.mjs';
1
+ import './package-tVYgFJoK.mjs';
2
+ import './index-CbF87SeZ.mjs';
3
3
  import 'node:module';
4
4
  import 'node:fs';
5
5
  import 'node:fs/promises';
@@ -1,15 +1,15 @@
1
- import { l as logger } from './logger-CGE4C8ho.mjs';
1
+ import { l as logger } from './logger-8dtZPn3n.mjs';
2
2
  import { existsSync, writeFileSync, chmodSync } from 'fs';
3
3
  import { execSync } from 'child_process';
4
4
  import { t as trimIdent } from './trimIdent-BAjmv_TG.mjs';
5
5
  import os from 'os';
6
6
  import 'chalk';
7
7
  import 'node:util';
8
- import './configuration-A5gW_0GE.mjs';
8
+ import './configuration-CiBUH72C.mjs';
9
9
  import 'node:fs';
10
10
  import 'node:os';
11
11
  import 'node:path';
12
- import './package-DQsvY1XN.mjs';
12
+ import './package-tVYgFJoK.mjs';
13
13
  import 'node:fs/promises';
14
14
 
15
15
  const PLIST_LABEL = "com.happy-cli.daemon";
@@ -1,17 +1,17 @@
1
1
  'use strict';
2
2
 
3
- var logger = require('./logger-7ucWm9wp.cjs');
3
+ var logger = require('./logger-B1k7eZnq.cjs');
4
4
  var fs = require('fs');
5
5
  var child_process = require('child_process');
6
6
  var trimIdent = require('./trimIdent-4gvk9Wk6.cjs');
7
7
  var os = require('os');
8
8
  require('chalk');
9
9
  require('node:util');
10
- require('./configuration-UsI0sxEv.cjs');
10
+ require('./configuration-PXAE4-FP.cjs');
11
11
  require('node:fs');
12
12
  require('node:os');
13
13
  require('node:path');
14
- require('./package-D1A-8ZJy.cjs');
14
+ require('./package-CC_txQ31.cjs');
15
15
  require('node:fs/promises');
16
16
 
17
17
  const PLIST_LABEL = "com.happy-cli.daemon";
package/dist/lib.cjs CHANGED
@@ -1,25 +1,25 @@
1
1
  'use strict';
2
2
 
3
- var api = require('./api-CQnLOqRS.cjs');
4
- var logger = require('./logger-7ucWm9wp.cjs');
5
- var configuration = require('./configuration-UsI0sxEv.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-CLwVAz6s.cjs');
19
- require('./lidState-Ds-6ytZV.cjs');
20
12
  require('os');
21
13
  require('child_process');
22
- require('./registerCommonHandlers-CMROPdJz.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-Dj92ZJ8Y.cjs');
30
+ require('./sync--uxtLWbo.cjs');
31
31
  require('./backgroundTaskActivity-CBvUdj39.cjs');
32
- require('./controlClient-BXktrQ4z.cjs');
33
- require('./persistence-i0nQMLlk.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-D1A-8ZJy.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>;
@@ -719,6 +720,33 @@ type Metadata = {
719
720
  /** Lineage for sessions created via the fork / duplicate flow. */
720
721
  parentSessionId?: string;
721
722
  forkedFromMessageId?: string;
723
+ /**
724
+ * B-531: written by a fork's wrapper once the server accepted every replayed
725
+ * history message (capability fork-backfill-ack-v1). `very-happy spawn
726
+ * --fork --prompt` waits for it before sending, so the prompt cannot get a
727
+ * seq inside the replay. Absent on non-fork sessions and old wrappers.
728
+ */
729
+ forkBackfill?: {
730
+ done: true;
731
+ count: number;
732
+ failed?: boolean;
733
+ completedAt: number;
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;
722
750
  /**
723
751
  * B-290: the Claude conversation this session was imported from (the
724
752
  * on-disk transcript written by claude CLI / desktop / claude.ai that was
@@ -1169,6 +1197,15 @@ declare class ApiSessionClient extends EventEmitter {
1169
1197
  private fetchMessages;
1170
1198
  private static readonly MAX_OUTBOX_BATCH_SIZE;
1171
1199
  private flushOutbox;
1200
+ /**
1201
+ * B-531: resolve once the server has accepted (POST answered, seq assigned)
1202
+ * every message that was in the outbox when this was called. Messages
1203
+ * enqueued later do not extend the wait. Returns false when the client was
1204
+ * closed first — the caller must not treat that as "committed". Retries are
1205
+ * the outbox's own (InvalidateSync backoff), so a server that keeps failing
1206
+ * keeps this pending rather than resolving early.
1207
+ */
1208
+ drainOutbox(): Promise<boolean>;
1172
1209
  private rememberRoutedInbound;
1173
1210
  private rememberDirectInbound;
1174
1211
  private connectSessionRelay;
@@ -1310,6 +1347,16 @@ declare class ApiSessionClient extends EventEmitter {
1310
1347
  */
1311
1348
  suppressNextArchiveSignal(): void;
1312
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
+ }>>;
1313
1360
  updateMetadata(handler: (metadata: Metadata) => Metadata): void;
1314
1361
  /**
1315
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>;
@@ -719,6 +720,33 @@ type Metadata = {
719
720
  /** Lineage for sessions created via the fork / duplicate flow. */
720
721
  parentSessionId?: string;
721
722
  forkedFromMessageId?: string;
723
+ /**
724
+ * B-531: written by a fork's wrapper once the server accepted every replayed
725
+ * history message (capability fork-backfill-ack-v1). `very-happy spawn
726
+ * --fork --prompt` waits for it before sending, so the prompt cannot get a
727
+ * seq inside the replay. Absent on non-fork sessions and old wrappers.
728
+ */
729
+ forkBackfill?: {
730
+ done: true;
731
+ count: number;
732
+ failed?: boolean;
733
+ completedAt: number;
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;
722
750
  /**
723
751
  * B-290: the Claude conversation this session was imported from (the
724
752
  * on-disk transcript written by claude CLI / desktop / claude.ai that was
@@ -1169,6 +1197,15 @@ declare class ApiSessionClient extends EventEmitter {
1169
1197
  private fetchMessages;
1170
1198
  private static readonly MAX_OUTBOX_BATCH_SIZE;
1171
1199
  private flushOutbox;
1200
+ /**
1201
+ * B-531: resolve once the server has accepted (POST answered, seq assigned)
1202
+ * every message that was in the outbox when this was called. Messages
1203
+ * enqueued later do not extend the wait. Returns false when the client was
1204
+ * closed first — the caller must not treat that as "committed". Retries are
1205
+ * the outbox's own (InvalidateSync backoff), so a server that keeps failing
1206
+ * keeps this pending rather than resolving early.
1207
+ */
1208
+ drainOutbox(): Promise<boolean>;
1172
1209
  private rememberRoutedInbound;
1173
1210
  private rememberDirectInbound;
1174
1211
  private connectSessionRelay;
@@ -1310,6 +1347,16 @@ declare class ApiSessionClient extends EventEmitter {
1310
1347
  */
1311
1348
  suppressNextArchiveSignal(): void;
1312
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
+ }>>;
1313
1360
  updateMetadata(handler: (metadata: Metadata) => Metadata): void;
1314
1361
  /**
1315
1362
  * Update session agent state
package/dist/lib.mjs CHANGED
@@ -1,23 +1,23 @@
1
- export { A as ApiClient, a as ApiSessionClient } from './api-D57dsd6_.mjs';
2
- export { l as logger } from './logger-CGE4C8ho.mjs';
3
- export { c as configuration } from './configuration-A5gW_0GE.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-CVvxdEDh.mjs';
17
- import './lidState-CigXWxhe.mjs';
18
10
  import 'os';
19
11
  import 'child_process';
20
- import './registerCommonHandlers-Ckv5boQI.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-BpLasLu2.mjs';
28
+ import './sync-SCvDzRy6.mjs';
29
29
  import './backgroundTaskActivity-8PdPxrvy.mjs';
30
- import './controlClient-CYzHrh3e.mjs';
31
- import './persistence-Cw8aLoyL.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-DQsvY1XN.mjs';
39
+ import './package-tVYgFJoK.mjs';
@@ -1,8 +1,72 @@
1
- import { l as logger } from './logger-CGE4C8ho.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 };