very-happy-cli 0.2.189 → 0.2.191

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 (203) hide show
  1. package/dist/{AcpBackend-fj16v_cf.mjs → AcpBackend-CCy_9AfR.mjs} +3 -3
  2. package/dist/{AcpBackend-DRPJ2g9G.cjs → AcpBackend-DgrIc1vH.cjs} +3 -3
  3. package/dist/{AcpSessionManager-BZPmUDL5.mjs → AcpSessionManager-CQnxx7gD.mjs} +2 -2
  4. package/dist/{AcpSessionManager-DM-KKg6v.cjs → AcpSessionManager-DVOzCD3P.cjs} +2 -2
  5. package/dist/{BasePermissionHandler-DjM16uJz.cjs → BasePermissionHandler-C9Ag7yvs.cjs} +1 -1
  6. package/dist/{BasePermissionHandler-CVtH-snr.mjs → BasePermissionHandler-DYLN6Ec9.mjs} +1 -1
  7. package/dist/{acpSessionResume-Dxl1LRAT.mjs → acpSessionResume-Bi7pA1n_.mjs} +1 -1
  8. package/dist/{acpSessionResume-2BTMsB7_.cjs → acpSessionResume-TvP_4Zq2.cjs} +1 -1
  9. package/dist/{agentHome-CHctmMzZ.mjs → agentHome-DGv105SR.mjs} +4 -4
  10. package/dist/{agentHome-W17n1gnH.cjs → agentHome-DNUKJWOY.cjs} +4 -4
  11. package/dist/{api-BDuuyys8.cjs → api-BBxZ7y2z.cjs} +19 -10
  12. package/dist/{api-B0yN68XH.mjs → api-jfeMRg5R.mjs} +19 -10
  13. package/dist/{apiMachine-mc9CsKuS.mjs → apiMachine-DRJ7y-BB.mjs} +56 -15
  14. package/dist/{apiMachine-iddD-F19.cjs → apiMachine-DqyjKBZG.cjs} +56 -15
  15. package/dist/{attachmentContent-Cc5b7TPr.cjs → attachmentContent-BO2njyza.cjs} +2 -2
  16. package/dist/{attachmentContent-CcIdMfAx.mjs → attachmentContent-Dm_RIs5L.mjs} +2 -2
  17. package/dist/{auth-DNAgkUkB.mjs → auth-BYDtjVNb.mjs} +8 -8
  18. package/dist/{auth-CyrVvWHF.mjs → auth-DC6rg8lJ.mjs} +5 -5
  19. package/dist/{auth-B7tVmyfX.cjs → auth-DLR3ksCF.cjs} +8 -8
  20. package/dist/{auth-DQKSpaEf.cjs → auth-DnxoVkkf.cjs} +5 -5
  21. package/dist/{auto-CetlumDo.cjs → auto-CwO0u8hB.cjs} +18 -18
  22. package/dist/{auto-BklCipw1.mjs → auto-D5Jhukq1.mjs} +18 -18
  23. package/dist/{bootstrap-DfXwkUQb.mjs → bootstrap-rLaL3kTa.mjs} +2 -2
  24. package/dist/{bootstrap-CDY-Vz8q.cjs → bootstrap-sly4qPPY.cjs} +2 -2
  25. package/dist/{browser-D1yzC0Tu.cjs → browser-BTgZ9d4i.cjs} +1 -1
  26. package/dist/{browser-vb0k1zfI.mjs → browser-CHpVgyni.mjs} +1 -1
  27. package/dist/{claudeLocal-2dJIiTIq.cjs → claudeLocal-1vuTFcL8.cjs} +5 -5
  28. package/dist/{claudeLocal-Bid_rC_v.mjs → claudeLocal-Bgb5GGsq.mjs} +5 -5
  29. package/dist/{claudeLocalLauncher-Jm5oQX5Z.cjs → claudeLocalLauncher-DOsL6HFY.cjs} +10 -10
  30. package/dist/{claudeLocalLauncher-5pzpETxd.mjs → claudeLocalLauncher-T7EfT68h.mjs} +10 -10
  31. package/dist/{claudeSessionFork-DzecSBO4.mjs → claudeSessionFork-CPvi6yDX.mjs} +1 -1
  32. package/dist/{claudeSessionFork-DsbcuDEJ.cjs → claudeSessionFork-Cko4SaVi.cjs} +1 -1
  33. package/dist/{client-CvjjadIE.mjs → client-BXD66ZF5.mjs} +2 -2
  34. package/dist/{client-C9Ecbtko.mjs → client-Bh1aUPh-.mjs} +4 -4
  35. package/dist/{client-B161HwAk.mjs → client-Bi20Ka0h.mjs} +2 -2
  36. package/dist/{client-D0aYWt53.cjs → client-BscskEBk.cjs} +2 -2
  37. package/dist/{client-BNmFaRXZ.cjs → client-C-OdTbrU.cjs} +4 -4
  38. package/dist/{client-DIfxYk7B.cjs → client-C5-C0t2a.cjs} +2 -2
  39. package/dist/codex/happyMcpStdioBridge.cjs +16 -16
  40. package/dist/codex/happyMcpStdioBridge.mjs +16 -16
  41. package/dist/{codexAppServerClient-CO9f4Jr8.cjs → codexAppServerClient-DKXeikEe.cjs} +13 -6
  42. package/dist/{codexAppServerClient-BlVmpjR-.mjs → codexAppServerClient-DXhAf6i-.mjs} +13 -6
  43. package/dist/{codexCommand-CAMR4g5o.mjs → codexCommand-CIaOiiOj.mjs} +137 -55
  44. package/dist/{codexCommand-BfoRP6E9.cjs → codexCommand-DvbbpYBS.cjs} +141 -59
  45. package/dist/{codexTermination-BvGlN02_.mjs → codexTermination-BcQdEDaw.mjs} +1 -1
  46. package/dist/{codexTermination-IrLZQzKC.cjs → codexTermination-BszWfyk5.cjs} +1 -1
  47. package/dist/{codexThreadFork-DNekT4nQ.cjs → codexThreadFork-5kwoKjMu.cjs} +11 -17
  48. package/dist/{codexThreadFork-R76RU5H0.mjs → codexThreadFork-DobPd19R.mjs} +11 -17
  49. package/dist/{config-BGFqQGvh.cjs → config-Di3Cf6js.cjs} +3 -3
  50. package/dist/{config-CtMgGPvf.mjs → config-OCEcVVK1.mjs} +3 -3
  51. package/dist/{configuration-C0ctLGW2.cjs → configuration-DfPBa-9d.cjs} +1 -1
  52. package/dist/{configuration-1FabKklB.mjs → configuration-ECqXu34R.mjs} +1 -1
  53. package/dist/{connect-DSw-2f52.cjs → connect-BPQRuOw5.cjs} +13 -13
  54. package/dist/{connect-0lSugpjf.mjs → connect-BTfAUhk8.mjs} +13 -13
  55. package/dist/{context-BgxbXWKS.mjs → context-CfgTFpCB.mjs} +1 -1
  56. package/dist/{context-D-hEk5pC.cjs → context-Co7hUaW-.cjs} +1 -1
  57. package/dist/{controlClient-F7hAEEy2.cjs → controlClient-C13_pSKG.cjs} +3 -3
  58. package/dist/{controlClient-DwNnNAUx.mjs → controlClient-ClI7A0qE.mjs} +3 -3
  59. package/dist/{createSessionMetadata-CG6Klinp.mjs → createSessionMetadata-B0eT_Kfj.mjs} +2 -2
  60. package/dist/{createSessionMetadata-DezS33OM.cjs → createSessionMetadata-Cf78KHtt.cjs} +2 -2
  61. package/dist/defaultPermissionMode-m6z2QVyP.mjs +43 -0
  62. package/dist/defaultPermissionMode-oqTupStc.cjs +49 -0
  63. package/dist/{deterministicJson-BMwgK21e.mjs → deterministicJson-BtSwbsok.mjs} +13 -13
  64. package/dist/{deterministicJson-D0LU_XbO.cjs → deterministicJson-CpFFgUL_.cjs} +13 -13
  65. package/dist/{doctor-wVNvRarN.cjs → doctor-BEU0_1Xv.cjs} +7 -7
  66. package/dist/{doctor-D16hySse.mjs → doctor-lsxmAK4o.mjs} +7 -7
  67. package/dist/{downloadTarget-C6tqaXGm.mjs → downloadTarget-BXqXhNF7.mjs} +6 -6
  68. package/dist/{downloadTarget-aNcCxVRL.cjs → downloadTarget-CikzJv1h.cjs} +6 -6
  69. package/dist/{ensureDaemonRunning-CIghxgDR.cjs → ensureDaemonRunning-BUuH-pbE.cjs} +5 -5
  70. package/dist/{ensureDaemonRunning-DZq8bvsp.mjs → ensureDaemonRunning-B_9WAlbU.mjs} +5 -5
  71. package/dist/exitAfterFlush-AbKNZM0N.mjs +23 -0
  72. package/dist/exitAfterFlush-DIT_sIxR.cjs +25 -0
  73. package/dist/{handleResumeCommand-BNnD7EuD.mjs → handleResumeCommand-BK9XKH_l.mjs} +5 -5
  74. package/dist/{handleResumeCommand-CMUTygsm.cjs → handleResumeCommand-Dj7oi2KO.cjs} +5 -5
  75. package/dist/{agentAttachments-Dbw8iMCZ.cjs → heldInput-BOtqFO2r.cjs} +27 -0
  76. package/dist/heldInput-C69lA2dH.mjs +44 -0
  77. package/dist/{index-BCQr-5Ei.mjs → index-BdOJOZ6J.mjs} +4 -4
  78. package/dist/{index-CKd20r1W.mjs → index-BjZnpGWX.mjs} +3 -3
  79. package/dist/{index-WKyN-bNy.mjs → index-Bq8NKSCF.mjs} +65 -1
  80. package/dist/{index-BOe6dKnL.cjs → index-CLUHaPU8.cjs} +76 -0
  81. package/dist/{index-CnzsOD19.cjs → index-CauRYQKr.cjs} +133 -54
  82. package/dist/{index-4TpmBb2Q.cjs → index-CmZusg8Q.cjs} +3 -3
  83. package/dist/{index-BuiG8hmg.mjs → index-Cxso1rg4.mjs} +133 -54
  84. package/dist/{index-De02DNu5.cjs → index-D3c7CLot.cjs} +4 -4
  85. package/dist/{index-B81qV_F_.cjs → index-Dg2NAF_-.cjs} +4 -4
  86. package/dist/{index-Df0bc_et.mjs → index-DuK9XYbZ.mjs} +4 -4
  87. package/dist/index.cjs +2 -2
  88. package/dist/index.mjs +2 -2
  89. package/dist/{install-23ehAdTD.mjs → install-DTIveLOS.mjs} +3 -3
  90. package/dist/{install-DNbIEJUk.cjs → install-DXllkuy0.cjs} +3 -3
  91. package/dist/lib.cjs +12 -12
  92. package/dist/lib.d.cts +63 -1
  93. package/dist/lib.d.mts +63 -1
  94. package/dist/lib.mjs +12 -12
  95. package/dist/{lidState-B4dHJCeS.cjs → lidState-C9_DoF9i.cjs} +1 -1
  96. package/dist/{lidState-q5Its2Hm.mjs → lidState-CD81ryTy.mjs} +1 -1
  97. package/dist/{localHappyAgentAuth-CG2nPD_H.cjs → localHappyAgentAuth-CCjUvOfi.cjs} +1 -1
  98. package/dist/{localHappyAgentAuth-C_G5u5lY.mjs → localHappyAgentAuth-Cg-m1lwm.mjs} +1 -1
  99. package/dist/{logger-BP1SW7Cs.cjs → logger-Ct2zvaq0.cjs} +2 -2
  100. package/dist/{logger-DOKH3Zbh.mjs → logger-GcbI0eg2.mjs} +2 -2
  101. package/dist/{machineMetadata-D-5qeIqd.mjs → machineMetadata-CXRmFNOV.mjs} +3 -3
  102. package/dist/{machineMetadata-BKX3ov9g.cjs → machineMetadata-DDCVWb_x.cjs} +3 -3
  103. package/dist/{main-ndpVIaSG.cjs → main-BHC-WIcM.cjs} +49 -48
  104. package/dist/{main-DODz8DQE.mjs → main-omGr_ONk.mjs} +49 -48
  105. package/dist/{mcp-BBwbSODp.mjs → mcp-D5hxmRAq.mjs} +15 -15
  106. package/dist/{mcp-Bc4U4exu.cjs → mcp-xUzii0m8.cjs} +15 -15
  107. package/dist/{mirrorProtocol-CiA3hO2y.cjs → mirrorProtocol-Dfl8Ahyf.cjs} +3 -3
  108. package/dist/{mirrorProtocol-D2vTWteS.mjs → mirrorProtocol-Lcx20Oby.mjs} +3 -3
  109. package/dist/{package-CYDdLA6R.cjs → package-9n7wd2dT.cjs} +7 -7
  110. package/dist/{package-DTcaIhjW.mjs → package-BsUHyqWe.mjs} +7 -7
  111. package/dist/{panels-C2xZ8rqU.cjs → panels-BfknEmt7.cjs} +5 -5
  112. package/dist/{panels-DCaLxlSL.mjs → panels-CpEKWWbI.mjs} +5 -5
  113. package/dist/{peerTools-B4315xjX.cjs → peerTools-CElYh-5u.cjs} +5 -5
  114. package/dist/{peerTools-BtrUnSwz.mjs → peerTools-CwCe6tmJ.mjs} +5 -5
  115. package/dist/{persistence-CrzC7yr_.cjs → persistence-A2NeERZJ.cjs} +6 -2
  116. package/dist/{persistence-0INrP3aB.mjs → persistence-Cpw4yJs8.mjs} +6 -3
  117. package/dist/{piRunnerArgs-BtzW_kfh.cjs → piRunnerArgs-BnFU0K73.cjs} +1 -1
  118. package/dist/{piRunnerArgs-DRuxMlX1.mjs → piRunnerArgs-Bqmu16He.mjs} +1 -1
  119. package/dist/{piRuntime-BMAFpIBV.mjs → piRuntime-Cgn1b0OX.mjs} +1 -1
  120. package/dist/{piRuntime-DEbPE_kW.cjs → piRuntime-DpS9TAIs.cjs} +1 -1
  121. package/dist/{piTerminal-DQXV8_we.mjs → piTerminal-BGdps8f3.mjs} +17 -17
  122. package/dist/{piTerminal-MtxDtBE2.cjs → piTerminal-rmve-VlI.cjs} +17 -17
  123. package/dist/{pushNotifications-CalIS9sq.cjs → pushNotifications-23YSd-0l.cjs} +28 -3
  124. package/dist/{pushNotifications-Cq1s8YVK.mjs → pushNotifications-XAM8__Pg.mjs} +28 -3
  125. package/dist/{query-BYiPBHPC.mjs → query-SZcYnJoW.mjs} +1 -1
  126. package/dist/{query-CE2XDhhw.cjs → query-u2GX-I0C.cjs} +1 -1
  127. package/dist/{rateLimitReporter-DR5LXuiQ.mjs → rateLimitReporter-COUkf446.mjs} +3 -3
  128. package/dist/{rateLimitReporter-BKmoOZQi.cjs → rateLimitReporter-CaTzBe3x.cjs} +3 -3
  129. package/dist/{rateLimitWindows-Cs56YJCH.cjs → rateLimitWindows-B2Kx6L0S.cjs} +1 -1
  130. package/dist/{rateLimitWindows-5vIuNjko.mjs → rateLimitWindows-j_qQk0KY.mjs} +1 -1
  131. package/dist/{registerCommonHandlers-DZPozYxc.cjs → registerCommonHandlers-D1MiSfcB.cjs} +2 -2
  132. package/dist/{registerCommonHandlers-DWkTysjD.mjs → registerCommonHandlers-DRRfinzK.mjs} +2 -2
  133. package/dist/{registerKillSessionHandler-CSCTRIbI.mjs → registerKillSessionHandler-Cpug_r5C.mjs} +16 -6
  134. package/dist/{registerKillSessionHandler-DhCjrs44.cjs → registerKillSessionHandler-hvCsEn7b.cjs} +16 -6
  135. package/dist/{remoteSessionClient-Dq8XTLQP.cjs → remoteSessionClient-6ymeMVa4.cjs} +5 -5
  136. package/dist/{remoteSessionClient-Vfj_5g2-.mjs → remoteSessionClient-BdnJ_n8C.mjs} +5 -5
  137. package/dist/{reportProgressTool-B7zmX7NJ.mjs → reportProgressTool-XgQBzxoD.mjs} +3 -3
  138. package/dist/{reportProgressTool-DznxPKES.cjs → reportProgressTool-tzQLCLIw.cjs} +3 -3
  139. package/dist/{run-DSfNcR62.mjs → run-Bt0AklUU.mjs} +396 -43
  140. package/dist/{run-Ca8BiNCp.cjs → run-DYL_wuj7.cjs} +396 -43
  141. package/dist/{runClaude-hoepv-0X.mjs → runClaude-C3rii_S6.mjs} +47 -27
  142. package/dist/{runClaude-ClQQcgoO.cjs → runClaude-CBEpYO4S.cjs} +49 -29
  143. package/dist/{runClaudeDeps-ck5_GYlP.cjs → runClaudeDeps-CYuozSC6.cjs} +187 -61
  144. package/dist/{runClaudeDeps-D_v8t2SK.mjs → runClaudeDeps-DlVfMG4F.mjs} +192 -66
  145. package/dist/{runGemini-Cj0XsMiM.cjs → runGemini-CEI3b90u.cjs} +33 -33
  146. package/dist/{runGemini-CTr2-cYG.mjs → runGemini-DkYhRk9S.mjs} +33 -33
  147. package/dist/{runOpenClaw-BoN1e3lP.cjs → runOpenClaw-BgjD6E4d.cjs} +18 -18
  148. package/dist/{runOpenClaw-CdDMntiV.mjs → runOpenClaw-DpprWCoz.mjs} +18 -18
  149. package/dist/{sandbox-DcaWB-Ou.mjs → sandbox-DJ7A7lsy.mjs} +4 -4
  150. package/dist/{sandbox-BY2h19gc.cjs → sandbox-XCDUbH72.cjs} +4 -4
  151. package/dist/{selfCheck-DFS_GUaQ.cjs → selfCheck-BYUDB1Uq.cjs} +37 -37
  152. package/dist/selfCheck-C-rNljKV.mjs +86 -0
  153. package/dist/{send-UBTHHNvZ.mjs → send-Ba63huxv.mjs} +8 -8
  154. package/dist/{send-BMsUYU6g.cjs → send-CASDBCyJ.cjs} +8 -8
  155. package/dist/{server-YrHMHNz1.cjs → server-cZoV9XRt.cjs} +6 -6
  156. package/dist/{server-Dt3mCtfQ.mjs → server-w3W0toNd.mjs} +4 -4
  157. package/dist/{sessionLock-DSqiP2lH.cjs → sessionLock-BmLA2S8K.cjs} +134 -3
  158. package/dist/{sessionLock-tEFvFXLD.mjs → sessionLock-G2PMqvsh.mjs} +121 -4
  159. package/dist/{sessionOps-CljctDs5.mjs → sessionOps-DPw5k8vV.mjs} +15 -5
  160. package/dist/{sessionOps-BzeOKIEF.cjs → sessionOps-DXlTmS7J.cjs} +15 -4
  161. package/dist/{sessionProvider-BnUFSJXM.mjs → sessionProvider-DUn91LhJ.mjs} +5 -5
  162. package/dist/{sessionProvider-ORgzmkXy.cjs → sessionProvider-Dg691XQ4.cjs} +5 -5
  163. package/dist/{sessionScanner-Cr6PJ3PT.cjs → sessionScanner-AHjnicxi.cjs} +3 -3
  164. package/dist/{sessionScanner-DZUlkdF6.mjs → sessionScanner-BCXpdZJN.mjs} +3 -3
  165. package/dist/{sessions-aIo_HjmY.cjs → sessions-BiBXOBx0.cjs} +36 -25
  166. package/dist/{sessions-15cag-su.mjs → sessions-Clk8MR5Y.mjs} +35 -26
  167. package/dist/{setupOfflineReconnection-tV0Q1dgR.cjs → setupOfflineReconnection-BKLfOd-i.cjs} +2 -2
  168. package/dist/{setupOfflineReconnection-B7I8R2Ex.mjs → setupOfflineReconnection-DI-QZGYz.mjs} +2 -2
  169. package/dist/{spawn-ByrQgruJ.mjs → spawn-4tsp1uhh.mjs} +15 -15
  170. package/dist/{spawn-VG-HjJiR.cjs → spawn-D5omsx1Q.cjs} +15 -15
  171. package/dist/{spawnAgents-Bh1RPShN.mjs → spawnAgents-CjoU6ZOS.mjs} +8 -2
  172. package/dist/{spawnAgents-C1-4m7aN.cjs → spawnAgents-CtkkIFHd.cjs} +8 -2
  173. package/dist/{spawnHappyCLI-CxiR2Qoy.cjs → spawnHappyCLI-CF_gLi92.cjs} +1 -1
  174. package/dist/{spawnHappyCLI-CEsXwz5V.mjs → spawnHappyCLI-CIA9Sc_5.mjs} +1 -1
  175. package/dist/{startFileWatcher-C-XCZ5t2.cjs → startFileWatcher-9Stpxe7p.cjs} +1 -1
  176. package/dist/{startFileWatcher-DkEeeAtL.mjs → startFileWatcher-CDO6fb2m.mjs} +1 -1
  177. package/dist/{defaultPermissionMode-e2bIIJG4.mjs → startupSessionCreate-BtR4iYEC.mjs} +25 -6
  178. package/dist/{defaultPermissionMode-5EvgRq38.cjs → startupSessionCreate-CcF7rGGB.cjs} +25 -7
  179. package/dist/{streamRelay-D9a4cBEa.cjs → streamRelay-BhI6jqF-.cjs} +1 -1
  180. package/dist/{streamRelay-CqBynIon.mjs → streamRelay-DMwOMTKf.mjs} +1 -1
  181. package/dist/{sync-CoChLEIg.cjs → sync-Ba8N6xba.cjs} +1 -1
  182. package/dist/{sync-BvDMkKAN.mjs → sync-C0PRuTMj.mjs} +1 -1
  183. package/dist/{systemPrompt-CgDaPigN.mjs → systemPrompt-D0q8eyjy.mjs} +2 -2
  184. package/dist/{systemPrompt-Dy_Rf-0Z.cjs → systemPrompt-DV5IReD4.cjs} +2 -2
  185. package/dist/{teams-BC4_e5hR.mjs → teams-BO3_arwM.mjs} +7 -7
  186. package/dist/{teams-DPvfLAk8.cjs → teams-z3Gp-KlV.cjs} +7 -7
  187. package/dist/{template-17HATY_Y.cjs → template-B_5l6pkc.cjs} +1 -1
  188. package/dist/{template-CEK8MEjo.mjs → template-DLR_0hfj.mjs} +1 -1
  189. package/dist/{time-XwEZxKGc.cjs → time-Cy0a-7YX.cjs} +1 -1
  190. package/dist/{time-CUK37wiV.mjs → time-D0jvDRhn.mjs} +1 -1
  191. package/dist/{titleGenerator-DWRVdqMU.mjs → titleGenerator-AGQsXskb.mjs} +1 -1
  192. package/dist/{titleGenerator-DVX0NZUn.cjs → titleGenerator-RGHWP2YL.cjs} +2 -2
  193. package/dist/{todo-BNMGXneA.mjs → todo-BZ954vsz.mjs} +6 -6
  194. package/dist/{todo-CKGrSrRE.cjs → todo-CzIDPLFy.cjs} +6 -6
  195. package/dist/{tools-CjMafO_D.cjs → tools-B1x1j6tz.cjs} +1 -1
  196. package/dist/{tools-CCIEAVbB.mjs → tools-Bei5i03L.mjs} +1 -1
  197. package/dist/{uninstall-CJvJ7gjr.mjs → uninstall-B4T_e3Mr.mjs} +3 -3
  198. package/dist/{uninstall-BdFbTXnL.cjs → uninstall-C3cnIvz1.cjs} +3 -3
  199. package/package.json +7 -7
  200. package/dist/agentAttachments-M_B5qEF2.mjs +0 -18
  201. package/dist/selfCheck-BQ_H2Sns.mjs +0 -86
  202. package/dist/startupSessionCreate-CYc8mra-.cjs +0 -26
  203. package/dist/startupSessionCreate-npXe2TdN.mjs +0 -24
@@ -1,10 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var persistence = require('./persistence-CrzC7yr_.cjs');
3
+ var persistence = require('./persistence-A2NeERZJ.cjs');
4
+ var cliUpdate = require('./cliUpdate-DsKXPFYp.cjs');
4
5
  var node_fs = require('node:fs');
5
6
  var path = require('node:path');
6
- var configuration = require('./configuration-C0ctLGW2.cjs');
7
- var logger = require('./logger-BP1SW7Cs.cjs');
7
+ var configuration = require('./configuration-DfPBa-9d.cjs');
8
+ var logger = require('./logger-Ct2zvaq0.cjs');
8
9
  var processTreeSnapshot = require('./processTreeSnapshot-mDbnuojn.cjs');
9
10
 
10
11
  const PROCESS_IDENTITY_FIELDS = [
@@ -83,6 +84,122 @@ function applyReconnectReplay(response) {
83
84
  return { response: { ...response, seq: cursor.seq }, replay: { source: "offline-exit", seq: cursor.seq } };
84
85
  }
85
86
 
87
+ const AUTO_RESTART_CAPABILITY = "auto-restart-v1";
88
+ const AUTO_RESTART_QUIET_MS = 10 * 60 * 1e3;
89
+ const AUTO_RESTART_RECHECK_CAP_MS = 10 * 60 * 1e3;
90
+ function resolveQuietMs(env = process.env) {
91
+ const raw = env.HAPPY_AUTO_RESTART_QUIET_MS;
92
+ if (raw !== void 0 && raw.trim() !== "") {
93
+ const value = Number(raw);
94
+ if (Number.isFinite(value) && value >= 0) return Math.round(value);
95
+ }
96
+ return AUTO_RESTART_QUIET_MS;
97
+ }
98
+ const AUTO_RESTART_MAX_CONCURRENT = 1;
99
+ const AUTO_RESTART_MIN_GAP_MS = 15e3;
100
+ const AUTO_RESTART_MAX_ATTEMPTS = 2;
101
+ const AUTO_RESTART_BACKOFF_MS = 10 * 60 * 1e3;
102
+ const AUTO_RESTART_MIN_CHECK_MS = 15e3;
103
+ const AUTO_RESTART_FLAVORS = ["claude", "codex", "acp"];
104
+ function wrapperStaleness(input) {
105
+ const wrapper = input.wrapperVersion?.trim();
106
+ if (wrapper) {
107
+ const cmp = cliUpdate.compareExactVersions(wrapper, input.daemonVersion);
108
+ if (cmp !== null && cmp < 0) return { kind: "cli", from: wrapper, target: input.daemonVersion };
109
+ }
110
+ const running = input.agentVersion?.trim();
111
+ const installed = input.installedAgentVersion?.trim();
112
+ if (running && installed) {
113
+ const cmp = cliUpdate.compareExactVersions(running, installed);
114
+ if (cmp !== null && cmp < 0) return { kind: "agent", from: running, target: installed };
115
+ }
116
+ return null;
117
+ }
118
+ function decideAutoRestart(input) {
119
+ const { report } = input;
120
+ if (!input.enabled) return { ok: false, reason: "disabled" };
121
+ if (!input.staleness) return { ok: false, reason: "not-stale" };
122
+ if (!input.trackedLive) return { ok: false, reason: "not-tracked" };
123
+ if (report.exiting) return { ok: false, reason: "exiting" };
124
+ if (!report.uiSession) return { ok: false, reason: "local-terminal" };
125
+ if (report.variant) return { ok: false, reason: "assistant" };
126
+ if (!AUTO_RESTART_FLAVORS.includes(report.flavor)) return { ok: false, reason: "unsupported-flavor" };
127
+ if (!input.resumable) return { ok: false, reason: "not-resumable" };
128
+ if (report.thinking || input.turnActive) return { ok: false, reason: "turn-active" };
129
+ if (report.pendingRequests > 0) return { ok: false, reason: "pending-request" };
130
+ if (report.queuedInputs > 0 || !report.waitingForInput) return { ok: false, reason: "queued-input" };
131
+ if (report.backgroundTasks > 0 || input.backgroundTasks > 0) return { ok: false, reason: "background-tasks" };
132
+ if ((report.scheduledWakeups ?? 0) > 0) return { ok: false, reason: "scheduled-wakeup" };
133
+ if (!(input.now - report.lastActivityAt >= (input.quietMs ?? AUTO_RESTART_QUIET_MS))) return { ok: false, reason: "recent-activity" };
134
+ if (input.automationRunning) return { ok: false, reason: "automation-running" };
135
+ const attempt = input.attempt && input.attempt.target === input.staleness.target ? input.attempt : null;
136
+ if (attempt && attempt.attempts >= AUTO_RESTART_MAX_ATTEMPTS) return { ok: false, reason: "gave-up" };
137
+ if (attempt && input.now < attempt.notBefore) return { ok: false, reason: "backoff" };
138
+ if (input.inFlight >= AUTO_RESTART_MAX_CONCURRENT) return { ok: false, reason: "machine-busy" };
139
+ if (input.lastStartedAt !== null && input.now - input.lastStartedAt < AUTO_RESTART_MIN_GAP_MS) return { ok: false, reason: "machine-busy" };
140
+ return { ok: true };
141
+ }
142
+ function autoRestartNextCheck(verdict, input, jitter = 0) {
143
+ if (verdict.ok) return null;
144
+ switch (verdict.reason) {
145
+ case "recent-activity":
146
+ return Math.max(AUTO_RESTART_MIN_CHECK_MS, input.report.lastActivityAt + (input.quietMs ?? AUTO_RESTART_QUIET_MS) - input.now);
147
+ case "machine-busy":
148
+ return AUTO_RESTART_MIN_GAP_MS + Math.round(Math.min(Math.max(jitter, 0), 0.999) * 2 * AUTO_RESTART_MIN_GAP_MS);
149
+ case "backoff":
150
+ return Math.max(AUTO_RESTART_MIN_CHECK_MS, (input.attempt?.notBefore ?? input.now) - input.now);
151
+ default:
152
+ return null;
153
+ }
154
+ }
155
+ function recordAttempt(previous, target, ok, now, error) {
156
+ if (ok) return null;
157
+ const attempts = (previous && previous.target === target ? previous.attempts : 0) + 1;
158
+ return { target, attempts, notBefore: now + AUTO_RESTART_BACKOFF_MS * attempts, ...error ? { lastError: error } : {} };
159
+ }
160
+ const MANUAL_REASONS = /* @__PURE__ */ new Set(["local-terminal", "assistant", "unsupported-flavor", "not-resumable"]);
161
+ function statusFromVerdict(verdict, previous, staleness, now, attempt) {
162
+ if (verdict.ok) return null;
163
+ if (verdict.reason === "disabled" || verdict.reason === "not-stale" || verdict.reason === "not-tracked") return null;
164
+ const since = previous && previous.target === staleness.target ? previous.since : now;
165
+ if (verdict.reason === "gave-up") {
166
+ return { state: "failed", reason: attempt?.lastError ?? "gave-up", since, target: staleness.target };
167
+ }
168
+ return {
169
+ state: MANUAL_REASONS.has(verdict.reason) ? "manual" : "waiting",
170
+ reason: verdict.reason,
171
+ since,
172
+ target: staleness.target
173
+ };
174
+ }
175
+ function wrapperReportsIdle(input) {
176
+ const caps = input.capabilities ?? [];
177
+ if (input.variant) return false;
178
+ if (caps.includes(AUTO_RESTART_CAPABILITY)) return true;
179
+ if (!caps.includes("agent-hibernation-v1")) return false;
180
+ if (input.flavor !== "claude" && input.flavor !== "codex") return false;
181
+ if (input.spawnedBy && input.spawnedBy.trim()) return false;
182
+ return !(input.tags ?? []).some((tag) => tag === "teams" || tag === "automation" || tag === "assistant");
183
+ }
184
+ const AUTO_UPDATED_EVENT_KIND = "session-auto-updated";
185
+ const AUTO_RESTARTED_ENV = "HAPPY_AUTO_RESTARTED";
186
+ function encodeAutoRestarted(kind, target) {
187
+ return `${kind}:${target}`;
188
+ }
189
+ function decodeAutoRestarted(raw) {
190
+ const match = /^(cli|agent):(\S{1,64})$/.exec(raw?.trim() ?? "");
191
+ return match ? { kind: match[1], target: match[2] } : null;
192
+ }
193
+ function autoUpdatedEventText(kind, version, agentName = "Codex") {
194
+ return kind === "agent" ? `Updated ${agentName} to ${version} (session restarted in place, history kept)` : `Updated to Very Happy ${version} (session restarted in place, history kept)`;
195
+ }
196
+ function takeAutoRestartedEvent(env, agentName) {
197
+ const decoded = decodeAutoRestarted(env[AUTO_RESTARTED_ENV]);
198
+ delete env[AUTO_RESTARTED_ENV];
199
+ if (!decoded) return null;
200
+ return { type: "message", kind: AUTO_UPDATED_EVENT_KIND, message: autoUpdatedEventText(decoded.kind, decoded.target, agentName) };
201
+ }
202
+
86
203
  const runtime = {
87
204
  signal: (pid, signal) => process.kill(pid, signal),
88
205
  isAlive: (pid) => {
@@ -235,13 +352,27 @@ async function claimSessionOrExit(happySessionId, options) {
235
352
  process.on("exit", () => releaseSessionLock(happySessionId));
236
353
  }
237
354
 
355
+ exports.AUTO_RESTARTED_ENV = AUTO_RESTARTED_ENV;
356
+ exports.AUTO_RESTART_CAPABILITY = AUTO_RESTART_CAPABILITY;
357
+ exports.AUTO_RESTART_MAX_ATTEMPTS = AUTO_RESTART_MAX_ATTEMPTS;
358
+ exports.AUTO_RESTART_MIN_GAP_MS = AUTO_RESTART_MIN_GAP_MS;
359
+ exports.AUTO_RESTART_RECHECK_CAP_MS = AUTO_RESTART_RECHECK_CAP_MS;
238
360
  exports.applyReconnectReplay = applyReconnectReplay;
239
361
  exports.applyServerSnapshot = applyServerSnapshot;
362
+ exports.autoRestartNextCheck = autoRestartNextCheck;
240
363
  exports.claimSessionOrExit = claimSessionOrExit;
364
+ exports.decideAutoRestart = decideAutoRestart;
365
+ exports.encodeAutoRestarted = encodeAutoRestarted;
241
366
  exports.exitCursorStamp = exitCursorStamp;
242
367
  exports.mergeReconnectMetadata = mergeReconnectMetadata;
243
368
  exports.processIdentityFields = processIdentityFields;
244
369
  exports.readSessionLock = readSessionLock;
370
+ exports.recordAttempt = recordAttempt;
371
+ exports.resolveQuietMs = resolveQuietMs;
372
+ exports.statusFromVerdict = statusFromVerdict;
373
+ exports.takeAutoRestartedEvent = takeAutoRestartedEvent;
245
374
  exports.terminateProcess = terminateProcess;
246
375
  exports.terminateProcessTree = terminateProcessTree;
247
376
  exports.withoutServerSnapshot = withoutServerSnapshot;
377
+ exports.wrapperReportsIdle = wrapperReportsIdle;
378
+ exports.wrapperStaleness = wrapperStaleness;
@@ -1,8 +1,9 @@
1
- import { n as hibernationReplaySeq } from './persistence-0INrP3aB.mjs';
1
+ import { o as hibernationReplaySeq } from './persistence-Cpw4yJs8.mjs';
2
+ import { c as compareExactVersions } from './cliUpdate-Y34VGe9Y.mjs';
2
3
  import { existsSync, readFileSync, unlinkSync, mkdirSync, renameSync } from 'node:fs';
3
4
  import { join } from 'node:path';
4
- import { c as configuration, w as writePrivateFileSync } from './configuration-1FabKklB.mjs';
5
- import { l as logger } from './logger-DOKH3Zbh.mjs';
5
+ import { c as configuration, w as writePrivateFileSync } from './configuration-ECqXu34R.mjs';
6
+ import { l as logger } from './logger-GcbI0eg2.mjs';
6
7
  import { s as snapshotTree, k as killSurvivors } from './processTreeSnapshot-CuLJDNC-.mjs';
7
8
 
8
9
  const PROCESS_IDENTITY_FIELDS = [
@@ -81,6 +82,122 @@ function applyReconnectReplay(response) {
81
82
  return { response: { ...response, seq: cursor.seq }, replay: { source: "offline-exit", seq: cursor.seq } };
82
83
  }
83
84
 
85
+ const AUTO_RESTART_CAPABILITY = "auto-restart-v1";
86
+ const AUTO_RESTART_QUIET_MS = 10 * 60 * 1e3;
87
+ const AUTO_RESTART_RECHECK_CAP_MS = 10 * 60 * 1e3;
88
+ function resolveQuietMs(env = process.env) {
89
+ const raw = env.HAPPY_AUTO_RESTART_QUIET_MS;
90
+ if (raw !== void 0 && raw.trim() !== "") {
91
+ const value = Number(raw);
92
+ if (Number.isFinite(value) && value >= 0) return Math.round(value);
93
+ }
94
+ return AUTO_RESTART_QUIET_MS;
95
+ }
96
+ const AUTO_RESTART_MAX_CONCURRENT = 1;
97
+ const AUTO_RESTART_MIN_GAP_MS = 15e3;
98
+ const AUTO_RESTART_MAX_ATTEMPTS = 2;
99
+ const AUTO_RESTART_BACKOFF_MS = 10 * 60 * 1e3;
100
+ const AUTO_RESTART_MIN_CHECK_MS = 15e3;
101
+ const AUTO_RESTART_FLAVORS = ["claude", "codex", "acp"];
102
+ function wrapperStaleness(input) {
103
+ const wrapper = input.wrapperVersion?.trim();
104
+ if (wrapper) {
105
+ const cmp = compareExactVersions(wrapper, input.daemonVersion);
106
+ if (cmp !== null && cmp < 0) return { kind: "cli", from: wrapper, target: input.daemonVersion };
107
+ }
108
+ const running = input.agentVersion?.trim();
109
+ const installed = input.installedAgentVersion?.trim();
110
+ if (running && installed) {
111
+ const cmp = compareExactVersions(running, installed);
112
+ if (cmp !== null && cmp < 0) return { kind: "agent", from: running, target: installed };
113
+ }
114
+ return null;
115
+ }
116
+ function decideAutoRestart(input) {
117
+ const { report } = input;
118
+ if (!input.enabled) return { ok: false, reason: "disabled" };
119
+ if (!input.staleness) return { ok: false, reason: "not-stale" };
120
+ if (!input.trackedLive) return { ok: false, reason: "not-tracked" };
121
+ if (report.exiting) return { ok: false, reason: "exiting" };
122
+ if (!report.uiSession) return { ok: false, reason: "local-terminal" };
123
+ if (report.variant) return { ok: false, reason: "assistant" };
124
+ if (!AUTO_RESTART_FLAVORS.includes(report.flavor)) return { ok: false, reason: "unsupported-flavor" };
125
+ if (!input.resumable) return { ok: false, reason: "not-resumable" };
126
+ if (report.thinking || input.turnActive) return { ok: false, reason: "turn-active" };
127
+ if (report.pendingRequests > 0) return { ok: false, reason: "pending-request" };
128
+ if (report.queuedInputs > 0 || !report.waitingForInput) return { ok: false, reason: "queued-input" };
129
+ if (report.backgroundTasks > 0 || input.backgroundTasks > 0) return { ok: false, reason: "background-tasks" };
130
+ if ((report.scheduledWakeups ?? 0) > 0) return { ok: false, reason: "scheduled-wakeup" };
131
+ if (!(input.now - report.lastActivityAt >= (input.quietMs ?? AUTO_RESTART_QUIET_MS))) return { ok: false, reason: "recent-activity" };
132
+ if (input.automationRunning) return { ok: false, reason: "automation-running" };
133
+ const attempt = input.attempt && input.attempt.target === input.staleness.target ? input.attempt : null;
134
+ if (attempt && attempt.attempts >= AUTO_RESTART_MAX_ATTEMPTS) return { ok: false, reason: "gave-up" };
135
+ if (attempt && input.now < attempt.notBefore) return { ok: false, reason: "backoff" };
136
+ if (input.inFlight >= AUTO_RESTART_MAX_CONCURRENT) return { ok: false, reason: "machine-busy" };
137
+ if (input.lastStartedAt !== null && input.now - input.lastStartedAt < AUTO_RESTART_MIN_GAP_MS) return { ok: false, reason: "machine-busy" };
138
+ return { ok: true };
139
+ }
140
+ function autoRestartNextCheck(verdict, input, jitter = 0) {
141
+ if (verdict.ok) return null;
142
+ switch (verdict.reason) {
143
+ case "recent-activity":
144
+ return Math.max(AUTO_RESTART_MIN_CHECK_MS, input.report.lastActivityAt + (input.quietMs ?? AUTO_RESTART_QUIET_MS) - input.now);
145
+ case "machine-busy":
146
+ return AUTO_RESTART_MIN_GAP_MS + Math.round(Math.min(Math.max(jitter, 0), 0.999) * 2 * AUTO_RESTART_MIN_GAP_MS);
147
+ case "backoff":
148
+ return Math.max(AUTO_RESTART_MIN_CHECK_MS, (input.attempt?.notBefore ?? input.now) - input.now);
149
+ default:
150
+ return null;
151
+ }
152
+ }
153
+ function recordAttempt(previous, target, ok, now, error) {
154
+ if (ok) return null;
155
+ const attempts = (previous && previous.target === target ? previous.attempts : 0) + 1;
156
+ return { target, attempts, notBefore: now + AUTO_RESTART_BACKOFF_MS * attempts, ...error ? { lastError: error } : {} };
157
+ }
158
+ const MANUAL_REASONS = /* @__PURE__ */ new Set(["local-terminal", "assistant", "unsupported-flavor", "not-resumable"]);
159
+ function statusFromVerdict(verdict, previous, staleness, now, attempt) {
160
+ if (verdict.ok) return null;
161
+ if (verdict.reason === "disabled" || verdict.reason === "not-stale" || verdict.reason === "not-tracked") return null;
162
+ const since = previous && previous.target === staleness.target ? previous.since : now;
163
+ if (verdict.reason === "gave-up") {
164
+ return { state: "failed", reason: attempt?.lastError ?? "gave-up", since, target: staleness.target };
165
+ }
166
+ return {
167
+ state: MANUAL_REASONS.has(verdict.reason) ? "manual" : "waiting",
168
+ reason: verdict.reason,
169
+ since,
170
+ target: staleness.target
171
+ };
172
+ }
173
+ function wrapperReportsIdle(input) {
174
+ const caps = input.capabilities ?? [];
175
+ if (input.variant) return false;
176
+ if (caps.includes(AUTO_RESTART_CAPABILITY)) return true;
177
+ if (!caps.includes("agent-hibernation-v1")) return false;
178
+ if (input.flavor !== "claude" && input.flavor !== "codex") return false;
179
+ if (input.spawnedBy && input.spawnedBy.trim()) return false;
180
+ return !(input.tags ?? []).some((tag) => tag === "teams" || tag === "automation" || tag === "assistant");
181
+ }
182
+ const AUTO_UPDATED_EVENT_KIND = "session-auto-updated";
183
+ const AUTO_RESTARTED_ENV = "HAPPY_AUTO_RESTARTED";
184
+ function encodeAutoRestarted(kind, target) {
185
+ return `${kind}:${target}`;
186
+ }
187
+ function decodeAutoRestarted(raw) {
188
+ const match = /^(cli|agent):(\S{1,64})$/.exec(raw?.trim() ?? "");
189
+ return match ? { kind: match[1], target: match[2] } : null;
190
+ }
191
+ function autoUpdatedEventText(kind, version, agentName = "Codex") {
192
+ return kind === "agent" ? `Updated ${agentName} to ${version} (session restarted in place, history kept)` : `Updated to Very Happy ${version} (session restarted in place, history kept)`;
193
+ }
194
+ function takeAutoRestartedEvent(env, agentName) {
195
+ const decoded = decodeAutoRestarted(env[AUTO_RESTARTED_ENV]);
196
+ delete env[AUTO_RESTARTED_ENV];
197
+ if (!decoded) return null;
198
+ return { type: "message", kind: AUTO_UPDATED_EVENT_KIND, message: autoUpdatedEventText(decoded.kind, decoded.target, agentName) };
199
+ }
200
+
84
201
  const runtime = {
85
202
  signal: (pid, signal) => process.kill(pid, signal),
86
203
  isAlive: (pid) => {
@@ -233,4 +350,4 @@ async function claimSessionOrExit(happySessionId, options) {
233
350
  process.on("exit", () => releaseSessionLock(happySessionId));
234
351
  }
235
352
 
236
- export { applyServerSnapshot as a, applyReconnectReplay as b, claimSessionOrExit as c, terminateProcessTree as d, exitCursorStamp as e, mergeReconnectMetadata as m, processIdentityFields as p, readSessionLock as r, terminateProcess as t, withoutServerSnapshot as w };
353
+ export { AUTO_RESTART_CAPABILITY as A, applyServerSnapshot as a, applyReconnectReplay as b, claimSessionOrExit as c, wrapperReportsIdle as d, exitCursorStamp as e, decideAutoRestart as f, autoRestartNextCheck as g, wrapperStaleness as h, AUTO_RESTART_MAX_ATTEMPTS as i, AUTO_RESTART_MIN_GAP_MS as j, readSessionLock as k, terminateProcess as l, mergeReconnectMetadata as m, terminateProcessTree as n, AUTO_RESTARTED_ENV as o, processIdentityFields as p, encodeAutoRestarted as q, recordAttempt as r, statusFromVerdict as s, takeAutoRestartedEvent as t, resolveQuietMs as u, AUTO_RESTART_RECHECK_CAP_MS as v, withoutServerSnapshot as w };
@@ -1,10 +1,10 @@
1
1
  import axios from 'axios';
2
- import { c as configuration } from './configuration-1FabKklB.mjs';
2
+ import { c as configuration } from './configuration-ECqXu34R.mjs';
3
3
  import { e as encodeBase64, g as encrypt, d as decodeBase64, h as decrypt } from './authRelay-DhQhkBvX.mjs';
4
- import { l as listDaemonSessions, f as stopDaemonSession } from './controlClient-DwNnNAUx.mjs';
5
- import { b as readCredentialsForConfiguredRelay, c as readPersistedSessions } from './persistence-0INrP3aB.mjs';
4
+ import { l as listDaemonSessions, f as stopDaemonSession } from './controlClient-ClI7A0qE.mjs';
5
+ import { b as readCredentialsForConfiguredRelay, c as readPersistedSessions } from './persistence-Cpw4yJs8.mjs';
6
6
  import { randomUUID } from 'node:crypto';
7
- import { d as delay } from './time-CUK37wiV.mjs';
7
+ import { d as delay } from './time-D0jvDRhn.mjs';
8
8
  import { c as compactCommandText, p as parseClear } from './specialCommands-MXUN0wfI.mjs';
9
9
  import { io } from 'socket.io-client';
10
10
  import { b as backgroundTasksReport } from './backgroundTaskActivity-8PdPxrvy.mjs';
@@ -41,6 +41,8 @@ async function sendUserMessage(sessionId, persisted, text, client, options = {})
41
41
  ...options.model !== void 0 ? { model: options.model } : {},
42
42
  ...options.permissionMode !== void 0 ? { permissionMode: options.permissionMode } : {},
43
43
  ...options.effort !== void 0 ? { effort: options.effort } : {},
44
+ ...options.modelIntent !== void 0 ? { modelIntent: options.modelIntent } : {},
45
+ ...options.effortIntent !== void 0 ? { effortIntent: options.effortIntent } : {},
44
46
  ...options.delivery !== void 0 ? { delivery: options.delivery } : {}
45
47
  }
46
48
  };
@@ -541,6 +543,12 @@ function sessionLiveness(live, sessionId) {
541
543
  const child = live.find((entry) => entry.happySessionId === sessionId);
542
544
  return child ? livenessOf(child) : { live: false };
543
545
  }
546
+ function lineageOf(meta) {
547
+ return {
548
+ ...typeof meta?.parentSessionId === "string" && meta.parentSessionId ? { parentSessionId: meta.parentSessionId } : {},
549
+ ...typeof meta?.forkedFromMessageId === "string" && meta.forkedFromMessageId ? { forkedFromMessageId: meta.forkedFromMessageId } : {}
550
+ };
551
+ }
544
552
  function toSummary(id, persisted, extra) {
545
553
  const meta = persisted?.metadata;
546
554
  return {
@@ -553,6 +561,7 @@ function toSummary(id, persisted, extra) {
553
561
  ...meta?.flavor ? { flavor: meta.flavor } : {},
554
562
  ...meta?.tags?.length ? { tags: [...meta.tags] } : {},
555
563
  ...meta?.variant ? { variant: meta.variant } : {},
564
+ ...lineageOf(meta),
556
565
  url: sessionWebUrl(id),
557
566
  ...persisted?.savedAt !== void 0 ? { savedAt: persisted.savedAt } : {}
558
567
  };
@@ -598,6 +607,7 @@ function summarizeAccountSession(row, persisted, liveIds, now) {
598
607
  ...meta.flavor ? { flavor: meta.flavor } : {},
599
608
  ...meta.tags?.length ? { tags: [...meta.tags] } : {},
600
609
  ...meta.variant ? { variant: meta.variant } : {},
610
+ ...lineageOf(meta),
601
611
  ...meta.machineId ? { machineId: meta.machineId } : {},
602
612
  ...persisted.savedAt !== void 0 ? { savedAt: persisted.savedAt } : {},
603
613
  pending,
@@ -785,4 +795,4 @@ async function unarchiveSession(sessionId) {
785
795
  );
786
796
  }
787
797
 
788
- export { DEFAULT_RECENT_LIMIT as D, MAX_READ_LIMIT as M, TurnWaitTimeoutError as T, listSessions as a, stopSession as b, resolvePermissionRequest as c, archiveSession as d, sendUserMessage as e, readSessionMetadata as f, waitForSessionKey as g, sessionLiveness as h, readSessionState as i, analyzeLatestTurn as j, readSessionLog as k, listAccountSessions as l, TURN_WINDOW as m, userPromptText as n, openUserScopedSocket as o, readSessionTranscript as r, sessionWebUrl as s, unarchiveSession as u, waitForTurnEnd as w };
798
+ export { DEFAULT_RECENT_LIMIT as D, MAX_READ_LIMIT as M, TurnWaitTimeoutError as T, listSessions as a, stopSession as b, resolvePermissionRequest as c, archiveSession as d, sendUserMessage as e, readSessionMetadata as f, waitForSessionKey as g, sessionLiveness as h, readSessionState as i, lineageOf as j, analyzeLatestTurn as k, listAccountSessions as l, readSessionLog as m, TURN_WINDOW as n, openUserScopedSocket as o, userPromptText as p, readSessionTranscript as r, sessionWebUrl as s, unarchiveSession as u, waitForTurnEnd as w };
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
3
  var axios = require('axios');
4
- var configuration = require('./configuration-C0ctLGW2.cjs');
4
+ var configuration = require('./configuration-DfPBa-9d.cjs');
5
5
  var authRelay = require('./authRelay-Dy1qU9td.cjs');
6
- var controlClient = require('./controlClient-F7hAEEy2.cjs');
7
- var persistence = require('./persistence-CrzC7yr_.cjs');
6
+ var controlClient = require('./controlClient-C13_pSKG.cjs');
7
+ var persistence = require('./persistence-A2NeERZJ.cjs');
8
8
  var node_crypto = require('node:crypto');
9
- var time = require('./time-XwEZxKGc.cjs');
9
+ var time = require('./time-Cy0a-7YX.cjs');
10
10
  var specialCommands = require('./specialCommands-J3JFOq0J.cjs');
11
11
  var socket_ioClient = require('socket.io-client');
12
12
  var backgroundTaskActivity = require('./backgroundTaskActivity-CBvUdj39.cjs');
@@ -43,6 +43,8 @@ async function sendUserMessage(sessionId, persisted, text, client, options = {})
43
43
  ...options.model !== void 0 ? { model: options.model } : {},
44
44
  ...options.permissionMode !== void 0 ? { permissionMode: options.permissionMode } : {},
45
45
  ...options.effort !== void 0 ? { effort: options.effort } : {},
46
+ ...options.modelIntent !== void 0 ? { modelIntent: options.modelIntent } : {},
47
+ ...options.effortIntent !== void 0 ? { effortIntent: options.effortIntent } : {},
46
48
  ...options.delivery !== void 0 ? { delivery: options.delivery } : {}
47
49
  }
48
50
  };
@@ -543,6 +545,12 @@ function sessionLiveness(live, sessionId) {
543
545
  const child = live.find((entry) => entry.happySessionId === sessionId);
544
546
  return child ? livenessOf(child) : { live: false };
545
547
  }
548
+ function lineageOf(meta) {
549
+ return {
550
+ ...typeof meta?.parentSessionId === "string" && meta.parentSessionId ? { parentSessionId: meta.parentSessionId } : {},
551
+ ...typeof meta?.forkedFromMessageId === "string" && meta.forkedFromMessageId ? { forkedFromMessageId: meta.forkedFromMessageId } : {}
552
+ };
553
+ }
546
554
  function toSummary(id, persisted, extra) {
547
555
  const meta = persisted?.metadata;
548
556
  return {
@@ -555,6 +563,7 @@ function toSummary(id, persisted, extra) {
555
563
  ...meta?.flavor ? { flavor: meta.flavor } : {},
556
564
  ...meta?.tags?.length ? { tags: [...meta.tags] } : {},
557
565
  ...meta?.variant ? { variant: meta.variant } : {},
566
+ ...lineageOf(meta),
558
567
  url: sessionWebUrl(id),
559
568
  ...persisted?.savedAt !== void 0 ? { savedAt: persisted.savedAt } : {}
560
569
  };
@@ -600,6 +609,7 @@ function summarizeAccountSession(row, persisted, liveIds, now) {
600
609
  ...meta.flavor ? { flavor: meta.flavor } : {},
601
610
  ...meta.tags?.length ? { tags: [...meta.tags] } : {},
602
611
  ...meta.variant ? { variant: meta.variant } : {},
612
+ ...lineageOf(meta),
603
613
  ...meta.machineId ? { machineId: meta.machineId } : {},
604
614
  ...persisted.savedAt !== void 0 ? { savedAt: persisted.savedAt } : {},
605
615
  pending,
@@ -793,6 +803,7 @@ exports.TURN_WINDOW = TURN_WINDOW;
793
803
  exports.TurnWaitTimeoutError = TurnWaitTimeoutError;
794
804
  exports.analyzeLatestTurn = analyzeLatestTurn;
795
805
  exports.archiveSession = archiveSession;
806
+ exports.lineageOf = lineageOf;
796
807
  exports.listAccountSessions = listAccountSessions;
797
808
  exports.listSessions = listSessions;
798
809
  exports.openUserScopedSocket = openUserScopedSocket;
@@ -1,15 +1,15 @@
1
1
  import chalk from 'chalk';
2
- import { c as configuration } from './configuration-1FabKklB.mjs';
3
- import { r as restartDaemonSession } from './controlClient-DwNnNAUx.mjs';
2
+ import { c as configuration } from './configuration-ECqXu34R.mjs';
3
+ import { r as restartDaemonSession } from './controlClient-ClI7A0qE.mjs';
4
4
  import { r as readSessionProviders, b as readProviders, w as writeSessionProviders, u as updateBindings, s as sessionProvidersPath } from './providerBinding-CYubGg-Z.mjs';
5
5
  import 'node:fs';
6
6
  import 'node:os';
7
7
  import 'node:path';
8
- import './package-DTcaIhjW.mjs';
8
+ import './package-BsUHyqWe.mjs';
9
9
  import 'node:fs/promises';
10
- import './logger-DOKH3Zbh.mjs';
10
+ import './logger-GcbI0eg2.mjs';
11
11
  import 'node:util';
12
- import './persistence-0INrP3aB.mjs';
12
+ import './persistence-Cpw4yJs8.mjs';
13
13
  import 'zod';
14
14
  import './authRelay-DhQhkBvX.mjs';
15
15
  import 'node:crypto';
@@ -1,17 +1,17 @@
1
1
  'use strict';
2
2
 
3
3
  var chalk = require('chalk');
4
- var configuration = require('./configuration-C0ctLGW2.cjs');
5
- var controlClient = require('./controlClient-F7hAEEy2.cjs');
4
+ var configuration = require('./configuration-DfPBa-9d.cjs');
5
+ var controlClient = require('./controlClient-C13_pSKG.cjs');
6
6
  var providerBinding = require('./providerBinding-B-Qbx9W2.cjs');
7
7
  require('node:fs');
8
8
  require('node:os');
9
9
  require('node:path');
10
- require('./package-CYDdLA6R.cjs');
10
+ require('./package-9n7wd2dT.cjs');
11
11
  require('node:fs/promises');
12
- require('./logger-BP1SW7Cs.cjs');
12
+ require('./logger-Ct2zvaq0.cjs');
13
13
  require('node:util');
14
- require('./persistence-CrzC7yr_.cjs');
14
+ require('./persistence-A2NeERZJ.cjs');
15
15
  require('zod');
16
16
  require('./authRelay-Dy1qU9td.cjs');
17
17
  require('node:crypto');
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var sync = require('./sync-CoChLEIg.cjs');
3
+ var sync = require('./sync-Ba8N6xba.cjs');
4
4
  var types = require('./types-CRS-srZK.cjs');
5
5
  var path$1 = require('node:path');
6
6
  var node_fs = require('node:fs');
7
7
  var transcriptCursor = require('./transcriptCursor-DcXGLeSc.cjs');
8
- var logger = require('./logger-BP1SW7Cs.cjs');
9
- var startFileWatcher = require('./startFileWatcher-C-XCZ5t2.cjs');
8
+ var logger = require('./logger-Ct2zvaq0.cjs');
9
+ var startFileWatcher = require('./startFileWatcher-9Stpxe7p.cjs');
10
10
  var path = require('./path-B7zW-WwE.cjs');
11
11
 
12
12
  class Future {
@@ -1,10 +1,10 @@
1
- import { I as InvalidateSync } from './sync-BvDMkKAN.mjs';
1
+ import { I as InvalidateSync } from './sync-C0PRuTMj.mjs';
2
2
  import { R as RawJSONLinesSchema } from './types-CkqAACXx.mjs';
3
3
  import { join } from 'node:path';
4
4
  import { statSync } from 'node:fs';
5
5
  import { r as readTranscriptIncrement, i as isValidTranscriptHint } from './transcriptCursor-B7T_gkQ0.mjs';
6
- import { l as logger } from './logger-DOKH3Zbh.mjs';
7
- import { s as startFileWatcher } from './startFileWatcher-DkEeeAtL.mjs';
6
+ import { l as logger } from './logger-GcbI0eg2.mjs';
7
+ import { s as startFileWatcher } from './startFileWatcher-CDO6fb2m.mjs';
8
8
  import { g as getProjectPath } from './path-D2wdaNSk.mjs';
9
9
 
10
10
  class Future {