very-happy-cli 0.2.180 → 0.2.181

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 (200) hide show
  1. package/dist/{AcpBackend-DfRDtMcG.cjs → AcpBackend-CgHb_ya5.cjs} +3 -3
  2. package/dist/{AcpBackend-B8Zi30Zh.mjs → AcpBackend-DZGCSuXF.mjs} +3 -3
  3. package/dist/{AcpSessionManager-CASKOnOj.cjs → AcpSessionManager-CacC2EVn.cjs} +1 -1
  4. package/dist/{AcpSessionManager-i8Rab0xT.mjs → AcpSessionManager-DwuPzWBh.mjs} +1 -1
  5. package/dist/{BasePermissionHandler-BlM_tfej.cjs → BasePermissionHandler-DCP8ZEB4.cjs} +1 -1
  6. package/dist/{BasePermissionHandler-26fKbRCm.mjs → BasePermissionHandler-Uo-GUjbb.mjs} +1 -1
  7. package/dist/{acpSessionResume-B9l54P-X.mjs → acpSessionResume-9OLTD6kT.mjs} +1 -1
  8. package/dist/{acpSessionResume-CR5pmgVo.cjs → acpSessionResume-BaVMD80f.cjs} +1 -1
  9. package/dist/{agentHome-CmGy0NWv.mjs → agentHome-B1BsKeqD.mjs} +4 -4
  10. package/dist/{agentHome-C7Sb7-Tz.cjs → agentHome-BtUmGcPX.cjs} +4 -4
  11. package/dist/{api-DM7b1OKj.cjs → api-COHFAkb_.cjs} +10 -10
  12. package/dist/{api-Hov8p7CA.mjs → api-Dr3wXL_7.mjs} +10 -10
  13. package/dist/{apiMachine-CwGEhQDT.mjs → apiMachine-CHEzPQdS.mjs} +54 -32
  14. package/dist/{apiMachine-DkGRj-Ai.cjs → apiMachine-D8H7CXaz.cjs} +55 -33
  15. package/dist/{attachmentContent-CIn4iPEk.mjs → attachmentContent-1YwtKgWl.mjs} +2 -2
  16. package/dist/{attachmentContent-CEm13_gF.cjs → attachmentContent-mIhbtRKl.cjs} +2 -2
  17. package/dist/{auth-rggxMpEE.mjs → auth-CbZkcMAb.mjs} +8 -8
  18. package/dist/{auth-CBXnm-Mj.cjs → auth-CgQP7d0q.cjs} +5 -5
  19. package/dist/{auth-BG1DY0gj.mjs → auth-DZsthtSk.mjs} +5 -5
  20. package/dist/{auth-Dawj7pP5.cjs → auth-Fg8fLadK.cjs} +8 -8
  21. package/dist/{auto-CbYOfoPS.cjs → auto-BB7kqSh5.cjs} +18 -18
  22. package/dist/{auto-CXXLXGeL.mjs → auto-_T-Ud-z5.mjs} +18 -18
  23. package/dist/{bootstrap-Dt5I1SOl.mjs → bootstrap-B6EkZh4u.mjs} +2 -2
  24. package/dist/{bootstrap-DoA7okld.cjs → bootstrap-CYtOtbi7.cjs} +2 -2
  25. package/dist/{browser-DUNetFT4.mjs → browser-C2qhUHSE.mjs} +1 -1
  26. package/dist/{browser-DZ6qRtfH.cjs → browser-DjNNQQk2.cjs} +1 -1
  27. package/dist/{claudeLocal-OHWQigCl.mjs → claudeLocal-BAFjWhZ8.mjs} +6 -6
  28. package/dist/{claudeLocal--DNyMOSv.cjs → claudeLocal-O_w7-fBh.cjs} +6 -6
  29. package/dist/{claudeLocalLauncher-BStvfa7M.mjs → claudeLocalLauncher-CWn30LZR.mjs} +11 -11
  30. package/dist/{claudeLocalLauncher-BhvPbcyH.cjs → claudeLocalLauncher-Df3zg1q0.cjs} +11 -11
  31. package/dist/{claudeSessionFork-GAVWhiKG.mjs → claudeSessionFork-2ZkSTOGn.mjs} +1 -1
  32. package/dist/{claudeSessionFork-Be16vzGc.cjs → claudeSessionFork-pwcKqB-e.cjs} +1 -1
  33. package/dist/{client-Ca5Pcgy_.mjs → client-BKyU66lg.mjs} +2 -2
  34. package/dist/{client-D_loZ9IK.cjs → client-CUO3ItoB.cjs} +34 -8
  35. package/dist/{client-CnB7kRCT.mjs → client-CXOnzuOy.mjs} +2 -2
  36. package/dist/{client-DJplzPjD.cjs → client-DWs6k041.cjs} +2 -2
  37. package/dist/{client-BWjaHKtj.cjs → client-D_U2VjO3.cjs} +2 -2
  38. package/dist/{client-D4uPb1uu.mjs → client-DsQcxVUV.mjs} +34 -9
  39. package/dist/codex/happyMcpStdioBridge.cjs +17 -17
  40. package/dist/codex/happyMcpStdioBridge.mjs +17 -17
  41. package/dist/{codexAppServerClient-PE-12AsW.cjs → codexAppServerClient-BRX3JZ_5.cjs} +3 -3
  42. package/dist/{codexAppServerClient-CO4G6OS4.mjs → codexAppServerClient-C3JO3pwM.mjs} +3 -3
  43. package/dist/{codexCommand-B_xUH79E.mjs → codexCommand-BZIAAqKS.mjs} +47 -45
  44. package/dist/{codexCommand-BNoD1t1C.cjs → codexCommand-dKOc5iQl.cjs} +47 -45
  45. package/dist/{codexTermination-BmBbizFK.cjs → codexTermination-BVR9HeVI.cjs} +1 -1
  46. package/dist/{codexTermination-Dx48ma6e.mjs → codexTermination-ztFkwHrG.mjs} +1 -1
  47. package/dist/{config-DSu0Blos.mjs → config-NbHjx8ge.mjs} +3 -3
  48. package/dist/{config-CtwEUxUP.cjs → config-cftYxLC7.cjs} +3 -3
  49. package/dist/{configuration-PxzEJumr.mjs → configuration-BPrfb17M.mjs} +1 -1
  50. package/dist/{configuration-CYO-kPOS.cjs → configuration-C8JgseHy.cjs} +1 -1
  51. package/dist/{connect-Dq7wndzR.cjs → connect-Br8VMrK1.cjs} +13 -13
  52. package/dist/{connect-BQrg3TB6.mjs → connect-CLD1ai0k.mjs} +13 -13
  53. package/dist/{context-6TP-iz_c.cjs → context-D1lgQTJC.cjs} +1 -1
  54. package/dist/{context-CJGRRGWW.mjs → context-_YGq8xdH.mjs} +1 -1
  55. package/dist/{controlClient-DoeYovwP.mjs → controlClient-CkNpT5zS.mjs} +3 -3
  56. package/dist/{controlClient-Bqv5v5OM.cjs → controlClient-D68Zj7Q-.cjs} +3 -3
  57. package/dist/{createSessionMetadata-DDIChCx8.mjs → createSessionMetadata-3WAj3_xl.mjs} +2 -2
  58. package/dist/{createSessionMetadata-xz767pcG.cjs → createSessionMetadata-DNIbKLHg.cjs} +2 -2
  59. package/dist/{defaultPermissionMode-PkZGsQDk.cjs → defaultPermissionMode-BmvjP32v.cjs} +2 -2
  60. package/dist/{defaultPermissionMode-i5KzdK09.mjs → defaultPermissionMode-DXMznl8v.mjs} +2 -2
  61. package/dist/{deterministicJson-xqA6DaOm.cjs → deterministicJson-BS7D7URE.cjs} +87 -22
  62. package/dist/{deterministicJson-CTEJDqtS.mjs → deterministicJson-BcBIKKf1.mjs} +87 -24
  63. package/dist/{doctor-BrgSlfXn.cjs → doctor-Be7zC0AF.cjs} +8 -7
  64. package/dist/{doctor-IctjVh9T.mjs → doctor-CoOaPq6w.mjs} +8 -8
  65. package/dist/{downloadTarget-jbOz1egC.mjs → downloadTarget-CeaAXdJj.mjs} +6 -6
  66. package/dist/{downloadTarget-CEb9che-.cjs → downloadTarget-LyOiucn_.cjs} +6 -6
  67. package/dist/{ensureDaemonRunning-b1e8LCSM.mjs → ensureDaemonRunning--98j7-17.mjs} +5 -5
  68. package/dist/{ensureDaemonRunning-D-HyjGIX.cjs → ensureDaemonRunning-B8z37VKD.cjs} +5 -5
  69. package/dist/fileStore-5qpetZS0.mjs +146 -0
  70. package/dist/fileStore-7qhnbs6N.cjs +152 -0
  71. package/dist/{handleResumeCommand-BvWVuRwH.cjs → handleResumeCommand-BFZlrFVH.cjs} +5 -5
  72. package/dist/{handleResumeCommand-DpaZvm2c.mjs → handleResumeCommand-gO8I4keP.mjs} +5 -5
  73. package/dist/{index-B2p2Mut7.cjs → index-B5PXbZjW.cjs} +77 -60
  74. package/dist/{index-F2UejqYs.cjs → index-BRMq9gOe.cjs} +3 -3
  75. package/dist/{index-C64Ufj4D.cjs → index-BkluinoS.cjs} +4 -4
  76. package/dist/{index-Bsvbgh9e.mjs → index-CO0n9ue6.mjs} +4 -4
  77. package/dist/{index-C6Vn5Eac.mjs → index-CeRXrGnH.mjs} +39 -6
  78. package/dist/{index-Dv0Q48P3.cjs → index-Df2eHm3O.cjs} +40 -6
  79. package/dist/{index-BUNnpGFF.mjs → index-DneHoQXf.mjs} +78 -61
  80. package/dist/{index-CMf5VbzG.mjs → index-WUj3954m.mjs} +4 -4
  81. package/dist/{index-wCbtF4BK.mjs → index-hQ8LP1C2.mjs} +3 -3
  82. package/dist/{index-DmTlDRSL.cjs → index-jF2t3ACW.cjs} +4 -4
  83. package/dist/index.cjs +2 -2
  84. package/dist/index.mjs +2 -2
  85. package/dist/{install-BX3lv3NO.mjs → install-D0inLCv-.mjs} +1 -1
  86. package/dist/{install-BXvf2E3o.cjs → install-D2NCbeJ-.cjs} +1 -1
  87. package/dist/{install-CdzSV7qO.mjs → install-DkYFiVK4.mjs} +3 -3
  88. package/dist/{install-C0ANcEAW.cjs → install-FqkSUjPC.cjs} +3 -3
  89. package/dist/lib.cjs +12 -12
  90. package/dist/lib.d.cts +39 -1
  91. package/dist/lib.d.mts +39 -1
  92. package/dist/lib.mjs +12 -12
  93. package/dist/{lidState-bBrmaQd2.mjs → lidState-DghbfRbr.mjs} +1 -1
  94. package/dist/{lidState-DWGnm2H4.cjs → lidState-x8cJ8J_9.cjs} +1 -1
  95. package/dist/{localHappyAgentAuth-DZHQnIW9.cjs → localHappyAgentAuth-DZ2kb9uq.cjs} +1 -1
  96. package/dist/{localHappyAgentAuth-Dn1jYDpt.mjs → localHappyAgentAuth-IKmeRpuQ.mjs} +1 -1
  97. package/dist/{logger-CphW5nUE.cjs → logger-DgBwUSgS.cjs} +2 -2
  98. package/dist/{logger-BUngm5Xg.mjs → logger-LFr8iPgl.mjs} +2 -2
  99. package/dist/{machineMetadata-BXN_bKU3.mjs → machineMetadata-BglCsfvf.mjs} +11 -4
  100. package/dist/{machineMetadata-BQm9YTcI.cjs → machineMetadata-DB03ez4K.cjs} +11 -3
  101. package/dist/{main-B2UV51nK.cjs → main-YQ-Vkakw.cjs} +45 -45
  102. package/dist/{main-DGkdYfEq.mjs → main-_1LSzlLv.mjs} +45 -45
  103. package/dist/{mcp-BFvAEIRz.cjs → mcp-BIY80jSc.cjs} +14 -14
  104. package/dist/{mcp-CbTtbs0f.mjs → mcp-Csj-mT5Y.mjs} +14 -14
  105. package/dist/{mirrorProtocol-HKPivs5o.cjs → mirrorProtocol-BphKIAK9.cjs} +16 -153
  106. package/dist/{mirrorProtocol-BR4luBC0.mjs → mirrorProtocol-CAxOMBkb.mjs} +19 -151
  107. package/dist/{package-7Ld1YMhh.mjs → package-DYGwlmXl.mjs} +8 -8
  108. package/dist/{package-KhLqBDX9.cjs → package-NoD8QOOM.cjs} +8 -8
  109. package/dist/{panels-C7IVqpJk.mjs → panels-B8zRm7_d.mjs} +5 -5
  110. package/dist/{panels-Njf6GelF.cjs → panels-DYEc1NyQ.cjs} +5 -5
  111. package/dist/{peerTools-BOlDRyhi.mjs → peerTools-CK3JYu1k.mjs} +5 -5
  112. package/dist/{peerTools-DQNlrcqM.cjs → peerTools-CP-x-Peu.cjs} +5 -5
  113. package/dist/{persistence-9BMYspxG.cjs → persistence-BY-D00wT.cjs} +2 -2
  114. package/dist/{persistence-BFUOHW5h.mjs → persistence-D2Djrf7t.mjs} +2 -2
  115. package/dist/pi-CqyoZMjI.mjs +380 -0
  116. package/dist/pi-DlsrPCTa.cjs +400 -0
  117. package/dist/{piRunnerArgs-H2pgpA5z.mjs → piRunnerArgs-IZLoL7TG.mjs} +1 -1
  118. package/dist/{piRunnerArgs-DGaq6VYM.cjs → piRunnerArgs-gxLYIZH4.cjs} +1 -1
  119. package/dist/{piRuntime-CdN0JAsa.mjs → piRuntime-D7Y4oHVL.mjs} +2 -2
  120. package/dist/{piRuntime-CT5xv_3h.cjs → piRuntime-o5L8uX-W.cjs} +2 -2
  121. package/dist/{piTerminal-0FBtXTHK.cjs → piTerminal-C_-JDkLN.cjs} +17 -17
  122. package/dist/{piTerminal-C4m9YXAV.mjs → piTerminal-Kphx8Uhw.mjs} +17 -17
  123. package/dist/{prompt-lgF9IE82.cjs → prompt-Bof2aQkI.cjs} +7 -2
  124. package/dist/{prompt-BOouDaTM.mjs → prompt-QHuFx9j6.mjs} +7 -2
  125. package/dist/{pushNotifications-DI92havG.cjs → pushNotifications-BXoOSq_G.cjs} +10 -4
  126. package/dist/{pushNotifications-DCiBEVeC.mjs → pushNotifications-DXGIhE-A.mjs} +10 -4
  127. package/dist/{query-ywZbQUzR.mjs → query-CcA6DVZK.mjs} +1 -1
  128. package/dist/{query-BETKBrnz.cjs → query-CdCxzuaB.cjs} +1 -1
  129. package/dist/{rateLimitWindows-YRIYVdo4.cjs → rateLimitWindows-OpAmdOtC.cjs} +1 -1
  130. package/dist/{rateLimitWindows-BkfuUB1a.mjs → rateLimitWindows-ZtHZHe-l.mjs} +1 -1
  131. package/dist/{registerCommonHandlers-C7a_dUWs.cjs → registerCommonHandlers-CRjBoJLK.cjs} +2 -2
  132. package/dist/{registerCommonHandlers-CTkCvjxt.mjs → registerCommonHandlers-DF6bdDtd.mjs} +2 -2
  133. package/dist/{registerKillSessionHandler-CIsvBrVe.cjs → registerKillSessionHandler-7fOm6ooh.cjs} +6 -6
  134. package/dist/{registerKillSessionHandler-CaqqRYq6.mjs → registerKillSessionHandler-DDCKL3wf.mjs} +6 -6
  135. package/dist/{remoteSessionClient-PP-mOKmw.mjs → remoteSessionClient-B2POSKFT.mjs} +5 -5
  136. package/dist/{remoteSessionClient-D843fkzL.cjs → remoteSessionClient-CFCn42bs.cjs} +5 -5
  137. package/dist/{reportProgressTool-ZOCNjWHr.mjs → reportProgressTool-tPxEvh6x.mjs} +4 -4
  138. package/dist/{reportProgressTool-14AXr959.cjs → reportProgressTool-th4trcET.cjs} +4 -4
  139. package/dist/{resources-CvIlkzpP.cjs → resources-BPyN59Iv.cjs} +23 -2
  140. package/dist/{resources-y9jfyO-_.mjs → resources-CH1iP6Cv.mjs} +22 -3
  141. package/dist/{run-CAOCYYfT.cjs → run-C_FumCQk.cjs} +618 -594
  142. package/dist/{run-Dajw2E5j.mjs → run-cKQBbVi4.mjs} +554 -530
  143. package/dist/{runClaude-C6oxWYbp.mjs → runClaude-CYnM6krL.mjs} +22 -22
  144. package/dist/{runClaude-CRRKt-tm.cjs → runClaude-z_2YC_aa.cjs} +22 -22
  145. package/dist/{runClaudeDeps-B1ysqTvx.cjs → runClaudeDeps-CLubzWnA.cjs} +43 -41
  146. package/dist/{runClaudeDeps-BcZ68cX3.mjs → runClaudeDeps-duS06Pb4.mjs} +48 -46
  147. package/dist/{runGemini-D7yKc4wD.mjs → runGemini-C_Pc2EhH.mjs} +37 -35
  148. package/dist/{runGemini-DtKFXqf-.cjs → runGemini-vEoXV6qT.cjs} +37 -35
  149. package/dist/{runOpenClaw-Cq29mryb.cjs → runOpenClaw-CXJCtMgB.cjs} +18 -18
  150. package/dist/{runOpenClaw-C8ilyLP9.mjs → runOpenClaw-Cxun1qLC.mjs} +18 -18
  151. package/dist/{sandbox-gIj-EuF4.cjs → sandbox-CO46H2tK.cjs} +4 -4
  152. package/dist/{sandbox-CbCutma4.mjs → sandbox-CsvPnTmz.mjs} +4 -4
  153. package/dist/{selfCheck-BTGBVthv.cjs → selfCheck-DIr7Gc0i.cjs} +36 -36
  154. package/dist/selfCheck-NamtBHVB.mjs +85 -0
  155. package/dist/{send-YZRMQvMJ.mjs → send-DMoFg6F1.mjs} +8 -8
  156. package/dist/{send-CZf5lLw_.cjs → send-X2mfVEyr.cjs} +8 -8
  157. package/dist/{server-CknFq6xG.cjs → server-BwTEdbkr.cjs} +6 -6
  158. package/dist/{server-BqwXRzFZ.mjs → server-CkqQ0sRH.mjs} +4 -4
  159. package/dist/{sessionLock-DRZUcKHT.cjs → sessionLock-CdIRJlHH.cjs} +3 -3
  160. package/dist/{sessionLock-nBXdJxJm.mjs → sessionLock-JIfwCqMk.mjs} +3 -3
  161. package/dist/{sessionOps-BrGiU9-s.cjs → sessionOps-DVA-00nR.cjs} +4 -4
  162. package/dist/{sessionOps-C58iDeD5.mjs → sessionOps-DqlftXxe.mjs} +4 -4
  163. package/dist/{sessionScanner-Bm57LEXe.mjs → sessionScanner-BI0Vo1xT.mjs} +3 -3
  164. package/dist/{sessionScanner-CaO8bLaG.cjs → sessionScanner-BMwgGAhY.cjs} +3 -3
  165. package/dist/{sessions-BXyBHo8n.mjs → sessions-D6IimX7b.mjs} +10 -10
  166. package/dist/{sessions-uzqPCc37.cjs → sessions-DjgEcHaT.cjs} +10 -10
  167. package/dist/{setupOfflineReconnection-DvvVX3TB.cjs → setupOfflineReconnection-CjuCiKY3.cjs} +2 -2
  168. package/dist/{setupOfflineReconnection-1Qlek3wl.mjs → setupOfflineReconnection-DgJK_4m1.mjs} +2 -2
  169. package/dist/{spawn-vn93PhYL.mjs → spawn-Dvzy-tzc.mjs} +14 -14
  170. package/dist/{spawn-DBkodJEO.cjs → spawn-rhF28shY.cjs} +14 -14
  171. package/dist/{spawnAgents-CgPMWexP.mjs → spawnAgents-CCnlq-FI.mjs} +1 -1
  172. package/dist/{spawnAgents-DLNMlhWJ.cjs → spawnAgents-iwuqrgR9.cjs} +1 -1
  173. package/dist/{spawnHappyCLI-DnUZv0X2.cjs → spawnHappyCLI-DnKmIsEt.cjs} +1 -1
  174. package/dist/{spawnHappyCLI-BjFZc_7V.mjs → spawnHappyCLI-Dq3LLXLb.mjs} +1 -1
  175. package/dist/{specialCommands-D3ND9bdg.mjs → specialCommands-CcyZ1hGA.mjs} +3 -3
  176. package/dist/{specialCommands-BRufxlqe.cjs → specialCommands-Zwr2C6A2.cjs} +3 -3
  177. package/dist/{startFileWatcher-DXJ7yB5v.mjs → startFileWatcher-4thXDK9d.mjs} +1 -1
  178. package/dist/{startFileWatcher-D9cYzZOq.cjs → startFileWatcher-K6hJSyiR.cjs} +1 -1
  179. package/dist/{startupSessionCreate-uZ6BM0ty.mjs → startupSessionCreate-BfByJ16A.mjs} +1 -1
  180. package/dist/{startupSessionCreate-kdr3m1uX.cjs → startupSessionCreate-CKEbq0tL.cjs} +1 -1
  181. package/dist/{streamRelay-Dy6amlzx.cjs → streamRelay-Gy8Xfnon.cjs} +1 -1
  182. package/dist/{streamRelay-DnMCMMfV.mjs → streamRelay-LcDvyEjK.mjs} +1 -1
  183. package/dist/{sync-Bn-idAoy.cjs → sync-1hQ5KHpL.cjs} +1 -1
  184. package/dist/{sync-BvVhDO40.mjs → sync-DO-2PU45.mjs} +1 -1
  185. package/dist/{systemPrompt-CIZcJuJF.mjs → systemPrompt-BctLfMZs.mjs} +3 -3
  186. package/dist/{systemPrompt-DlyEk35T.cjs → systemPrompt-Dj7pgkMK.cjs} +3 -3
  187. package/dist/{teams-DLY3B5yi.mjs → teams-Bu8YeOoF.mjs} +8 -8
  188. package/dist/{teams-BLeRpDxv.cjs → teams-uQxUlyyz.cjs} +8 -8
  189. package/dist/{time-D3ETL7Jb.mjs → time-BcoJaG8E.mjs} +1 -1
  190. package/dist/{time-Cjv0zxQO.cjs → time-nqa9shu8.cjs} +1 -1
  191. package/dist/{titleGenerator-Cgp5ihFb.cjs → titleGenerator-D09XyYYG.cjs} +2 -2
  192. package/dist/{titleGenerator-Uzbd4utr.mjs → titleGenerator-D5r06bhf.mjs} +1 -1
  193. package/dist/{todo-pOMcEECE.cjs → todo-CCOnL7pT.cjs} +6 -6
  194. package/dist/{todo-C9Ga-oEM.mjs → todo-D1q8146q.mjs} +6 -6
  195. package/dist/{tools-Cho7iIWf.mjs → tools-D2E--n1x.mjs} +3 -3
  196. package/dist/{tools-BL7Byl_x.cjs → tools-DiCXnAC5.cjs} +3 -3
  197. package/dist/{uninstall-CbayEVoV.cjs → uninstall-BrNwwwSD.cjs} +3 -3
  198. package/dist/{uninstall-CvZHVY9C.mjs → uninstall-CtwXi1Rt.mjs} +3 -3
  199. package/package.json +8 -8
  200. package/dist/selfCheck-Smt-5Xiq.mjs +0 -85
@@ -445,7 +445,8 @@ const TeamActionSchema = z$1.discriminatedUnion("type", [
445
445
  z$1.object({ type: z$1.literal("reconcile-operation"), operationId: id$2, claimId: id$2, note: z$1.string().trim().min(1).max(4e3) }),
446
446
  // B-689: owner asks the execution computer to run a failed/uncertain operation again.
447
447
  z$1.object({ type: z$1.literal("retry-operation"), operationId: id$2, claimId: id$2 }),
448
- z$1.object({ type: z$1.literal("join"), name: id$2, sessionId: id$2, botId: id$2.optional() }),
448
+ /** B-730: `transfer` = the owner confirmed moving a session that is bound in another live team (Web adopt); without it the server answers `session_in_other_team`. An old server strips it. */
449
+ z$1.object({ type: z$1.literal("join"), name: id$2, sessionId: id$2, botId: id$2.optional(), transfer: z$1.literal(true).optional() }),
449
450
  z$1.object({ type: z$1.literal("delegate"), goal: text$1, acceptance: z$1.array(text$1).min(1).max(32), parentTaskId: id$2.optional(), assigneeBotId: id$2.optional(), botName: id$2.optional(), directory: z$1.string().min(1).max(4096).optional(), assistant: TeamAssistantSchema.optional(), model: TeamModelSchema.optional() }),
450
451
  z$1.object({ type: z$1.literal("message"), taskId: id$2, body: text$1, recipientBotId: id$2.optional() }),
451
452
  z$1.object({ type: z$1.literal("submit"), taskId: id$2, attemptId: id$2, goalVersion: z$1.number().int().positive(), result: text$1 }),
@@ -460,7 +461,18 @@ const TeamActionSchema = z$1.discriminatedUnion("type", [
460
461
  z$1.object({ type: z$1.literal("message-delivered"), messageId: id$2, recipientBotId: id$2, generation: z$1.number().int().positive(), sessionId: id$2 })
461
462
  ]);
462
463
  z$1.object({ requestId: id$2, action: TeamActionSchema });
463
- z$1.object({ name: id$2, machineId: id$2, requestId: id$2.optional(), launch: TeamLaunchSchema.optional() });
464
+ const TeamProjectChoiceSchema = z$1.object({
465
+ projectId: id$2.optional(),
466
+ inheritFromSessionId: id$2.optional(),
467
+ create: z$1.boolean().optional(),
468
+ directory: z$1.string().min(1).max(4096).optional()
469
+ });
470
+ z$1.object({ name: id$2, machineId: id$2, requestId: id$2.optional(), launch: TeamLaunchSchema.optional(), project: TeamProjectChoiceSchema.optional(), sessionId: id$2.optional(), transfer: z$1.literal(true).optional() });
471
+ z$1.object({
472
+ projectId: id$2.nullable().optional(),
473
+ create: z$1.boolean().optional(),
474
+ requestId: id$2.optional()
475
+ }).refine((v) => v.projectId !== void 0 !== (v.create === true), "exactly one of projectId / create");
464
476
  const id$1 = z$1.string().min(1).max(128);
465
477
  const text = z$1.string().min(1).max(32e3);
466
478
  const AUTOMATION_NAME_PATTERN = /^[a-z0-9][a-z0-9-_.]{0,63}$/;
@@ -1003,11 +1015,17 @@ For edit/status/delete, a conflict means the version changed. Read the task and
1003
1015
  Restricted team workers cannot use account-wide Todo credentials. Ask the user or supervising session to perform the account operation; do not clear scope variables or seek another credential to bypass that boundary.
1004
1016
  `;
1005
1017
  const BUILTIN_TODO_DISCOVERY = "For the user\u2019s Very Happy My todos, run `very-happy todo skill` to read the official skill, then use its CLI commands. Do not confuse account todos with your execution plan; restricted team workers must not bypass their scope.";
1006
- const ContextUsageSchema = z$1.object({
1018
+ z$1.object({
1007
1019
  source: z$1.literal("pi"),
1008
1020
  tokens: z$1.number().finite().nonnegative().nullable(),
1009
1021
  contextWindow: z$1.number().finite().positive(),
1010
- updatedAt: z$1.number().finite().nonnegative()
1022
+ updatedAt: z$1.number().finite().nonnegative(),
1023
+ /** 'configured' (the harness's own model entry) | 'inferred' (same model id in a known table) | 'unknown' (harness default). Absent = older CLI → configured. */
1024
+ windowSource: z$1.string().nullable().optional(),
1025
+ /** Model id the snapshot was measured on (lets the web consult its own table when the window is unknown). */
1026
+ model: z$1.string().nullable().optional(),
1027
+ /** When the harness last compacted; tokens stay null until the next answer measures the new context. */
1028
+ compactedAt: z$1.number().finite().nonnegative().nullable().optional()
1011
1029
  });
1012
1030
  const AgentVersionsSchema = z$1.object({
1013
1031
  checkedAt: z$1.number(),
@@ -1022,12 +1040,27 @@ const AgentVersionsSchema = z$1.object({
1022
1040
  const AGENT_VERSION_SOURCES = [
1023
1041
  { id: "claude", label: "Claude Code", command: "claude", package: "@anthropic-ai/claude-code", docs: "https://code.claude.com/docs/en/setup" },
1024
1042
  { id: "codex", label: "Codex", command: "codex", package: "@openai/codex", docs: "https://github.com/openai/codex#installation-and-usage" },
1025
- { id: "pi", label: "Pi", command: "pi", package: "@mariozechner/pi-coding-agent", docs: "https://github.com/badlogic/pi-mono/tree/main/packages/coding-agent" },
1043
+ // B-719: @mariozechner/pi-coding-agent is deprecated at 0.73.1 ("use @earendil-works/pi-coding-agent"),
1044
+ // so comparing against it reported every newer pi as current.
1045
+ { id: "pi", label: "Pi", command: "pi", package: "@earendil-works/pi-coding-agent", docs: "https://github.com/earendil-works/pi" },
1026
1046
  { id: "gemini", label: "Gemini CLI", command: "gemini", package: "@google/gemini-cli", docs: "https://github.com/google-gemini/gemini-cli#installation" },
1027
1047
  { id: "opencode", label: "OpenCode", command: "opencode", package: "opencode-ai", docs: "https://opencode.ai/docs/" },
1028
1048
  { id: "openclaw", label: "OpenClaw", command: "openclaw", package: "openclaw", docs: "https://docs.openclaw.ai/install/updating" },
1029
1049
  { id: "claude-sdk", label: "Claude Agent SDK", command: null, package: "@anthropic-ai/claude-agent-sdk", docs: "https://github.com/anthropics/claude-agent-sdk-typescript" }
1030
1050
  ];
1051
+ const HARNESS_INSTALL_IDS = ["claude", "codex", "gemini", "pi"];
1052
+ function isHarnessInstallId(value) {
1053
+ return typeof value === "string" && HARNESS_INSTALL_IDS.includes(value);
1054
+ }
1055
+ const HARNESS_INSTALL_CAPABILITY_VERSION = 1;
1056
+ z$1.object({
1057
+ harness: z$1.string(),
1058
+ state: z$1.string(),
1059
+ // 'installing' | 'installed' | 'failed' (open: older Web shows unknown states as failed)
1060
+ detail: z$1.string().optional(),
1061
+ startedAt: z$1.number(),
1062
+ at: z$1.number()
1063
+ });
1031
1064
  const CLAUDE_OPUS_55_MODEL = "claude-opus-5-5";
1032
1065
  const CLAUDE_OPUS_55_CAPABILITY = "claude-opus-5-5-v1";
1033
1066
  function supportsClaudeOpus55(metadata) {
@@ -1105,4 +1138,4 @@ const ServerMigrateNoticeSchema = z$1.object({
1105
1138
  issuedAt: z$1.number().int().positive()
1106
1139
  });
1107
1140
 
1108
- export { AUTOMATION_NAME_PATTERN as A, BUILTIN_TODO_SKILL as B, ContextUsageSchema as C, AUTOMATION_CLAIM_MAX_RUNS as D, AUTOMATION_DAEMON_CAPABILITY_PRECHECK as E, AUTOMATION_DEFAULT_LEASE_MS as F, PROMPT_QUEUE_CAPABILITY as P, ReleaseDrainNoticeSchema as R, STREAM_DELTA_MAX_CHARS as S, PROJECT_SESSION_CAPABILITY as a, AUTOMATION_PRECHECK_MAX_TIMEOUT_MS as b, AutomationPrecheckSchema as c, createEnvelope as d, createBuiltinTodoClient as e, BUILTIN_TODO_DISCOVERY as f, getAgentCodeDefaults as g, isClaudeOpus55Model as h, isAutomationRunTerminal as i, supportsClaudeOpus55 as j, AutomationNameSchema as k, AutomationConcurrencySchema as l, AutomationActionSchema as m, normalizeAgentKey as n, AutomationTriggerSchema as o, AgentVersionsSchema as p, PI_STEER_CAPABILITY as q, AGENT_VERSION_SOURCES as r, streamKeyOf as s, RelayAssignmentResponseSchema as t, CODEX_STEER_CAPABILITY as u, RelayCandidatesResponseSchema as v, ServerMigrateNoticeSchema as w, AUTOMATION_SUMMARY_MAX_CHARS as x, AUTOMATION_PRECHECK_OUTPUT_MAX_CHARS as y, AUTOMATION_PRECHECK_DEFAULT_TIMEOUT_MS as z };
1141
+ export { AUTOMATION_NAME_PATTERN as A, BUILTIN_TODO_SKILL as B, CODEX_STEER_CAPABILITY as C, AUTOMATION_CLAIM_MAX_RUNS as D, AUTOMATION_DAEMON_CAPABILITY_PRECHECK as E, AUTOMATION_DEFAULT_LEASE_MS as F, HARNESS_INSTALL_CAPABILITY_VERSION as H, PROMPT_QUEUE_CAPABILITY as P, ReleaseDrainNoticeSchema as R, STREAM_DELTA_MAX_CHARS as S, PROJECT_SESSION_CAPABILITY as a, AUTOMATION_PRECHECK_MAX_TIMEOUT_MS as b, AutomationPrecheckSchema as c, createEnvelope as d, createBuiltinTodoClient as e, BUILTIN_TODO_DISCOVERY as f, getAgentCodeDefaults as g, isClaudeOpus55Model as h, isAutomationRunTerminal as i, supportsClaudeOpus55 as j, AutomationNameSchema as k, AutomationConcurrencySchema as l, AutomationActionSchema as m, normalizeAgentKey as n, AutomationTriggerSchema as o, AgentVersionsSchema as p, PI_STEER_CAPABILITY as q, AGENT_VERSION_SOURCES as r, streamKeyOf as s, RelayAssignmentResponseSchema as t, RelayCandidatesResponseSchema as u, ServerMigrateNoticeSchema as v, isHarnessInstallId as w, AUTOMATION_SUMMARY_MAX_CHARS as x, AUTOMATION_PRECHECK_OUTPUT_MAX_CHARS as y, AUTOMATION_PRECHECK_DEFAULT_TIMEOUT_MS as z };
@@ -465,7 +465,8 @@ const TeamActionSchema = z.z.discriminatedUnion("type", [
465
465
  z.z.object({ type: z.z.literal("reconcile-operation"), operationId: id$2, claimId: id$2, note: z.z.string().trim().min(1).max(4e3) }),
466
466
  // B-689: owner asks the execution computer to run a failed/uncertain operation again.
467
467
  z.z.object({ type: z.z.literal("retry-operation"), operationId: id$2, claimId: id$2 }),
468
- z.z.object({ type: z.z.literal("join"), name: id$2, sessionId: id$2, botId: id$2.optional() }),
468
+ /** B-730: `transfer` = the owner confirmed moving a session that is bound in another live team (Web adopt); without it the server answers `session_in_other_team`. An old server strips it. */
469
+ z.z.object({ type: z.z.literal("join"), name: id$2, sessionId: id$2, botId: id$2.optional(), transfer: z.z.literal(true).optional() }),
469
470
  z.z.object({ type: z.z.literal("delegate"), goal: text$1, acceptance: z.z.array(text$1).min(1).max(32), parentTaskId: id$2.optional(), assigneeBotId: id$2.optional(), botName: id$2.optional(), directory: z.z.string().min(1).max(4096).optional(), assistant: TeamAssistantSchema.optional(), model: TeamModelSchema.optional() }),
470
471
  z.z.object({ type: z.z.literal("message"), taskId: id$2, body: text$1, recipientBotId: id$2.optional() }),
471
472
  z.z.object({ type: z.z.literal("submit"), taskId: id$2, attemptId: id$2, goalVersion: z.z.number().int().positive(), result: text$1 }),
@@ -480,7 +481,18 @@ const TeamActionSchema = z.z.discriminatedUnion("type", [
480
481
  z.z.object({ type: z.z.literal("message-delivered"), messageId: id$2, recipientBotId: id$2, generation: z.z.number().int().positive(), sessionId: id$2 })
481
482
  ]);
482
483
  z.z.object({ requestId: id$2, action: TeamActionSchema });
483
- z.z.object({ name: id$2, machineId: id$2, requestId: id$2.optional(), launch: TeamLaunchSchema.optional() });
484
+ const TeamProjectChoiceSchema = z.z.object({
485
+ projectId: id$2.optional(),
486
+ inheritFromSessionId: id$2.optional(),
487
+ create: z.z.boolean().optional(),
488
+ directory: z.z.string().min(1).max(4096).optional()
489
+ });
490
+ z.z.object({ name: id$2, machineId: id$2, requestId: id$2.optional(), launch: TeamLaunchSchema.optional(), project: TeamProjectChoiceSchema.optional(), sessionId: id$2.optional(), transfer: z.z.literal(true).optional() });
491
+ z.z.object({
492
+ projectId: id$2.nullable().optional(),
493
+ create: z.z.boolean().optional(),
494
+ requestId: id$2.optional()
495
+ }).refine((v) => v.projectId !== void 0 !== (v.create === true), "exactly one of projectId / create");
484
496
  const id$1 = z.z.string().min(1).max(128);
485
497
  const text = z.z.string().min(1).max(32e3);
486
498
  const AUTOMATION_NAME_PATTERN = /^[a-z0-9][a-z0-9-_.]{0,63}$/;
@@ -1023,11 +1035,17 @@ For edit/status/delete, a conflict means the version changed. Read the task and
1023
1035
  Restricted team workers cannot use account-wide Todo credentials. Ask the user or supervising session to perform the account operation; do not clear scope variables or seek another credential to bypass that boundary.
1024
1036
  `;
1025
1037
  const BUILTIN_TODO_DISCOVERY = "For the user\u2019s Very Happy My todos, run `very-happy todo skill` to read the official skill, then use its CLI commands. Do not confuse account todos with your execution plan; restricted team workers must not bypass their scope.";
1026
- const ContextUsageSchema = z.z.object({
1038
+ z.z.object({
1027
1039
  source: z.z.literal("pi"),
1028
1040
  tokens: z.z.number().finite().nonnegative().nullable(),
1029
1041
  contextWindow: z.z.number().finite().positive(),
1030
- updatedAt: z.z.number().finite().nonnegative()
1042
+ updatedAt: z.z.number().finite().nonnegative(),
1043
+ /** 'configured' (the harness's own model entry) | 'inferred' (same model id in a known table) | 'unknown' (harness default). Absent = older CLI → configured. */
1044
+ windowSource: z.z.string().nullable().optional(),
1045
+ /** Model id the snapshot was measured on (lets the web consult its own table when the window is unknown). */
1046
+ model: z.z.string().nullable().optional(),
1047
+ /** When the harness last compacted; tokens stay null until the next answer measures the new context. */
1048
+ compactedAt: z.z.number().finite().nonnegative().nullable().optional()
1031
1049
  });
1032
1050
  const AgentVersionsSchema = z.z.object({
1033
1051
  checkedAt: z.z.number(),
@@ -1042,12 +1060,27 @@ const AgentVersionsSchema = z.z.object({
1042
1060
  const AGENT_VERSION_SOURCES = [
1043
1061
  { id: "claude", label: "Claude Code", command: "claude", package: "@anthropic-ai/claude-code", docs: "https://code.claude.com/docs/en/setup" },
1044
1062
  { id: "codex", label: "Codex", command: "codex", package: "@openai/codex", docs: "https://github.com/openai/codex#installation-and-usage" },
1045
- { id: "pi", label: "Pi", command: "pi", package: "@mariozechner/pi-coding-agent", docs: "https://github.com/badlogic/pi-mono/tree/main/packages/coding-agent" },
1063
+ // B-719: @mariozechner/pi-coding-agent is deprecated at 0.73.1 ("use @earendil-works/pi-coding-agent"),
1064
+ // so comparing against it reported every newer pi as current.
1065
+ { id: "pi", label: "Pi", command: "pi", package: "@earendil-works/pi-coding-agent", docs: "https://github.com/earendil-works/pi" },
1046
1066
  { id: "gemini", label: "Gemini CLI", command: "gemini", package: "@google/gemini-cli", docs: "https://github.com/google-gemini/gemini-cli#installation" },
1047
1067
  { id: "opencode", label: "OpenCode", command: "opencode", package: "opencode-ai", docs: "https://opencode.ai/docs/" },
1048
1068
  { id: "openclaw", label: "OpenClaw", command: "openclaw", package: "openclaw", docs: "https://docs.openclaw.ai/install/updating" },
1049
1069
  { id: "claude-sdk", label: "Claude Agent SDK", command: null, package: "@anthropic-ai/claude-agent-sdk", docs: "https://github.com/anthropics/claude-agent-sdk-typescript" }
1050
1070
  ];
1071
+ const HARNESS_INSTALL_IDS = ["claude", "codex", "gemini", "pi"];
1072
+ function isHarnessInstallId(value) {
1073
+ return typeof value === "string" && HARNESS_INSTALL_IDS.includes(value);
1074
+ }
1075
+ const HARNESS_INSTALL_CAPABILITY_VERSION = 1;
1076
+ z.z.object({
1077
+ harness: z.z.string(),
1078
+ state: z.z.string(),
1079
+ // 'installing' | 'installed' | 'failed' (open: older Web shows unknown states as failed)
1080
+ detail: z.z.string().optional(),
1081
+ startedAt: z.z.number(),
1082
+ at: z.z.number()
1083
+ });
1051
1084
  const CLAUDE_OPUS_55_MODEL = "claude-opus-5-5";
1052
1085
  const CLAUDE_OPUS_55_CAPABILITY = "claude-opus-5-5-v1";
1053
1086
  function supportsClaudeOpus55(metadata) {
@@ -1143,7 +1176,7 @@ exports.AutomationTriggerSchema = AutomationTriggerSchema;
1143
1176
  exports.BUILTIN_TODO_DISCOVERY = BUILTIN_TODO_DISCOVERY;
1144
1177
  exports.BUILTIN_TODO_SKILL = BUILTIN_TODO_SKILL;
1145
1178
  exports.CODEX_STEER_CAPABILITY = CODEX_STEER_CAPABILITY;
1146
- exports.ContextUsageSchema = ContextUsageSchema;
1179
+ exports.HARNESS_INSTALL_CAPABILITY_VERSION = HARNESS_INSTALL_CAPABILITY_VERSION;
1147
1180
  exports.PI_STEER_CAPABILITY = PI_STEER_CAPABILITY;
1148
1181
  exports.PROJECT_SESSION_CAPABILITY = PROJECT_SESSION_CAPABILITY;
1149
1182
  exports.PROMPT_QUEUE_CAPABILITY = PROMPT_QUEUE_CAPABILITY;
@@ -1157,6 +1190,7 @@ exports.createEnvelope = createEnvelope;
1157
1190
  exports.getAgentCodeDefaults = getAgentCodeDefaults;
1158
1191
  exports.isAutomationRunTerminal = isAutomationRunTerminal;
1159
1192
  exports.isClaudeOpus55Model = isClaudeOpus55Model;
1193
+ exports.isHarnessInstallId = isHarnessInstallId;
1160
1194
  exports.normalizeAgentKey = normalizeAgentKey;
1161
1195
  exports.streamKeyOf = streamKeyOf;
1162
1196
  exports.supportsClaudeOpus55 = supportsClaudeOpus55;
@@ -1,90 +1,92 @@
1
- import { D as DefaultTransport, A as AcpBackend, i as isAgentExitError, a as acpNoticeMessage } from './AcpBackend-B8Zi30Zh.mjs';
2
- export { b as DEFAULT_IDLE_TIMEOUT_MS, c as DEFAULT_TOOL_CALL_TIMEOUT_MS, e as extractErrorDetail, f as formatDuration, d as formatDurationMinutes, h as handleAgentMessageChunk, g as handleAgentThoughtChunk, j as handleLegacyMessageChunk, k as handlePlanUpdate, l as handleThinkingUpdate, m as handleToolCall, n as handleToolCallUpdate, p as parseArgsFromContent } from './AcpBackend-B8Zi30Zh.mjs';
3
- import { l as logger } from './logger-BUngm5Xg.mjs';
4
- import { A as AcpSessionManager } from './AcpSessionManager-i8Rab0xT.mjs';
5
- import { q as PI_STEER_CAPABILITY, f as BUILTIN_TODO_DISCOVERY, P as PROMPT_QUEUE_CAPABILITY, a as PROJECT_SESSION_CAPABILITY } from './index-C6Vn5Eac.mjs';
1
+ import { D as DefaultTransport, A as AcpBackend, i as isAgentExitError, a as acpNoticeMessage } from './AcpBackend-DZGCSuXF.mjs';
2
+ export { b as DEFAULT_IDLE_TIMEOUT_MS, c as DEFAULT_TOOL_CALL_TIMEOUT_MS, e as extractErrorDetail, f as formatDuration, d as formatDurationMinutes, h as handleAgentMessageChunk, g as handleAgentThoughtChunk, j as handleLegacyMessageChunk, k as handlePlanUpdate, l as handleThinkingUpdate, m as handleToolCall, n as handleToolCallUpdate, p as parseArgsFromContent } from './AcpBackend-DZGCSuXF.mjs';
3
+ import { l as logger } from './logger-LFr8iPgl.mjs';
4
+ import { A as AcpSessionManager } from './AcpSessionManager-DwuPzWBh.mjs';
5
+ import { q as PI_STEER_CAPABILITY, f as BUILTIN_TODO_DISCOVERY, P as PROMPT_QUEUE_CAPABILITY, a as PROJECT_SESSION_CAPABILITY } from './index-CeRXrGnH.mjs';
6
+ import { h as hashObject, s as startHappyServer, r as readPiModelsJson, a as resolvePiContextUsage, c as createProjectInjector } from './deterministicJson-BcBIKKf1.mjs';
6
7
  import { r as registerAgentAttachmentDownloads } from './agentAttachments-M_B5qEF2.mjs';
7
- import { c as configuration } from './configuration-PxzEJumr.mjs';
8
- import { a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt, C as CLAUDE_ATTACHMENT_KINDS } from './attachmentContent-CIn4iPEk.mjs';
9
- import { p as preparePiTeamsRuntime } from './piRuntime-CdN0JAsa.mjs';
8
+ import { c as configuration } from './configuration-BPrfb17M.mjs';
9
+ import { a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt, C as CLAUDE_ATTACHMENT_KINDS } from './attachmentContent-1YwtKgWl.mjs';
10
+ import { p as preparePiTeamsRuntime } from './piRuntime-D7Y4oHVL.mjs';
10
11
  import { randomUUID } from 'node:crypto';
11
12
  import { join } from 'node:path';
12
- import { c as connectionState, A as ApiClient } from './api-Hov8p7CA.mjs';
13
- import { h as hashObject, s as startHappyServer, c as createProjectInjector } from './deterministicJson-CTEJDqtS.mjs';
14
- import { s as sharedProjectsClient } from './client-Ca5Pcgy_.mjs';
15
- import { M as MessageQueue2, r as registerKillSessionHandler } from './registerKillSessionHandler-CaqqRYq6.mjs';
16
- import { r as readSettings } from './persistence-BFUOHW5h.mjs';
17
- import { g as getInitialMachineMetadata } from './machineMetadata-BXN_bKU3.mjs';
18
- import { c as createSessionMetadata } from './createSessionMetadata-DDIChCx8.mjs';
19
- import { s as setupOfflineReconnection } from './setupOfflineReconnection-1Qlek3wl.mjs';
20
- import { c as createSessionForStartup } from './startupSessionCreate-uZ6BM0ty.mjs';
21
- import { n as notifyDaemonSessionStarted, j as reportSessionEditToDaemon } from './controlClient-DoeYovwP.mjs';
13
+ import { c as connectionState, A as ApiClient } from './api-Dr3wXL_7.mjs';
14
+ import { s as sharedProjectsClient } from './client-BKyU66lg.mjs';
15
+ import { M as MessageQueue2, r as registerKillSessionHandler } from './registerKillSessionHandler-DDCKL3wf.mjs';
16
+ import { r as readSettings } from './persistence-D2Djrf7t.mjs';
17
+ import { g as getInitialMachineMetadata } from './machineMetadata-BglCsfvf.mjs';
18
+ import { c as createSessionMetadata } from './createSessionMetadata-3WAj3_xl.mjs';
19
+ import { s as setupOfflineReconnection } from './setupOfflineReconnection-DgJK_4m1.mjs';
20
+ import { c as createSessionForStartup } from './startupSessionCreate-BfByJ16A.mjs';
21
+ import { n as notifyDaemonSessionStarted, j as reportSessionEditToDaemon } from './controlClient-CkNpT5zS.mjs';
22
22
  import { d as decodeBase64, e as encodeBase64 } from './authRelay-DhQhkBvX.mjs';
23
- import { c as claimSessionOrExit, a as applyServerSnapshot, w as withoutServerSnapshot, m as mergeReconnectMetadata } from './sessionLock-nBXdJxJm.mjs';
24
- import { r as readAcpReconnectEnv, n as normalizeAcpPermissionMode, p as piRestartNotice, w as writeSessionModeFile, a as removeSessionModeFile } from './acpSessionResume-B9l54P-X.mjs';
25
- import { S as StreamRelay } from './streamRelay-DnMCMMfV.mjs';
23
+ import { c as claimSessionOrExit, a as applyServerSnapshot, w as withoutServerSnapshot, m as mergeReconnectMetadata } from './sessionLock-JIfwCqMk.mjs';
24
+ import { r as readAcpReconnectEnv, n as normalizeAcpPermissionMode, p as piRestartNotice, w as writeSessionModeFile, a as removeSessionModeFile } from './acpSessionResume-9OLTD6kT.mjs';
25
+ import { S as StreamRelay } from './streamRelay-LcDvyEjK.mjs';
26
26
  import { p as projectPath } from './projectPath-BTBIMB57.mjs';
27
- import { B as BasePermissionHandler } from './BasePermissionHandler-26fKbRCm.mjs';
28
- import { T as TitleGenerator } from './titleGenerator-Uzbd4utr.mjs';
27
+ import { B as BasePermissionHandler } from './BasePermissionHandler-Uo-GUjbb.mjs';
28
+ import { T as TitleGenerator } from './titleGenerator-D5r06bhf.mjs';
29
29
  import { E as EditReportThrottle, e as extractAcpEditPaths } from './editPaths-BVfS_FFL.mjs';
30
30
  import 'node:child_process';
31
31
  import '@agentclientprotocol/sdk';
32
- import './time-D3ETL7Jb.mjs';
32
+ import './time-BcoJaG8E.mjs';
33
33
  import './contentLogMetadata-BlWI0egu.mjs';
34
34
  import './processTree-CP5IvQ2Z.mjs';
35
- import './package-7Ld1YMhh.mjs';
35
+ import './package-DYGwlmXl.mjs';
36
36
  import 'chalk';
37
37
  import 'node:util';
38
38
  import 'node:fs';
39
39
  import '@paralleldrive/cuid2';
40
40
  import 'zod';
41
+ import './prompt-QHuFx9j6.mjs';
42
+ import './reportProgressTool-tPxEvh6x.mjs';
43
+ import './client-CXOnzuOy.mjs';
44
+ import './precheckCompat-DeEbilbr.mjs';
45
+ import './agentGuidance-BDYt2Qy2.mjs';
46
+ import './trimIdent-BAjmv_TG.mjs';
41
47
  import 'node:os';
48
+ import './pi-CqyoZMjI.mjs';
49
+ import './fileStore-5qpetZS0.mjs';
42
50
  import 'node:fs/promises';
43
- import './pushNotifications-DCiBEVeC.mjs';
51
+ import './client-DsQcxVUV.mjs';
52
+ import './context-_YGq8xdH.mjs';
53
+ import './sessionOps-DqlftXxe.mjs';
44
54
  import 'axios';
45
- import './resources-y9jfyO-_.mjs';
46
- import './lidState-bBrmaQd2.mjs';
47
- import 'os';
48
- import 'child_process';
49
- import 'node:events';
50
55
  import 'socket.io-client';
51
- import './limits-DIo7rEBR.mjs';
52
- import './registerCommonHandlers-CTkCvjxt.mjs';
53
- import 'util';
54
- import 'fs/promises';
55
- import 'crypto';
56
- import 'path';
57
- import 'cross-spawn';
58
- import './sync-BvVhDO40.mjs';
59
56
  import './backgroundTaskActivity-8PdPxrvy.mjs';
60
- import './prompt-BOouDaTM.mjs';
61
- import './reportProgressTool-ZOCNjWHr.mjs';
62
- import './client-CnB7kRCT.mjs';
63
- import './precheckCompat-DeEbilbr.mjs';
64
- import './agentGuidance-BDYt2Qy2.mjs';
65
- import './trimIdent-BAjmv_TG.mjs';
66
- import './client-D4uPb1uu.mjs';
67
- import './context-CJGRRGWW.mjs';
68
- import './sessionOps-C58iDeD5.mjs';
69
- import './tools-Cho7iIWf.mjs';
70
- import './peerTools-BOlDRyhi.mjs';
57
+ import './resources-CH1iP6Cv.mjs';
58
+ import './tools-D2E--n1x.mjs';
59
+ import './peerTools-CK3JYu1k.mjs';
71
60
  import './ids-DU6sLx4C.mjs';
72
- import './remoteSessionClient-PP-mOKmw.mjs';
61
+ import './remoteSessionClient-B2POSKFT.mjs';
73
62
  import '@modelcontextprotocol/sdk/server/mcp.js';
74
63
  import 'node:http';
75
64
  import '@modelcontextprotocol/sdk/server/streamableHttp.js';
76
- import './downloadTarget-jbOz1egC.mjs';
65
+ import './limits-DIo7rEBR.mjs';
66
+ import './downloadTarget-CeaAXdJj.mjs';
77
67
  import './terminals-Dlg0x3nY.mjs';
78
68
  import './terminalTitleSuggest-CeKsX_V6.mjs';
79
69
  import './tmuxSocket-B8Yx20sT.mjs';
80
- import './bootstrap-Dt5I1SOl.mjs';
70
+ import './bootstrap-B6EkZh4u.mjs';
81
71
  import './webPanels-B2_C2-3g.mjs';
72
+ import './pushNotifications-DXGIhE-A.mjs';
82
73
  import './previewPath-CXN4Vag0.mjs';
74
+ import 'crypto';
75
+ import './lidState-DghbfRbr.mjs';
76
+ import 'os';
77
+ import 'child_process';
78
+ import 'node:events';
79
+ import './registerCommonHandlers-DF6bdDtd.mjs';
80
+ import 'util';
81
+ import 'fs/promises';
82
+ import 'path';
83
+ import 'cross-spawn';
84
+ import './sync-DO-2PU45.mjs';
83
85
  import 'tweetnacl';
84
86
  import './types-CkqAACXx.mjs';
85
87
  import './detectCLI-CSGMlV51.mjs';
86
88
  import 'fs';
87
- import './localHappyAgentAuth-Dn1jYDpt.mjs';
89
+ import './localHappyAgentAuth-IKmeRpuQ.mjs';
88
90
  import './processTreeSnapshot-CuLJDNC-.mjs';
89
91
  import 'url';
90
92
  import 'node:module';
@@ -104,6 +106,18 @@ function createAcpBackend(options) {
104
106
  return new AcpBackend(backendOptions);
105
107
  }
106
108
 
109
+ const SLASH_COMMAND = /^\/[A-Za-z][A-Za-z0-9_.:-]*(?:\s|$)/;
110
+ function isAgentSlashCommand(message) {
111
+ return typeof message === "string" && SLASH_COMMAND.test(message.trimStart());
112
+ }
113
+ async function buildAcpPrompt(message, opts) {
114
+ if (isAgentSlashCommand(message)) return { prompt: message, slashCommand: true };
115
+ const projected = await opts.decorate(message);
116
+ return { prompt: opts.todoNoteSent ? projected : `${projected}
117
+
118
+ ${opts.todoNote}`, slashCommand: false };
119
+ }
120
+
107
121
  const MAX_DETAIL_CHARS = 400;
108
122
  function detailOf(error) {
109
123
  if (error instanceof Error) return error.message;
@@ -910,8 +924,10 @@ async function runAcp(opts) {
910
924
  assistant: isAssistantVariant,
911
925
  ...piSteer ? { piSteer } : {},
912
926
  push: { sendAttention: (input) => api.push().sendAttention(input) },
913
- ...opts.agentName === "pi" ? { onContextUsage: (contextUsage) => {
914
- session.updateAgentState((state2) => ({ ...state2, contextUsage }));
927
+ // B-727: pi's report is resolved against models.json (pi's 128k default ≠ a configured window).
928
+ ...opts.agentName === "pi" ? { onContextUsage: (report) => {
929
+ const modelsJson = readPiModelsJson();
930
+ session.updateAgentState((state2) => ({ ...state2, contextUsage: resolvePiContextUsage(report, modelsJson, state2.contextUsage, Date.now()) }));
915
931
  } } : {}
916
932
  });
917
933
  if (opts.agentName === "pi") session.updateAgentState((state2) => ({ ...state2, contextUsage: null }));
@@ -1454,10 +1470,11 @@ async function runAcp(opts) {
1454
1470
  if (typeof batch.mode.effort === "string") {
1455
1471
  await switchEffortIfRequested(batch.mode.effort, modelChanged);
1456
1472
  }
1457
- const projected = await projectInjector.decorate(batch.message);
1458
- const prompt = todoDiscoverySent ? projected : `${projected}
1459
-
1460
- ${BUILTIN_TODO_DISCOVERY}`;
1473
+ const { prompt, slashCommand } = await buildAcpPrompt(batch.message, {
1474
+ todoNoteSent: todoDiscoverySent,
1475
+ todoNote: BUILTIN_TODO_DISCOVERY,
1476
+ decorate: (m) => projectInjector.decorate(m)
1477
+ });
1461
1478
  const attachments = batch.attachments ?? [];
1462
1479
  const staged = attachments.length ? await stageClaudeAttachments(attachments, {
1463
1480
  happyHomeDir: configuration.happyHomeDir,
@@ -1470,7 +1487,7 @@ ${BUILTIN_TODO_DISCOVERY}`;
1470
1487
  } finally {
1471
1488
  promptInFlight = false;
1472
1489
  }
1473
- todoDiscoverySent = true;
1490
+ if (!slashCommand) todoDiscoverySent = true;
1474
1491
  const stopReason = outcome && typeof outcome === "object" ? outcome.stopReason : void 0;
1475
1492
  if (stopReason === "error") {
1476
1493
  throw new Error("the turn ended with an error reported by the agent");
@@ -1,14 +1,14 @@
1
- import { q as query } from './query-ywZbQUzR.mjs';
1
+ import { q as query } from './query-CcA6DVZK.mjs';
2
2
  export { AbortError } from '@anthropic-ai/claude-agent-sdk';
3
3
  import './smallFastModel-BLNgMrwR.mjs';
4
- import './logger-BUngm5Xg.mjs';
4
+ import './logger-LFr8iPgl.mjs';
5
5
  import 'chalk';
6
6
  import 'node:util';
7
- import './configuration-PxzEJumr.mjs';
7
+ import './configuration-BPrfb17M.mjs';
8
8
  import 'node:fs';
9
9
  import 'node:os';
10
10
  import 'node:path';
11
- import './package-7Ld1YMhh.mjs';
11
+ import './package-DYGwlmXl.mjs';
12
12
  import 'node:fs/promises';
13
13
  import './processTreeSnapshot-CuLJDNC-.mjs';
14
14
  import 'node:child_process';
@@ -1,4 +1,4 @@
1
- import { p as packageJson } from './package-7Ld1YMhh.mjs';
1
+ import { p as packageJson } from './package-DYGwlmXl.mjs';
2
2
  import module$1 from 'node:module';
3
3
  import { existsSync } from 'node:fs';
4
4
  import { readdir, rm } from 'node:fs/promises';
@@ -57,10 +57,10 @@ async function pruneStaleCompileCaches(happyHomeDir, cliVersion) {
57
57
  async function run(args) {
58
58
  enableCompileCacheIfPossible(packageJson.version);
59
59
  if (isStandaloneVersionRequest(args) || isSelfCheckRequest(args)) {
60
- const { selfCheckMain } = await import('./selfCheck-Smt-5Xiq.mjs');
60
+ const { selfCheckMain } = await import('./selfCheck-NamtBHVB.mjs');
61
61
  process.exit(await selfCheckMain({ verbose: isSelfCheckRequest(args) }));
62
62
  }
63
- const { main } = await import('./main-DGkdYfEq.mjs');
63
+ const { main } = await import('./main-_1LSzlLv.mjs');
64
64
  await main();
65
65
  }
66
66
  void run(process.argv.slice(2));
@@ -1,16 +1,16 @@
1
1
  'use strict';
2
2
 
3
- var query = require('./query-BETKBrnz.cjs');
3
+ var query = require('./query-CdCxzuaB.cjs');
4
4
  var claudeAgentSdk = require('@anthropic-ai/claude-agent-sdk');
5
5
  require('./smallFastModel-D_uxGMo3.cjs');
6
- require('./logger-CphW5nUE.cjs');
6
+ require('./logger-DgBwUSgS.cjs');
7
7
  require('chalk');
8
8
  require('node:util');
9
- require('./configuration-CYO-kPOS.cjs');
9
+ require('./configuration-C8JgseHy.cjs');
10
10
  require('node:fs');
11
11
  require('node:os');
12
12
  require('node:path');
13
- require('./package-KhLqBDX9.cjs');
13
+ require('./package-NoD8QOOM.cjs');
14
14
  require('node:fs/promises');
15
15
  require('./processTreeSnapshot-mDbnuojn.cjs');
16
16
  require('node:child_process');
package/dist/index.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- require('./package-KhLqBDX9.cjs');
4
- require('./index-F2UejqYs.cjs');
3
+ require('./package-NoD8QOOM.cjs');
4
+ require('./index-BRMq9gOe.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-7Ld1YMhh.mjs';
2
- import './index-wCbtF4BK.mjs';
1
+ import './package-DYGwlmXl.mjs';
2
+ import './index-hQ8LP1C2.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-y9jfyO-_.mjs';
4
+ import { T as TEAM_SKILL } from './resources-CH1iP6Cv.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-CvIlkzpP.cjs');
6
+ var resources = require('./resources-BPyN59Iv.cjs');
7
7
 
8
8
  const AUTOMATION_SKILL = `---
9
9
  name: very-happy-automations
@@ -1,15 +1,15 @@
1
- import { l as logger } from './logger-BUngm5Xg.mjs';
1
+ import { l as logger } from './logger-LFr8iPgl.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-PxzEJumr.mjs';
8
+ import './configuration-BPrfb17M.mjs';
9
9
  import 'node:fs';
10
10
  import 'node:os';
11
11
  import 'node:path';
12
- import './package-7Ld1YMhh.mjs';
12
+ import './package-DYGwlmXl.mjs';
13
13
  import 'node:fs/promises';
14
14
 
15
15
  const PLIST_LABEL = "com.happy-cli.daemon";
@@ -1,17 +1,17 @@
1
1
  'use strict';
2
2
 
3
- var logger = require('./logger-CphW5nUE.cjs');
3
+ var logger = require('./logger-DgBwUSgS.cjs');
4
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-CYO-kPOS.cjs');
10
+ require('./configuration-C8JgseHy.cjs');
11
11
  require('node:fs');
12
12
  require('node:os');
13
13
  require('node:path');
14
- require('./package-KhLqBDX9.cjs');
14
+ require('./package-NoD8QOOM.cjs');
15
15
  require('node:fs/promises');
16
16
 
17
17
  const PLIST_LABEL = "com.happy-cli.daemon";
package/dist/lib.cjs CHANGED
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var api = require('./api-DM7b1OKj.cjs');
4
- var logger = require('./logger-CphW5nUE.cjs');
5
- var configuration = require('./configuration-CYO-kPOS.cjs');
3
+ var api = require('./api-COHFAkb_.cjs');
4
+ var logger = require('./logger-DgBwUSgS.cjs');
5
+ var configuration = require('./configuration-C8JgseHy.cjs');
6
6
  var types = require('./types-CRS-srZK.cjs');
7
7
  require('axios');
8
- require('./lidState-DWGnm2H4.cjs');
8
+ require('./lidState-x8cJ8J_9.cjs');
9
9
  require('./authRelay-Dy1qU9td.cjs');
10
10
  require('node:crypto');
11
11
  require('tweetnacl');
@@ -13,14 +13,14 @@ require('os');
13
13
  require('child_process');
14
14
  require('node:events');
15
15
  require('socket.io-client');
16
- require('./pushNotifications-DI92havG.cjs');
16
+ require('./pushNotifications-BXoOSq_G.cjs');
17
17
  require('zod');
18
- require('./index-Dv0Q48P3.cjs');
18
+ require('./index-Df2eHm3O.cjs');
19
19
  require('@paralleldrive/cuid2');
20
20
  require('./contentLogMetadata-ZSFk_NjQ.cjs');
21
21
  require('./limits-C-a7gr04.cjs');
22
- require('./time-Cjv0zxQO.cjs');
23
- require('./registerCommonHandlers-C7a_dUWs.cjs');
22
+ require('./time-nqa9shu8.cjs');
23
+ require('./registerCommonHandlers-CRjBoJLK.cjs');
24
24
  require('util');
25
25
  require('fs/promises');
26
26
  require('crypto');
@@ -28,17 +28,17 @@ require('path');
28
28
  require('cross-spawn');
29
29
  require('./projectPath-C3ioB4Bu.cjs');
30
30
  require('url');
31
- require('./sync-Bn-idAoy.cjs');
31
+ require('./sync-1hQ5KHpL.cjs');
32
32
  require('./backgroundTaskActivity-CBvUdj39.cjs');
33
- require('./controlClient-Bqv5v5OM.cjs');
34
- require('./persistence-9BMYspxG.cjs');
33
+ require('./controlClient-D68Zj7Q-.cjs');
34
+ require('./persistence-BY-D00wT.cjs');
35
35
  require('node:fs/promises');
36
36
  require('node:fs');
37
37
  require('chalk');
38
38
  require('node:util');
39
39
  require('node:path');
40
40
  require('node:os');
41
- require('./package-KhLqBDX9.cjs');
41
+ require('./package-NoD8QOOM.cjs');
42
42
 
43
43
 
44
44