very-happy-cli 0.2.178 → 0.2.180

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 (217) hide show
  1. package/dist/{AcpBackend-DCQXHRzT.mjs → AcpBackend-B8Zi30Zh.mjs} +135 -16
  2. package/dist/{AcpBackend-CDkAQXYf.cjs → AcpBackend-DfRDtMcG.cjs} +135 -16
  3. package/dist/{AcpSessionManager-DckmUZza.cjs → AcpSessionManager-CASKOnOj.cjs} +38 -4
  4. package/dist/{AcpSessionManager-BXrQcqwC.mjs → AcpSessionManager-i8Rab0xT.mjs} +38 -4
  5. package/dist/{BasePermissionHandler-BVlrEhIi.mjs → BasePermissionHandler-26fKbRCm.mjs} +5 -2
  6. package/dist/{BasePermissionHandler-DyLmKKtO.cjs → BasePermissionHandler-BlM_tfej.cjs} +5 -2
  7. package/dist/acpSessionResume-B9l54P-X.mjs +67 -0
  8. package/dist/acpSessionResume-CR5pmgVo.cjs +74 -0
  9. package/dist/{agentHome-CEp9RMyK.cjs → agentHome-C7Sb7-Tz.cjs} +4 -4
  10. package/dist/{agentHome-C1xi37as.mjs → agentHome-CmGy0NWv.mjs} +4 -4
  11. package/dist/{api-JANhFdZV.cjs → api-DM7b1OKj.cjs} +38 -262
  12. package/dist/{api-Dib0dmqC.mjs → api-Hov8p7CA.mjs} +32 -256
  13. package/dist/{apiMachine-DNTJidYH.mjs → apiMachine-CwGEhQDT.mjs} +62 -15
  14. package/dist/{apiMachine-QhK-sKcr.cjs → apiMachine-DkGRj-Ai.cjs} +64 -17
  15. package/dist/{attachmentContent-bpQTBJ0y.cjs → attachmentContent-CEm13_gF.cjs} +4 -4
  16. package/dist/{attachmentContent-DkkdpSSJ.mjs → attachmentContent-CIn4iPEk.mjs} +2 -2
  17. package/dist/{auth-BRjd2esb.mjs → auth-BG1DY0gj.mjs} +5 -5
  18. package/dist/{auth-DgIV0Cvt.cjs → auth-CBXnm-Mj.cjs} +5 -5
  19. package/dist/{auth-omWDtgR8.cjs → auth-Dawj7pP5.cjs} +8 -8
  20. package/dist/{auth-DNct7VUi.mjs → auth-rggxMpEE.mjs} +8 -8
  21. package/dist/{auto-DKGFOJBo.mjs → auto-CXXLXGeL.mjs} +19 -18
  22. package/dist/{auto-CI16FZmX.cjs → auto-CbYOfoPS.cjs} +19 -18
  23. package/dist/{backgroundTaskActivity-BVwJBl02.mjs → backgroundTaskActivity-8PdPxrvy.mjs} +1 -1
  24. package/dist/{bootstrap-DCQ87Aan.cjs → bootstrap-DoA7okld.cjs} +2 -2
  25. package/dist/{bootstrap-BUagGC_-.mjs → bootstrap-Dt5I1SOl.mjs} +2 -2
  26. package/dist/{browser-Dj_DYQEh.mjs → browser-DUNetFT4.mjs} +1 -1
  27. package/dist/{browser-CSKhc0Bl.cjs → browser-DZ6qRtfH.cjs} +1 -1
  28. package/dist/{claudeCliPath-U4HHmV4r.cjs → claudeCliPath-GaP3UUz1.cjs} +1 -1
  29. package/dist/{claudeLocal-CdIVnOZp.cjs → claudeLocal--DNyMOSv.cjs} +8 -7
  30. package/dist/{claudeLocal-CCCvAeMd.mjs → claudeLocal-OHWQigCl.mjs} +6 -5
  31. package/dist/{claudeLocalLauncher-BmrpaRYJ.mjs → claudeLocalLauncher-BStvfa7M.mjs} +11 -10
  32. package/dist/{claudeLocalLauncher-21-xh5gc.cjs → claudeLocalLauncher-BhvPbcyH.cjs} +13 -12
  33. package/dist/{claudeSessionFork-kYCP1IJB.cjs → claudeSessionFork-Be16vzGc.cjs} +1 -1
  34. package/dist/{claudeSessionFork-DvxMKAmY.mjs → claudeSessionFork-GAVWhiKG.mjs} +1 -1
  35. package/dist/{client-C4zKGjiJ.cjs → client-BWjaHKtj.cjs} +2 -2
  36. package/dist/client-Ca5Pcgy_.mjs +71 -0
  37. package/dist/{client-CnlkkrZO.mjs → client-CnB7kRCT.mjs} +2 -2
  38. package/dist/{client-BTX9hsbr.mjs → client-D4uPb1uu.mjs} +3 -3
  39. package/dist/client-DJplzPjD.cjs +76 -0
  40. package/dist/{client-Dnza1hgN.cjs → client-D_loZ9IK.cjs} +3 -3
  41. package/dist/codex/happyMcpStdioBridge.cjs +24 -15
  42. package/dist/codex/happyMcpStdioBridge.mjs +25 -16
  43. package/dist/{codexAppServerClient-DvkpQgyv.mjs → codexAppServerClient-CO4G6OS4.mjs} +3 -3
  44. package/dist/{codexAppServerClient-CRlBWGn3.cjs → codexAppServerClient-PE-12AsW.cjs} +3 -3
  45. package/dist/{codexCommand-DzxIWXIT.cjs → codexCommand-BNoD1t1C.cjs} +127 -116
  46. package/dist/{codexCommand-BxjogBzU.mjs → codexCommand-B_xUH79E.mjs} +77 -66
  47. package/dist/{codexTermination-C28FzlLb.cjs → codexTermination-BmBbizFK.cjs} +7 -2
  48. package/dist/{codexTermination-ySDNMEhd.mjs → codexTermination-Dx48ma6e.mjs} +7 -2
  49. package/dist/{config-BFB5uJ4t.cjs → config-CtwEUxUP.cjs} +26 -26
  50. package/dist/{config-DwfEpFr3.mjs → config-DSu0Blos.mjs} +3 -3
  51. package/dist/{configuration-4TGMrjul.cjs → configuration-CYO-kPOS.cjs} +1 -1
  52. package/dist/{configuration-DVrb61aY.mjs → configuration-PxzEJumr.mjs} +1 -1
  53. package/dist/{connect-C7FPY0PI.mjs → connect-BQrg3TB6.mjs} +15 -15
  54. package/dist/{connect-QH2VJGBG.cjs → connect-Dq7wndzR.cjs} +28 -28
  55. package/dist/{context-JoKu0V54.cjs → context-6TP-iz_c.cjs} +1 -1
  56. package/dist/{context-B3XPVJlj.mjs → context-CJGRRGWW.mjs} +1 -1
  57. package/dist/{controlClient-BTaZlbC6.cjs → controlClient-Bqv5v5OM.cjs} +3 -3
  58. package/dist/{controlClient-BYKyGyxj.mjs → controlClient-DoeYovwP.mjs} +4 -4
  59. package/dist/{createSessionMetadata-8Fuj2-IV.mjs → createSessionMetadata-DDIChCx8.mjs} +2 -2
  60. package/dist/{createSessionMetadata-B2NynaWZ.cjs → createSessionMetadata-xz767pcG.cjs} +3 -3
  61. package/dist/{defaultPermissionMode-BEWCqJU-.cjs → defaultPermissionMode-PkZGsQDk.cjs} +2 -2
  62. package/dist/{defaultPermissionMode-B8kJG9uI.mjs → defaultPermissionMode-i5KzdK09.mjs} +2 -2
  63. package/dist/{detectCLI-DR9ZaN6B.cjs → detectCLI-BuYR_Qxe.cjs} +4 -4
  64. package/dist/{deterministicJson-C5ZwZ7hu.mjs → deterministicJson-CTEJDqtS.mjs} +217 -12
  65. package/dist/{deterministicJson-BjNQsAjO.cjs → deterministicJson-xqA6DaOm.cjs} +222 -16
  66. package/dist/{doctor-BshRnjLi.cjs → doctor-BrgSlfXn.cjs} +9 -9
  67. package/dist/{doctor-0BiGwJXk.mjs → doctor-IctjVh9T.mjs} +8 -8
  68. package/dist/{doctorReadiness-BCZGcN0a.cjs → doctorReadiness-Dl6yRQCy.cjs} +1 -1
  69. package/dist/{downloadTarget-BN5vZt3K.cjs → downloadTarget-CEb9che-.cjs} +6 -6
  70. package/dist/{downloadTarget-DJPwAZlu.mjs → downloadTarget-jbOz1egC.mjs} +6 -6
  71. package/dist/{ensureDaemonRunning-C5QfToCe.cjs → ensureDaemonRunning-D-HyjGIX.cjs} +6 -6
  72. package/dist/{ensureDaemonRunning-CSmb_mqt.mjs → ensureDaemonRunning-b1e8LCSM.mjs} +5 -5
  73. package/dist/{handleResumeCommand-BwnUZmbo.cjs → handleResumeCommand-BvWVuRwH.cjs} +23 -7
  74. package/dist/{handleResumeCommand-CgjpsdDe.mjs → handleResumeCommand-DpaZvm2c.mjs} +22 -6
  75. package/dist/{index-piJPsTsm.cjs → index-B2p2Mut7.cjs} +259 -53
  76. package/dist/{index-BehVbAsA.mjs → index-BUNnpGFF.mjs} +256 -50
  77. package/dist/{index-Bvldtdny.mjs → index-Bsvbgh9e.mjs} +4 -4
  78. package/dist/{index-BYOZ_8WZ.cjs → index-C64Ufj4D.cjs} +4 -4
  79. package/dist/{index-Clqlu17M.mjs → index-C6Vn5Eac.mjs} +155 -34
  80. package/dist/index-CMf5VbzG.mjs +18 -0
  81. package/dist/index-DmTlDRSL.cjs +24 -0
  82. package/dist/{index-_l1Sdmbi.cjs → index-Dv0Q48P3.cjs} +156 -33
  83. package/dist/{index-BRClDe07.cjs → index-F2UejqYs.cjs} +3 -3
  84. package/dist/{index-BYgfern_.mjs → index-wCbtF4BK.mjs} +3 -3
  85. package/dist/index.cjs +2 -2
  86. package/dist/index.mjs +2 -2
  87. package/dist/{install-BdvKiOQw.mjs → install-BX3lv3NO.mjs} +1 -1
  88. package/dist/{install-Cf6AFSWC.cjs → install-BXvf2E3o.cjs} +1 -1
  89. package/dist/{install-TO4taKW7.cjs → install-C0ANcEAW.cjs} +7 -7
  90. package/dist/{install-fYWHrPcC.mjs → install-CdzSV7qO.mjs} +3 -3
  91. package/dist/{installPiTools-BKnXjrVu.cjs → installPiTools-CL_axh_6.cjs} +1 -1
  92. package/dist/{installTerminalHooks-BQZbvxsZ.cjs → installTerminalHooks-BETLKAtd.cjs} +3 -3
  93. package/dist/lib.cjs +14 -14
  94. package/dist/lib.d.cts +239 -2
  95. package/dist/lib.d.mts +239 -2
  96. package/dist/lib.mjs +14 -14
  97. package/dist/{lidState-BeOwj6eW.cjs → lidState-DWGnm2H4.cjs} +1 -1
  98. package/dist/{lidState-DNMlIhX0.mjs → lidState-bBrmaQd2.mjs} +1 -1
  99. package/dist/{localHappyAgentAuth-Br-mgogg.cjs → localHappyAgentAuth-DZHQnIW9.cjs} +1 -1
  100. package/dist/{localHappyAgentAuth-BezKSFDi.mjs → localHappyAgentAuth-Dn1jYDpt.mjs} +1 -1
  101. package/dist/{logger--vAVtXB_.mjs → logger-BUngm5Xg.mjs} +2 -2
  102. package/dist/{logger-DXTWlPzP.cjs → logger-CphW5nUE.cjs} +2 -2
  103. package/dist/machineMetadata-BQm9YTcI.cjs +79 -0
  104. package/dist/machineMetadata-BXN_bKU3.mjs +68 -0
  105. package/dist/{main-DoMFJ2Cl.cjs → main-B2UV51nK.cjs} +112 -132
  106. package/dist/{main-CshDb5-1.mjs → main-DGkdYfEq.mjs} +106 -126
  107. package/dist/{mcp-pNc1EbQf.cjs → mcp-BFvAEIRz.cjs} +15 -15
  108. package/dist/{mcp-DKT_lrvQ.mjs → mcp-CbTtbs0f.mjs} +15 -15
  109. package/dist/{mirrorProtocol-6IFGPpjJ.mjs → mirrorProtocol-BR4luBC0.mjs} +148 -7
  110. package/dist/{mirrorProtocol-qKflWTX_.cjs → mirrorProtocol-HKPivs5o.cjs} +150 -4
  111. package/dist/{package-B7B03ejW.mjs → package-7Ld1YMhh.mjs} +8 -7
  112. package/dist/{package-DY4zTbKS.cjs → package-KhLqBDX9.cjs} +8 -7
  113. package/dist/panels-C7IVqpJk.mjs +137 -0
  114. package/dist/panels-Njf6GelF.cjs +142 -0
  115. package/dist/{peerTools-3R9RUARX.mjs → peerTools-BOlDRyhi.mjs} +60 -10
  116. package/dist/{peerTools-iy3_6Yc5.cjs → peerTools-DQNlrcqM.cjs} +60 -9
  117. package/dist/{persistence-BfX72dne.cjs → persistence-9BMYspxG.cjs} +2 -2
  118. package/dist/{persistence-DTk4sNpd.mjs → persistence-BFUOHW5h.mjs} +3 -3
  119. package/dist/{piRunnerArgs-CRQVR9o-.cjs → piRunnerArgs-DGaq6VYM.cjs} +8 -2
  120. package/dist/{piRunnerArgs-AT8QJY7x.mjs → piRunnerArgs-H2pgpA5z.mjs} +7 -1
  121. package/dist/{piRuntime-BHRT5MKO.cjs → piRuntime-CT5xv_3h.cjs} +2 -2
  122. package/dist/{piRuntime-E44qTVQ4.mjs → piRuntime-CdN0JAsa.mjs} +2 -2
  123. package/dist/{piTerminal-hI4WFdWm.cjs → piTerminal-0FBtXTHK.cjs} +18 -18
  124. package/dist/{piTerminal-De8nbciM.mjs → piTerminal-C4m9YXAV.mjs} +18 -18
  125. package/dist/processTreeSnapshot-CuLJDNC-.mjs +101 -0
  126. package/dist/processTreeSnapshot-mDbnuojn.cjs +105 -0
  127. package/dist/projectPath-C3ioB4Bu.cjs +13 -0
  128. package/dist/prompt-BOouDaTM.mjs +99 -0
  129. package/dist/prompt-lgF9IE82.cjs +105 -0
  130. package/dist/{attachmentLimits-UyFn8fkQ.mjs → pushNotifications-DCiBEVeC.mjs} +307 -3
  131. package/dist/{attachmentLimits-SqeAHrVC.cjs → pushNotifications-DI92havG.cjs} +308 -2
  132. package/dist/{index-DFPT4HOO.cjs → query-BETKBrnz.cjs} +25 -5
  133. package/dist/{index-CEjJnq05.mjs → query-ywZbQUzR.mjs} +26 -3
  134. package/dist/{rateLimitWindows-XrJiiBpU.mjs → rateLimitWindows-BkfuUB1a.mjs} +1 -1
  135. package/dist/{rateLimitWindows-Czb7_7cK.cjs → rateLimitWindows-YRIYVdo4.cjs} +1 -1
  136. package/dist/{registerCommonHandlers-C0_fyBQ0.cjs → registerCommonHandlers-C7a_dUWs.cjs} +30 -30
  137. package/dist/{registerCommonHandlers-CvIedVRf.mjs → registerCommonHandlers-CTkCvjxt.mjs} +2 -2
  138. package/dist/{registerKillSessionHandler-DYl7l4Ts.cjs → registerKillSessionHandler-CIsvBrVe.cjs} +6 -6
  139. package/dist/{registerKillSessionHandler-gwJ5lTf0.mjs → registerKillSessionHandler-CaqqRYq6.mjs} +6 -6
  140. package/dist/{remoteSessionClient-BRTIOX5b.cjs → remoteSessionClient-D843fkzL.cjs} +5 -5
  141. package/dist/{remoteSessionClient-DRb2Jr5s.mjs → remoteSessionClient-PP-mOKmw.mjs} +5 -5
  142. package/dist/{reportProgressTool-B9nCzbkL.cjs → reportProgressTool-14AXr959.cjs} +84 -2
  143. package/dist/{reportProgressTool-D5tEoXMW.mjs → reportProgressTool-ZOCNjWHr.mjs} +82 -3
  144. package/dist/{resources-JDPugcDq.cjs → resources-CvIlkzpP.cjs} +30 -0
  145. package/dist/{resources-BdFBQi8r.mjs → resources-y9jfyO-_.mjs} +30 -0
  146. package/dist/{run-CKe_WeLW.cjs → run-CAOCYYfT.cjs} +2806 -110
  147. package/dist/{run-BQ_FGaOL.mjs → run-Dajw2E5j.mjs} +2787 -91
  148. package/dist/{runClaude-zrrNcQC_.mjs → runClaude-C6oxWYbp.mjs} +49 -47
  149. package/dist/{runClaude-MHI5IKM-.cjs → runClaude-CRRKt-tm.cjs} +50 -48
  150. package/dist/{runClaudeDeps-RRw-Nusc.cjs → runClaudeDeps-B1ysqTvx.cjs} +310 -237
  151. package/dist/{runClaudeDeps-CVBCokOS.mjs → runClaudeDeps-BcZ68cX3.mjs} +297 -226
  152. package/dist/{runGemini-kipag2ag.mjs → runGemini-D7yKc4wD.mjs} +61 -55
  153. package/dist/{runGemini-D7Lg9yCr.cjs → runGemini-DtKFXqf-.cjs} +89 -83
  154. package/dist/{runOpenClaw-C_lRY3Do.mjs → runOpenClaw-C8ilyLP9.mjs} +19 -19
  155. package/dist/{runOpenClaw-DCcQ0L2N.cjs → runOpenClaw-Cq29mryb.cjs} +20 -20
  156. package/dist/{sandbox-BSyXFVFp.mjs → sandbox-CbCutma4.mjs} +4 -4
  157. package/dist/{sandbox-dMwPTmjm.cjs → sandbox-gIj-EuF4.cjs} +4 -4
  158. package/dist/{selfCheck-DkzDDUsE.cjs → selfCheck-BTGBVthv.cjs} +39 -38
  159. package/dist/selfCheck-Smt-5Xiq.mjs +85 -0
  160. package/dist/{send-dxC0miIA.cjs → send-CZf5lLw_.cjs} +8 -8
  161. package/dist/{send-C-k9nsd3.mjs → send-YZRMQvMJ.mjs} +9 -9
  162. package/dist/{server-DxoTYNlw.mjs → server-BqwXRzFZ.mjs} +4 -4
  163. package/dist/{server-B-W6P7Qr.cjs → server-CknFq6xG.cjs} +6 -6
  164. package/dist/sessionExitLifecycle-CzkLIgNZ.mjs +142 -0
  165. package/dist/sessionExitLifecycle-DFltxXU8.cjs +148 -0
  166. package/dist/{sessionLock-DWX6BbiU.cjs → sessionLock-DRZUcKHT.cjs} +38 -5
  167. package/dist/{sessionLock-DBdtZGOL.mjs → sessionLock-nBXdJxJm.mjs} +36 -5
  168. package/dist/{sessionOps-BAnr7n8t.cjs → sessionOps-BrGiU9-s.cjs} +10 -5
  169. package/dist/{sessionOps-BVoXe12O.mjs → sessionOps-C58iDeD5.mjs} +11 -6
  170. package/dist/{sessionScanner-BtxoeluY.mjs → sessionScanner-Bm57LEXe.mjs} +3 -3
  171. package/dist/{sessionScanner-CDOYsEUD.cjs → sessionScanner-CaO8bLaG.cjs} +3 -3
  172. package/dist/{sessions-C3sZJkzI.mjs → sessions-BXyBHo8n.mjs} +40 -18
  173. package/dist/{sessions-hAitoN-m.cjs → sessions-uzqPCc37.cjs} +39 -16
  174. package/dist/{setupOfflineReconnection-_eD4cuUT.mjs → setupOfflineReconnection-1Qlek3wl.mjs} +2 -2
  175. package/dist/{setupOfflineReconnection-C2EeYTFH.cjs → setupOfflineReconnection-DvvVX3TB.cjs} +2 -2
  176. package/dist/{spawn-Bc9v7pIf.cjs → spawn-DBkodJEO.cjs} +49 -18
  177. package/dist/{spawn-qNrB2CD_.mjs → spawn-vn93PhYL.mjs} +49 -18
  178. package/dist/spawnAgents-CgPMWexP.mjs +79 -0
  179. package/dist/{spawnAgents-BVEaz35W.cjs → spawnAgents-DLNMlhWJ.cjs} +37 -1
  180. package/dist/{spawnHappyCLI-C2stUioM.mjs → spawnHappyCLI-BjFZc_7V.mjs} +1 -1
  181. package/dist/{spawnHappyCLI-fzUagkKV.cjs → spawnHappyCLI-DnUZv0X2.cjs} +2 -2
  182. package/dist/{specialCommands-BJ-nqY4s.cjs → specialCommands-BRufxlqe.cjs} +3 -3
  183. package/dist/{specialCommands-C6W-rVyh.mjs → specialCommands-D3ND9bdg.mjs} +3 -3
  184. package/dist/{startFileWatcher-Bqlqjt93.cjs → startFileWatcher-D9cYzZOq.cjs} +1 -1
  185. package/dist/{startFileWatcher-CR09Snmz.mjs → startFileWatcher-DXJ7yB5v.mjs} +1 -1
  186. package/dist/startupSessionCreate-kdr3m1uX.cjs +26 -0
  187. package/dist/startupSessionCreate-uZ6BM0ty.mjs +24 -0
  188. package/dist/{streamRelay-CJoMk_d2.mjs → streamRelay-DnMCMMfV.mjs} +1 -1
  189. package/dist/{streamRelay-9kBPpbvU.cjs → streamRelay-Dy6amlzx.cjs} +1 -1
  190. package/dist/{sync-Dhmtk66S.cjs → sync-Bn-idAoy.cjs} +1 -1
  191. package/dist/{sync-DbW07iQS.mjs → sync-BvVhDO40.mjs} +1 -1
  192. package/dist/{systemPrompt-CQcuUmVp.mjs → systemPrompt-CIZcJuJF.mjs} +4 -3
  193. package/dist/{systemPrompt-3PYi3EUY.cjs → systemPrompt-DlyEk35T.cjs} +4 -3
  194. package/dist/{teams-DpxLcUU_.cjs → teams-BLeRpDxv.cjs} +8 -8
  195. package/dist/{teams-CwF4Z2fA.mjs → teams-DLY3B5yi.mjs} +8 -8
  196. package/dist/{time-A6zR3Iy6.cjs → time-Cjv0zxQO.cjs} +1 -1
  197. package/dist/{time-BuGWTVP6.mjs → time-D3ETL7Jb.mjs} +1 -1
  198. package/dist/{titleGenerator-D26gvNaS.cjs → titleGenerator-Cgp5ihFb.cjs} +10 -9
  199. package/dist/{titleGenerator-BGEzNWC9.mjs → titleGenerator-Uzbd4utr.mjs} +9 -8
  200. package/dist/{todo-DrZc76H5.mjs → todo-C9Ga-oEM.mjs} +6 -6
  201. package/dist/{todo-73g3NCIO.cjs → todo-pOMcEECE.cjs} +6 -6
  202. package/dist/{tools-CxJp4T1T.cjs → tools-BL7Byl_x.cjs} +1 -1
  203. package/dist/{tools-BtsrQnNS.mjs → tools-Cho7iIWf.mjs} +1 -1
  204. package/dist/{uninstall-DWNYvewQ.cjs → uninstall-CbayEVoV.cjs} +6 -6
  205. package/dist/{uninstall-DOb2mTwV.mjs → uninstall-CvZHVY9C.mjs} +3 -3
  206. package/dist/webPanels-B2_C2-3g.mjs +49 -0
  207. package/dist/webPanels-FCgFKvVe.cjs +53 -0
  208. package/package.json +8 -7
  209. package/dist/machineMetadata-B1H9gNbN.mjs +0 -39
  210. package/dist/machineMetadata-DcUupMje.cjs +0 -42
  211. package/dist/messageBuffer-BWlGgR3A.mjs +0 -71
  212. package/dist/messageBuffer-fJMH6uY8.cjs +0 -73
  213. package/dist/projectPath-ChLhdOyt.cjs +0 -13
  214. package/dist/selfCheck-CF7XGJPb.mjs +0 -84
  215. package/dist/sessionModeFile-ByLbXTbg.mjs +0 -32
  216. package/dist/sessionModeFile-CLLdidiJ.cjs +0 -36
  217. package/dist/spawnAgents-Bw6j4tqz.mjs +0 -45
package/dist/index.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- require('./package-DY4zTbKS.cjs');
4
- require('./index-BRClDe07.cjs');
3
+ require('./package-KhLqBDX9.cjs');
4
+ require('./index-F2UejqYs.cjs');
5
5
  require('node:module');
6
6
  require('node:fs');
7
7
  require('node:fs/promises');
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import './package-B7B03ejW.mjs';
2
- import './index-BYgfern_.mjs';
1
+ import './package-7Ld1YMhh.mjs';
2
+ import './index-wCbtF4BK.mjs';
3
3
  import 'node:module';
4
4
  import 'node:fs';
5
5
  import 'node:fs/promises';
@@ -1,7 +1,7 @@
1
1
  import { createHash, randomUUID } from 'node:crypto';
2
2
  import { unlink, rmdir, mkdir, lstat, readFile, writeFile, rename } from 'node:fs/promises';
3
3
  import { join, resolve, dirname } from 'node:path';
4
- import { T as TEAM_SKILL } from './resources-BdFBQi8r.mjs';
4
+ import { T as TEAM_SKILL } from './resources-y9jfyO-_.mjs';
5
5
 
6
6
  const AUTOMATION_SKILL = `---
7
7
  name: very-happy-automations
@@ -3,7 +3,7 @@
3
3
  var node_crypto = require('node:crypto');
4
4
  var promises = require('node:fs/promises');
5
5
  var path = require('node:path');
6
- var resources = require('./resources-JDPugcDq.cjs');
6
+ var resources = require('./resources-CvIlkzpP.cjs');
7
7
 
8
8
  const AUTOMATION_SKILL = `---
9
9
  name: very-happy-automations
@@ -1,24 +1,24 @@
1
1
  'use strict';
2
2
 
3
- var logger = require('./logger-DXTWlPzP.cjs');
4
- var fs = require('fs');
3
+ var logger = require('./logger-CphW5nUE.cjs');
4
+ var require$$0 = require('fs');
5
5
  var child_process = require('child_process');
6
6
  var trimIdent = require('./trimIdent-4gvk9Wk6.cjs');
7
7
  var os = require('os');
8
8
  require('chalk');
9
9
  require('node:util');
10
- require('./configuration-4TGMrjul.cjs');
10
+ require('./configuration-CYO-kPOS.cjs');
11
11
  require('node:fs');
12
12
  require('node:os');
13
13
  require('node:path');
14
- require('./package-DY4zTbKS.cjs');
14
+ require('./package-KhLqBDX9.cjs');
15
15
  require('node:fs/promises');
16
16
 
17
17
  const PLIST_LABEL = "com.happy-cli.daemon";
18
18
  const PLIST_FILE = `/Library/LaunchDaemons/${PLIST_LABEL}.plist`;
19
19
  async function install$1() {
20
20
  try {
21
- if (fs.existsSync(PLIST_FILE)) {
21
+ if (require$$0.existsSync(PLIST_FILE)) {
22
22
  logger.logger.info("Daemon plist already exists. Uninstalling first...");
23
23
  child_process.execSync(`launchctl unload ${PLIST_FILE}`, { stdio: "inherit" });
24
24
  }
@@ -62,8 +62,8 @@ async function install$1() {
62
62
  </dict>
63
63
  </plist>
64
64
  `);
65
- fs.writeFileSync(PLIST_FILE, plistContent);
66
- fs.chmodSync(PLIST_FILE, 420);
65
+ require$$0.writeFileSync(PLIST_FILE, plistContent);
66
+ require$$0.chmodSync(PLIST_FILE, 420);
67
67
  logger.logger.info(`Created daemon plist at ${PLIST_FILE}`);
68
68
  child_process.execSync(`launchctl load ${PLIST_FILE}`, { stdio: "inherit" });
69
69
  logger.logger.info("Daemon installed and started successfully");
@@ -1,15 +1,15 @@
1
- import { l as logger } from './logger--vAVtXB_.mjs';
1
+ import { l as logger } from './logger-BUngm5Xg.mjs';
2
2
  import { existsSync, writeFileSync, chmodSync } from 'fs';
3
3
  import { execSync } from 'child_process';
4
4
  import { t as trimIdent } from './trimIdent-BAjmv_TG.mjs';
5
5
  import os from 'os';
6
6
  import 'chalk';
7
7
  import 'node:util';
8
- import './configuration-DVrb61aY.mjs';
8
+ import './configuration-PxzEJumr.mjs';
9
9
  import 'node:fs';
10
10
  import 'node:os';
11
11
  import 'node:path';
12
- import './package-B7B03ejW.mjs';
12
+ import './package-7Ld1YMhh.mjs';
13
13
  import 'node:fs/promises';
14
14
 
15
15
  const PLIST_LABEL = "com.happy-cli.daemon";
@@ -5,7 +5,7 @@ var os = require('node:os');
5
5
  var path = require('node:path');
6
6
  var node_url = require('node:url');
7
7
  var node_crypto = require('node:crypto');
8
- var projectPath = require('./projectPath-ChLhdOyt.cjs');
8
+ var projectPath = require('./projectPath-C3ioB4Bu.cjs');
9
9
  require('path');
10
10
  require('url');
11
11
 
@@ -5,11 +5,11 @@ var path = require('node:path');
5
5
  var os = require('node:os');
6
6
  var node_child_process = require('node:child_process');
7
7
  var chalk = require('chalk');
8
- var projectPath = require('./projectPath-ChLhdOyt.cjs');
9
- var doctorReadiness = require('./doctorReadiness-BCZGcN0a.cjs');
8
+ var projectPath = require('./projectPath-C3ioB4Bu.cjs');
9
+ var doctorReadiness = require('./doctorReadiness-Dl6yRQCy.cjs');
10
10
  require('path');
11
11
  require('url');
12
- require('./detectCLI-DR9ZaN6B.cjs');
12
+ require('./detectCLI-BuYR_Qxe.cjs');
13
13
  require('child_process');
14
14
  require('os');
15
15
  require('fs');
package/dist/lib.cjs CHANGED
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var api = require('./api-JANhFdZV.cjs');
4
- var logger = require('./logger-DXTWlPzP.cjs');
5
- var configuration = require('./configuration-4TGMrjul.cjs');
3
+ var api = require('./api-DM7b1OKj.cjs');
4
+ var logger = require('./logger-CphW5nUE.cjs');
5
+ var configuration = require('./configuration-CYO-kPOS.cjs');
6
6
  var types = require('./types-CRS-srZK.cjs');
7
7
  require('axios');
8
- require('./lidState-BeOwj6eW.cjs');
8
+ require('./lidState-DWGnm2H4.cjs');
9
9
  require('./authRelay-Dy1qU9td.cjs');
10
10
  require('node:crypto');
11
11
  require('tweetnacl');
@@ -13,32 +13,32 @@ require('os');
13
13
  require('child_process');
14
14
  require('node:events');
15
15
  require('socket.io-client');
16
- require('./attachmentLimits-SqeAHrVC.cjs');
16
+ require('./pushNotifications-DI92havG.cjs');
17
17
  require('zod');
18
- require('./index-_l1Sdmbi.cjs');
18
+ require('./index-Dv0Q48P3.cjs');
19
19
  require('@paralleldrive/cuid2');
20
+ require('./contentLogMetadata-ZSFk_NjQ.cjs');
20
21
  require('./limits-C-a7gr04.cjs');
21
- require('./time-A6zR3Iy6.cjs');
22
- require('./registerCommonHandlers-C0_fyBQ0.cjs');
22
+ require('./time-Cjv0zxQO.cjs');
23
+ require('./registerCommonHandlers-C7a_dUWs.cjs');
23
24
  require('util');
24
25
  require('fs/promises');
25
26
  require('crypto');
26
27
  require('path');
27
28
  require('cross-spawn');
28
- require('./projectPath-ChLhdOyt.cjs');
29
+ require('./projectPath-C3ioB4Bu.cjs');
29
30
  require('url');
30
- require('./sync-Dhmtk66S.cjs');
31
+ require('./sync-Bn-idAoy.cjs');
31
32
  require('./backgroundTaskActivity-CBvUdj39.cjs');
32
- require('./controlClient-BTaZlbC6.cjs');
33
- require('./persistence-BfX72dne.cjs');
33
+ require('./controlClient-Bqv5v5OM.cjs');
34
+ require('./persistence-9BMYspxG.cjs');
34
35
  require('node:fs/promises');
35
36
  require('node:fs');
36
- require('./contentLogMetadata-ZSFk_NjQ.cjs');
37
37
  require('chalk');
38
38
  require('node:util');
39
39
  require('node:path');
40
40
  require('node:os');
41
- require('./package-DY4zTbKS.cjs');
41
+ require('./package-KhLqBDX9.cjs');
42
42
 
43
43
 
44
44
 
package/dist/lib.d.cts CHANGED
@@ -367,7 +367,9 @@ type Session = {
367
367
  declare const MachineMetadataSchema: z$1.ZodObject<{
368
368
  teamsVersion: z$1.ZodOptional<z$1.ZodNumber>;
369
369
  teamLaunchVersion: z$1.ZodOptional<z$1.ZodNumber>;
370
+ teamRetryVersion: z$1.ZodOptional<z$1.ZodNumber>;
370
371
  worktreeVersion: z$1.ZodOptional<z$1.ZodNumber>;
372
+ modelConfigVersion: z$1.ZodOptional<z$1.ZodNumber>;
371
373
  host: z$1.ZodString;
372
374
  platform: z$1.ZodString;
373
375
  happyCliVersion: z$1.ZodString;
@@ -588,6 +590,15 @@ declare const DaemonStateSchema: z$1.ZodObject<{
588
590
  rpcAvailable: z$1.ZodBoolean;
589
591
  detectedAt: z$1.ZodNumber;
590
592
  }, z$1.core.$loose>>;
593
+ webPanels: z$1.ZodOptional<z$1.ZodObject<{
594
+ panels: z$1.ZodArray<z$1.ZodObject<{
595
+ id: z$1.ZodString;
596
+ title: z$1.ZodString;
597
+ url: z$1.ZodString;
598
+ embed: z$1.ZodBoolean;
599
+ }, z$1.core.$strip>>;
600
+ updatedAt: z$1.ZodNumber;
601
+ }, z$1.core.$strip>>;
591
602
  }, z$1.core.$strip>;
592
603
  type DaemonState = z$1.infer<typeof DaemonStateSchema>;
593
604
  type ClaudeAuthState = ClaudeAuthState$1;
@@ -707,6 +718,7 @@ type Metadata = {
707
718
  */
708
719
  terminalId?: string;
709
720
  codexThreadId?: string;
721
+ piSessionId?: string;
710
722
  tools?: string[];
711
723
  slashCommands?: string[];
712
724
  mcpServers?: Array<{
@@ -747,6 +759,18 @@ type Metadata = {
747
759
  idleMs: number;
748
760
  v: 1;
749
761
  };
762
+ /**
763
+ * B-679: written by a wrapper that went OFFLINE (SIGTERM / SIGINT: `sessions
764
+ * stop`, daemon stop / upgrade, shutdown); cleared by the next wrapper on
765
+ * reconnect. `seq` = its message cursor — user input stored above it (sent
766
+ * to the offline session) was never routed and is replayed on resume. Old
767
+ * clients ignore it.
768
+ */
769
+ exitCursor?: {
770
+ at: number;
771
+ seq: number;
772
+ v: 1;
773
+ };
750
774
  /** B-587: user opted this session out of idle hibernation (web ⋯ menu). */
751
775
  keepAwake?: boolean;
752
776
  flavor?: string;
@@ -1273,7 +1297,9 @@ declare class ApiSessionClient extends EventEmitter {
1273
1297
  * session down. Needs no socket; POSTs through the same session-message
1274
1298
  * channel so the web receives it identically to a cancel-button tombstone.
1275
1299
  */
1276
- cancelUndeliveredQueuedInputs(): Promise<void>;
1300
+ cancelUndeliveredQueuedInputs(opts?: {
1301
+ maxSeq?: number;
1302
+ }): Promise<void>;
1277
1303
  /**
1278
1304
  * Send a message to session
1279
1305
  * @param body - Message body (can be MessageContent or raw content for agent messages)
@@ -1291,6 +1317,11 @@ declare class ApiSessionClient extends EventEmitter {
1291
1317
  * own line, so a launcher sends the matching session event only when this
1292
1318
  * says the turn-end did not carry it).
1293
1319
  */
1320
+ /**
1321
+ * B-495: close the turn a fork backfill left open. History, not a live
1322
+ * turn end — so no `turn-ended` tap (board analyzer, completion hooks).
1323
+ */
1324
+ closeReplayedClaudeTurn(): void;
1294
1325
  closeClaudeSessionTurn(status?: SessionTurnEndStatus, meta?: {
1295
1326
  error?: string;
1296
1327
  }): boolean;
@@ -1453,6 +1484,44 @@ declare class ApiSessionClient extends EventEmitter {
1453
1484
  private startSmartReconnect;
1454
1485
  }
1455
1486
 
1487
+ /**
1488
+ * B-510: machine web panels — local web pages a person may need to look at
1489
+ * (noVNC, an agent-browser dashboard, Grafana, a dev server), declared ONLY in
1490
+ * this machine's `~/.happy/settings.json` (`webPanels`) and mirrored to the web
1491
+ * through `daemonState.webPanels`. Spec: specs/2026-09-machine-web-panels.md.
1492
+ *
1493
+ * The web, RPC and server have no write path (same rule as `todoProvider`):
1494
+ * the URL is opened by the viewer's browser, so whoever can write it chooses
1495
+ * what the user's browser loads. Only the machine owner can.
1496
+ *
1497
+ * Nothing is proxied: the viewer's browser connects to the URL directly.
1498
+ */
1499
+ interface WebPanel {
1500
+ id: string;
1501
+ title: string;
1502
+ url: string;
1503
+ /** false = the web only offers "open in new window" (site forbids framing). */
1504
+ embed: boolean;
1505
+ }
1506
+
1507
+ /**
1508
+ * B-689: why a daemon-spawned wrapper died before it reported its session.
1509
+ *
1510
+ * The wrapper runs with `stdio: 'ignore'`, so the daemon cannot read its
1511
+ * stderr; the wrapper's own log file is the record (utils/exitReason.ts writes
1512
+ * an `[EXIT] …` line on every non-zero exit). Older wrappers have no `[EXIT]`
1513
+ * line — fall back to the last logged error.
1514
+ */
1515
+ type StartupExit = {
1516
+ /** The process is confirmed gone (exited, or stopped after the timeout). */
1517
+ exited: boolean;
1518
+ code: number | null;
1519
+ signal: string | null;
1520
+ /** No session report within the spawn window; the daemon stopped it. */
1521
+ timedOut?: boolean;
1522
+ reason?: string;
1523
+ };
1524
+
1456
1525
  /**
1457
1526
  * The backends the daemon can spawn as a remote session.
1458
1527
  *
@@ -1549,8 +1618,148 @@ type SpawnSessionResult = {
1549
1618
  } | {
1550
1619
  type: 'error';
1551
1620
  errorMessage: string;
1621
+ startupExit?: StartupExit;
1552
1622
  };
1553
1623
 
1624
+ /**
1625
+ * B-688 wire shapes for the `model-config-*` machine RPCs
1626
+ * (spec specs/2026-10-custom-models.md). Mirrored by the web in
1627
+ * packages/happy-web-v2/src/sync/modelConfigTypes.ts — keep both in step.
1628
+ *
1629
+ * Patch convention: a field left `undefined` keeps the file's value; `null`
1630
+ * or '' removes the key Very Happy manages. Secrets never come back: reads
1631
+ * return `SecretView`, never the value.
1632
+ */
1633
+
1634
+ declare const MODEL_CONFIG_CAPABILITY_VERSION = 1;
1635
+ type HarnessId = 'claude' | 'codex' | 'gemini' | 'pi';
1636
+ interface SecretView {
1637
+ /** none: nothing configured; command: a helper/command the user wrote (not shown). */
1638
+ mode: 'none' | 'literal' | 'env' | 'command';
1639
+ /** `sk-a…9f3c` / `••••` for literal; never the value. */
1640
+ masked?: string;
1641
+ envName?: string;
1642
+ /** Whether the daemon's environment (inherited by sessions) defines envName. */
1643
+ envPresent?: boolean;
1644
+ }
1645
+ interface ConfigWarning {
1646
+ code: string;
1647
+ message: string;
1648
+ }
1649
+ interface FileView {
1650
+ role: string;
1651
+ path: string;
1652
+ exists: boolean;
1653
+ error?: {
1654
+ code: string;
1655
+ message: string;
1656
+ };
1657
+ }
1658
+ interface BackupView {
1659
+ id: string;
1660
+ createdAt: number;
1661
+ reason: string;
1662
+ files: string[];
1663
+ }
1664
+ /** Per-harness current values, already masked. Shape depends on the harness. */
1665
+ interface HarnessCurrent {
1666
+ baseUrl?: string | null;
1667
+ apiKey?: SecretView;
1668
+ authHeader?: 'bearer' | 'x-api-key';
1669
+ model?: string | null;
1670
+ opusModel?: string | null;
1671
+ sonnetModel?: string | null;
1672
+ haikuModel?: string | null;
1673
+ pickerModels?: string[];
1674
+ providerId?: string | null;
1675
+ providerName?: string | null;
1676
+ api?: string | null;
1677
+ models?: string[];
1678
+ defaultModel?: string | null;
1679
+ /** codex/pi: provider currently selected by the harness. */
1680
+ activeProvider?: string | null;
1681
+ active?: boolean;
1682
+ }
1683
+ interface HarnessConfigView {
1684
+ harness: HarnessId;
1685
+ /** Harness binary found on the daemon's PATH. */
1686
+ installed: boolean;
1687
+ files: FileView[];
1688
+ /** sha256 over all files; `apply`/`restore` refuse when the disk moved on. */
1689
+ baseHash: string;
1690
+ current: HarnessCurrent;
1691
+ /** codex/pi: user-defined provider ids in the file. */
1692
+ providers?: string[];
1693
+ /** Model keys the web should offer in this harness's composer picker. */
1694
+ pickerModels: string[];
1695
+ backups: BackupView[];
1696
+ warnings: ConfigWarning[];
1697
+ }
1698
+ interface ModelConfigReadResult {
1699
+ version: typeof MODEL_CONFIG_CAPABILITY_VERSION;
1700
+ harnesses: HarnessConfigView[];
1701
+ }
1702
+ interface FileDiff {
1703
+ path: string;
1704
+ /** Unified diff with secrets masked; '' when unchanged. */
1705
+ diff: string;
1706
+ created: boolean;
1707
+ deleted: boolean;
1708
+ }
1709
+ interface ModelConfigApplyResult {
1710
+ harness: HarnessId;
1711
+ dryRun: boolean;
1712
+ changed: boolean;
1713
+ baseHash: string;
1714
+ files: FileDiff[];
1715
+ warnings: ConfigWarning[];
1716
+ backup?: BackupView;
1717
+ /** Fresh view after a real write. */
1718
+ config?: HarnessConfigView;
1719
+ }
1720
+
1721
+ interface ModelConfigServiceOptions {
1722
+ /** The home the harnesses resolve `~` against (the daemon user's). */
1723
+ home: string;
1724
+ /** The daemon's environment: harness dir overrides + env-reference presence. */
1725
+ env: NodeJS.ProcessEnv;
1726
+ /** Very Happy home; backups and the audit log live under it. */
1727
+ happyHomeDir: string;
1728
+ isInstalled?: (binary: string) => boolean;
1729
+ /** Called after a successful write (e.g. re-run the Claude auth preflight). */
1730
+ onChanged?: (harness: HarnessId) => void;
1731
+ now?: () => number;
1732
+ }
1733
+ declare class ModelConfigService {
1734
+ private readonly opts;
1735
+ private readonly backups;
1736
+ private readonly auditPath;
1737
+ private chain;
1738
+ constructor(opts: ModelConfigServiceOptions);
1739
+ private get ctx();
1740
+ private serialize;
1741
+ private loadFiles;
1742
+ readOne(harness: HarnessId, providerId?: string): Promise<HarnessConfigView>;
1743
+ read(params?: {
1744
+ harness?: unknown;
1745
+ providerId?: unknown;
1746
+ }): Promise<ModelConfigReadResult>;
1747
+ private diffs;
1748
+ private write;
1749
+ private audit;
1750
+ apply(params: {
1751
+ patch?: unknown;
1752
+ baseHash?: unknown;
1753
+ dryRun?: unknown;
1754
+ }): Promise<ModelConfigApplyResult>;
1755
+ restore(params: {
1756
+ harness?: unknown;
1757
+ backupId?: unknown;
1758
+ baseHash?: unknown;
1759
+ dryRun?: unknown;
1760
+ }): Promise<ModelConfigApplyResult>;
1761
+ }
1762
+
1554
1763
  /** Agent-specific visible-screen adapters. Unknown is deliberately not idle. */
1555
1764
  type CodingAgentKind = 'claude' | 'codex' | 'pi';
1556
1765
 
@@ -1691,6 +1900,9 @@ declare class ApiMachineClient {
1691
1900
  private claudeAuthState;
1692
1901
  /** B-587: the machine's hibernation threshold, published as a capability. */
1693
1902
  private agentHibernationIdleMs;
1903
+ /** B-510: last normalized `webPanels` (null = never set → field not written). */
1904
+ private webPanels;
1905
+ private webPanelsSignatureSent;
1694
1906
  private rateLimitPushChain;
1695
1907
  private readonly rateLimitPublisher;
1696
1908
  private rpcHandlerManager;
@@ -1770,6 +1982,12 @@ declare class ApiMachineClient {
1770
1982
  * `daemonState.agentHibernation` capability. Call before connect().
1771
1983
  */
1772
1984
  setAgentHibernationHandlers(initialIdleMs: number, set: (idleMs: number) => Promise<number>): void;
1985
+ /**
1986
+ * B-510: mirror the local `webPanels` declaration into daemonState. Every
1987
+ * daemonState write is a CAS + DB write + broadcast, so an unchanged list
1988
+ * (same signature as the last one sent) writes nothing.
1989
+ */
1990
+ setWebPanels(panels: WebPanel[]): Promise<void>;
1773
1991
  private publishAgentHibernation;
1774
1992
  /** B-276 machine RPCs. Responses always carry `claudeAuth` so the web can refresh in place. */
1775
1993
  setClaudeAuthHandlers(handlers: {
@@ -1783,6 +2001,8 @@ declare class ApiMachineClient {
1783
2001
  }>;
1784
2002
  setStore: (store: 'auto' | 'file') => Promise<ClaudeAuthState>;
1785
2003
  }): void;
2004
+ /** B-688 machine RPCs `model-config-*` (modules/modelConfig/modelConfigRpc.ts). */
2005
+ setModelConfigService(service: ModelConfigService): void;
1786
2006
  /**
1787
2007
  * B-506: the five `sessions.*` methods a CLI on ANOTHER machine of this
1788
2008
  * account calls to read / message sessions this daemon spawned. Plaintext
@@ -1862,7 +2082,7 @@ interface PushToken {
1862
2082
  createdAt: number;
1863
2083
  updatedAt: number;
1864
2084
  }
1865
- type SessionNotificationKind = 'done' | 'permission' | 'question';
2085
+ type SessionNotificationKind = 'done' | 'permission' | 'question' | 'attention';
1866
2086
  declare class PushNotificationClient {
1867
2087
  private readonly token;
1868
2088
  private readonly baseUrl;
@@ -1897,6 +2117,23 @@ declare class PushNotificationClient {
1897
2117
  metadata: Metadata | null | undefined;
1898
2118
  data?: Record<string, any>;
1899
2119
  }): void;
2120
+ /**
2121
+ * B-510 `request_human` / `very-happy attention --session`: an awaited
2122
+ * push-event `attention` (title "Needs you", body = the reason, data.url =
2123
+ * panel deep link or the session). A server that predates the kind answers
2124
+ * 400; then the same push goes out as `question`, so the person is still
2125
+ * reached (compat matrix in specs/2026-09-machine-web-panels.md).
2126
+ */
2127
+ sendAttention(params: {
2128
+ sessionId: string;
2129
+ reason: string;
2130
+ url: string;
2131
+ sessionTitle?: string;
2132
+ }): Promise<{
2133
+ sent: boolean;
2134
+ kind?: SessionNotificationKind;
2135
+ error?: string;
2136
+ }>;
1900
2137
  }
1901
2138
 
1902
2139
  /**