very-happy-cli 0.2.165 → 0.2.166

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 (190) hide show
  1. package/README.md +1 -1
  2. package/dist/{AcpBackend-DCfNt9bD.cjs → AcpBackend-20VHOXwb.cjs} +3 -3
  3. package/dist/{AcpBackend-C11FnVw5.mjs → AcpBackend-tRWk7yi7.mjs} +3 -3
  4. package/dist/{AcpSessionManager-BQnDJvct.mjs → AcpSessionManager-B7FIrsys.mjs} +1 -1
  5. package/dist/{AcpSessionManager-9yN2iH4b.cjs → AcpSessionManager-Zf00QnlL.cjs} +1 -1
  6. package/dist/{BasePermissionHandler-CwJ48yiB.mjs → BasePermissionHandler-CDCLIrZJ.mjs} +1 -1
  7. package/dist/{BasePermissionHandler-BwQHxl6M.cjs → BasePermissionHandler-COKc4pmt.cjs} +1 -1
  8. package/dist/{BaseReasoningProcessor-ClF2g1qz.mjs → BaseReasoningProcessor-BDVKvooR.mjs} +1 -1
  9. package/dist/{BaseReasoningProcessor-81lf_M8G.cjs → BaseReasoningProcessor-DAGQdkNp.cjs} +1 -1
  10. package/dist/{agentGuidance-CQuNlNx8.mjs → agentGuidance-BDYt2Qy2.mjs} +4 -2
  11. package/dist/{agentGuidance-B5NATuFa.cjs → agentGuidance-BtBx2xxE.cjs} +4 -1
  12. package/dist/{agentHome-DvR176E5.mjs → agentHome-2IbIjKCa.mjs} +4 -4
  13. package/dist/{agentHome-D3Nn82kI.cjs → agentHome-KVWj6nCl.cjs} +4 -4
  14. package/dist/{api-DTVPUE7g.mjs → api-Cmz3XS4P.mjs} +14 -12
  15. package/dist/{api-AzdzTKFs.cjs → api-DnNL5fLw.cjs} +14 -12
  16. package/dist/{apiMachine-BQ-b4Lu3.mjs → apiMachine-B6ySCFe0.mjs} +2137 -65
  17. package/dist/{apiMachine-B_cJldfa.cjs → apiMachine-DeoQ8QbZ.cjs} +2134 -62
  18. package/dist/{attachmentContent-dzIs-wis.mjs → attachmentContent-CTXapi-_.mjs} +2 -2
  19. package/dist/{attachmentContent-muDCe4Gy.cjs → attachmentContent-DPWxHgX4.cjs} +2 -2
  20. package/dist/{attachmentLimits-eJZ4ZBjF.cjs → attachmentLimits-BfgKV5iE.cjs} +28 -2
  21. package/dist/{attachmentLimits-B8nzhw-i.mjs → attachmentLimits-C1PCCM79.mjs} +28 -2
  22. package/dist/{auth-Jtmvh1w4.mjs → auth-BMaBjRAj.mjs} +8 -8
  23. package/dist/{auth-DtP-B4gf.cjs → auth-D4-eQz85.cjs} +8 -8
  24. package/dist/{auth-CfLd3phE.cjs → auth-ietHtvwu.cjs} +5 -5
  25. package/dist/{auth-BY5ujhGn.mjs → auth-pzWIFdOD.mjs} +5 -5
  26. package/dist/{auto-DjWfR1UB.mjs → auto-DL75Dx3I.mjs} +83 -21
  27. package/dist/{auto-ClNnbSoF.cjs → auto-DOWTQDPa.cjs} +84 -20
  28. package/dist/{bootstrap-B1dMZA-u.cjs → bootstrap-BpXIc2wn.cjs} +2 -2
  29. package/dist/{bootstrap-D_ExGrY2.mjs → bootstrap-XE8A7Ut2.mjs} +2 -2
  30. package/dist/{browser-_gV7tcPs.cjs → browser-CcG8GLRV.cjs} +1 -1
  31. package/dist/{browser-mwzpOmcw.mjs → browser-DDFi1T8C.mjs} +1 -1
  32. package/dist/{claudeLocal-G5UmJ81F.cjs → claudeLocal-DXBXwIOG.cjs} +6 -6
  33. package/dist/{claudeLocal-BeHToEK5.mjs → claudeLocal-DmM5Oyhv.mjs} +6 -6
  34. package/dist/{claudeLocalLauncher-B4y2BsmO.cjs → claudeLocalLauncher-C41Y6Kp4.cjs} +14 -11
  35. package/dist/{claudeLocalLauncher-Cq6bqAT4.mjs → claudeLocalLauncher-Cs4eUC3P.mjs} +14 -11
  36. package/dist/{claudeSessionFork-CokUhS4r.mjs → claudeSessionFork-BdLnc2Hv.mjs} +1 -1
  37. package/dist/{claudeSessionFork-CDJq_b9r.cjs → claudeSessionFork-Cs0I3eGI.cjs} +1 -1
  38. package/dist/{client-BwaWdlCm.mjs → client-CbK33y_s.mjs} +3 -3
  39. package/dist/{client-uN9d6Git.cjs → client-DJ0kX_8M.cjs} +2 -2
  40. package/dist/{client-CJZKBZCE.mjs → client-GjTnsq6F.mjs} +2 -2
  41. package/dist/{client-Do7cGPEq.cjs → client-JISJx2f-.cjs} +3 -3
  42. package/dist/codex/happyMcpStdioBridge.cjs +23 -18
  43. package/dist/codex/happyMcpStdioBridge.mjs +22 -17
  44. package/dist/{codexAppServerClient-BuSdeUxT.cjs → codexAppServerClient-BTjn2ZCZ.cjs} +46 -2
  45. package/dist/{codexAppServerClient-B0QaMQsC.mjs → codexAppServerClient-CldXEojt.mjs} +47 -3
  46. package/dist/{codexCommand-YdYmykAR.cjs → codexCommand-BpD0N1F7.cjs} +71 -51
  47. package/dist/{codexCommand-C3gdjMAw.mjs → codexCommand-DjMU-Ijf.mjs} +71 -51
  48. package/dist/{config-CGCIFRCN.mjs → config-DjSJKatx.mjs} +3 -3
  49. package/dist/{config-ChoHFnfO.cjs → config-DuLL0Ppe.cjs} +3 -3
  50. package/dist/{configuration-BE61XNsg.cjs → configuration-B0cb3xA3.cjs} +1 -1
  51. package/dist/{configuration-L1qcGTFM.mjs → configuration-D2v3puap.mjs} +1 -1
  52. package/dist/{connect-D5IKfcfd.cjs → connect-B7JWEzyg.cjs} +13 -13
  53. package/dist/{connect-CFD0Em6a.mjs → connect-CnNNyM9I.mjs} +13 -13
  54. package/dist/{context-3WVw8qPz.cjs → context-BFUpYT39.cjs} +1 -1
  55. package/dist/{context-DaCCB4cm.mjs → context-DjfqLWzE.mjs} +1 -1
  56. package/dist/{controlClient-Ci7HTMII.mjs → controlClient-BMUJfUeF.mjs} +13 -6
  57. package/dist/{controlClient-RWTlQA4_.cjs → controlClient-CmnHGcyl.cjs} +13 -5
  58. package/dist/{createSessionMetadata-CWR-AB2A.mjs → createSessionMetadata-DU0bCg2m.mjs} +2 -2
  59. package/dist/{createSessionMetadata-CPGTztXP.cjs → createSessionMetadata-DbfRBhRu.cjs} +2 -2
  60. package/dist/{deterministicJson-BBwG-Ase.mjs → deterministicJson-D-WPUrZb.mjs} +36 -52
  61. package/dist/{deterministicJson-C4Jo2RWy.cjs → deterministicJson-Dp3TVyap.cjs} +41 -59
  62. package/dist/{doctor-CAC6qY9Z.mjs → doctor-BlXXyQ1L.mjs} +6 -6
  63. package/dist/{doctor-ZOQLE5AH.cjs → doctor-CkJmdPbi.cjs} +6 -6
  64. package/dist/{assistantTools-BsrG3PD-.cjs → downloadTarget-CiQqRIc-.cjs} +44 -6
  65. package/dist/{assistantTools-DPGga5lM.mjs → downloadTarget-DjSwMHun.mjs} +45 -8
  66. package/dist/{ensureDaemonRunning-b1pvEFcS.mjs → ensureDaemonRunning-CAQag1zE.mjs} +5 -5
  67. package/dist/{ensureDaemonRunning-mIgX2vnc.cjs → ensureDaemonRunning-C_aIOhgG.cjs} +5 -5
  68. package/dist/{handleResumeCommand-DGNhbv-3.cjs → handleResumeCommand-6KzBGDnl.cjs} +5 -5
  69. package/dist/{handleResumeCommand-CTGbZkCL.mjs → handleResumeCommand-Ci7wacT-.mjs} +5 -5
  70. package/dist/{index-vVWpCoTr.mjs → index-B0HEEYGh.mjs} +22 -5
  71. package/dist/{index-DqlyNgt4.cjs → index-C9hI8a10.cjs} +26 -4
  72. package/dist/{index-BzIxE0Eu.cjs → index-CaFCAlX8.cjs} +3 -3
  73. package/dist/{index-DrSPR59N.cjs → index-DBmNwMX9.cjs} +39 -38
  74. package/dist/{index-DIodyAqF.cjs → index-DEKIgZUo.cjs} +4 -4
  75. package/dist/{index-Diu6HdWH.mjs → index-DQplgo0W.mjs} +4 -4
  76. package/dist/{index-BgzjPv07.mjs → index-HQsigW_J.mjs} +3 -3
  77. package/dist/{index-DjtBengz.mjs → index-WGCT6SSV.mjs} +40 -39
  78. package/dist/index.cjs +2 -2
  79. package/dist/index.mjs +2 -2
  80. package/dist/{install-BO_W7VhL.mjs → install-BdvKiOQw.mjs} +2 -0
  81. package/dist/{install-DrUQk2DJ.cjs → install-CejEiRGW.cjs} +3 -3
  82. package/dist/{install-Cs5qAPrB.cjs → install-Cf6AFSWC.cjs} +2 -0
  83. package/dist/{install-Cp_aB-NQ.mjs → install-oJUvsFu9.mjs} +3 -3
  84. package/dist/lib.cjs +12 -12
  85. package/dist/lib.d.cts +55 -2
  86. package/dist/lib.d.mts +55 -2
  87. package/dist/lib.mjs +12 -12
  88. package/dist/{lidState-BLHLmhwd.mjs → lidState-BfximpjX.mjs} +1 -1
  89. package/dist/{lidState-z9ekRpZu.cjs → lidState-D8BmnJV1.cjs} +1 -1
  90. package/dist/{localHappyAgentAuth-BWvmc_Hg.mjs → localHappyAgentAuth-Ct1aXwqd.mjs} +1 -1
  91. package/dist/{localHappyAgentAuth-BCx0y1qW.cjs → localHappyAgentAuth-d7B6S_o7.cjs} +1 -1
  92. package/dist/{logger-CknSVkIe.mjs → logger-BpQcwNnt.mjs} +2 -2
  93. package/dist/{logger-D0hkk7Vo.cjs → logger-JTcJU-uL.cjs} +2 -2
  94. package/dist/{machineMetadata-BDCYOXQg.cjs → machineMetadata-BBg_Njw3.cjs} +3 -3
  95. package/dist/{machineMetadata-Cj1DoFot.mjs → machineMetadata-CBdxABeI.mjs} +3 -3
  96. package/dist/{main-CKUfkVG_.mjs → main-B5b1gA3K.mjs} +44 -44
  97. package/dist/{main-COAPGIso.cjs → main-C16fOGgn.cjs} +44 -44
  98. package/dist/{mcp-BILnw4si.cjs → mcp-BnNiBBax.cjs} +24 -19
  99. package/dist/{mcp-DeYUfpo8.mjs → mcp-DGNWgVdv.mjs} +23 -18
  100. package/dist/{mirrorProtocol-BUtmg1ws.cjs → mirrorProtocol-BEGk2--0.cjs} +80 -0
  101. package/dist/{mirrorProtocol-BNLtoWjO.mjs → mirrorProtocol-h5WHpdhh.mjs} +79 -1
  102. package/dist/{package-VIUXrYZ1.mjs → package-BqwrPxL0.mjs} +7 -7
  103. package/dist/{package-UkmvSFsg.cjs → package-C1XvUQFy.cjs} +7 -7
  104. package/dist/{peerTools-SWITnkqz.mjs → peerTools-CeCe-3lk.mjs} +4 -4
  105. package/dist/{peerTools-CttfOxti.cjs → peerTools-DPvbcs8V.cjs} +4 -4
  106. package/dist/{persistence-C6ztVW1W.cjs → persistence-2Xp_o6x6.cjs} +3 -3
  107. package/dist/{persistence-DujtUH94.mjs → persistence-B9LmhAE2.mjs} +3 -3
  108. package/dist/{piRunnerArgs-BVJHIjlk.mjs → piRunnerArgs-7FaTyNOq.mjs} +1 -1
  109. package/dist/{piRunnerArgs-tBQg6xDw.cjs → piRunnerArgs-DI29dDNo.cjs} +1 -1
  110. package/dist/{piRuntime-DKFA8u8t.mjs → piRuntime-0qEK5AqE.mjs} +1 -1
  111. package/dist/{piRuntime-DZzjF9It.cjs → piRuntime-R8XVChxK.cjs} +1 -1
  112. package/dist/{piTerminal-t5pQHCPT.cjs → piTerminal-Ccj0KNPr.cjs} +17 -17
  113. package/dist/{piTerminal-BTSaFlpV.mjs → piTerminal-zcQKc8Sp.mjs} +17 -17
  114. package/dist/precheckCompat-CWOi5c9L.cjs +29 -0
  115. package/dist/precheckCompat-DeEbilbr.mjs +26 -0
  116. package/dist/rateLimitWindows-C2Jk3Ih7.cjs +258 -0
  117. package/dist/rateLimitWindows-Dhfhbtqu.mjs +248 -0
  118. package/dist/{registerCommonHandlers--8ds2auE.cjs → registerCommonHandlers-Aha_KfM3.cjs} +2 -2
  119. package/dist/{registerCommonHandlers-BR0J4g64.mjs → registerCommonHandlers-DdfGsFbM.mjs} +2 -2
  120. package/dist/{registerKillSessionHandler-CI23l8aJ.cjs → registerKillSessionHandler-CjitOpUA.cjs} +6 -6
  121. package/dist/{registerKillSessionHandler-Czz0tdki.mjs → registerKillSessionHandler-DboQlGcH.mjs} +6 -6
  122. package/dist/{remoteSessionClient-DCAUHgPz.mjs → remoteSessionClient-B2DtWuNP.mjs} +5 -5
  123. package/dist/{remoteSessionClient-BAkIwM2S.cjs → remoteSessionClient-BwI8rpQw.cjs} +5 -5
  124. package/dist/{tools-mWqsE6ji.cjs → reportProgressTool-B-Rcy0s3.cjs} +73 -9
  125. package/dist/{tools-BVRoGcQH.mjs → reportProgressTool-DnAD8wOa.mjs} +67 -10
  126. package/dist/{run-CkKujjn8.cjs → run-Bh66Xs40.cjs} +268 -118
  127. package/dist/{run-B75qm2I6.mjs → run-DPEwJpQR.mjs} +266 -116
  128. package/dist/{runClaude-B1T9DLLi.cjs → runClaude-C-lJdAKD.cjs} +25 -20
  129. package/dist/{runClaude-aBfBweec.mjs → runClaude-DLr_nBzw.mjs} +25 -20
  130. package/dist/{runClaudeDeps-BOrPP4J1.mjs → runClaudeDeps-C7JV7nXG.mjs} +47 -37
  131. package/dist/{runClaudeDeps-BGjNGfuZ.cjs → runClaudeDeps-vWWLod7J.cjs} +44 -35
  132. package/dist/{runGemini-BuAA_OQb.cjs → runGemini-o-CUSayc.cjs} +42 -35
  133. package/dist/{runGemini-a-V7JE-J.mjs → runGemini-tH6sLw-G.mjs} +42 -35
  134. package/dist/{runOpenClaw-DUSwXg1A.mjs → runOpenClaw-C5DZvVhn.mjs} +18 -18
  135. package/dist/{runOpenClaw-BBVffIh9.cjs → runOpenClaw-D24f35l0.cjs} +18 -18
  136. package/dist/{sandbox-Brb_5wzc.mjs → sandbox-BaL1aslA.mjs} +4 -4
  137. package/dist/{sandbox-Fd2G5yaq.cjs → sandbox-TJZJ6ngw.cjs} +4 -4
  138. package/dist/selfCheck-DPi4lqme.mjs +84 -0
  139. package/dist/{selfCheck-NuJKMInJ.cjs → selfCheck-Dugi0Nk_.cjs} +34 -34
  140. package/dist/{send-4dgHKC3u.cjs → send-CkWOSYmU.cjs} +8 -8
  141. package/dist/{send-DEQJiq_x.mjs → send-DDcJ3ayi.mjs} +8 -8
  142. package/dist/{server-DWGcDmHG.cjs → server-7qFQ8J2u.cjs} +6 -6
  143. package/dist/{server-C6AlUFkw.mjs → server-CUjRvQSd.mjs} +4 -4
  144. package/dist/{sessionLock-B1GgaO1q.cjs → sessionLock-DfhNICyS.cjs} +2 -2
  145. package/dist/{sessionLock-Dm8QyGo4.mjs → sessionLock-DqVyHFAQ.mjs} +2 -2
  146. package/dist/{sessionModeFile-BvOEJ4Fl.cjs → sessionModeFile-CIznKD7O.cjs} +1 -1
  147. package/dist/{sessionModeFile-CuNAWCKL.mjs → sessionModeFile-M4OpiyrF.mjs} +1 -1
  148. package/dist/{sessionOps-DG5MMEp_.mjs → sessionOps-BnaEaOKs.mjs} +4 -4
  149. package/dist/{sessionOps-JP64uJmc.cjs → sessionOps-DOyy4gkY.cjs} +4 -4
  150. package/dist/{sessionScanner-DqSk5Ol_.mjs → sessionScanner-CcuOn9uU.mjs} +75 -19
  151. package/dist/{sessionScanner-BBPEgJ5S.cjs → sessionScanner-Cu1yKlj4.cjs} +75 -19
  152. package/dist/{sessions-DgJuw_i0.cjs → sessions-BQgk5Kw8.cjs} +9 -9
  153. package/dist/{sessions-4isbBAWi.mjs → sessions-C9O91rL1.mjs} +9 -9
  154. package/dist/{setupOfflineReconnection-_MoZtsro.mjs → setupOfflineReconnection-Byy8aeKT.mjs} +2 -2
  155. package/dist/{setupOfflineReconnection-CKJKVIUS.cjs → setupOfflineReconnection-DFmQ8s6I.cjs} +2 -2
  156. package/dist/{spawn-CshERWbY.cjs → spawn-BS7LPmSm.cjs} +13 -12
  157. package/dist/{spawn-BTOG4tTm.mjs → spawn-EZ2yrtWd.mjs} +13 -12
  158. package/dist/{spawnAgents-Czi2VDzj.mjs → spawnAgents-HDaE3C0-.mjs} +1 -1
  159. package/dist/{spawnAgents-McixdtV1.cjs → spawnAgents-vglexX9N.cjs} +1 -1
  160. package/dist/{spawnHappyCLI-Dc4xYm8P.mjs → spawnHappyCLI-BAa49m0q.mjs} +1 -1
  161. package/dist/{spawnHappyCLI-Dd5_8Vex.cjs → spawnHappyCLI-DyaldIe5.cjs} +1 -1
  162. package/dist/specialCommands-CCWtwIGZ.mjs +93 -0
  163. package/dist/specialCommands-DouFaJ_0.cjs +96 -0
  164. package/dist/{startFileWatcher-1LedLBY-.cjs → startFileWatcher-DQbbypJv.cjs} +1 -1
  165. package/dist/{startFileWatcher-B0VlG-Fn.mjs → startFileWatcher-Dfs4whzr.mjs} +1 -1
  166. package/dist/{streamRelay-C0AffuX6.cjs → streamRelay-Ce9sgcOV.cjs} +1 -1
  167. package/dist/{streamRelay-BzMEEvJU.mjs → streamRelay-Iogsh51a.mjs} +1 -1
  168. package/dist/{sync-Dfm6K2te.mjs → sync-BLpH13Kb.mjs} +1 -1
  169. package/dist/{sync-DwUUGGFz.cjs → sync-x_lI_3j_.cjs} +1 -1
  170. package/dist/{systemPrompt-CB1Ls0AE.cjs → systemPrompt-4erwILTB.cjs} +3 -3
  171. package/dist/{systemPrompt-D41Zw1a3.mjs → systemPrompt-BanyDihy.mjs} +3 -3
  172. package/dist/{teams-D8Ly3i6u.mjs → teams-D6BOT3lR.mjs} +7 -7
  173. package/dist/{teams-NWv2ji16.cjs → teams-DzetlGWC.cjs} +7 -7
  174. package/dist/{time-v1Y_qEJp.mjs → time-CfDKj6Bx.mjs} +1 -1
  175. package/dist/{time-BbzJ7PJQ.cjs → time-T0YmeOhS.cjs} +1 -1
  176. package/dist/{titleGenerator-BhoblAQY.mjs → titleGenerator-ChImQ4q-.mjs} +1 -1
  177. package/dist/{titleGenerator-cH6IkPRi.cjs → titleGenerator-CoMxqKfP.cjs} +2 -2
  178. package/dist/{todo-D1hgWV6d.cjs → todo-CZZebKZg.cjs} +6 -6
  179. package/dist/{todo-CuNct-fw.mjs → todo-SVtYxGON.mjs} +6 -6
  180. package/dist/{tools-jof0Bu54.mjs → tools-3X2z3YDe.mjs} +1 -1
  181. package/dist/{tools-c2fb0CF5.cjs → tools-IJ0TAcJs.cjs} +1 -1
  182. package/dist/transcriptCursor-B7T_gkQ0.mjs +102 -0
  183. package/dist/transcriptCursor-DcXGLeSc.cjs +106 -0
  184. package/dist/{uninstall-VPH5GfrA.cjs → uninstall-CqqCWj7w.cjs} +3 -3
  185. package/dist/{uninstall-BB7WYYAk.mjs → uninstall-CypD-kr1.mjs} +3 -3
  186. package/package.json +7 -7
  187. package/scripts/terminal_status_forwarder.cjs +89 -0
  188. package/dist/selfCheck-BgwJ3NGS.mjs +0 -84
  189. package/dist/specialCommands-BSqhYg5X.mjs +0 -52
  190. package/dist/specialCommands-DSsTeRej.cjs +0 -54
@@ -3,22 +3,22 @@
3
3
  var chalk = require('chalk');
4
4
  var node_fs = require('node:fs');
5
5
  var path = require('node:path');
6
- var persistence = require('./persistence-C6ztVW1W.cjs');
7
- var sessionOps = require('./sessionOps-JP64uJmc.cjs');
8
- var remoteSessionClient = require('./remoteSessionClient-BAkIwM2S.cjs');
6
+ var persistence = require('./persistence-2Xp_o6x6.cjs');
7
+ var sessionOps = require('./sessionOps-DOyy4gkY.cjs');
8
+ var remoteSessionClient = require('./remoteSessionClient-BwI8rpQw.cjs');
9
9
  require('node:fs/promises');
10
- require('./configuration-BE61XNsg.cjs');
10
+ require('./configuration-B0cb3xA3.cjs');
11
11
  require('node:os');
12
- require('./package-UkmvSFsg.cjs');
12
+ require('./package-C1XvUQFy.cjs');
13
13
  require('zod');
14
14
  require('./authRelay-BdYkC1Po.cjs');
15
15
  require('node:crypto');
16
16
  require('tweetnacl');
17
- require('./logger-D0hkk7Vo.cjs');
17
+ require('./logger-JTcJU-uL.cjs');
18
18
  require('node:util');
19
19
  require('axios');
20
- require('./controlClient-RWTlQA4_.cjs');
21
- require('./time-BbzJ7PJQ.cjs');
20
+ require('./controlClient-CmnHGcyl.cjs');
21
+ require('./time-T0YmeOhS.cjs');
22
22
  require('socket.io-client');
23
23
  require('./backgroundTaskActivity-CBvUdj39.cjs');
24
24
 
@@ -1,22 +1,22 @@
1
1
  import chalk from 'chalk';
2
2
  import { readFileSync } from 'node:fs';
3
3
  import { resolve } from 'node:path';
4
- import { readPersistedSessions } from './persistence-DujtUH94.mjs';
5
- import { s as sessionWebUrl } from './sessionOps-DG5MMEp_.mjs';
6
- import { d as deliverToSession, s as sendRemoteMessage } from './remoteSessionClient-DCAUHgPz.mjs';
4
+ import { readPersistedSessions } from './persistence-B9LmhAE2.mjs';
5
+ import { s as sessionWebUrl } from './sessionOps-BnaEaOKs.mjs';
6
+ import { d as deliverToSession, s as sendRemoteMessage } from './remoteSessionClient-B2DtWuNP.mjs';
7
7
  import 'node:fs/promises';
8
- import './configuration-L1qcGTFM.mjs';
8
+ import './configuration-D2v3puap.mjs';
9
9
  import 'node:os';
10
- import './package-VIUXrYZ1.mjs';
10
+ import './package-BqwrPxL0.mjs';
11
11
  import 'zod';
12
12
  import './authRelay-DSAvg1uv.mjs';
13
13
  import 'node:crypto';
14
14
  import 'tweetnacl';
15
- import './logger-CknSVkIe.mjs';
15
+ import './logger-BpQcwNnt.mjs';
16
16
  import 'node:util';
17
17
  import 'axios';
18
- import './controlClient-Ci7HTMII.mjs';
19
- import './time-v1Y_qEJp.mjs';
18
+ import './controlClient-BMUJfUeF.mjs';
19
+ import './time-CfDKj6Bx.mjs';
20
20
  import 'socket.io-client';
21
21
  import './backgroundTaskActivity-8PdPxrvy.mjs';
22
22
 
@@ -8,15 +8,15 @@ var module$1 = require('node:module');
8
8
  var node_crypto = require('node:crypto');
9
9
  var node_child_process = require('node:child_process');
10
10
  var promises = require('node:readline/promises');
11
- var configuration = require('./configuration-BE61XNsg.cjs');
12
- var persistence = require('./persistence-C6ztVW1W.cjs');
11
+ var configuration = require('./configuration-B0cb3xA3.cjs');
12
+ var persistence = require('./persistence-2Xp_o6x6.cjs');
13
13
  require('node:os');
14
- require('./package-UkmvSFsg.cjs');
14
+ require('./package-C1XvUQFy.cjs');
15
15
  require('node:fs/promises');
16
16
  require('zod');
17
17
  require('./authRelay-BdYkC1Po.cjs');
18
18
  require('tweetnacl');
19
- require('./logger-D0hkk7Vo.cjs');
19
+ require('./logger-JTcJU-uL.cjs');
20
20
  require('node:util');
21
21
 
22
22
  var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
@@ -33,9 +33,9 @@ function resolveLocalSignupBootstrap(configuredMode, configuredInviteCodes, gene
33
33
  };
34
34
  }
35
35
 
36
- const __filename$1 = node_url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('server-DWGcDmHG.cjs', document.baseURI).href)));
36
+ const __filename$1 = node_url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('server-7qFQ8J2u.cjs', document.baseURI).href)));
37
37
  const __dirname$1 = path.dirname(__filename$1);
38
- const require_ = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('server-DWGcDmHG.cjs', document.baseURI).href)));
38
+ const require_ = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('server-7qFQ8J2u.cjs', document.baseURI).href)));
39
39
  const PRISMA_QUERY_ENGINE_FILES = {
40
40
  "arm64-darwin": "libquery_engine-darwin-arm64.dylib.node",
41
41
  "x64-darwin": "libquery_engine-darwin.dylib.node",
@@ -6,15 +6,15 @@ import { createRequire } from 'node:module';
6
6
  import { randomBytes } from 'node:crypto';
7
7
  import { spawn } from 'node:child_process';
8
8
  import { createInterface } from 'node:readline/promises';
9
- import { c as configuration } from './configuration-L1qcGTFM.mjs';
10
- import { updateSettings } from './persistence-DujtUH94.mjs';
9
+ import { c as configuration } from './configuration-D2v3puap.mjs';
10
+ import { updateSettings } from './persistence-B9LmhAE2.mjs';
11
11
  import 'node:os';
12
- import './package-VIUXrYZ1.mjs';
12
+ import './package-BqwrPxL0.mjs';
13
13
  import 'node:fs/promises';
14
14
  import 'zod';
15
15
  import './authRelay-DSAvg1uv.mjs';
16
16
  import 'tweetnacl';
17
- import './logger-CknSVkIe.mjs';
17
+ import './logger-BpQcwNnt.mjs';
18
18
  import 'node:util';
19
19
 
20
20
  function resolveLocalSignupBootstrap(configuredMode, configuredInviteCodes, generatedInviteCode) {
@@ -2,8 +2,8 @@
2
2
 
3
3
  var node_fs = require('node:fs');
4
4
  var path = require('node:path');
5
- var configuration = require('./configuration-BE61XNsg.cjs');
6
- var logger = require('./logger-D0hkk7Vo.cjs');
5
+ var configuration = require('./configuration-B0cb3xA3.cjs');
6
+ var logger = require('./logger-JTcJU-uL.cjs');
7
7
 
8
8
  const PROCESS_IDENTITY_FIELDS = [
9
9
  "hostPid",
@@ -1,7 +1,7 @@
1
1
  import { existsSync, readFileSync, unlinkSync, mkdirSync, renameSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
- import { c as configuration, w as writePrivateFileSync } from './configuration-L1qcGTFM.mjs';
4
- import { l as logger } from './logger-CknSVkIe.mjs';
3
+ import { c as configuration, w as writePrivateFileSync } from './configuration-D2v3puap.mjs';
4
+ import { l as logger } from './logger-BpQcwNnt.mjs';
5
5
 
6
6
  const PROCESS_IDENTITY_FIELDS = [
7
7
  "hostPid",
@@ -2,7 +2,7 @@
2
2
 
3
3
  var node_fs = require('node:fs');
4
4
  var path = require('node:path');
5
- var configuration = require('./configuration-BE61XNsg.cjs');
5
+ var configuration = require('./configuration-B0cb3xA3.cjs');
6
6
 
7
7
  const SESSION_MODE_DIR = "session-modes";
8
8
  const ACP_PERMISSION_MODES = ["default", "acceptEdits", "plan", "bypassPermissions"];
@@ -1,6 +1,6 @@
1
1
  import { mkdirSync, renameSync, existsSync, unlinkSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
- import { w as writePrivateFileSync, c as configuration } from './configuration-L1qcGTFM.mjs';
3
+ import { w as writePrivateFileSync, c as configuration } from './configuration-D2v3puap.mjs';
4
4
 
5
5
  const SESSION_MODE_DIR = "session-modes";
6
6
  const ACP_PERMISSION_MODES = ["default", "acceptEdits", "plan", "bypassPermissions"];
@@ -1,10 +1,10 @@
1
1
  import axios from 'axios';
2
- import { c as configuration } from './configuration-L1qcGTFM.mjs';
2
+ import { c as configuration } from './configuration-D2v3puap.mjs';
3
3
  import { e as encodeBase64, g as encrypt, d as decodeBase64, h as decrypt } from './authRelay-DSAvg1uv.mjs';
4
- import { l as listDaemonSessions, s as stopDaemonSession } from './controlClient-Ci7HTMII.mjs';
5
- import { readCredentialsForConfiguredRelay, readPersistedSessions } from './persistence-DujtUH94.mjs';
4
+ import { l as listDaemonSessions, s as stopDaemonSession } from './controlClient-BMUJfUeF.mjs';
5
+ import { readCredentialsForConfiguredRelay, readPersistedSessions } from './persistence-B9LmhAE2.mjs';
6
6
  import { randomUUID } from 'node:crypto';
7
- import { d as delay } from './time-v1Y_qEJp.mjs';
7
+ import { d as delay } from './time-CfDKj6Bx.mjs';
8
8
  import { io } from 'socket.io-client';
9
9
  import { b as backgroundTasksReport } from './backgroundTaskActivity-8PdPxrvy.mjs';
10
10
 
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
3
  var axios = require('axios');
4
- var configuration = require('./configuration-BE61XNsg.cjs');
4
+ var configuration = require('./configuration-B0cb3xA3.cjs');
5
5
  var authRelay = require('./authRelay-BdYkC1Po.cjs');
6
- var controlClient = require('./controlClient-RWTlQA4_.cjs');
7
- var persistence = require('./persistence-C6ztVW1W.cjs');
6
+ var controlClient = require('./controlClient-CmnHGcyl.cjs');
7
+ var persistence = require('./persistence-2Xp_o6x6.cjs');
8
8
  var node_crypto = require('node:crypto');
9
- var time = require('./time-BbzJ7PJQ.cjs');
9
+ var time = require('./time-T0YmeOhS.cjs');
10
10
  var socket_ioClient = require('socket.io-client');
11
11
  var backgroundTaskActivity = require('./backgroundTaskActivity-CBvUdj39.cjs');
12
12
 
@@ -1,9 +1,10 @@
1
- import { I as InvalidateSync } from './sync-Dfm6K2te.mjs';
1
+ import { I as InvalidateSync } from './sync-BLpH13Kb.mjs';
2
2
  import { R as RawJSONLinesSchema } from './types-CkqAACXx.mjs';
3
3
  import { join } from 'node:path';
4
- import { readFile } from 'node:fs/promises';
5
- import { l as logger } from './logger-CknSVkIe.mjs';
6
- import { s as startFileWatcher } from './startFileWatcher-B0VlG-Fn.mjs';
4
+ import { statSync } from 'node:fs';
5
+ import { r as readTranscriptIncrement, i as isValidTranscriptHint } from './transcriptCursor-B7T_gkQ0.mjs';
6
+ import { l as logger } from './logger-BpQcwNnt.mjs';
7
+ import { s as startFileWatcher } from './startFileWatcher-Dfs4whzr.mjs';
7
8
  import { g as getProjectPath } from './path-D2wdaNSk.mjs';
8
9
 
9
10
  class Future {
@@ -40,8 +41,60 @@ async function createSessionScanner(opts) {
40
41
  let watchers = /* @__PURE__ */ new Map();
41
42
  let processedMessageKeys = /* @__PURE__ */ new Set();
42
43
  let deadSessions = /* @__PURE__ */ new Set();
44
+ const cursors = /* @__PURE__ */ new Map();
45
+ const watcherPaths = /* @__PURE__ */ new Map();
46
+ const premarkedSessions = /* @__PURE__ */ new Set();
47
+ const premarkLimits = /* @__PURE__ */ new Map();
48
+ const transcriptPathFor = (sessionId) => {
49
+ const hinted = opts.transcriptPathHints?.get(sessionId);
50
+ return isValidTranscriptHint(sessionId, hinted) ? hinted : join(projectDir, `${sessionId}.jsonl`);
51
+ };
52
+ const readSessionMessages = async (sessionId) => {
53
+ const path = transcriptPathFor(sessionId);
54
+ const state = cursors.get(sessionId);
55
+ const pathChanged = state !== void 0 && state.path !== path;
56
+ const cursor = state && !pathChanged ? state.cursor : null;
57
+ logger.debug(`[SESSION_SCANNER] Reading session file: ${path}`);
58
+ let premarkCursor = null;
59
+ if (pathChanged && premarkedSessions.has(sessionId)) {
60
+ const limit = premarkLimits.get(sessionId);
61
+ const old = await readTranscriptIncrement(path, null, limit && limit.path === path ? { limit: limit.size } : {});
62
+ if (old) {
63
+ const history = parseSessionLines(old.lines);
64
+ logger.debug(`[SESSION_SCANNER] Transcript path for ${sessionId} changed; pre-marking ${history.length} existing messages`);
65
+ for (const m of history) processedMessageKeys.add(messageKey(m));
66
+ premarkCursor = old.cursor;
67
+ }
68
+ premarkLimits.delete(sessionId);
69
+ }
70
+ const result = await readTranscriptIncrement(path, premarkCursor ?? cursor);
71
+ if (!result) {
72
+ cursors.set(sessionId, { path, cursor: null });
73
+ logger.debug(`[SESSION_SCANNER] Session file not found: ${path}`);
74
+ return [];
75
+ }
76
+ if (result.reset) {
77
+ logger.debug(`[SESSION_SCANNER] Transcript ${sessionId} was ${result.reset}; re-reading from the start`);
78
+ }
79
+ cursors.set(sessionId, { path, cursor: result.cursor });
80
+ return parseSessionLines(result.lines);
81
+ };
82
+ let invalidateNow = () => {
83
+ };
84
+ const unsubscribeHints = opts.transcriptPathHints?.subscribe((sessionId, path) => {
85
+ if (premarkedSessions.has(sessionId)) {
86
+ let size = 0;
87
+ try {
88
+ size = statSync(path).size;
89
+ } catch {
90
+ }
91
+ premarkLimits.set(sessionId, { path, size });
92
+ }
93
+ invalidateNow();
94
+ });
43
95
  if (opts.sessionId) {
44
- let messages = await readSessionLog(projectDir, opts.sessionId);
96
+ premarkedSessions.add(opts.sessionId);
97
+ let messages = await readSessionMessages(opts.sessionId);
45
98
  logger.debug(`[SESSION_SCANNER] Marking ${messages.length} existing messages as processed from session ${opts.sessionId}`);
46
99
  for (let m of messages) {
47
100
  processedMessageKeys.add(messageKey(m));
@@ -64,7 +117,7 @@ async function createSessionScanner(opts) {
64
117
  }
65
118
  }
66
119
  for (let session of sessions) {
67
- const sessionMessages = await readSessionLog(projectDir, session);
120
+ const sessionMessages = await readSessionMessages(session);
68
121
  let skipped = 0;
69
122
  let sent = 0;
70
123
  for (let file of sessionMessages) {
@@ -89,10 +142,19 @@ async function createSessionScanner(opts) {
89
142
  }
90
143
  }
91
144
  for (let p of sessions) {
145
+ const path = transcriptPathFor(p);
146
+ if (watchers.has(p) && watcherPaths.get(p) !== path) {
147
+ logger.debug(`[SESSION_SCANNER] Transcript path for ${p} changed; re-attaching watcher`);
148
+ watchers.get(p)?.();
149
+ watchers.delete(p);
150
+ watcherPaths.delete(p);
151
+ sync.invalidate();
152
+ }
92
153
  if (!watchers.has(p) && !deadSessions.has(p)) {
93
154
  logger.debug(`[SESSION_SCANNER] Starting watcher for session: ${p}`);
155
+ watcherPaths.set(p, path);
94
156
  watchers.set(p, startFileWatcher(
95
- join(projectDir, `${p}.jsonl`),
157
+ path,
96
158
  () => {
97
159
  sync.invalidate();
98
160
  },
@@ -102,6 +164,7 @@ async function createSessionScanner(opts) {
102
164
  logger.debug(`[SESSION_SCANNER] Session ${p} transcript never appeared \u2014 dropping it`);
103
165
  watchers.get(p)?.();
104
166
  watchers.delete(p);
167
+ watcherPaths.delete(p);
105
168
  deadSessions.add(p);
106
169
  pendingSessions.delete(p);
107
170
  }
@@ -110,12 +173,14 @@ async function createSessionScanner(opts) {
110
173
  }
111
174
  }
112
175
  });
176
+ invalidateNow = () => sync.invalidate();
113
177
  await sync.invalidateAndAwait();
114
178
  const intervalId = setInterval(() => {
115
179
  sync.invalidate();
116
180
  }, 3e3);
117
181
  return {
118
182
  cleanup: async () => {
183
+ unsubscribeHints?.();
119
184
  clearInterval(intervalId);
120
185
  for (let w of watchers.values()) {
121
186
  w();
@@ -141,7 +206,8 @@ async function createSessionScanner(opts) {
141
206
  return;
142
207
  }
143
208
  if (options?.treatExistingAsProcessed) {
144
- const existing = await readSessionLog(projectDir, sessionId);
209
+ premarkedSessions.add(sessionId);
210
+ const existing = await readSessionMessages(sessionId);
145
211
  logger.debug(`[SESSION_SCANNER] Pre-marking ${existing.length} existing messages as processed for new session ${sessionId}`);
146
212
  for (const m of existing) {
147
213
  processedMessageKeys.add(messageKey(m));
@@ -169,17 +235,7 @@ function messageKey(message) {
169
235
  throw Error();
170
236
  }
171
237
  }
172
- async function readSessionLog(projectDir, sessionId) {
173
- const expectedSessionFile = join(projectDir, `${sessionId}.jsonl`);
174
- logger.debug(`[SESSION_SCANNER] Reading session file: ${expectedSessionFile}`);
175
- let file;
176
- try {
177
- file = await readFile(expectedSessionFile, "utf-8");
178
- } catch (error) {
179
- logger.debug(`[SESSION_SCANNER] Session file not found: ${expectedSessionFile}`);
180
- return [];
181
- }
182
- let lines = file.split("\n");
238
+ function parseSessionLines(lines) {
183
239
  let messages = [];
184
240
  for (let l of lines) {
185
241
  try {
@@ -1,11 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var sync = require('./sync-DwUUGGFz.cjs');
3
+ var sync = require('./sync-x_lI_3j_.cjs');
4
4
  var types = require('./types-CRS-srZK.cjs');
5
5
  var path$1 = require('node:path');
6
- var promises = require('node:fs/promises');
7
- var logger = require('./logger-D0hkk7Vo.cjs');
8
- var startFileWatcher = require('./startFileWatcher-1LedLBY-.cjs');
6
+ var node_fs = require('node:fs');
7
+ var transcriptCursor = require('./transcriptCursor-DcXGLeSc.cjs');
8
+ var logger = require('./logger-JTcJU-uL.cjs');
9
+ var startFileWatcher = require('./startFileWatcher-DQbbypJv.cjs');
9
10
  var path = require('./path-B7zW-WwE.cjs');
10
11
 
11
12
  class Future {
@@ -42,8 +43,60 @@ async function createSessionScanner(opts) {
42
43
  let watchers = /* @__PURE__ */ new Map();
43
44
  let processedMessageKeys = /* @__PURE__ */ new Set();
44
45
  let deadSessions = /* @__PURE__ */ new Set();
46
+ const cursors = /* @__PURE__ */ new Map();
47
+ const watcherPaths = /* @__PURE__ */ new Map();
48
+ const premarkedSessions = /* @__PURE__ */ new Set();
49
+ const premarkLimits = /* @__PURE__ */ new Map();
50
+ const transcriptPathFor = (sessionId) => {
51
+ const hinted = opts.transcriptPathHints?.get(sessionId);
52
+ return transcriptCursor.isValidTranscriptHint(sessionId, hinted) ? hinted : path$1.join(projectDir, `${sessionId}.jsonl`);
53
+ };
54
+ const readSessionMessages = async (sessionId) => {
55
+ const path = transcriptPathFor(sessionId);
56
+ const state = cursors.get(sessionId);
57
+ const pathChanged = state !== void 0 && state.path !== path;
58
+ const cursor = state && !pathChanged ? state.cursor : null;
59
+ logger.logger.debug(`[SESSION_SCANNER] Reading session file: ${path}`);
60
+ let premarkCursor = null;
61
+ if (pathChanged && premarkedSessions.has(sessionId)) {
62
+ const limit = premarkLimits.get(sessionId);
63
+ const old = await transcriptCursor.readTranscriptIncrement(path, null, limit && limit.path === path ? { limit: limit.size } : {});
64
+ if (old) {
65
+ const history = parseSessionLines(old.lines);
66
+ logger.logger.debug(`[SESSION_SCANNER] Transcript path for ${sessionId} changed; pre-marking ${history.length} existing messages`);
67
+ for (const m of history) processedMessageKeys.add(messageKey(m));
68
+ premarkCursor = old.cursor;
69
+ }
70
+ premarkLimits.delete(sessionId);
71
+ }
72
+ const result = await transcriptCursor.readTranscriptIncrement(path, premarkCursor ?? cursor);
73
+ if (!result) {
74
+ cursors.set(sessionId, { path, cursor: null });
75
+ logger.logger.debug(`[SESSION_SCANNER] Session file not found: ${path}`);
76
+ return [];
77
+ }
78
+ if (result.reset) {
79
+ logger.logger.debug(`[SESSION_SCANNER] Transcript ${sessionId} was ${result.reset}; re-reading from the start`);
80
+ }
81
+ cursors.set(sessionId, { path, cursor: result.cursor });
82
+ return parseSessionLines(result.lines);
83
+ };
84
+ let invalidateNow = () => {
85
+ };
86
+ const unsubscribeHints = opts.transcriptPathHints?.subscribe((sessionId, path) => {
87
+ if (premarkedSessions.has(sessionId)) {
88
+ let size = 0;
89
+ try {
90
+ size = node_fs.statSync(path).size;
91
+ } catch {
92
+ }
93
+ premarkLimits.set(sessionId, { path, size });
94
+ }
95
+ invalidateNow();
96
+ });
45
97
  if (opts.sessionId) {
46
- let messages = await readSessionLog(projectDir, opts.sessionId);
98
+ premarkedSessions.add(opts.sessionId);
99
+ let messages = await readSessionMessages(opts.sessionId);
47
100
  logger.logger.debug(`[SESSION_SCANNER] Marking ${messages.length} existing messages as processed from session ${opts.sessionId}`);
48
101
  for (let m of messages) {
49
102
  processedMessageKeys.add(messageKey(m));
@@ -66,7 +119,7 @@ async function createSessionScanner(opts) {
66
119
  }
67
120
  }
68
121
  for (let session of sessions) {
69
- const sessionMessages = await readSessionLog(projectDir, session);
122
+ const sessionMessages = await readSessionMessages(session);
70
123
  let skipped = 0;
71
124
  let sent = 0;
72
125
  for (let file of sessionMessages) {
@@ -91,10 +144,19 @@ async function createSessionScanner(opts) {
91
144
  }
92
145
  }
93
146
  for (let p of sessions) {
147
+ const path = transcriptPathFor(p);
148
+ if (watchers.has(p) && watcherPaths.get(p) !== path) {
149
+ logger.logger.debug(`[SESSION_SCANNER] Transcript path for ${p} changed; re-attaching watcher`);
150
+ watchers.get(p)?.();
151
+ watchers.delete(p);
152
+ watcherPaths.delete(p);
153
+ sync$1.invalidate();
154
+ }
94
155
  if (!watchers.has(p) && !deadSessions.has(p)) {
95
156
  logger.logger.debug(`[SESSION_SCANNER] Starting watcher for session: ${p}`);
157
+ watcherPaths.set(p, path);
96
158
  watchers.set(p, startFileWatcher.startFileWatcher(
97
- path$1.join(projectDir, `${p}.jsonl`),
159
+ path,
98
160
  () => {
99
161
  sync$1.invalidate();
100
162
  },
@@ -104,6 +166,7 @@ async function createSessionScanner(opts) {
104
166
  logger.logger.debug(`[SESSION_SCANNER] Session ${p} transcript never appeared \u2014 dropping it`);
105
167
  watchers.get(p)?.();
106
168
  watchers.delete(p);
169
+ watcherPaths.delete(p);
107
170
  deadSessions.add(p);
108
171
  pendingSessions.delete(p);
109
172
  }
@@ -112,12 +175,14 @@ async function createSessionScanner(opts) {
112
175
  }
113
176
  }
114
177
  });
178
+ invalidateNow = () => sync$1.invalidate();
115
179
  await sync$1.invalidateAndAwait();
116
180
  const intervalId = setInterval(() => {
117
181
  sync$1.invalidate();
118
182
  }, 3e3);
119
183
  return {
120
184
  cleanup: async () => {
185
+ unsubscribeHints?.();
121
186
  clearInterval(intervalId);
122
187
  for (let w of watchers.values()) {
123
188
  w();
@@ -143,7 +208,8 @@ async function createSessionScanner(opts) {
143
208
  return;
144
209
  }
145
210
  if (options?.treatExistingAsProcessed) {
146
- const existing = await readSessionLog(projectDir, sessionId);
211
+ premarkedSessions.add(sessionId);
212
+ const existing = await readSessionMessages(sessionId);
147
213
  logger.logger.debug(`[SESSION_SCANNER] Pre-marking ${existing.length} existing messages as processed for new session ${sessionId}`);
148
214
  for (const m of existing) {
149
215
  processedMessageKeys.add(messageKey(m));
@@ -171,17 +237,7 @@ function messageKey(message) {
171
237
  throw Error();
172
238
  }
173
239
  }
174
- async function readSessionLog(projectDir, sessionId) {
175
- const expectedSessionFile = path$1.join(projectDir, `${sessionId}.jsonl`);
176
- logger.logger.debug(`[SESSION_SCANNER] Reading session file: ${expectedSessionFile}`);
177
- let file;
178
- try {
179
- file = await promises.readFile(expectedSessionFile, "utf-8");
180
- } catch (error) {
181
- logger.logger.debug(`[SESSION_SCANNER] Session file not found: ${expectedSessionFile}`);
182
- return [];
183
- }
184
- let lines = file.split("\n");
240
+ function parseSessionLines(lines) {
185
241
  let messages = [];
186
242
  for (let l of lines) {
187
243
  try {
@@ -1,25 +1,25 @@
1
1
  'use strict';
2
2
 
3
3
  var chalk = require('chalk');
4
- var sessionOps = require('./sessionOps-JP64uJmc.cjs');
4
+ var sessionOps = require('./sessionOps-DOyy4gkY.cjs');
5
5
  var ids = require('./ids-B6ZC0HGt.cjs');
6
- var peerTools = require('./peerTools-CttfOxti.cjs');
7
- var persistence = require('./persistence-C6ztVW1W.cjs');
6
+ var peerTools = require('./peerTools-DPvbcs8V.cjs');
7
+ var persistence = require('./persistence-2Xp_o6x6.cjs');
8
8
  var path = require('node:path');
9
- var remoteSessionClient = require('./remoteSessionClient-BAkIwM2S.cjs');
9
+ var remoteSessionClient = require('./remoteSessionClient-BwI8rpQw.cjs');
10
10
  require('axios');
11
- require('./configuration-BE61XNsg.cjs');
11
+ require('./configuration-B0cb3xA3.cjs');
12
12
  require('node:fs');
13
13
  require('node:os');
14
- require('./package-UkmvSFsg.cjs');
14
+ require('./package-C1XvUQFy.cjs');
15
15
  require('node:fs/promises');
16
16
  require('./authRelay-BdYkC1Po.cjs');
17
17
  require('node:crypto');
18
18
  require('tweetnacl');
19
- require('./controlClient-RWTlQA4_.cjs');
20
- require('./logger-D0hkk7Vo.cjs');
19
+ require('./controlClient-CmnHGcyl.cjs');
20
+ require('./logger-JTcJU-uL.cjs');
21
21
  require('node:util');
22
- require('./time-BbzJ7PJQ.cjs');
22
+ require('./time-T0YmeOhS.cjs');
23
23
  require('socket.io-client');
24
24
  require('./backgroundTaskActivity-CBvUdj39.cjs');
25
25
  require('zod');
@@ -1,23 +1,23 @@
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-DG5MMEp_.mjs';
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-BnaEaOKs.mjs';
3
3
  import { i as isValidSessionId } from './ids-DU6sLx4C.mjs';
4
- import { c as cliPeerSelf, l as listPeerSessions, s as sendPeerMessage, P as PEER_SCOPES } from './peerTools-SWITnkqz.mjs';
5
- import { readPersistedSessions } from './persistence-DujtUH94.mjs';
4
+ import { c as cliPeerSelf, l as listPeerSessions, s as sendPeerMessage, P as PEER_SCOPES } from './peerTools-CeCe-3lk.mjs';
5
+ import { readPersistedSessions } from './persistence-B9LmhAE2.mjs';
6
6
  import { resolve } from 'node:path';
7
- import { f as fillForeignAccountRows, l as listRemoteSessions, a as listRemotePeers, w as waitForRemoteTurnEnd, r as readRemoteTranscript } from './remoteSessionClient-DCAUHgPz.mjs';
7
+ import { f as fillForeignAccountRows, l as listRemoteSessions, a as listRemotePeers, w as waitForRemoteTurnEnd, r as readRemoteTranscript } from './remoteSessionClient-B2DtWuNP.mjs';
8
8
  import 'axios';
9
- import './configuration-L1qcGTFM.mjs';
9
+ import './configuration-D2v3puap.mjs';
10
10
  import 'node:fs';
11
11
  import 'node:os';
12
- import './package-VIUXrYZ1.mjs';
12
+ import './package-BqwrPxL0.mjs';
13
13
  import 'node:fs/promises';
14
14
  import './authRelay-DSAvg1uv.mjs';
15
15
  import 'node:crypto';
16
16
  import 'tweetnacl';
17
- import './controlClient-Ci7HTMII.mjs';
18
- import './logger-CknSVkIe.mjs';
17
+ import './controlClient-BMUJfUeF.mjs';
18
+ import './logger-BpQcwNnt.mjs';
19
19
  import 'node:util';
20
- import './time-v1Y_qEJp.mjs';
20
+ import './time-CfDKj6Bx.mjs';
21
21
  import 'socket.io-client';
22
22
  import './backgroundTaskActivity-8PdPxrvy.mjs';
23
23
  import 'zod';
@@ -1,5 +1,5 @@
1
- import { c as configuration } from './configuration-L1qcGTFM.mjs';
2
- import { s as startOfflineReconnection } from './api-DTVPUE7g.mjs';
1
+ import { c as configuration } from './configuration-D2v3puap.mjs';
2
+ import { s as startOfflineReconnection } from './api-Cmz3XS4P.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-BE61XNsg.cjs');
4
- var api = require('./api-AzdzTKFs.cjs');
3
+ var configuration = require('./configuration-B0cb3xA3.cjs');
4
+ var api = require('./api-DnNL5fLw.cjs');
5
5
 
6
6
  function createOfflineSessionStub(sessionTag) {
7
7
  return {
@@ -3,27 +3,27 @@
3
3
  var chalk = require('chalk');
4
4
  var node_fs = require('node:fs');
5
5
  var path$1 = require('node:path');
6
- var controlClient = require('./controlClient-RWTlQA4_.cjs');
7
- var persistence = require('./persistence-C6ztVW1W.cjs');
8
- var spawnAgents = require('./spawnAgents-McixdtV1.cjs');
6
+ var controlClient = require('./controlClient-CmnHGcyl.cjs');
7
+ var persistence = require('./persistence-2Xp_o6x6.cjs');
8
+ var spawnAgents = require('./spawnAgents-vglexX9N.cjs');
9
9
  var path = require('./path-B7zW-WwE.cjs');
10
- var claudeSessionFork = require('./claudeSessionFork-CDJq_b9r.cjs');
11
- var codexAppServerClient = require('./codexAppServerClient-BuSdeUxT.cjs');
10
+ var claudeSessionFork = require('./claudeSessionFork-Cs0I3eGI.cjs');
11
+ var codexAppServerClient = require('./codexAppServerClient-BTjn2ZCZ.cjs');
12
12
  var codexThreadFork = require('./codexThreadFork-DNekT4nQ.cjs');
13
- var sessionOps = require('./sessionOps-JP64uJmc.cjs');
14
- var createSessionMetadata = require('./createSessionMetadata-CPGTztXP.cjs');
15
- var logger = require('./logger-D0hkk7Vo.cjs');
13
+ var sessionOps = require('./sessionOps-DOyy4gkY.cjs');
14
+ var createSessionMetadata = require('./createSessionMetadata-DbfRBhRu.cjs');
15
+ var logger = require('./logger-JTcJU-uL.cjs');
16
16
  var forkBackfill = require('./forkBackfill-8eLDeS73.cjs');
17
- require('./configuration-BE61XNsg.cjs');
17
+ require('./configuration-B0cb3xA3.cjs');
18
18
  require('node:os');
19
- require('./package-UkmvSFsg.cjs');
19
+ require('./package-C1XvUQFy.cjs');
20
20
  require('node:fs/promises');
21
21
  require('zod');
22
22
  require('./authRelay-BdYkC1Po.cjs');
23
23
  require('node:crypto');
24
24
  require('tweetnacl');
25
25
  require('node:util');
26
- require('./index-DqlyNgt4.cjs');
26
+ require('./index-C9hI8a10.cjs');
27
27
  require('@paralleldrive/cuid2');
28
28
  require('node:readline');
29
29
  require('node:child_process');
@@ -31,8 +31,9 @@ require('cross-spawn');
31
31
  require('./contentLogMetadata-ZSFk_NjQ.cjs');
32
32
  require('./manager-Cly8xVIR.cjs');
33
33
  require('@anthropic-ai/sandbox-runtime');
34
+ require('./rateLimitWindows-C2Jk3Ih7.cjs');
34
35
  require('axios');
35
- require('./time-BbzJ7PJQ.cjs');
36
+ require('./time-T0YmeOhS.cjs');
36
37
  require('socket.io-client');
37
38
  require('./backgroundTaskActivity-CBvUdj39.cjs');
38
39
  require('./projectPath-ChLhdOyt.cjs');