very-happy-cli 0.2.159 → 0.2.160

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 (258) hide show
  1. package/dist/{AcpBackend-DUYFlyfN.cjs → AcpBackend-Bm2rdke8.cjs} +78 -76
  2. package/dist/{AcpBackend-VsfkZiVF.mjs → AcpBackend-mzv8Dhba.mjs} +4 -2
  3. package/dist/{AcpSessionManager-Bdv8LWXh.cjs → AcpSessionManager-BAY1Pggx.cjs} +9 -9
  4. package/dist/{AcpSessionManager-rYtVb0kN.mjs → AcpSessionManager-CoMWFVw3.mjs} +1 -1
  5. package/dist/BasePermissionHandler-CFHAxumV.cjs +157 -0
  6. package/dist/BasePermissionHandler-m3WVholL.mjs +155 -0
  7. package/dist/BaseReasoningProcessor-BFa9_rZA.cjs +200 -0
  8. package/dist/BaseReasoningProcessor-CYrKBXGm.mjs +198 -0
  9. package/dist/RemoteModeDisplay-D-HewyXg.mjs +150 -0
  10. package/dist/RemoteModeDisplay-NC1gPHtj.cjs +153 -0
  11. package/dist/agentAttachments-Dbw8iMCZ.cjs +20 -0
  12. package/dist/agentAttachments-M_B5qEF2.mjs +18 -0
  13. package/dist/agentGuidance-B5NATuFa.cjs +28 -0
  14. package/dist/agentGuidance-CQuNlNx8.mjs +20 -0
  15. package/dist/{agentHome-CHh4lmjM.cjs → agentHome-CboCeKWq.cjs} +14 -28
  16. package/dist/{agentHome-CvsJyeQB.mjs → agentHome-Dj1C43aJ.mjs} +8 -22
  17. package/dist/api-CLMUr-SX.mjs +3339 -0
  18. package/dist/api-CgundNNX.cjs +3346 -0
  19. package/dist/{types-Dh-s4Lqs.mjs → apiMachine-B9dLW_p5.mjs} +9116 -16205
  20. package/dist/{types-BbvK1Tr_.cjs → apiMachine-Bn8482VM.cjs} +9104 -16247
  21. package/dist/assistantTools-BTqPnlFl.cjs +380 -0
  22. package/dist/assistantTools-D6tuc6o4.mjs +376 -0
  23. package/dist/attachmentContent-DpiTJZb4.cjs +88 -0
  24. package/dist/attachmentContent-_kxRznNf.mjs +82 -0
  25. package/dist/attachmentLimits-CzVrqgLR.cjs +354 -0
  26. package/dist/attachmentLimits-yba1uHFO.mjs +348 -0
  27. package/dist/auth-BDOVh5h5.cjs +220 -0
  28. package/dist/auth-Cwutmdsa.mjs +225 -0
  29. package/dist/auth-PYHZQNPp.mjs +218 -0
  30. package/dist/auth-ba4WMYrN.cjs +227 -0
  31. package/dist/authRelay-BdYkC1Po.cjs +156 -0
  32. package/dist/authRelay-DSAvg1uv.mjs +143 -0
  33. package/dist/{auto-DKmEls8Z.cjs → auto-BOX_fgmR.cjs} +70 -79
  34. package/dist/{auto-nb8GhRRy.mjs → auto-BXu14yP_.mjs} +27 -36
  35. package/dist/backgroundTaskActivity-8PdPxrvy.mjs +149 -0
  36. package/dist/backgroundTaskActivity-CBvUdj39.cjs +157 -0
  37. package/dist/bootstrap-B5G1TijC.cjs +116 -0
  38. package/dist/bootstrap-hxXPCFMx.mjs +112 -0
  39. package/dist/browser-Y6Bl8L_O.cjs +22 -0
  40. package/dist/browser-jh2P0UVZ.mjs +20 -0
  41. package/dist/claudeCliPath-BqkaH2oR.mjs +8 -0
  42. package/dist/claudeCliPath-U4HHmV4r.cjs +10 -0
  43. package/dist/claudeLocal-BaY4fZKi.mjs +339 -0
  44. package/dist/claudeLocal-CRGG4Pea.cjs +343 -0
  45. package/dist/claudeLocalLauncher-D4T7MTqd.mjs +152 -0
  46. package/dist/claudeLocalLauncher-DyEbVzUN.cjs +154 -0
  47. package/dist/cliUpdate-DsKXPFYp.cjs +120 -0
  48. package/dist/cliUpdate-Y34VGe9Y.mjs +112 -0
  49. package/dist/client-3Ac-O4pw.cjs +104 -0
  50. package/dist/client-BPNbmtvO.cjs +119 -0
  51. package/dist/client-CeGKqqcJ.mjs +100 -0
  52. package/dist/client-ClR0K8zX.mjs +112 -0
  53. package/dist/codex/happyMcpStdioBridge.cjs +33 -14
  54. package/dist/codex/happyMcpStdioBridge.mjs +26 -7
  55. package/dist/codexAppServerClient-I3teiV-N.mjs +1088 -0
  56. package/dist/codexAppServerClient-q2FjnRcK.cjs +1090 -0
  57. package/dist/codexCommand-4zcccIoq.cjs +2088 -0
  58. package/dist/codexCommand-Cc9gcbdX.mjs +2086 -0
  59. package/dist/codexThreadFork-BH9IZPqD.cjs +350 -0
  60. package/dist/codexThreadFork-slzAseLx.mjs +338 -0
  61. package/dist/{config-ClLtM6F3.mjs → config-CTx_jb-C.mjs} +7 -40
  62. package/dist/{config-DLx-vW3I.cjs → config-Ci9Kpgwa.cjs} +26 -59
  63. package/dist/configuration-BSYpcPwE.cjs +181 -0
  64. package/dist/configuration-RfeNjFmd.mjs +170 -0
  65. package/dist/connect-BpOdzNbE.mjs +682 -0
  66. package/dist/connect-C2CiOUFs.cjs +684 -0
  67. package/dist/constants-BC4St0xd.mjs +11 -0
  68. package/dist/constants-VJ0N6WuG.cjs +17 -0
  69. package/dist/contentLogMetadata-BlWI0egu.mjs +51 -0
  70. package/dist/contentLogMetadata-ZSFk_NjQ.cjs +54 -0
  71. package/dist/context-DsDr6E2t.cjs +69 -0
  72. package/dist/context-H0Bcb9S_.mjs +65 -0
  73. package/dist/controlClient-BGbDcgWS.mjs +260 -0
  74. package/dist/controlClient-Bcwv3D21.cjs +279 -0
  75. package/dist/createSessionMetadata-BJxEnM-o.cjs +58 -0
  76. package/dist/createSessionMetadata-CVVkGjxV.mjs +54 -0
  77. package/dist/defaultPermissionMode-BnxJPVHT.mjs +4 -0
  78. package/dist/defaultPermissionMode-CxmTXUQR.cjs +7 -0
  79. package/dist/detectCLI-CSGMlV51.mjs +58 -0
  80. package/dist/detectCLI-DR9ZaN6B.cjs +61 -0
  81. package/dist/deterministicJson-C5CYTVpm.cjs +507 -0
  82. package/dist/deterministicJson-CzkFJWw1.mjs +502 -0
  83. package/dist/doctor-BPkYWSuq.mjs +75 -0
  84. package/dist/doctor-D2YJ-Yn2.cjs +395 -0
  85. package/dist/doctor-DOvByjbk.mjs +391 -0
  86. package/dist/doctor-u46qYYKX.cjs +79 -0
  87. package/dist/doctorReadiness-BCZGcN0a.cjs +151 -0
  88. package/dist/doctorReadiness-C208SMN9.mjs +142 -0
  89. package/dist/editPaths-BVfS_FFL.mjs +68 -0
  90. package/dist/editPaths-Bqp4OFPw.cjs +73 -0
  91. package/dist/ensureDaemonRunning-BCwNrMyv.cjs +64 -0
  92. package/dist/ensureDaemonRunning-Dqa2pOjY.mjs +61 -0
  93. package/dist/handleResumeCommand-BvXYf5El.mjs +240 -0
  94. package/dist/handleResumeCommand-C2cKchpX.cjs +245 -0
  95. package/dist/ids-B6ZC0HGt.cjs +13 -0
  96. package/dist/ids-DU6sLx4C.mjs +10 -0
  97. package/dist/index-B6UGRQ7h.mjs +102 -0
  98. package/dist/{index-BEOMECtE.cjs → index-B6pAdvJx.cjs} +121 -91
  99. package/dist/index-Bu5Zi_a9.cjs +182 -0
  100. package/dist/index-D3kI0hDR.cjs +107 -0
  101. package/dist/index-DA7yINuk.cjs +994 -0
  102. package/dist/index-DDeHXrIX.cjs +71 -0
  103. package/dist/index-DKLU_fD0.mjs +158 -0
  104. package/dist/{index-2mCaeKyf.mjs → index-DMZqWwsP.mjs} +68 -38
  105. package/dist/index-DVkMGPyS.mjs +68 -0
  106. package/dist/index-qdS1friN.mjs +949 -0
  107. package/dist/index.cjs +5 -46
  108. package/dist/index.mjs +5 -46
  109. package/dist/{install-BPhJppvd.mjs → install-BO_W7VhL.mjs} +37 -37
  110. package/dist/install-BgoC2e_2.cjs +88 -0
  111. package/dist/install-CFY3tYtJ.mjs +86 -0
  112. package/dist/{install-BOHrUaFM.cjs → install-Cs5qAPrB.cjs} +38 -38
  113. package/dist/{installPiTools-DuZ6jZvX.cjs → installPiTools-BKnXjrVu.cjs} +2 -3
  114. package/dist/{installPiTools-Cj7yU9Fc.mjs → installPiTools-B_CdM5_2.mjs} +1 -2
  115. package/dist/{installTerminalHooks-Cou3WUf3.cjs → installTerminalHooks-BQZbvxsZ.cjs} +5 -40
  116. package/dist/{installTerminalHooks-WeznjkuC.mjs → installTerminalHooks-By7gBMEF.mjs} +3 -38
  117. package/dist/lib.cjs +28 -19
  118. package/dist/lib.d.cts +12 -2
  119. package/dist/lib.d.mts +12 -2
  120. package/dist/lib.mjs +23 -14
  121. package/dist/lidState-BeDfxxEX.cjs +305 -0
  122. package/dist/lidState-CeEt442o.mjs +297 -0
  123. package/dist/limits-C-a7gr04.cjs +43 -0
  124. package/dist/limits-DIo7rEBR.mjs +36 -0
  125. package/dist/localHappyAgentAuth-C-HQyiv6.mjs +82 -0
  126. package/dist/localHappyAgentAuth-D6rFhaoc.cjs +86 -0
  127. package/dist/logger-6HYUEXNk.mjs +271 -0
  128. package/dist/logger-CS0mw3fa.cjs +275 -0
  129. package/dist/loginShellEnv-BkuYtExZ.cjs +182 -0
  130. package/dist/loginShellEnv-Dw8M7tkI.mjs +167 -0
  131. package/dist/machineMetadata-DyDbODYd.cjs +41 -0
  132. package/dist/machineMetadata-oOzBfDfs.mjs +38 -0
  133. package/dist/main-BkxJP6JQ.cjs +941 -0
  134. package/dist/main-BwNIAI1A.mjs +939 -0
  135. package/dist/manager-BQ4flvQZ.mjs +101 -0
  136. package/dist/manager-Cly8xVIR.cjs +105 -0
  137. package/dist/{mcp-Dy3f_K0h.mjs → mcp-B1A4I3TK.mjs} +27 -33
  138. package/dist/{mcp-CPYbtsYG.cjs → mcp-Hszd7qpS.cjs} +42 -48
  139. package/dist/messageBuffer-BWlGgR3A.mjs +71 -0
  140. package/dist/messageBuffer-fJMH6uY8.cjs +73 -0
  141. package/dist/mirrorProtocol-BNLtoWjO.mjs +170 -0
  142. package/dist/mirrorProtocol-BUtmg1ws.cjs +186 -0
  143. package/dist/oneShotPrompts-CL0dip9C.cjs +16 -0
  144. package/dist/oneShotPrompts-DT4p6RNd.mjs +12 -0
  145. package/dist/package-BhaKlnxz.mjs +171 -0
  146. package/dist/package-BwMrPwqH.cjs +173 -0
  147. package/dist/path-B7zW-WwE.cjs +18 -0
  148. package/dist/path-D2wdaNSk.mjs +15 -0
  149. package/dist/peerTools-BTqw97Gb.mjs +272 -0
  150. package/dist/peerTools-BvKtHXj8.cjs +283 -0
  151. package/dist/permissionMode-Cr5JCbB7.mjs +80 -0
  152. package/dist/permissionMode-CrV-XuMs.cjs +87 -0
  153. package/dist/persistence-HGW_ZVs9.mjs +372 -0
  154. package/dist/persistence-yKTH3-5X.cjs +414 -0
  155. package/dist/piExtension.mjs +2 -1
  156. package/dist/piRunnerArgs-BNloJCCg.cjs +66 -0
  157. package/dist/piRunnerArgs-BuX1UFWy.mjs +59 -0
  158. package/dist/{piRuntime-kLZNpAAl.mjs → piRuntime-CSGkwCKQ.mjs} +2 -2
  159. package/dist/{piRuntime-NtF0YqjH.cjs → piRuntime-C_H7MJCM.cjs} +4 -4
  160. package/dist/{piTerminal-B0fEOV_2.mjs → piTerminal-C8a1OrNQ.mjs} +32 -35
  161. package/dist/{piTerminal-9J0GAKzb.cjs → piTerminal-DNCZ6yTM.cjs} +32 -35
  162. package/dist/previewPath-B0rBdhy1.cjs +83 -0
  163. package/dist/previewPath-CXN4Vag0.mjs +81 -0
  164. package/dist/projectPath-BTBIMB57.mjs +10 -0
  165. package/dist/projectPath-ChLhdOyt.cjs +13 -0
  166. package/dist/registerCommonHandlers-Ccvsz7Ou.mjs +536 -0
  167. package/dist/registerCommonHandlers-DskirN-_.cjs +538 -0
  168. package/dist/registerKillSessionHandler-DZeLXWcB.cjs +361 -0
  169. package/dist/registerKillSessionHandler-GYvHdipX.mjs +358 -0
  170. package/dist/remoteSessionClient-B0LraSB9.cjs +634 -0
  171. package/dist/remoteSessionClient-CYnXRynE.mjs +612 -0
  172. package/dist/resources-BdFBQi8r.mjs +117 -0
  173. package/dist/resources-JDPugcDq.cjs +120 -0
  174. package/dist/run-CJzxoHVh.cjs +5762 -0
  175. package/dist/run-D3ifupU3.mjs +5739 -0
  176. package/dist/runClaude-Ba01qT-u.mjs +848 -0
  177. package/dist/runClaude-Da3RirzE.cjs +850 -0
  178. package/dist/runClaudeDeps-DOt79DjU.mjs +3624 -0
  179. package/dist/runClaudeDeps-DOzEBMls.cjs +3649 -0
  180. package/dist/{runGemini-DV6Ouadt.mjs → runGemini-BGeTz57m.mjs} +58 -31
  181. package/dist/{runGemini-F-mqx3_K.cjs → runGemini-DSr9LIxL.cjs} +202 -175
  182. package/dist/{runOpenClaw-Qqo9j63M.cjs → runOpenClaw-B1mTxN35.cjs} +64 -65
  183. package/dist/{runOpenClaw-D7MlPS5n.mjs → runOpenClaw-CogSedIc.mjs} +31 -32
  184. package/dist/sandbox-CG7IyDTU.cjs +187 -0
  185. package/dist/sandbox-DTe6d54R.mjs +180 -0
  186. package/dist/selfCheck-C9mVrQwf.mjs +84 -0
  187. package/dist/selfCheck-Dc-mNSLb.cjs +87 -0
  188. package/dist/{send-4qJTCAYW.cjs → send-B7J_eaG3.cjs} +16 -9
  189. package/dist/{send-CLhYXNgy.mjs → send-CBXJKc6O.mjs} +12 -5
  190. package/dist/server-CZTP_iOn.cjs +407 -0
  191. package/dist/server-DcVBv04l.mjs +404 -0
  192. package/dist/sessionLock-Bys1PNSo.cjs +205 -0
  193. package/dist/sessionLock-D-EG2CfG.mjs +197 -0
  194. package/dist/sessionModeFile-DMl3dw3r.mjs +32 -0
  195. package/dist/sessionModeFile-RSm0NQkH.cjs +36 -0
  196. package/dist/sessionOps-Dn8z85h_.cjs +783 -0
  197. package/dist/sessionOps-SuHW8Dfe.mjs +760 -0
  198. package/dist/sessionScanner-BOrGjMXL.cjs +209 -0
  199. package/dist/sessionScanner-CX3onqXh.mjs +206 -0
  200. package/dist/{sessions-CzIH2rGp.mjs → sessions-BEG_HTSi.mjs} +17 -8
  201. package/dist/{sessions-Bh1pyddi.cjs → sessions-D74aJbhL.cjs} +37 -28
  202. package/dist/setupOfflineReconnection-ByElY60m.cjs +74 -0
  203. package/dist/setupOfflineReconnection-DpvWTt69.mjs +72 -0
  204. package/dist/smallFastModel-BLNgMrwR.mjs +18 -0
  205. package/dist/smallFastModel-D_uxGMo3.cjs +21 -0
  206. package/dist/{spawn-CPIWlPOM.mjs → spawn-B7yro0b2.mjs} +26 -38
  207. package/dist/{spawn-CmFOSVdW.cjs → spawn-DgR0RKRs.cjs} +52 -64
  208. package/dist/spawnAgents-BGQiEF-w.cjs +52 -0
  209. package/dist/spawnAgents-DZzZ9jMI.mjs +45 -0
  210. package/dist/spawnHappyCLI-B2H5s4B_.mjs +64 -0
  211. package/dist/spawnHappyCLI-DBhwZT7O.cjs +66 -0
  212. package/dist/specialCommands-BSqhYg5X.mjs +52 -0
  213. package/dist/specialCommands-DSsTeRej.cjs +54 -0
  214. package/dist/startFileWatcher-B4VsLgjD.cjs +71 -0
  215. package/dist/startFileWatcher-DErVWZE4.mjs +69 -0
  216. package/dist/startupPlan-BLMbfQIH.cjs +12 -0
  217. package/dist/startupPlan-DFMyNgAs.mjs +10 -0
  218. package/dist/streamRelay-BiKw59Cc.cjs +233 -0
  219. package/dist/streamRelay-FPVbHpbM.mjs +231 -0
  220. package/dist/sync-C8gyQFMc.mjs +69 -0
  221. package/dist/sync-DccIKZ5_.cjs +71 -0
  222. package/dist/systemPrompt-BwTPWfMu.cjs +97 -0
  223. package/dist/systemPrompt-DX521JJz.mjs +94 -0
  224. package/dist/{teams-CEahj4cm.mjs → teams-C32F1hqd.mjs} +9 -40
  225. package/dist/{teams-CB1R9-Z9.cjs → teams-Dl8g8kTI.cjs} +14 -45
  226. package/dist/template-BaHAmH2K.cjs +129 -0
  227. package/dist/template-CiOPa2rd.mjs +121 -0
  228. package/dist/{terminalTitleSuggest-DKgX3osW.mjs → terminalTitleSuggest-CeKsX_V6.mjs} +1 -9
  229. package/dist/{terminalTitleSuggest-Dji8I0Jy.cjs → terminalTitleSuggest-DhvRFX3H.cjs} +0 -10
  230. package/dist/terminals-B_bfC9c2.cjs +250 -0
  231. package/dist/terminals-Dlg0x3nY.mjs +235 -0
  232. package/dist/time-D0XyHOid.mjs +38 -0
  233. package/dist/time-DCuTyook.cjs +42 -0
  234. package/dist/titleGenerator-CQ8CoGhg.mjs +166 -0
  235. package/dist/titleGenerator-ChzMJsyg.cjs +172 -0
  236. package/dist/tmuxSocket-B8Yx20sT.mjs +19 -0
  237. package/dist/tmuxSocket-D-Xt6Vn-.cjs +24 -0
  238. package/dist/{todo-DqyRI4wP.cjs → todo-BvUOTa8G.cjs} +15 -12
  239. package/dist/{todo-Cknp5D4U.mjs → todo-CZ6cFrrn.mjs} +11 -8
  240. package/dist/tools-BZtHF_qQ.mjs +177 -0
  241. package/dist/tools-Be3AoAwu.cjs +63 -0
  242. package/dist/tools-DQj0AeLk.cjs +180 -0
  243. package/dist/tools-DkluDcG4.mjs +60 -0
  244. package/dist/trimIdent-4gvk9Wk6.cjs +22 -0
  245. package/dist/trimIdent-BAjmv_TG.mjs +20 -0
  246. package/dist/types-CRS-srZK.cjs +66 -0
  247. package/dist/types-CkqAACXx.mjs +64 -0
  248. package/dist/uninstall-BkLzaJ6I.mjs +47 -0
  249. package/dist/uninstall-x-TUtf5H.cjs +49 -0
  250. package/package.json +7 -7
  251. package/dist/agentGuidance-BRDN1NoZ.cjs +0 -2217
  252. package/dist/agentGuidance-KgvYuF3R.mjs +0 -2145
  253. package/dist/index-BF6WfgV5.mjs +0 -19624
  254. package/dist/index-C-JazrMB.mjs +0 -52
  255. package/dist/index-blDSadUR.cjs +0 -58
  256. package/dist/index-rH3DrQ5B.cjs +0 -19688
  257. package/dist/limits-BH5CV5vR.cjs +0 -2683
  258. package/dist/limits-CjRj8IX5.mjs +0 -2558
@@ -1,57 +1,87 @@
1
1
  'use strict';
2
2
 
3
- var AcpBackend = require('./AcpBackend-DUYFlyfN.cjs');
4
- var persistence = require('./limits-BH5CV5vR.cjs');
5
- var AcpSessionManager = require('./AcpSessionManager-Bdv8LWXh.cjs');
6
- var index$1 = require('./index-rH3DrQ5B.cjs');
7
- var piRuntime = require('./piRuntime-NtF0YqjH.cjs');
3
+ var AcpBackend = require('./AcpBackend-Bm2rdke8.cjs');
4
+ var logger = require('./logger-CS0mw3fa.cjs');
5
+ var AcpSessionManager = require('./AcpSessionManager-BAY1Pggx.cjs');
6
+ var index = require('./index-DA7yINuk.cjs');
7
+ var agentAttachments = require('./agentAttachments-Dbw8iMCZ.cjs');
8
+ var configuration = require('./configuration-BSYpcPwE.cjs');
9
+ var attachmentContent = require('./attachmentContent-DpiTJZb4.cjs');
10
+ var piRuntime = require('./piRuntime-C_H7MJCM.cjs');
8
11
  var node_crypto = require('node:crypto');
9
12
  var path = require('node:path');
10
- var index = require('./types-BbvK1Tr_.cjs');
11
- var terminalTitleSuggest = require('./terminalTitleSuggest-Dji8I0Jy.cjs');
13
+ var api = require('./api-CgundNNX.cjs');
14
+ var registerKillSessionHandler = require('./registerKillSessionHandler-DZeLXWcB.cjs');
15
+ var deterministicJson = require('./deterministicJson-C5CYTVpm.cjs');
16
+ var persistence = require('./persistence-yKTH3-5X.cjs');
17
+ var machineMetadata = require('./machineMetadata-DyDbODYd.cjs');
18
+ var createSessionMetadata = require('./createSessionMetadata-BJxEnM-o.cjs');
19
+ var setupOfflineReconnection = require('./setupOfflineReconnection-ByElY60m.cjs');
20
+ var controlClient = require('./controlClient-Bcwv3D21.cjs');
21
+ var authRelay = require('./authRelay-BdYkC1Po.cjs');
22
+ var streamRelay = require('./streamRelay-BiKw59Cc.cjs');
23
+ var projectPath = require('./projectPath-ChLhdOyt.cjs');
24
+ var BasePermissionHandler = require('./BasePermissionHandler-CFHAxumV.cjs');
25
+ var titleGenerator = require('./titleGenerator-ChzMJsyg.cjs');
26
+ var sessionModeFile = require('./sessionModeFile-RSm0NQkH.cjs');
27
+ var editPaths = require('./editPaths-Bqp4OFPw.cjs');
12
28
  require('node:child_process');
13
29
  require('@agentclientprotocol/sdk');
14
- require('zod');
15
- require('@paralleldrive/cuid2');
16
- require('node:fs/promises');
17
- require('node:fs');
18
- require('tweetnacl');
30
+ require('./time-DCuTyook.cjs');
31
+ require('./contentLogMetadata-ZSFk_NjQ.cjs');
32
+ require('./package-BwMrPwqH.cjs');
19
33
  require('chalk');
20
34
  require('node:util');
35
+ require('node:fs');
36
+ require('@paralleldrive/cuid2');
37
+ require('zod');
21
38
  require('node:os');
22
- require('cross-spawn');
23
- require('node:readline');
24
- require('./agentGuidance-BRDN1NoZ.cjs');
39
+ require('node:fs/promises');
40
+ require('./attachmentLimits-CzVrqgLR.cjs');
41
+ require('./resources-JDPugcDq.cjs');
25
42
  require('axios');
26
- require('socket.io-client');
27
- require('fs/promises');
28
- require('ink');
29
- require('react');
30
- require('@anthropic-ai/claude-agent-sdk');
31
43
  require('node:events');
44
+ require('socket.io-client');
45
+ require('./limits-C-a7gr04.cjs');
46
+ require('./lidState-BeDfxxEX.cjs');
32
47
  require('os');
33
48
  require('child_process');
34
- require('fs');
35
- require('path');
36
- require('@anthropic-ai/sandbox-runtime');
37
- require('expo-server-sdk');
49
+ require('./registerCommonHandlers-DskirN-_.cjs');
50
+ require('util');
51
+ require('fs/promises');
38
52
  require('crypto');
39
- require('ps-list');
40
- require('tmp');
41
- require('open');
42
- require('fastify');
43
- require('fastify-type-provider-zod');
44
- require('node:module');
53
+ require('path');
54
+ require('cross-spawn');
55
+ require('./sync-DccIKZ5_.cjs');
56
+ require('./backgroundTaskActivity-CBvUdj39.cjs');
57
+ require('tweetnacl');
58
+ require('./types-CRS-srZK.cjs');
59
+ require('./client-3Ac-O4pw.cjs');
60
+ require('./context-DsDr6E2t.cjs');
61
+ require('./sessionOps-Dn8z85h_.cjs');
62
+ require('./tools-Be3AoAwu.cjs');
63
+ require('./tools-DQj0AeLk.cjs');
64
+ require('./client-BPNbmtvO.cjs');
65
+ require('./peerTools-BvKtHXj8.cjs');
66
+ require('./ids-B6ZC0HGt.cjs');
67
+ require('./remoteSessionClient-B0LraSB9.cjs');
45
68
  require('@modelcontextprotocol/sdk/server/mcp.js');
46
69
  require('node:http');
47
70
  require('@modelcontextprotocol/sdk/server/streamableHttp.js');
48
- require('http');
49
- require('util');
50
- require('inquirer');
51
- require('node:url');
52
- require('node:readline/promises');
53
- require('node-pty');
71
+ require('./assistantTools-BTqPnlFl.cjs');
72
+ require('./terminals-B_bfC9c2.cjs');
73
+ require('./terminalTitleSuggest-DhvRFX3H.cjs');
74
+ require('./tmuxSocket-D-Xt6Vn-.cjs');
75
+ require('./bootstrap-B5G1TijC.cjs');
76
+ require('./agentGuidance-B5NATuFa.cjs');
77
+ require('./trimIdent-4gvk9Wk6.cjs');
78
+ require('./previewPath-B0rBdhy1.cjs');
79
+ require('./detectCLI-DR9ZaN6B.cjs');
80
+ require('fs');
81
+ require('./localHappyAgentAuth-D6rFhaoc.cjs');
54
82
  require('url');
83
+ require('node:module');
84
+ require('./oneShotPrompts-CL0dip9C.cjs');
55
85
 
56
86
  function createAcpBackend(options) {
57
87
  const backendOptions = {
@@ -555,7 +585,7 @@ function resolveRequestedLegacyModelCode(models, requested) {
555
585
  }
556
586
  return null;
557
587
  }
558
- class GenericAcpPermissionHandler extends index$1.BasePermissionHandler {
588
+ class GenericAcpPermissionHandler extends BasePermissionHandler.BasePermissionHandler {
559
589
  logPrefix;
560
590
  constructor(session, agentName) {
561
591
  super(session);
@@ -573,7 +603,7 @@ class GenericAcpPermissionHandler extends index$1.BasePermissionHandler {
573
603
  input
574
604
  });
575
605
  this.addPendingRequestToState(toolCallId, toolName, input);
576
- persistence.logger.debug(`${this.logPrefix} Permission request sent for tool: ${toolName} (${toolCallId})`);
606
+ logger.logger.debug(`${this.logPrefix} Permission request sent for tool: ${toolName} (${toolCallId})`);
577
607
  });
578
608
  }
579
609
  }
@@ -589,33 +619,33 @@ function resolveSessionFlavor(agentName) {
589
619
  async function runAcp(opts) {
590
620
  const verbose = opts.verbose === true;
591
621
  const sessionTag = node_crypto.randomUUID();
592
- index.connectionState.setBackend(opts.agentName);
593
- const api = await index.ApiClient.create(opts.credentials);
622
+ api.connectionState.setBackend(opts.agentName);
623
+ const api$1 = await api.ApiClient.create(opts.credentials);
594
624
  const settings = await persistence.readSettings();
595
625
  if (!settings?.machineId) {
596
626
  throw new Error("No machine ID found in settings");
597
627
  }
598
- await api.getOrCreateMachine({
628
+ await api$1.getOrCreateMachine({
599
629
  machineId: settings.machineId,
600
- metadata: index$1.initialMachineMetadata
630
+ metadata: machineMetadata.getInitialMachineMetadata()
601
631
  });
602
- const { state, metadata } = index$1.createSessionMetadata({
632
+ const { state, metadata } = createSessionMetadata.createSessionMetadata({
603
633
  flavor: resolveSessionFlavor(opts.agentName),
604
634
  ...process.env.VH_TEAM_OPERATION_ID ? { teamOperationId: process.env.VH_TEAM_OPERATION_ID } : {},
605
635
  machineId: settings.machineId,
606
636
  startedBy: opts.startedBy,
607
637
  sandbox: settings.sandboxConfig,
608
- capabilities: [persistence.PROMPT_QUEUE_CAPABILITY]
638
+ capabilities: [index.PROMPT_QUEUE_CAPABILITY]
609
639
  });
610
640
  metadata.attachmentKinds = [];
611
- const response = await api.getOrCreateSession({ tag: sessionTag, metadata, state });
641
+ const response = await api$1.getOrCreateSession({ tag: sessionTag, metadata, state });
612
642
  if (response) {
613
643
  logAcp("muted", `Happy Session ID: ${response.id}`);
614
644
  }
615
645
  let session;
616
646
  let permissionHandler;
617
- const { session: initialSession, reconnectionHandle } = index$1.setupOfflineReconnection({
618
- api,
647
+ const { session: initialSession, reconnectionHandle } = setupOfflineReconnection.setupOfflineReconnection({
648
+ api: api$1,
619
649
  sessionTag,
620
650
  metadata,
621
651
  state,
@@ -631,25 +661,25 @@ async function runAcp(opts) {
631
661
  session = initialSession;
632
662
  if (response) {
633
663
  try {
634
- await persistence.notifyDaemonSessionStarted(response.id, metadata, {
635
- encryptionKey: persistence.encodeBase64(response.encryptionKey),
664
+ await controlClient.notifyDaemonSessionStarted(response.id, metadata, {
665
+ encryptionKey: authRelay.encodeBase64(response.encryptionKey),
636
666
  encryptionVariant: response.encryptionVariant,
637
667
  seq: response.seq,
638
668
  metadataVersion: response.metadataVersion,
639
669
  agentStateVersion: response.agentStateVersion
640
670
  });
641
671
  } catch (error) {
642
- persistence.logger.debug("[acp] Failed to report session to daemon:", error);
672
+ logger.logger.debug("[acp] Failed to report session to daemon:", error);
643
673
  }
644
674
  }
645
675
  permissionHandler = new GenericAcpPermissionHandler(session, opts.agentName);
646
676
  permissionHandler.reset("Previous CLI process exited before responding");
647
677
  const streamingEnabled = process.env.HAPPY_SESSION_STREAM_DISABLED !== "1";
648
- const streamRelay = new index$1.StreamRelay({
678
+ const streamRelay$1 = new streamRelay.StreamRelay({
649
679
  send: (frame) => session.sendStreamFrame(frame)
650
680
  });
651
- const sessionManager = new AcpSessionManager.AcpSessionManager(streamingEnabled ? { stream: streamRelay } : {});
652
- const messageQueue = new index$1.MessageQueue2((mode) => index$1.hashObject(mode));
681
+ const sessionManager = new AcpSessionManager.AcpSessionManager(streamingEnabled ? { stream: streamRelay$1 } : {});
682
+ const messageQueue = new registerKillSessionHandler.MessageQueue2((mode) => deterministicJson.hashObject(mode));
653
683
  function attachPromptQueueDrain(client) {
654
684
  const drain = client.attachPromptQueueDrain({
655
685
  isIdle: () => messageQueue.size() === 0 && messageQueue.isWaiting()
@@ -677,18 +707,18 @@ async function runAcp(opts) {
677
707
  return true;
678
708
  }
679
709
  try {
680
- index$1.writeSessionModeFile(session.sessionId, mode);
710
+ sessionModeFile.writeSessionModeFile(session.sessionId, mode);
681
711
  } catch (error) {
682
- persistence.logger.debug(`[${opts.agentName}] Failed to write session mode file:`, error);
712
+ logger.logger.debug(`[${opts.agentName}] Failed to write session mode file:`, error);
683
713
  return false;
684
714
  }
685
715
  fileBackedPermissionMode = mode;
686
716
  session.updateMetadata((currentMetadata) => ({ ...currentMetadata, permissionMode: mode }));
687
- persistence.logger.debug(`[${opts.agentName}] Published file-backed permission mode: ${mode}`);
717
+ logger.logger.debug(`[${opts.agentName}] Published file-backed permission mode: ${mode}`);
688
718
  return true;
689
719
  };
690
720
  const isAssistantVariant = process.env.HAPPY_SESSION_VARIANT === "assistant";
691
- const happyServer = await index$1.startHappyServer(session, {
721
+ const happyServer = await deterministicJson.startHappyServer(session, {
692
722
  assistant: isAssistantVariant,
693
723
  ...opts.agentName === "pi" ? { onContextUsage: (contextUsage) => {
694
724
  session.updateAgentState((state2) => ({ ...state2, contextUsage }));
@@ -697,7 +727,7 @@ async function runAcp(opts) {
697
727
  if (opts.agentName === "pi") session.updateAgentState((state2) => ({ ...state2, contextUsage: null }));
698
728
  const mcpServers = {
699
729
  happy: {
700
- command: path.join(terminalTitleSuggest.projectPath(), "bin", "very-happy-mcp.mjs"),
730
+ command: path.join(projectPath.projectPath(), "bin", "very-happy-mcp.mjs"),
701
731
  args: ["--url", happyServer.url]
702
732
  }
703
733
  };
@@ -756,7 +786,7 @@ async function runAcp(opts) {
756
786
  });
757
787
  const stopRunnerFromBackendStatus = (status, detail) => {
758
788
  const reason = detail ? `${opts.agentName} backend ${status}: ${detail}` : `${opts.agentName} backend ${status}`;
759
- persistence.logger.debug(`[${opts.agentName}] ${reason}; stopping ACP runner`);
789
+ logger.logger.debug(`[${opts.agentName}] ${reason}; stopping ACP runner`);
760
790
  shouldExit = true;
761
791
  messageQueue.close();
762
792
  clearPendingTurn(new Error(reason));
@@ -778,9 +808,9 @@ async function runAcp(opts) {
778
808
  return;
779
809
  }
780
810
  if (permissionModeIsFileBacked()) {
781
- const mode = index$1.normalizeAcpPermissionMode(requestedMode);
811
+ const mode = sessionModeFile.normalizeAcpPermissionMode(requestedMode);
782
812
  if (!mode) {
783
- persistence.logger.debug(`[${opts.agentName}] Ignoring unknown file-backed permission mode request: ${requestedMode}`);
813
+ logger.logger.debug(`[${opts.agentName}] Ignoring unknown file-backed permission mode request: ${requestedMode}`);
784
814
  return;
785
815
  }
786
816
  publishFileBackedPermissionMode(mode);
@@ -789,7 +819,7 @@ async function runAcp(opts) {
789
819
  if (modeSelector) {
790
820
  const resolved = resolveRequestedCode(modeSelector.options, requestedMode);
791
821
  if (!resolved) {
792
- persistence.logger.debug(`[${opts.agentName}] Ignoring unknown ACP permission mode request: ${requestedMode}`);
822
+ logger.logger.debug(`[${opts.agentName}] Ignoring unknown ACP permission mode request: ${requestedMode}`);
793
823
  return;
794
824
  }
795
825
  if (resolved === modeSelector.currentCode) {
@@ -806,7 +836,7 @@ async function runAcp(opts) {
806
836
  }
807
837
  const resolvedLegacyMode = resolveRequestedLegacyModeCode(legacyModes, requestedMode);
808
838
  if (!resolvedLegacyMode) {
809
- persistence.logger.debug(`[${opts.agentName}] Ignoring unknown ACP legacy mode request: ${requestedMode}`);
839
+ logger.logger.debug(`[${opts.agentName}] Ignoring unknown ACP legacy mode request: ${requestedMode}`);
810
840
  return;
811
841
  }
812
842
  if (resolvedLegacyMode === legacyModes.currentModeId) {
@@ -870,7 +900,7 @@ async function runAcp(opts) {
870
900
  if (modelSelector) {
871
901
  const resolved = resolveRequestedCode(modelSelector.options, requestedModel);
872
902
  if (!resolved) {
873
- persistence.logger.debug(`[${opts.agentName}] Ignoring unknown ACP model request: ${requestedModel}`);
903
+ logger.logger.debug(`[${opts.agentName}] Ignoring unknown ACP model request: ${requestedModel}`);
874
904
  return false;
875
905
  }
876
906
  if (resolved === modelSelector.currentCode) {
@@ -887,7 +917,7 @@ async function runAcp(opts) {
887
917
  }
888
918
  const resolvedLegacyModel = resolveRequestedLegacyModelCode(legacyModels, requestedModel);
889
919
  if (!resolvedLegacyModel) {
890
- persistence.logger.debug(`[${opts.agentName}] Ignoring unknown ACP legacy model request: ${requestedModel}`);
920
+ logger.logger.debug(`[${opts.agentName}] Ignoring unknown ACP legacy model request: ${requestedModel}`);
891
921
  return false;
892
922
  }
893
923
  if (resolvedLegacyModel === legacyModels.currentModelId) {
@@ -907,7 +937,7 @@ async function runAcp(opts) {
907
937
  if (modelSelector) return resolveRequestedCode(modelSelector.options, requested) === modelSelector.currentCode;
908
938
  return !!legacyModels && resolveRequestedLegacyModelCode(legacyModels, requested) === legacyModels.currentModelId;
909
939
  };
910
- const editThrottle = new index$1.EditReportThrottle();
940
+ const editThrottle = new editPaths.EditReportThrottle();
911
941
  const onBackendMessage = (msg) => {
912
942
  if (verbose) {
913
943
  logAcp("muted", `Outgoing raw backend message from ${opts.agentName}: ${formatUnknownForConsole(msg, ACP_RAW_PREVIEW_CHARS)}`);
@@ -1041,15 +1071,15 @@ async function runAcp(opts) {
1041
1071
  session.sendAgentUsageSnapshot(resolveSessionFlavor(opts.agentName), msg);
1042
1072
  }
1043
1073
  if (msg.type === "tool-call") {
1044
- for (const edit of editThrottle.take(index$1.extractAcpEditPaths(msg.toolName, msg.args))) {
1045
- persistence.reportSessionEditToDaemon({ sessionId: session.sessionId, path: edit.path, tool: edit.tool, cwd: process.cwd() });
1074
+ for (const edit of editThrottle.take(editPaths.extractAcpEditPaths(msg.toolName, msg.args))) {
1075
+ controlClient.reportSessionEditToDaemon({ sessionId: session.sessionId, path: edit.path, tool: edit.tool, cwd: process.cwd() });
1046
1076
  }
1047
1077
  }
1048
1078
  sendEnvelopes(sessionManager.mapMessage(msg));
1049
1079
  };
1050
1080
  backend.onMessage(onBackendMessage);
1051
- const titleGenerator = new index$1.TitleGenerator(session);
1052
- index$1.registerAgentAttachmentDownloads(session);
1081
+ const titleGenerator$1 = new titleGenerator.TitleGenerator(session);
1082
+ agentAttachments.registerAgentAttachmentDownloads(session);
1053
1083
  let userMessageDelivery = Promise.resolve();
1054
1084
  session.onUserMessage((message) => {
1055
1085
  const downloads = session.drainAttachmentsForUserMessage();
@@ -1058,14 +1088,14 @@ async function runAcp(opts) {
1058
1088
  if (!message.content.text && !attachments?.length) {
1059
1089
  return;
1060
1090
  }
1061
- titleGenerator.maybeGenerate(message.content.text);
1091
+ titleGenerator$1.maybeGenerate(message.content.text);
1062
1092
  if (typeof message.meta?.permissionMode === "string") {
1063
1093
  currentPermissionMode = message.meta.permissionMode;
1064
- persistence.logger.debug(`[${opts.agentName}] Requested ACP permission mode: ${currentPermissionMode}`);
1094
+ logger.logger.debug(`[${opts.agentName}] Requested ACP permission mode: ${currentPermissionMode}`);
1065
1095
  }
1066
1096
  if (message.meta && Object.prototype.hasOwnProperty.call(message.meta, "model")) {
1067
1097
  currentModel = message.meta.model ?? null;
1068
- persistence.logger.debug(`[${opts.agentName}] Requested ACP model: ${currentModel ?? "null"}`);
1098
+ logger.logger.debug(`[${opts.agentName}] Requested ACP model: ${currentModel ?? "null"}`);
1069
1099
  }
1070
1100
  if (message.meta && Object.prototype.hasOwnProperty.call(message.meta, "effort")) {
1071
1101
  currentEffort = message.meta.effort ?? null;
@@ -1076,7 +1106,7 @@ async function runAcp(opts) {
1076
1106
  effort: currentEffort
1077
1107
  }, attachments, message.localKey);
1078
1108
  }).catch(() => {
1079
- persistence.logger.warn("[ACP] Failed to prepare user attachments");
1109
+ logger.logger.warn("[ACP] Failed to prepare user attachments");
1080
1110
  session.sendSessionEvent({ type: "message", message: "Could not prepare this message. Please send it again." });
1081
1111
  });
1082
1112
  });
@@ -1093,7 +1123,7 @@ async function runAcp(opts) {
1093
1123
  permissionHandler.reset();
1094
1124
  abortController.abort();
1095
1125
  } catch (error) {
1096
- persistence.logger.debug(`[${opts.agentName}] Abort failed:`, error);
1126
+ logger.logger.debug(`[${opts.agentName}] Abort failed:`, error);
1097
1127
  } finally {
1098
1128
  abortController = new AbortController();
1099
1129
  }
@@ -1105,7 +1135,7 @@ async function runAcp(opts) {
1105
1135
  if (!fileBackedModeActive) {
1106
1136
  throw new Error(`${opts.agentName} does not support live permission mode changes`);
1107
1137
  }
1108
- const mode = typeof request?.mode === "string" ? index$1.normalizeAcpPermissionMode(request.mode) : null;
1138
+ const mode = typeof request?.mode === "string" ? sessionModeFile.normalizeAcpPermissionMode(request.mode) : null;
1109
1139
  if (!mode) {
1110
1140
  throw new Error("Invalid permission mode");
1111
1141
  }
@@ -1115,7 +1145,7 @@ async function runAcp(opts) {
1115
1145
  return { mode };
1116
1146
  }
1117
1147
  );
1118
- const disposeTermination = index$1.registerKillSessionHandler(session.rpcHandlerManager, async () => {
1148
+ const disposeTermination = registerKillSessionHandler.registerKillSessionHandler(session.rpcHandlerManager, async () => {
1119
1149
  shouldExit = true;
1120
1150
  messageQueue.close();
1121
1151
  clearPendingTurn(new Error("Session terminated"));
@@ -1131,7 +1161,7 @@ async function runAcp(opts) {
1131
1161
  }
1132
1162
  session.updateMetadata((current) => ({
1133
1163
  ...current,
1134
- attachmentKinds: opts.agentName === "pi" && backend.supportsImageAttachments ? [...index$1.CLAUDE_ATTACHMENT_KINDS] : []
1164
+ attachmentKinds: opts.agentName === "pi" && backend.supportsImageAttachments ? [...attachmentContent.CLAUDE_ATTACHMENT_KINDS] : []
1135
1165
  }));
1136
1166
  if (permissionModeIsFileBacked()) {
1137
1167
  fileBackedModeActive = true;
@@ -1181,17 +1211,17 @@ async function runAcp(opts) {
1181
1211
  }
1182
1212
  const prompt = todoDiscoverySent ? batch.message : `${batch.message}
1183
1213
 
1184
- ${persistence.BUILTIN_TODO_DISCOVERY}`;
1214
+ ${index.BUILTIN_TODO_DISCOVERY}`;
1185
1215
  const attachments = batch.attachments ?? [];
1186
- const staged = attachments.length ? await index$1.stageClaudeAttachments(attachments, {
1187
- happyHomeDir: persistence.configuration.happyHomeDir,
1216
+ const staged = attachments.length ? await attachmentContent.stageClaudeAttachments(attachments, {
1217
+ happyHomeDir: configuration.configuration.happyHomeDir,
1188
1218
  sessionId: session.sessionId
1189
1219
  }) : [];
1190
- await backend.sendPrompt(acpSessionId, index$1.appendStagedAttachmentsToPrompt(prompt, staged), attachments);
1220
+ await backend.sendPrompt(acpSessionId, attachmentContent.appendStagedAttachmentsToPrompt(prompt, staged), attachments);
1191
1221
  todoDiscoverySent = true;
1192
1222
  await turnEnded;
1193
1223
  sendEnvelopes(sessionManager.endTurn(turnCancelled ? "cancelled" : "completed"));
1194
- streamRelay.endTurn();
1224
+ streamRelay$1.endTurn();
1195
1225
  setThinking(false);
1196
1226
  session.sendSessionEvent({ type: "ready" });
1197
1227
  if (verbose) {
@@ -1200,7 +1230,7 @@ ${persistence.BUILTIN_TODO_DISCOVERY}`;
1200
1230
  } catch (error) {
1201
1231
  session.sendSessionEvent({ type: "message", message: "The agent could not process this message or its attachments. Please check the agent and try again." });
1202
1232
  sendEnvelopes(sessionManager.endTurn("failed"));
1203
- streamRelay.endTurn();
1233
+ streamRelay$1.endTurn();
1204
1234
  setThinking(false);
1205
1235
  session.sendSessionEvent({ type: "ready" });
1206
1236
  logAcp("error", `Prompt error from ${opts.agentName}: ${error instanceof Error ? error.message : String(error)}`);
@@ -1212,28 +1242,28 @@ ${persistence.BUILTIN_TODO_DISCOVERY}`;
1212
1242
  disposeTermination?.();
1213
1243
  setThinking(false);
1214
1244
  clearInterval(keepAliveInterval);
1215
- streamRelay.endTurn();
1216
- streamRelay.dispose();
1245
+ streamRelay$1.endTurn();
1246
+ streamRelay$1.dispose();
1217
1247
  reconnectionHandle?.cancel();
1218
1248
  clearPendingTurn(new Error("ACP runner shutting down"));
1219
1249
  try {
1220
1250
  permissionHandler.reset();
1221
1251
  } catch (error) {
1222
- persistence.logger.debug(`[${opts.agentName}] Failed to reset permission handler:`, error);
1252
+ logger.logger.debug(`[${opts.agentName}] Failed to reset permission handler:`, error);
1223
1253
  }
1224
1254
  backend.offMessage?.(onBackendMessage);
1225
1255
  await backend.dispose();
1226
1256
  if (fileBackedPermissionMode) {
1227
1257
  try {
1228
- index$1.removeSessionModeFile(session.sessionId);
1258
+ sessionModeFile.removeSessionModeFile(session.sessionId);
1229
1259
  } catch (error) {
1230
- persistence.logger.debug(`[${opts.agentName}] Failed to remove session mode file:`, error);
1260
+ logger.logger.debug(`[${opts.agentName}] Failed to remove session mode file:`, error);
1231
1261
  }
1232
1262
  }
1233
1263
  try {
1234
1264
  happyServer.stop();
1235
1265
  } catch (error) {
1236
- persistence.logger.debug(`[${opts.agentName}] Failed to stop Happy MCP server:`, error);
1266
+ logger.logger.debug(`[${opts.agentName}] Failed to stop Happy MCP server:`, error);
1237
1267
  }
1238
1268
  try {
1239
1269
  session.closePromptQueueDrain();
@@ -1248,7 +1278,7 @@ ${persistence.BUILTIN_TODO_DISCOVERY}`;
1248
1278
  await session.flush();
1249
1279
  await session.close();
1250
1280
  } catch (error) {
1251
- persistence.logger.debug(`[${opts.agentName}] Session close failed:`, error);
1281
+ logger.logger.debug(`[${opts.agentName}] Session close failed:`, error);
1252
1282
  }
1253
1283
  }
1254
1284
  }
@@ -0,0 +1,182 @@
1
+ 'use strict';
2
+
3
+ var node_fs = require('node:fs');
4
+ var os = require('node:os');
5
+ var logger = require('./logger-CS0mw3fa.cjs');
6
+ var persistence = require('./persistence-yKTH3-5X.cjs');
7
+ var loginShellEnv = require('./loginShellEnv-BkuYtExZ.cjs');
8
+ require('chalk');
9
+ require('node:util');
10
+ require('./configuration-BSYpcPwE.cjs');
11
+ require('node:path');
12
+ require('./package-BwMrPwqH.cjs');
13
+ require('node:fs/promises');
14
+ require('zod');
15
+ require('./authRelay-BdYkC1Po.cjs');
16
+ require('node:crypto');
17
+ require('tweetnacl');
18
+ require('node:child_process');
19
+
20
+ const AGENT_HOME_CACHE_MS = 6e4;
21
+ const AGENT_HOME_FAILURE_CACHE_MS = 5 * 6e4;
22
+ const AGENT_HOME_MAX_STALE_MS = 10 * 6e4;
23
+ function decideShellProbe(entry, now, allowStale) {
24
+ if (!entry) return "await-probe";
25
+ const age = now - entry.probedAt;
26
+ if (age < entry.ttlMs) return "use-cached";
27
+ if (allowStale && age < AGENT_HOME_MAX_STALE_MS) return "use-stale-and-revalidate";
28
+ return "await-probe";
29
+ }
30
+ let shellProbe = null;
31
+ let shellProbeInFlight = null;
32
+ let last = null;
33
+ let originalDaemonEnv = null;
34
+ function snapshotDaemonEnv() {
35
+ if (!originalDaemonEnv) {
36
+ originalDaemonEnv = {};
37
+ for (const name of loginShellEnv.AGENT_HOME_ENV_NAMES) originalDaemonEnv[name] = process.env[name];
38
+ }
39
+ return originalDaemonEnv;
40
+ }
41
+ function probeShell(now) {
42
+ if (!shellProbeInFlight) {
43
+ const run = loginShellEnv.probeLoginShellEnv(loginShellEnv.AGENT_HOME_ENV_NAMES).then((env) => {
44
+ const entry = { env, probedAt: now, ttlMs: env ? AGENT_HOME_CACHE_MS : AGENT_HOME_FAILURE_CACHE_MS };
45
+ shellProbe = entry;
46
+ return entry;
47
+ });
48
+ shellProbeInFlight = run;
49
+ void run.finally(() => {
50
+ if (shellProbeInFlight === run) shellProbeInFlight = null;
51
+ }).catch(() => {
52
+ });
53
+ }
54
+ return shellProbeInFlight;
55
+ }
56
+ async function loginShellEnvFor(now, allowStale) {
57
+ const decision = decideShellProbe(shellProbe, now, allowStale);
58
+ if (decision === "await-probe") return (await probeShell(now)).env;
59
+ if (decision === "use-stale-and-revalidate") {
60
+ probeShell(now).catch((error) => logger.logger.debug("[AGENT HOME] background login-shell probe failed", error));
61
+ }
62
+ return shellProbe.env;
63
+ }
64
+ async function refreshAgentHomes(now = Date.now(), opts = {}) {
65
+ let input;
66
+ let homes;
67
+ try {
68
+ const loginShellEnv$1 = await loginShellEnvFor(now, opts.allowStale === true);
69
+ const settings = await persistence.readSettings();
70
+ input = {
71
+ settings: { claudeConfigDir: settings.claudeConfigDir, codexHome: settings.codexHome },
72
+ daemonEnv: snapshotDaemonEnv(),
73
+ loginShellEnv: loginShellEnv$1,
74
+ homeDir: os.homedir()
75
+ };
76
+ homes = loginShellEnv.resolveAgentHomes(input);
77
+ } catch (error) {
78
+ logger.logger.debug("[AGENT HOME] resolve failed, falling back", error);
79
+ if (last) return last.homes;
80
+ return loginShellEnv.resolveAgentHomes({ settings: {}, daemonEnv: snapshotDaemonEnv(), loginShellEnv: null, homeDir: os.homedir() });
81
+ }
82
+ const previous = last?.homes;
83
+ last = { input, homes };
84
+ applyAgentHomesToProcessEnv(homes);
85
+ if (!previous || previous.claudeConfigDir.path !== homes.claudeConfigDir.path || previous.codexHome.path !== homes.codexHome.path) {
86
+ logger.logger.debug(`[AGENT HOME] Claude config dir: ${loginShellEnv.describeAgentHome(homes.claudeConfigDir)}; Codex home: ${loginShellEnv.describeAgentHome(homes.codexHome)}`);
87
+ }
88
+ return homes;
89
+ }
90
+ function currentAgentHomes() {
91
+ return last?.homes ?? null;
92
+ }
93
+ function resetAgentHomesCache() {
94
+ shellProbe = null;
95
+ shellProbeInFlight = null;
96
+ last = null;
97
+ originalDaemonEnv = null;
98
+ }
99
+ function applyAgentHomesToProcessEnv(homes) {
100
+ const overlay = loginShellEnv.agentHomeEnv(homes);
101
+ for (const name of loginShellEnv.AGENT_HOME_ENV_NAMES) {
102
+ const next = overlay[name];
103
+ if (next === void 0) {
104
+ const original = snapshotDaemonEnv()[name];
105
+ if (original === void 0) delete process.env[name];
106
+ else process.env[name] = original;
107
+ } else if (process.env[name] !== next) {
108
+ process.env[name] = next;
109
+ }
110
+ }
111
+ }
112
+ function listDirSafe(path) {
113
+ try {
114
+ return node_fs.readdirSync(path);
115
+ } catch {
116
+ return [];
117
+ }
118
+ }
119
+ function fileSizeSafe(path) {
120
+ try {
121
+ const st = node_fs.statSync(path);
122
+ return st.isFile() ? st.size : null;
123
+ } catch {
124
+ return null;
125
+ }
126
+ }
127
+ function locateClaudeConversation(workingDirectory, claudeSessionId) {
128
+ const entry = last;
129
+ if (!entry) {
130
+ const input = { settings: {}, daemonEnv: process.env, loginShellEnv: null, homeDir: os.homedir() };
131
+ return loginShellEnv.findClaudeConversation(claudeSessionId, workingDirectory, loginShellEnv.agentHomeCandidates("claude", input), fileSizeSafe);
132
+ }
133
+ return loginShellEnv.findClaudeConversation(claudeSessionId, workingDirectory, loginShellEnv.agentHomeCandidates("claude", entry.input, entry.homes), fileSizeSafe);
134
+ }
135
+ function locateCodexThread(codexThreadId) {
136
+ const entry = last;
137
+ const input = entry?.input ?? { settings: {}, daemonEnv: process.env, loginShellEnv: null, homeDir: os.homedir() };
138
+ return loginShellEnv.findCodexThread(codexThreadId, loginShellEnv.agentHomeCandidates("codex", input, entry?.homes), listDirSafe);
139
+ }
140
+ function agentHomeSpawnEnv(input) {
141
+ const env = {};
142
+ if (input.claudeSessionId) {
143
+ const hit = locateClaudeConversation(input.workingDirectory, input.claudeSessionId);
144
+ if (hit && !hit.resolved) {
145
+ env[loginShellEnv.CLAUDE_CONFIG_DIR_ENV] = hit.home;
146
+ logger.logger.debug(`[AGENT HOME] Claude conversation ${input.claudeSessionId} found under ${hit.home}; overriding ${loginShellEnv.CLAUDE_CONFIG_DIR_ENV} for this spawn`);
147
+ }
148
+ }
149
+ if (input.codexThreadId) {
150
+ const hit = locateCodexThread(input.codexThreadId);
151
+ if (hit && !hit.resolved) {
152
+ env[loginShellEnv.CODEX_HOME_ENV] = hit.home;
153
+ logger.logger.debug(`[AGENT HOME] Codex thread ${input.codexThreadId} found under ${hit.home}; overriding ${loginShellEnv.CODEX_HOME_ENV} for this spawn`);
154
+ }
155
+ }
156
+ return env;
157
+ }
158
+
159
+ exports.AGENT_HOME_ENV_NAMES = loginShellEnv.AGENT_HOME_ENV_NAMES;
160
+ exports.CLAUDE_CONFIG_DIR_ENV = loginShellEnv.CLAUDE_CONFIG_DIR_ENV;
161
+ exports.CODEX_HOME_ENV = loginShellEnv.CODEX_HOME_ENV;
162
+ exports.agentHomeCandidates = loginShellEnv.agentHomeCandidates;
163
+ exports.agentHomeEnv = loginShellEnv.agentHomeEnv;
164
+ exports.claudeConversationPath = loginShellEnv.claudeConversationPath;
165
+ exports.claudeProjectDirName = loginShellEnv.claudeProjectDirName;
166
+ exports.codexRolloutFileMatches = loginShellEnv.codexRolloutFileMatches;
167
+ exports.describeAgentHome = loginShellEnv.describeAgentHome;
168
+ exports.expandHomePath = loginShellEnv.expandHomePath;
169
+ exports.findClaudeConversation = loginShellEnv.findClaudeConversation;
170
+ exports.findCodexThread = loginShellEnv.findCodexThread;
171
+ exports.probeLoginShellEnv = loginShellEnv.probeLoginShellEnv;
172
+ exports.resolveAgentHomes = loginShellEnv.resolveAgentHomes;
173
+ exports.AGENT_HOME_CACHE_MS = AGENT_HOME_CACHE_MS;
174
+ exports.AGENT_HOME_FAILURE_CACHE_MS = AGENT_HOME_FAILURE_CACHE_MS;
175
+ exports.AGENT_HOME_MAX_STALE_MS = AGENT_HOME_MAX_STALE_MS;
176
+ exports.agentHomeSpawnEnv = agentHomeSpawnEnv;
177
+ exports.currentAgentHomes = currentAgentHomes;
178
+ exports.decideShellProbe = decideShellProbe;
179
+ exports.locateClaudeConversation = locateClaudeConversation;
180
+ exports.locateCodexThread = locateCodexThread;
181
+ exports.refreshAgentHomes = refreshAgentHomes;
182
+ exports.resetAgentHomesCache = resetAgentHomesCache;