very-happy-cli 0.2.202 → 0.2.204
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.
- package/dist/{AcpBackend-Z51picBa.mjs → AcpBackend-BBfcpIDj.mjs} +3 -3
- package/dist/{AcpBackend-BRcPXur6.cjs → AcpBackend-BupxHXGp.cjs} +3 -3
- package/dist/{AcpSessionManager-BCGqL1Em.mjs → AcpSessionManager-B9UkPYGi.mjs} +2 -2
- package/dist/{AcpSessionManager-BckOYH3I.cjs → AcpSessionManager-JJrnenKM.cjs} +2 -2
- package/dist/{BasePermissionHandler-BYIY3kxs.cjs → BasePermissionHandler-86_xnisC.cjs} +1 -1
- package/dist/{BasePermissionHandler-BhJjr-wB.mjs → BasePermissionHandler-tGylJLUH.mjs} +1 -1
- package/dist/{account-B-HTHZKw.mjs → account-BRqUOj_D.mjs} +11 -11
- package/dist/{account-B0Wu7rJR.cjs → account-C91_R-kw.cjs} +11 -11
- package/dist/{accountService-DEpIq6CF.mjs → accountService-CqrWNH8K.mjs} +4 -4
- package/dist/{accountService-Cns8UYGI.cjs → accountService-SOeB_21A.cjs} +4 -4
- package/dist/{acpSessionResume-BKjQRT4V.mjs → acpSessionResume-CZQ91ano.mjs} +1 -1
- package/dist/{acpSessionResume-C8Kd8eK6.cjs → acpSessionResume-DK8EjIY0.cjs} +1 -1
- package/dist/{agentHome-BXiCouR4.mjs → agentHome-71zGywwx.mjs} +4 -4
- package/dist/{agentHome-DnxSf1ox.cjs → agentHome-BZvbPuy1.cjs} +4 -4
- package/dist/{api-Cu1OFHDM.mjs → api-BYh1VGBa.mjs} +107 -18
- package/dist/{api-B-FB-s4z.cjs → api-BoJA-zK3.cjs} +107 -18
- package/dist/{apiMachine-DYGPILVb.mjs → apiMachine--_eI4PTv.mjs} +105 -21
- package/dist/{apiMachine-DCWgI1l_.cjs → apiMachine-CA58NM_V.cjs} +105 -21
- package/dist/{attachmentContent-Dq8P5ODq.mjs → attachmentContent-D95cCBX5.mjs} +2 -2
- package/dist/{attachmentContent-dXwHB_3C.cjs → attachmentContent-y621KwMz.cjs} +2 -2
- package/dist/{auth-DpIHm7Lb.cjs → auth-CAkpHr8F.cjs} +5 -5
- package/dist/{auth-D11uvx2P.mjs → auth-DCzFx5BN.mjs} +8 -8
- package/dist/{auth-CgdE-j7z.mjs → auth-DRJ_WPn3.mjs} +5 -5
- package/dist/{auth-BVNBE4B1.cjs → auth-Dofm64Kp.cjs} +8 -8
- package/dist/{auto-WdjHKP9R.mjs → auto-CrgOy5OR.mjs} +18 -18
- package/dist/{auto-Ba2b-il4.cjs → auto-D4IBwJEE.cjs} +18 -18
- package/dist/{bootstrap-CsZO_jkL.cjs → bootstrap-D16MMPNP.cjs} +2 -2
- package/dist/{bootstrap-BTYJf2w8.mjs → bootstrap-PnL2FX64.mjs} +2 -2
- package/dist/{browser-Dx3UOVPP.mjs → browser-D2enJJfv.mjs} +1 -1
- package/dist/{browser-DgufCq1K.cjs → browser-DK2GfyEr.cjs} +1 -1
- package/dist/{claudeAccountEnv-Btp39mfa.cjs → claudeAccountEnv-BTZjHTpF.cjs} +1 -1
- package/dist/{claudeAccountEnv-DowsOlDB.mjs → claudeAccountEnv-C6Wl-ZbT.mjs} +1 -1
- package/dist/{claudeLocal-ylDKcvX0.mjs → claudeLocal-BbzN1qly.mjs} +5 -5
- package/dist/{claudeLocal-Q0FgzhTu.cjs → claudeLocal-DaqiRW9N.cjs} +5 -5
- package/dist/{claudeLocalLauncher-D2rZvuaW.cjs → claudeLocalLauncher-B0qbyOUc.cjs} +10 -10
- package/dist/{claudeLocalLauncher-CtybsaR8.mjs → claudeLocalLauncher-D7bhZ9rp.mjs} +10 -10
- package/dist/claudeLongContext-BR_zdjUp.cjs +239 -0
- package/dist/claudeLongContext-CZ60xo5p.mjs +219 -0
- package/dist/{claudeSessionFork-DRLxmv9j.mjs → claudeSessionFork-BPF3cpGs.mjs} +1 -1
- package/dist/{claudeSessionFork-BrstQPE4.cjs → claudeSessionFork-lcajftLB.cjs} +1 -1
- package/dist/{client-DfT_CRwl.mjs → client-BH4s6mzX.mjs} +2 -2
- package/dist/{client-D0oBXuEe.mjs → client-BHt14nix.mjs} +2 -2
- package/dist/{client-xV99weGP.cjs → client-ByK8-iRd.cjs} +3 -3
- package/dist/{client-CNWx72ZT.cjs → client-CqmT_ur8.cjs} +2 -2
- package/dist/{client-Dq7jaxb2.cjs → client-D5_YDMpA.cjs} +2 -2
- package/dist/{client-DJsXNJWO.mjs → client-Og5iNZ6S.mjs} +17 -8
- package/dist/{client-Cj7D61by.mjs → client-t1vQ7gho.mjs} +3 -3
- package/dist/{client-Ch4Azlny.cjs → client-xA44FUnf.cjs} +17 -8
- package/dist/codex/happyMcpStdioBridge.cjs +20 -19
- package/dist/codex/happyMcpStdioBridge.mjs +20 -19
- package/dist/{codexAccount-CieIQLOX.mjs → codexAccount-BPQ-lPhH.mjs} +1 -1
- package/dist/{codexAccount-D-OBY29W.cjs → codexAccount-BjaHvmKH.cjs} +1 -1
- package/dist/{codexAppServerClient-DtdCZ7_b.mjs → codexAppServerClient-CvL3eBlM.mjs} +3 -3
- package/dist/{codexAppServerClient-BwBPZonh.cjs → codexAppServerClient-CyLtj1kP.cjs} +3 -3
- package/dist/{codexCommand-CsY9YFiG.cjs → codexCommand-B0Slfvne.cjs} +67 -56
- package/dist/{codexCommand-D92AQCLU.mjs → codexCommand-CXytYlk9.mjs} +67 -56
- package/dist/{codexTermination-BbXG2oFT.cjs → codexTermination-CykPnK3G.cjs} +1 -1
- package/dist/{codexTermination-rhIxjRMJ.mjs → codexTermination-D0sBaTvW.mjs} +1 -1
- package/dist/{config-Zhkmfb3O.cjs → config-7Z5qIB3k.cjs} +3 -3
- package/dist/{config-BnN1yFyi.mjs → config-DeXK_5y4.mjs} +3 -3
- package/dist/{configuration-DZUnfWp2.cjs → configuration-CDqmWkHO.cjs} +1 -1
- package/dist/{configuration-CQaLZMa-.mjs → configuration-D_YrWa_i.mjs} +1 -1
- package/dist/{connect-DY5QLfbI.mjs → connect-CivOym_v.mjs} +13 -13
- package/dist/{connect-BToTf3Gy.cjs → connect-D_tzdR4l.cjs} +13 -13
- package/dist/{context-ByTvtMXZ.mjs → context-DXfkj_FL.mjs} +1 -1
- package/dist/{context-BHydzPZw.cjs → context-k2CbuBtp.cjs} +1 -1
- package/dist/{controlClient-Bfwe0Xpt.cjs → controlClient-BS86Ksm8.cjs} +12 -3
- package/dist/{controlClient-Cqhd8ynk.mjs → controlClient-Daki7wgo.mjs} +12 -4
- package/dist/{createSessionMetadata-D_qa01wq.cjs → createSessionMetadata-2s80RDL1.cjs} +2 -2
- package/dist/{createSessionMetadata-tmhDzhJZ.mjs → createSessionMetadata-B_hQ8lDn.mjs} +2 -2
- package/dist/{daemonAccounts-ciidbU2h.cjs → daemonAccounts-BOoI7-sw.cjs} +2 -2
- package/dist/{daemonAccounts-D5shoCLt.mjs → daemonAccounts-BtkmoJmC.mjs} +3 -3
- package/dist/{defaultPermissionMode-DgeiMMqy.mjs → defaultPermissionMode-CYQi7vqJ.mjs} +1 -1
- package/dist/{defaultPermissionMode-Cs_Tv83b.cjs → defaultPermissionMode-DmLYaaL8.cjs} +1 -1
- package/dist/{deterministicJson-DRL1Gs_c.mjs → deterministicJson-DKiOtrSA.mjs} +23 -16
- package/dist/{deterministicJson-CbUdClvO.cjs → deterministicJson-lwG_VzWd.cjs} +23 -16
- package/dist/{doctor-DHCmWcwR.cjs → doctor-C0kONAQn.cjs} +7 -7
- package/dist/{doctor-Wu0yZ80l.mjs → doctor-DegBfYjz.mjs} +7 -7
- package/dist/{downloadTarget-BoJrjpEe.cjs → downloadTarget-BTEVg8t6.cjs} +6 -6
- package/dist/{downloadTarget-G72yKQcM.mjs → downloadTarget-osakJyyA.mjs} +6 -6
- package/dist/{ensureDaemonRunning-BKGybp3s.mjs → ensureDaemonRunning-ED6UVEbk.mjs} +5 -5
- package/dist/{ensureDaemonRunning-CnkyGd9x.cjs → ensureDaemonRunning-vxHxmXo2.cjs} +5 -5
- package/dist/exitNotice-BhRrv8dx.cjs +88 -0
- package/dist/exitNotice-D1tMULzu.mjs +79 -0
- package/dist/{forkBackfill-DYIjlN1Z.mjs → forkBackfill-C9EfJ64O.mjs} +28 -2
- package/dist/{forkBackfill-8eLDeS73.cjs → forkBackfill-D2WW91fz.cjs} +28 -1
- package/dist/{format-DePME4uu.cjs → format-9KvRMdvY.cjs} +1 -1
- package/dist/{format-BSx-Nv2p.mjs → format-DJwRUrQm.mjs} +1 -1
- package/dist/{handleResumeCommand-uKzhaOVC.cjs → handleResumeCommand-0lsgLgBB.cjs} +5 -5
- package/dist/{handleResumeCommand-DrJdhjLD.mjs → handleResumeCommand-PfKmR-hv.mjs} +5 -5
- package/dist/{index-C-eSUhXW.mjs → index-BNcFxRSt.mjs} +4 -4
- package/dist/{index-44o_qMvE.cjs → index-BYL_X3gP.cjs} +27 -6
- package/dist/{index-Bi7Lmykl.cjs → index-B_narjYR.cjs} +45 -44
- package/dist/{index-DDOCSeEj.cjs → index-Bm_9wBaO.cjs} +4 -4
- package/dist/{index-CoBaGAA4.cjs → index-C7yXrMau.cjs} +3 -3
- package/dist/{index-BcYJJV-f.mjs → index-CUJZx4cs.mjs} +3 -3
- package/dist/{index-fNsf-8K-.mjs → index-CUeuMsap.mjs} +4 -4
- package/dist/{index-CowtCbZ_.mjs → index-D1rxFJ2b.mjs} +46 -45
- package/dist/{index-CiRMvS73.mjs → index-DWk-WTU-.mjs} +24 -7
- package/dist/{index-BKXqaux4.cjs → index-l8Xg3Mbf.cjs} +4 -4
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{install-0TkucJrC.mjs → install-B593oYZs.mjs} +3 -3
- package/dist/{install-Ddc8TlWE.cjs → install-C0I1a5sL.cjs} +3 -3
- package/dist/{issue-CIfzJuaS.cjs → issue-CJrXCpnf.cjs} +8 -8
- package/dist/{issue-CML2xa46.mjs → issue-D9ukoK-U.mjs} +8 -8
- package/dist/lib.cjs +12 -12
- package/dist/lib.d.cts +42 -1
- package/dist/lib.d.mts +42 -1
- package/dist/lib.mjs +12 -12
- package/dist/{localHappyAgentAuth-BUX4E1ug.mjs → localHappyAgentAuth-CxNcSjMM.mjs} +1 -1
- package/dist/{localHappyAgentAuth-WLqXQbc6.cjs → localHappyAgentAuth-D3GKuEC2.cjs} +1 -1
- package/dist/{logger-BEVIGYKL.mjs → logger-BcdURxNR.mjs} +2 -2
- package/dist/{logger-Dhc0l3xH.cjs → logger-C8anCmdW.cjs} +2 -2
- package/dist/{machineMetadata-BQdp_ihk.mjs → machineMetadata-BQaQQk6Z.mjs} +3 -3
- package/dist/{machineMetadata-ixKckJ7k.cjs → machineMetadata-DYWtdEtE.cjs} +3 -3
- package/dist/{main-BNBYOcQb.cjs → main-Bw7qSCWA.cjs} +48 -48
- package/dist/{main-BzQSe4Zu.mjs → main-KsUdHnwc.mjs} +48 -48
- package/dist/{mcp-BwskAxOK.cjs → mcp-CxPUFOEd.cjs} +20 -18
- package/dist/{mcp-BueI4Bel.mjs → mcp-OeLaQ2XR.mjs} +20 -18
- package/dist/{mirrorProtocol-5aFYsCCe.mjs → mirrorProtocol-Sj0yEHHU.mjs} +3 -3
- package/dist/{mirrorProtocol-DGMmhArw.cjs → mirrorProtocol-cTQcrW55.cjs} +3 -3
- package/dist/{package-CAmlKYcH.cjs → package-DkpXQvp1.cjs} +7 -7
- package/dist/{package-aOUtHYRZ.mjs → package-Dx3hbh9J.mjs} +7 -7
- package/dist/{panels-By2IDfXv.cjs → panels-CPNZnwCH.cjs} +5 -5
- package/dist/{panels-BeVMgmRW.mjs → panels-DKYO14Sq.mjs} +5 -5
- package/dist/{peerTools-BkRgJomj.mjs → peerTools-DYFslv6R.mjs} +5 -5
- package/dist/{peerTools-dgllF1wT.cjs → peerTools-DpCWFxI6.cjs} +5 -5
- package/dist/{persistence-EuUaQKL7.mjs → persistence-3iZXGbfb.mjs} +2 -2
- package/dist/{persistence-05BAS4Ou.cjs → persistence-Ch78xygf.cjs} +2 -2
- package/dist/{piRunnerArgs-DkjCRPYn.cjs → piRunnerArgs-CA6jqQ0k.cjs} +1 -1
- package/dist/{piRunnerArgs-CygWrAwY.mjs → piRunnerArgs-DEuYl6FL.mjs} +1 -1
- package/dist/{piRuntime-zY2jIQod.cjs → piRuntime-BIVHf-hN.cjs} +1 -1
- package/dist/{piRuntime-LRW_t6ME.mjs → piRuntime-CyN43ILm.mjs} +1 -1
- package/dist/{piTerminal-BhlPA1HR.mjs → piTerminal-DXz5L73L.mjs} +22 -20
- package/dist/{piTerminal-BfZshXGh.cjs → piTerminal-Hw4StZWN.cjs} +22 -20
- package/dist/{pushNotifications-DaVlLe7N.cjs → pushNotifications-D2ejrxlN.cjs} +17 -3
- package/dist/{pushNotifications-B7Ga8Zyf.mjs → pushNotifications-Db1NGJiA.mjs} +17 -3
- package/dist/{query-BQLtwpr9.mjs → query-CeYpZWVb.mjs} +1 -1
- package/dist/{query-CX0Of89i.cjs → query-velpFYxW.cjs} +1 -1
- package/dist/{rateLimitWindows-hv2zLYid.mjs → rateLimitWindows-BSQttrPk.mjs} +1 -1
- package/dist/{rateLimitWindows-CpSOlXBt.cjs → rateLimitWindows-C78D8Uf-.cjs} +1 -1
- package/dist/{reconnectGate-DO_ZQmJE.mjs → reconnectGate-Ie4nSKNl.mjs} +1 -1
- package/dist/{reconnectGate-B_aJrehH.cjs → reconnectGate-S9yNiuY7.cjs} +1 -1
- package/dist/{registerCommonHandlers-em2elV3l.cjs → registerCommonHandlers-51llVpLx.cjs} +2 -2
- package/dist/{registerCommonHandlers-BEpK4WD2.mjs → registerCommonHandlers-BR7BeGX3.mjs} +2 -2
- package/dist/{registerKillSessionHandler-D4ZQvsH2.cjs → registerKillSessionHandler-BjY79qBi.cjs} +6 -6
- package/dist/{registerKillSessionHandler-D-dDzI2n.mjs → registerKillSessionHandler-RbWPmKnK.mjs} +6 -6
- package/dist/{registerSideQuestionHandler-BIOLUe2U.cjs → registerSideQuestionHandler-B1Xk7dFK.cjs} +4 -4
- package/dist/{registerSideQuestionHandler-okUy9Q_-.mjs → registerSideQuestionHandler-BbYT7QfR.mjs} +4 -4
- package/dist/{remoteSessionClient-CzjLyL9c.mjs → remoteSessionClient-Ddns3U8M.mjs} +5 -5
- package/dist/{remoteSessionClient-BLWFXMBo.cjs → remoteSessionClient-r-UnqHor.cjs} +5 -5
- package/dist/{reportProgressTool-DcNBXBw8.cjs → reportProgressTool-ByadxJtc.cjs} +5 -5
- package/dist/{reportProgressTool-CNi0Vqqm.mjs → reportProgressTool-C3sf9D8m.mjs} +5 -5
- package/dist/{run-D59Gb4SQ.mjs → run-jsINwBOz.mjs} +200 -55
- package/dist/{run-bzlz4DI1.cjs → run-r5sY3wHk.cjs} +200 -55
- package/dist/{runClaude-kVp1PKab.cjs → runClaude-CRKsRfnq.cjs} +53 -38
- package/dist/{runClaude-DZtdmcXK.mjs → runClaude-D8CuiZhi.mjs} +44 -29
- package/dist/{runClaudeDeps-BHv9FkVz.cjs → runClaudeDeps-BiVzNIE6.cjs} +129 -61
- package/dist/{runClaudeDeps-D83tR1KP.mjs → runClaudeDeps-CUuPWcg9.mjs} +125 -57
- package/dist/{runGemini-W-0t7skM.cjs → runGemini-DANnc0BW.cjs} +36 -35
- package/dist/{runGemini-DLc_bL4E.mjs → runGemini-cqVZjPT6.mjs} +36 -35
- package/dist/{runOpenClaw-mm-hKxMC.mjs → runOpenClaw-B6V2nz8J.mjs} +18 -18
- package/dist/{runOpenClaw-BsqbOw8R.cjs → runOpenClaw-CGwc6mfJ.cjs} +18 -18
- package/dist/{sandbox-DrWJss7J.cjs → sandbox-CNheYPva.cjs} +4 -4
- package/dist/{sandbox-DXbKl-Os.mjs → sandbox-JYBMckKE.mjs} +4 -4
- package/dist/{selfCheck-CVXucSXR.cjs → selfCheck-DtSEBt0g.cjs} +40 -40
- package/dist/selfCheck-Jjy_wMw3.mjs +89 -0
- package/dist/{send-Cdda78Iw.mjs → send-BHrbbGJ7.mjs} +8 -8
- package/dist/{send-D7pRBaht.cjs → send-DNdJR3n8.cjs} +8 -8
- package/dist/{server-BI6defPs.cjs → server-CvP_b3eb.cjs} +6 -6
- package/dist/{server-CNilQcJK.mjs → server-DhQjVsyZ.mjs} +4 -4
- package/dist/{sessionLock-CVjlaRSL.mjs → sessionLock-5i516L-w.mjs} +21 -4
- package/dist/{sessionLock-Bjsy90aM.cjs → sessionLock-UkF8M3j5.cjs} +22 -3
- package/dist/{sessionOps-CvmOHwGP.cjs → sessionOps-D77IeFSt.cjs} +4 -4
- package/dist/{sessionOps-CV5RUpwG.mjs → sessionOps-DX49XNAT.mjs} +4 -4
- package/dist/{sessionProvider-BmO4ahnt.mjs → sessionProvider-C5xW4Dt3.mjs} +10 -10
- package/dist/{sessionProvider-4sWr0Myr.cjs → sessionProvider-mSI2UgLX.cjs} +10 -10
- package/dist/{sessionScanner-DZBiEOyb.cjs → sessionScanner-B1Am8D4Y.cjs} +3 -3
- package/dist/{sessionScanner-34Q0vTR3.mjs → sessionScanner-BZkOnp5a.mjs} +3 -3
- package/dist/{sessions-Cl435KQT.mjs → sessions-ClQFpjcA.mjs} +10 -10
- package/dist/{sessions-DjAXZWTX.cjs → sessions-DDDEiHVR.cjs} +10 -10
- package/dist/{setupOfflineReconnection-zebrb6U_.cjs → setupOfflineReconnection-Cn2_vuvO.cjs} +2 -2
- package/dist/{setupOfflineReconnection-BC5FJTkc.mjs → setupOfflineReconnection-PjK9laDd.mjs} +2 -2
- package/dist/{spawn-DqWdgMt_.mjs → spawn-BJGaxdot.mjs} +15 -15
- package/dist/{spawn-C8cJK9-m.cjs → spawn-DOj-sY6W.cjs} +15 -15
- package/dist/{spawnAgents-BclZYkov.mjs → spawnAgents-CcFKtKdX.mjs} +2 -1
- package/dist/{spawnAgents-DvbEDCIq.cjs → spawnAgents-D4lR468W.cjs} +2 -1
- package/dist/{spawnHappyCLI-BckHSjR0.mjs → spawnHappyCLI-CpOMz9hX.mjs} +1 -1
- package/dist/{spawnHappyCLI-CeWgULMt.cjs → spawnHappyCLI-DvxZ7elP.cjs} +1 -1
- package/dist/{startFileWatcher-CXZYt0y9.cjs → startFileWatcher-1ar7WS96.cjs} +1 -1
- package/dist/{startFileWatcher-BXiBlfVr.mjs → startFileWatcher-CPbPNFGY.mjs} +1 -1
- package/dist/{startupSessionCreate-CycB-kwu.cjs → startupSessionCreate-COc5Nnr9.cjs} +3 -3
- package/dist/{startupSessionCreate-D8hODW7I.mjs → startupSessionCreate-CnVaUZ16.mjs} +3 -3
- package/dist/{store-Cpb1LMNW.cjs → store-DGMILdMn.cjs} +1 -1
- package/dist/{store-DWmjM4Ex.mjs → store-Fge1h9wy.mjs} +1 -1
- package/dist/{streamRelay-DdGOsW8v.mjs → streamRelay-MaaYNNuh.mjs} +1 -1
- package/dist/{streamRelay-4XiiNB3N.cjs → streamRelay-keuifCPQ.cjs} +1 -1
- package/dist/{sync-BfM5OKSS.mjs → sync-BZji3J2r.mjs} +1 -1
- package/dist/{sync-CyUWevwD.cjs → sync-DzInYE_l.cjs} +1 -1
- package/dist/{systemPrompt-BUZQDf4k.cjs → systemPrompt-CvpjNmQL.cjs} +2 -2
- package/dist/{systemPrompt-Tu_2ixE3.mjs → systemPrompt-Dhdq8hGf.mjs} +2 -2
- package/dist/{teams-KjHee0Vg.cjs → teams-CRCbDPob.cjs} +20 -9
- package/dist/{teams-Cpdqvfe3.mjs → teams-CVW4ZvmW.mjs} +20 -9
- package/dist/{template-3fV9bi0X.cjs → template-ChUotPTL.cjs} +1 -1
- package/dist/{template-CtRLg2PG.mjs → template-D8fzlO58.mjs} +1 -1
- package/dist/{time-BQWf06hA.mjs → time-BWVJTcWI.mjs} +1 -1
- package/dist/{time-CbOTVtAt.cjs → time-UUMqbIq8.cjs} +1 -1
- package/dist/{titleGenerator-CpiQkf_r.cjs → titleGenerator-BHOA2Wkx.cjs} +3 -3
- package/dist/{titleGenerator-DYnqd0oI.mjs → titleGenerator-Ck82YoB7.mjs} +2 -2
- package/dist/{todo-DVrsXyKn.mjs → todo-Cf52TlmX.mjs} +8 -8
- package/dist/{todo-Cp6bRp62.cjs → todo-Cwo7joub.cjs} +8 -8
- package/dist/{tools-BFQm7xny.cjs → tools-DEErCtZG.cjs} +47 -27
- package/dist/{tools-XGAJepvT.mjs → tools-DmNaOlUF.mjs} +47 -27
- package/dist/{uninstall-C2LF0vtR.mjs → uninstall-B85MiNK2.mjs} +3 -3
- package/dist/{uninstall-Cyqq90JW.cjs → uninstall-CoAK4ANz.cjs} +3 -3
- package/dist/{wrapperAccount-nGGMJDBF.cjs → wrapperAccount-BHMM9I6g.cjs} +2 -2
- package/dist/{wrapperAccount-z8Swrd08.mjs → wrapperAccount-CwaA-n1S.mjs} +2 -2
- package/package.json +7 -7
- package/dist/permissionMode-CH4FoZfU.mjs +0 -80
- package/dist/permissionMode-CrV-XuMs.cjs +0 -87
- package/dist/selfCheck-B1XdrEbN.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-
|
|
5
|
-
var persistence = require('./persistence-
|
|
6
|
-
var startupSessionCreate = require('./startupSessionCreate-
|
|
4
|
+
var sessionLock = require('./sessionLock-UkF8M3j5.cjs');
|
|
5
|
+
var persistence = require('./persistence-Ch78xygf.cjs');
|
|
6
|
+
var startupSessionCreate = require('./startupSessionCreate-COc5Nnr9.cjs');
|
|
7
7
|
var node_crypto = require('node:crypto');
|
|
8
|
-
var api = require('./api-
|
|
9
|
-
var logger = require('./logger-
|
|
10
|
-
var createSessionMetadata = require('./createSessionMetadata-
|
|
11
|
-
var _package = require('./package-
|
|
12
|
-
var index = require('./index-
|
|
13
|
-
var defaultPermissionMode = require('./defaultPermissionMode-
|
|
14
|
-
var forkBackfill = require('./forkBackfill-
|
|
15
|
-
var configuration = require('./configuration-
|
|
16
|
-
var wrapperAccount = require('./wrapperAccount-
|
|
17
|
-
var store = require('./store-
|
|
18
|
-
var controlClient = require('./controlClient-
|
|
19
|
-
var machineMetadata = require('./machineMetadata-
|
|
8
|
+
var api = require('./api-BoJA-zK3.cjs');
|
|
9
|
+
var logger = require('./logger-C8anCmdW.cjs');
|
|
10
|
+
var createSessionMetadata = require('./createSessionMetadata-2s80RDL1.cjs');
|
|
11
|
+
var _package = require('./package-DkpXQvp1.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-CDqmWkHO.cjs');
|
|
16
|
+
var wrapperAccount = require('./wrapperAccount-BHMM9I6g.cjs');
|
|
17
|
+
var store = require('./store-DGMILdMn.cjs');
|
|
18
|
+
var controlClient = require('./controlClient-BS86Ksm8.cjs');
|
|
19
|
+
var machineMetadata = require('./machineMetadata-DYWtdEtE.cjs');
|
|
20
20
|
var projectPath = require('./projectPath-C3ioB4Bu.cjs');
|
|
21
21
|
var path = require('node:path');
|
|
22
|
-
var
|
|
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-
|
|
25
|
+
var attachmentContent = require('./attachmentContent-y621KwMz.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-
|
|
37
|
+
require('./pushNotifications-D2ejrxlN.cjs');
|
|
38
38
|
require('./contentLogMetadata-ZSFk_NjQ.cjs');
|
|
39
|
-
require('./reconnectGate-
|
|
39
|
+
require('./reconnectGate-S9yNiuY7.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-
|
|
46
|
-
require('./registerCommonHandlers-
|
|
45
|
+
require('./time-UUMqbIq8.cjs');
|
|
46
|
+
require('./registerCommonHandlers-51llVpLx.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-
|
|
53
|
+
require('./sync-DzInYE_l.cjs');
|
|
54
54
|
require('./backgroundTaskActivity-CBvUdj39.cjs');
|
|
55
55
|
require('chalk');
|
|
56
56
|
require('node:util');
|
|
57
|
-
require('./claudeAccountEnv-
|
|
57
|
+
require('./claudeAccountEnv-BTZjHTpF.cjs');
|
|
58
58
|
require('./detectCLI-BuYR_Qxe.cjs');
|
|
59
59
|
require('fs');
|
|
60
|
-
require('./localHappyAgentAuth-
|
|
60
|
+
require('./localHappyAgentAuth-D3GKuEC2.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-
|
|
71
|
+
const importRunClaudeDeps = () => Promise.resolve().then(function () { return require('./runClaudeDeps-BiVzNIE6.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-
|
|
87
|
+
const { bootstrapAssistantHome } = await Promise.resolve().then(function () { return require('./bootstrap-D16MMPNP.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 =
|
|
120
|
-
|
|
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:
|
|
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-
|
|
222
|
+
const { claudeLocal } = await Promise.resolve().then(function () { return require('./claudeLocal-DaqiRW9N.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:
|
|
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 =
|
|
557
|
+
let publishedPermissionMode = claudeLongContext.mapToClaudeMode(initialPermissionMode ?? "default");
|
|
550
558
|
const publishPermissionMode = (mode) => {
|
|
551
559
|
currentPermissionMode = mode;
|
|
552
|
-
const published =
|
|
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 =
|
|
559
|
-
intent:
|
|
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 '${
|
|
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-
|
|
3
|
-
import { r as readSettings, H as HIBERNATION_CAPABILITY, a as resolveCheckMs, l as latchKeepAwake, e as evaluateWrapperIdle } from './persistence-
|
|
4
|
-
import { c as createSessionForStartup, H as HibernationProbe, a as commitHibernation } from './startupSessionCreate-
|
|
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-5i516L-w.mjs';
|
|
3
|
+
import { r as readSettings, H as HIBERNATION_CAPABILITY, a as resolveCheckMs, l as latchKeepAwake, e as evaluateWrapperIdle } from './persistence-3iZXGbfb.mjs';
|
|
4
|
+
import { c as createSessionForStartup, H as HibernationProbe, a as commitHibernation } from './startupSessionCreate-CnVaUZ16.mjs';
|
|
5
5
|
import { randomUUID } from 'node:crypto';
|
|
6
|
-
import { c as connectionState, A as ApiClient, s as startOfflineReconnection } from './api-
|
|
7
|
-
import { l as logger } from './logger-
|
|
8
|
-
import { s as spawnOriginTags, a as sessionWorktreeMetadata } from './createSessionMetadata-
|
|
9
|
-
import { p as packageJson } from './package-
|
|
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-
|
|
11
|
-
import { D as DEFAULT_CLAUDE_PERMISSION_MODE, r as registerRunIntentRpc, a as recordRunIntents, w as withoutEffort } from './defaultPermissionMode-
|
|
12
|
-
import { F as FORK_BACKFILL_CAPABILITY, p as publishForkBackfillWhenCommitted } from './forkBackfill-
|
|
13
|
-
import { c as configuration } from './configuration-
|
|
14
|
-
import { l as loadWrapperAccount } from './wrapperAccount-
|
|
15
|
-
import { S as SPAWN_ACCOUNT_ENV } from './store-
|
|
16
|
-
import { n as notifyDaemonSessionStarted, c as checkDaemonHibernation } from './controlClient-
|
|
17
|
-
import { g as getInitialMachineMetadata } from './machineMetadata-
|
|
6
|
+
import { c as connectionState, A as ApiClient, s as startOfflineReconnection } from './api-BYh1VGBa.mjs';
|
|
7
|
+
import { l as logger } from './logger-BcdURxNR.mjs';
|
|
8
|
+
import { s as spawnOriginTags, a as sessionWorktreeMetadata } from './createSessionMetadata-B_hQ8lDn.mjs';
|
|
9
|
+
import { p as packageJson } from './package-Dx3hbh9J.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-D_YrWa_i.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-Daki7wgo.mjs';
|
|
17
|
+
import { g as getInitialMachineMetadata } from './machineMetadata-BQaQQk6Z.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,
|
|
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-
|
|
23
|
+
import { C as CLAUDE_ATTACHMENT_KINDS, s as stripAttachmentManifest } from './attachmentContent-D95cCBX5.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-
|
|
35
|
+
import './pushNotifications-Db1NGJiA.mjs';
|
|
36
36
|
import './contentLogMetadata-BlWI0egu.mjs';
|
|
37
|
-
import './reconnectGate-
|
|
37
|
+
import './reconnectGate-Ie4nSKNl.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-
|
|
44
|
-
import './registerCommonHandlers-
|
|
43
|
+
import './time-BWVJTcWI.mjs';
|
|
44
|
+
import './registerCommonHandlers-BR7BeGX3.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-
|
|
51
|
+
import './sync-BZji3J2r.mjs';
|
|
52
52
|
import './backgroundTaskActivity-8PdPxrvy.mjs';
|
|
53
53
|
import 'chalk';
|
|
54
54
|
import 'node:util';
|
|
55
|
-
import './claudeAccountEnv-
|
|
55
|
+
import './claudeAccountEnv-C6Wl-ZbT.mjs';
|
|
56
56
|
import './detectCLI-CSGMlV51.mjs';
|
|
57
57
|
import 'fs';
|
|
58
|
-
import './localHappyAgentAuth-
|
|
58
|
+
import './localHappyAgentAuth-CxNcSjMM.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-
|
|
69
|
+
const importRunClaudeDeps = () => import('./runClaudeDeps-CUuPWcg9.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-
|
|
85
|
+
const { bootstrapAssistantHome } = await import('./bootstrap-PnL2FX64.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-
|
|
220
|
+
const { claudeLocal } = await import('./claudeLocal-BbzN1qly.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
|
},
|