very-happy-cli 0.2.203 → 0.2.205

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/dist/{AcpBackend-CAMuhS0Z.mjs → AcpBackend-BqkDMgcN.mjs} +3 -3
  2. package/dist/{AcpBackend-DReFgpYD.cjs → AcpBackend-Do37yiZg.cjs} +3 -3
  3. package/dist/{AcpSessionManager-BZKM-sCt.cjs → AcpSessionManager-BpQKu2_m.cjs} +2 -2
  4. package/dist/{AcpSessionManager-CJOxMFCF.mjs → AcpSessionManager-CvEO7Yex.mjs} +2 -2
  5. package/dist/{BasePermissionHandler-BgX73mQ5.mjs → BasePermissionHandler-BpaIn9ko.mjs} +1 -1
  6. package/dist/{BasePermissionHandler-BBR9Gkob.cjs → BasePermissionHandler-CUXi-tq4.cjs} +1 -1
  7. package/dist/{account-hy0rztXY.mjs → account-C1nsl3ij.mjs} +11 -11
  8. package/dist/{account-41PkJ9nx.cjs → account-SwG5Yefp.cjs} +11 -11
  9. package/dist/{accountService-DEpIq6CF.mjs → accountService-CqrWNH8K.mjs} +4 -4
  10. package/dist/{accountService-Cns8UYGI.cjs → accountService-SOeB_21A.cjs} +4 -4
  11. package/dist/{acpSessionResume-DmOPXKpC.cjs → acpSessionResume-BCEol11N.cjs} +1 -1
  12. package/dist/{acpSessionResume-5El4xksf.mjs → acpSessionResume-DvDKsJTV.mjs} +1 -1
  13. package/dist/{agentHome-BXaVMqHX.cjs → agentHome-8wzmbm0H.cjs} +4 -4
  14. package/dist/{agentHome-DUxArmak.mjs → agentHome-BuFxooEg.mjs} +4 -4
  15. package/dist/{api-D8ZDxBWw.mjs → api-20GbdpxY.mjs} +107 -18
  16. package/dist/{api-ChhFBuB0.cjs → api-BnTF8fkj.cjs} +107 -18
  17. package/dist/{apiMachine-qav2pnk5.mjs → apiMachine-C8NGJHHd.mjs} +105 -21
  18. package/dist/{apiMachine-MPwddFXq.cjs → apiMachine-cyDRM_S-.cjs} +105 -21
  19. package/dist/{attachmentContent-f5gwnv9J.cjs → attachmentContent-B7zz_LPF.cjs} +2 -2
  20. package/dist/{attachmentContent-BfSQxccA.mjs → attachmentContent-Coo9lUxK.mjs} +2 -2
  21. package/dist/{auth-BxNuFv_0.mjs → auth-75rP3vc0.mjs} +8 -8
  22. package/dist/{auth-xW7SDE_7.mjs → auth-BX6xrdHv.mjs} +5 -5
  23. package/dist/{auth-thi2T_T8.cjs → auth-By6u_iKB.cjs} +5 -5
  24. package/dist/{auth-DkPAHXLj.cjs → auth-w4UTRbIf.cjs} +8 -8
  25. package/dist/{auto-DmXTwayU.mjs → auto-BhmWtRvv.mjs} +18 -18
  26. package/dist/{auto-BiRlQ4tm.cjs → auto-xr_gqUoy.cjs} +18 -18
  27. package/dist/{bootstrap-EGhaCmXy.cjs → bootstrap-3ti7LXMz.cjs} +2 -2
  28. package/dist/{bootstrap-pGaFGbWO.mjs → bootstrap-Dn_VvHSt.mjs} +2 -2
  29. package/dist/{browser-DSxpOnPb.cjs → browser-C4PVyjGe.cjs} +1 -1
  30. package/dist/{browser-BYSYzXvP.mjs → browser-C4wWGXH7.mjs} +1 -1
  31. package/dist/{claudeAccountEnv-Btp39mfa.cjs → claudeAccountEnv-BTZjHTpF.cjs} +1 -1
  32. package/dist/{claudeAccountEnv-DowsOlDB.mjs → claudeAccountEnv-C6Wl-ZbT.mjs} +1 -1
  33. package/dist/{claudeLocal-bDarWqaU.mjs → claudeLocal-B8rOA-EB.mjs} +5 -5
  34. package/dist/{claudeLocal-ClqHmkk6.cjs → claudeLocal-DZALKVVc.cjs} +5 -5
  35. package/dist/{claudeLocalLauncher-Bxi0_eW9.cjs → claudeLocalLauncher-Bf5uj0EA.cjs} +10 -10
  36. package/dist/{claudeLocalLauncher-Ccpj2KgW.mjs → claudeLocalLauncher-CJPRSv3z.mjs} +10 -10
  37. package/dist/claudeLongContext-BR_zdjUp.cjs +239 -0
  38. package/dist/claudeLongContext-CZ60xo5p.mjs +219 -0
  39. package/dist/{claudeSessionFork-Cize0Y2T.mjs → claudeSessionFork-BK4U655i.mjs} +1 -1
  40. package/dist/{claudeSessionFork-nyNFjgaf.cjs → claudeSessionFork-unEBLW0t.cjs} +1 -1
  41. package/dist/{client-Cddb1dhi.cjs → client-BKjBr6pc.cjs} +2 -2
  42. package/dist/{client-Wr_BiOon.mjs → client-BbYds4AV.mjs} +16 -7
  43. package/dist/{client-CMKgB-76.cjs → client-Bh-y6cVc.cjs} +16 -7
  44. package/dist/{client-DO8DNDC3.mjs → client-BxtaglBR.mjs} +2 -2
  45. package/dist/{client-CgMVIP7v.mjs → client-CvLm25Wq.mjs} +2 -2
  46. package/dist/{client-6Y6O72Uq.cjs → client-DGsdLx8L.cjs} +2 -2
  47. package/dist/{client-CX8kRedW.mjs → client-m-K1b6Qa.mjs} +3 -3
  48. package/dist/{client-DP8FabOE.cjs → client-wMlUPnrV.cjs} +3 -3
  49. package/dist/codex/happyMcpStdioBridge.cjs +20 -19
  50. package/dist/codex/happyMcpStdioBridge.mjs +20 -19
  51. package/dist/{codexAccount-CieIQLOX.mjs → codexAccount-BPQ-lPhH.mjs} +1 -1
  52. package/dist/{codexAccount-D-OBY29W.cjs → codexAccount-BjaHvmKH.cjs} +1 -1
  53. package/dist/{codexAppServerClient-EzrHWYhX.cjs → codexAppServerClient-6aQelpRl.cjs} +3 -3
  54. package/dist/{codexAppServerClient-D-cD2Dfj.mjs → codexAppServerClient-BeRimnu9.mjs} +3 -3
  55. package/dist/{codexCommand-BMcXtvU3.cjs → codexCommand-CYVaGmhh.cjs} +67 -56
  56. package/dist/{codexCommand-D79GnRhB.mjs → codexCommand-CmGNDs45.mjs} +67 -56
  57. package/dist/{codexTermination-CF6xiFbb.cjs → codexTermination-B09HyYIB.cjs} +1 -1
  58. package/dist/{codexTermination-CK1MYJT7.mjs → codexTermination-Z18pGkkl.mjs} +1 -1
  59. package/dist/{config-Crn1mNgr.mjs → config-4b-sF37g.mjs} +3 -3
  60. package/dist/{config-F6zSRyk2.cjs → config-Dq_N615Z.cjs} +3 -3
  61. package/dist/{configuration-Cl9kOv09.cjs → configuration-Fx61b4MJ.cjs} +1 -1
  62. package/dist/{configuration-i9MVy0a5.mjs → configuration-H8q1sMwk.mjs} +1 -1
  63. package/dist/{connect-CiA13Xm4.mjs → connect-BwSwKPzI.mjs} +13 -13
  64. package/dist/{connect-ClklWmnI.cjs → connect-D54AnDIT.cjs} +13 -13
  65. package/dist/{context-DvdZsGgl.mjs → context-CM1Xd_HO.mjs} +1 -1
  66. package/dist/{context-BxODP3mG.cjs → context-D-QOcYuX.cjs} +1 -1
  67. package/dist/{controlClient-DxCQKfqe.cjs → controlClient-D04wXKoQ.cjs} +12 -3
  68. package/dist/{controlClient-D6vqMUfi.mjs → controlClient-D9DYqW02.mjs} +12 -4
  69. package/dist/{createSessionMetadata-BuAVB-xI.mjs → createSessionMetadata-CHa4pufa.mjs} +2 -2
  70. package/dist/{createSessionMetadata-B_NZvmhm.cjs → createSessionMetadata-Ce539QXK.cjs} +2 -2
  71. package/dist/{daemonAccounts-ciidbU2h.cjs → daemonAccounts-BOoI7-sw.cjs} +2 -2
  72. package/dist/{daemonAccounts-D5shoCLt.mjs → daemonAccounts-BtkmoJmC.mjs} +3 -3
  73. package/dist/{defaultPermissionMode-DgeiMMqy.mjs → defaultPermissionMode-CYQi7vqJ.mjs} +1 -1
  74. package/dist/{defaultPermissionMode-Cs_Tv83b.cjs → defaultPermissionMode-DmLYaaL8.cjs} +1 -1
  75. package/dist/{deterministicJson-B9XrEawW.mjs → deterministicJson-BEeXnWCF.mjs} +62 -20
  76. package/dist/{deterministicJson-kM2OdGZu.cjs → deterministicJson-D34CnNHO.cjs} +61 -19
  77. package/dist/{doctor-HHS4YegX.mjs → doctor-BI0Iywt_.mjs} +7 -7
  78. package/dist/{doctor-DiPRqsqg.cjs → doctor-BX8oWKZq.cjs} +7 -7
  79. package/dist/{downloadTarget-Cd8hx54t.mjs → downloadTarget-DX3m00OE.mjs} +6 -6
  80. package/dist/{downloadTarget-osB-mGh0.cjs → downloadTarget-TzXJEh6W.cjs} +6 -6
  81. package/dist/{ensureDaemonRunning-C0iDtuL7.mjs → ensureDaemonRunning-BBBqZ6vQ.mjs} +5 -5
  82. package/dist/{ensureDaemonRunning-CtBvPHVB.cjs → ensureDaemonRunning-Bvu-yyFn.cjs} +5 -5
  83. package/dist/exitNotice-M4UjtWkr.cjs +95 -0
  84. package/dist/exitNotice-gOAdDcL3.mjs +84 -0
  85. package/dist/{forkBackfill-DYIjlN1Z.mjs → forkBackfill-C9EfJ64O.mjs} +28 -2
  86. package/dist/{forkBackfill-8eLDeS73.cjs → forkBackfill-D2WW91fz.cjs} +28 -1
  87. package/dist/{format-B5V7ie8N.cjs → format-BEktLc45.cjs} +1 -1
  88. package/dist/{format-Dc5zMslz.mjs → format-BPAREVhi.mjs} +1 -1
  89. package/dist/{handleResumeCommand-vcD2qcAM.cjs → handleResumeCommand-6dYW_WOi.cjs} +5 -5
  90. package/dist/{handleResumeCommand-xrOAA1qI.mjs → handleResumeCommand-DziiqogX.mjs} +5 -5
  91. package/dist/{index-iFVMrlPo.mjs → index-BRq5iitn.mjs} +4 -4
  92. package/dist/{index-44o_qMvE.cjs → index-BYL_X3gP.cjs} +27 -6
  93. package/dist/{index-AyDwQ6FG.cjs → index-BmacwzcK.cjs} +45 -44
  94. package/dist/{index-D0rCXp-e.cjs → index-Cawt-fgZ.cjs} +4 -4
  95. package/dist/{index-C_ePuQwB.cjs → index-CoW4RNEb.cjs} +3 -3
  96. package/dist/{index-B7pKBIcn.mjs → index-CzBvl9py.mjs} +3 -3
  97. package/dist/{index-DIKJMfs2.mjs → index-DCvq8Cfw.mjs} +4 -4
  98. package/dist/{index-CiRMvS73.mjs → index-DWk-WTU-.mjs} +24 -7
  99. package/dist/{index-B7CXMlrz.mjs → index-UuWDafdi.mjs} +46 -45
  100. package/dist/{index-Cl-WkB_6.cjs → index-bVMcFi7v.cjs} +4 -4
  101. package/dist/index.cjs +2 -2
  102. package/dist/index.mjs +2 -2
  103. package/dist/{install-yqS4y1cm.mjs → install-B4OVUIw5.mjs} +3 -3
  104. package/dist/{install-BgBgsOlS.cjs → install-BQc4Hwuo.cjs} +3 -3
  105. package/dist/{issue-D7liK6bR.cjs → issue-WpLZYxUQ.cjs} +8 -8
  106. package/dist/{issue-aKZd7J55.mjs → issue-h_BIrzLs.mjs} +8 -8
  107. package/dist/lib.cjs +12 -12
  108. package/dist/lib.d.cts +42 -1
  109. package/dist/lib.d.mts +42 -1
  110. package/dist/lib.mjs +12 -12
  111. package/dist/{localHappyAgentAuth-Dm9obisi.cjs → localHappyAgentAuth-DQRWBUxQ.cjs} +1 -1
  112. package/dist/{localHappyAgentAuth-B2JJxlE9.mjs → localHappyAgentAuth-DgLh3xzW.mjs} +1 -1
  113. package/dist/{logger-BiKmiREe.mjs → logger-BKAKIZdy.mjs} +2 -2
  114. package/dist/{logger-BtWBoP60.cjs → logger-DP35yx-C.cjs} +2 -2
  115. package/dist/{machineMetadata-C0-LyMsb.cjs → machineMetadata-CZj0XwM_.cjs} +3 -3
  116. package/dist/{machineMetadata-CiyO9wm-.mjs → machineMetadata-DTlMMhj_.mjs} +3 -3
  117. package/dist/{main-BP2TBnp5.mjs → main-BIE1zeaH.mjs} +48 -48
  118. package/dist/{main-C7hKf5hG.cjs → main-l_nP9IQq.cjs} +48 -48
  119. package/dist/{mcp-Cn4k-PXb.mjs → mcp-B5F6-_7o.mjs} +20 -18
  120. package/dist/{mcp-DO00rr9n.cjs → mcp-KQHODyR3.cjs} +20 -18
  121. package/dist/{mirrorProtocol-DDtEN49F.mjs → mirrorProtocol-DDOUSWqL.mjs} +3 -3
  122. package/dist/{mirrorProtocol-DwO8QgLM.cjs → mirrorProtocol-duXHJeBW.cjs} +3 -3
  123. package/dist/{package-Djdgx8nb.cjs → package-BCJfNMlt.cjs} +7 -7
  124. package/dist/{package-CIW5lwaN.mjs → package-CMmhJwSf.mjs} +7 -7
  125. package/dist/{panels-BpfVEvwF.mjs → panels-BWxZMb_x.mjs} +5 -5
  126. package/dist/{panels-DMLtEOtJ.cjs → panels-CBlIJIu8.cjs} +5 -5
  127. package/dist/{peerTools-fYuKq3ev.cjs → peerTools-C6Y28jqG.cjs} +5 -5
  128. package/dist/{peerTools-CQ60fUPp.mjs → peerTools-ZJzoM48N.mjs} +5 -5
  129. package/dist/{persistence-D_zVC4Xz.mjs → persistence-dLgWDclq.mjs} +2 -2
  130. package/dist/{persistence-BOEZtiKb.cjs → persistence-iiVFxhbt.cjs} +2 -2
  131. package/dist/{piRunnerArgs-DE_YXvS1.mjs → piRunnerArgs-DuWYye4f.mjs} +1 -1
  132. package/dist/{piRunnerArgs-Dz9P62db.cjs → piRunnerArgs-DxWxgOSZ.cjs} +1 -1
  133. package/dist/{piRuntime-Du62fjeU.cjs → piRuntime-6UnkPaS1.cjs} +1 -1
  134. package/dist/{piRuntime-8SbpRmNA.mjs → piRuntime-Cbwk6bN0.mjs} +1 -1
  135. package/dist/{piTerminal-CGAw7WDW.cjs → piTerminal-BaoUqlM0.cjs} +22 -20
  136. package/dist/{piTerminal-Cl45kac0.mjs → piTerminal-Dn0qN9nb.mjs} +22 -20
  137. package/dist/{pushNotifications-RVpbqrxR.mjs → pushNotifications-DD9Z0CoN.mjs} +17 -3
  138. package/dist/{pushNotifications-B19lT5mY.cjs → pushNotifications-gcQv61e6.cjs} +17 -3
  139. package/dist/{query-CNWdX2r5.cjs → query-12momZSq.cjs} +1 -1
  140. package/dist/{query-DBRR3TOO.mjs → query-CFdlRD7b.mjs} +1 -1
  141. package/dist/{rateLimitWindows-DX5y23x_.mjs → rateLimitWindows-CVS-btq-.mjs} +1 -1
  142. package/dist/{rateLimitWindows-mfdokrkQ.cjs → rateLimitWindows-D2Gmg7jU.cjs} +1 -1
  143. package/dist/{reconnectGate-B8ltzSJD.cjs → reconnectGate-BkSaZdIx.cjs} +1 -1
  144. package/dist/{reconnectGate-DSxYUCWy.mjs → reconnectGate-m81ySKhh.mjs} +1 -1
  145. package/dist/{registerCommonHandlers-Y2siJGwL.cjs → registerCommonHandlers-B5p3ZZmp.cjs} +2 -2
  146. package/dist/{registerCommonHandlers-CQDRKlkG.mjs → registerCommonHandlers-CqLHkmG2.mjs} +2 -2
  147. package/dist/{registerKillSessionHandler-B0pMZOdH.cjs → registerKillSessionHandler-Bf_Q9yii.cjs} +6 -6
  148. package/dist/{registerKillSessionHandler-U4Dxtohy.mjs → registerKillSessionHandler-jYSuGIP1.mjs} +6 -6
  149. package/dist/{registerSideQuestionHandler-DM1QqTxf.mjs → registerSideQuestionHandler-CPR29B9d.mjs} +4 -4
  150. package/dist/{registerSideQuestionHandler--ruKhCdY.cjs → registerSideQuestionHandler-DSIw3xPW.cjs} +4 -4
  151. package/dist/{remoteSessionClient-T-Raoiy6.mjs → remoteSessionClient-CLuxs0_y.mjs} +5 -5
  152. package/dist/{remoteSessionClient-CjINaEs_.cjs → remoteSessionClient-DX-60nto.cjs} +5 -5
  153. package/dist/{reportProgressTool-DDfL1OY7.cjs → reportProgressTool-D1XAxeY1.cjs} +5 -5
  154. package/dist/{reportProgressTool-Stg0xrjF.mjs → reportProgressTool-k3g3D6cX.mjs} +5 -5
  155. package/dist/{run-Dq48xBtw.mjs → run-BBJqaIoY.mjs} +200 -55
  156. package/dist/{run-BoSVfVCZ.cjs → run-DOb_agpA.cjs} +200 -55
  157. package/dist/{runClaude-D8ScJdJU.cjs → runClaude-BU3Lrd5o.cjs} +53 -38
  158. package/dist/{runClaude-CJe5atrS.mjs → runClaude-NTvReMNp.mjs} +44 -29
  159. package/dist/{runClaudeDeps-4RFRR4cY.cjs → runClaudeDeps-DQV-QdDi.cjs} +129 -61
  160. package/dist/{runClaudeDeps-CL3goCXG.mjs → runClaudeDeps-Dh2LVY2w.mjs} +125 -57
  161. package/dist/{runGemini-DZv6jPxV.mjs → runGemini-CGD4bqQ3.mjs} +36 -35
  162. package/dist/{runGemini-BcbNxgsA.cjs → runGemini-dk877ztP.cjs} +36 -35
  163. package/dist/{runOpenClaw-CRqCoj-_.mjs → runOpenClaw-6MAJ_tHi.mjs} +18 -18
  164. package/dist/{runOpenClaw-BeSivE0X.cjs → runOpenClaw-CQakHPPq.cjs} +18 -18
  165. package/dist/{sandbox-xflHChws.cjs → sandbox-8DeDre0R.cjs} +4 -4
  166. package/dist/{sandbox-DAvJJZcV.mjs → sandbox-B3YMD9I6.mjs} +4 -4
  167. package/dist/selfCheck-BCKIF6ST.mjs +89 -0
  168. package/dist/{selfCheck-DZwdgBg0.cjs → selfCheck-BpvUNBmv.cjs} +40 -40
  169. package/dist/{send-ConAuYqL.cjs → send-Bym_IU4n.cjs} +8 -8
  170. package/dist/{send-Co_l_Nmg.mjs → send-DgrbVZzC.mjs} +8 -8
  171. package/dist/{server-by6kezmM.cjs → server-BY-FubRe.cjs} +6 -6
  172. package/dist/{server-D1Qrmxl7.mjs → server-CmAgeEhS.mjs} +4 -4
  173. package/dist/{sessionLock-DFrwAnwR.mjs → sessionLock-BMtAQ4bW.mjs} +21 -4
  174. package/dist/{sessionLock-Db_uQcUP.cjs → sessionLock-WXtjQC9q.cjs} +22 -3
  175. package/dist/{sessionOps-CptDjoZi.cjs → sessionOps-BEVzE38e.cjs} +4 -4
  176. package/dist/{sessionOps-C7nps7qG.mjs → sessionOps-BxLhHEhM.mjs} +4 -4
  177. package/dist/{sessionProvider-BaJq1AnY.mjs → sessionProvider-B1tL5K5f.mjs} +10 -10
  178. package/dist/{sessionProvider-D9nsAE14.cjs → sessionProvider-DCnZFxwe.cjs} +10 -10
  179. package/dist/{sessionScanner-BOb33NVJ.mjs → sessionScanner-Ctm9w-AJ.mjs} +3 -3
  180. package/dist/{sessionScanner-C6OVO0Ne.cjs → sessionScanner-eX2f-j0u.cjs} +3 -3
  181. package/dist/{sessions-qVHDXJa6.cjs → sessions-BG8r7uht.cjs} +10 -10
  182. package/dist/{sessions-GCql_3Dl.mjs → sessions-BuxOqRcc.mjs} +10 -10
  183. package/dist/{setupOfflineReconnection-B8QKqc9a.cjs → setupOfflineReconnection-65k1yEFn.cjs} +2 -2
  184. package/dist/{setupOfflineReconnection-lu0YbS7m.mjs → setupOfflineReconnection-Dd4NCN9i.mjs} +2 -2
  185. package/dist/{spawn-tL-724RS.cjs → spawn-0YaC-DQg.cjs} +15 -15
  186. package/dist/{spawn-C9NSlg99.mjs → spawn-wys_MPgK.mjs} +15 -15
  187. package/dist/{spawnAgents-BclZYkov.mjs → spawnAgents-CcFKtKdX.mjs} +2 -1
  188. package/dist/{spawnAgents-DvbEDCIq.cjs → spawnAgents-D4lR468W.cjs} +2 -1
  189. package/dist/{spawnHappyCLI-D7EO8s4E.cjs → spawnHappyCLI-Bf_N42fi.cjs} +1 -1
  190. package/dist/{spawnHappyCLI-jXUKLUT5.mjs → spawnHappyCLI-EvPb0jB3.mjs} +1 -1
  191. package/dist/{startFileWatcher-C7eFs4hA.mjs → startFileWatcher-GF4BNFA1.mjs} +1 -1
  192. package/dist/{startFileWatcher-6NpLGxg5.cjs → startFileWatcher-ikipjpDk.cjs} +1 -1
  193. package/dist/{startupSessionCreate-C5wdvraY.cjs → startupSessionCreate-CHU23k6u.cjs} +3 -3
  194. package/dist/{startupSessionCreate-D3ph1DtL.mjs → startupSessionCreate-Dp3_kvi_.mjs} +3 -3
  195. package/dist/{store-Cpb1LMNW.cjs → store-DGMILdMn.cjs} +1 -1
  196. package/dist/{store-DWmjM4Ex.mjs → store-Fge1h9wy.mjs} +1 -1
  197. package/dist/{streamRelay-DdGOsW8v.mjs → streamRelay-MaaYNNuh.mjs} +1 -1
  198. package/dist/{streamRelay-4XiiNB3N.cjs → streamRelay-keuifCPQ.cjs} +1 -1
  199. package/dist/{sync-BIXH8ijr.mjs → sync-Co0wRhGu.mjs} +1 -1
  200. package/dist/{sync-ni64k2OI.cjs → sync-Dm6GaS8P.cjs} +1 -1
  201. package/dist/{systemPrompt-B_vnlIr1.mjs → systemPrompt-5cZbY0sf.mjs} +2 -2
  202. package/dist/{systemPrompt-DuoULaqr.cjs → systemPrompt-Ds7HcfDZ.cjs} +2 -2
  203. package/dist/{teams-CsR_8p3Q.mjs → teams-DBWFUOC3.mjs} +20 -9
  204. package/dist/{teams-DLfcbOMh.cjs → teams-nrcZL-1X.cjs} +20 -9
  205. package/dist/{template-3fV9bi0X.cjs → template-ChUotPTL.cjs} +1 -1
  206. package/dist/{template-CtRLg2PG.mjs → template-D8fzlO58.mjs} +1 -1
  207. package/dist/{time-Che8GhII.mjs → time-Cn0mV-di.mjs} +1 -1
  208. package/dist/{time-BMCY7zJL.cjs → time-NSglRbyr.cjs} +1 -1
  209. package/dist/{titleGenerator-HVEN1e7o.cjs → titleGenerator-CMIUB04_.cjs} +3 -3
  210. package/dist/{titleGenerator-B9LckLDq.mjs → titleGenerator-hmxUR3rU.mjs} +2 -2
  211. package/dist/{todo-bc7db5NN.mjs → todo-CDdBityL.mjs} +8 -8
  212. package/dist/{todo-B8byb_cy.cjs → todo-D5BoNMb7.cjs} +8 -8
  213. package/dist/{tools-BAMaBbbP.mjs → tools-BmQbzAfY.mjs} +1 -1
  214. package/dist/{tools--RN1SFkD.cjs → tools-CLkNfafW.cjs} +1 -1
  215. package/dist/{uninstall-UC0Q8YTj.cjs → uninstall-DCx_qNMZ.cjs} +3 -3
  216. package/dist/{uninstall-Dv4C-W9z.mjs → uninstall-DE0SH2qs.mjs} +3 -3
  217. package/dist/{wrapperAccount-nGGMJDBF.cjs → wrapperAccount-BHMM9I6g.cjs} +2 -2
  218. package/dist/{wrapperAccount-z8Swrd08.mjs → wrapperAccount-CwaA-n1S.mjs} +2 -2
  219. package/package.json +7 -7
  220. package/dist/permissionMode-CH4FoZfU.mjs +0 -80
  221. package/dist/permissionMode-CrV-XuMs.cjs +0 -87
  222. package/dist/selfCheck-BKOIROoJ.mjs +0 -89
@@ -1,28 +1,28 @@
1
1
  'use strict';
2
2
 
3
3
  var os = require('node:os');
4
- var sessionLock = require('./sessionLock-Db_uQcUP.cjs');
5
- var persistence = require('./persistence-BOEZtiKb.cjs');
6
- var startupSessionCreate = require('./startupSessionCreate-C5wdvraY.cjs');
4
+ var sessionLock = require('./sessionLock-WXtjQC9q.cjs');
5
+ var persistence = require('./persistence-iiVFxhbt.cjs');
6
+ var startupSessionCreate = require('./startupSessionCreate-CHU23k6u.cjs');
7
7
  var node_crypto = require('node:crypto');
8
- var api = require('./api-ChhFBuB0.cjs');
9
- var logger = require('./logger-BtWBoP60.cjs');
10
- var createSessionMetadata = require('./createSessionMetadata-B_NZvmhm.cjs');
11
- var _package = require('./package-Djdgx8nb.cjs');
12
- var index = require('./index-44o_qMvE.cjs');
13
- var defaultPermissionMode = require('./defaultPermissionMode-Cs_Tv83b.cjs');
14
- var forkBackfill = require('./forkBackfill-8eLDeS73.cjs');
15
- var configuration = require('./configuration-Cl9kOv09.cjs');
16
- var wrapperAccount = require('./wrapperAccount-nGGMJDBF.cjs');
17
- var store = require('./store-Cpb1LMNW.cjs');
18
- var controlClient = require('./controlClient-DxCQKfqe.cjs');
19
- var machineMetadata = require('./machineMetadata-C0-LyMsb.cjs');
8
+ var api = require('./api-BnTF8fkj.cjs');
9
+ var logger = require('./logger-DP35yx-C.cjs');
10
+ var createSessionMetadata = require('./createSessionMetadata-Ce539QXK.cjs');
11
+ var _package = require('./package-BCJfNMlt.cjs');
12
+ var index = require('./index-BYL_X3gP.cjs');
13
+ var defaultPermissionMode = require('./defaultPermissionMode-DmLYaaL8.cjs');
14
+ var forkBackfill = require('./forkBackfill-D2WW91fz.cjs');
15
+ var configuration = require('./configuration-Fx61b4MJ.cjs');
16
+ var wrapperAccount = require('./wrapperAccount-BHMM9I6g.cjs');
17
+ var store = require('./store-DGMILdMn.cjs');
18
+ var controlClient = require('./controlClient-D04wXKoQ.cjs');
19
+ var machineMetadata = require('./machineMetadata-CZj0XwM_.cjs');
20
20
  var projectPath = require('./projectPath-C3ioB4Bu.cjs');
21
21
  var path = require('node:path');
22
- var permissionMode = require('./permissionMode-CrV-XuMs.cjs');
22
+ var claudeLongContext = require('./claudeLongContext-BR_zdjUp.cjs');
23
23
  var authRelay = require('./authRelay-Dy1qU9td.cjs');
24
24
  var promises = require('node:fs/promises');
25
- var attachmentContent = require('./attachmentContent-f5gwnv9J.cjs');
25
+ var attachmentContent = require('./attachmentContent-B7zz_LPF.cjs');
26
26
  var transcriptCursor = require('./transcriptCursor-DcXGLeSc.cjs');
27
27
  var startupPlan = require('./startupPlan-BLMbfQIH.cjs');
28
28
  var reconnectEnv = require('./reconnectEnv-B31lY4nR.cjs');
@@ -34,30 +34,30 @@ require('node:child_process');
34
34
  require('./processTreeSnapshot-D5iNblp6.cjs');
35
35
  require('zod');
36
36
  require('axios');
37
- require('./pushNotifications-B19lT5mY.cjs');
37
+ require('./pushNotifications-gcQv61e6.cjs');
38
38
  require('./contentLogMetadata-ZSFk_NjQ.cjs');
39
- require('./reconnectGate-B8ltzSJD.cjs');
39
+ require('./reconnectGate-BkSaZdIx.cjs');
40
40
  require('os');
41
41
  require('child_process');
42
42
  require('node:events');
43
43
  require('socket.io-client');
44
44
  require('./limits-C-a7gr04.cjs');
45
- require('./time-BMCY7zJL.cjs');
46
- require('./registerCommonHandlers-Y2siJGwL.cjs');
45
+ require('./time-NSglRbyr.cjs');
46
+ require('./registerCommonHandlers-B5p3ZZmp.cjs');
47
47
  require('util');
48
48
  require('fs/promises');
49
49
  require('crypto');
50
50
  require('path');
51
51
  require('cross-spawn');
52
52
  require('@paralleldrive/cuid2');
53
- require('./sync-ni64k2OI.cjs');
53
+ require('./sync-Dm6GaS8P.cjs');
54
54
  require('./backgroundTaskActivity-CBvUdj39.cjs');
55
55
  require('chalk');
56
56
  require('node:util');
57
- require('./claudeAccountEnv-Btp39mfa.cjs');
57
+ require('./claudeAccountEnv-BTZjHTpF.cjs');
58
58
  require('./detectCLI-BuYR_Qxe.cjs');
59
59
  require('fs');
60
- require('./localHappyAgentAuth-Dm9obisi.cjs');
60
+ require('./localHappyAgentAuth-DQRWBUxQ.cjs');
61
61
  require('tweetnacl');
62
62
  require('./fsMkdir-0K3yENml.cjs');
63
63
  require('url');
@@ -68,7 +68,7 @@ const CLAUDE_EFFORTS = ["low", "medium", "high", "xhigh", "max"];
68
68
  function restoredClaudeEffort(effort) {
69
69
  return CLAUDE_EFFORTS.includes(effort ?? "") ? effort : void 0;
70
70
  }
71
- const importRunClaudeDeps = () => Promise.resolve().then(function () { return require('./runClaudeDeps-4RFRR4cY.cjs'); });
71
+ const importRunClaudeDeps = () => Promise.resolve().then(function () { return require('./runClaudeDeps-DQV-QdDi.cjs'); });
72
72
  async function runClaude(credentials, options = {}) {
73
73
  logger.logger.debug(`[CLAUDE] ===== CLAUDE MODE STARTING =====`);
74
74
  logger.logger.debug(`[CLAUDE] This is the Claude agent, NOT Gemini`);
@@ -84,7 +84,7 @@ async function runClaude(credentials, options = {}) {
84
84
  const isAssistantVariant = process.env.HAPPY_SESSION_VARIANT === "assistant";
85
85
  if (isAssistantVariant) {
86
86
  try {
87
- const { bootstrapAssistantHome } = await Promise.resolve().then(function () { return require('./bootstrap-EGhaCmXy.cjs'); });
87
+ const { bootstrapAssistantHome } = await Promise.resolve().then(function () { return require('./bootstrap-3ti7LXMz.cjs'); });
88
88
  await bootstrapAssistantHome();
89
89
  } catch (error) {
90
90
  logger.logger.debug("[START] Assistant home bootstrap failed:", error);
@@ -116,8 +116,8 @@ async function runClaude(credentials, options = {}) {
116
116
  let machineId = settings?.machineId;
117
117
  const sandboxConfig = options.noSandbox ? void 0 : settings?.sandboxConfig;
118
118
  const sandboxEnabled = Boolean(sandboxConfig?.enabled);
119
- const initialPermissionMode = permissionMode.applySandboxPermissionPolicy(
120
- permissionMode.resolveInitialClaudePermissionMode(options.permissionMode ?? defaultPermissionMode.DEFAULT_CLAUDE_PERMISSION_MODE, options.claudeArgs),
119
+ const initialPermissionMode = claudeLongContext.applySandboxPermissionPolicy(
120
+ claudeLongContext.resolveInitialClaudePermissionMode(options.permissionMode ?? defaultPermissionMode.DEFAULT_CLAUDE_PERMISSION_MODE, options.claudeArgs),
121
121
  sandboxEnabled
122
122
  );
123
123
  const dangerouslySkipPermissions = initialPermissionMode === "bypassPermissions" || initialPermissionMode === "yolo" || sandboxEnabled || Boolean(options.claudeArgs?.includes("--dangerously-skip-permissions"));
@@ -138,6 +138,10 @@ async function runClaude(credentials, options = {}) {
138
138
  const importedFromClaudeSessionId = process.env.HAPPY_IMPORTED_FROM_CLAUDE_SESSION_ID;
139
139
  const importTitle = process.env.HAPPY_IMPORT_TITLE;
140
140
  const originTags = createSessionMetadata.spawnOriginTags(process.env, "claude");
141
+ const claudeEnv = { ...process.env, ...options.claudeEnvVars };
142
+ const longContextStore = claudeLongContext.longContextStorePath(configuration.configuration.happyHomeDir);
143
+ const longContextStoreKey = claudeLongContext.longContextKey(claudeEnv, claudeLongContext.readClaudeMergedSettings(claudeEnv, workingDirectory).env);
144
+ const longContextVerdict = () => claudeLongContext.readLongContextVerdict(longContextStore, longContextStoreKey);
141
145
  let metadata = {
142
146
  path: workingDirectory,
143
147
  host: os.hostname(),
@@ -166,10 +170,13 @@ async function runClaude(credentials, options = {}) {
166
170
  // writer; a reconnect keeps the server copy). A spawn-time model is a choice.
167
171
  modelIntent: options.model ?? null,
168
172
  effortIntent: null,
173
+ // B-883: known before the first message, so follow-latest defers to it there too.
174
+ configuredModel: claudeLongContext.readClaudeConfiguredModel(claudeEnv, workingDirectory),
175
+ longContextUnsupported: longContextVerdict(),
169
176
  stickyModel: options.model ?? null,
170
177
  // Effective mode this process enforces. Kept current by
171
178
  // publishPermissionMode below; the web renders it instead of guessing.
172
- permissionMode: permissionMode.mapToClaudeMode(initialPermissionMode ?? "default"),
179
+ permissionMode: claudeLongContext.mapToClaudeMode(initialPermissionMode ?? "default"),
173
180
  sandbox: sandboxConfig?.enabled ? sandboxConfig : null,
174
181
  dangerouslySkipPermissions,
175
182
  ...forkedFromSessionId ? { parentSessionId: forkedFromSessionId } : {},
@@ -212,7 +219,7 @@ async function runClaude(credentials, options = {}) {
212
219
  }
213
220
  if (!response) {
214
221
  let offlineSessionId = null;
215
- const { claudeLocal } = await Promise.resolve().then(function () { return require('./claudeLocal-ClqHmkk6.cjs'); });
222
+ const { claudeLocal } = await Promise.resolve().then(function () { return require('./claudeLocal-DZALKVVc.cjs'); });
216
223
  const { createSessionScanner: createSessionScanner2 } = await loadDeps();
217
224
  const reconnection = api.startOfflineReconnection({
218
225
  serverUrl: configuration.configuration.serverUrl,
@@ -374,18 +381,19 @@ async function runClaude(credentials, options = {}) {
374
381
  // B-262 batch 2 (B5): a reconnected process re-publishes the mode
375
382
  // IT enforces; the server copy may still carry the previous
376
383
  // process's value.
377
- permissionMode: permissionMode.mapToClaudeMode(initialPermissionMode ?? "default")
384
+ permissionMode: claudeLongContext.mapToClaudeMode(initialPermissionMode ?? "default")
378
385
  }));
379
386
  }
380
387
  const forkClaudeSessionId = process.env.HAPPY_FORK_CLAUDE_SESSION_ID;
381
388
  if (!reconnectSessionId && forkClaudeSessionId) {
382
389
  const jsonlPath = path.join(getProjectPath(workingDirectory), `${forkClaudeSessionId}.jsonl`);
390
+ forkBackfill.announceForkBackfill(session);
383
391
  try {
384
392
  const file = await promises.readFile(jsonlPath, "utf-8");
385
- const backfilled = replayClaudeForkJsonl(file, {
393
+ const backfilled = session.replayHistory(() => replayClaudeForkJsonl(file, {
386
394
  send: (line) => session.sendClaudeSessionMessage(line),
387
395
  closeTurn: () => session.closeReplayedClaudeTurn()
388
- });
396
+ }));
389
397
  logger.logger.debug(`[FORK BACKFILL] Replayed ${backfilled} historical messages from ${jsonlPath}`);
390
398
  session.updateMetadata((meta) => ({ ...meta, claudeSessionId: forkClaudeSessionId }));
391
399
  void forkBackfill.publishForkBackfillWhenCommitted(session, { count: backfilled }).then((published) => logger.logger.debug(`[FORK BACKFILL] ${published ? "Committed" : "Session closed before commit of"} ${backfilled} replayed messages`));
@@ -546,23 +554,23 @@ async function runClaude(credentials, options = {}) {
546
554
  )
547
555
  }));
548
556
  let currentPermissionMode = initialPermissionMode;
549
- let publishedPermissionMode = permissionMode.mapToClaudeMode(initialPermissionMode ?? "default");
557
+ let publishedPermissionMode = claudeLongContext.mapToClaudeMode(initialPermissionMode ?? "default");
550
558
  const publishPermissionMode = (mode) => {
551
559
  currentPermissionMode = mode;
552
- const published = permissionMode.mapToClaudeMode(mode ?? "default");
560
+ const published = claudeLongContext.mapToClaudeMode(mode ?? "default");
553
561
  if (published === publishedPermissionMode) return;
554
562
  publishedPermissionMode = published;
555
563
  session.updateMetadata((meta) => ({ ...meta, permissionMode: published }));
556
564
  };
557
565
  const publishEffectivePermissionMode = (effective) => {
558
- const decision = permissionMode.reconcilePublishedPermissionMode({
559
- intent: permissionMode.mapToClaudeMode(currentPermissionMode ?? "default"),
566
+ const decision = claudeLongContext.reconcilePublishedPermissionMode({
567
+ intent: claudeLongContext.mapToClaudeMode(currentPermissionMode ?? "default"),
560
568
  published: publishedPermissionMode,
561
569
  effective
562
570
  });
563
571
  if (!decision) return;
564
572
  if (decision.mismatch) {
565
- logger.logger.warn(`[loop] Claude Code enforces permission mode '${effective}' but this process asked for '${permissionMode.mapToClaudeMode(currentPermissionMode ?? "default")}' \u2014 check ~/.claude settings (permissions.deny/ask/defaultMode/disableBypassPermissionsMode). Publishing the effective mode.`);
573
+ logger.logger.warn(`[loop] Claude Code enforces permission mode '${effective}' but this process asked for '${claudeLongContext.mapToClaudeMode(currentPermissionMode ?? "default")}' \u2014 check ~/.claude settings (permissions.deny/ask/defaultMode/disableBypassPermissionsMode). Publishing the effective mode.`);
566
574
  }
567
575
  if (decision.publish !== publishedPermissionMode) {
568
576
  publishedPermissionMode = decision.publish;
@@ -741,6 +749,12 @@ async function runClaude(credentials, options = {}) {
741
749
  const ignoredDefaultDowngrade = (previousPermissionMode === "bypassPermissions" || previousPermissionMode === "yolo") && message.meta?.permissionMode === "default" && currentPermissionMode === previousPermissionMode;
742
750
  logger.logger.debug(ignoredDefaultDowngrade ? `[loop] Ignoring permission mode downgrade from ${previousPermissionMode} to default` : `[loop] Permission mode updated from user message to: ${currentPermissionMode}`);
743
751
  }
752
+ const refusedLongContext = claudeLongContext.withoutRefusedLongContext(resolved.mode.model, claudeLongContext.messageModelIntent(message.meta, session.getMetadata()?.modelIntent), session.getMetadata()?.longContextUnsupported ?? longContextVerdict());
753
+ if (refusedLongContext !== resolved.mode.model) {
754
+ logger.logger.debug(`[loop] ${resolved.mode.model} follows latest on a machine without 1M context; running ${refusedLongContext}`);
755
+ resolved.mode.model = refusedLongContext;
756
+ resolved.next.model = refusedLongContext;
757
+ }
744
758
  currentModel = resolved.next.model;
745
759
  currentFallbackModel = resolved.next.fallbackModel;
746
760
  currentCustomSystemPrompt = resolved.next.customSystemPrompt;
@@ -985,6 +999,7 @@ async function runClaude(credentials, options = {}) {
985
999
  },
986
1000
  onSessionReady: (sessionInstance) => {
987
1001
  currentSession = sessionInstance;
1002
+ sessionInstance.longContextPolicy = claudeLongContext.createLongContextPolicy({ session, storePath: longContextStore, key: longContextStoreKey });
988
1003
  sessionInstance.transcriptPathHints = transcriptPathHints;
989
1004
  sessionInstance.addSessionFoundCallback?.(announceSessionToScanner);
990
1005
  },
@@ -1,26 +1,26 @@
1
1
  import os from 'node:os';
2
- import { A as AUTO_RESTART_CAPABILITY, c as claimSessionOrExit, a as applyServerSnapshot, b as applyReconnectReplay, w as withoutServerSnapshot, m as mergeReconnectMetadata, t as takeAutoRestartedEvent, e as exitCursorStamp } from './sessionLock-DFrwAnwR.mjs';
3
- import { r as readSettings, H as HIBERNATION_CAPABILITY, a as resolveCheckMs, l as latchKeepAwake, e as evaluateWrapperIdle } from './persistence-D_zVC4Xz.mjs';
4
- import { c as createSessionForStartup, H as HibernationProbe, a as commitHibernation } from './startupSessionCreate-D3ph1DtL.mjs';
2
+ import { A as AUTO_RESTART_CAPABILITY, c as claimSessionOrExit, a as applyServerSnapshot, b as applyReconnectReplay, w as withoutServerSnapshot, m as mergeReconnectMetadata, t as takeAutoRestartedEvent, e as exitCursorStamp } from './sessionLock-BMtAQ4bW.mjs';
3
+ import { r as readSettings, H as HIBERNATION_CAPABILITY, a as resolveCheckMs, l as latchKeepAwake, e as evaluateWrapperIdle } from './persistence-dLgWDclq.mjs';
4
+ import { c as createSessionForStartup, H as HibernationProbe, a as commitHibernation } from './startupSessionCreate-Dp3_kvi_.mjs';
5
5
  import { randomUUID } from 'node:crypto';
6
- import { c as connectionState, A as ApiClient, s as startOfflineReconnection } from './api-D8ZDxBWw.mjs';
7
- import { l as logger } from './logger-BiKmiREe.mjs';
8
- import { s as spawnOriginTags, a as sessionWorktreeMetadata } from './createSessionMetadata-BuAVB-xI.mjs';
9
- import { p as packageJson } from './package-CIW5lwaN.mjs';
10
- import { P as PROMPT_QUEUE_CAPABILITY, a as PROJECT_SESSION_CAPABILITY, R as RUN_INTENT_CAPABILITY, C as CLAUDE_CONFIG_MODEL_CAPABILITY, A as AGENT_PROFILE_SESSION_CAPABILITY, I as ISSUE_SESSION_CAPABILITY, r as restoredEffort, b as restoredModel } from './index-CiRMvS73.mjs';
11
- import { D as DEFAULT_CLAUDE_PERMISSION_MODE, r as registerRunIntentRpc, a as recordRunIntents, w as withoutEffort } from './defaultPermissionMode-DgeiMMqy.mjs';
12
- import { F as FORK_BACKFILL_CAPABILITY, p as publishForkBackfillWhenCommitted } from './forkBackfill-DYIjlN1Z.mjs';
13
- import { c as configuration } from './configuration-i9MVy0a5.mjs';
14
- import { l as loadWrapperAccount } from './wrapperAccount-z8Swrd08.mjs';
15
- import { S as SPAWN_ACCOUNT_ENV } from './store-DWmjM4Ex.mjs';
16
- import { n as notifyDaemonSessionStarted, c as checkDaemonHibernation } from './controlClient-D6vqMUfi.mjs';
17
- import { g as getInitialMachineMetadata } from './machineMetadata-CiyO9wm-.mjs';
6
+ import { c as connectionState, A as ApiClient, s as startOfflineReconnection } from './api-20GbdpxY.mjs';
7
+ import { l as logger } from './logger-BKAKIZdy.mjs';
8
+ import { s as spawnOriginTags, a as sessionWorktreeMetadata } from './createSessionMetadata-CHa4pufa.mjs';
9
+ import { p as packageJson } from './package-CMmhJwSf.mjs';
10
+ import { P as PROMPT_QUEUE_CAPABILITY, a as PROJECT_SESSION_CAPABILITY, R as RUN_INTENT_CAPABILITY, C as CLAUDE_CONFIG_MODEL_CAPABILITY, A as AGENT_PROFILE_SESSION_CAPABILITY, I as ISSUE_SESSION_CAPABILITY, r as restoredEffort, b as restoredModel } from './index-DWk-WTU-.mjs';
11
+ import { D as DEFAULT_CLAUDE_PERMISSION_MODE, r as registerRunIntentRpc, a as recordRunIntents, w as withoutEffort } from './defaultPermissionMode-CYQi7vqJ.mjs';
12
+ import { F as FORK_BACKFILL_CAPABILITY, a as announceForkBackfill, p as publishForkBackfillWhenCommitted } from './forkBackfill-C9EfJ64O.mjs';
13
+ import { c as configuration } from './configuration-H8q1sMwk.mjs';
14
+ import { l as loadWrapperAccount } from './wrapperAccount-CwaA-n1S.mjs';
15
+ import { S as SPAWN_ACCOUNT_ENV } from './store-Fge1h9wy.mjs';
16
+ import { n as notifyDaemonSessionStarted, c as checkDaemonHibernation } from './controlClient-D9DYqW02.mjs';
17
+ import { g as getInitialMachineMetadata } from './machineMetadata-DTlMMhj_.mjs';
18
18
  import { p as projectPath } from './projectPath-BTBIMB57.mjs';
19
19
  import { resolve, join } from 'node:path';
20
- import { a as applySandboxPermissionPolicy, r as resolveInitialClaudePermissionMode, m as mapToClaudeMode, b as reconcilePublishedPermissionMode } from './permissionMode-CH4FoZfU.mjs';
20
+ import { a as applySandboxPermissionPolicy, r as resolveInitialClaudePermissionMode, l as longContextStorePath, b as longContextKey, c as readClaudeMergedSettings, d as readClaudeConfiguredModel, m as mapToClaudeMode, w as withoutRefusedLongContext, e as messageModelIntent, f as createLongContextPolicy, g as readLongContextVerdict, h as reconcilePublishedPermissionMode } from './claudeLongContext-CZ60xo5p.mjs';
21
21
  import { d as decodeBase64, e as encodeBase64 } from './authRelay-DhQhkBvX.mjs';
22
22
  import { readFile } from 'node:fs/promises';
23
- import { C as CLAUDE_ATTACHMENT_KINDS, s as stripAttachmentManifest } from './attachmentContent-BfSQxccA.mjs';
23
+ import { C as CLAUDE_ATTACHMENT_KINDS, s as stripAttachmentManifest } from './attachmentContent-Coo9lUxK.mjs';
24
24
  import { T as TranscriptPathHints } from './transcriptCursor-B7T_gkQ0.mjs';
25
25
  import { p as planClaudeStartup } from './startupPlan-DFMyNgAs.mjs';
26
26
  import { t as takeReconnectEnv } from './reconnectEnv-DeSvHl3q.mjs';
@@ -32,30 +32,30 @@ import 'node:child_process';
32
32
  import './processTreeSnapshot-fuwxC0fr.mjs';
33
33
  import 'zod';
34
34
  import 'axios';
35
- import './pushNotifications-RVpbqrxR.mjs';
35
+ import './pushNotifications-DD9Z0CoN.mjs';
36
36
  import './contentLogMetadata-BlWI0egu.mjs';
37
- import './reconnectGate-DSxYUCWy.mjs';
37
+ import './reconnectGate-m81ySKhh.mjs';
38
38
  import 'os';
39
39
  import 'child_process';
40
40
  import 'node:events';
41
41
  import 'socket.io-client';
42
42
  import './limits-DIo7rEBR.mjs';
43
- import './time-Che8GhII.mjs';
44
- import './registerCommonHandlers-CQDRKlkG.mjs';
43
+ import './time-Cn0mV-di.mjs';
44
+ import './registerCommonHandlers-CqLHkmG2.mjs';
45
45
  import 'util';
46
46
  import 'fs/promises';
47
47
  import 'crypto';
48
48
  import 'path';
49
49
  import 'cross-spawn';
50
50
  import '@paralleldrive/cuid2';
51
- import './sync-BIXH8ijr.mjs';
51
+ import './sync-Co0wRhGu.mjs';
52
52
  import './backgroundTaskActivity-8PdPxrvy.mjs';
53
53
  import 'chalk';
54
54
  import 'node:util';
55
- import './claudeAccountEnv-DowsOlDB.mjs';
55
+ import './claudeAccountEnv-C6Wl-ZbT.mjs';
56
56
  import './detectCLI-CSGMlV51.mjs';
57
57
  import 'fs';
58
- import './localHappyAgentAuth-B2JJxlE9.mjs';
58
+ import './localHappyAgentAuth-DgLh3xzW.mjs';
59
59
  import 'tweetnacl';
60
60
  import './fsMkdir-DumgLTzR.mjs';
61
61
  import 'url';
@@ -66,7 +66,7 @@ const CLAUDE_EFFORTS = ["low", "medium", "high", "xhigh", "max"];
66
66
  function restoredClaudeEffort(effort) {
67
67
  return CLAUDE_EFFORTS.includes(effort ?? "") ? effort : void 0;
68
68
  }
69
- const importRunClaudeDeps = () => import('./runClaudeDeps-CL3goCXG.mjs');
69
+ const importRunClaudeDeps = () => import('./runClaudeDeps-Dh2LVY2w.mjs');
70
70
  async function runClaude(credentials, options = {}) {
71
71
  logger.debug(`[CLAUDE] ===== CLAUDE MODE STARTING =====`);
72
72
  logger.debug(`[CLAUDE] This is the Claude agent, NOT Gemini`);
@@ -82,7 +82,7 @@ async function runClaude(credentials, options = {}) {
82
82
  const isAssistantVariant = process.env.HAPPY_SESSION_VARIANT === "assistant";
83
83
  if (isAssistantVariant) {
84
84
  try {
85
- const { bootstrapAssistantHome } = await import('./bootstrap-pGaFGbWO.mjs');
85
+ const { bootstrapAssistantHome } = await import('./bootstrap-Dn_VvHSt.mjs');
86
86
  await bootstrapAssistantHome();
87
87
  } catch (error) {
88
88
  logger.debug("[START] Assistant home bootstrap failed:", error);
@@ -136,6 +136,10 @@ async function runClaude(credentials, options = {}) {
136
136
  const importedFromClaudeSessionId = process.env.HAPPY_IMPORTED_FROM_CLAUDE_SESSION_ID;
137
137
  const importTitle = process.env.HAPPY_IMPORT_TITLE;
138
138
  const originTags = spawnOriginTags(process.env, "claude");
139
+ const claudeEnv = { ...process.env, ...options.claudeEnvVars };
140
+ const longContextStore = longContextStorePath(configuration.happyHomeDir);
141
+ const longContextStoreKey = longContextKey(claudeEnv, readClaudeMergedSettings(claudeEnv, workingDirectory).env);
142
+ const longContextVerdict = () => readLongContextVerdict(longContextStore, longContextStoreKey);
139
143
  let metadata = {
140
144
  path: workingDirectory,
141
145
  host: os.hostname(),
@@ -164,6 +168,9 @@ async function runClaude(credentials, options = {}) {
164
168
  // writer; a reconnect keeps the server copy). A spawn-time model is a choice.
165
169
  modelIntent: options.model ?? null,
166
170
  effortIntent: null,
171
+ // B-883: known before the first message, so follow-latest defers to it there too.
172
+ configuredModel: readClaudeConfiguredModel(claudeEnv, workingDirectory),
173
+ longContextUnsupported: longContextVerdict(),
167
174
  stickyModel: options.model ?? null,
168
175
  // Effective mode this process enforces. Kept current by
169
176
  // publishPermissionMode below; the web renders it instead of guessing.
@@ -210,7 +217,7 @@ async function runClaude(credentials, options = {}) {
210
217
  }
211
218
  if (!response) {
212
219
  let offlineSessionId = null;
213
- const { claudeLocal } = await import('./claudeLocal-bDarWqaU.mjs');
220
+ const { claudeLocal } = await import('./claudeLocal-B8rOA-EB.mjs');
214
221
  const { createSessionScanner: createSessionScanner2 } = await loadDeps();
215
222
  const reconnection = startOfflineReconnection({
216
223
  serverUrl: configuration.serverUrl,
@@ -378,12 +385,13 @@ async function runClaude(credentials, options = {}) {
378
385
  const forkClaudeSessionId = process.env.HAPPY_FORK_CLAUDE_SESSION_ID;
379
386
  if (!reconnectSessionId && forkClaudeSessionId) {
380
387
  const jsonlPath = join(getProjectPath(workingDirectory), `${forkClaudeSessionId}.jsonl`);
388
+ announceForkBackfill(session);
381
389
  try {
382
390
  const file = await readFile(jsonlPath, "utf-8");
383
- const backfilled = replayClaudeForkJsonl(file, {
391
+ const backfilled = session.replayHistory(() => replayClaudeForkJsonl(file, {
384
392
  send: (line) => session.sendClaudeSessionMessage(line),
385
393
  closeTurn: () => session.closeReplayedClaudeTurn()
386
- });
394
+ }));
387
395
  logger.debug(`[FORK BACKFILL] Replayed ${backfilled} historical messages from ${jsonlPath}`);
388
396
  session.updateMetadata((meta) => ({ ...meta, claudeSessionId: forkClaudeSessionId }));
389
397
  void publishForkBackfillWhenCommitted(session, { count: backfilled }).then((published) => logger.debug(`[FORK BACKFILL] ${published ? "Committed" : "Session closed before commit of"} ${backfilled} replayed messages`));
@@ -739,6 +747,12 @@ async function runClaude(credentials, options = {}) {
739
747
  const ignoredDefaultDowngrade = (previousPermissionMode === "bypassPermissions" || previousPermissionMode === "yolo") && message.meta?.permissionMode === "default" && currentPermissionMode === previousPermissionMode;
740
748
  logger.debug(ignoredDefaultDowngrade ? `[loop] Ignoring permission mode downgrade from ${previousPermissionMode} to default` : `[loop] Permission mode updated from user message to: ${currentPermissionMode}`);
741
749
  }
750
+ const refusedLongContext = withoutRefusedLongContext(resolved.mode.model, messageModelIntent(message.meta, session.getMetadata()?.modelIntent), session.getMetadata()?.longContextUnsupported ?? longContextVerdict());
751
+ if (refusedLongContext !== resolved.mode.model) {
752
+ logger.debug(`[loop] ${resolved.mode.model} follows latest on a machine without 1M context; running ${refusedLongContext}`);
753
+ resolved.mode.model = refusedLongContext;
754
+ resolved.next.model = refusedLongContext;
755
+ }
742
756
  currentModel = resolved.next.model;
743
757
  currentFallbackModel = resolved.next.fallbackModel;
744
758
  currentCustomSystemPrompt = resolved.next.customSystemPrompt;
@@ -983,6 +997,7 @@ async function runClaude(credentials, options = {}) {
983
997
  },
984
998
  onSessionReady: (sessionInstance) => {
985
999
  currentSession = sessionInstance;
1000
+ sessionInstance.longContextPolicy = createLongContextPolicy({ session, storePath: longContextStore, key: longContextStoreKey });
986
1001
  sessionInstance.transcriptPathHints = transcriptPathHints;
987
1002
  sessionInstance.addSessionFoundCallback?.(announceSessionToScanner);
988
1003
  },