very-happy-cli 0.2.203 → 0.2.205

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 (222) hide show
  1. package/dist/{AcpBackend-CAMuhS0Z.mjs → AcpBackend-BqkDMgcN.mjs} +3 -3
  2. package/dist/{AcpBackend-DReFgpYD.cjs → AcpBackend-Do37yiZg.cjs} +3 -3
  3. package/dist/{AcpSessionManager-BZKM-sCt.cjs → AcpSessionManager-BpQKu2_m.cjs} +2 -2
  4. package/dist/{AcpSessionManager-CJOxMFCF.mjs → AcpSessionManager-CvEO7Yex.mjs} +2 -2
  5. package/dist/{BasePermissionHandler-BgX73mQ5.mjs → BasePermissionHandler-BpaIn9ko.mjs} +1 -1
  6. package/dist/{BasePermissionHandler-BBR9Gkob.cjs → BasePermissionHandler-CUXi-tq4.cjs} +1 -1
  7. package/dist/{account-hy0rztXY.mjs → account-C1nsl3ij.mjs} +11 -11
  8. package/dist/{account-41PkJ9nx.cjs → account-SwG5Yefp.cjs} +11 -11
  9. package/dist/{accountService-DEpIq6CF.mjs → accountService-CqrWNH8K.mjs} +4 -4
  10. package/dist/{accountService-Cns8UYGI.cjs → accountService-SOeB_21A.cjs} +4 -4
  11. package/dist/{acpSessionResume-DmOPXKpC.cjs → acpSessionResume-BCEol11N.cjs} +1 -1
  12. package/dist/{acpSessionResume-5El4xksf.mjs → acpSessionResume-DvDKsJTV.mjs} +1 -1
  13. package/dist/{agentHome-BXaVMqHX.cjs → agentHome-8wzmbm0H.cjs} +4 -4
  14. package/dist/{agentHome-DUxArmak.mjs → agentHome-BuFxooEg.mjs} +4 -4
  15. package/dist/{api-D8ZDxBWw.mjs → api-20GbdpxY.mjs} +107 -18
  16. package/dist/{api-ChhFBuB0.cjs → api-BnTF8fkj.cjs} +107 -18
  17. package/dist/{apiMachine-qav2pnk5.mjs → apiMachine-C8NGJHHd.mjs} +105 -21
  18. package/dist/{apiMachine-MPwddFXq.cjs → apiMachine-cyDRM_S-.cjs} +105 -21
  19. package/dist/{attachmentContent-f5gwnv9J.cjs → attachmentContent-B7zz_LPF.cjs} +2 -2
  20. package/dist/{attachmentContent-BfSQxccA.mjs → attachmentContent-Coo9lUxK.mjs} +2 -2
  21. package/dist/{auth-BxNuFv_0.mjs → auth-75rP3vc0.mjs} +8 -8
  22. package/dist/{auth-xW7SDE_7.mjs → auth-BX6xrdHv.mjs} +5 -5
  23. package/dist/{auth-thi2T_T8.cjs → auth-By6u_iKB.cjs} +5 -5
  24. package/dist/{auth-DkPAHXLj.cjs → auth-w4UTRbIf.cjs} +8 -8
  25. package/dist/{auto-DmXTwayU.mjs → auto-BhmWtRvv.mjs} +18 -18
  26. package/dist/{auto-BiRlQ4tm.cjs → auto-xr_gqUoy.cjs} +18 -18
  27. package/dist/{bootstrap-EGhaCmXy.cjs → bootstrap-3ti7LXMz.cjs} +2 -2
  28. package/dist/{bootstrap-pGaFGbWO.mjs → bootstrap-Dn_VvHSt.mjs} +2 -2
  29. package/dist/{browser-DSxpOnPb.cjs → browser-C4PVyjGe.cjs} +1 -1
  30. package/dist/{browser-BYSYzXvP.mjs → browser-C4wWGXH7.mjs} +1 -1
  31. package/dist/{claudeAccountEnv-Btp39mfa.cjs → claudeAccountEnv-BTZjHTpF.cjs} +1 -1
  32. package/dist/{claudeAccountEnv-DowsOlDB.mjs → claudeAccountEnv-C6Wl-ZbT.mjs} +1 -1
  33. package/dist/{claudeLocal-bDarWqaU.mjs → claudeLocal-B8rOA-EB.mjs} +5 -5
  34. package/dist/{claudeLocal-ClqHmkk6.cjs → claudeLocal-DZALKVVc.cjs} +5 -5
  35. package/dist/{claudeLocalLauncher-Bxi0_eW9.cjs → claudeLocalLauncher-Bf5uj0EA.cjs} +10 -10
  36. package/dist/{claudeLocalLauncher-Ccpj2KgW.mjs → claudeLocalLauncher-CJPRSv3z.mjs} +10 -10
  37. package/dist/claudeLongContext-BR_zdjUp.cjs +239 -0
  38. package/dist/claudeLongContext-CZ60xo5p.mjs +219 -0
  39. package/dist/{claudeSessionFork-Cize0Y2T.mjs → claudeSessionFork-BK4U655i.mjs} +1 -1
  40. package/dist/{claudeSessionFork-nyNFjgaf.cjs → claudeSessionFork-unEBLW0t.cjs} +1 -1
  41. package/dist/{client-Cddb1dhi.cjs → client-BKjBr6pc.cjs} +2 -2
  42. package/dist/{client-Wr_BiOon.mjs → client-BbYds4AV.mjs} +16 -7
  43. package/dist/{client-CMKgB-76.cjs → client-Bh-y6cVc.cjs} +16 -7
  44. package/dist/{client-DO8DNDC3.mjs → client-BxtaglBR.mjs} +2 -2
  45. package/dist/{client-CgMVIP7v.mjs → client-CvLm25Wq.mjs} +2 -2
  46. package/dist/{client-6Y6O72Uq.cjs → client-DGsdLx8L.cjs} +2 -2
  47. package/dist/{client-CX8kRedW.mjs → client-m-K1b6Qa.mjs} +3 -3
  48. package/dist/{client-DP8FabOE.cjs → client-wMlUPnrV.cjs} +3 -3
  49. package/dist/codex/happyMcpStdioBridge.cjs +20 -19
  50. package/dist/codex/happyMcpStdioBridge.mjs +20 -19
  51. package/dist/{codexAccount-CieIQLOX.mjs → codexAccount-BPQ-lPhH.mjs} +1 -1
  52. package/dist/{codexAccount-D-OBY29W.cjs → codexAccount-BjaHvmKH.cjs} +1 -1
  53. package/dist/{codexAppServerClient-EzrHWYhX.cjs → codexAppServerClient-6aQelpRl.cjs} +3 -3
  54. package/dist/{codexAppServerClient-D-cD2Dfj.mjs → codexAppServerClient-BeRimnu9.mjs} +3 -3
  55. package/dist/{codexCommand-BMcXtvU3.cjs → codexCommand-CYVaGmhh.cjs} +67 -56
  56. package/dist/{codexCommand-D79GnRhB.mjs → codexCommand-CmGNDs45.mjs} +67 -56
  57. package/dist/{codexTermination-CF6xiFbb.cjs → codexTermination-B09HyYIB.cjs} +1 -1
  58. package/dist/{codexTermination-CK1MYJT7.mjs → codexTermination-Z18pGkkl.mjs} +1 -1
  59. package/dist/{config-Crn1mNgr.mjs → config-4b-sF37g.mjs} +3 -3
  60. package/dist/{config-F6zSRyk2.cjs → config-Dq_N615Z.cjs} +3 -3
  61. package/dist/{configuration-Cl9kOv09.cjs → configuration-Fx61b4MJ.cjs} +1 -1
  62. package/dist/{configuration-i9MVy0a5.mjs → configuration-H8q1sMwk.mjs} +1 -1
  63. package/dist/{connect-CiA13Xm4.mjs → connect-BwSwKPzI.mjs} +13 -13
  64. package/dist/{connect-ClklWmnI.cjs → connect-D54AnDIT.cjs} +13 -13
  65. package/dist/{context-DvdZsGgl.mjs → context-CM1Xd_HO.mjs} +1 -1
  66. package/dist/{context-BxODP3mG.cjs → context-D-QOcYuX.cjs} +1 -1
  67. package/dist/{controlClient-DxCQKfqe.cjs → controlClient-D04wXKoQ.cjs} +12 -3
  68. package/dist/{controlClient-D6vqMUfi.mjs → controlClient-D9DYqW02.mjs} +12 -4
  69. package/dist/{createSessionMetadata-BuAVB-xI.mjs → createSessionMetadata-CHa4pufa.mjs} +2 -2
  70. package/dist/{createSessionMetadata-B_NZvmhm.cjs → createSessionMetadata-Ce539QXK.cjs} +2 -2
  71. package/dist/{daemonAccounts-ciidbU2h.cjs → daemonAccounts-BOoI7-sw.cjs} +2 -2
  72. package/dist/{daemonAccounts-D5shoCLt.mjs → daemonAccounts-BtkmoJmC.mjs} +3 -3
  73. package/dist/{defaultPermissionMode-DgeiMMqy.mjs → defaultPermissionMode-CYQi7vqJ.mjs} +1 -1
  74. package/dist/{defaultPermissionMode-Cs_Tv83b.cjs → defaultPermissionMode-DmLYaaL8.cjs} +1 -1
  75. package/dist/{deterministicJson-B9XrEawW.mjs → deterministicJson-BEeXnWCF.mjs} +62 -20
  76. package/dist/{deterministicJson-kM2OdGZu.cjs → deterministicJson-D34CnNHO.cjs} +61 -19
  77. package/dist/{doctor-HHS4YegX.mjs → doctor-BI0Iywt_.mjs} +7 -7
  78. package/dist/{doctor-DiPRqsqg.cjs → doctor-BX8oWKZq.cjs} +7 -7
  79. package/dist/{downloadTarget-Cd8hx54t.mjs → downloadTarget-DX3m00OE.mjs} +6 -6
  80. package/dist/{downloadTarget-osB-mGh0.cjs → downloadTarget-TzXJEh6W.cjs} +6 -6
  81. package/dist/{ensureDaemonRunning-C0iDtuL7.mjs → ensureDaemonRunning-BBBqZ6vQ.mjs} +5 -5
  82. package/dist/{ensureDaemonRunning-CtBvPHVB.cjs → ensureDaemonRunning-Bvu-yyFn.cjs} +5 -5
  83. package/dist/exitNotice-M4UjtWkr.cjs +95 -0
  84. package/dist/exitNotice-gOAdDcL3.mjs +84 -0
  85. package/dist/{forkBackfill-DYIjlN1Z.mjs → forkBackfill-C9EfJ64O.mjs} +28 -2
  86. package/dist/{forkBackfill-8eLDeS73.cjs → forkBackfill-D2WW91fz.cjs} +28 -1
  87. package/dist/{format-B5V7ie8N.cjs → format-BEktLc45.cjs} +1 -1
  88. package/dist/{format-Dc5zMslz.mjs → format-BPAREVhi.mjs} +1 -1
  89. package/dist/{handleResumeCommand-vcD2qcAM.cjs → handleResumeCommand-6dYW_WOi.cjs} +5 -5
  90. package/dist/{handleResumeCommand-xrOAA1qI.mjs → handleResumeCommand-DziiqogX.mjs} +5 -5
  91. package/dist/{index-iFVMrlPo.mjs → index-BRq5iitn.mjs} +4 -4
  92. package/dist/{index-44o_qMvE.cjs → index-BYL_X3gP.cjs} +27 -6
  93. package/dist/{index-AyDwQ6FG.cjs → index-BmacwzcK.cjs} +45 -44
  94. package/dist/{index-D0rCXp-e.cjs → index-Cawt-fgZ.cjs} +4 -4
  95. package/dist/{index-C_ePuQwB.cjs → index-CoW4RNEb.cjs} +3 -3
  96. package/dist/{index-B7pKBIcn.mjs → index-CzBvl9py.mjs} +3 -3
  97. package/dist/{index-DIKJMfs2.mjs → index-DCvq8Cfw.mjs} +4 -4
  98. package/dist/{index-CiRMvS73.mjs → index-DWk-WTU-.mjs} +24 -7
  99. package/dist/{index-B7CXMlrz.mjs → index-UuWDafdi.mjs} +46 -45
  100. package/dist/{index-Cl-WkB_6.cjs → index-bVMcFi7v.cjs} +4 -4
  101. package/dist/index.cjs +2 -2
  102. package/dist/index.mjs +2 -2
  103. package/dist/{install-yqS4y1cm.mjs → install-B4OVUIw5.mjs} +3 -3
  104. package/dist/{install-BgBgsOlS.cjs → install-BQc4Hwuo.cjs} +3 -3
  105. package/dist/{issue-D7liK6bR.cjs → issue-WpLZYxUQ.cjs} +8 -8
  106. package/dist/{issue-aKZd7J55.mjs → issue-h_BIrzLs.mjs} +8 -8
  107. package/dist/lib.cjs +12 -12
  108. package/dist/lib.d.cts +42 -1
  109. package/dist/lib.d.mts +42 -1
  110. package/dist/lib.mjs +12 -12
  111. package/dist/{localHappyAgentAuth-Dm9obisi.cjs → localHappyAgentAuth-DQRWBUxQ.cjs} +1 -1
  112. package/dist/{localHappyAgentAuth-B2JJxlE9.mjs → localHappyAgentAuth-DgLh3xzW.mjs} +1 -1
  113. package/dist/{logger-BiKmiREe.mjs → logger-BKAKIZdy.mjs} +2 -2
  114. package/dist/{logger-BtWBoP60.cjs → logger-DP35yx-C.cjs} +2 -2
  115. package/dist/{machineMetadata-C0-LyMsb.cjs → machineMetadata-CZj0XwM_.cjs} +3 -3
  116. package/dist/{machineMetadata-CiyO9wm-.mjs → machineMetadata-DTlMMhj_.mjs} +3 -3
  117. package/dist/{main-BP2TBnp5.mjs → main-BIE1zeaH.mjs} +48 -48
  118. package/dist/{main-C7hKf5hG.cjs → main-l_nP9IQq.cjs} +48 -48
  119. package/dist/{mcp-Cn4k-PXb.mjs → mcp-B5F6-_7o.mjs} +20 -18
  120. package/dist/{mcp-DO00rr9n.cjs → mcp-KQHODyR3.cjs} +20 -18
  121. package/dist/{mirrorProtocol-DDtEN49F.mjs → mirrorProtocol-DDOUSWqL.mjs} +3 -3
  122. package/dist/{mirrorProtocol-DwO8QgLM.cjs → mirrorProtocol-duXHJeBW.cjs} +3 -3
  123. package/dist/{package-Djdgx8nb.cjs → package-BCJfNMlt.cjs} +7 -7
  124. package/dist/{package-CIW5lwaN.mjs → package-CMmhJwSf.mjs} +7 -7
  125. package/dist/{panels-BpfVEvwF.mjs → panels-BWxZMb_x.mjs} +5 -5
  126. package/dist/{panels-DMLtEOtJ.cjs → panels-CBlIJIu8.cjs} +5 -5
  127. package/dist/{peerTools-fYuKq3ev.cjs → peerTools-C6Y28jqG.cjs} +5 -5
  128. package/dist/{peerTools-CQ60fUPp.mjs → peerTools-ZJzoM48N.mjs} +5 -5
  129. package/dist/{persistence-D_zVC4Xz.mjs → persistence-dLgWDclq.mjs} +2 -2
  130. package/dist/{persistence-BOEZtiKb.cjs → persistence-iiVFxhbt.cjs} +2 -2
  131. package/dist/{piRunnerArgs-DE_YXvS1.mjs → piRunnerArgs-DuWYye4f.mjs} +1 -1
  132. package/dist/{piRunnerArgs-Dz9P62db.cjs → piRunnerArgs-DxWxgOSZ.cjs} +1 -1
  133. package/dist/{piRuntime-Du62fjeU.cjs → piRuntime-6UnkPaS1.cjs} +1 -1
  134. package/dist/{piRuntime-8SbpRmNA.mjs → piRuntime-Cbwk6bN0.mjs} +1 -1
  135. package/dist/{piTerminal-CGAw7WDW.cjs → piTerminal-BaoUqlM0.cjs} +22 -20
  136. package/dist/{piTerminal-Cl45kac0.mjs → piTerminal-Dn0qN9nb.mjs} +22 -20
  137. package/dist/{pushNotifications-RVpbqrxR.mjs → pushNotifications-DD9Z0CoN.mjs} +17 -3
  138. package/dist/{pushNotifications-B19lT5mY.cjs → pushNotifications-gcQv61e6.cjs} +17 -3
  139. package/dist/{query-CNWdX2r5.cjs → query-12momZSq.cjs} +1 -1
  140. package/dist/{query-DBRR3TOO.mjs → query-CFdlRD7b.mjs} +1 -1
  141. package/dist/{rateLimitWindows-DX5y23x_.mjs → rateLimitWindows-CVS-btq-.mjs} +1 -1
  142. package/dist/{rateLimitWindows-mfdokrkQ.cjs → rateLimitWindows-D2Gmg7jU.cjs} +1 -1
  143. package/dist/{reconnectGate-B8ltzSJD.cjs → reconnectGate-BkSaZdIx.cjs} +1 -1
  144. package/dist/{reconnectGate-DSxYUCWy.mjs → reconnectGate-m81ySKhh.mjs} +1 -1
  145. package/dist/{registerCommonHandlers-Y2siJGwL.cjs → registerCommonHandlers-B5p3ZZmp.cjs} +2 -2
  146. package/dist/{registerCommonHandlers-CQDRKlkG.mjs → registerCommonHandlers-CqLHkmG2.mjs} +2 -2
  147. package/dist/{registerKillSessionHandler-B0pMZOdH.cjs → registerKillSessionHandler-Bf_Q9yii.cjs} +6 -6
  148. package/dist/{registerKillSessionHandler-U4Dxtohy.mjs → registerKillSessionHandler-jYSuGIP1.mjs} +6 -6
  149. package/dist/{registerSideQuestionHandler-DM1QqTxf.mjs → registerSideQuestionHandler-CPR29B9d.mjs} +4 -4
  150. package/dist/{registerSideQuestionHandler--ruKhCdY.cjs → registerSideQuestionHandler-DSIw3xPW.cjs} +4 -4
  151. package/dist/{remoteSessionClient-T-Raoiy6.mjs → remoteSessionClient-CLuxs0_y.mjs} +5 -5
  152. package/dist/{remoteSessionClient-CjINaEs_.cjs → remoteSessionClient-DX-60nto.cjs} +5 -5
  153. package/dist/{reportProgressTool-DDfL1OY7.cjs → reportProgressTool-D1XAxeY1.cjs} +5 -5
  154. package/dist/{reportProgressTool-Stg0xrjF.mjs → reportProgressTool-k3g3D6cX.mjs} +5 -5
  155. package/dist/{run-Dq48xBtw.mjs → run-BBJqaIoY.mjs} +200 -55
  156. package/dist/{run-BoSVfVCZ.cjs → run-DOb_agpA.cjs} +200 -55
  157. package/dist/{runClaude-D8ScJdJU.cjs → runClaude-BU3Lrd5o.cjs} +53 -38
  158. package/dist/{runClaude-CJe5atrS.mjs → runClaude-NTvReMNp.mjs} +44 -29
  159. package/dist/{runClaudeDeps-4RFRR4cY.cjs → runClaudeDeps-DQV-QdDi.cjs} +129 -61
  160. package/dist/{runClaudeDeps-CL3goCXG.mjs → runClaudeDeps-Dh2LVY2w.mjs} +125 -57
  161. package/dist/{runGemini-DZv6jPxV.mjs → runGemini-CGD4bqQ3.mjs} +36 -35
  162. package/dist/{runGemini-BcbNxgsA.cjs → runGemini-dk877ztP.cjs} +36 -35
  163. package/dist/{runOpenClaw-CRqCoj-_.mjs → runOpenClaw-6MAJ_tHi.mjs} +18 -18
  164. package/dist/{runOpenClaw-BeSivE0X.cjs → runOpenClaw-CQakHPPq.cjs} +18 -18
  165. package/dist/{sandbox-xflHChws.cjs → sandbox-8DeDre0R.cjs} +4 -4
  166. package/dist/{sandbox-DAvJJZcV.mjs → sandbox-B3YMD9I6.mjs} +4 -4
  167. package/dist/selfCheck-BCKIF6ST.mjs +89 -0
  168. package/dist/{selfCheck-DZwdgBg0.cjs → selfCheck-BpvUNBmv.cjs} +40 -40
  169. package/dist/{send-ConAuYqL.cjs → send-Bym_IU4n.cjs} +8 -8
  170. package/dist/{send-Co_l_Nmg.mjs → send-DgrbVZzC.mjs} +8 -8
  171. package/dist/{server-by6kezmM.cjs → server-BY-FubRe.cjs} +6 -6
  172. package/dist/{server-D1Qrmxl7.mjs → server-CmAgeEhS.mjs} +4 -4
  173. package/dist/{sessionLock-DFrwAnwR.mjs → sessionLock-BMtAQ4bW.mjs} +21 -4
  174. package/dist/{sessionLock-Db_uQcUP.cjs → sessionLock-WXtjQC9q.cjs} +22 -3
  175. package/dist/{sessionOps-CptDjoZi.cjs → sessionOps-BEVzE38e.cjs} +4 -4
  176. package/dist/{sessionOps-C7nps7qG.mjs → sessionOps-BxLhHEhM.mjs} +4 -4
  177. package/dist/{sessionProvider-BaJq1AnY.mjs → sessionProvider-B1tL5K5f.mjs} +10 -10
  178. package/dist/{sessionProvider-D9nsAE14.cjs → sessionProvider-DCnZFxwe.cjs} +10 -10
  179. package/dist/{sessionScanner-BOb33NVJ.mjs → sessionScanner-Ctm9w-AJ.mjs} +3 -3
  180. package/dist/{sessionScanner-C6OVO0Ne.cjs → sessionScanner-eX2f-j0u.cjs} +3 -3
  181. package/dist/{sessions-qVHDXJa6.cjs → sessions-BG8r7uht.cjs} +10 -10
  182. package/dist/{sessions-GCql_3Dl.mjs → sessions-BuxOqRcc.mjs} +10 -10
  183. package/dist/{setupOfflineReconnection-B8QKqc9a.cjs → setupOfflineReconnection-65k1yEFn.cjs} +2 -2
  184. package/dist/{setupOfflineReconnection-lu0YbS7m.mjs → setupOfflineReconnection-Dd4NCN9i.mjs} +2 -2
  185. package/dist/{spawn-tL-724RS.cjs → spawn-0YaC-DQg.cjs} +15 -15
  186. package/dist/{spawn-C9NSlg99.mjs → spawn-wys_MPgK.mjs} +15 -15
  187. package/dist/{spawnAgents-BclZYkov.mjs → spawnAgents-CcFKtKdX.mjs} +2 -1
  188. package/dist/{spawnAgents-DvbEDCIq.cjs → spawnAgents-D4lR468W.cjs} +2 -1
  189. package/dist/{spawnHappyCLI-D7EO8s4E.cjs → spawnHappyCLI-Bf_N42fi.cjs} +1 -1
  190. package/dist/{spawnHappyCLI-jXUKLUT5.mjs → spawnHappyCLI-EvPb0jB3.mjs} +1 -1
  191. package/dist/{startFileWatcher-C7eFs4hA.mjs → startFileWatcher-GF4BNFA1.mjs} +1 -1
  192. package/dist/{startFileWatcher-6NpLGxg5.cjs → startFileWatcher-ikipjpDk.cjs} +1 -1
  193. package/dist/{startupSessionCreate-C5wdvraY.cjs → startupSessionCreate-CHU23k6u.cjs} +3 -3
  194. package/dist/{startupSessionCreate-D3ph1DtL.mjs → startupSessionCreate-Dp3_kvi_.mjs} +3 -3
  195. package/dist/{store-Cpb1LMNW.cjs → store-DGMILdMn.cjs} +1 -1
  196. package/dist/{store-DWmjM4Ex.mjs → store-Fge1h9wy.mjs} +1 -1
  197. package/dist/{streamRelay-DdGOsW8v.mjs → streamRelay-MaaYNNuh.mjs} +1 -1
  198. package/dist/{streamRelay-4XiiNB3N.cjs → streamRelay-keuifCPQ.cjs} +1 -1
  199. package/dist/{sync-BIXH8ijr.mjs → sync-Co0wRhGu.mjs} +1 -1
  200. package/dist/{sync-ni64k2OI.cjs → sync-Dm6GaS8P.cjs} +1 -1
  201. package/dist/{systemPrompt-B_vnlIr1.mjs → systemPrompt-5cZbY0sf.mjs} +2 -2
  202. package/dist/{systemPrompt-DuoULaqr.cjs → systemPrompt-Ds7HcfDZ.cjs} +2 -2
  203. package/dist/{teams-CsR_8p3Q.mjs → teams-DBWFUOC3.mjs} +20 -9
  204. package/dist/{teams-DLfcbOMh.cjs → teams-nrcZL-1X.cjs} +20 -9
  205. package/dist/{template-3fV9bi0X.cjs → template-ChUotPTL.cjs} +1 -1
  206. package/dist/{template-CtRLg2PG.mjs → template-D8fzlO58.mjs} +1 -1
  207. package/dist/{time-Che8GhII.mjs → time-Cn0mV-di.mjs} +1 -1
  208. package/dist/{time-BMCY7zJL.cjs → time-NSglRbyr.cjs} +1 -1
  209. package/dist/{titleGenerator-HVEN1e7o.cjs → titleGenerator-CMIUB04_.cjs} +3 -3
  210. package/dist/{titleGenerator-B9LckLDq.mjs → titleGenerator-hmxUR3rU.mjs} +2 -2
  211. package/dist/{todo-bc7db5NN.mjs → todo-CDdBityL.mjs} +8 -8
  212. package/dist/{todo-B8byb_cy.cjs → todo-D5BoNMb7.cjs} +8 -8
  213. package/dist/{tools-BAMaBbbP.mjs → tools-BmQbzAfY.mjs} +1 -1
  214. package/dist/{tools--RN1SFkD.cjs → tools-CLkNfafW.cjs} +1 -1
  215. package/dist/{uninstall-UC0Q8YTj.cjs → uninstall-DCx_qNMZ.cjs} +3 -3
  216. package/dist/{uninstall-Dv4C-W9z.mjs → uninstall-DE0SH2qs.mjs} +3 -3
  217. package/dist/{wrapperAccount-nGGMJDBF.cjs → wrapperAccount-BHMM9I6g.cjs} +2 -2
  218. package/dist/{wrapperAccount-z8Swrd08.mjs → wrapperAccount-CwaA-n1S.mjs} +2 -2
  219. package/package.json +7 -7
  220. package/dist/permissionMode-CH4FoZfU.mjs +0 -80
  221. package/dist/permissionMode-CrV-XuMs.cjs +0 -87
  222. package/dist/selfCheck-BKOIROoJ.mjs +0 -89
@@ -3,12 +3,12 @@
3
3
  var chalk = require('chalk');
4
4
  var os = require('os');
5
5
  var require$$1 = require('path');
6
- var persistence = require('./persistence-BOEZtiKb.cjs');
7
- var api = require('./api-ChhFBuB0.cjs');
8
- var configuration = require('./configuration-Cl9kOv09.cjs');
6
+ var persistence = require('./persistence-iiVFxhbt.cjs');
7
+ var api = require('./api-BnTF8fkj.cjs');
8
+ var configuration = require('./configuration-Fx61b4MJ.cjs');
9
9
  var http = require('http');
10
10
  var require$$3 = require('crypto');
11
- var browser = require('./browser-DSxpOnPb.cjs');
11
+ var browser = require('./browser-C4PVyjGe.cjs');
12
12
  var child_process = require('child_process');
13
13
  var util = require('util');
14
14
  require('node:fs/promises');
@@ -17,29 +17,29 @@ require('zod');
17
17
  require('./authRelay-Dy1qU9td.cjs');
18
18
  require('node:crypto');
19
19
  require('tweetnacl');
20
- require('./logger-BtWBoP60.cjs');
20
+ require('./logger-DP35yx-C.cjs');
21
21
  require('node:util');
22
22
  require('node:path');
23
23
  require('axios');
24
- require('./pushNotifications-B19lT5mY.cjs');
25
- require('./index-44o_qMvE.cjs');
24
+ require('./pushNotifications-gcQv61e6.cjs');
25
+ require('./index-BYL_X3gP.cjs');
26
26
  require('@paralleldrive/cuid2');
27
27
  require('./contentLogMetadata-ZSFk_NjQ.cjs');
28
- require('./reconnectGate-B8ltzSJD.cjs');
28
+ require('./reconnectGate-BkSaZdIx.cjs');
29
29
  require('node:events');
30
30
  require('socket.io-client');
31
31
  require('./limits-C-a7gr04.cjs');
32
- require('./time-BMCY7zJL.cjs');
33
- require('./registerCommonHandlers-Y2siJGwL.cjs');
32
+ require('./time-NSglRbyr.cjs');
33
+ require('./registerCommonHandlers-B5p3ZZmp.cjs');
34
34
  require('fs/promises');
35
35
  require('cross-spawn');
36
36
  require('./projectPath-C3ioB4Bu.cjs');
37
37
  require('url');
38
- require('./sync-ni64k2OI.cjs');
38
+ require('./sync-Dm6GaS8P.cjs');
39
39
  require('./backgroundTaskActivity-CBvUdj39.cjs');
40
- require('./controlClient-DxCQKfqe.cjs');
40
+ require('./controlClient-D04wXKoQ.cjs');
41
41
  require('node:os');
42
- require('./package-Djdgx8nb.cjs');
42
+ require('./package-BCJfNMlt.cjs');
43
43
  require('open');
44
44
 
45
45
  const CLIENT_ID$2 = "app_EMoamEEZ73f0CkXaXp7hrann";
@@ -3,7 +3,7 @@ import { constants } from 'node:fs';
3
3
  import { isAbsolute, join, dirname } from 'node:path';
4
4
  import { randomUUID } from 'node:crypto';
5
5
  import { z } from 'zod';
6
- import { n as normalizeHttpEndpoint, c as configuration } from './configuration-i9MVy0a5.mjs';
6
+ import { n as normalizeHttpEndpoint, c as configuration } from './configuration-H8q1sMwk.mjs';
7
7
 
8
8
  const TeamScopeSchema = z.object({
9
9
  serverUrl: z.string(),
@@ -5,7 +5,7 @@ var node_fs = require('node:fs');
5
5
  var path = require('node:path');
6
6
  var node_crypto = require('node:crypto');
7
7
  var z = require('zod');
8
- var configuration = require('./configuration-Cl9kOv09.cjs');
8
+ var configuration = require('./configuration-Fx61b4MJ.cjs');
9
9
 
10
10
  const TeamScopeSchema = z.z.object({
11
11
  serverUrl: z.z.string(),
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var logger = require('./logger-BtWBoP60.cjs');
4
- var persistence = require('./persistence-BOEZtiKb.cjs');
5
- var configuration = require('./configuration-Cl9kOv09.cjs');
3
+ var logger = require('./logger-DP35yx-C.cjs');
4
+ var persistence = require('./persistence-iiVFxhbt.cjs');
5
+ var configuration = require('./configuration-Fx61b4MJ.cjs');
6
6
 
7
7
  function daemonControlHeaders(controlToken) {
8
8
  return {
@@ -132,6 +132,14 @@ async function restartDaemonSession(sessionId) {
132
132
  if (result?.success === true && typeof result.sessionId === "string") return { success: true, sessionId: result.sessionId };
133
133
  return { success: false, error: "unexpected daemon response" };
134
134
  }
135
+ async function exitDaemonTeamMode(sessionId) {
136
+ const result = await daemonPost("/team-exit-session", { sessionId });
137
+ if (result?.error) {
138
+ const raw = String(result.error);
139
+ return { success: false, error: ROUTE_NOT_FOUND_RE.test(raw) ? "daemon too old to exit team mode; upgrade very-happy-cli and run `very-happy daemon start`" : raw.replace(/^Request failed: \/team-exit-session, /, "") };
140
+ }
141
+ return result?.success === true ? result : { success: false, error: "unexpected daemon response" };
142
+ }
135
143
  async function notifyDaemonSessionEvent(sessionId, event, spawnedBy) {
136
144
  return daemonPost("/session-event", { sessionId, event, spawnedBy });
137
145
  }
@@ -314,6 +322,7 @@ async function checkDaemonHibernation(body) {
314
322
  exports.checkDaemonHibernation = checkDaemonHibernation;
315
323
  exports.checkIfDaemonRunningAndCleanupStaleState = checkIfDaemonRunningAndCleanupStaleState;
316
324
  exports.cleanupDaemonState = cleanupDaemonState;
325
+ exports.exitDaemonTeamMode = exitDaemonTeamMode;
317
326
  exports.getDaemonAgentProfiles = getDaemonAgentProfiles;
318
327
  exports.isDaemonRunningCurrentlyInstalledHappyVersion = isDaemonRunningCurrentlyInstalledHappyVersion;
319
328
  exports.listDaemonPeers = listDaemonPeers;
@@ -1,6 +1,6 @@
1
- import { l as logger } from './logger-BiKmiREe.mjs';
2
- import { d as readDaemonState, f as clearDaemonState } from './persistence-D_zVC4Xz.mjs';
3
- import { c as configuration } from './configuration-i9MVy0a5.mjs';
1
+ import { l as logger } from './logger-BKAKIZdy.mjs';
2
+ import { d as readDaemonState, f as clearDaemonState } from './persistence-dLgWDclq.mjs';
3
+ import { c as configuration } from './configuration-H8q1sMwk.mjs';
4
4
 
5
5
  function daemonControlHeaders(controlToken) {
6
6
  return {
@@ -130,6 +130,14 @@ async function restartDaemonSession(sessionId) {
130
130
  if (result?.success === true && typeof result.sessionId === "string") return { success: true, sessionId: result.sessionId };
131
131
  return { success: false, error: "unexpected daemon response" };
132
132
  }
133
+ async function exitDaemonTeamMode(sessionId) {
134
+ const result = await daemonPost("/team-exit-session", { sessionId });
135
+ if (result?.error) {
136
+ const raw = String(result.error);
137
+ return { success: false, error: ROUTE_NOT_FOUND_RE.test(raw) ? "daemon too old to exit team mode; upgrade very-happy-cli and run `very-happy daemon start`" : raw.replace(/^Request failed: \/team-exit-session, /, "") };
138
+ }
139
+ return result?.success === true ? result : { success: false, error: "unexpected daemon response" };
140
+ }
133
141
  async function notifyDaemonSessionEvent(sessionId, event, spawnedBy) {
134
142
  return daemonPost("/session-event", { sessionId, event, spawnedBy });
135
143
  }
@@ -309,4 +317,4 @@ async function checkDaemonHibernation(body) {
309
317
  };
310
318
  }
311
319
 
312
- export { checkIfDaemonRunningAndCleanupStaleState as a, pushFilePreviewViaDaemon as b, checkDaemonHibernation as c, setTerminalTitleViaDaemon as d, spawnDaemonSession as e, stopDaemonSession as f, getDaemonAgentProfiles as g, listDaemonPeers as h, isDaemonRunningCurrentlyInstalledHappyVersion as i, resumeDaemonSession as j, reportRateLimitsToDaemon as k, listDaemonSessions as l, listDaemonSessionsWithInfo as m, notifyDaemonSessionStarted as n, reportSessionEditToDaemon as o, pushClipboardViaDaemon as p, notifyDaemonTurnEvent as q, restartDaemonSession as r, stopDaemon as s, notifyDaemonBackgroundTasks as t, notifyDaemonSessionEvent as u, notifyDaemonClaudeAuthFailed as v, cleanupDaemonState as w };
320
+ export { checkIfDaemonRunningAndCleanupStaleState as a, pushFilePreviewViaDaemon as b, checkDaemonHibernation as c, setTerminalTitleViaDaemon as d, spawnDaemonSession as e, stopDaemonSession as f, getDaemonAgentProfiles as g, exitDaemonTeamMode as h, isDaemonRunningCurrentlyInstalledHappyVersion as i, listDaemonPeers as j, resumeDaemonSession as k, listDaemonSessions as l, reportRateLimitsToDaemon as m, notifyDaemonSessionStarted as n, listDaemonSessionsWithInfo as o, pushClipboardViaDaemon as p, reportSessionEditToDaemon as q, restartDaemonSession as r, stopDaemon as s, notifyDaemonTurnEvent as t, notifyDaemonBackgroundTasks as u, notifyDaemonSessionEvent as v, notifyDaemonClaudeAuthFailed as w, cleanupDaemonState as x };
@@ -1,8 +1,8 @@
1
1
  import os from 'node:os';
2
2
  import { resolve, isAbsolute, dirname } from 'node:path';
3
- import { c as configuration } from './configuration-i9MVy0a5.mjs';
3
+ import { c as configuration } from './configuration-H8q1sMwk.mjs';
4
4
  import { p as projectPath } from './projectPath-BTBIMB57.mjs';
5
- import { p as packageJson } from './package-CIW5lwaN.mjs';
5
+ import { p as packageJson } from './package-CMmhJwSf.mjs';
6
6
  import { existsSync, readFileSync, statSync } from 'node:fs';
7
7
 
8
8
  const realFs = {
@@ -2,9 +2,9 @@
2
2
 
3
3
  var os = require('node:os');
4
4
  var path = require('node:path');
5
- var configuration = require('./configuration-Cl9kOv09.cjs');
5
+ var configuration = require('./configuration-Fx61b4MJ.cjs');
6
6
  var projectPath = require('./projectPath-C3ioB4Bu.cjs');
7
- var _package = require('./package-Djdgx8nb.cjs');
7
+ var _package = require('./package-BCJfNMlt.cjs');
8
8
  var node_fs = require('node:fs');
9
9
 
10
10
  const realFs = {
@@ -2,10 +2,10 @@
2
2
 
3
3
  var node_fs = require('node:fs');
4
4
  var pty = require('node-pty');
5
- var store = require('./store-Cpb1LMNW.cjs');
5
+ var store = require('./store-DGMILdMn.cjs');
6
6
  require('node:os');
7
7
  require('node:path');
8
- require('./index-44o_qMvE.cjs');
8
+ require('./index-BYL_X3gP.cjs');
9
9
  require('zod');
10
10
  require('@paralleldrive/cuid2');
11
11
 
@@ -1,10 +1,10 @@
1
1
  import { watchFile, unwatchFile } from 'node:fs';
2
2
  import * as pty from 'node-pty';
3
- import { g as accountsPath, p as providersPath } from './store-DWmjM4Ex.mjs';
4
- export { S as SPAWN_ACCOUNT_ENV } from './store-DWmjM4Ex.mjs';
3
+ import { g as accountsPath, p as providersPath } from './store-Fge1h9wy.mjs';
4
+ export { S as SPAWN_ACCOUNT_ENV } from './store-Fge1h9wy.mjs';
5
5
  import 'node:os';
6
6
  import 'node:path';
7
- import './index-CiRMvS73.mjs';
7
+ import './index-DWk-WTU-.mjs';
8
8
  import 'zod';
9
9
  import '@paralleldrive/cuid2';
10
10
 
@@ -1,4 +1,4 @@
1
- import { u as RUN_INTENT_RPC, v as RunIntentRequestSchema, w as nextRunIntents, x as readEffortIntent, y as readModelIntent } from './index-CiRMvS73.mjs';
1
+ import { u as RUN_INTENT_RPC, v as RunIntentRequestSchema, w as nextRunIntents, x as readEffortIntent, y as readModelIntent } from './index-DWk-WTU-.mjs';
2
2
 
3
3
  function currentRunIntents(metadata) {
4
4
  return {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-44o_qMvE.cjs');
3
+ var index = require('./index-BYL_X3gP.cjs');
4
4
 
5
5
  function currentRunIntents(metadata) {
6
6
  return {
@@ -1,34 +1,35 @@
1
- import { l as logger } from './logger-BiKmiREe.mjs';
1
+ import { l as logger } from './logger-BKAKIZdy.mjs';
2
2
  import { p as prependToMessage, b as buildDigestLine, a as buildFirstTurnPrefix } from './prompt-QHuFx9j6.mjs';
3
- import { P as ProjectsUnsupportedError } from './client-DO8DNDC3.mjs';
4
- import { s as sharedIssuesClient, I as IssuesUnsupportedError } from './client-CX8kRedW.mjs';
3
+ import { P as ProjectsUnsupportedError } from './client-BxtaglBR.mjs';
4
+ import { s as sharedIssuesClient, I as IssuesUnsupportedError } from './client-m-K1b6Qa.mjs';
5
5
  import { r as readSessionIssueMetadata } from './sessionMetadata-C1eoAi89.mjs';
6
- import { c as configuration, f as ensurePrivateDirectorySync, w as writePrivateFileSync } from './configuration-i9MVy0a5.mjs';
6
+ import { c as configuration, f as ensurePrivateDirectorySync, w as writePrivateFileSync } from './configuration-H8q1sMwk.mjs';
7
7
  import { join, dirname } from 'node:path';
8
- import { readdirSync, statSync, unlinkSync, readFileSync, constants } from 'node:fs';
9
- import { d as createSelfReportState, A as AUTOMATION_TOOL_NAMES, P as PROJECT_TOOL_NAMES, I as ISSUE_TOOL_NAMES, r as registerAutomationTools, a as registerProjectTools, e as createProjectToolExecutor, b as registerIssueTools, f as createIssueToolExecutor, c as registerReportProgressTool, n as normalizeAttention, g as normalizePhase, h as normalizeProgress, s as shouldAcceptSelfReport } from './reportProgressTool-Stg0xrjF.mjs';
8
+ import { readdirSync, statSync, unlinkSync, readFileSync, existsSync, constants } from 'node:fs';
9
+ import { r as readTeamExitMarker, T as TEAM_LANGUAGE_RULE_HEADING, a as teamLanguageRule, b as TEAM_LANGUAGES, c as teamLanguageReminder, d as detectTeamUserLanguage, e as createTeamExitNotice } from './exitNotice-gOAdDcL3.mjs';
10
+ import { d as createSelfReportState, A as AUTOMATION_TOOL_NAMES, P as PROJECT_TOOL_NAMES, I as ISSUE_TOOL_NAMES, r as registerAutomationTools, a as registerProjectTools, e as createProjectToolExecutor, b as registerIssueTools, f as createIssueToolExecutor, c as registerReportProgressTool, n as normalizeAttention, g as normalizePhase, h as normalizeProgress, s as shouldAcceptSelfReport } from './reportProgressTool-k3g3D6cX.mjs';
10
11
  import { homedir } from 'node:os';
11
12
  import { z } from 'zod';
12
13
  import { p as piAgentDir } from './pi-CqyoZMjI.mjs';
13
14
  import { unlink, mkdir, open, rename } from 'node:fs/promises';
14
15
  import { randomUUID, createHash } from 'node:crypto';
15
- import { T as TeamConnectionPreflightError, S as SessionInOtherTeamError, c as createTeamsClient, t as teamRequest } from './client-Wr_BiOon.mjs';
16
- import { t as teamScopePath, r as readTeamScope } from './context-DvdZsGgl.mjs';
17
- import { g as waitForSessionKey, e as sendUserMessage } from './sessionOps-C7nps7qG.mjs';
16
+ import { T as TeamConnectionPreflightError, S as SessionInOtherTeamError, c as createTeamsClient, t as teamRequest } from './client-BbYds4AV.mjs';
17
+ import { t as teamScopePath, r as readTeamScope } from './context-CM1Xd_HO.mjs';
18
+ import { g as waitForSessionKey, e as sendUserMessage } from './sessionOps-BxLhHEhM.mjs';
18
19
  import { T as TEAM_SKILL, a as TEAM_LEAD_PLAYBOOK } from './resources-CLP_MpK4.mjs';
19
- import { T as TEAM_TOOL_NAMES, r as registerTeamsTools } from './tools-BAMaBbbP.mjs';
20
- import { S as SESSION_PEER_TOOL_NAMES, r as registerSessionPeerTools, a as createSessionPeerToolExecutor } from './peerTools-CQ60fUPp.mjs';
20
+ import { T as TEAM_TOOL_NAMES, r as registerTeamsTools } from './tools-BmQbzAfY.mjs';
21
+ import { S as SESSION_PEER_TOOL_NAMES, r as registerSessionPeerTools, a as createSessionPeerToolExecutor } from './peerTools-ZJzoM48N.mjs';
21
22
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
22
23
  import { createServer } from 'node:http';
23
24
  import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
24
25
  import { C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION, c as CLIPBOARD_MAX_BYTES } from './limits-DIo7rEBR.mjs';
25
- import { A as ASSISTANT_TOOL_NAMES, a as registerAssistantTools, c as checkDownloadTarget } from './downloadTarget-Cd8hx54t.mjs';
26
+ import { A as ASSISTANT_TOOL_NAMES, a as registerAssistantTools, c as checkDownloadTarget } from './downloadTarget-DX3m00OE.mjs';
26
27
  import { P as PREVIEW_TOOL_NAME, R as REPORT_PROGRESS_TOOL_NAME, a as PREVIEW_TOOL_TITLE, b as PREVIEW_TOOL_DESCRIPTION, c as PREVIEW_DOWNLOAD_PARAM_DESCRIPTION } from './agentGuidance-BDYt2Qy2.mjs';
27
28
  import { n as normalizeWebPanels, w as webPanelPath } from './webPanels-B2_C2-3g.mjs';
28
- import { b as readCredentialsForConfiguredRelay, r as readSettings } from './persistence-D_zVC4Xz.mjs';
29
- import { g as getSessionNotificationBody } from './pushNotifications-RVpbqrxR.mjs';
29
+ import { b as readCredentialsForConfiguredRelay, r as readSettings } from './persistence-dLgWDclq.mjs';
30
+ import { g as getSessionNotificationBody } from './pushNotifications-DD9Z0CoN.mjs';
30
31
  import { c as checkPreviewPath } from './previewPath-CXN4Vag0.mjs';
31
- import { a6 as ATTENTION_DISABLED_ERROR, a7 as ATTENTION_LIMITS, a8 as ownerBoardPostToRest, a9 as isAttentionBoardLocalId, aa as OwnerBoardPostInputSchema, ab as OwnerBoardUpdateInputSchema, ac as OwnerBoardResolveInputSchema, ad as OwnerBoardListInputSchema, ae as ATTENTION_SESSION_CAPABILITY } from './index-CiRMvS73.mjs';
32
+ import { a7 as ATTENTION_DISABLED_ERROR, a8 as ATTENTION_LIMITS, a9 as ownerBoardPostToRest, aa as isAttentionBoardLocalId, ab as OwnerBoardPostInputSchema, ac as OwnerBoardUpdateInputSchema, ad as OwnerBoardResolveInputSchema, ae as OwnerBoardListInputSchema, af as ATTENTION_SESSION_CAPABILITY } from './index-DWk-WTU-.mjs';
32
33
  import { createHash as createHash$1 } from 'crypto';
33
34
 
34
35
  function buildIssueDigestLine(issue, entries) {
@@ -48,14 +49,14 @@ function buildIssueDigestLine(issue, entries) {
48
49
  if (!parts.length) return null;
49
50
  return `[Issue ${issue.key} ${parts.join("; ")}]`;
50
51
  }
51
- const SESSION_ID = /^[A-Za-z0-9_-]{1,128}$/;
52
+ const SESSION_ID$1 = /^[A-Za-z0-9_-]{1,128}$/;
52
53
  const ISSUE_DIGEST_CURSOR_TTL_MS = 30 * 24 * 36e5;
53
54
  function fileIssueDigestCursorStore(home, now = Date.now) {
54
55
  const dir = join(home, "issues", "digest");
55
56
  let pruned = false;
56
57
  return {
57
58
  read(sessionId) {
58
- if (!SESSION_ID.test(sessionId)) return null;
59
+ if (!SESSION_ID$1.test(sessionId)) return null;
59
60
  try {
60
61
  const asOf = JSON.parse(readFileSync(join(dir, `${sessionId}.json`), "utf8")).asOf;
61
62
  return typeof asOf === "number" && Number.isFinite(asOf) ? asOf : null;
@@ -64,7 +65,7 @@ function fileIssueDigestCursorStore(home, now = Date.now) {
64
65
  }
65
66
  },
66
67
  write(sessionId, asOf) {
67
- if (!SESSION_ID.test(sessionId)) return;
68
+ if (!SESSION_ID$1.test(sessionId)) return;
68
69
  try {
69
70
  ensurePrivateDirectorySync(dir);
70
71
  writePrivateFileSync(join(dir, `${sessionId}.json`), JSON.stringify({ asOf }));
@@ -122,6 +123,39 @@ function createIssueDigest(deps) {
122
123
  };
123
124
  }
124
125
 
126
+ const SESSION_ID = /^[a-zA-Z0-9_-]{1,128}$/;
127
+ const ENVELOPE = "[Very Happy team message ";
128
+ const BOARD_LINE = /^\[Briefing board\].*\n?/gm;
129
+ function teamLanguageMarkerPath(home, sessionId) {
130
+ return join(home, "teams", "language", `${sessionId}.json`);
131
+ }
132
+ function backfillLanguage(message) {
133
+ if (message.includes(ENVELOPE)) return TEAM_LANGUAGES.find((language) => message.includes(teamLanguageReminder(language))) ?? null;
134
+ return detectTeamUserLanguage(message.replace(BOARD_LINE, ""));
135
+ }
136
+ function createTeamLanguageBackfill(deps) {
137
+ const home = deps.home ?? configuration.happyHomeDir;
138
+ const scopeFile = deps.scopeFile ?? ((sid) => process.env.VH_TEAM_SCOPE_FILE || join(home, "teams", "scopes", `${sid}.json`));
139
+ return {
140
+ /** `source` is the message before other injections: their text says nothing about the user's language. */
141
+ decorate(message, source) {
142
+ const sid = deps.sessionId();
143
+ if (!sid || !SESSION_ID.test(sid)) return message;
144
+ const marker = teamLanguageMarkerPath(home, sid);
145
+ if (existsSync(marker) || !existsSync(scopeFile(sid)) || readTeamExitMarker(home, sid)) return message;
146
+ const hasRule = source.includes(TEAM_LANGUAGE_RULE_HEADING);
147
+ try {
148
+ ensurePrivateDirectorySync(join(home, "teams", "language"));
149
+ writePrivateFileSync(marker, JSON.stringify({ at: Date.now(), via: hasRule ? "prompt" : "backfill" }));
150
+ } catch (error) {
151
+ logger.debug(`[teams] language rule not recorded, skipping it: ${String(error)}`);
152
+ return message;
153
+ }
154
+ return hasRule ? message : prependToMessage(message, teamLanguageRule(backfillLanguage(source)));
155
+ }
156
+ };
157
+ }
158
+
125
159
  function createProjectInjector(deps) {
126
160
  const timeoutMs = deps.timeoutMs ?? 1500;
127
161
  const now = deps.now ?? Date.now;
@@ -132,6 +166,8 @@ function createProjectInjector(deps) {
132
166
  let lastPresenceVersion = null;
133
167
  const label = (id) => titles.get(id) ?? id.slice(0, 8);
134
168
  const issueDigest = deps.issueDigest === void 0 ? createIssueDigest({ sessionId: deps.sessionId, metadata: () => deps.metadata?.() ?? null, timeoutMs }) : deps.issueDigest;
169
+ const teamExitNotice = deps.teamExitNotice === void 0 ? createTeamExitNotice({ sessionId: deps.sessionId }) : deps.teamExitNotice;
170
+ const teamLanguageBackfill = deps.teamLanguageBackfill === void 0 ? createTeamLanguageBackfill({ sessionId: deps.sessionId }) : deps.teamLanguageBackfill;
135
171
  function withTimeout(p) {
136
172
  return Promise.race([p, new Promise((_, reject) => setTimeout(() => reject(new Error("project injection timeout")), timeoutMs).unref?.())]);
137
173
  }
@@ -203,7 +239,11 @@ function createProjectInjector(deps) {
203
239
  },
204
240
  async decorate(message) {
205
241
  if (typeof message !== "string") return message;
206
- const withIssue = async (text) => issueDigest ? issueDigest.decorate(text) : text;
242
+ const withIssue = async (text) => {
243
+ const digested = issueDigest ? await issueDigest.decorate(text) : text;
244
+ const noticed = teamExitNotice ? teamExitNotice.decorate(digested) : digested;
245
+ return teamLanguageBackfill ? teamLanguageBackfill.decorate(noticed, message) : noticed;
246
+ };
207
247
  const sid = deps.sessionId();
208
248
  if (!sid || deps.client.isDisabled()) return await withIssue(message);
209
249
  let out = message;
@@ -362,7 +402,9 @@ function createTeamAdoption(sessionId) {
362
402
 
363
403
  This session is now connected as the team lead. Call team_inspect to read the authoritative state before continuing the user's goal. Do not call team_create or team_join again.
364
404
 
365
- ${TEAM_LEAD_PLAYBOOK}`;
405
+ ${TEAM_LEAD_PLAYBOOK}
406
+
407
+ ${teamLanguageRule(null)}`;
366
408
  if (!intent.guidanceDelivered) {
367
409
  const key = await waitForSessionKey(sessionId, 1e4);
368
410
  await sendUserMessage(sessionId, key, instructions, "teams", { localId: `teams-adopt-${input.requestId}`, sentFrom: "team" });
@@ -1,36 +1,37 @@
1
1
  'use strict';
2
2
 
3
- var logger = require('./logger-BtWBoP60.cjs');
3
+ var logger = require('./logger-DP35yx-C.cjs');
4
4
  var prompt = require('./prompt-Bof2aQkI.cjs');
5
- var client$1 = require('./client-Cddb1dhi.cjs');
6
- var client = require('./client-DP8FabOE.cjs');
5
+ var client$1 = require('./client-BKjBr6pc.cjs');
6
+ var client = require('./client-wMlUPnrV.cjs');
7
7
  var sessionMetadata = require('./sessionMetadata-B44cL4Xj.cjs');
8
- var configuration = require('./configuration-Cl9kOv09.cjs');
8
+ var configuration = require('./configuration-Fx61b4MJ.cjs');
9
9
  var path = require('node:path');
10
10
  var node_fs = require('node:fs');
11
- var reportProgressTool = require('./reportProgressTool-DDfL1OY7.cjs');
11
+ var exitNotice = require('./exitNotice-M4UjtWkr.cjs');
12
+ var reportProgressTool = require('./reportProgressTool-D1XAxeY1.cjs');
12
13
  var os = require('node:os');
13
14
  var z = require('zod');
14
15
  var pi = require('./pi-DlsrPCTa.cjs');
15
16
  var promises = require('node:fs/promises');
16
17
  var node_crypto = require('node:crypto');
17
- var client$2 = require('./client-CMKgB-76.cjs');
18
- var context = require('./context-BxODP3mG.cjs');
19
- var sessionOps = require('./sessionOps-CptDjoZi.cjs');
18
+ var client$2 = require('./client-Bh-y6cVc.cjs');
19
+ var context = require('./context-D-QOcYuX.cjs');
20
+ var sessionOps = require('./sessionOps-BEVzE38e.cjs');
20
21
  var resources = require('./resources-BZ_Be0qM.cjs');
21
- var tools = require('./tools--RN1SFkD.cjs');
22
- var peerTools = require('./peerTools-fYuKq3ev.cjs');
22
+ var tools = require('./tools-CLkNfafW.cjs');
23
+ var peerTools = require('./peerTools-C6Y28jqG.cjs');
23
24
  var mcp_js = require('@modelcontextprotocol/sdk/server/mcp.js');
24
25
  var node_http = require('node:http');
25
26
  var streamableHttp_js = require('@modelcontextprotocol/sdk/server/streamableHttp.js');
26
27
  var limits = require('./limits-C-a7gr04.cjs');
27
- var downloadTarget = require('./downloadTarget-osB-mGh0.cjs');
28
+ var downloadTarget = require('./downloadTarget-TzXJEh6W.cjs');
28
29
  var agentGuidance = require('./agentGuidance-BtBx2xxE.cjs');
29
30
  var webPanels = require('./webPanels-FCgFKvVe.cjs');
30
- var persistence = require('./persistence-BOEZtiKb.cjs');
31
- var pushNotifications = require('./pushNotifications-B19lT5mY.cjs');
31
+ var persistence = require('./persistence-iiVFxhbt.cjs');
32
+ var pushNotifications = require('./pushNotifications-gcQv61e6.cjs');
32
33
  var previewPath = require('./previewPath-B0rBdhy1.cjs');
33
- var index = require('./index-44o_qMvE.cjs');
34
+ var index = require('./index-BYL_X3gP.cjs');
34
35
  var require$$3 = require('crypto');
35
36
 
36
37
  function buildIssueDigestLine(issue, entries) {
@@ -50,14 +51,14 @@ function buildIssueDigestLine(issue, entries) {
50
51
  if (!parts.length) return null;
51
52
  return `[Issue ${issue.key} ${parts.join("; ")}]`;
52
53
  }
53
- const SESSION_ID = /^[A-Za-z0-9_-]{1,128}$/;
54
+ const SESSION_ID$1 = /^[A-Za-z0-9_-]{1,128}$/;
54
55
  const ISSUE_DIGEST_CURSOR_TTL_MS = 30 * 24 * 36e5;
55
56
  function fileIssueDigestCursorStore(home, now = Date.now) {
56
57
  const dir = path.join(home, "issues", "digest");
57
58
  let pruned = false;
58
59
  return {
59
60
  read(sessionId) {
60
- if (!SESSION_ID.test(sessionId)) return null;
61
+ if (!SESSION_ID$1.test(sessionId)) return null;
61
62
  try {
62
63
  const asOf = JSON.parse(node_fs.readFileSync(path.join(dir, `${sessionId}.json`), "utf8")).asOf;
63
64
  return typeof asOf === "number" && Number.isFinite(asOf) ? asOf : null;
@@ -66,7 +67,7 @@ function fileIssueDigestCursorStore(home, now = Date.now) {
66
67
  }
67
68
  },
68
69
  write(sessionId, asOf) {
69
- if (!SESSION_ID.test(sessionId)) return;
70
+ if (!SESSION_ID$1.test(sessionId)) return;
70
71
  try {
71
72
  configuration.ensurePrivateDirectorySync(dir);
72
73
  configuration.writePrivateFileSync(path.join(dir, `${sessionId}.json`), JSON.stringify({ asOf }));
@@ -124,6 +125,39 @@ function createIssueDigest(deps) {
124
125
  };
125
126
  }
126
127
 
128
+ const SESSION_ID = /^[a-zA-Z0-9_-]{1,128}$/;
129
+ const ENVELOPE = "[Very Happy team message ";
130
+ const BOARD_LINE = /^\[Briefing board\].*\n?/gm;
131
+ function teamLanguageMarkerPath(home, sessionId) {
132
+ return path.join(home, "teams", "language", `${sessionId}.json`);
133
+ }
134
+ function backfillLanguage(message) {
135
+ if (message.includes(ENVELOPE)) return exitNotice.TEAM_LANGUAGES.find((language) => message.includes(exitNotice.teamLanguageReminder(language))) ?? null;
136
+ return exitNotice.detectTeamUserLanguage(message.replace(BOARD_LINE, ""));
137
+ }
138
+ function createTeamLanguageBackfill(deps) {
139
+ const home = deps.home ?? configuration.configuration.happyHomeDir;
140
+ const scopeFile = deps.scopeFile ?? ((sid) => process.env.VH_TEAM_SCOPE_FILE || path.join(home, "teams", "scopes", `${sid}.json`));
141
+ return {
142
+ /** `source` is the message before other injections: their text says nothing about the user's language. */
143
+ decorate(message, source) {
144
+ const sid = deps.sessionId();
145
+ if (!sid || !SESSION_ID.test(sid)) return message;
146
+ const marker = teamLanguageMarkerPath(home, sid);
147
+ if (node_fs.existsSync(marker) || !node_fs.existsSync(scopeFile(sid)) || exitNotice.readTeamExitMarker(home, sid)) return message;
148
+ const hasRule = source.includes(exitNotice.TEAM_LANGUAGE_RULE_HEADING);
149
+ try {
150
+ configuration.ensurePrivateDirectorySync(path.join(home, "teams", "language"));
151
+ configuration.writePrivateFileSync(marker, JSON.stringify({ at: Date.now(), via: hasRule ? "prompt" : "backfill" }));
152
+ } catch (error) {
153
+ logger.logger.debug(`[teams] language rule not recorded, skipping it: ${String(error)}`);
154
+ return message;
155
+ }
156
+ return hasRule ? message : prompt.prependToMessage(message, exitNotice.teamLanguageRule(backfillLanguage(source)));
157
+ }
158
+ };
159
+ }
160
+
127
161
  function createProjectInjector(deps) {
128
162
  const timeoutMs = deps.timeoutMs ?? 1500;
129
163
  const now = deps.now ?? Date.now;
@@ -134,6 +168,8 @@ function createProjectInjector(deps) {
134
168
  let lastPresenceVersion = null;
135
169
  const label = (id) => titles.get(id) ?? id.slice(0, 8);
136
170
  const issueDigest = deps.issueDigest === void 0 ? createIssueDigest({ sessionId: deps.sessionId, metadata: () => deps.metadata?.() ?? null, timeoutMs }) : deps.issueDigest;
171
+ const teamExitNotice = deps.teamExitNotice === void 0 ? exitNotice.createTeamExitNotice({ sessionId: deps.sessionId }) : deps.teamExitNotice;
172
+ const teamLanguageBackfill = deps.teamLanguageBackfill === void 0 ? createTeamLanguageBackfill({ sessionId: deps.sessionId }) : deps.teamLanguageBackfill;
137
173
  function withTimeout(p) {
138
174
  return Promise.race([p, new Promise((_, reject) => setTimeout(() => reject(new Error("project injection timeout")), timeoutMs).unref?.())]);
139
175
  }
@@ -205,7 +241,11 @@ function createProjectInjector(deps) {
205
241
  },
206
242
  async decorate(message) {
207
243
  if (typeof message !== "string") return message;
208
- const withIssue = async (text) => issueDigest ? issueDigest.decorate(text) : text;
244
+ const withIssue = async (text) => {
245
+ const digested = issueDigest ? await issueDigest.decorate(text) : text;
246
+ const noticed = teamExitNotice ? teamExitNotice.decorate(digested) : digested;
247
+ return teamLanguageBackfill ? teamLanguageBackfill.decorate(noticed, message) : noticed;
248
+ };
209
249
  const sid = deps.sessionId();
210
250
  if (!sid || deps.client.isDisabled()) return await withIssue(message);
211
251
  let out = message;
@@ -364,7 +404,9 @@ function createTeamAdoption(sessionId) {
364
404
 
365
405
  This session is now connected as the team lead. Call team_inspect to read the authoritative state before continuing the user's goal. Do not call team_create or team_join again.
366
406
 
367
- ${resources.TEAM_LEAD_PLAYBOOK}`;
407
+ ${resources.TEAM_LEAD_PLAYBOOK}
408
+
409
+ ${exitNotice.teamLanguageRule(null)}`;
368
410
  if (!intent.guidanceDelivered) {
369
411
  const key = await sessionOps.waitForSessionKey(sessionId, 1e4);
370
412
  await sessionOps.sendUserMessage(sessionId, key, instructions, "teams", { localId: `teams-adopt-${input.requestId}`, sentFrom: "team" });
@@ -1,17 +1,17 @@
1
1
  import chalk from 'chalk';
2
- import { c as configuration } from './configuration-i9MVy0a5.mjs';
3
- import { r as readSettings, g as readCredentials, d as readDaemonState } from './persistence-D_zVC4Xz.mjs';
4
- import { a as checkIfDaemonRunningAndCleanupStaleState } from './controlClient-D6vqMUfi.mjs';
2
+ import { c as configuration } from './configuration-H8q1sMwk.mjs';
3
+ import { r as readSettings, g as readCredentials, d as readDaemonState } from './persistence-dLgWDclq.mjs';
4
+ import { a as checkIfDaemonRunningAndCleanupStaleState } from './controlClient-D9DYqW02.mjs';
5
5
  import { findAllHappyProcesses } from './doctor-GN5mPOn5.mjs';
6
6
  import { statSync, realpathSync, existsSync, readdirSync } from 'node:fs';
7
7
  import { isAbsolute, resolve, dirname, basename, delimiter, join } from 'node:path';
8
8
  import { p as projectPath } from './projectPath-BTBIMB57.mjs';
9
- import { p as packageJson } from './package-CIW5lwaN.mjs';
9
+ import { p as packageJson } from './package-CMmhJwSf.mjs';
10
10
  import { s as shareableSettingsSummary, c as collectRuntimeReadiness, S as SUPPORTED_NODE_LABEL, r as resolveClaudeCredentialReadiness, a as toolProbeLabel, b as daemonReadiness, d as daemonEndpointsMatch } from './doctorReadiness-C208SMN9.mjs';
11
11
  import { c as credentialRelayProblem } from './authRelay-DhQhkBvX.mjs';
12
12
  import { d as deriveLocalCliUpdateSummary } from './cliUpdate-Y34VGe9Y.mjs';
13
13
  import { spawnSync } from 'node:child_process';
14
- import { p as piInstallCommand } from './piRunnerArgs-DE_YXvS1.mjs';
14
+ import { p as piInstallCommand } from './piRunnerArgs-DuWYye4f.mjs';
15
15
 
16
16
  function shareSafeProcessLine(process2) {
17
17
  return `PID ${process2.pid}: command arguments hidden for privacy`;
@@ -311,8 +311,8 @@ ${typeLabels[type] || type}:`));
311
311
  }
312
312
  console.log(chalk.gray(" An external claude command is only needed for native terminal/mirror use."));
313
313
  try {
314
- const { resolveAgentHomesForCli } = await import('./agentHome-DUxArmak.mjs');
315
- const { describeAgentHome } = await import('./index-DIKJMfs2.mjs');
314
+ const { resolveAgentHomesForCli } = await import('./agentHome-BuFxooEg.mjs');
315
+ const { describeAgentHome } = await import('./index-DCvq8Cfw.mjs');
316
316
  const homes = await resolveAgentHomesForCli();
317
317
  console.log(chalk.green(`\u2713 Claude config dir: ${describeAgentHome(homes.claudeConfigDir)}`));
318
318
  console.log(chalk.green(`\u2713 Codex home: ${describeAgentHome(homes.codexHome)}`));
@@ -1,19 +1,19 @@
1
1
  'use strict';
2
2
 
3
3
  var chalk = require('chalk');
4
- var configuration = require('./configuration-Cl9kOv09.cjs');
5
- var persistence = require('./persistence-BOEZtiKb.cjs');
6
- var controlClient = require('./controlClient-DxCQKfqe.cjs');
4
+ var configuration = require('./configuration-Fx61b4MJ.cjs');
5
+ var persistence = require('./persistence-iiVFxhbt.cjs');
6
+ var controlClient = require('./controlClient-D04wXKoQ.cjs');
7
7
  var doctor$1 = require('./doctor-CJpFhHoK.cjs');
8
8
  var node_fs = require('node:fs');
9
9
  var path = require('node:path');
10
10
  var projectPath = require('./projectPath-C3ioB4Bu.cjs');
11
- var _package = require('./package-Djdgx8nb.cjs');
11
+ var _package = require('./package-BCJfNMlt.cjs');
12
12
  var doctorReadiness = require('./doctorReadiness-Dl6yRQCy.cjs');
13
13
  var authRelay = require('./authRelay-Dy1qU9td.cjs');
14
14
  var cliUpdate = require('./cliUpdate-DsKXPFYp.cjs');
15
15
  var node_child_process = require('node:child_process');
16
- var piRunnerArgs = require('./piRunnerArgs-Dz9P62db.cjs');
16
+ var piRunnerArgs = require('./piRunnerArgs-DxWxgOSZ.cjs');
17
17
 
18
18
  function shareSafeProcessLine(process2) {
19
19
  return `PID ${process2.pid}: command arguments hidden for privacy`;
@@ -313,8 +313,8 @@ ${typeLabels[type] || type}:`));
313
313
  }
314
314
  console.log(chalk.gray(" An external claude command is only needed for native terminal/mirror use."));
315
315
  try {
316
- const { resolveAgentHomesForCli } = await Promise.resolve().then(function () { return require('./agentHome-BXaVMqHX.cjs'); });
317
- const { describeAgentHome } = await Promise.resolve().then(function () { return require('./index-Cl-WkB_6.cjs'); });
316
+ const { resolveAgentHomesForCli } = await Promise.resolve().then(function () { return require('./agentHome-8wzmbm0H.cjs'); });
317
+ const { describeAgentHome } = await Promise.resolve().then(function () { return require('./index-bVMcFi7v.cjs'); });
318
318
  const homes = await resolveAgentHomesForCli();
319
319
  console.log(chalk.green(`\u2713 Claude config dir: ${describeAgentHome(homes.claudeConfigDir)}`));
320
320
  console.log(chalk.green(`\u2713 Codex home: ${describeAgentHome(homes.codexHome)}`));
@@ -1,14 +1,14 @@
1
1
  import { readFile, writeFile, appendFile, stat } from 'node:fs/promises';
2
2
  import os from 'node:os';
3
3
  import { z } from 'zod';
4
- import { l as logger } from './logger-BiKmiREe.mjs';
5
- import { c as readPersistedSessions } from './persistence-D_zVC4Xz.mjs';
6
- import { e as spawnDaemonSession } from './controlClient-D6vqMUfi.mjs';
7
- import { a as listSessions, r as readSessionTranscript, s as sessionWebUrl, g as waitForSessionKey, e as sendUserMessage, b as stopSession, d as archiveSession } from './sessionOps-C7nps7qG.mjs';
8
- import { r as readRemoteTranscript, s as sendRemoteMessage, d as deliverToSession, R as RemoteSessionOpsError } from './remoteSessionClient-T-Raoiy6.mjs';
4
+ import { l as logger } from './logger-BKAKIZdy.mjs';
5
+ import { c as readPersistedSessions } from './persistence-dLgWDclq.mjs';
6
+ import { e as spawnDaemonSession } from './controlClient-D9DYqW02.mjs';
7
+ import { a as listSessions, r as readSessionTranscript, s as sessionWebUrl, g as waitForSessionKey, e as sendUserMessage, b as stopSession, d as archiveSession } from './sessionOps-BxLhHEhM.mjs';
8
+ import { r as readRemoteTranscript, s as sendRemoteMessage, d as deliverToSession, R as RemoteSessionOpsError } from './remoteSessionClient-CLuxs0_y.mjs';
9
9
  import { i as isValidSessionId, a as isValidTerminalId } from './ids-DU6sLx4C.mjs';
10
10
  import { l as listVhTerminals, r as readVhTerminal, s as sendToVhTerminal } from './terminals-Dc38XmZv.mjs';
11
- import { bootstrapAssistantHome, assistantPersonalMemoryPath } from './bootstrap-pGaFGbWO.mjs';
11
+ import { bootstrapAssistantHome, assistantPersonalMemoryPath } from './bootstrap-Dn_VvHSt.mjs';
12
12
  import { join, isAbsolute, normalize } from 'node:path';
13
13
 
14
14
  const PERSONAL_MEMORY_SOFT_LIMIT_CHARS = 2e3;