very-happy-cli 0.2.158 → 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-DIDRig5G.cjs → AcpBackend-Bm2rdke8.cjs} +78 -76
  2. package/dist/{AcpBackend-vDVLHuYJ.mjs → AcpBackend-mzv8Dhba.mjs} +4 -2
  3. package/dist/{AcpSessionManager-C44U99CC.cjs → AcpSessionManager-BAY1Pggx.cjs} +9 -9
  4. package/dist/{AcpSessionManager-CmRjfhn3.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-Dw8Jx_CJ.cjs → agentHome-CboCeKWq.cjs} +14 -28
  16. package/dist/{agentHome-CyLmGH5L.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-DIBF4U0Y.mjs → apiMachine-B9dLW_p5.mjs} +9116 -16015
  20. package/dist/{types-DnrPeN80.cjs → apiMachine-Bn8482VM.cjs} +9104 -16057
  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-DZbNcTXx.cjs → auto-BOX_fgmR.cjs} +70 -79
  34. package/dist/{auto-BlMZPwOk.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-BtPArqRH.mjs → config-CTx_jb-C.mjs} +7 -40
  62. package/dist/{config-DG84bjwF.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-DPCsWlWK.cjs → index-B6pAdvJx.cjs} +131 -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-ZChGsuB7.mjs → index-DMZqWwsP.mjs} +79 -39
  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-DarS_Wco.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-wKQGgXvN.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-DcQfee_O.cjs → installTerminalHooks-BQZbvxsZ.cjs} +5 -40
  116. package/dist/{installTerminalHooks-CpNbRFPz.mjs → installTerminalHooks-By7gBMEF.mjs} +3 -38
  117. package/dist/lib.cjs +28 -19
  118. package/dist/lib.d.cts +126 -2
  119. package/dist/lib.d.mts +126 -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-BN6bKIGb.mjs → mcp-B1A4I3TK.mjs} +27 -33
  138. package/dist/{mcp-DGdeUUDJ.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-bkw2NAZU.mjs → piRuntime-CSGkwCKQ.mjs} +2 -2
  159. package/dist/{piRuntime-3qtbKujX.cjs → piRuntime-C_H7MJCM.cjs} +4 -4
  160. package/dist/{piTerminal-DilKwM7B.mjs → piTerminal-C8a1OrNQ.mjs} +32 -35
  161. package/dist/{piTerminal-BYxp3LMr.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-Cjii069p.mjs → runGemini-BGeTz57m.mjs} +58 -31
  181. package/dist/{runGemini-28O2sqyI.cjs → runGemini-DSr9LIxL.cjs} +202 -175
  182. package/dist/{runOpenClaw-CiMZad-H.cjs → runOpenClaw-B1mTxN35.cjs} +64 -65
  183. package/dist/{runOpenClaw-jaLr7KF1.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-D5ejHPXG.cjs → send-B7J_eaG3.cjs} +16 -9
  189. package/dist/{send-C9mOtChi.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-W6771g3X.mjs → sessions-BEG_HTSi.mjs} +17 -8
  201. package/dist/{sessions-BNMPQoLE.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-D0QVhzRb.mjs → spawn-B7yro0b2.mjs} +26 -38
  207. package/dist/{spawn-Ddtom1cb.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-CqSwtw2O.mjs → teams-C32F1hqd.mjs} +9 -40
  225. package/dist/{teams-BZ1tayg_.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-BYMg0fR0.cjs → todo-BvUOTa8G.cjs} +15 -12
  239. package/dist/{todo-BbusB1zM.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-CrR9l62U.mjs +0 -2145
  252. package/dist/agentGuidance-DwOWbX55.cjs +0 -2217
  253. package/dist/index-BG932eCh.cjs +0 -19655
  254. package/dist/index-CVCt3kSt.mjs +0 -19591
  255. package/dist/index-D5ScEErM.cjs +0 -58
  256. package/dist/index-DgO0FHOx.mjs +0 -52
  257. package/dist/limits-D2uN090G.mjs +0 -2528
  258. package/dist/limits-kqFqhfsh.cjs +0 -2652
@@ -3,8 +3,10 @@
3
3
  var node_child_process = require('node:child_process');
4
4
  var sdk = require('@agentclientprotocol/sdk');
5
5
  var node_crypto = require('node:crypto');
6
- var persistence = require('./limits-kqFqhfsh.cjs');
7
- var index = require('./types-DnrPeN80.cjs');
6
+ var logger = require('./logger-CS0mw3fa.cjs');
7
+ var time = require('./time-DCuTyook.cjs');
8
+ var contentLogMetadata = require('./contentLogMetadata-ZSFk_NjQ.cjs');
9
+ var _package = require('./package-BwMrPwqH.cjs');
8
10
 
9
11
  function acpImageBlocks(attachments, supportsImages) {
10
12
  return attachments.filter((file) => ["image/jpeg", "image/png", "image/gif", "image/webp"].includes(file.mimeType)).map((file) => {
@@ -246,7 +248,7 @@ function handleAgentMessageChunk(update, ctx) {
246
248
  payload: { text, streaming: true }
247
249
  });
248
250
  } else {
249
- persistence.logger.debug("[AcpBackend] Received message chunk:", index.contentLogMetadata(text));
251
+ logger.logger.debug("[AcpBackend] Received message chunk:", contentLogMetadata.contentLogMetadata(text));
250
252
  ctx.emit({
251
253
  type: "model-output",
252
254
  textDelta: text
@@ -255,10 +257,10 @@ function handleAgentMessageChunk(update, ctx) {
255
257
  const idleTimeoutMs = ctx.transport.getIdleTimeout?.() ?? DEFAULT_IDLE_TIMEOUT_MS;
256
258
  ctx.setIdleTimeout(() => {
257
259
  if (ctx.activeToolCalls.size === 0) {
258
- persistence.logger.debug("[AcpBackend] No more chunks received, emitting idle status");
260
+ logger.logger.debug("[AcpBackend] No more chunks received, emitting idle status");
259
261
  ctx.emitIdleStatus();
260
262
  } else {
261
- persistence.logger.debug(`[AcpBackend] Delaying idle status - ${ctx.activeToolCalls.size} active tool calls`);
263
+ logger.logger.debug(`[AcpBackend] Delaying idle status - ${ctx.activeToolCalls.size} active tool calls`);
262
264
  }
263
265
  }, idleTimeoutMs);
264
266
  }
@@ -274,8 +276,8 @@ function handleAgentThoughtChunk(update, ctx) {
274
276
  return { handled: false };
275
277
  }
276
278
  if (ctx.activeToolCalls.size > 0) {
277
- persistence.logger.debug("[AcpBackend] Thinking chunk received during active tool calls:", {
278
- ...index.contentLogMetadata(text),
279
+ logger.logger.debug("[AcpBackend] Thinking chunk received during active tool calls:", {
280
+ ...contentLogMetadata.contentLogMetadata(text),
279
281
  activeToolCallCount: ctx.activeToolCalls.size
280
282
  });
281
283
  }
@@ -295,29 +297,29 @@ function startToolCall(toolCallId, toolKind, update, ctx, source) {
295
297
  ctx.toolCallIdToNameMap.set(toolCallId, realToolName);
296
298
  ctx.activeToolCalls.add(toolCallId);
297
299
  ctx.toolCallStartTimes.set(toolCallId, startTime);
298
- persistence.logger.debug(`[AcpBackend] \u23F1\uFE0F Set startTime for ${toolCallId} at ${new Date(startTime).toISOString()} (from ${source})`);
299
- persistence.logger.debug(`[AcpBackend] Tool call START: ${toolCallId}${isInvestigation ? " [INVESTIGATION TOOL]" : ""}`);
300
+ logger.logger.debug(`[AcpBackend] \u23F1\uFE0F Set startTime for ${toolCallId} at ${new Date(startTime).toISOString()} (from ${source})`);
301
+ logger.logger.debug(`[AcpBackend] Tool call START: ${toolCallId}${isInvestigation ? " [INVESTIGATION TOOL]" : ""}`);
300
302
  if (isInvestigation) {
301
- persistence.logger.debug(`[AcpBackend] \u{1F50D} Investigation tool detected - extended timeout (10min) will be used`);
303
+ logger.logger.debug(`[AcpBackend] \u{1F50D} Investigation tool detected - extended timeout (10min) will be used`);
302
304
  }
303
305
  const timeoutMs = ctx.transport.getToolCallTimeout?.(toolCallId, toolKindStr) ?? DEFAULT_TOOL_CALL_TIMEOUT_MS;
304
306
  if (!ctx.toolCallTimeouts.has(toolCallId)) {
305
307
  const timeout = setTimeout(() => {
306
308
  const duration = formatDuration(ctx.toolCallStartTimes.get(toolCallId));
307
- persistence.logger.debug(`[AcpBackend] Tool call TIMEOUT (from ${source}): ${toolCallId} after ${(timeoutMs / 1e3).toFixed(0)}s - Duration: ${duration}, removing from active set`);
309
+ logger.logger.debug(`[AcpBackend] Tool call TIMEOUT (from ${source}): ${toolCallId} after ${(timeoutMs / 1e3).toFixed(0)}s - Duration: ${duration}, removing from active set`);
308
310
  ctx.activeToolCalls.delete(toolCallId);
309
311
  ctx.toolCallStartTimes.delete(toolCallId);
310
312
  ctx.toolCallTimeouts.delete(toolCallId);
311
313
  ctx.toolCallOutputs.delete(toolCallId);
312
314
  if (ctx.activeToolCalls.size === 0) {
313
- persistence.logger.debug("[AcpBackend] No more active tool calls after timeout, emitting idle status");
315
+ logger.logger.debug("[AcpBackend] No more active tool calls after timeout, emitting idle status");
314
316
  ctx.emitIdleStatus();
315
317
  }
316
318
  }, timeoutMs);
317
319
  ctx.toolCallTimeouts.set(toolCallId, timeout);
318
- persistence.logger.debug(`[AcpBackend] \u23F1\uFE0F Set timeout for ${toolCallId}: ${(timeoutMs / 1e3).toFixed(0)}s${isInvestigation ? " (investigation tool)" : ""}`);
320
+ logger.logger.debug(`[AcpBackend] \u23F1\uFE0F Set timeout for ${toolCallId}: ${(timeoutMs / 1e3).toFixed(0)}s${isInvestigation ? " (investigation tool)" : ""}`);
319
321
  } else {
320
- persistence.logger.debug(`[AcpBackend] Timeout already set for ${toolCallId}, skipping`);
322
+ logger.logger.debug(`[AcpBackend] Timeout already set for ${toolCallId}, skipping`);
321
323
  }
322
324
  ctx.clearIdleTimeout();
323
325
  ctx.emit({ type: "status", status: "running" });
@@ -344,7 +346,7 @@ function completeToolCall(toolCallId, toolKind, content, ctx, exitCode) {
344
346
  clearTimeout(timeout);
345
347
  ctx.toolCallTimeouts.delete(toolCallId);
346
348
  }
347
- persistence.logger.debug(`[AcpBackend] Tool call COMPLETED: ${toolCallId} - Duration: ${duration}. Active tool calls: ${ctx.activeToolCalls.size}`);
349
+ logger.logger.debug(`[AcpBackend] Tool call COMPLETED: ${toolCallId} - Duration: ${duration}. Active tool calls: ${ctx.activeToolCalls.size}`);
348
350
  const output = ctx.toolCallOutputs.get(toolCallId);
349
351
  ctx.toolCallOutputs.delete(toolCallId);
350
352
  const bashResult = buildAcpBashResult(output, exitCode);
@@ -356,7 +358,7 @@ function completeToolCall(toolCallId, toolKind, content, ctx, exitCode) {
356
358
  });
357
359
  if (ctx.activeToolCalls.size === 0) {
358
360
  ctx.clearIdleTimeout();
359
- persistence.logger.debug("[AcpBackend] All tool calls completed, emitting idle status");
361
+ logger.logger.debug("[AcpBackend] All tool calls completed, emitting idle status");
360
362
  ctx.emitIdleStatus();
361
363
  }
362
364
  }
@@ -369,17 +371,17 @@ function failToolCall(toolCallId, status, toolKind, content, ctx) {
369
371
  if (isInvestigation) {
370
372
  const durationStr2 = formatDuration(startTime);
371
373
  const durationMinutes = formatDurationMinutes(startTime);
372
- persistence.logger.debug(`[AcpBackend] \u{1F50D} Investigation tool ${status.toUpperCase()} after ${durationMinutes} minutes (${durationStr2})`);
374
+ logger.logger.debug(`[AcpBackend] \u{1F50D} Investigation tool ${status.toUpperCase()} after ${durationMinutes} minutes (${durationStr2})`);
373
375
  if (duration) {
374
376
  const threeMinutes = 3 * 60 * 1e3;
375
377
  const tolerance = 5e3;
376
378
  if (Math.abs(duration - threeMinutes) < tolerance) {
377
- persistence.logger.debug(`[AcpBackend] \u{1F50D} \u26A0\uFE0F Investigation tool failed at ~3 minutes - likely Gemini CLI timeout, not our timeout`);
379
+ logger.logger.debug(`[AcpBackend] \u{1F50D} \u26A0\uFE0F Investigation tool failed at ~3 minutes - likely Gemini CLI timeout, not our timeout`);
378
380
  }
379
381
  }
380
- persistence.logger.debug("[AcpBackend] Investigation tool failed with content metadata:", index.contentLogMetadata(content));
381
- persistence.logger.debug(`[AcpBackend] \u{1F50D} Investigation tool timeout status BEFORE cleanup: ${hadTimeout ? "timeout was set" : "no timeout was set"}`);
382
- persistence.logger.debug(`[AcpBackend] \u{1F50D} Investigation tool startTime status BEFORE cleanup: ${startTime ? `set at ${new Date(startTime).toISOString()}` : "not set"}`);
382
+ logger.logger.debug("[AcpBackend] Investigation tool failed with content metadata:", contentLogMetadata.contentLogMetadata(content));
383
+ logger.logger.debug(`[AcpBackend] \u{1F50D} Investigation tool timeout status BEFORE cleanup: ${hadTimeout ? "timeout was set" : "no timeout was set"}`);
384
+ logger.logger.debug(`[AcpBackend] \u{1F50D} Investigation tool startTime status BEFORE cleanup: ${startTime ? `set at ${new Date(startTime).toISOString()}` : "not set"}`);
383
385
  }
384
386
  ctx.activeToolCalls.delete(toolCallId);
385
387
  ctx.toolCallStartTimes.delete(toolCallId);
@@ -388,17 +390,17 @@ function failToolCall(toolCallId, status, toolKind, content, ctx) {
388
390
  if (timeout) {
389
391
  clearTimeout(timeout);
390
392
  ctx.toolCallTimeouts.delete(toolCallId);
391
- persistence.logger.debug(`[AcpBackend] Cleared timeout for ${toolCallId} (tool call ${status})`);
393
+ logger.logger.debug(`[AcpBackend] Cleared timeout for ${toolCallId} (tool call ${status})`);
392
394
  } else {
393
- persistence.logger.debug(`[AcpBackend] No timeout found for ${toolCallId} (tool call ${status}) - timeout may not have been set`);
395
+ logger.logger.debug(`[AcpBackend] No timeout found for ${toolCallId} (tool call ${status}) - timeout may not have been set`);
394
396
  }
395
397
  const durationStr = formatDuration(startTime);
396
- persistence.logger.debug(`[AcpBackend] Tool call ${status.toUpperCase()}: ${toolCallId} - Duration: ${durationStr}. Active tool calls: ${ctx.activeToolCalls.size}`);
398
+ logger.logger.debug(`[AcpBackend] Tool call ${status.toUpperCase()}: ${toolCallId} - Duration: ${durationStr}. Active tool calls: ${ctx.activeToolCalls.size}`);
397
399
  const errorDetail = extractErrorDetail(content);
398
400
  if (errorDetail) {
399
- persistence.logger.debug("[AcpBackend] Tool call error detail received:", index.contentLogMetadata(errorDetail));
401
+ logger.logger.debug("[AcpBackend] Tool call error detail received:", contentLogMetadata.contentLogMetadata(errorDetail));
400
402
  } else {
401
- persistence.logger.debug(`[AcpBackend] \u274C Tool call ${status} but no error details in content`);
403
+ logger.logger.debug(`[AcpBackend] \u274C Tool call ${status} but no error details in content`);
402
404
  }
403
405
  ctx.emit({
404
406
  type: "tool-result",
@@ -408,7 +410,7 @@ function failToolCall(toolCallId, status, toolKind, content, ctx) {
408
410
  });
409
411
  if (ctx.activeToolCalls.size === 0) {
410
412
  ctx.clearIdleTimeout();
411
- persistence.logger.debug("[AcpBackend] All tool calls completed/failed, emitting idle status");
413
+ logger.logger.debug("[AcpBackend] All tool calls completed/failed, emitting idle status");
412
414
  ctx.emitIdleStatus();
413
415
  }
414
416
  }
@@ -416,7 +418,7 @@ function handleToolCallUpdate(update, ctx) {
416
418
  const status = update.status;
417
419
  const toolCallId = update.toolCallId;
418
420
  if (!toolCallId) {
419
- persistence.logger.debug("[AcpBackend] Tool call update without toolCallId:", index.contentLogMetadata(update));
421
+ logger.logger.debug("[AcpBackend] Tool call update without toolCallId:", contentLogMetadata.contentLogMetadata(update));
420
422
  return { handled: false };
421
423
  }
422
424
  const toolKind = update.kind || "unknown";
@@ -433,7 +435,7 @@ function handleToolCallUpdate(update, ctx) {
433
435
  toolCallCountSincePrompt++;
434
436
  startToolCall(toolCallId, toolKind, update, ctx, "tool_call_update");
435
437
  } else {
436
- persistence.logger.debug(`[AcpBackend] Tool call ${toolCallId} already tracked, status: ${status}`);
438
+ logger.logger.debug(`[AcpBackend] Tool call ${toolCallId} already tracked, status: ${status}`);
437
439
  }
438
440
  } else if (status === "completed") {
439
441
  completeToolCall(toolCallId, toolKind, update.content, ctx, terminalMeta.exitCode);
@@ -445,14 +447,14 @@ function handleToolCallUpdate(update, ctx) {
445
447
  function handleToolCall(update, ctx) {
446
448
  const toolCallId = update.toolCallId;
447
449
  const status = update.status;
448
- persistence.logger.debug(`[AcpBackend] Received tool_call: toolCallId=${toolCallId}, status=${status ?? "unknown"}`);
450
+ logger.logger.debug(`[AcpBackend] Received tool_call: toolCallId=${toolCallId}, status=${status ?? "unknown"}`);
449
451
  const isInProgress = !status || status === "in_progress" || status === "pending";
450
452
  if (!toolCallId || !isInProgress) {
451
- persistence.logger.debug(`[AcpBackend] Tool call ${toolCallId} not in progress (status: ${status}), skipping`);
453
+ logger.logger.debug(`[AcpBackend] Tool call ${toolCallId} not in progress (status: ${status}), skipping`);
452
454
  return { handled: false };
453
455
  }
454
456
  if (ctx.activeToolCalls.has(toolCallId)) {
455
- persistence.logger.debug(`[AcpBackend] Tool call ${toolCallId} already in active set, skipping`);
457
+ logger.logger.debug(`[AcpBackend] Tool call ${toolCallId} already in active set, skipping`);
456
458
  return { handled: true };
457
459
  }
458
460
  startToolCall(toolCallId, update.kind, update, ctx, "tool_call");
@@ -540,7 +542,7 @@ function nodeToWebStreams(stdin, stdout) {
540
542
  return new Promise((resolve, reject) => {
541
543
  const ok = stdin.write(chunk, (err) => {
542
544
  if (err) {
543
- persistence.logger.debug("[AcpBackend] Error writing to stdin:", index.errorLogMetadata(err));
545
+ logger.logger.debug("[AcpBackend] Error writing to stdin:", contentLogMetadata.errorLogMetadata(err));
544
546
  reject(err);
545
547
  }
546
548
  });
@@ -569,7 +571,7 @@ function nodeToWebStreams(stdin, stdout) {
569
571
  controller.close();
570
572
  });
571
573
  stdout.on("error", (err) => {
572
- persistence.logger.debug("[AcpBackend] Stdout error:", index.errorLogMetadata(err));
574
+ logger.logger.debug("[AcpBackend] Stdout error:", contentLogMetadata.errorLogMetadata(err));
573
575
  controller.error(err);
574
576
  });
575
577
  },
@@ -592,9 +594,9 @@ async function withRetry(operation, options) {
592
594
  options.baseDelayMs * Math.pow(2, attempt - 1),
593
595
  options.maxDelayMs
594
596
  );
595
- persistence.logger.debug(`[AcpBackend] ${options.operationName} failed (attempt ${attempt}/${options.maxAttempts}). Retrying in ${delayMs}ms...`, index.errorLogMetadata(lastError));
597
+ logger.logger.debug(`[AcpBackend] ${options.operationName} failed (attempt ${attempt}/${options.maxAttempts}). Retrying in ${delayMs}ms...`, contentLogMetadata.errorLogMetadata(lastError));
596
598
  options.onRetry?.(attempt, lastError);
597
- await persistence.delay(delayMs);
599
+ await time.delay(delayMs);
598
600
  } else {
599
601
  break;
600
602
  }
@@ -648,7 +650,7 @@ class AcpBackend {
648
650
  try {
649
651
  listener(msg);
650
652
  } catch (error) {
651
- persistence.logger.warn("[AcpBackend] Error in message handler:", index.errorLogMetadata(error));
653
+ logger.logger.warn("[AcpBackend] Error in message handler:", contentLogMetadata.errorLogMetadata(error));
652
654
  }
653
655
  }
654
656
  }
@@ -660,7 +662,7 @@ class AcpBackend {
660
662
  this.emit({ type: "status", status: "starting" });
661
663
  let startupStatusErrorEmitted = false;
662
664
  try {
663
- persistence.logger.debug(`[AcpBackend] Starting session: ${sessionId}`);
665
+ logger.logger.debug(`[AcpBackend] Starting session: ${sessionId}`);
664
666
  const args = this.options.args || [];
665
667
  if (process.platform === "win32") {
666
668
  const fullCommand = [this.options.command, ...args].join(" ");
@@ -708,9 +710,9 @@ class AcpBackend {
708
710
  activeToolCalls: this.activeToolCalls,
709
711
  hasActiveInvestigation
710
712
  };
711
- persistence.logger.debug("[AcpBackend] Agent stderr received:", {
713
+ logger.logger.debug("[AcpBackend] Agent stderr received:", {
712
714
  investigationActive: hasActiveInvestigation,
713
- ...index.contentLogMetadata(text)
715
+ ...contentLogMetadata.contentLogMetadata(text)
714
716
  });
715
717
  if (this.transport.handleStderr) {
716
718
  const result = this.transport.handleStderr(text, context);
@@ -721,14 +723,14 @@ class AcpBackend {
721
723
  });
722
724
  this.process.on("error", (err) => {
723
725
  signalStartupFailure(err);
724
- persistence.logger.debug("[AcpBackend] Process error:", index.errorLogMetadata(err));
726
+ logger.logger.debug("[AcpBackend] Process error:", contentLogMetadata.errorLogMetadata(err));
725
727
  startupStatusErrorEmitted = true;
726
728
  this.emit({ type: "status", status: "error", detail: err.message });
727
729
  });
728
730
  this.process.on("exit", (code, signal) => {
729
731
  if (!this.disposed && code !== 0 && code !== null) {
730
732
  signalStartupFailure(new Error(`Exit code: ${code}`));
731
- persistence.logger.debug(`[AcpBackend] Process exited with code ${code}, signal ${signal}`);
733
+ logger.logger.debug(`[AcpBackend] Process exited with code ${code}, signal ${signal}`);
732
734
  this.emit({ type: "status", status: "stopped", detail: `Exit code: ${code}` });
733
735
  }
734
736
  });
@@ -761,7 +763,7 @@ class AcpBackend {
761
763
  }
762
764
  }
763
765
  if (filteredCount > 0) {
764
- persistence.logger.debug(`[AcpBackend] Filtered out ${filteredCount} non-JSON lines from ${transport.agentName} stdout`);
766
+ logger.logger.debug(`[AcpBackend] Filtered out ${filteredCount} non-JSON lines from ${transport.agentName} stdout`);
765
767
  }
766
768
  controller.close();
767
769
  break;
@@ -782,7 +784,7 @@ class AcpBackend {
782
784
  }
783
785
  }
784
786
  } catch (error) {
785
- persistence.logger.debug("[AcpBackend] Error filtering stdout stream:", index.errorLogMetadata(error));
787
+ logger.logger.debug("[AcpBackend] Error filtering stdout stream:", contentLogMetadata.errorLogMetadata(error));
786
788
  controller.error(error);
787
789
  } finally {
788
790
  reader.releaseLock();
@@ -808,15 +810,15 @@ class AcpBackend {
808
810
  };
809
811
  toolName = this.transport.determineToolName?.(toolName, toolCallId, input, context) ?? toolName;
810
812
  if (toolName !== (toolCall?.kind || toolCall?.toolName || extendedParams.kind || "Unknown tool")) {
811
- persistence.logger.debug(`[AcpBackend] Inferred tool name for toolCallId: ${toolCallId}`);
813
+ logger.logger.debug(`[AcpBackend] Inferred tool name for toolCallId: ${toolCallId}`);
812
814
  }
813
815
  this.toolCallCountSincePrompt++;
814
816
  const options = extendedParams.options || [];
815
- persistence.logger.debug("[AcpBackend] Permission request metadata:", {
817
+ logger.logger.debug("[AcpBackend] Permission request metadata:", {
816
818
  hasToolCall: !!toolCall,
817
819
  toolCallId,
818
820
  optionCount: options.length,
819
- input: index.contentLogMetadata(input)
821
+ input: contentLogMetadata.contentLogMetadata(input)
820
822
  });
821
823
  this.emit({
822
824
  type: "permission-request",
@@ -879,7 +881,7 @@ class AcpBackend {
879
881
  }
880
882
  return { outcome: { outcome: "selected", optionId } };
881
883
  } catch (error) {
882
- persistence.logger.debug("[AcpBackend] Error in permission handler:", index.errorLogMetadata(error));
884
+ logger.logger.debug("[AcpBackend] Error in permission handler:", contentLogMetadata.errorLogMetadata(error));
883
885
  return { outcome: { outcome: "selected", optionId: "cancel" } };
884
886
  }
885
887
  }
@@ -904,11 +906,11 @@ class AcpBackend {
904
906
  },
905
907
  clientInfo: {
906
908
  name: "happy-cli",
907
- version: persistence.packageJson.version
909
+ version: _package.packageJson.version
908
910
  }
909
911
  };
910
912
  const initTimeout = this.transport.getInitTimeout();
911
- persistence.logger.debug(`[AcpBackend] Initializing connection (timeout: ${initTimeout}ms)...`);
913
+ logger.logger.debug(`[AcpBackend] Initializing connection (timeout: ${initTimeout}ms)...`);
912
914
  const isNonRetryableStartupError = (error) => {
913
915
  const maybeErr = error;
914
916
  if (startupFailure && error === startupFailure) {
@@ -951,7 +953,7 @@ class AcpBackend {
951
953
  shouldRetry: (error) => !isNonRetryableStartupError(error)
952
954
  }
953
955
  );
954
- persistence.logger.debug(`[AcpBackend] Initialize completed`);
956
+ logger.logger.debug(`[AcpBackend] Initialize completed`);
955
957
  if (this.options.verbose) {
956
958
  logAcpBackendMuted(
957
959
  `Incoming initialize response from ${this.options.agentName}: ${summarizeSessionMetadataPayload(initializeResponse)}`
@@ -967,7 +969,7 @@ class AcpBackend {
967
969
  cwd: this.options.cwd,
968
970
  mcpServers
969
971
  };
970
- persistence.logger.debug(`[AcpBackend] Creating new session...`);
972
+ logger.logger.debug(`[AcpBackend] Creating new session...`);
971
973
  const sessionResponse = await withRetry(
972
974
  async () => {
973
975
  let timeoutHandle = null;
@@ -1003,7 +1005,7 @@ class AcpBackend {
1003
1005
  }
1004
1006
  );
1005
1007
  this.acpSessionId = sessionResponse.sessionId;
1006
- persistence.logger.debug(`[AcpBackend] Session created: ${this.acpSessionId}`);
1008
+ logger.logger.debug(`[AcpBackend] Session created: ${this.acpSessionId}`);
1007
1009
  if (this.options.verbose) {
1008
1010
  logAcpBackendMuted(
1009
1011
  `Incoming newSession response from ${this.options.agentName}: ${summarizeSessionMetadataPayload(sessionResponse)}`
@@ -1013,13 +1015,13 @@ class AcpBackend {
1013
1015
  this.emitIdleStatus();
1014
1016
  if (initialPrompt) {
1015
1017
  this.sendPrompt(sessionId, initialPrompt).catch((error) => {
1016
- persistence.logger.debug("[AcpBackend] Error sending initial prompt:", index.errorLogMetadata(error));
1018
+ logger.logger.debug("[AcpBackend] Error sending initial prompt:", contentLogMetadata.errorLogMetadata(error));
1017
1019
  this.emit({ type: "status", status: "error", detail: String(error) });
1018
1020
  });
1019
1021
  }
1020
1022
  return { sessionId };
1021
1023
  } catch (error) {
1022
- persistence.logger.debug("[AcpBackend] Error starting session:", index.errorLogMetadata(error));
1024
+ logger.logger.debug("[AcpBackend] Error starting session:", contentLogMetadata.errorLogMetadata(error));
1023
1025
  if (!startupStatusErrorEmitted) {
1024
1026
  this.emit({
1025
1027
  type: "status",
@@ -1091,13 +1093,13 @@ class AcpBackend {
1091
1093
  const notification = params;
1092
1094
  const update = notification.update;
1093
1095
  if (!update) {
1094
- persistence.logger.debug("[AcpBackend] Received session update without update field:", index.contentLogMetadata(params));
1096
+ logger.logger.debug("[AcpBackend] Received session update without update field:", contentLogMetadata.contentLogMetadata(params));
1095
1097
  return;
1096
1098
  }
1097
1099
  const sessionUpdateType = update.sessionUpdate;
1098
1100
  const updateType = sessionUpdateType;
1099
- const updateMetadata = index.contentLogMetadata(update);
1100
- persistence.logger.debug(`[AcpBackend] Received session update type: ${sessionUpdateType ?? "unknown"}`, updateMetadata);
1101
+ const updateMetadata = contentLogMetadata.contentLogMetadata(update);
1102
+ logger.logger.debug(`[AcpBackend] Received session update type: ${sessionUpdateType ?? "unknown"}`, updateMetadata);
1101
1103
  if (this.options.verbose) {
1102
1104
  logAcpBackendMuted(
1103
1105
  `Incoming session update from ${this.options.agentName}: type=${sessionUpdateType ?? "unknown"} payloadBytes=${String(updateMetadata.payloadBytes ?? "unknown")}`
@@ -1170,7 +1172,7 @@ class AcpBackend {
1170
1172
  "current_mode_update"
1171
1173
  ];
1172
1174
  if (updateType && !handledTypes.includes(updateType) && !update.messageChunk && !update.plan && !update.thinking) {
1173
- persistence.logger.debug(`[AcpBackend] Unhandled session update type: ${updateType}`, index.contentLogMetadata(update));
1175
+ logger.logger.debug(`[AcpBackend] Unhandled session update type: ${updateType}`, contentLogMetadata.contentLogMetadata(update));
1174
1176
  }
1175
1177
  }
1176
1178
  // Promise resolver for waitForIdle - set when waiting for response to complete
@@ -1185,7 +1187,7 @@ class AcpBackend {
1185
1187
  this.toolCallCountSincePrompt = 0;
1186
1188
  this.recentPromptHadChangeTitle = promptHasChangeTitle;
1187
1189
  if (promptHasChangeTitle) {
1188
- persistence.logger.debug('[AcpBackend] Prompt contains change_title instruction - will auto-approve first "other" tool call if it matches pattern');
1190
+ logger.logger.debug('[AcpBackend] Prompt contains change_title instruction - will auto-approve first "other" tool call if it matches pattern');
1189
1191
  }
1190
1192
  if (this.disposed) {
1191
1193
  throw new Error("Backend has been disposed");
@@ -1196,9 +1198,9 @@ class AcpBackend {
1196
1198
  this.emit({ type: "status", status: "running" });
1197
1199
  this.waitingForResponse = true;
1198
1200
  try {
1199
- persistence.logger.debug("[AcpBackend] Sending prompt:", {
1201
+ logger.logger.debug("[AcpBackend] Sending prompt:", {
1200
1202
  sessionId,
1201
- ...index.contentLogMetadata(prompt)
1203
+ ...contentLogMetadata.contentLogMetadata(prompt)
1202
1204
  });
1203
1205
  const contentBlock = {
1204
1206
  type: "text",
@@ -1208,7 +1210,7 @@ class AcpBackend {
1208
1210
  sessionId: this.acpSessionId,
1209
1211
  prompt: [contentBlock, ...acpImageBlocks(attachments, this.supportsImagePrompt)]
1210
1212
  };
1211
- persistence.logger.debug("[AcpBackend] Prompt request prepared:", {
1213
+ logger.logger.debug("[AcpBackend] Prompt request prepared:", {
1212
1214
  sessionId: this.acpSessionId,
1213
1215
  blockCount: promptRequest.prompt.length
1214
1216
  });
@@ -1216,9 +1218,9 @@ class AcpBackend {
1216
1218
  if (response.usage) {
1217
1219
  this.emit({ type: "token-count", ...response.usage });
1218
1220
  }
1219
- persistence.logger.debug("[AcpBackend] Prompt request sent to ACP connection");
1221
+ logger.logger.debug("[AcpBackend] Prompt request sent to ACP connection");
1220
1222
  } catch (error) {
1221
- persistence.logger.debug("[AcpBackend] Error sending prompt:", index.errorLogMetadata(error));
1223
+ logger.logger.debug("[AcpBackend] Error sending prompt:", contentLogMetadata.errorLogMetadata(error));
1222
1224
  this.waitingForResponse = false;
1223
1225
  let errorDetail;
1224
1226
  if (error instanceof Error) {
@@ -1267,10 +1269,10 @@ class AcpBackend {
1267
1269
  }
1268
1270
  return true;
1269
1271
  } catch (error) {
1270
- persistence.logger.debug("[AcpBackend] Failed to set session config option:", {
1272
+ logger.logger.debug("[AcpBackend] Failed to set session config option:", {
1271
1273
  configId,
1272
- value: index.contentLogMetadata(value),
1273
- error: index.errorLogMetadata(error)
1274
+ value: contentLogMetadata.contentLogMetadata(value),
1275
+ error: contentLogMetadata.errorLogMetadata(error)
1274
1276
  });
1275
1277
  return false;
1276
1278
  }
@@ -1295,7 +1297,7 @@ class AcpBackend {
1295
1297
  });
1296
1298
  return true;
1297
1299
  } catch (error) {
1298
- persistence.logger.debug("[AcpBackend] Failed to set session mode:", { modeId, error: index.errorLogMetadata(error) });
1300
+ logger.logger.debug("[AcpBackend] Failed to set session mode:", { modeId, error: contentLogMetadata.errorLogMetadata(error) });
1299
1301
  return false;
1300
1302
  }
1301
1303
  }
@@ -1317,7 +1319,7 @@ class AcpBackend {
1317
1319
  });
1318
1320
  return true;
1319
1321
  } catch (error) {
1320
- persistence.logger.debug("[AcpBackend] Failed to set session model:", { modelId, error: index.errorLogMetadata(error) });
1322
+ logger.logger.debug("[AcpBackend] Failed to set session model:", { modelId, error: contentLogMetadata.errorLogMetadata(error) });
1321
1323
  return false;
1322
1324
  }
1323
1325
  }
@@ -1349,7 +1351,7 @@ class AcpBackend {
1349
1351
  emitIdleStatus() {
1350
1352
  this.emit({ type: "status", status: "idle" });
1351
1353
  if (this.idleResolver) {
1352
- persistence.logger.debug("[AcpBackend] Resolving idle waiter");
1354
+ logger.logger.debug("[AcpBackend] Resolving idle waiter");
1353
1355
  this.idleResolver();
1354
1356
  }
1355
1357
  }
@@ -1361,7 +1363,7 @@ class AcpBackend {
1361
1363
  await this.connection.cancel({ sessionId: this.acpSessionId });
1362
1364
  this.emit({ type: "status", status: "idle", detail: "Cancelled by user" });
1363
1365
  } catch (error) {
1364
- persistence.logger.debug("[AcpBackend] Error cancelling:", index.errorLogMetadata(error));
1366
+ logger.logger.debug("[AcpBackend] Error cancelling:", contentLogMetadata.errorLogMetadata(error));
1365
1367
  }
1366
1368
  }
1367
1369
  /**
@@ -1380,12 +1382,12 @@ class AcpBackend {
1380
1382
  * @param approved - Whether the permission was granted
1381
1383
  */
1382
1384
  async respondToPermission(requestId, approved) {
1383
- persistence.logger.debug(`[AcpBackend] Permission response event (UI only): ${requestId} = ${approved}`);
1385
+ logger.logger.debug(`[AcpBackend] Permission response event (UI only): ${requestId} = ${approved}`);
1384
1386
  this.emit({ type: "permission-response", id: requestId, approved });
1385
1387
  }
1386
1388
  async dispose() {
1387
1389
  if (this.disposed) return;
1388
- persistence.logger.debug("[AcpBackend] Disposing backend");
1390
+ logger.logger.debug("[AcpBackend] Disposing backend");
1389
1391
  this.disposed = true;
1390
1392
  if (this.connection && this.acpSessionId) {
1391
1393
  try {
@@ -1395,7 +1397,7 @@ class AcpBackend {
1395
1397
  // 2s timeout for graceful shutdown
1396
1398
  ]);
1397
1399
  } catch (error) {
1398
- persistence.logger.debug("[AcpBackend] Error during graceful shutdown:", index.errorLogMetadata(error));
1400
+ logger.logger.debug("[AcpBackend] Error during graceful shutdown:", contentLogMetadata.errorLogMetadata(error));
1399
1401
  }
1400
1402
  }
1401
1403
  if (this.process) {
@@ -1403,7 +1405,7 @@ class AcpBackend {
1403
1405
  await new Promise((resolve) => {
1404
1406
  const timeout = setTimeout(() => {
1405
1407
  if (this.process) {
1406
- persistence.logger.debug("[AcpBackend] Force killing process");
1408
+ logger.logger.debug("[AcpBackend] Force killing process");
1407
1409
  this.process.kill("SIGKILL");
1408
1410
  }
1409
1411
  resolve();
@@ -1,8 +1,10 @@
1
1
  import { spawn } from 'node:child_process';
2
2
  import { ndJsonStream, ClientSideConnection } from '@agentclientprotocol/sdk';
3
3
  import { randomUUID } from 'node:crypto';
4
- import { l as logger, F as packageJson, g as delay } from './limits-D2uN090G.mjs';
5
- import { j as contentLogMetadata, i as errorLogMetadata } from './types-DIBF4U0Y.mjs';
4
+ import { l as logger } from './logger-6HYUEXNk.mjs';
5
+ import { d as delay } from './time-D0XyHOid.mjs';
6
+ import { c as contentLogMetadata, e as errorLogMetadata } from './contentLogMetadata-BlWI0egu.mjs';
7
+ import { p as packageJson } from './package-BhaKlnxz.mjs';
6
8
 
7
9
  function acpImageBlocks(attachments, supportsImages) {
8
10
  return attachments.filter((file) => ["image/jpeg", "image/png", "image/gif", "image/webp"].includes(file.mimeType)).map((file) => {
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var cuid2 = require('@paralleldrive/cuid2');
4
- var persistence = require('./limits-kqFqhfsh.cjs');
4
+ var index = require('./index-DA7yINuk.cjs');
5
5
 
6
6
  function turnOptions(turnId, time) {
7
7
  return turnId ? { turn: turnId, time } : { time };
@@ -108,12 +108,12 @@ class AcpSessionManager {
108
108
  }
109
109
  const options = {
110
110
  ...turnOptions(this.currentTurnId, this.nextTime()),
111
- ...key ? { streamKey: persistence.streamKeyOf(key.mid, key.idx) } : {}
111
+ ...key ? { streamKey: index.streamKeyOf(key.mid, key.idx) } : {}
112
112
  };
113
113
  if (type === "thinking") {
114
- return [persistence.createEnvelope("agent", { t: "text", text, thinking: true }, options)];
114
+ return [index.createEnvelope("agent", { t: "text", text, thinking: true }, options)];
115
115
  }
116
- return [persistence.createEnvelope("agent", { t: "text", text }, options)];
116
+ return [index.createEnvelope("agent", { t: "text", text }, options)];
117
117
  }
118
118
  startTurn() {
119
119
  if (this.currentTurnId) {
@@ -125,7 +125,7 @@ class AcpSessionManager {
125
125
  this.blockCursor = 0;
126
126
  return [
127
127
  ...flushed,
128
- persistence.createEnvelope("agent", { t: "turn-start" }, { turn: this.currentTurnId, time: this.nextTime() })
128
+ index.createEnvelope("agent", { t: "turn-start" }, { turn: this.currentTurnId, time: this.nextTime() })
129
129
  ];
130
130
  }
131
131
  endTurn(status) {
@@ -138,7 +138,7 @@ class AcpSessionManager {
138
138
  this.acpCallToSessionCall.clear();
139
139
  return [
140
140
  ...flushed,
141
- persistence.createEnvelope("agent", { t: "turn-end", status }, { turn: turnId, time: this.nextTime() })
141
+ index.createEnvelope("agent", { t: "turn-end", status }, { turn: turnId, time: this.nextTime() })
142
142
  ];
143
143
  }
144
144
  mapMessage(msg) {
@@ -156,7 +156,7 @@ class AcpSessionManager {
156
156
  }
157
157
  return [
158
158
  ...this.flush(),
159
- persistence.createEnvelope("agent", { t: "text", text: trimmed, thinking: true }, turnOptions(this.currentTurnId, this.nextTime()))
159
+ index.createEnvelope("agent", { t: "text", text: trimmed, thinking: true }, turnOptions(this.currentTurnId, this.nextTime()))
160
160
  ];
161
161
  }
162
162
  if (msg.type === "status") {
@@ -174,7 +174,7 @@ class AcpSessionManager {
174
174
  const call = this.ensureSessionCallId(msg.callId);
175
175
  return [
176
176
  ...flushed,
177
- persistence.createEnvelope("agent", {
177
+ index.createEnvelope("agent", {
178
178
  t: "tool-call-start",
179
179
  call,
180
180
  name: msg.toolName,
@@ -190,7 +190,7 @@ class AcpSessionManager {
190
190
  const result = toolCallEndResult(msg.result);
191
191
  return [
192
192
  ...flushed,
193
- persistence.createEnvelope("agent", { t: "tool-call-end", call, ...result ? { result } : {} }, turnOptions(this.currentTurnId, this.nextTime()))
193
+ index.createEnvelope("agent", { t: "tool-call-end", call, ...result ? { result } : {} }, turnOptions(this.currentTurnId, this.nextTime()))
194
194
  ];
195
195
  }
196
196
  return [];
@@ -1,5 +1,5 @@
1
1
  import { createId } from '@paralleldrive/cuid2';
2
- import { s as streamKeyOf, e as createEnvelope } from './limits-D2uN090G.mjs';
2
+ import { s as streamKeyOf, e as createEnvelope } from './index-qdS1friN.mjs';
3
3
 
4
4
  function turnOptions(turnId, time) {
5
5
  return turnId ? { turn: turnId, time } : { time };