very-happy-cli 0.2.182 → 0.2.183

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/dist/{AcpBackend-DLk3gMYH.mjs → AcpBackend-9c-Jeaxd.mjs} +3 -3
  2. package/dist/{AcpBackend-JA5eu8Y0.cjs → AcpBackend-B-aMuEzO.cjs} +3 -3
  3. package/dist/{AcpSessionManager-DjYidq4C.cjs → AcpSessionManager-BxXe24AV.cjs} +10 -3
  4. package/dist/{AcpSessionManager-OrCww-Qv.mjs → AcpSessionManager-CS0FOSQk.mjs} +10 -3
  5. package/dist/{BasePermissionHandler-u-neo-iN.mjs → BasePermissionHandler-BJ1ID_Br.mjs} +1 -1
  6. package/dist/{BasePermissionHandler-D3PMKLBS.cjs → BasePermissionHandler-BREjppjP.cjs} +1 -1
  7. package/dist/{acpSessionResume-u2TwX5Jd.mjs → acpSessionResume-BKtI9Jq_.mjs} +1 -1
  8. package/dist/{acpSessionResume-Dxo8222T.cjs → acpSessionResume-mVoJ75vI.cjs} +1 -1
  9. package/dist/{agentHome-D3hNrnoA.mjs → agentHome-B8Ctr_Nu.mjs} +4 -4
  10. package/dist/{agentHome-CP1tCBXz.cjs → agentHome-rzjm56o4.cjs} +4 -4
  11. package/dist/{api-C_YSQnsi.mjs → api-C29WLYkW.mjs} +79 -12
  12. package/dist/{api-CZWcG7uh.cjs → api-xZiqVynF.cjs} +81 -11
  13. package/dist/{apiMachine-DPGrED5C.cjs → apiMachine-B-FNBIYG.cjs} +14 -14
  14. package/dist/{apiMachine-C_GA5Bm-.mjs → apiMachine-Dz6Yfk0m.mjs} +14 -14
  15. package/dist/{attachmentContent-I_dJIevE.cjs → attachmentContent-COV4LF8k.cjs} +2 -2
  16. package/dist/{attachmentContent-Ckzyb1Uy.mjs → attachmentContent-DwY0uIg6.mjs} +2 -2
  17. package/dist/{auth-Lw_utSMV.cjs → auth-CYtk9_ga.cjs} +5 -5
  18. package/dist/{auth-BKnE7uv7.cjs → auth-D_qsnVr3.cjs} +8 -8
  19. package/dist/{auth-DOXMI-xp.mjs → auth-DvbSDalm.mjs} +8 -8
  20. package/dist/{auth-CGgpiJ5-.mjs → auth-xT70IYMx.mjs} +5 -5
  21. package/dist/{auto-CIgFHIyQ.cjs → auto-DT_PfpCx.cjs} +32 -25
  22. package/dist/{auto-Z56mMZnH.mjs → auto-IiPqvIsN.mjs} +32 -26
  23. package/dist/{bootstrap-DsXp74wv.cjs → bootstrap-C50NkfPx.cjs} +2 -2
  24. package/dist/{bootstrap-D3vlOROj.mjs → bootstrap-DS8Acdhm.mjs} +2 -2
  25. package/dist/{browser-CUxGoATV.mjs → browser-1j9gdZoD.mjs} +1 -1
  26. package/dist/{browser-CZlA9AkO.cjs → browser-CxKZLd2T.cjs} +1 -1
  27. package/dist/{claudeLocal-oELvwiZL.cjs → claudeLocal-CgNWpepB.cjs} +5 -5
  28. package/dist/{claudeLocal-FnTUgwCi.mjs → claudeLocal-U1Fa9sJo.mjs} +5 -5
  29. package/dist/{claudeLocalLauncher-CO5YHCzi.mjs → claudeLocalLauncher-BjCsfZUE.mjs} +10 -10
  30. package/dist/{claudeLocalLauncher-QsVXEVdE.cjs → claudeLocalLauncher-IyFm0D6a.cjs} +10 -10
  31. package/dist/{claudeSessionFork-Cspr6QW0.mjs → claudeSessionFork-6-1vKISn.mjs} +1 -1
  32. package/dist/{claudeSessionFork-BA4GE5AL.cjs → claudeSessionFork-BUO1XdSm.cjs} +1 -1
  33. package/dist/{client-xnWiHqdb.cjs → client--vZueZYF.cjs} +4 -4
  34. package/dist/{client-o-meK7-a.mjs → client-5_zDNdOh.mjs} +2 -2
  35. package/dist/{client-Ctbw05Xj.mjs → client-BgHvK7lo.mjs} +15 -7
  36. package/dist/{client-CDuW4MS9.cjs → client-DYGDBD0M.cjs} +15 -7
  37. package/dist/{client-DK8CzUry.cjs → client-DcKJ0ul_.cjs} +2 -2
  38. package/dist/{client-BGfmSbWc.mjs → client-DfDyE322.mjs} +4 -4
  39. package/dist/codex/happyMcpStdioBridge.cjs +16 -16
  40. package/dist/codex/happyMcpStdioBridge.mjs +16 -16
  41. package/dist/{codexAppServerClient-DhNDTU_i.cjs → codexAppServerClient-C3nrTfwY.cjs} +3 -3
  42. package/dist/{codexAppServerClient-BlsOZLul.mjs → codexAppServerClient-DvBg4hGc.mjs} +3 -3
  43. package/dist/{codexCommand-BGx5NMQR.mjs → codexCommand-Bqp2--g_.mjs} +94 -60
  44. package/dist/{codexCommand-DJDPfpIs.cjs → codexCommand-DSiU6MNt.cjs} +94 -60
  45. package/dist/{codexTermination-CqPMuokw.cjs → codexTermination-D9TRTglF.cjs} +1 -1
  46. package/dist/{codexTermination-CVhhwHZU.mjs → codexTermination-DsliWl_s.mjs} +1 -1
  47. package/dist/{config-CHpxzXBL.cjs → config-CRhWiOwi.cjs} +3 -3
  48. package/dist/{config-CWAe08-Q.mjs → config-DeaqRn3o.mjs} +3 -3
  49. package/dist/{configuration-B-CugKJ3.cjs → configuration-K3I6yOjZ.cjs} +1 -1
  50. package/dist/{configuration-YXw_Dcsb.mjs → configuration-elzht62L.mjs} +1 -1
  51. package/dist/{connect-BmHvMXH2.cjs → connect-B5UbfmO3.cjs} +13 -13
  52. package/dist/{connect-CPeJXHha.mjs → connect-CT5cOlnC.mjs} +13 -13
  53. package/dist/{context-Drzs_Z38.mjs → context-CLj1_RYF.mjs} +1 -1
  54. package/dist/{context-BtIVqHI5.cjs → context-DNKNF8Yh.cjs} +1 -1
  55. package/dist/{controlClient-D0kGwKYx.cjs → controlClient-ChqmxgbB.cjs} +3 -3
  56. package/dist/{controlClient-BL4hb4l3.mjs → controlClient-CuYQs2aZ.mjs} +3 -3
  57. package/dist/{createSessionMetadata-DvGDsnsn.mjs → createSessionMetadata-C1MbLQnh.mjs} +2 -2
  58. package/dist/{createSessionMetadata-L499emJn.cjs → createSessionMetadata-QfiRx4Tf.cjs} +2 -2
  59. package/dist/daemonSupervisor-57JYYzMf.cjs +268 -0
  60. package/dist/daemonSupervisor-DfzrtNhM.mjs +245 -0
  61. package/dist/{defaultPermissionMode-MXpZlXud.cjs → defaultPermissionMode-DQmdZZIg.cjs} +2 -2
  62. package/dist/{defaultPermissionMode-BLfxu-Yz.mjs → defaultPermissionMode-U9LuUeQh.mjs} +2 -2
  63. package/dist/{deterministicJson-CfLkBRvU.cjs → deterministicJson-BBRUcB8i.cjs} +569 -17
  64. package/dist/{deterministicJson-B_UAbmQ4.mjs → deterministicJson-BixlyPWV.mjs} +572 -21
  65. package/dist/{doctor-DMvlzmnE.cjs → doctor-CKgHUV4W.cjs} +7 -7
  66. package/dist/{doctor-bKScPtZu.mjs → doctor-Dban2oE2.mjs} +7 -7
  67. package/dist/{downloadTarget-D33BFvew.cjs → downloadTarget-CmC11Y7E.cjs} +6 -6
  68. package/dist/{downloadTarget-J9j37eFG.mjs → downloadTarget-VUTd9lEO.mjs} +6 -6
  69. package/dist/{ensureDaemonRunning-2IqWROJp.cjs → ensureDaemonRunning-L0fl0cLE.cjs} +5 -5
  70. package/dist/{ensureDaemonRunning-DLvwhpNg.mjs → ensureDaemonRunning-khb8Nr1n.mjs} +5 -5
  71. package/dist/{handleResumeCommand-CjtjQ_I7.mjs → handleResumeCommand-CLDGWpTJ.mjs} +5 -5
  72. package/dist/{handleResumeCommand-Dp2Y-p6V.cjs → handleResumeCommand-D9myBN2N.cjs} +5 -5
  73. package/dist/{index-BOT0Tg5E.mjs → index-BMZx-699.mjs} +4 -4
  74. package/dist/{index-CZC7egJA.cjs → index-BdJs0465.cjs} +3 -3
  75. package/dist/{index-BI0h2Zks.mjs → index-BptfFoXM.mjs} +268 -77
  76. package/dist/{index-DymOv3kK.cjs → index-COSjJPIv.cjs} +4 -4
  77. package/dist/{index-D_LvOWUN.mjs → index-CtwqBeH6.mjs} +3 -3
  78. package/dist/{index-DYVIbhAJ.cjs → index-DgA79dVw.cjs} +40 -40
  79. package/dist/{index-oh8XEozJ.cjs → index-Fq-jxjsB.cjs} +277 -76
  80. package/dist/{index-Cllzqoes.mjs → index-GkkbUZX-.mjs} +4 -4
  81. package/dist/{index-kA46KMxN.mjs → index-IRI8s8kz.mjs} +41 -41
  82. package/dist/{index-B_aNaW9w.cjs → index-y4JNyz9H.cjs} +4 -4
  83. package/dist/index.cjs +2 -2
  84. package/dist/index.mjs +2 -2
  85. package/dist/{install-D2NCbeJ-.cjs → install-BATFlr_l.cjs} +2 -2
  86. package/dist/{install-D0inLCv-.mjs → install-F3rP8tBU.mjs} +2 -2
  87. package/dist/{install-C46mkr9a.mjs → install-JvCk2PJV.mjs} +3 -3
  88. package/dist/{install-BAa_Xmof.cjs → install-cn98bTCs.cjs} +3 -3
  89. package/dist/lib.cjs +12 -12
  90. package/dist/lib.d.cts +1 -1
  91. package/dist/lib.d.mts +1 -1
  92. package/dist/lib.mjs +12 -12
  93. package/dist/{lidState-DcPvwniz.cjs → lidState-Bcs5kRHi.cjs} +1 -1
  94. package/dist/{lidState-D8Iuvjgl.mjs → lidState-DXeYTsrm.mjs} +1 -1
  95. package/dist/{localHappyAgentAuth-D3rQDRd9.mjs → localHappyAgentAuth-C1A4ChCR.mjs} +1 -1
  96. package/dist/{localHappyAgentAuth-SD6GM97y.cjs → localHappyAgentAuth-CypTSe42.cjs} +1 -1
  97. package/dist/{logger-DK1ytCz6.cjs → logger-Cgwz30rK.cjs} +2 -2
  98. package/dist/{logger-DpqihN1f.mjs → logger-RMPh5aqe.mjs} +2 -2
  99. package/dist/{machineMetadata-IJc6_iyx.cjs → machineMetadata-BSOGMNRi.cjs} +3 -3
  100. package/dist/{machineMetadata-D4E3qoIG.mjs → machineMetadata-BTUtPRth.mjs} +3 -3
  101. package/dist/{main-DUXh2rgW.cjs → main-4iiwYpCR.cjs} +61 -56
  102. package/dist/{main-CpUmw7hm.mjs → main-DNDL6t8z.mjs} +61 -56
  103. package/dist/{mcp-D5f3Vd-z.cjs → mcp-C7eEoGhz.cjs} +15 -15
  104. package/dist/{mcp-66g1TJ8P.mjs → mcp-DXYDPOpJ.mjs} +15 -15
  105. package/dist/{mirrorProtocol-bsCUcaCY.mjs → mirrorProtocol-DQRy5PaT.mjs} +3 -3
  106. package/dist/{mirrorProtocol-DkWOcZh9.cjs → mirrorProtocol-c5g5MgNc.cjs} +3 -3
  107. package/dist/{package-BfeqAzyJ.cjs → package-3aPiSpZj.cjs} +7 -7
  108. package/dist/{package-CKj8zndE.mjs → package-CTrz6U3C.mjs} +7 -7
  109. package/dist/{panels-r8LmaBs6.mjs → panels-B5sZ84vA.mjs} +5 -5
  110. package/dist/{panels-2PXsw9-d.cjs → panels-BmsmKHbw.cjs} +5 -5
  111. package/dist/{peerTools-D_id4d41.mjs → peerTools-DIPOX033.mjs} +5 -5
  112. package/dist/{peerTools-BVp1z0T_.cjs → peerTools-Dxe7iCi_.cjs} +5 -5
  113. package/dist/{persistence-BdpwWXKh.cjs → persistence-DZRMUZZS.cjs} +2 -2
  114. package/dist/{persistence-jOEuAFTS.mjs → persistence-zJo4r7YI.mjs} +2 -2
  115. package/dist/{piRunnerArgs-vxCHKnSA.cjs → piRunnerArgs-BSPiS6tZ.cjs} +1 -1
  116. package/dist/{piRunnerArgs-68I5F_M1.mjs → piRunnerArgs-IVdoHUB6.mjs} +1 -1
  117. package/dist/{piRuntime-C3Dg5uni.cjs → piRuntime-BJzjlMcN.cjs} +2 -2
  118. package/dist/{piRuntime-DgLIard1.mjs → piRuntime-BvHO3vgO.mjs} +2 -2
  119. package/dist/{piTerminal-C135BcLP.cjs → piTerminal-Cz4pW55d.cjs} +18 -18
  120. package/dist/{piTerminal-DJL0w-uA.mjs → piTerminal-D7vBOpkE.mjs} +18 -18
  121. package/dist/{pushNotifications-CMmRsbKv.mjs → pushNotifications-C4R9-1hU.mjs} +3 -3
  122. package/dist/{pushNotifications-CyQVDThC.cjs → pushNotifications-CgIrYml3.cjs} +3 -3
  123. package/dist/{query-CK--1fbL.cjs → query-CZQG1PdU.cjs} +1 -1
  124. package/dist/{query-CPXnDURZ.mjs → query-DKPmDsHS.mjs} +1 -1
  125. package/dist/{rateLimitWindows-DJxnNw-X.cjs → rateLimitWindows-CPV0nLeq.cjs} +1 -1
  126. package/dist/{rateLimitWindows-Cqa4AGaB.mjs → rateLimitWindows-HlHATOQ0.mjs} +1 -1
  127. package/dist/{registerCommonHandlers-DbNoM39q.cjs → registerCommonHandlers-D1pC83Op.cjs} +2 -2
  128. package/dist/{registerCommonHandlers-K8dICQO2.mjs → registerCommonHandlers-a9lHojSV.mjs} +2 -2
  129. package/dist/{registerKillSessionHandler-O1iriOMO.mjs → registerKillSessionHandler-Bp-fuH-w.mjs} +6 -6
  130. package/dist/{registerKillSessionHandler-DiS_go8d.cjs → registerKillSessionHandler-nTi2vVJy.cjs} +6 -6
  131. package/dist/{remoteSessionClient-BlURPulk.mjs → remoteSessionClient-Cwrddscy.mjs} +5 -5
  132. package/dist/{remoteSessionClient-CtV9mDko.cjs → remoteSessionClient-HQAKAvVd.cjs} +5 -5
  133. package/dist/{reportProgressTool-DlD_xjzU.cjs → reportProgressTool-Be-8ADI4.cjs} +4 -4
  134. package/dist/{reportProgressTool-nCExrHZH.mjs → reportProgressTool-CcZ32nrd.mjs} +4 -4
  135. package/dist/{resources-CH1iP6Cv.mjs → resources-CLdQfe3b.mjs} +1 -1
  136. package/dist/{resources-BPyN59Iv.cjs → resources-CqwHPhdK.cjs} +1 -1
  137. package/dist/{run-drtwHYkO.mjs → run-BBU8GyxE.mjs} +59 -243
  138. package/dist/{run-BBNrcCfI.cjs → run-CxRJk9qq.cjs} +69 -254
  139. package/dist/{runClaude-CFp27Tyi.mjs → runClaude-DR6pEQwd.mjs} +22 -22
  140. package/dist/{runClaude-B3KSeby4.cjs → runClaude-Dd5zJaUZ.cjs} +22 -22
  141. package/dist/{runClaudeDeps-DMcv93lA.mjs → runClaudeDeps-COgZaUZm.mjs} +50 -45
  142. package/dist/{runClaudeDeps-C_C9TCI0.cjs → runClaudeDeps-CTtZ_1mC.cjs} +45 -40
  143. package/dist/{runGemini-Bc6SY-hd.mjs → runGemini-DVoVUfPp.mjs} +37 -35
  144. package/dist/{runGemini-DzdSBAr9.cjs → runGemini-DX72qB92.cjs} +37 -35
  145. package/dist/{runOpenClaw-DI0qMlgF.mjs → runOpenClaw-BHjzmzeC.mjs} +18 -18
  146. package/dist/{runOpenClaw-DN6rEVqC.cjs → runOpenClaw-BSg4hFVt.cjs} +18 -18
  147. package/dist/{sandbox-v-ffe8LR.mjs → sandbox-CWR9EqoN.mjs} +4 -4
  148. package/dist/{sandbox-DtttPBMA.cjs → sandbox-D1T_hmgZ.cjs} +4 -4
  149. package/dist/{selfCheck-B-yy6bW3.cjs → selfCheck-CE7vlnNS.cjs} +36 -36
  150. package/dist/selfCheck-ZGgBtxFQ.mjs +85 -0
  151. package/dist/{send-DpBwSZuj.mjs → send-BDF0Zvxo.mjs} +8 -8
  152. package/dist/{send-ShzXYPRu.cjs → send-BxZqRCcG.cjs} +8 -8
  153. package/dist/{server-DScgJXxa.mjs → server-B4JtnDLF.mjs} +4 -4
  154. package/dist/{server-CEzKrfKj.cjs → server-DB7_70Mi.cjs} +6 -6
  155. package/dist/{sessionLock-Dc0fadGG.cjs → sessionLock-BXvFN6uw.cjs} +3 -3
  156. package/dist/{sessionLock-B6K4SBZD.mjs → sessionLock-CXOOX-VD.mjs} +3 -3
  157. package/dist/{sessionOps-Dx7wARjI.cjs → sessionOps-BWlDlFYP.cjs} +4 -4
  158. package/dist/{sessionOps-D0BPWPoh.mjs → sessionOps-ByVggB_q.mjs} +4 -4
  159. package/dist/{sessionScanner-BJ35TVG6.cjs → sessionScanner-DkxPB5VA.cjs} +3 -3
  160. package/dist/{sessionScanner-9Fpgaxtf.mjs → sessionScanner-r66RtF95.mjs} +3 -3
  161. package/dist/{sessions-TZGGAry1.cjs → sessions-BiJTxFy9.cjs} +10 -10
  162. package/dist/{sessions-CFtDlyZd.mjs → sessions-C1lLK_a9.mjs} +10 -10
  163. package/dist/{setupOfflineReconnection-Biaus-0T.mjs → setupOfflineReconnection-Bl3DuakT.mjs} +2 -2
  164. package/dist/{setupOfflineReconnection-B1GsVA8P.cjs → setupOfflineReconnection-CecTiFZ-.cjs} +2 -2
  165. package/dist/{spawn-CsoQ-Ecz.mjs → spawn-D-8MlEM6.mjs} +14 -14
  166. package/dist/{spawn-BRTuypQ2.cjs → spawn-D79mVa3h.cjs} +14 -14
  167. package/dist/{spawnAgents-Co-SLcx-.mjs → spawnAgents-DJHjq01u.mjs} +1 -1
  168. package/dist/{spawnAgents-CG211IW7.cjs → spawnAgents-Sfnf-4pN.cjs} +1 -1
  169. package/dist/{spawnHappyCLI-D47kX6jg.cjs → spawnHappyCLI-CQwQs9G5.cjs} +1 -1
  170. package/dist/{spawnHappyCLI-D1doCjkZ.mjs → spawnHappyCLI-v_bJwZ4Z.mjs} +1 -1
  171. package/dist/{specialCommands-Ch-Gvy-i.cjs → specialCommands-CWMVfT5s.cjs} +3 -3
  172. package/dist/{specialCommands-xSmqT_Fu.mjs → specialCommands-yMnFvS-W.mjs} +3 -3
  173. package/dist/{startFileWatcher-CCl2fFxT.mjs → startFileWatcher-BCDkT_tr.mjs} +1 -1
  174. package/dist/{startFileWatcher-gKQTstR6.cjs → startFileWatcher-GW4_E7dV.cjs} +1 -1
  175. package/dist/{startupSessionCreate-DlZc8yPl.mjs → startupSessionCreate-BcAGYo51.mjs} +1 -1
  176. package/dist/{startupSessionCreate-BXqoUX30.cjs → startupSessionCreate-tBRa_ze8.cjs} +1 -1
  177. package/dist/{streamRelay-DnJXsi36.mjs → streamRelay-BEDiy6_b.mjs} +1 -1
  178. package/dist/{streamRelay-B-J-4St1.cjs → streamRelay-BZ8drtof.cjs} +1 -1
  179. package/dist/{sync-BbjMC3sR.mjs → sync--QUIOuf8.mjs} +1 -1
  180. package/dist/{sync-BxMdnZzz.cjs → sync-BMDkyo75.cjs} +1 -1
  181. package/dist/{systemPrompt-C2KojRmK.cjs → systemPrompt-DoHSXrH0.cjs} +2 -2
  182. package/dist/{systemPrompt-CmSDAoIx.mjs → systemPrompt-O0Kd6vbA.mjs} +2 -2
  183. package/dist/{teams-DESdalox.cjs → teams-BkZop-sP.cjs} +9 -9
  184. package/dist/{teams-lRy1MS0Z.mjs → teams-CTF1gT48.mjs} +9 -9
  185. package/dist/{template-BaHAmH2K.cjs → template-CeC1dYe-.cjs} +32 -2
  186. package/dist/{template-CiOPa2rd.mjs → template-D1fm22em.mjs} +31 -3
  187. package/dist/{time-Cfknl7xG.mjs → time-B2KKdAym.mjs} +1 -1
  188. package/dist/{time-DNLeIRgR.cjs → time-CdCotzKU.cjs} +1 -1
  189. package/dist/{titleGenerator-ClnMSzwC.mjs → titleGenerator-BFDczskR.mjs} +1 -1
  190. package/dist/{titleGenerator-YNutaU88.cjs → titleGenerator-DZH1XqAf.cjs} +2 -2
  191. package/dist/{todo-DZbK5POc.mjs → todo-C2gyOUom.mjs} +6 -6
  192. package/dist/{todo-DS75Mboz.cjs → todo-DnTFTHmV.cjs} +6 -6
  193. package/dist/{tools-ClYcb1YQ.cjs → tools-C8rpwyIl.cjs} +1 -1
  194. package/dist/{tools-BgdU0dWp.mjs → tools-DUjkqSQL.mjs} +1 -1
  195. package/dist/{uninstall-bXenFevR.mjs → uninstall-B5Ew50mZ.mjs} +3 -3
  196. package/dist/{uninstall-Di1vPBLV.cjs → uninstall-CKMPWTMv.cjs} +3 -3
  197. package/package.json +7 -7
  198. package/dist/daemonSupervisor-B-SPSqhs.cjs +0 -13
  199. package/dist/daemonSupervisor-C6urv3_8.mjs +0 -10
  200. package/dist/selfCheck-BDfTwxqB.mjs +0 -85
@@ -1,27 +1,27 @@
1
1
  'use strict';
2
2
 
3
- var mirrorProtocol = require('./mirrorProtocol-DkWOcZh9.cjs');
3
+ var mirrorProtocol = require('./mirrorProtocol-c5g5MgNc.cjs');
4
4
  var fsMkdir = require('./fsMkdir-0K3yENml.cjs');
5
- var piRunnerArgs = require('./piRunnerArgs-vxCHKnSA.cjs');
5
+ var piRunnerArgs = require('./piRunnerArgs-BSPiS6tZ.cjs');
6
6
  var fs = require('fs/promises');
7
7
  var os$1 = require('os');
8
8
  var tmp = require('tmp');
9
9
  var axios = require('axios');
10
10
  var node_fs = require('node:fs');
11
11
  var path = require('node:path');
12
- var configuration = require('./configuration-B-CugKJ3.cjs');
13
- var api = require('./api-CZWcG7uh.cjs');
14
- var spawnAgents = require('./spawnAgents-CG211IW7.cjs');
15
- var logger = require('./logger-DK1ytCz6.cjs');
16
- var index$2 = require('./index-CZC7egJA.cjs');
17
- var auth = require('./auth-Lw_utSMV.cjs');
12
+ var configuration = require('./configuration-K3I6yOjZ.cjs');
13
+ var api = require('./api-xZiqVynF.cjs');
14
+ var spawnAgents = require('./spawnAgents-Sfnf-4pN.cjs');
15
+ var logger = require('./logger-Cgwz30rK.cjs');
16
+ var index$2 = require('./index-BdJs0465.cjs');
17
+ var auth = require('./auth-CYtk9_ga.cjs');
18
18
  var child_process = require('child_process');
19
- var _package = require('./package-BfeqAzyJ.cjs');
20
- var doctor = require('./doctor-DMvlzmnE.cjs');
21
- var spawnHappyCLI = require('./spawnHappyCLI-D47kX6jg.cjs');
22
- var persistence = require('./persistence-BdpwWXKh.cjs');
23
- var controlClient = require('./controlClient-D0kGwKYx.cjs');
24
- var sessionOps = require('./sessionOps-Dx7wARjI.cjs');
19
+ var _package = require('./package-3aPiSpZj.cjs');
20
+ var doctor = require('./doctor-CKgHUV4W.cjs');
21
+ var spawnHappyCLI = require('./spawnHappyCLI-CQwQs9G5.cjs');
22
+ var persistence = require('./persistence-DZRMUZZS.cjs');
23
+ var controlClient = require('./controlClient-ChqmxgbB.cjs');
24
+ var sessionOps = require('./sessionOps-BWlDlFYP.cjs');
25
25
  var fastify = require('fastify');
26
26
  var z = require('zod');
27
27
  var fastifyTypeProviderZod = require('fastify-type-provider-zod');
@@ -29,66 +29,65 @@ var authRelay = require('./authRelay-Dy1qU9td.cjs');
29
29
  var node_crypto = require('node:crypto');
30
30
  var previewPath = require('./previewPath-B0rBdhy1.cjs');
31
31
  var backgroundTaskActivity = require('./backgroundTaskActivity-CBvUdj39.cjs');
32
- var rateLimitWindows = require('./rateLimitWindows-DJxnNw-X.cjs');
33
- var peerTools = require('./peerTools-BVp1z0T_.cjs');
32
+ var rateLimitWindows = require('./rateLimitWindows-CPV0nLeq.cjs');
33
+ var peerTools = require('./peerTools-Dxe7iCi_.cjs');
34
34
  var os = require('node:os');
35
- var remoteSessionClient = require('./remoteSessionClient-CtV9mDko.cjs');
36
- var bootstrap = require('./bootstrap-DsXp74wv.cjs');
37
- var index$1 = require('./index-B_aNaW9w.cjs');
35
+ var remoteSessionClient = require('./remoteSessionClient-HQAKAvVd.cjs');
36
+ var bootstrap = require('./bootstrap-C50NkfPx.cjs');
37
+ var index$1 = require('./index-y4JNyz9H.cjs');
38
38
  var require$$0 = require('fs');
39
39
  var require$$1 = require('path');
40
40
  var node_child_process = require('node:child_process');
41
41
  var projectPath = require('./projectPath-C3ioB4Bu.cjs');
42
42
  var doctorReadiness = require('./doctorReadiness-Dl6yRQCy.cjs');
43
- var machineMetadata = require('./machineMetadata-IJc6_iyx.cjs');
43
+ var machineMetadata = require('./machineMetadata-BSOGMNRi.cjs');
44
44
  var fileStore = require('./fileStore-7qhnbs6N.cjs');
45
45
  var pi = require('./pi-DlsrPCTa.cjs');
46
46
  var require$$3 = require('crypto');
47
47
  var detectCLI = require('./detectCLI-BuYR_Qxe.cjs');
48
- var handleResumeCommand = require('./handleResumeCommand-Dp2Y-p6V.cjs');
48
+ var handleResumeCommand = require('./handleResumeCommand-D9myBN2N.cjs');
49
49
  var webPanels = require('./webPanels-FCgFKvVe.cjs');
50
- var index = require('./index-oh8XEozJ.cjs');
50
+ var index = require('./index-Fq-jxjsB.cjs');
51
51
  var promises = require('node:fs/promises');
52
52
  var cliUpdate = require('./cliUpdate-DsKXPFYp.cjs');
53
- var client = require('./client-DK8CzUry.cjs');
54
- var client$1 = require('./client-CDuW4MS9.cjs');
55
- var module$1 = require('node:module');
53
+ var client = require('./client-DcKJ0ul_.cjs');
54
+ var client$1 = require('./client-DYGDBD0M.cjs');
55
+ var daemonSupervisor = require('./daemonSupervisor-57JYYzMf.cjs');
56
56
  var path$1 = require('./path-B7zW-WwE.cjs');
57
57
  var editPaths = require('./editPaths-Bqp4OFPw.cjs');
58
- var startFileWatcher = require('./startFileWatcher-gKQTstR6.cjs');
59
- var sync = require('./sync-BxMdnZzz.cjs');
58
+ var startFileWatcher = require('./startFileWatcher-GW4_E7dV.cjs');
59
+ var sync = require('./sync-BMDkyo75.cjs');
60
60
  var types = require('./types-CRS-srZK.cjs');
61
61
  var tmuxSocket = require('./tmuxSocket-D-Xt6Vn-.cjs');
62
- var sessionLock = require('./sessionLock-Dc0fadGG.cjs');
62
+ var sessionLock = require('./sessionLock-BXvFN6uw.cjs');
63
63
  var doctor$1 = require('./doctor-u46qYYKX.cjs');
64
- var resources = require('./resources-BPyN59Iv.cjs');
64
+ var resources = require('./resources-CqwHPhdK.cjs');
65
65
  var node_util = require('node:util');
66
- var template = require('./template-BaHAmH2K.cjs');
67
- var daemonSupervisor = require('./daemonSupervisor-B-SPSqhs.cjs');
66
+ var template = require('./template-CeC1dYe-.cjs');
68
67
  var loginShellEnv = require('./loginShellEnv-BkuYtExZ.cjs');
69
- require('./acpSessionResume-Dxo8222T.cjs');
70
- require('./lidState-DcPvwniz.cjs');
68
+ require('./acpSessionResume-mVoJ75vI.cjs');
69
+ require('./lidState-Bcs5kRHi.cjs');
71
70
  require('node:events');
72
71
  require('socket.io-client');
73
- require('./pushNotifications-CyQVDThC.cjs');
72
+ require('./pushNotifications-CgIrYml3.cjs');
74
73
  require('./contentLogMetadata-ZSFk_NjQ.cjs');
75
74
  require('./limits-C-a7gr04.cjs');
76
- require('./time-DNLeIRgR.cjs');
77
- require('./registerCommonHandlers-DbNoM39q.cjs');
75
+ require('./time-CdCotzKU.cjs');
76
+ require('./registerCommonHandlers-D1pC83Op.cjs');
78
77
  require('util');
79
78
  require('cross-spawn');
80
79
  require('@paralleldrive/cuid2');
81
80
  require('chalk');
81
+ require('node:module');
82
82
  require('tweetnacl');
83
- require('./browser-CZlA9AkO.cjs');
83
+ require('./browser-CxKZLd2T.cjs');
84
84
  require('open');
85
85
  require('./ids-B6ZC0HGt.cjs');
86
86
  require('url');
87
- require('./localHappyAgentAuth-SD6GM97y.cjs');
87
+ require('./localHappyAgentAuth-CypTSe42.cjs');
88
88
  require('./processTreeSnapshot-mDbnuojn.cjs');
89
89
  require('ps-list');
90
90
 
91
- var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
92
91
  function _interopNamespaceDefault(e) {
93
92
  var n = Object.create(null);
94
93
  if (e) {
@@ -5115,196 +5114,6 @@ async function waitForSessionLive(sessionId, live, timeoutMs = AUTOMATION_WAKE_T
5115
5114
  return true;
5116
5115
  }
5117
5116
 
5118
- const CLAUDE_KEYCHAIN_SERVICE_PREFIX = "Claude Code";
5119
- function keychainIdentity(env = process.env, deps = {}) {
5120
- const home = deps.home ?? os.homedir();
5121
- const secureDir = env.CLAUDE_SECURESTORAGE_CONFIG_DIR?.trim();
5122
- const configDirEnv = env.CLAUDE_CONFIG_DIR?.trim();
5123
- const configDir = secureDir || configDirEnv || path.join(home, ".claude");
5124
- const hasCustomDir = Boolean(secureDir || configDirEnv);
5125
- const dirSuffix = hasCustomDir ? "-" + node_crypto.createHash("sha256").update(configDir.normalize("NFC")).digest("hex").slice(0, 8) : "";
5126
- const oauthSuffix = env.CLAUDE_CODE_OAUTH_CLIENT_ID?.trim() ? "-custom-oauth" : "";
5127
- const rawAccount = env.USER || safeUsername(deps.username);
5128
- const account = /^[a-zA-Z0-9._-]+$/.test(rawAccount) ? rawAccount : "claude-code-user";
5129
- return {
5130
- service: `${CLAUDE_KEYCHAIN_SERVICE_PREFIX}${oauthSuffix}-credentials${dirSuffix}`,
5131
- account,
5132
- configDir,
5133
- credentialsPath: path.join(configDir, ".credentials.json")
5134
- };
5135
- }
5136
- function safeUsername(provider) {
5137
- try {
5138
- return provider ? provider() : os.userInfo().username;
5139
- } catch {
5140
- return "";
5141
- }
5142
- }
5143
-
5144
- const CLAUDE_AUTH_PROBE_VERSION = 1;
5145
- const LOCAL_CREDENTIAL_SOURCE = "Claude local credentials";
5146
- function classifyAuthStatus(run, credentialSource) {
5147
- const localSource = credentialSource === void 0 || credentialSource === LOCAL_CREDENTIAL_SOURCE;
5148
- if (run.spawnError) {
5149
- return { status: "error", diagnosis: "probe-crash", detail: `could not run claude auth status: ${run.spawnError}` };
5150
- }
5151
- if (run.timedOut) {
5152
- return { status: "error", diagnosis: "probe-timeout", detail: "claude auth status did not answer within the timeout" };
5153
- }
5154
- const parsed = parseJsonObject(run.stdout);
5155
- if (!parsed) {
5156
- if (!localSource) return { status: "unknown", authMethod: credentialSource, detail: `auth status unparseable under ${credentialSource}` };
5157
- return { status: "error", diagnosis: "probe-crash", detail: `claude auth status returned no JSON (exit ${run.exitCode ?? "null"})` };
5158
- }
5159
- const authMethod = typeof parsed.authMethod === "string" ? parsed.authMethod : void 0;
5160
- const subscriptionType = typeof parsed.subscriptionType === "string" ? parsed.subscriptionType : void 0;
5161
- if (parsed.loggedIn === true) {
5162
- return { status: "ok", authMethod: localSource ? authMethod : credentialSource, subscriptionType };
5163
- }
5164
- if (!localSource) {
5165
- return { status: "unknown", authMethod: credentialSource, detail: `Claude Code reports loggedIn=false under ${credentialSource}; not a local-credential failure` };
5166
- }
5167
- return { status: "not-logged-in", authMethod, subscriptionType, detail: "Claude Code in the daemon context reports it is not logged in" };
5168
- }
5169
- function parseJsonObject(text) {
5170
- const trimmed = text.trim();
5171
- if (!trimmed) return null;
5172
- const start = trimmed.indexOf("{");
5173
- if (start < 0) return null;
5174
- try {
5175
- const value = JSON.parse(trimmed.slice(start));
5176
- return value && typeof value === "object" && !Array.isArray(value) ? value : null;
5177
- } catch {
5178
- return null;
5179
- }
5180
- }
5181
- function resolveSdkClaudeBinary(platform = process.platform, arch = process.arch, resolver = (s) => module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('run-BBNrcCfI.cjs', document.baseURI).href))).resolve(s)) {
5182
- const platformArch = `${platform}-${arch}`;
5183
- const candidates = [
5184
- `@anthropic-ai/claude-agent-sdk-${platformArch}/claude`,
5185
- `@anthropic-ai/claude-agent-sdk-${platformArch}/claude.exe`
5186
- ];
5187
- for (const candidate of candidates) {
5188
- try {
5189
- return resolver(candidate);
5190
- } catch {
5191
- }
5192
- }
5193
- return null;
5194
- }
5195
- function interpretSecurityRead(result) {
5196
- if (result.error === "ENOENT") return { kind: "unsupported" };
5197
- if (result.error === "timeout") return { kind: "error", detail: "security timed out" };
5198
- if (result.exitCode === 44) return { kind: "absent" };
5199
- if (result.exitCode === 36) return { kind: "unreadable" };
5200
- if (result.exitCode !== 0) return { kind: "error", detail: `security exited ${result.exitCode ?? "null"}` };
5201
- const raw = result.stdout.trim();
5202
- if (!raw) return { kind: "absent" };
5203
- const parsed = parseJsonObject(raw);
5204
- const oauth = parsed && typeof parsed.claudeAiOauth === "object" && parsed.claudeAiOauth ? parsed.claudeAiOauth : null;
5205
- if (!oauth) return { kind: "present", accessToken: "", refreshToken: "", raw };
5206
- return {
5207
- kind: "present",
5208
- accessToken: typeof oauth.accessToken === "string" ? oauth.accessToken : "",
5209
- refreshToken: typeof oauth.refreshToken === "string" ? oauth.refreshToken : "",
5210
- raw
5211
- };
5212
- }
5213
- function interpretCredentialsFile(text) {
5214
- if (text === null) return { exists: false, hasTokens: false, refreshToken: "" };
5215
- const parsed = parseJsonObject(text);
5216
- const oauth = parsed && typeof parsed.claudeAiOauth === "object" && parsed.claudeAiOauth ? parsed.claudeAiOauth : null;
5217
- const access = oauth && typeof oauth.accessToken === "string" ? oauth.accessToken : "";
5218
- const refresh = oauth && typeof oauth.refreshToken === "string" ? oauth.refreshToken : "";
5219
- return { exists: true, hasTokens: access.length > 0 && refresh.length > 0, refreshToken: refresh };
5220
- }
5221
- function tokenTail(token) {
5222
- return token ? node_crypto.createHash("sha256").update(token).digest("hex").slice(-6) : "";
5223
- }
5224
- const CREDENTIALS_REJECTED_DETAIL = "Credentials exist but Claude Code rejects them in the daemon context \u2014 the refresh token has most likely been rotated away by another store or another machine using the same credentials. Log in again with `claude` on this machine.";
5225
- function diagnoseStores(input) {
5226
- const { status, keychain, file } = input;
5227
- if (keychain.kind === "present") {
5228
- const empty = keychain.accessToken.length === 0 && keychain.refreshToken.length === 0;
5229
- if (empty && file.hasTokens && status === "not-logged-in") {
5230
- return {
5231
- diagnosis: "keychain-empty-item",
5232
- repairable: "delete-empty-keychain-item",
5233
- keychainRaw: keychain.raw,
5234
- detail: "The login keychain holds a Claude Code credentials item with empty tokens; Claude Code prefers it over the valid ~/.claude/.credentials.json and reports not logged in."
5235
- };
5236
- }
5237
- if (!empty && file.hasTokens && tokenTail(keychain.refreshToken) !== tokenTail(file.refreshToken)) {
5238
- return {
5239
- diagnosis: "store-divergence",
5240
- detail: "Keychain and ~/.claude/.credentials.json hold different refresh tokens; one of them will stop working at its next refresh. Treat the daemon-context login as canonical, or pin credentialStore=file."
5241
- };
5242
- }
5243
- return {};
5244
- }
5245
- if ((keychain.kind === "absent" || keychain.kind === "unreadable" || keychain.kind === "unsupported") && !file.hasTokens) {
5246
- return { diagnosis: "no-credentials", detail: "No Claude Code credentials found for this daemon context; log in with `claude` on this machine." };
5247
- }
5248
- if (keychain.kind === "unreadable" && file.hasTokens && status === "not-logged-in") {
5249
- return { diagnosis: "credentials-rejected", detail: CREDENTIALS_REJECTED_DETAIL };
5250
- }
5251
- if (keychain.kind === "error") {
5252
- return { detail: `keychain check failed: ${keychain.detail}` };
5253
- }
5254
- return {};
5255
- }
5256
- function securityReadArgs(identity) {
5257
- return ["find-generic-password", "-s", identity.service, "-a", identity.account, "-w"];
5258
- }
5259
- function securityDeleteArgs(identity) {
5260
- return ["delete-generic-password", "-s", identity.service, "-a", identity.account];
5261
- }
5262
- const HAPPY_DAEMON_LAUNCHD_LABEL = "com.mereith.happy-daemon";
5263
- function classifyLineage(input) {
5264
- if (input.platform !== "darwin") return "other";
5265
- const label = input.label ?? HAPPY_DAEMON_LAUNCHD_LABEL;
5266
- if (input.env.XPC_SERVICE_NAME !== label) return "other";
5267
- if (input.launchdJobPid !== null && input.ancestorPids.includes(input.launchdJobPid)) return "launchd";
5268
- return "inherited-env";
5269
- }
5270
- function parseLaunchctlPid(printOutput) {
5271
- const match = /^\s*pid\s*=\s*(\d+)/m.exec(printOutput);
5272
- return match ? Number(match[1]) : null;
5273
- }
5274
- function keychainOffShimDir(happyLibDir) {
5275
- return path.join(happyLibDir, "scripts", "shims", "keychain-off");
5276
- }
5277
- function withKeychainOffPath(path$1, shimDir) {
5278
- const parts = (path$1 ?? "").split(path.delimiter).filter((p) => p && p !== shimDir);
5279
- return [shimDir, ...parts].join(path.delimiter);
5280
- }
5281
- function buildClaudeAuthState(input) {
5282
- const { classification, diagnosis } = input;
5283
- const detail = (diagnosis?.detail ?? classification.detail)?.slice(0, 200);
5284
- const state = {
5285
- probeVersion: CLAUDE_AUTH_PROBE_VERSION,
5286
- daemonPid: input.daemonPid,
5287
- status: classification.status,
5288
- context: { platform: input.platform, lineage: input.lineage, credentialStore: input.credentialStore },
5289
- checkedAt: input.now ?? Date.now()
5290
- };
5291
- if (classification.authMethod) state.authMethod = classification.authMethod;
5292
- if (classification.subscriptionType) state.subscriptionType = classification.subscriptionType;
5293
- const diag = diagnosis?.diagnosis ?? classification.diagnosis;
5294
- if (diag) state.diagnosis = diag;
5295
- if (detail) state.detail = detail;
5296
- if (diagnosis?.repairable) state.repairable = diagnosis.repairable;
5297
- return state;
5298
- }
5299
- function claudeAuthStateChanged(prev, next) {
5300
- if (!prev) return true;
5301
- const strip = ({ checkedAt: _c, ...rest }) => JSON.stringify(rest);
5302
- return strip(prev) !== strip(next);
5303
- }
5304
- function keychainIdentityFor(env) {
5305
- return keychainIdentity(env);
5306
- }
5307
-
5308
5117
  const CLAUDE_AUTH_PROBE_INTERVAL_MS = 10 * 60 * 1e3;
5309
5118
  const CLAUDE_AUTH_REFRESH_INTERVAL_MS = 30 * 60 * 1e3;
5310
5119
  const PROBE_TIMEOUT_MS = 8e3;
@@ -5315,6 +5124,7 @@ class ClaudeAuthService {
5315
5124
  this.opts = opts;
5316
5125
  this.env = opts.env ?? process.env;
5317
5126
  this.platform = opts.platform ?? process.platform;
5127
+ this.lineage = opts.lineage ?? null;
5318
5128
  }
5319
5129
  timer = null;
5320
5130
  signalTimer = null;
@@ -5355,7 +5165,7 @@ class ClaudeAuthService {
5355
5165
  if (this.opts.getCredentialStore() !== "file") return {};
5356
5166
  const shim = this.resolveShimDir();
5357
5167
  if (!shim) return {};
5358
- return { PATH: withKeychainOffPath(this.env.PATH, shim) };
5168
+ return { PATH: daemonSupervisor.withKeychainOffPath(this.env.PATH, shim) };
5359
5169
  }
5360
5170
  effectiveCredentialStore() {
5361
5171
  if (this.opts.getCredentialStore() !== "file") return "auto";
@@ -5379,8 +5189,8 @@ class ClaudeAuthService {
5379
5189
  const state = await this.probe("repair-precheck", true);
5380
5190
  const seen = this.lastDiagnosis;
5381
5191
  if (state.diagnosis !== "keychain-empty-item" || !seen?.keychainRaw) return { error: "precondition-failed", claudeAuth: state };
5382
- const identity = keychainIdentityFor(this.env);
5383
- const again = interpretSecurityRead(await this.security(securityReadArgs(identity)));
5192
+ const identity = daemonSupervisor.keychainIdentityFor(this.env);
5193
+ const again = daemonSupervisor.interpretSecurityRead(await this.security(daemonSupervisor.securityReadArgs(identity)));
5384
5194
  if (again.kind !== "present" || again.raw !== seen.keychainRaw || again.accessToken || again.refreshToken) {
5385
5195
  return { error: "precondition-failed", claudeAuth: state };
5386
5196
  }
@@ -5391,7 +5201,7 @@ class ClaudeAuthService {
5391
5201
  } catch (error) {
5392
5202
  return { error: `backup-failed: ${String(error)}`, claudeAuth: state };
5393
5203
  }
5394
- const del = await this.security(securityDeleteArgs(identity));
5204
+ const del = await this.security(daemonSupervisor.securityDeleteArgs(identity));
5395
5205
  if (del.exitCode !== 0) return { error: `delete-failed: security exited ${del.exitCode ?? "null"}`, claudeAuth: state };
5396
5206
  logger.logger.debug("[CLAUDE AUTH] deleted empty-token keychain item after backup");
5397
5207
  const after = await this.probe("repair-done", true);
@@ -5399,7 +5209,7 @@ class ClaudeAuthService {
5399
5209
  }
5400
5210
  // ── internals ────────────────────────────────────────────────────────
5401
5211
  resolveShimDir() {
5402
- const dir = keychainOffShimDir(this.opts.happyLibDir);
5212
+ const dir = daemonSupervisor.keychainOffShimDir(this.opts.happyLibDir);
5403
5213
  const bin = path.join(dir, "security");
5404
5214
  try {
5405
5215
  if (!node_fs.statSync(bin).isFile()) return null;
@@ -5419,20 +5229,20 @@ class ClaudeAuthService {
5419
5229
  diagnosis = await this.diagnose(classification.status);
5420
5230
  this.lastDiagnosis = diagnosis;
5421
5231
  } else if (classification.status === "not-logged-in") {
5422
- const file = interpretCredentialsFile(this.readCredentialsFile());
5232
+ const file = daemonSupervisor.interpretCredentialsFile(this.readCredentialsFile());
5423
5233
  if (!file.hasTokens) {
5424
5234
  diagnosis = {
5425
5235
  diagnosis: "no-credentials",
5426
5236
  detail: store === "file" ? "credentialStore=file and ~/.claude/.credentials.json has no tokens; log in with `claude` from a terminal on this machine." : "No Claude Code credentials found for this daemon context; log in with `claude` on this machine."
5427
5237
  };
5428
5238
  } else {
5429
- diagnosis = { diagnosis: "credentials-rejected", detail: CREDENTIALS_REJECTED_DETAIL };
5239
+ diagnosis = { diagnosis: "credentials-rejected", detail: daemonSupervisor.CREDENTIALS_REJECTED_DETAIL };
5430
5240
  }
5431
5241
  }
5432
5242
  if (storeRequested === "file" && store === "auto") {
5433
- diagnosis = { ...diagnosis ?? {}, detail: `credentialStore=file requested but the keychain-off shim is missing under ${keychainOffShimDir(this.opts.happyLibDir)}; running in auto mode.` };
5243
+ diagnosis = { ...diagnosis ?? {}, detail: `credentialStore=file requested but the keychain-off shim is missing under ${daemonSupervisor.keychainOffShimDir(this.opts.happyLibDir)}; running in auto mode.` };
5434
5244
  }
5435
- const state = buildClaudeAuthState({
5245
+ const state = daemonSupervisor.buildClaudeAuthState({
5436
5246
  daemonPid: process.pid,
5437
5247
  platform: this.platform,
5438
5248
  lineage: await this.resolveLineage(),
@@ -5441,7 +5251,7 @@ class ClaudeAuthService {
5441
5251
  diagnosis,
5442
5252
  now: this.opts.now?.() ?? Date.now()
5443
5253
  });
5444
- const changed = claudeAuthStateChanged(this.last, state);
5254
+ const changed = daemonSupervisor.claudeAuthStateChanged(this.last, state);
5445
5255
  const stale = state.checkedAt - this.lastPublishedAt >= CLAUDE_AUTH_REFRESH_INTERVAL_MS;
5446
5256
  if (changed) {
5447
5257
  logger.logger.debug(`[CLAUDE AUTH] ${reason}: status=${state.status} diagnosis=${state.diagnosis ?? "-"} lineage=${state.context.lineage} store=${state.context.credentialStore}`);
@@ -5459,7 +5269,7 @@ class ClaudeAuthService {
5459
5269
  return state;
5460
5270
  }
5461
5271
  async runAuthStatus() {
5462
- const binary = resolveSdkClaudeBinary(this.platform, process.arch);
5272
+ const binary = daemonSupervisor.resolveSdkClaudeBinary(this.platform, process.arch);
5463
5273
  if (!binary) {
5464
5274
  return { status: "claude-missing", diagnosis: "sdk-binary-missing", detail: "The Claude Code binary bundled with the Agent SDK is missing; remote sessions cannot start." };
5465
5275
  }
@@ -5504,16 +5314,16 @@ class ClaudeAuthService {
5504
5314
  done({ stdout, exitCode: code, timedOut: false });
5505
5315
  });
5506
5316
  });
5507
- return classifyAuthStatus(run, this.opts.credentialSource);
5317
+ return daemonSupervisor.classifyAuthStatus(run, this.opts.credentialSource);
5508
5318
  }
5509
5319
  async diagnose(status) {
5510
- const identity = keychainIdentityFor(this.env);
5511
- const keychain = interpretSecurityRead(await this.security(securityReadArgs(identity)));
5512
- const file = interpretCredentialsFile(this.readCredentialsFile(identity.credentialsPath));
5513
- return diagnoseStores({ status, keychain, file });
5320
+ const identity = daemonSupervisor.keychainIdentityFor(this.env);
5321
+ const keychain = daemonSupervisor.interpretSecurityRead(await this.security(daemonSupervisor.securityReadArgs(identity)));
5322
+ const file = daemonSupervisor.interpretCredentialsFile(this.readCredentialsFile(identity.credentialsPath));
5323
+ return daemonSupervisor.diagnoseStores({ status, keychain, file });
5514
5324
  }
5515
5325
  readCredentialsFile(path) {
5516
- const target = path ?? keychainIdentityFor(this.env).credentialsPath;
5326
+ const target = path ?? daemonSupervisor.keychainIdentityFor(this.env).credentialsPath;
5517
5327
  try {
5518
5328
  return node_fs.existsSync(target) ? node_fs.readFileSync(target, "utf8") : null;
5519
5329
  } catch {
@@ -5538,9 +5348,9 @@ class ClaudeAuthService {
5538
5348
  return this.lineage;
5539
5349
  }
5540
5350
  const uid = typeof process.getuid === "function" ? process.getuid() : null;
5541
- const launchdJobPid = uid === null ? null : parseLaunchctlPid(await this.exec("launchctl", ["print", `gui/${uid}/${HAPPY_DAEMON_LAUNCHD_LABEL}`]));
5351
+ const launchdJobPid = uid === null ? null : daemonSupervisor.parseLaunchctlPid(await this.exec("launchctl", ["print", `gui/${uid}/${daemonSupervisor.HAPPY_DAEMON_LAUNCHD_LABEL}`]));
5542
5352
  const ancestors = await this.ancestorPids();
5543
- this.lineage = classifyLineage({ platform: this.platform, env: this.env, launchdJobPid, ancestorPids: ancestors });
5353
+ this.lineage = daemonSupervisor.classifyLineage({ platform: this.platform, env: this.env, launchdJobPid, ancestorPids: ancestors });
5544
5354
  return this.lineage;
5545
5355
  }
5546
5356
  async ancestorPids() {
@@ -6953,7 +6763,9 @@ function createAutomationRunner(deps) {
6953
6763
  function persist(receipt) {
6954
6764
  writeReceipt(home, receipt, now());
6955
6765
  }
6956
- async function finish(item, report2) {
6766
+ async function finish(item, input) {
6767
+ const { report: report2, clipped } = template.clipAutomationReport(input);
6768
+ if (clipped.length) deps.log(`Automation run ${item.runId} report clipped: ${clipped.map((c) => `${c.field} ${c.from}\u2192${c.to}`).join(", ")}`);
6957
6769
  try {
6958
6770
  await client.report(item.runId, report2);
6959
6771
  } catch (error) {
@@ -8593,8 +8405,10 @@ async function startDaemon() {
8593
8405
  }
8594
8406
  });
8595
8407
  const daemonClaudeCredentials = doctorReadiness.resolveClaudeCredentialReadiness();
8596
- const daemonSupervisor$1 = daemonSupervisor.detectDaemonSupervisor(process.env);
8597
- logger.logger.debug(`[DAEMON RUN] Supervisor: ${daemonSupervisor$1}`);
8408
+ const launchdJob = process.platform === "darwin" ? await daemonSupervisor.probeLaunchdJob() : null;
8409
+ const daemonSupervisor$1 = daemonSupervisor.detectDaemonSupervisor(process.env, process.platform, launchdJob);
8410
+ const lineage = daemonSupervisor.daemonLineage(daemonSupervisor$1, process.env, process.platform, launchdJob);
8411
+ logger.logger.debug(`[DAEMON RUN] Supervisor: ${daemonSupervisor$1} (lineage ${lineage}${launchdJob ? `, launchd job pid ${launchdJob.jobPid ?? "-"}` : ""})`);
8598
8412
  let fileState = {
8599
8413
  pid: process.pid,
8600
8414
  httpPort: controlPort,
@@ -8677,7 +8491,8 @@ async function startDaemon() {
8677
8491
  await persistence.writeSettings({ ...settings, claudeCredentialStore: store });
8678
8492
  claudeCredentialStoreSetting = store;
8679
8493
  },
8680
- publish: (state) => apiMachine.setClaudeAuthState(state)
8494
+ publish: (state) => apiMachine.setClaudeAuthState(state),
8495
+ lineage
8681
8496
  });
8682
8497
  claudeAuthServiceRef = claudeAuthService;
8683
8498
  apiMachine.setClaudeAuthHandlers({
@@ -8854,8 +8669,8 @@ async function startDaemon() {
8854
8669
  await controlClient.cleanupDaemonState();
8855
8670
  await persistence.releaseDaemonLock(daemonLockHandle);
8856
8671
  await stopCaffeinate();
8857
- if (daemonSupervisor$1 === "systemd") {
8858
- logger.logger.debug(`[DAEMON RUN] systemd-supervised: exiting ${HANDOVER_EXIT_CODE} for the unit to restart on the new bundle`);
8672
+ if (daemonSupervisor$1 !== "none") {
8673
+ logger.logger.debug(`[DAEMON RUN] ${daemonSupervisor$1}-supervised: exiting ${HANDOVER_EXIT_CODE} for the supervisor to restart on the new bundle`);
8859
8674
  process.exit(HANDOVER_EXIT_CODE);
8860
8675
  }
8861
8676
  try {
@@ -1,24 +1,24 @@
1
1
  import os from 'node:os';
2
- import { c as claimSessionOrExit, a as applyServerSnapshot, b as applyReconnectReplay, w as withoutServerSnapshot, m as mergeReconnectMetadata, e as exitCursorStamp } from './sessionLock-B6K4SBZD.mjs';
3
- import { r as readSettings, H as HIBERNATION_CAPABILITY, a as resolveCheckMs, l as latchKeepAwake, e as evaluateWrapperIdle } from './persistence-jOEuAFTS.mjs';
4
- import { D as DEFAULT_CLAUDE_PERMISSION_MODE, H as HibernationProbe, c as commitHibernation } from './defaultPermissionMode-BLfxu-Yz.mjs';
2
+ import { c as claimSessionOrExit, a as applyServerSnapshot, b as applyReconnectReplay, w as withoutServerSnapshot, m as mergeReconnectMetadata, e as exitCursorStamp } from './sessionLock-CXOOX-VD.mjs';
3
+ import { r as readSettings, H as HIBERNATION_CAPABILITY, a as resolveCheckMs, l as latchKeepAwake, e as evaluateWrapperIdle } from './persistence-zJo4r7YI.mjs';
4
+ import { D as DEFAULT_CLAUDE_PERMISSION_MODE, H as HibernationProbe, c as commitHibernation } from './defaultPermissionMode-U9LuUeQh.mjs';
5
5
  import { randomUUID } from 'node:crypto';
6
- import { c as connectionState, A as ApiClient, s as startOfflineReconnection } from './api-C_YSQnsi.mjs';
7
- import { l as logger } from './logger-DpqihN1f.mjs';
8
- import { s as spawnOriginTags, a as sessionWorktreeMetadata } from './createSessionMetadata-DvGDsnsn.mjs';
9
- import { p as packageJson } from './package-CKj8zndE.mjs';
10
- import { P as PROMPT_QUEUE_CAPABILITY, a as PROJECT_SESSION_CAPABILITY } from './index-BI0h2Zks.mjs';
6
+ import { c as connectionState, A as ApiClient, s as startOfflineReconnection } from './api-C29WLYkW.mjs';
7
+ import { l as logger } from './logger-RMPh5aqe.mjs';
8
+ import { s as spawnOriginTags, a as sessionWorktreeMetadata } from './createSessionMetadata-C1MbLQnh.mjs';
9
+ import { p as packageJson } from './package-CTrz6U3C.mjs';
10
+ import { P as PROMPT_QUEUE_CAPABILITY, a as PROJECT_SESSION_CAPABILITY } from './index-BptfFoXM.mjs';
11
11
  import { F as FORK_BACKFILL_CAPABILITY, p as publishForkBackfillWhenCommitted } from './forkBackfill-DYIjlN1Z.mjs';
12
- import { c as configuration } from './configuration-YXw_Dcsb.mjs';
13
- import { n as notifyDaemonSessionStarted, c as checkDaemonHibernation } from './controlClient-BL4hb4l3.mjs';
14
- import { g as getInitialMachineMetadata } from './machineMetadata-D4E3qoIG.mjs';
12
+ import { c as configuration } from './configuration-elzht62L.mjs';
13
+ import { n as notifyDaemonSessionStarted, c as checkDaemonHibernation } from './controlClient-CuYQs2aZ.mjs';
14
+ import { g as getInitialMachineMetadata } from './machineMetadata-BTUtPRth.mjs';
15
15
  import { p as projectPath } from './projectPath-BTBIMB57.mjs';
16
16
  import { resolve, join } from 'node:path';
17
- import { c as createSessionForStartup } from './startupSessionCreate-DlZc8yPl.mjs';
17
+ import { c as createSessionForStartup } from './startupSessionCreate-BcAGYo51.mjs';
18
18
  import { a as applySandboxPermissionPolicy, r as resolveInitialClaudePermissionMode, m as mapToClaudeMode, b as reconcilePublishedPermissionMode } from './permissionMode-CH4FoZfU.mjs';
19
19
  import { d as decodeBase64, e as encodeBase64 } from './authRelay-DhQhkBvX.mjs';
20
20
  import { readFile } from 'node:fs/promises';
21
- import { C as CLAUDE_ATTACHMENT_KINDS, s as stripAttachmentManifest } from './attachmentContent-Ckzyb1Uy.mjs';
21
+ import { C as CLAUDE_ATTACHMENT_KINDS, s as stripAttachmentManifest } from './attachmentContent-DwY0uIg6.mjs';
22
22
  import { T as TranscriptPathHints } from './transcriptCursor-B7T_gkQ0.mjs';
23
23
  import { p as planClaudeStartup } from './startupPlan-DFMyNgAs.mjs';
24
24
  import 'node:fs';
@@ -26,36 +26,36 @@ import './processTreeSnapshot-CuLJDNC-.mjs';
26
26
  import 'node:child_process';
27
27
  import 'zod';
28
28
  import 'axios';
29
- import './lidState-D8Iuvjgl.mjs';
29
+ import './lidState-DXeYTsrm.mjs';
30
30
  import 'os';
31
31
  import 'child_process';
32
32
  import 'node:events';
33
33
  import 'socket.io-client';
34
- import './pushNotifications-CMmRsbKv.mjs';
34
+ import './pushNotifications-C4R9-1hU.mjs';
35
35
  import './contentLogMetadata-BlWI0egu.mjs';
36
36
  import './limits-DIo7rEBR.mjs';
37
- import './time-Cfknl7xG.mjs';
38
- import './registerCommonHandlers-K8dICQO2.mjs';
37
+ import './time-B2KKdAym.mjs';
38
+ import './registerCommonHandlers-a9lHojSV.mjs';
39
39
  import 'util';
40
40
  import 'fs/promises';
41
41
  import 'crypto';
42
42
  import 'path';
43
43
  import 'cross-spawn';
44
44
  import '@paralleldrive/cuid2';
45
- import './sync-BbjMC3sR.mjs';
45
+ import './sync--QUIOuf8.mjs';
46
46
  import './backgroundTaskActivity-8PdPxrvy.mjs';
47
47
  import 'chalk';
48
48
  import 'node:util';
49
49
  import './detectCLI-CSGMlV51.mjs';
50
50
  import 'fs';
51
- import './localHappyAgentAuth-D3rQDRd9.mjs';
51
+ import './localHappyAgentAuth-C1A4ChCR.mjs';
52
52
  import 'tweetnacl';
53
53
  import './fsMkdir-DumgLTzR.mjs';
54
54
  import 'url';
55
55
 
56
56
  const DEFAULT_CLAUDE_MODEL = void 0;
57
57
  const DEFAULT_CLAUDE_EFFORT = void 0;
58
- const importRunClaudeDeps = () => import('./runClaudeDeps-DMcv93lA.mjs');
58
+ const importRunClaudeDeps = () => import('./runClaudeDeps-COgZaUZm.mjs');
59
59
  async function runClaude(credentials, options = {}) {
60
60
  logger.debug(`[CLAUDE] ===== CLAUDE MODE STARTING =====`);
61
61
  logger.debug(`[CLAUDE] This is the Claude agent, NOT Gemini`);
@@ -69,7 +69,7 @@ async function runClaude(credentials, options = {}) {
69
69
  const isAssistantVariant = process.env.HAPPY_SESSION_VARIANT === "assistant";
70
70
  if (isAssistantVariant) {
71
71
  try {
72
- const { bootstrapAssistantHome } = await import('./bootstrap-D3vlOROj.mjs');
72
+ const { bootstrapAssistantHome } = await import('./bootstrap-DS8Acdhm.mjs');
73
73
  await bootstrapAssistantHome();
74
74
  } catch (error) {
75
75
  logger.debug("[START] Assistant home bootstrap failed:", error);
@@ -189,7 +189,7 @@ async function runClaude(credentials, options = {}) {
189
189
  }
190
190
  if (!response) {
191
191
  let offlineSessionId = null;
192
- const { claudeLocal } = await import('./claudeLocal-FnTUgwCi.mjs');
192
+ const { claudeLocal } = await import('./claudeLocal-U1Fa9sJo.mjs');
193
193
  const { createSessionScanner: createSessionScanner2 } = await loadDeps();
194
194
  const reconnection = startOfflineReconnection({
195
195
  serverUrl: configuration.serverUrl,