very-happy-cli 0.2.176 → 0.2.177

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 (176) hide show
  1. package/dist/{AcpBackend-9_ZI1Bv3.cjs → AcpBackend-B-ny68XM.cjs} +188 -37
  2. package/dist/{AcpBackend-COp6D8gl.mjs → AcpBackend-B0K0WrtW.mjs} +187 -38
  3. package/dist/{BasePermissionHandler-DPvLN7aR.cjs → BasePermissionHandler-DR6nxuEn.cjs} +1 -1
  4. package/dist/{BasePermissionHandler-ChMkmsGD.mjs → BasePermissionHandler-hdY7kTqX.mjs} +1 -1
  5. package/dist/{agentHome-BKi7tsE9.cjs → agentHome-BdTXEUPe.cjs} +4 -4
  6. package/dist/{agentHome-D61ZMLXM.mjs → agentHome-GRN2VfHv.mjs} +4 -4
  7. package/dist/{api-Buc_ejoA.cjs → api-BWX10o97.cjs} +15 -8
  8. package/dist/{api-CbwDDXJt.mjs → api-CKBViqI3.mjs} +16 -9
  9. package/dist/{apiMachine--PXoXwKq.cjs → apiMachine-BYYFGgFs.cjs} +14 -13
  10. package/dist/{apiMachine-CS7t3Rg-.mjs → apiMachine-DttO4UFj.mjs} +15 -14
  11. package/dist/{attachmentContent-BQYc8KpE.mjs → attachmentContent-cPVF463_.mjs} +1 -1
  12. package/dist/{attachmentContent-CFzzTeV9.cjs → attachmentContent-kJKXpkMX.cjs} +1 -1
  13. package/dist/{auth-B3xMoveE.mjs → auth-BmESeKuM.mjs} +5 -5
  14. package/dist/{auth-CBkmRIGw.mjs → auth-CKdXb9zp.mjs} +8 -8
  15. package/dist/{auth-CpO3ZUMz.cjs → auth-CTECt2Oz.cjs} +5 -5
  16. package/dist/{auth-LPvsVriN.cjs → auth-DNxVmVbn.cjs} +8 -8
  17. package/dist/{auto-DHGch_zK.mjs → auto-Ch3203qd.mjs} +16 -15
  18. package/dist/{auto-Dm3EIKT7.cjs → auto-D1ypjjfx.cjs} +14 -13
  19. package/dist/{backgroundTaskActivity-8PdPxrvy.mjs → backgroundTaskActivity-BVwJBl02.mjs} +1 -1
  20. package/dist/{bootstrap-BboDz_w2.cjs → bootstrap-6OI698q9.cjs} +2 -2
  21. package/dist/{bootstrap-CxuBAkJU.mjs → bootstrap-C0s2bPFQ.mjs} +2 -2
  22. package/dist/{browser-BvARP-YR.mjs → browser-BlLWZUMx.mjs} +1 -1
  23. package/dist/{browser-GQZJxD2n.cjs → browser-DG6Uof5O.cjs} +1 -1
  24. package/dist/{claudeLocal-B9EhFmD7.mjs → claudeLocal-CcWcKnoo.mjs} +5 -5
  25. package/dist/{claudeLocal-D-mujSX1.cjs → claudeLocal-CemsIArT.cjs} +4 -4
  26. package/dist/{claudeLocalLauncher-Bdl-9aU_.mjs → claudeLocalLauncher-7p6y88nj.mjs} +15 -18
  27. package/dist/{claudeLocalLauncher-Tbrx6TXF.cjs → claudeLocalLauncher-A4VuevIi.cjs} +14 -17
  28. package/dist/{claudeSessionFork-D_DKvDKE.mjs → claudeSessionFork-BtROOjqf.mjs} +1 -1
  29. package/dist/{claudeSessionFork-sOz97qqW.cjs → claudeSessionFork-CbDfm8Fz.cjs} +1 -1
  30. package/dist/{client-Cg6ABRe-.mjs → client-BPMWutfs.mjs} +3 -3
  31. package/dist/{client-D9pEOhn4.cjs → client-COmgDDy0.cjs} +2 -2
  32. package/dist/{client-Ryu9fllj.mjs → client-DG5ndWLw.mjs} +2 -2
  33. package/dist/{client-D7sSU04O.cjs → client-DyvBTYee.cjs} +3 -3
  34. package/dist/codex/happyMcpStdioBridge.cjs +14 -14
  35. package/dist/codex/happyMcpStdioBridge.mjs +15 -15
  36. package/dist/{codexAppServerClient-C70pJ-BB.mjs → codexAppServerClient-D-Z8qSfI.mjs} +10 -58
  37. package/dist/{codexAppServerClient-DsIUkVnX.cjs → codexAppServerClient-R24WZZfg.cjs} +6 -54
  38. package/dist/{codexCommand-Aycux-B7.cjs → codexCommand-6hW19gsq.cjs} +41 -63
  39. package/dist/{codexCommand-DWbA3pJN.mjs → codexCommand-CVTkZJ1o.mjs} +41 -63
  40. package/dist/{BaseReasoningProcessor-Dnf16mtJ.cjs → codexTermination-BBU7e92y.cjs} +25 -1
  41. package/dist/{BaseReasoningProcessor-pjvLSTQF.mjs → codexTermination-CCIfwzcx.mjs} +25 -2
  42. package/dist/{config-Bztmzu8z.mjs → config-CvsNChKX.mjs} +3 -3
  43. package/dist/{config-BcL0bxO5.cjs → config-DhdrvOLV.cjs} +3 -3
  44. package/dist/{configuration-BAwOtWFY.mjs → configuration-D55F0t16.mjs} +1 -1
  45. package/dist/{configuration-CpBrilxV.cjs → configuration-DZPy0T9Z.cjs} +1 -1
  46. package/dist/{connect-BeWQ4MMA.mjs → connect-CwCXMRmD.mjs} +12 -12
  47. package/dist/{connect-BBNCMTi8.cjs → connect-Wz-XZYXW.cjs} +11 -11
  48. package/dist/{context-Hk0j2Y9-.cjs → context-BKbrZ55r.cjs} +1 -1
  49. package/dist/{context-j114QJre.mjs → context-CCRpVXFo.mjs} +1 -1
  50. package/dist/{controlClient-00KYAjsI.mjs → controlClient-C4xB5J6O.mjs} +4 -4
  51. package/dist/{controlClient-bs_YqwDl.cjs → controlClient-SX8gSza2.cjs} +3 -3
  52. package/dist/{createSessionMetadata-D4Sj6H95.cjs → createSessionMetadata-BCFmYlBo.cjs} +2 -2
  53. package/dist/{createSessionMetadata-xlycGog5.mjs → createSessionMetadata-Bi-m0Y_O.mjs} +2 -2
  54. package/dist/{defaultPermissionMode-CMsiaRzr.cjs → defaultPermissionMode-DMBEnXll.cjs} +2 -2
  55. package/dist/{defaultPermissionMode-B97ox9p1.mjs → defaultPermissionMode-wBcbBezm.mjs} +2 -2
  56. package/dist/{deterministicJson-ucyv8j6b.mjs → deterministicJson-BkQETt8_.mjs} +8 -8
  57. package/dist/{deterministicJson-aHxtYLha.cjs → deterministicJson-ChGfQEF6.cjs} +8 -8
  58. package/dist/{doctor-D554c6Bg.mjs → doctor-B9c2C9dF.mjs} +8 -8
  59. package/dist/{doctor-BXkNXcok.cjs → doctor-BsN3JZJn.cjs} +7 -7
  60. package/dist/{downloadTarget-2_zMvt2N.mjs → downloadTarget-ByXzbDK4.mjs} +6 -6
  61. package/dist/{downloadTarget-CmdlljZW.cjs → downloadTarget-Dj3WoVJa.cjs} +6 -6
  62. package/dist/{ensureDaemonRunning-DJlziY-m.mjs → ensureDaemonRunning--HYzs5Ce.mjs} +5 -5
  63. package/dist/{ensureDaemonRunning-CY7iC--U.cjs → ensureDaemonRunning-7Wb8M7Lv.cjs} +5 -5
  64. package/dist/{handleResumeCommand-CNTnXBXA.mjs → handleResumeCommand-DHddBkNJ.mjs} +5 -5
  65. package/dist/{handleResumeCommand-lSVnvTNC.cjs → handleResumeCommand-OmuUGYjQ.cjs} +5 -5
  66. package/dist/{index-jeD70GGH.cjs → index-BRJzH4sc.cjs} +137 -83
  67. package/dist/{index-DY3I8j0W.mjs → index-BzJNDsJq.mjs} +139 -85
  68. package/dist/{index-B6UGRQ7h.mjs → index-CEjJnq05.mjs} +3 -0
  69. package/dist/{index-59hR7nVz.mjs → index-CEm0MYiS.mjs} +3 -3
  70. package/dist/{index-DhARRePz.cjs → index-CrR4JISa.cjs} +4 -4
  71. package/dist/{index-MwTVbeGW.cjs → index-D9NoYc5I.cjs} +3 -3
  72. package/dist/{index-D3kI0hDR.cjs → index-DFPT4HOO.cjs} +3 -0
  73. package/dist/{index-CxSLrTPA.mjs → index-Dhl6_bw7.mjs} +4 -4
  74. package/dist/index.cjs +2 -2
  75. package/dist/index.mjs +2 -2
  76. package/dist/{install-DXUEtGfU.cjs → install-1qn-D9FS.cjs} +3 -3
  77. package/dist/{install-DytIJ_Ia.mjs → install-BDIUtPXi.mjs} +3 -3
  78. package/dist/lib.cjs +10 -10
  79. package/dist/lib.d.cts +7 -1
  80. package/dist/lib.d.mts +7 -1
  81. package/dist/lib.mjs +11 -11
  82. package/dist/{lidState-CduPmrM0.mjs → lidState-BqVsw7H1.mjs} +1 -1
  83. package/dist/{lidState-UasMvPzw.cjs → lidState-DxbK0qfu.cjs} +1 -1
  84. package/dist/{localHappyAgentAuth-DL8JjHTV.mjs → localHappyAgentAuth-Ce8kO2yc.mjs} +1 -1
  85. package/dist/{localHappyAgentAuth-CA02WOny.cjs → localHappyAgentAuth-D5tANdRD.cjs} +1 -1
  86. package/dist/{logger-CihCDWDw.mjs → logger-13cBr_ew.mjs} +2 -2
  87. package/dist/{logger-zoO54Zsy.cjs → logger-LvwVeATU.cjs} +2 -2
  88. package/dist/{machineMetadata-BAKVtr-k.cjs → machineMetadata-29h7vgf4.cjs} +3 -3
  89. package/dist/{machineMetadata-DEZcQ_CQ.mjs → machineMetadata-dMida2qq.mjs} +3 -3
  90. package/dist/{main-BIvxyX71.cjs → main-DpM5jaFH.cjs} +44 -44
  91. package/dist/{main-DyJfNlL_.mjs → main-x4nAhdH5.mjs} +44 -44
  92. package/dist/{manager-2Il8XJVq.mjs → manager-BEsI4qt3.mjs} +1 -1
  93. package/dist/{mcp-yoIdGe6C.mjs → mcp-DMiFGYMT.mjs} +15 -15
  94. package/dist/{mcp-Dd11vHij.cjs → mcp-DQv3caXs.cjs} +14 -14
  95. package/dist/{mirrorProtocol-D-hF_SE5.cjs → mirrorProtocol-BfrERW7Z.cjs} +2 -2
  96. package/dist/{mirrorProtocol-BukXB5s3.mjs → mirrorProtocol-Bz8tEabR.mjs} +2 -2
  97. package/dist/{package-A7zOGx8B.cjs → package-Ch9WGDV_.cjs} +7 -7
  98. package/dist/{package-ayqGDKSp.mjs → package-CjlsAaRe.mjs} +7 -7
  99. package/dist/{peerTools-DDMSViPu.mjs → peerTools-CxmrKnfV.mjs} +4 -4
  100. package/dist/{peerTools-dPc9hRC5.cjs → peerTools-DtGKWli5.cjs} +4 -4
  101. package/dist/{persistence-Dy3lmall.mjs → persistence-C_tYtOqK.mjs} +2 -2
  102. package/dist/{persistence-Cih2AWml.cjs → persistence-DXbKOHxl.cjs} +2 -2
  103. package/dist/{piRunnerArgs-BuJgnUI5.cjs → piRunnerArgs-BVRZe2AR.cjs} +1 -1
  104. package/dist/{piRunnerArgs-D3z3-1VJ.mjs → piRunnerArgs-BpHc-JZl.mjs} +1 -1
  105. package/dist/{piRuntime-B-SPcWIr.cjs → piRuntime-D7eio8Ix.cjs} +1 -1
  106. package/dist/{piRuntime-kVGue-_5.mjs → piRuntime-DOdGF395.mjs} +1 -1
  107. package/dist/{piTerminal-aEtVdCJ2.mjs → piTerminal-dpxz4Q8D.mjs} +17 -17
  108. package/dist/{piTerminal-DSxK5aAm.cjs → piTerminal-y_PRo2NY.cjs} +16 -16
  109. package/dist/processTree-CMHWlVse.cjs +66 -0
  110. package/dist/processTree-CP5IvQ2Z.mjs +61 -0
  111. package/dist/{rateLimitWindows-82izLQy8.cjs → rateLimitWindows-DFnMU2Vt.cjs} +1 -1
  112. package/dist/{rateLimitWindows-E5DRjfE6.mjs → rateLimitWindows-DYHDGuzQ.mjs} +1 -1
  113. package/dist/{registerCommonHandlers-CqO075-X.cjs → registerCommonHandlers-60VuTkdg.cjs} +2 -2
  114. package/dist/{registerCommonHandlers-Bm7CMqMv.mjs → registerCommonHandlers-D8OMpBbQ.mjs} +2 -2
  115. package/dist/{registerKillSessionHandler-D02OY4vi.mjs → registerKillSessionHandler-Drhf7-Vz.mjs} +4 -4
  116. package/dist/{registerKillSessionHandler-WQra3T9B.cjs → registerKillSessionHandler-pqChBKwO.cjs} +4 -4
  117. package/dist/{remoteSessionClient-f3DYorl8.cjs → remoteSessionClient-B7NvjHD3.cjs} +5 -5
  118. package/dist/{remoteSessionClient-Buh6NejV.mjs → remoteSessionClient-D01Hso2-.mjs} +5 -5
  119. package/dist/{reportProgressTool-C5aSoKYX.mjs → reportProgressTool-B203EZCR.mjs} +1 -1
  120. package/dist/{reportProgressTool-C2gn_HWD.cjs → reportProgressTool-Du_zAK4h.cjs} +1 -1
  121. package/dist/{run-Drxogp0j.mjs → run-DX4Zs3Ug.mjs} +31 -31
  122. package/dist/{run-CDEmq6Zs.cjs → run-DZ5jU53c.cjs} +31 -31
  123. package/dist/{runClaude-BF6U2Js7.mjs → runClaude-CgPHXP0L.mjs} +25 -21
  124. package/dist/{runClaude-yEcZTCt_.cjs → runClaude-ClRhHpwR.cjs} +24 -20
  125. package/dist/{runClaudeDeps-CnNNFjlI.cjs → runClaudeDeps-D2v_WDSL.cjs} +384 -86
  126. package/dist/{runClaudeDeps-Bl4ndq7N.mjs → runClaudeDeps-Dz2iydq4.mjs} +390 -92
  127. package/dist/{runGemini-DDVDRNg4.cjs → runGemini-BtZqGFkp.cjs} +206 -191
  128. package/dist/{runGemini-C3wt7iv7.mjs → runGemini-DBXxpoY8.mjs} +206 -191
  129. package/dist/{runOpenClaw-CY6YHAvj.mjs → runOpenClaw-BOHpzCEU.mjs} +16 -16
  130. package/dist/{runOpenClaw-BzlVA_9Q.cjs → runOpenClaw-D8q8G57u.cjs} +15 -15
  131. package/dist/{sandbox-CX_wLwpq.mjs → sandbox-C452Vrsc.mjs} +4 -4
  132. package/dist/{sandbox-0UNHR3hP.cjs → sandbox-Cu9mMzjx.cjs} +4 -4
  133. package/dist/selfCheck-BAvqBwBR.mjs +84 -0
  134. package/dist/{selfCheck-FNwMFY8p.cjs → selfCheck-gKa3uVr1.cjs} +35 -35
  135. package/dist/{send-BQkl25g0.cjs → send-2Vb5eppI.cjs} +8 -8
  136. package/dist/{send-CpEGYict.mjs → send-B8HARi7x.mjs} +9 -9
  137. package/dist/{server-DnINX_Lm.mjs → server-BBWCIZyS.mjs} +4 -4
  138. package/dist/{server-BodFZ5sW.cjs → server-Db9Wuam3.cjs} +6 -6
  139. package/dist/{sessionLock-DOj6mMXn.cjs → sessionLock-6qL_N6Rn.cjs} +3 -3
  140. package/dist/{sessionLock-Ddn-fhZ0.mjs → sessionLock-ZfvFVdUi.mjs} +3 -3
  141. package/dist/{sessionModeFile-DDbonFR_.mjs → sessionModeFile-CWVq8AT9.mjs} +1 -1
  142. package/dist/{sessionModeFile-DVukoSp7.cjs → sessionModeFile-CsLtn_PL.cjs} +1 -1
  143. package/dist/{sessionOps-B1vQ25GS.mjs → sessionOps-CdgbEJgf.mjs} +5 -5
  144. package/dist/{sessionOps-Nryt1DZt.cjs → sessionOps-Dmt7WUUs.cjs} +4 -4
  145. package/dist/{sessionScanner-DCr3ofhR.mjs → sessionScanner-CNVaSNOn.mjs} +34 -4
  146. package/dist/{sessionScanner-D1h-cdte.cjs → sessionScanner-CQL_WSaC.cjs} +34 -3
  147. package/dist/{sessions-D2HsTbLf.cjs → sessions-BJblG_Hx.cjs} +9 -9
  148. package/dist/{sessions-DpAN6Ft9.mjs → sessions-DTomHfFg.mjs} +10 -10
  149. package/dist/{setupOfflineReconnection-DQHEp330.mjs → setupOfflineReconnection-C5trsV-j.mjs} +2 -2
  150. package/dist/{setupOfflineReconnection-B9Tw1Ouj.cjs → setupOfflineReconnection-DVA0VpQL.cjs} +2 -2
  151. package/dist/{spawn-CNjm1yOi.mjs → spawn-CQJFgoOq.mjs} +14 -13
  152. package/dist/{spawn-CvDZ38hi.cjs → spawn-DRyNAqD8.cjs} +12 -11
  153. package/dist/{spawnHappyCLI-C8Vl56wB.mjs → spawnHappyCLI-B_0RWxD4.mjs} +1 -1
  154. package/dist/{spawnHappyCLI-ahi4j6Mh.cjs → spawnHappyCLI-ChniczJ5.cjs} +1 -1
  155. package/dist/{specialCommands-BpqnGrOP.cjs → specialCommands-DbntVs0d.cjs} +3 -3
  156. package/dist/{specialCommands-DfVMGXTl.mjs → specialCommands-DkdFJi4N.mjs} +3 -3
  157. package/dist/{startFileWatcher-Ddn3L0u3.cjs → startFileWatcher-C292fhra.cjs} +1 -1
  158. package/dist/{startFileWatcher-DXJXY4AE.mjs → startFileWatcher-UQyTSRAP.mjs} +1 -1
  159. package/dist/{sync-BKvgkhPs.mjs → sync-C3p7-KLn.mjs} +1 -1
  160. package/dist/{sync-BgZuthoS.cjs → sync-C7sxoUYG.cjs} +1 -1
  161. package/dist/{systemPrompt-DuPem6c9.mjs → systemPrompt-CdHOlyVW.mjs} +1 -1
  162. package/dist/{systemPrompt-C6O1cHUg.cjs → systemPrompt-DtibzbRU.cjs} +1 -1
  163. package/dist/{teams-DifEhhmk.cjs → teams-D7O7TpVU.cjs} +6 -6
  164. package/dist/{teams-CffMBBfU.mjs → teams-ujXr3AFn.mjs} +6 -6
  165. package/dist/{time-s8CaneqW.cjs → time-Dg5tVB8S.cjs} +1 -1
  166. package/dist/{time-DxCTiteK.mjs → time-yEL6wHUF.mjs} +1 -1
  167. package/dist/{titleGenerator-CXr7t6cf.cjs → titleGenerator-BMEaDTwU.cjs} +2 -2
  168. package/dist/{titleGenerator-B5T7QSzu.mjs → titleGenerator-Dr-BtjzO.mjs} +1 -1
  169. package/dist/{todo-B41GKMcI.cjs → todo-CUcFamGs.cjs} +5 -5
  170. package/dist/{todo-DNO7s8td.mjs → todo-CvJe4M2C.mjs} +5 -5
  171. package/dist/{tools-697R1uqn.mjs → tools-BrM3bZW5.mjs} +1 -1
  172. package/dist/{tools-lotMyxIE.cjs → tools-DDKTB5aQ.cjs} +1 -1
  173. package/dist/{uninstall-CRu96len.cjs → uninstall-7oLuhYIu.cjs} +3 -3
  174. package/dist/{uninstall-CYO7EDjO.mjs → uninstall-CEcMMQGz.mjs} +3 -3
  175. package/package.json +7 -7
  176. package/dist/selfCheck-ClVv8NK3.mjs +0 -84
@@ -1,35 +1,36 @@
1
1
  'use strict';
2
2
 
3
- var AcpBackend = require('./AcpBackend-9_ZI1Bv3.cjs');
4
- var logger = require('./logger-zoO54Zsy.cjs');
3
+ var AcpBackend = require('./AcpBackend-B-ny68XM.cjs');
4
+ var logger = require('./logger-LvwVeATU.cjs');
5
5
  var AcpSessionManager = require('./AcpSessionManager-CjdJLofq.cjs');
6
6
  var index = require('./index-De8L5lFK.cjs');
7
7
  var agentAttachments = require('./agentAttachments-Dbw8iMCZ.cjs');
8
- var configuration = require('./configuration-CpBrilxV.cjs');
9
- var attachmentContent = require('./attachmentContent-CFzzTeV9.cjs');
10
- var piRuntime = require('./piRuntime-B-SPcWIr.cjs');
8
+ var configuration = require('./configuration-DZPy0T9Z.cjs');
9
+ var attachmentContent = require('./attachmentContent-kJKXpkMX.cjs');
10
+ var piRuntime = require('./piRuntime-D7eio8Ix.cjs');
11
11
  var node_crypto = require('node:crypto');
12
12
  var path = require('node:path');
13
- var api = require('./api-Buc_ejoA.cjs');
14
- var registerKillSessionHandler = require('./registerKillSessionHandler-WQra3T9B.cjs');
15
- var deterministicJson = require('./deterministicJson-aHxtYLha.cjs');
16
- var persistence = require('./persistence-Cih2AWml.cjs');
17
- var machineMetadata = require('./machineMetadata-BAKVtr-k.cjs');
18
- var createSessionMetadata = require('./createSessionMetadata-D4Sj6H95.cjs');
19
- var setupOfflineReconnection = require('./setupOfflineReconnection-B9Tw1Ouj.cjs');
20
- var controlClient = require('./controlClient-bs_YqwDl.cjs');
13
+ var api = require('./api-BWX10o97.cjs');
14
+ var registerKillSessionHandler = require('./registerKillSessionHandler-pqChBKwO.cjs');
15
+ var deterministicJson = require('./deterministicJson-ChGfQEF6.cjs');
16
+ var persistence = require('./persistence-DXbKOHxl.cjs');
17
+ var machineMetadata = require('./machineMetadata-29h7vgf4.cjs');
18
+ var createSessionMetadata = require('./createSessionMetadata-BCFmYlBo.cjs');
19
+ var setupOfflineReconnection = require('./setupOfflineReconnection-DVA0VpQL.cjs');
20
+ var controlClient = require('./controlClient-SX8gSza2.cjs');
21
21
  var authRelay = require('./authRelay-BdYkC1Po.cjs');
22
22
  var streamRelay = require('./streamRelay-Cx01enfe.cjs');
23
23
  var projectPath = require('./projectPath-ChLhdOyt.cjs');
24
- var BasePermissionHandler = require('./BasePermissionHandler-DPvLN7aR.cjs');
25
- var titleGenerator = require('./titleGenerator-CXr7t6cf.cjs');
26
- var sessionModeFile = require('./sessionModeFile-DVukoSp7.cjs');
24
+ var BasePermissionHandler = require('./BasePermissionHandler-DR6nxuEn.cjs');
25
+ var titleGenerator = require('./titleGenerator-BMEaDTwU.cjs');
26
+ var sessionModeFile = require('./sessionModeFile-CsLtn_PL.cjs');
27
27
  var editPaths = require('./editPaths-Bqp4OFPw.cjs');
28
28
  require('node:child_process');
29
29
  require('@agentclientprotocol/sdk');
30
- require('./time-s8CaneqW.cjs');
30
+ require('./time-Dg5tVB8S.cjs');
31
31
  require('./contentLogMetadata-ZSFk_NjQ.cjs');
32
- require('./package-A7zOGx8B.cjs');
32
+ require('./processTree-CMHWlVse.cjs');
33
+ require('./package-Ch9WGDV_.cjs');
33
34
  require('chalk');
34
35
  require('node:util');
35
36
  require('node:fs');
@@ -40,46 +41,46 @@ require('node:fs/promises');
40
41
  require('./attachmentLimits-DtFqqiwR.cjs');
41
42
  require('./resources-JDPugcDq.cjs');
42
43
  require('axios');
43
- require('./lidState-UasMvPzw.cjs');
44
+ require('./lidState-DxbK0qfu.cjs');
44
45
  require('os');
45
46
  require('child_process');
46
47
  require('node:events');
47
48
  require('socket.io-client');
48
49
  require('./limits-C-a7gr04.cjs');
49
- require('./registerCommonHandlers-CqO075-X.cjs');
50
+ require('./registerCommonHandlers-60VuTkdg.cjs');
50
51
  require('util');
51
52
  require('fs/promises');
52
53
  require('crypto');
53
54
  require('path');
54
55
  require('cross-spawn');
55
- require('./sync-BgZuthoS.cjs');
56
+ require('./sync-C7sxoUYG.cjs');
56
57
  require('./backgroundTaskActivity-CBvUdj39.cjs');
57
58
  require('tweetnacl');
58
59
  require('./types-CRS-srZK.cjs');
59
- require('./client-D7sSU04O.cjs');
60
- require('./context-Hk0j2Y9-.cjs');
61
- require('./sessionOps-Nryt1DZt.cjs');
62
- require('./tools-lotMyxIE.cjs');
63
- require('./reportProgressTool-C2gn_HWD.cjs');
64
- require('./client-D9pEOhn4.cjs');
60
+ require('./client-DyvBTYee.cjs');
61
+ require('./context-BKbrZ55r.cjs');
62
+ require('./sessionOps-Dmt7WUUs.cjs');
63
+ require('./tools-DDKTB5aQ.cjs');
64
+ require('./reportProgressTool-Du_zAK4h.cjs');
65
+ require('./client-COmgDDy0.cjs');
65
66
  require('./precheckCompat-CWOi5c9L.cjs');
66
67
  require('./agentGuidance-BtBx2xxE.cjs');
67
68
  require('./trimIdent-4gvk9Wk6.cjs');
68
- require('./peerTools-dPc9hRC5.cjs');
69
+ require('./peerTools-DtGKWli5.cjs');
69
70
  require('./ids-B6ZC0HGt.cjs');
70
- require('./remoteSessionClient-f3DYorl8.cjs');
71
+ require('./remoteSessionClient-B7NvjHD3.cjs');
71
72
  require('@modelcontextprotocol/sdk/server/mcp.js');
72
73
  require('node:http');
73
74
  require('@modelcontextprotocol/sdk/server/streamableHttp.js');
74
- require('./downloadTarget-CmdlljZW.cjs');
75
+ require('./downloadTarget-Dj3WoVJa.cjs');
75
76
  require('./terminals-B_bfC9c2.cjs');
76
77
  require('./terminalTitleSuggest-DhvRFX3H.cjs');
77
78
  require('./tmuxSocket-D-Xt6Vn-.cjs');
78
- require('./bootstrap-BboDz_w2.cjs');
79
+ require('./bootstrap-6OI698q9.cjs');
79
80
  require('./previewPath-B0rBdhy1.cjs');
80
81
  require('./detectCLI-DR9ZaN6B.cjs');
81
82
  require('fs');
82
- require('./localHappyAgentAuth-CA02WOny.cjs');
83
+ require('./localHappyAgentAuth-D5tANdRD.cjs');
83
84
  require('url');
84
85
  require('node:module');
85
86
  require('./oneShotPrompts-CL0dip9C.cjs');
@@ -98,6 +99,35 @@ function createAcpBackend(options) {
98
99
  return new AcpBackend.AcpBackend(backendOptions);
99
100
  }
100
101
 
102
+ const MAX_DETAIL_CHARS = 400;
103
+ function detailOf(error) {
104
+ if (error instanceof Error) return error.message;
105
+ if (error && typeof error === "object") {
106
+ const record = error;
107
+ const data = record.data && typeof record.data === "object" ? record.data : null;
108
+ const details = typeof data?.details === "string" ? data.details : null;
109
+ const message = typeof record.message === "string" ? record.message : null;
110
+ const text = details && message && details !== message ? `${message}: ${details}` : details ?? message;
111
+ if (text) return text;
112
+ try {
113
+ return JSON.stringify(error);
114
+ } catch {
115
+ return String(error);
116
+ }
117
+ }
118
+ return String(error);
119
+ }
120
+ function oneLine(text) {
121
+ const folded = text.replace(/\s+/g, " ").trim();
122
+ return folded.length > MAX_DETAIL_CHARS ? `${folded.slice(0, MAX_DETAIL_CHARS - 1)}\u2026` : folded;
123
+ }
124
+ function describeAcpTurnFailure(agentName, error) {
125
+ if (AcpBackend.isAgentExitError(error)) {
126
+ return { message: `Process exited unexpectedly: ${oneLine(error.message)}`, exited: true };
127
+ }
128
+ return { message: `${agentName} error: ${oneLine(detailOf(error))}`, exited: false };
129
+ }
130
+
101
131
  const SUPPORTED_CATEGORIES = /* @__PURE__ */ new Set(["mode", "model", "thought_level"]);
102
132
  function isRecord$1(value) {
103
133
  return !!value && typeof value === "object";
@@ -265,7 +295,6 @@ function mergeAcpSessionConfigIntoMetadata(metadata, snapshot) {
265
295
  return next;
266
296
  }
267
297
 
268
- const TURN_TIMEOUT_MS = 5 * 60 * 1e3;
269
298
  const ACP_EVENT_PREVIEW_CHARS = 240;
270
299
  const ACP_RAW_PREVIEW_CHARS = 2e3;
271
300
  const ACP_COLOR_RESET = "\x1B[0m";
@@ -733,7 +762,7 @@ async function runAcp(opts) {
733
762
  }
734
763
  };
735
764
  const teamsPiEnv = opts.agentName === "pi" ? await piRuntime.preparePiTeamsRuntime() : {};
736
- const backend = new AcpBackend.AcpBackend({
765
+ const createBackend = () => new AcpBackend.AcpBackend({
737
766
  agentName: opts.agentName,
738
767
  cwd: process.cwd(),
739
768
  command: opts.command,
@@ -752,6 +781,7 @@ async function runAcp(opts) {
752
781
  transportHandler: new AcpBackend.DefaultTransport(opts.agentName),
753
782
  verbose
754
783
  });
784
+ let backend = createBackend();
755
785
  let thinking = false;
756
786
  const setThinking = (next) => {
757
787
  if (thinking === next) {
@@ -763,34 +793,15 @@ async function runAcp(opts) {
763
793
  let acpSessionId = null;
764
794
  let shouldExit = false;
765
795
  let abortController = new AbortController();
766
- let pendingTurn = null;
767
796
  let turnCancelled = false;
768
- const clearPendingTurn = (error) => {
769
- if (!pendingTurn) {
770
- return;
771
- }
772
- clearTimeout(pendingTurn.timeout);
773
- const current = pendingTurn;
774
- pendingTurn = null;
775
- if (error) {
776
- current.reject(error);
777
- return;
778
- }
779
- current.resolve();
780
- };
781
- const waitForTurnEnd = () => new Promise((resolve, reject) => {
782
- const timeout = setTimeout(() => {
783
- pendingTurn = null;
784
- reject(new Error(`Timed out waiting for ${opts.agentName} to finish the turn`));
785
- }, TURN_TIMEOUT_MS);
786
- pendingTurn = { resolve, reject, timeout };
787
- });
797
+ let backendStarted = false;
798
+ let backendGone = null;
799
+ let todoDiscoverySent = false;
788
800
  const stopRunnerFromBackendStatus = (status, detail) => {
789
801
  const reason = detail ? `${opts.agentName} backend ${status}: ${detail}` : `${opts.agentName} backend ${status}`;
790
802
  logger.logger.debug(`[${opts.agentName}] ${reason}; stopping ACP runner`);
791
803
  shouldExit = true;
792
804
  messageQueue.close();
793
- clearPendingTurn(new Error(reason));
794
805
  };
795
806
  const sendEnvelopes = (envelopes) => {
796
807
  for (const envelope of envelopes) {
@@ -1056,14 +1067,21 @@ async function runAcp(opts) {
1056
1067
  const suffix = msg.detail ? `: ${msg.detail}` : "";
1057
1068
  const statusLine = `Status: ${msg.status}${suffix}`;
1058
1069
  logAcp("muted", statusLine);
1059
- if (msg.status === "idle") {
1060
- clearPendingTurn();
1061
- }
1062
1070
  if (msg.status === "error" || msg.status === "stopped") {
1063
1071
  if (msg.status === "error") opts.onBackendError?.(msg.detail);
1064
- stopRunnerFromBackendStatus(msg.status, msg.detail);
1072
+ if (!backendStarted) {
1073
+ stopRunnerFromBackendStatus(msg.status, msg.detail);
1074
+ } else if (msg.status === "stopped") {
1075
+ backendGone = new Error(msg.detail ?? `${opts.agentName} process exited`);
1076
+ }
1065
1077
  }
1066
1078
  }
1079
+ if (msg.type === "event" && msg.name === "notice") {
1080
+ const message = AcpBackend.acpNoticeMessage(opts.agentName, msg.payload);
1081
+ logAcp("muted", message);
1082
+ session.sendSessionEvent({ type: "message", message });
1083
+ return;
1084
+ }
1067
1085
  const frontendMessage = formatAcpMessageForFrontend(opts.agentName, msg, verbose);
1068
1086
  if (frontendMessage) {
1069
1087
  logAcp(frontendMessage.kind, frontendMessage.text);
@@ -1115,8 +1133,9 @@ async function runAcp(opts) {
1115
1133
  const keepAliveInterval = setInterval(() => {
1116
1134
  session.keepAlive(thinking, "remote");
1117
1135
  }, 2e3);
1136
+ let promptInFlight = false;
1118
1137
  async function handleAbort() {
1119
- turnCancelled = thinking;
1138
+ turnCancelled = thinking && promptInFlight;
1120
1139
  try {
1121
1140
  if (acpSessionId) {
1122
1141
  await backend.cancel(acpSessionId);
@@ -1149,15 +1168,12 @@ async function runAcp(opts) {
1149
1168
  const disposeTermination = registerKillSessionHandler.registerKillSessionHandler(session.rpcHandlerManager, async () => {
1150
1169
  shouldExit = true;
1151
1170
  messageQueue.close();
1152
- clearPendingTurn(new Error("Session terminated"));
1153
1171
  await handleAbort();
1154
1172
  }, session, { processSignals: true });
1155
- try {
1156
- const started = await backend.startSession();
1157
- acpSessionId = started.sessionId;
1158
- if (opts.model) {
1159
- await switchModelIfRequested(opts.model);
1160
- const applied = isCurrentRequestedModel(opts.model);
1173
+ const afterSessionStarted = async (requestedModel) => {
1174
+ if (requestedModel) {
1175
+ await switchModelIfRequested(requestedModel);
1176
+ const applied = isCurrentRequestedModel(requestedModel);
1161
1177
  if (!applied) session.sendSessionEvent({ type: "message", message: "The saved model is unavailable for this agent; using its current model." });
1162
1178
  }
1163
1179
  session.updateMetadata((current) => ({
@@ -1166,8 +1182,33 @@ async function runAcp(opts) {
1166
1182
  }));
1167
1183
  if (permissionModeIsFileBacked()) {
1168
1184
  fileBackedModeActive = true;
1169
- publishFileBackedPermissionMode(initialPermissionMode);
1185
+ publishFileBackedPermissionMode(fileBackedPermissionMode ?? initialPermissionMode);
1186
+ }
1187
+ };
1188
+ const restartBackend = async () => {
1189
+ const gone = backendGone;
1190
+ backend.offMessage?.(onBackendMessage);
1191
+ acpSessionId = null;
1192
+ try {
1193
+ await backend.dispose();
1194
+ } catch (error) {
1195
+ logger.logger.debug(`[${opts.agentName}] dispose of the dead backend failed:`, error);
1170
1196
  }
1197
+ backend = createBackend();
1198
+ backend.onMessage(onBackendMessage);
1199
+ const started = await backend.startSession();
1200
+ acpSessionId = started.sessionId;
1201
+ backendGone = null;
1202
+ todoDiscoverySent = false;
1203
+ await afterSessionStarted(currentModel ?? opts.model);
1204
+ logger.logger.debug(`[${opts.agentName}] Restarted the agent after it exited: ${gone?.message ?? "unknown"}`);
1205
+ session.sendSessionEvent({ type: "message", message: `${opts.agentName} was restarted after its process exited; it does not remember the earlier conversation (the transcript here is kept).` });
1206
+ };
1207
+ try {
1208
+ const started = await backend.startSession();
1209
+ acpSessionId = started.sessionId;
1210
+ backendStarted = true;
1211
+ await afterSessionStarted(opts.model);
1171
1212
  if (verbose) {
1172
1213
  if (!sawSlashCommands) {
1173
1214
  logAcp("muted", `Outgoing slash commands from ${opts.agentName}: not reported yet`);
@@ -1179,7 +1220,6 @@ async function runAcp(opts) {
1179
1220
  logAcp("muted", `Outgoing models from ${opts.agentName}: not reported yet`);
1180
1221
  }
1181
1222
  }
1182
- let todoDiscoverySent = false;
1183
1223
  while (!shouldExit) {
1184
1224
  const waitSignal = abortController.signal;
1185
1225
  const batch = await messageQueue.waitForMessagesAndGetAsString(waitSignal);
@@ -1192,17 +1232,17 @@ async function runAcp(opts) {
1192
1232
  }
1193
1233
  break;
1194
1234
  }
1195
- if (!acpSessionId) {
1196
- throw new Error("ACP session is not started");
1197
- }
1198
1235
  logAcp("incoming", `Incoming prompt: ${formatUnknownForConsole(batch.message, ACP_EVENT_PREVIEW_CHARS)}`);
1199
1236
  sendEnvelopes(sessionManager.startTurn());
1200
1237
  turnCancelled = false;
1201
1238
  setThinking(true);
1202
- const turnEnded = waitForTurnEnd();
1203
- void turnEnded.catch(() => {
1204
- });
1205
1239
  try {
1240
+ if (backendGone) {
1241
+ await restartBackend();
1242
+ }
1243
+ if (!acpSessionId) {
1244
+ throw new Error("ACP session is not started");
1245
+ }
1206
1246
  if (typeof batch.mode.permissionMode === "string" && batch.mode.permissionMode.length > 0) {
1207
1247
  await switchPermissionModeIfRequested(batch.mode.permissionMode);
1208
1248
  }
@@ -1218,10 +1258,23 @@ ${index.BUILTIN_TODO_DISCOVERY}`;
1218
1258
  happyHomeDir: configuration.configuration.happyHomeDir,
1219
1259
  sessionId: session.sessionId
1220
1260
  }) : [];
1221
- await backend.sendPrompt(acpSessionId, attachmentContent.appendStagedAttachmentsToPrompt(prompt, staged), attachments);
1261
+ promptInFlight = true;
1262
+ let outcome;
1263
+ try {
1264
+ outcome = await backend.sendPrompt(acpSessionId, attachmentContent.appendStagedAttachmentsToPrompt(prompt, staged), attachments);
1265
+ } finally {
1266
+ promptInFlight = false;
1267
+ }
1222
1268
  todoDiscoverySent = true;
1223
- await turnEnded;
1224
- sendEnvelopes(sessionManager.endTurn(turnCancelled ? "cancelled" : "completed"));
1269
+ const stopReason = outcome && typeof outcome === "object" ? outcome.stopReason : void 0;
1270
+ if (stopReason === "error") {
1271
+ throw new Error("the turn ended with an error reported by the agent");
1272
+ }
1273
+ const cancelled = turnCancelled || stopReason === "cancelled";
1274
+ sendEnvelopes(sessionManager.endTurn(cancelled ? "cancelled" : "completed"));
1275
+ if (!cancelled && stopReason && stopReason !== "end_turn") {
1276
+ session.sendSessionEvent({ type: "message", message: `${opts.agentName} stopped the turn: ${stopReason}` });
1277
+ }
1225
1278
  streamRelay$1.endTurn();
1226
1279
  setThinking(false);
1227
1280
  session.sendSessionEvent({ type: "ready" });
@@ -1229,14 +1282,16 @@ ${index.BUILTIN_TODO_DISCOVERY}`;
1229
1282
  logAcp("muted", `Outgoing prompt completion from ${opts.agentName}`);
1230
1283
  }
1231
1284
  } catch (error) {
1232
- session.sendSessionEvent({ type: "message", message: "The agent could not process this message or its attachments. Please check the agent and try again." });
1285
+ const failure = describeAcpTurnFailure(opts.agentName, error);
1286
+ session.sendSessionEvent({ type: "message", message: failure.message });
1233
1287
  sendEnvelopes(sessionManager.endTurn("failed"));
1234
1288
  streamRelay$1.endTurn();
1235
1289
  setThinking(false);
1236
1290
  session.sendSessionEvent({ type: "ready" });
1237
1291
  logAcp("error", `Prompt error from ${opts.agentName}: ${error instanceof Error ? error.message : String(error)}`);
1238
- clearPendingTurn(error instanceof Error ? error : new Error(String(error)));
1239
- throw error;
1292
+ if (failure.exited && error instanceof Error) {
1293
+ backendGone = error;
1294
+ }
1240
1295
  }
1241
1296
  }
1242
1297
  } finally {
@@ -1246,7 +1301,6 @@ ${index.BUILTIN_TODO_DISCOVERY}`;
1246
1301
  streamRelay$1.endTurn();
1247
1302
  streamRelay$1.dispose();
1248
1303
  reconnectionHandle?.cancel();
1249
- clearPendingTurn(new Error("ACP runner shutting down"));
1250
1304
  try {
1251
1305
  permissionHandler.reset();
1252
1306
  } catch (error) {