very-happy-cli 0.2.185 → 0.2.187
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-CCqL9mP1.cjs → AcpBackend-B2-ReWTo.cjs} +3 -3
- package/dist/{AcpBackend-DkoqWhTa.mjs → AcpBackend-C4Emg-H3.mjs} +3 -3
- package/dist/{AcpSessionManager-DrtAJQUH.cjs → AcpSessionManager-DR4-oZCz.cjs} +2 -2
- package/dist/{AcpSessionManager-BNPex8tJ.mjs → AcpSessionManager-Nard_zFS.mjs} +2 -2
- package/dist/{BasePermissionHandler-Dd4oGPDg.mjs → BasePermissionHandler-Bk9DmVZH.mjs} +1 -1
- package/dist/{BasePermissionHandler-DJZITwmL.cjs → BasePermissionHandler-CZ19WzsP.cjs} +1 -1
- package/dist/{acpSessionResume-_2NtETqb.mjs → acpSessionResume-DPSfMe7r.mjs} +1 -1
- package/dist/{acpSessionResume-umHzSMbQ.cjs → acpSessionResume-Hto_b8MK.cjs} +1 -1
- package/dist/{agentHome-Dv_hRIt7.mjs → agentHome-4-odnrAk.mjs} +4 -4
- package/dist/{agentHome-CmIMqMWy.cjs → agentHome-Mveyfa24.cjs} +4 -4
- package/dist/{api-BSz8MYte.cjs → api-DVEzYcoy.cjs} +10 -10
- package/dist/{api-BTS8mqLy.mjs → api-cVvbFZVK.mjs} +10 -10
- package/dist/{apiMachine-utCDabnO.cjs → apiMachine-Bd1C_JN6.cjs} +14 -14
- package/dist/{apiMachine-BcjccOmd.mjs → apiMachine-M7qY1izH.mjs} +14 -14
- package/dist/{attachmentContent-hkdGP2NV.cjs → attachmentContent-D8hViGiA.cjs} +2 -2
- package/dist/{attachmentContent-DpOzgDTw.mjs → attachmentContent-NNF-Eo4O.mjs} +2 -2
- package/dist/{auth-BKD2U9S2.mjs → auth-BCHL8Fx5.mjs} +5 -5
- package/dist/{auth-DzXdF08E.cjs → auth-BHw8be0X.cjs} +8 -8
- package/dist/{auth-CpbTj74y.mjs → auth-CKNEKwEV.mjs} +8 -8
- package/dist/{auth-B8nCUEiK.cjs → auth-b_1h0677.cjs} +5 -5
- package/dist/{auto-C-NK2JS8.mjs → auto-D716QYa3.mjs} +19 -19
- package/dist/{auto-E3ouHO37.cjs → auto-Da4rCLal.cjs} +19 -19
- package/dist/{bootstrap-DV4dqeCe.mjs → bootstrap-CndcegDb.mjs} +2 -2
- package/dist/{bootstrap-DIMkxIbR.cjs → bootstrap-j2RuoHVy.cjs} +2 -2
- package/dist/{browser-C0xt1NE-.mjs → browser-CLsM513o.mjs} +1 -1
- package/dist/{browser-Ch50ZchJ.cjs → browser-DIYTnD_T.cjs} +1 -1
- package/dist/{claudeLocal-D-U3fIdS.mjs → claudeLocal-3HbTx7K-.mjs} +7 -6
- package/dist/{claudeLocal-Curd8-dn.cjs → claudeLocal-C_uUbEO_.cjs} +9 -8
- package/dist/{claudeLocalLauncher-BEJ9Wad_.cjs → claudeLocalLauncher-BxWouVYk.cjs} +11 -11
- package/dist/{claudeLocalLauncher-BTNUVzRK.mjs → claudeLocalLauncher-DXh2chq3.mjs} +11 -11
- package/dist/{claudeSessionFork-JPEHVbfR.mjs → claudeSessionFork-B4olbwfj.mjs} +1 -1
- package/dist/{claudeSessionFork-DMdeScGk.cjs → claudeSessionFork-CsU96yXX.cjs} +1 -1
- package/dist/{client-D2lOnvzs.mjs → client-C8w9aQYe.mjs} +2 -2
- package/dist/{client-dpo5EbS9.cjs → client-CCy72Phz.cjs} +14 -5
- package/dist/{client-qgKef7S6.cjs → client-CWSfPlGD.cjs} +2 -2
- package/dist/{client-D1rJt15-.mjs → client-D8p1YjVt.mjs} +14 -5
- package/dist/{client-Ct1rnpJw.mjs → client-Zqg7DXHl.mjs} +2 -2
- package/dist/{client-C54hMWx6.cjs → client-q1aNOKgy.cjs} +2 -2
- package/dist/codex/happyMcpStdioBridge.cjs +18 -17
- package/dist/codex/happyMcpStdioBridge.mjs +18 -17
- package/dist/{codexAppServerClient-CM3O0zHW.mjs → codexAppServerClient-Csc-XsRV.mjs} +3 -3
- package/dist/{codexAppServerClient-DGeqZViU.cjs → codexAppServerClient-g8npaIU9.cjs} +3 -3
- package/dist/{codexCommand-CkdopWS7.mjs → codexCommand-BS-foS_R.mjs} +43 -43
- package/dist/{codexCommand-D_8fbJEk.cjs → codexCommand-BV8pTAtv.cjs} +43 -43
- package/dist/{codexTermination-MG2j2DDX.cjs → codexTermination-B5WgZAWO.cjs} +1 -1
- package/dist/{codexTermination-FO52Ahcx.mjs → codexTermination-lOO15mt2.mjs} +1 -1
- package/dist/{config-IDbpY1Am.cjs → config-BOnZRJIG.cjs} +3 -3
- package/dist/{config-CppOKnWe.mjs → config-Ba5ufl-D.mjs} +3 -3
- package/dist/{configuration-HPdj5Til.mjs → configuration-8EAa2X9P.mjs} +1 -1
- package/dist/{configuration-CwfmwaLU.cjs → configuration-CAfdO4IC.cjs} +1 -1
- package/dist/{connect-BNlBIAM8.cjs → connect-2hWuvxRM.cjs} +13 -13
- package/dist/{connect-1YK7vPbW.mjs → connect-BHWHNe54.mjs} +13 -13
- package/dist/{context-DetK5c-x.mjs → context-B-jybQhf.mjs} +1 -1
- package/dist/{context-D3vDWjiI.cjs → context-BtCz06PX.cjs} +1 -1
- package/dist/{controlClient-DBylxaEh.mjs → controlClient-O-vf2MkJ.mjs} +3 -3
- package/dist/{controlClient-DTMI1aTp.cjs → controlClient-mH9AxBwT.cjs} +3 -3
- package/dist/{createSessionMetadata-D2Ll7PlQ.cjs → createSessionMetadata-Bcn7b8QB.cjs} +2 -2
- package/dist/{createSessionMetadata-D8pfpX4V.mjs → createSessionMetadata-HlzlfP0U.mjs} +2 -2
- package/dist/{daemonSupervisor-DfzrtNhM.mjs → daemonSupervisor-BxohggqN.mjs} +40 -1
- package/dist/{daemonSupervisor-57JYYzMf.cjs → daemonSupervisor-alqGPANc.cjs} +43 -1
- package/dist/{defaultPermissionMode-DVXkcryy.cjs → defaultPermissionMode-BN3PdltF.cjs} +2 -2
- package/dist/{defaultPermissionMode-Bkhj_DwT.mjs → defaultPermissionMode-BPDeX4S8.mjs} +2 -2
- package/dist/{deterministicJson-cEWItQun.mjs → deterministicJson-CruOxFA6.mjs} +14 -14
- package/dist/{deterministicJson-DUCYjhHe.cjs → deterministicJson-D9pZQhU9.cjs} +14 -14
- package/dist/{doctor-DpWtxNeT.mjs → doctor-BNhLBBTK.mjs} +7 -7
- package/dist/{doctor-tLRILlmz.cjs → doctor-lHD1YZH6.cjs} +7 -7
- package/dist/{downloadTarget-Ci5wcYC2.cjs → downloadTarget-BhkQxTa8.cjs} +6 -6
- package/dist/{downloadTarget-B5b5BHb2.mjs → downloadTarget-ByTxs_N5.mjs} +6 -6
- package/dist/{ensureDaemonRunning-Dsv8UPwx.cjs → ensureDaemonRunning-BiCK6RiS.cjs} +5 -5
- package/dist/{ensureDaemonRunning-GDGwNDGF.mjs → ensureDaemonRunning-Cv0AMaHK.mjs} +5 -5
- package/dist/{handleResumeCommand-DW7Ml1u5.mjs → handleResumeCommand-Cy_KW0LN.mjs} +5 -5
- package/dist/{handleResumeCommand-CncudrQd.cjs → handleResumeCommand-WB4VDeKk.cjs} +5 -5
- package/dist/{index-BEHzEYP0.cjs → index-B44ft-m4.cjs} +40 -40
- package/dist/{index-DisBaRvM.mjs → index-B9f1vKcC.mjs} +96 -0
- package/dist/{index-Dzb_Bsfu.cjs → index-Bcp-PEGc.cjs} +4 -4
- package/dist/{index-DRWlaLbe.mjs → index-BpSpw6jG.mjs} +3 -3
- package/dist/{index-Bh806Q-1.cjs → index-BpWESchl.cjs} +3 -3
- package/dist/{index-Ub-5xbcU.cjs → index-BumVulwx.cjs} +96 -0
- package/dist/{index-bT1X9Brv.mjs → index-CVMbboXv.mjs} +7 -7
- package/dist/{index-C1qLnBOk.mjs → index-CdOz1uDl.mjs} +41 -41
- package/dist/{index-Vx4EQ6wI.cjs → index-Vtcax4oD.cjs} +7 -7
- package/dist/{index-Wf6mKJq9.mjs → index-lWXWV0H2.mjs} +4 -4
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{install-F3rP8tBU.mjs → install-B8O1JpJH.mjs} +1 -1
- package/dist/{install-BATFlr_l.cjs → install-BOHlqewf.cjs} +1 -1
- package/dist/{install-CRs4tGBa.cjs → install-DdRVv9IS.cjs} +3 -3
- package/dist/{install-DmF9wfwV.mjs → install-mK93DJ6L.mjs} +3 -3
- package/dist/lib.cjs +12 -12
- package/dist/lib.mjs +12 -12
- package/dist/{lidState-CG9jFcML.mjs → lidState-LtdUCXi-.mjs} +1 -1
- package/dist/{lidState-wwiu6M3p.cjs → lidState-XyjQaZtU.cjs} +1 -1
- package/dist/{localHappyAgentAuth-UoytSUX0.cjs → localHappyAgentAuth-C9Aj_wGD.cjs} +1 -1
- package/dist/{localHappyAgentAuth-CWha8BiX.mjs → localHappyAgentAuth-DqFE0Adr.mjs} +1 -1
- package/dist/{logger-CIUMiSLo.cjs → logger-BILSzq2s.cjs} +2 -2
- package/dist/{logger-BjXkscIr.mjs → logger-SAU4uSs4.mjs} +2 -2
- package/dist/{machineMetadata-BPlyxzxb.cjs → machineMetadata-C5TgUTpD.cjs} +3 -3
- package/dist/{machineMetadata-Ca4Dpy6s.mjs → machineMetadata-ZVnihOuL.mjs} +3 -3
- package/dist/{main-CS1U9i4s.mjs → main-BjOHtX8u.mjs} +47 -47
- package/dist/{main-FD8mmcsK.cjs → main-CVfx_-l7.cjs} +47 -47
- package/dist/{mcp-C7Rm1dTM.cjs → mcp-By9XK193.cjs} +15 -15
- package/dist/{mcp-BS6rdR8p.mjs → mcp-CWVr7KbQ.mjs} +15 -15
- package/dist/{mirrorProtocol-C3Anki4S.mjs → mirrorProtocol-BI6XbokT.mjs} +3 -3
- package/dist/{mirrorProtocol-CMJ2HOZF.cjs → mirrorProtocol-C0wyaesn.cjs} +3 -3
- package/dist/{package-Do0Y9bGA.mjs → package-BMBwnCn3.mjs} +10 -10
- package/dist/{package-CRDjc5vK.cjs → package-Bbfq2KR7.cjs} +10 -10
- package/dist/{panels-C-jss7nF.mjs → panels-CbIUwV6q.mjs} +5 -5
- package/dist/{panels-DwTHrZuo.cjs → panels-rQmysHlY.cjs} +5 -5
- package/dist/{peerTools-SLRntgX6.cjs → peerTools-CZfiq_Dx.cjs} +5 -5
- package/dist/{peerTools-CL7zBxlC.mjs → peerTools-CyruQrOo.mjs} +5 -5
- package/dist/{persistence-CmVwM5uq.mjs → persistence-C7T3HYjq.mjs} +2 -2
- package/dist/{persistence-CNWBdUH2.cjs → persistence-DPeSC0SK.cjs} +2 -2
- package/dist/{piRunnerArgs-K0K9Y0Yq.mjs → piRunnerArgs-CsWompo8.mjs} +1 -1
- package/dist/{piRunnerArgs-CXJx3PPx.cjs → piRunnerArgs-DAq8vIpP.cjs} +1 -1
- package/dist/{piRuntime-Bv41vG05.cjs → piRuntime-CFqlQFoz.cjs} +2 -2
- package/dist/{piRuntime-BSoHy-QJ.mjs → piRuntime-Dxd8Gfun.mjs} +2 -2
- package/dist/{piTerminal-B8acGxsm.mjs → piTerminal-BssuKDtJ.mjs} +18 -18
- package/dist/{piTerminal-DSs-fnps.cjs → piTerminal-DHG3Kzve.cjs} +18 -18
- package/dist/promptCacheTtl-B8PCzE6k.cjs +76 -0
- package/dist/promptCacheTtl-Ce0TVbrx.mjs +72 -0
- package/dist/{pushNotifications-DnpJJ7VR.mjs → pushNotifications-Bi72c41d.mjs} +3 -3
- package/dist/{pushNotifications-C651e0ZZ.cjs → pushNotifications-CsSyhnHu.cjs} +3 -3
- package/dist/{query-rxLftxvh.mjs → query-BQOwsKS1.mjs} +3 -2
- package/dist/{query-DXFx2VZY.cjs → query-Cuef299f.cjs} +5 -4
- package/dist/{rateLimitWindows-D9mQRGHv.mjs → rateLimitWindows-B6IAWYN5.mjs} +1 -1
- package/dist/{rateLimitWindows-1WoBs8ln.cjs → rateLimitWindows-bfwC81Z-.cjs} +1 -1
- package/dist/{registerCommonHandlers-K-BTp2iR.cjs → registerCommonHandlers-CQC04iF3.cjs} +2 -2
- package/dist/{registerCommonHandlers-DpBxSCBi.mjs → registerCommonHandlers-qzb6TQqo.mjs} +2 -2
- package/dist/{registerKillSessionHandler-DwPEAS2G.cjs → registerKillSessionHandler-BraKB5Ks.cjs} +6 -6
- package/dist/{registerKillSessionHandler-BDxd20fg.mjs → registerKillSessionHandler-DMPrrNKX.mjs} +6 -6
- package/dist/{remoteSessionClient-DHWfDMHA.mjs → remoteSessionClient-D3XhN_sd.mjs} +5 -5
- package/dist/{remoteSessionClient-DnFblfFz.cjs → remoteSessionClient-DffolBcQ.cjs} +5 -5
- package/dist/{reportProgressTool-CYgnezAO.cjs → reportProgressTool-BieTXE_R.cjs} +3 -3
- package/dist/{reportProgressTool-DJXfK6rp.mjs → reportProgressTool-irHR-XEW.mjs} +3 -3
- package/dist/{resources-CqwHPhdK.cjs → resources-BZ_Be0qM.cjs} +1 -1
- package/dist/{resources-CLdQfe3b.mjs → resources-CLP_MpK4.mjs} +1 -1
- package/dist/{run-BChqUxs6.cjs → run-Ck_WA6Nj.cjs} +218 -46
- package/dist/{run-BkixRBWm.mjs → run-DCUaxe2S.mjs} +221 -49
- package/dist/{runClaude-Bdw9vTgv.cjs → runClaude-BUGku2Qp.cjs} +22 -22
- package/dist/{runClaude-FWTCLnVq.mjs → runClaude-BryAvfNV.mjs} +22 -22
- package/dist/{runClaudeDeps-C6mCzhtO.mjs → runClaudeDeps-BZkWM9_u.mjs} +45 -45
- package/dist/{runClaudeDeps-CN_moqup.cjs → runClaudeDeps-Dbk1VrOW.cjs} +40 -40
- package/dist/{runGemini-CzPwEltY.cjs → runGemini-B6AZ2bv0.cjs} +34 -34
- package/dist/{runGemini-CI7ut_ng.mjs → runGemini-DT379gpi.mjs} +34 -34
- package/dist/{runOpenClaw-8V2K_-lg.mjs → runOpenClaw-Bpp9mkyO.mjs} +18 -18
- package/dist/{runOpenClaw-CLw64Nmq.cjs → runOpenClaw-eBUYlIVJ.cjs} +18 -18
- package/dist/{sandbox-DD2oQTt3.cjs → sandbox-Bv4H1P6u.cjs} +4 -4
- package/dist/{sandbox-BMkBdvHW.mjs → sandbox-Z8TM9eUg.mjs} +4 -4
- package/dist/{selfCheck-0jELpLE9.cjs → selfCheck--1k2Ptf6.cjs} +37 -37
- package/dist/selfCheck-DIGghfQz.mjs +86 -0
- package/dist/{send-BoLglO1t.cjs → send-BG4KYe6f.cjs} +8 -8
- package/dist/{send-BNjwFaVp.mjs → send-CKTovWuQ.mjs} +8 -8
- package/dist/{server-Uw82k7zD.cjs → server-BTNwH-sA.cjs} +6 -6
- package/dist/{server-C5wOp8jw.mjs → server-DLpXtoiZ.mjs} +4 -4
- package/dist/{sessionLock-BTo7Cdbi.cjs → sessionLock-Cf6RlgfF.cjs} +3 -3
- package/dist/{sessionLock-YMRCi-Ec.mjs → sessionLock-DhzB5ZI9.mjs} +3 -3
- package/dist/{sessionOps-BO6AesNJ.mjs → sessionOps-CiFjBCMa.mjs} +4 -4
- package/dist/{sessionOps-BDHEzyAY.cjs → sessionOps-R52JWMnX.cjs} +4 -4
- package/dist/{sessionProvider-DLdJJV6A.cjs → sessionProvider-LATn-lZL.cjs} +5 -5
- package/dist/{sessionProvider-CB9lGJdF.mjs → sessionProvider-f2tUhwBc.mjs} +5 -5
- package/dist/{sessionScanner-3TevonZd.cjs → sessionScanner-DRzZtGtu.cjs} +3 -3
- package/dist/{sessionScanner-BkukogZy.mjs → sessionScanner-lS1puA5H.mjs} +3 -3
- package/dist/{sessions-Bx-6fXTL.mjs → sessions-D01nnjOE.mjs} +10 -10
- package/dist/{sessions-BkBcZSj7.cjs → sessions-DGd8Fin6.cjs} +10 -10
- package/dist/{setupOfflineReconnection-DMfoVL-0.cjs → setupOfflineReconnection-Ds7ywGwR.cjs} +2 -2
- package/dist/{setupOfflineReconnection-DYzysFFJ.mjs → setupOfflineReconnection-UApZjcU5.mjs} +2 -2
- package/dist/{spawn-DvyBhowH.cjs → spawn-CT3g4p8A.cjs} +14 -14
- package/dist/{spawn-CHC32rLr.mjs → spawn-ct8aSMA8.mjs} +14 -14
- package/dist/{spawnAgents-D15n6tAj.cjs → spawnAgents-DsJSyLDl.cjs} +1 -1
- package/dist/{spawnAgents-jXo9jIYo.mjs → spawnAgents-f2q31uUV.mjs} +1 -1
- package/dist/{spawnHappyCLI-WYJCvAWD.cjs → spawnHappyCLI-DedrWByd.cjs} +1 -1
- package/dist/{spawnHappyCLI-e9MaJWB0.mjs → spawnHappyCLI-Dp05fHcp.mjs} +1 -1
- package/dist/{specialCommands-DqrQnKHC.cjs → specialCommands-35KxDNE8.cjs} +3 -3
- package/dist/{specialCommands-D00VrQ09.mjs → specialCommands-CTtmGCCf.mjs} +3 -3
- package/dist/{startFileWatcher-VFZ-Bpwa.cjs → startFileWatcher-72w11DP_.cjs} +1 -1
- package/dist/{startFileWatcher-CvUUesns.mjs → startFileWatcher-BLdxJdgu.mjs} +1 -1
- package/dist/{startupSessionCreate-B6HNLg0g.mjs → startupSessionCreate-CJFR_Zom.mjs} +1 -1
- package/dist/{startupSessionCreate-B25xTUJ4.cjs → startupSessionCreate-Cy4J4-Ep.cjs} +1 -1
- package/dist/{streamRelay-GzHxvMem.mjs → streamRelay-B3FloUTT.mjs} +1 -1
- package/dist/{streamRelay-CtTpf-Li.cjs → streamRelay-Cn_uGG6m.cjs} +1 -1
- package/dist/{sync-HPnxI4fz.mjs → sync-BWX1OVQi.mjs} +1 -1
- package/dist/{sync-DliZ1zZh.cjs → sync-lxDpbIh3.cjs} +1 -1
- package/dist/{systemPrompt-CYvRvanR.cjs → systemPrompt-0DqWPGY6.cjs} +2 -2
- package/dist/{systemPrompt-D9JJpzl_.mjs → systemPrompt-BIilbjt_.mjs} +2 -2
- package/dist/{teams-D7Ad6YSf.cjs → teams-CImmJLlM.cjs} +9 -9
- package/dist/{teams-C0PJlIMz.mjs → teams-CvpB8Rdm.mjs} +9 -9
- package/dist/{template-BLJxflCH.cjs → template-DPsqlHJQ.cjs} +1 -1
- package/dist/{template-YlpbYGeQ.mjs → template-DuKZw-Sz.mjs} +1 -1
- package/dist/{time-BCGGrWp4.cjs → time-BbQJi3Eh.cjs} +1 -1
- package/dist/{time-BbJ-NWcl.mjs → time-DjS5me2q.mjs} +1 -1
- package/dist/{titleGenerator-03Y2uoZW.mjs → titleGenerator-CGdBp5lQ.mjs} +1 -1
- package/dist/{titleGenerator-IrI84kqh.cjs → titleGenerator-CfJme6ep.cjs} +2 -2
- package/dist/{todo-DOh8KaxD.mjs → todo-BxfUKwTM.mjs} +6 -6
- package/dist/{todo-DdV9_uEu.cjs → todo-rN20m9lT.cjs} +6 -6
- package/dist/tools-B_W7xJNh.mjs +137 -0
- package/dist/tools-kGtSjG8h.cjs +140 -0
- package/dist/{uninstall-oGvAKOlN.cjs → uninstall-CBQsxEmD.cjs} +3 -3
- package/dist/{uninstall-BVYlC0jw.mjs → uninstall-DUjvgLlg.mjs} +3 -3
- package/package.json +10 -10
- package/dist/selfCheck-DgWZfw5E.mjs +0 -86
- package/dist/smallFastModel-BLNgMrwR.mjs +0 -18
- package/dist/smallFastModel-D_uxGMo3.cjs +0 -21
- package/dist/tools-DeoxWyQ0.cjs +0 -63
- package/dist/tools-WXF7ApAe.mjs +0 -60
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import { i as isClaudeSessionId, g as extractCompleteLines, h as decideBackfill, j as parseTerminalHookPayload, k as decideMirrorBinding, M as MIRROR_BACKFILL_LINES_DEFAULT, m as mirrorLineKey, n as mirrorLocalId, o as initializeOwnedWorktree, e as summarizeSpawnSessionForLog, q as startAgentVersionChecks, W as WORKTREE_CAPABILITY_VERSION, t as currentWorktreeService } from './mirrorProtocol-
|
|
1
|
+
import { i as isClaudeSessionId, g as extractCompleteLines, h as decideBackfill, j as parseTerminalHookPayload, k as decideMirrorBinding, M as MIRROR_BACKFILL_LINES_DEFAULT, m as mirrorLineKey, n as mirrorLocalId, o as initializeOwnedWorktree, e as summarizeSpawnSessionForLog, q as startAgentVersionChecks, W as WORKTREE_CAPABILITY_VERSION, t as currentWorktreeService } from './mirrorProtocol-BI6XbokT.mjs';
|
|
2
2
|
import { F as FS_MKDIR_CAPABILITY_VERSION } from './fsMkdir-DumgLTzR.mjs';
|
|
3
|
-
import { P as PI_ADAPTER_INSTALL_HINT, s as sanitizeSpawnModel } from './piRunnerArgs-
|
|
3
|
+
import { P as PI_ADAPTER_INSTALL_HINT, s as sanitizeSpawnModel } from './piRunnerArgs-CsWompo8.mjs';
|
|
4
4
|
import fs from 'fs/promises';
|
|
5
5
|
import os from 'os';
|
|
6
6
|
import * as tmp from 'tmp';
|
|
7
7
|
import axios from 'axios';
|
|
8
|
-
import { readFileSync, openSync, fsyncSync, closeSync, renameSync, existsSync, readdirSync, statSync, unlinkSync, realpathSync, promises, writeFileSync, mkdirSync, accessSync,
|
|
9
|
-
import { join, isAbsolute, resolve, dirname, sep, basename } from 'node:path';
|
|
10
|
-
import { f as ensurePrivateDirectorySync, w as writePrivateFileSync, c as configuration } from './configuration-
|
|
11
|
-
import { T as TurnActivityTracker, A as ApiClient } from './api-
|
|
12
|
-
import { S as SPAWN_AGENTS, i as isSpawnAgent, s as sanitizeSpawnPermissionMode, r as resolveSpawnPermissionMode, a as resolveFirstMessageMeta, j as joinProject } from './spawnAgents-
|
|
13
|
-
import { l as logger } from './logger-
|
|
14
|
-
import { p as pruneStaleCompileCaches } from './index-
|
|
15
|
-
import { a as authAndSetupMachineIfNeeded } from './auth-
|
|
8
|
+
import { readFileSync, openSync, fsyncSync, closeSync, renameSync, existsSync, readdirSync, statSync, unlinkSync, realpathSync, promises, constants as constants$1, writeFileSync, mkdirSync, accessSync, readSync, rmdirSync } from 'node:fs';
|
|
9
|
+
import { join, isAbsolute, resolve, dirname, sep, basename, relative } from 'node:path';
|
|
10
|
+
import { f as ensurePrivateDirectorySync, w as writePrivateFileSync, c as configuration } from './configuration-8EAa2X9P.mjs';
|
|
11
|
+
import { T as TurnActivityTracker, A as ApiClient } from './api-cVvbFZVK.mjs';
|
|
12
|
+
import { S as SPAWN_AGENTS, i as isSpawnAgent, s as sanitizeSpawnPermissionMode, r as resolveSpawnPermissionMode, a as resolveFirstMessageMeta, j as joinProject } from './spawnAgents-f2q31uUV.mjs';
|
|
13
|
+
import { l as logger } from './logger-SAU4uSs4.mjs';
|
|
14
|
+
import { p as pruneStaleCompileCaches } from './index-BpSpw6jG.mjs';
|
|
15
|
+
import { a as authAndSetupMachineIfNeeded } from './auth-BCHL8Fx5.mjs';
|
|
16
16
|
import { spawn, execSync } from 'child_process';
|
|
17
|
-
import { p as packageJson } from './package-
|
|
18
|
-
import { a as globalPrefixForPackage, N as NPM_SAFE_ARG, g as getEnvironmentInfo } from './doctor-
|
|
19
|
-
import { s as spawnHappyCLI } from './spawnHappyCLI-
|
|
20
|
-
import { c as readPersistedSessions, r as readSettings, l as latchKeepAwake, q as reportSignature, s as decideDaemonHibernation, t as nextCheckDelay, v as persistSession, d as readDaemonState, x as acquireDaemonLock, a as resolveCheckMs, y as resolveIdleMs, z as deletePersistedSessions, A as writeDaemonState, B as writeSettings, C as settingIdleMs, u as updateSettings, D as rewriteCredentialsForRelay, g as readCredentials, E as releaseDaemonLock } from './persistence-
|
|
21
|
-
import { i as isDaemonRunningCurrentlyInstalledHappyVersion, s as stopDaemon, u as cleanupDaemonState } from './controlClient-
|
|
22
|
-
import { e as sendUserMessage, f as readSessionMetadata, r as readSessionTranscript, l as listAccountSessions, a as listSessions, M as MAX_READ_LIMIT, s as sessionWebUrl, g as waitForSessionKey, d as archiveSession, j as analyzeLatestTurn, k as readSessionLog, m as TURN_WINDOW, n as userPromptText } from './sessionOps-
|
|
17
|
+
import { p as packageJson } from './package-BMBwnCn3.mjs';
|
|
18
|
+
import { a as globalPrefixForPackage, N as NPM_SAFE_ARG, g as getEnvironmentInfo } from './doctor-BNhLBBTK.mjs';
|
|
19
|
+
import { s as spawnHappyCLI } from './spawnHappyCLI-Dp05fHcp.mjs';
|
|
20
|
+
import { c as readPersistedSessions, r as readSettings, l as latchKeepAwake, q as reportSignature, s as decideDaemonHibernation, t as nextCheckDelay, v as persistSession, d as readDaemonState, x as acquireDaemonLock, a as resolveCheckMs, y as resolveIdleMs, z as deletePersistedSessions, A as writeDaemonState, B as writeSettings, C as settingIdleMs, u as updateSettings, D as rewriteCredentialsForRelay, g as readCredentials, E as releaseDaemonLock } from './persistence-C7T3HYjq.mjs';
|
|
21
|
+
import { i as isDaemonRunningCurrentlyInstalledHappyVersion, s as stopDaemon, u as cleanupDaemonState } from './controlClient-O-vf2MkJ.mjs';
|
|
22
|
+
import { e as sendUserMessage, f as readSessionMetadata, r as readSessionTranscript, l as listAccountSessions, a as listSessions, M as MAX_READ_LIMIT, s as sessionWebUrl, g as waitForSessionKey, d as archiveSession, j as analyzeLatestTurn, k as readSessionLog, m as TURN_WINDOW, n as userPromptText } from './sessionOps-CiFjBCMa.mjs';
|
|
23
23
|
import fastify from 'fastify';
|
|
24
24
|
import { z } from 'zod';
|
|
25
25
|
import { validatorCompiler, serializerCompiler } from 'fastify-type-provider-zod';
|
|
@@ -27,62 +27,62 @@ import { d as decodeBase64, s as sameRelay, e as encodeBase64, h as decrypt } fr
|
|
|
27
27
|
import { randomBytes, createHash, timingSafeEqual, randomUUID } from 'node:crypto';
|
|
28
28
|
import { c as checkPreviewPath } from './previewPath-CXN4Vag0.mjs';
|
|
29
29
|
import { a as BACKGROUND_TASKS_MAX, d as BACKGROUND_TASK_DESCRIPTION_MAX, e as BackgroundTaskTracker } from './backgroundTaskActivity-8PdPxrvy.mjs';
|
|
30
|
-
import { b as sanitizeRateLimitReport } from './rateLimitWindows-
|
|
31
|
-
import { f as formatEditConflictNotice, b as SESSION_PEER_SENT_FROM, s as sendPeerMessage, l as listPeerSessions, C as CLI_PEER_SENDER_ID } from './peerTools-
|
|
30
|
+
import { b as sanitizeRateLimitReport } from './rateLimitWindows-B6IAWYN5.mjs';
|
|
31
|
+
import { f as formatEditConflictNotice, b as SESSION_PEER_SENT_FROM, s as sendPeerMessage, l as listPeerSessions, C as CLI_PEER_SENDER_ID } from './peerTools-CyruQrOo.mjs';
|
|
32
32
|
import os$1, { hostname, homedir, tmpdir } from 'node:os';
|
|
33
|
-
import { c as RemoteCallBudget, e as REMOTE_WRITE_CALLS_PER_MINUTE, d as deliverToSession, g as guardRemoteSessionOpsRequest, h as remoteError, i as REMOTE_OP_DEADLINE_MS, j as formatRemoteAuditLine, k as REMOTE_SEND_COMMIT_DEADLINE_MS, m as REMOTE_RESUME_WAIT_MS, n as capRemoteTranscript, o as capRemoteText, p as REMOTE_ANSWER_MAX_BYTES, q as REMOTE_TITLE_MAX_BYTES } from './remoteSessionClient-
|
|
34
|
-
import { assistantHome, bootstrapAssistantHome } from './bootstrap-
|
|
35
|
-
import { refreshAgentHomes, locateClaudeConversation, agentHomeSpawnEnv } from './index-
|
|
33
|
+
import { c as RemoteCallBudget, e as REMOTE_WRITE_CALLS_PER_MINUTE, d as deliverToSession, g as guardRemoteSessionOpsRequest, h as remoteError, i as REMOTE_OP_DEADLINE_MS, j as formatRemoteAuditLine, k as REMOTE_SEND_COMMIT_DEADLINE_MS, m as REMOTE_RESUME_WAIT_MS, n as capRemoteTranscript, o as capRemoteText, p as REMOTE_ANSWER_MAX_BYTES, q as REMOTE_TITLE_MAX_BYTES } from './remoteSessionClient-D3XhN_sd.mjs';
|
|
34
|
+
import { assistantHome, bootstrapAssistantHome } from './bootstrap-CndcegDb.mjs';
|
|
35
|
+
import { refreshAgentHomes, locateClaudeConversation, agentHomeSpawnEnv } from './index-lWXWV0H2.mjs';
|
|
36
36
|
import require$$0, { existsSync as existsSync$1, statSync as statSync$1, mkdtempSync, rmSync } from 'fs';
|
|
37
37
|
import require$$1, { join as join$1 } from 'path';
|
|
38
38
|
import { spawn as spawn$1, execFile, spawnSync } from 'node:child_process';
|
|
39
39
|
import { p as projectPath } from './projectPath-BTBIMB57.mjs';
|
|
40
40
|
import { d as daemonEndpointsMatch, r as resolveClaudeCredentialReadiness } from './doctorReadiness-C208SMN9.mjs';
|
|
41
|
-
import { o as ownerRetryPending, c as consumeOwnerRetry, s as spawnGate, a as afterStartupFailure, b as startupFailureMessage, T as TEAM_SPAWN_MAX_ATTEMPTS, d as TEAM_CLEANUP_RETRY_MS, g as getInitialMachineMetadata, e as getStartupCliAvailability, f as TEAM_RETRY_CAPABILITY_VERSION, w as withRunningCliFacts } from './machineMetadata-
|
|
41
|
+
import { o as ownerRetryPending, c as consumeOwnerRetry, s as spawnGate, a as afterStartupFailure, b as startupFailureMessage, T as TEAM_SPAWN_MAX_ATTEMPTS, d as TEAM_CLEANUP_RETRY_MS, g as getInitialMachineMetadata, e as getStartupCliAvailability, f as TEAM_RETRY_CAPABILITY_VERSION, w as withRunningCliFacts } from './machineMetadata-ZVnihOuL.mjs';
|
|
42
42
|
import { M as ModelConfigError, B as BackupStore, r as readConfigFile, s as sha256, a as atomicWriteFile } from './fileStore-5qpetZS0.mjs';
|
|
43
43
|
import { c as collectSecretValues, a as parseJsonObject, b as childObject, s as setOrDelete, d as changedPaths, e as stringifyLike, f as fail, n as normalizeModelList, g as normalizeModelId, h as normalizeSecret, i as normalizeBaseUrl, u as uniq, j as baseUrlWarnings, m as maskSecret, k as getPath$1, l as normalizeProviderId, o as piAdapter, r as redactText } from './pi-CqyoZMjI.mjs';
|
|
44
44
|
import require$$3 from 'crypto';
|
|
45
45
|
import { c as commandOnPath } from './detectCLI-CSGMlV51.mjs';
|
|
46
|
-
import { buildResumeLaunch } from './handleResumeCommand-
|
|
46
|
+
import { buildResumeLaunch } from './handleResumeCommand-Cy_KW0LN.mjs';
|
|
47
47
|
import { n as normalizeWebPanels } from './webPanels-B2_C2-3g.mjs';
|
|
48
|
-
import { K as ServerMigrateNoticeSchema, L as isHarnessInstallId, e as AUTOMATION_SUMMARY_MAX_CHARS, M as AUTOMATION_PRECHECK_OUTPUT_MAX_CHARS, N as AUTOMATION_PRECHECK_DEFAULT_TIMEOUT_MS, b as AUTOMATION_PRECHECK_MAX_TIMEOUT_MS, Q as AUTOMATION_CLAIM_MAX_RUNS, T as AUTOMATION_DAEMON_CAPABILITY_PRECHECK, U as AUTOMATION_DEFAULT_LEASE_MS, i as isAutomationRunTerminal, V as HARNESS_INSTALL_CAPABILITY_VERSION } from './index-
|
|
49
|
-
import { access, symlink, readFile, rm, unlink, readlink, lstat, constants, stat, open } from 'node:fs/promises';
|
|
48
|
+
import { K as ServerMigrateNoticeSchema, L as isHarnessInstallId, e as AUTOMATION_SUMMARY_MAX_CHARS, M as AUTOMATION_PRECHECK_OUTPUT_MAX_CHARS, N as AUTOMATION_PRECHECK_DEFAULT_TIMEOUT_MS, b as AUTOMATION_PRECHECK_MAX_TIMEOUT_MS, Q as AUTOMATION_CLAIM_MAX_RUNS, T as AUTOMATION_DAEMON_CAPABILITY_PRECHECK, U as AUTOMATION_DEFAULT_LEASE_MS, i as isAutomationRunTerminal, V as HARNESS_INSTALL_CAPABILITY_VERSION } from './index-B9f1vKcC.mjs';
|
|
49
|
+
import { access, symlink, readFile, rm, unlink, readlink, lstat, constants, rename, mkdir, copyFile, readdir, stat, open } from 'node:fs/promises';
|
|
50
50
|
import { p as parseExactVersion, c as compareExactVersions, f as fetchCliUpdateState, r as resolveCliUpdateCheckInterval, D as DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS } from './cliUpdate-Y34VGe9Y.mjs';
|
|
51
|
-
import { P as ProjectsUnsupportedError, c as createProjectsClient } from './client-
|
|
52
|
-
import { c as createAutomationsClient, i as isAutomationsUnavailable, d as AutomationsRequestError } from './client-
|
|
53
|
-
import { w as withKeychainOffPath, a as keychainIdentityFor, i as interpretSecurityRead, s as securityReadArgs, b as securityDeleteArgs, c as keychainOffShimDir, d as interpretCredentialsFile, C as CREDENTIALS_REJECTED_DETAIL, e as buildClaudeAuthState, f as claudeAuthStateChanged, r as resolveSdkClaudeBinary, g as classifyAuthStatus, h as diagnoseStores, p as parseLaunchctlPid, H as HAPPY_DAEMON_LAUNCHD_LABEL, j as classifyLineage, l as probeLaunchdJob, m as detectDaemonSupervisor, n as daemonLineage } from './daemonSupervisor-
|
|
51
|
+
import { P as ProjectsUnsupportedError, c as createProjectsClient } from './client-C8w9aQYe.mjs';
|
|
52
|
+
import { c as createAutomationsClient, i as isAutomationsUnavailable, d as AutomationsRequestError } from './client-Zqg7DXHl.mjs';
|
|
53
|
+
import { w as withKeychainOffPath, a as keychainIdentityFor, i as interpretSecurityRead, s as securityReadArgs, b as securityDeleteArgs, c as keychainOffShimDir, d as interpretCredentialsFile, C as CREDENTIALS_REJECTED_DETAIL, e as buildClaudeAuthState, f as claudeAuthStateChanged, r as resolveSdkClaudeBinary, g as classifyAuthStatus, h as diagnoseStores, p as parseLaunchctlPid, H as HAPPY_DAEMON_LAUNCHD_LABEL, j as classifyLineage, l as probeLaunchdJob, m as detectDaemonSupervisor, n as daemonLineage, o as probeSystemdKillMode, q as wrappersSurviveHandover, t as handoverWaitsForSessions } from './daemonSupervisor-BxohggqN.mjs';
|
|
54
54
|
import { g as getProjectPath } from './path-D2wdaNSk.mjs';
|
|
55
55
|
import { b as extractClaudeEditPaths } from './editPaths-BVfS_FFL.mjs';
|
|
56
|
-
import { s as startFileWatcher } from './startFileWatcher-
|
|
57
|
-
import { I as InvalidateSync } from './sync-
|
|
56
|
+
import { s as startFileWatcher } from './startFileWatcher-BLdxJdgu.mjs';
|
|
57
|
+
import { I as InvalidateSync } from './sync-BWX1OVQi.mjs';
|
|
58
58
|
import { R as RawJSONLinesSchema } from './types-CkqAACXx.mjs';
|
|
59
59
|
import { t as tmuxArgs, a as scrubTmuxClientEnv, s as shellescape } from './tmuxSocket-B8Yx20sT.mjs';
|
|
60
|
-
import { p as processIdentityFields, r as readSessionLock, t as terminateProcess, d as terminateProcessTree } from './sessionLock-
|
|
60
|
+
import { p as processIdentityFields, r as readSessionLock, t as terminateProcess, d as terminateProcessTree } from './sessionLock-DhzB5ZI9.mjs';
|
|
61
61
|
import { findAllHappyProcesses } from './doctor-BPkYWSuq.mjs';
|
|
62
|
-
import { T as TEAM_SKILL, a as TEAM_LEAD_PLAYBOOK, b as TEAM_MEMBER_RULES } from './resources-
|
|
62
|
+
import { T as TEAM_SKILL, a as TEAM_LEAD_PLAYBOOK, b as TEAM_MEMBER_RULES } from './resources-CLP_MpK4.mjs';
|
|
63
63
|
import { promisify } from 'node:util';
|
|
64
|
-
import { b as clipText, r as renderAction, c as clipAutomationReport, e as renderTemplate } from './template-
|
|
64
|
+
import { b as clipText, r as renderAction, c as clipAutomationReport, e as renderTemplate } from './template-DuKZw-Sz.mjs';
|
|
65
65
|
import { d as describeAgentHome } from './loginShellEnv-Dw8M7tkI.mjs';
|
|
66
|
-
import './acpSessionResume-
|
|
67
|
-
import './lidState-
|
|
66
|
+
import './acpSessionResume-DPSfMe7r.mjs';
|
|
67
|
+
import './lidState-LtdUCXi-.mjs';
|
|
68
68
|
import 'node:events';
|
|
69
69
|
import 'socket.io-client';
|
|
70
|
-
import './pushNotifications-
|
|
70
|
+
import './pushNotifications-Bi72c41d.mjs';
|
|
71
71
|
import './contentLogMetadata-BlWI0egu.mjs';
|
|
72
72
|
import './limits-DIo7rEBR.mjs';
|
|
73
|
-
import './time-
|
|
74
|
-
import './registerCommonHandlers-
|
|
73
|
+
import './time-DjS5me2q.mjs';
|
|
74
|
+
import './registerCommonHandlers-qzb6TQqo.mjs';
|
|
75
75
|
import 'util';
|
|
76
76
|
import 'cross-spawn';
|
|
77
77
|
import '@paralleldrive/cuid2';
|
|
78
78
|
import 'chalk';
|
|
79
79
|
import 'node:module';
|
|
80
80
|
import 'tweetnacl';
|
|
81
|
-
import './browser-
|
|
81
|
+
import './browser-CLsM513o.mjs';
|
|
82
82
|
import 'open';
|
|
83
83
|
import './ids-DU6sLx4C.mjs';
|
|
84
84
|
import 'url';
|
|
85
|
-
import './localHappyAgentAuth-
|
|
85
|
+
import './localHappyAgentAuth-DqFE0Adr.mjs';
|
|
86
86
|
import './processTreeSnapshot-CuLJDNC-.mjs';
|
|
87
87
|
import 'ps-list';
|
|
88
88
|
|
|
@@ -4410,7 +4410,7 @@ const runNpmProcess = (args, deps = processDefaults) => new Promise((resolveResu
|
|
|
4410
4410
|
child.on("close", (code) => done({ code: timedOut ? null : code, stdout, stderr, terminationConfirmed: !timedOut || treeKilled }));
|
|
4411
4411
|
});
|
|
4412
4412
|
const runNpm = (args) => runNpmProcess(args);
|
|
4413
|
-
const defaults = {
|
|
4413
|
+
const defaults$1 = {
|
|
4414
4414
|
npm: runNpm,
|
|
4415
4415
|
fs: { lstat, readlink, unlink, rm, readFile, symlink, access },
|
|
4416
4416
|
platform: process.platform,
|
|
@@ -4442,7 +4442,7 @@ function ownedCliLink(link, target, packageDir) {
|
|
|
4442
4442
|
const resolved = resolve(dirname(link), target);
|
|
4443
4443
|
return resolved.startsWith(join(packageDir, "bin") + sep);
|
|
4444
4444
|
}
|
|
4445
|
-
async function installCliSafely(version, deps = defaults) {
|
|
4445
|
+
async function installCliSafely(version, deps = defaults$1) {
|
|
4446
4446
|
const parsed = parseExactVersion(version);
|
|
4447
4447
|
if (!parsed) throw new Error("Invalid exact CLI version");
|
|
4448
4448
|
if (deps.platform === "win32") {
|
|
@@ -4539,6 +4539,12 @@ async function installCliSafely(version, deps = defaults) {
|
|
|
4539
4539
|
}
|
|
4540
4540
|
}
|
|
4541
4541
|
|
|
4542
|
+
const DEFAULT_BUSY_INSTALL_GRACE_MS = 15 * 6e4;
|
|
4543
|
+
function resolveBusyInstallGrace(raw) {
|
|
4544
|
+
if (raw === void 0 || raw.trim() === "") return DEFAULT_BUSY_INSTALL_GRACE_MS;
|
|
4545
|
+
const value = Number(raw);
|
|
4546
|
+
return Number.isInteger(value) && value >= 0 && value <= 24 * 60 * 6e4 ? value : DEFAULT_BUSY_INSTALL_GRACE_MS;
|
|
4547
|
+
}
|
|
4542
4548
|
function createUpdateController(deps) {
|
|
4543
4549
|
let policy = null;
|
|
4544
4550
|
let outcome = null;
|
|
@@ -4549,6 +4555,8 @@ function createUpdateController(deps) {
|
|
|
4549
4555
|
let handoverHold;
|
|
4550
4556
|
let lastPublished = "";
|
|
4551
4557
|
let autoUpdateEnabled;
|
|
4558
|
+
let busySince = null;
|
|
4559
|
+
let busyDeferred = null;
|
|
4552
4560
|
let lastInstall = (() => {
|
|
4553
4561
|
try {
|
|
4554
4562
|
return deps.lastInstall?.read() ?? null;
|
|
@@ -4615,14 +4623,29 @@ function createUpdateController(deps) {
|
|
|
4615
4623
|
publish(order === null ? "policy_stale" : "current", target);
|
|
4616
4624
|
return;
|
|
4617
4625
|
}
|
|
4626
|
+
let whileBusy = false;
|
|
4618
4627
|
if (!deps.idle()) {
|
|
4619
|
-
|
|
4620
|
-
|
|
4628
|
+
if (busySince?.version !== target) busySince = { version: target, at: now() };
|
|
4629
|
+
whileBusy = !!deps.installWhileBusy && busyDeferred?.version !== target && !deps.installFenced?.() && now() - busySince.at >= (deps.busyGraceMs ?? DEFAULT_BUSY_INSTALL_GRACE_MS);
|
|
4630
|
+
if (!whileBusy) {
|
|
4631
|
+
publish("waiting_idle", target, busyDeferred?.version === target ? busyDeferred.reason : void 0);
|
|
4632
|
+
return;
|
|
4633
|
+
}
|
|
4621
4634
|
}
|
|
4622
4635
|
running = true;
|
|
4623
|
-
publish("installing", target);
|
|
4636
|
+
publish("installing", target, whileBusy ? "while_busy" : void 0);
|
|
4624
4637
|
try {
|
|
4625
|
-
const code = await deps.install(target);
|
|
4638
|
+
const code = whileBusy ? await deps.installWhileBusy(target) : await deps.install(target);
|
|
4639
|
+
if (code && typeof code === "object" && "deferred" in code) {
|
|
4640
|
+
busyDeferred = { version: target, reason: code.deferred };
|
|
4641
|
+
publish("waiting_idle", target, code.deferred);
|
|
4642
|
+
return;
|
|
4643
|
+
}
|
|
4644
|
+
if (code && typeof code === "object" && "blocked" in code) {
|
|
4645
|
+
blocked = true;
|
|
4646
|
+
publish("manual_required", target, code.blocked);
|
|
4647
|
+
return;
|
|
4648
|
+
}
|
|
4626
4649
|
if (code && typeof code === "object") {
|
|
4627
4650
|
if ("manual" in code) publish("manual_required", target, code.manual);
|
|
4628
4651
|
else publish("failed", target, code.failed);
|
|
@@ -4740,6 +4763,134 @@ function createUpdateController(deps) {
|
|
|
4740
4763
|
return { refresh, retry, request, tick, withHandover, holdHandover, isRunning: () => running, currentTarget: () => policy?.autoUpdateVersion ?? null };
|
|
4741
4764
|
}
|
|
4742
4765
|
|
|
4766
|
+
const defaults = {
|
|
4767
|
+
npm: runNpm,
|
|
4768
|
+
fs: { lstat, readlink, readFile, readdir, copyFile, mkdir, rename, rm, access },
|
|
4769
|
+
platform: process.platform,
|
|
4770
|
+
runningPackageDir: projectPath(),
|
|
4771
|
+
now: Date.now
|
|
4772
|
+
};
|
|
4773
|
+
const MANAGED_BINS = ["very-happy", "very-happy-mcp"];
|
|
4774
|
+
async function manifest(dir, deps) {
|
|
4775
|
+
try {
|
|
4776
|
+
return JSON.parse(await deps.fs.readFile(join(dir, "package.json"), "utf8"));
|
|
4777
|
+
} catch {
|
|
4778
|
+
return null;
|
|
4779
|
+
}
|
|
4780
|
+
}
|
|
4781
|
+
async function isFile(path, deps) {
|
|
4782
|
+
const stat = await deps.fs.lstat(path).catch(() => null);
|
|
4783
|
+
return !!stat?.isFile();
|
|
4784
|
+
}
|
|
4785
|
+
function packageRelative(path) {
|
|
4786
|
+
const normalized = relative("/pkg", resolve("/pkg", path));
|
|
4787
|
+
return normalized && !normalized.startsWith("..") && !normalized.startsWith(sep) ? normalized : null;
|
|
4788
|
+
}
|
|
4789
|
+
async function binsUnchanged(stagedDir, liveDir, prefix, deps) {
|
|
4790
|
+
const staged = await manifest(stagedDir, deps);
|
|
4791
|
+
const bin = staged?.bin;
|
|
4792
|
+
if (!bin || typeof bin !== "object") return "staged_bin_map_unreadable";
|
|
4793
|
+
const names = Object.keys(bin).sort();
|
|
4794
|
+
if (names.join(",") !== [...MANAGED_BINS].sort().join(",")) return "staged_bin_map_changed";
|
|
4795
|
+
for (const name of MANAGED_BINS) {
|
|
4796
|
+
const target = packageRelative(String(bin[name]));
|
|
4797
|
+
if (!target || !await isFile(join(stagedDir, target), deps)) return "staged_bin_missing";
|
|
4798
|
+
const link = join(prefix, "bin", name);
|
|
4799
|
+
const stat = await deps.fs.lstat(link).catch(() => null);
|
|
4800
|
+
if (!stat?.isSymbolicLink()) return "live_bin_not_linked";
|
|
4801
|
+
const linkTarget = await deps.fs.readlink(link);
|
|
4802
|
+
if (!ownedCliLink(link, linkTarget, liveDir)) return "live_bin_not_owned";
|
|
4803
|
+
if (relative(liveDir, resolve(dirname(link), linkTarget)) !== target) return "staged_bin_map_changed";
|
|
4804
|
+
}
|
|
4805
|
+
return null;
|
|
4806
|
+
}
|
|
4807
|
+
async function keepOldChunks(liveDir, stagedDir, deps, sub = "dist") {
|
|
4808
|
+
const live = await deps.fs.readdir(join(liveDir, sub)).catch(() => []);
|
|
4809
|
+
const staged = new Set(await deps.fs.readdir(join(stagedDir, sub)).catch(() => []));
|
|
4810
|
+
let kept = 0;
|
|
4811
|
+
for (const name of live) {
|
|
4812
|
+
if (basename(name) !== name) continue;
|
|
4813
|
+
const from = join(liveDir, sub, name);
|
|
4814
|
+
const stat = await deps.fs.lstat(from).catch(() => null);
|
|
4815
|
+
if (stat?.isDirectory()) {
|
|
4816
|
+
if (!staged.has(name)) await deps.fs.mkdir(join(stagedDir, sub, name));
|
|
4817
|
+
kept += await keepOldChunks(liveDir, stagedDir, deps, join(sub, name));
|
|
4818
|
+
continue;
|
|
4819
|
+
}
|
|
4820
|
+
if (staged.has(name) || !stat?.isFile()) continue;
|
|
4821
|
+
await deps.fs.copyFile(from, join(stagedDir, sub, name), constants$1.COPYFILE_EXCL);
|
|
4822
|
+
kept++;
|
|
4823
|
+
}
|
|
4824
|
+
return kept;
|
|
4825
|
+
}
|
|
4826
|
+
async function installCliStaged(version, deps = defaults) {
|
|
4827
|
+
const parsed = parseExactVersion(version);
|
|
4828
|
+
if (!parsed) throw new Error("Invalid exact CLI version");
|
|
4829
|
+
if (deps.platform === "win32") return { outcome: { deferred: "staged_install_unsupported" } };
|
|
4830
|
+
const liveDir = deps.runningPackageDir;
|
|
4831
|
+
const prefix = liveDir ? globalPrefixForPackage(liveDir) : null;
|
|
4832
|
+
if (!liveDir || !prefix) return { outcome: { manual: "install_location_unverified" } };
|
|
4833
|
+
const liveStat = await deps.fs.lstat(liveDir).catch(() => null);
|
|
4834
|
+
const live = await manifest(liveDir, deps);
|
|
4835
|
+
if (!liveStat?.isDirectory() || liveStat.isSymbolicLink() || live?.name !== "very-happy-cli" || typeof live.version !== "string") {
|
|
4836
|
+
return { outcome: { manual: "install_location_unverified" } };
|
|
4837
|
+
}
|
|
4838
|
+
const root = dirname(liveDir);
|
|
4839
|
+
try {
|
|
4840
|
+
await deps.fs.access(root, constants$1.W_OK);
|
|
4841
|
+
await deps.fs.access(liveDir, constants$1.W_OK);
|
|
4842
|
+
} catch {
|
|
4843
|
+
return { outcome: { manual: "install_location_not_writable" } };
|
|
4844
|
+
}
|
|
4845
|
+
const stagePrefix = join(root, `.very-happy-cli-stage-${parsed.exact}`);
|
|
4846
|
+
const stagedDir = join(stagePrefix, "lib", "node_modules", "very-happy-cli");
|
|
4847
|
+
const retiredDir = join(root, `.very-happy-cli-retired-${live.version}-${deps.now()}`);
|
|
4848
|
+
const cleanup = async (path) => {
|
|
4849
|
+
await deps.fs.rm(path, { recursive: true, force: true }).catch(() => void 0);
|
|
4850
|
+
};
|
|
4851
|
+
await cleanup(stagePrefix);
|
|
4852
|
+
let swapped = false;
|
|
4853
|
+
try {
|
|
4854
|
+
const result = await deps.npm(autoUpdateInstallArgs(parsed.exact, stagePrefix));
|
|
4855
|
+
if (result.terminationConfirmed === false) return { outcome: "blocked" };
|
|
4856
|
+
if (result.code !== 0) return { outcome: result.code };
|
|
4857
|
+
const staged = await manifest(stagedDir, deps);
|
|
4858
|
+
if (staged?.name !== "very-happy-cli" || staged.version !== parsed.exact) return { outcome: { deferred: "staged_package_unverified" } };
|
|
4859
|
+
const binProblem = await binsUnchanged(stagedDir, liveDir, prefix, deps);
|
|
4860
|
+
if (binProblem) return { outcome: { deferred: binProblem } };
|
|
4861
|
+
let keptChunks;
|
|
4862
|
+
try {
|
|
4863
|
+
keptChunks = await keepOldChunks(liveDir, stagedDir, deps);
|
|
4864
|
+
} catch {
|
|
4865
|
+
return { outcome: { deferred: "staged_copy_failed" } };
|
|
4866
|
+
}
|
|
4867
|
+
try {
|
|
4868
|
+
await deps.fs.rename(liveDir, retiredDir);
|
|
4869
|
+
} catch {
|
|
4870
|
+
return { outcome: { deferred: "staged_retire_failed" } };
|
|
4871
|
+
}
|
|
4872
|
+
try {
|
|
4873
|
+
await deps.fs.rename(stagedDir, liveDir);
|
|
4874
|
+
} catch {
|
|
4875
|
+
try {
|
|
4876
|
+
await deps.fs.rename(retiredDir, liveDir);
|
|
4877
|
+
} catch {
|
|
4878
|
+
return { outcome: { blocked: "staged_rollback_failed", retiredDir }, keptChunks };
|
|
4879
|
+
}
|
|
4880
|
+
return { outcome: { deferred: "staged_swap_failed" } };
|
|
4881
|
+
}
|
|
4882
|
+
swapped = true;
|
|
4883
|
+
const installed = await manifest(liveDir, deps);
|
|
4884
|
+
return { outcome: installed?.version === parsed.exact ? 0 : { failed: "installed_elsewhere" }, keptChunks };
|
|
4885
|
+
} finally {
|
|
4886
|
+
await cleanup(stagePrefix);
|
|
4887
|
+
if (swapped) {
|
|
4888
|
+
await cleanup(retiredDir);
|
|
4889
|
+
await cleanup(join(root, ".package-lock.json"));
|
|
4890
|
+
}
|
|
4891
|
+
}
|
|
4892
|
+
}
|
|
4893
|
+
|
|
4743
4894
|
function parseLastInstall(raw) {
|
|
4744
4895
|
if (!raw || typeof raw !== "object") return null;
|
|
4745
4896
|
const { from, to, at, source } = raw;
|
|
@@ -7010,7 +7161,7 @@ ${action.prompt}`, { localId: `automation-${run.id}` });
|
|
|
7010
7161
|
}
|
|
7011
7162
|
}
|
|
7012
7163
|
persist({ runId: run.id, automationId: automation.id, kind: "spawn", phase: "starting", claimId: run.claimId, stickyKey, ...action.worktree ? { directory } : {} });
|
|
7013
|
-
const spawned = await deps.spawn({ directory, agent, permissionMode, spawnedBy: AUTOMATION_SPAWNED_BY, environmentVariables: env });
|
|
7164
|
+
const spawned = await deps.spawn({ directory, agent, permissionMode, spawnedBy: AUTOMATION_SPAWNED_BY, environmentVariables: stickyKey ? { ...env, VH_AUTOMATION_STICKY: "1" } : env });
|
|
7014
7165
|
if (spawned.type !== "success") {
|
|
7015
7166
|
await failNow(claimed, "spawn", spawned.type === "error" ? spawned.errorMessage : "Directory approval required", "spawn_failed");
|
|
7016
7167
|
return;
|
|
@@ -8425,6 +8576,17 @@ async function startDaemon() {
|
|
|
8425
8576
|
const daemonSupervisor = detectDaemonSupervisor(process.env, process.platform, launchdJob);
|
|
8426
8577
|
const lineage = daemonLineage(daemonSupervisor, process.env, process.platform, launchdJob);
|
|
8427
8578
|
logger.debug(`[DAEMON RUN] Supervisor: ${daemonSupervisor} (lineage ${lineage}${launchdJob ? `, launchd job pid ${launchdJob.jobPid ?? "-"}` : ""})`);
|
|
8579
|
+
const systemdKillMode = daemonSupervisor === "systemd" ? await probeSystemdKillMode() : null;
|
|
8580
|
+
const handoverSparesWrappers = wrappersSurviveHandover({
|
|
8581
|
+
supervisor: daemonSupervisor,
|
|
8582
|
+
env: process.env,
|
|
8583
|
+
platform: process.platform,
|
|
8584
|
+
pid: process.pid,
|
|
8585
|
+
ppid: process.ppid,
|
|
8586
|
+
inContainer: existsSync$1("/.dockerenv") || existsSync$1("/run/.containerenv"),
|
|
8587
|
+
systemdKillMode
|
|
8588
|
+
});
|
|
8589
|
+
logger.debug(`[DAEMON RUN] Handover spares wrappers: ${handoverSparesWrappers}${daemonSupervisor === "systemd" ? ` (KillMode ${systemdKillMode ?? "unknown"})` : ""}`);
|
|
8428
8590
|
let fileState = {
|
|
8429
8591
|
pid: process.pid,
|
|
8430
8592
|
httpPort: controlPort,
|
|
@@ -8558,6 +8720,15 @@ async function startDaemon() {
|
|
|
8558
8720
|
// whose turn ended but still has background tasks is busy too.
|
|
8559
8721
|
idle: () => !turnActivity.hasActiveTurn() && !backgroundTasks.hasAny() && !harnessInstaller?.isRunning(),
|
|
8560
8722
|
install: installCliSafely,
|
|
8723
|
+
// B-817: a machine that is never idle installs after the grace period
|
|
8724
|
+
// through the staged path, which never leaves the live tree incomplete.
|
|
8725
|
+
installWhileBusy: async (version) => {
|
|
8726
|
+
const report = await installCliStaged(version);
|
|
8727
|
+
logger.warn(`[DAEMON RUN] CLI update: staged install while busy -> ${JSON.stringify(report.outcome)} keptChunks=${report.keptChunks ?? 0}`);
|
|
8728
|
+
return report.outcome;
|
|
8729
|
+
},
|
|
8730
|
+
installFenced: () => !!harnessInstaller?.isRunning(),
|
|
8731
|
+
busyGraceMs: resolveBusyInstallGrace(process.env.HAPPY_CLI_UPDATE_BUSY_GRACE_MS),
|
|
8561
8732
|
lastInstall: lastInstallStore(configuration.happyHomeDir),
|
|
8562
8733
|
publish: (state) => {
|
|
8563
8734
|
cliUpdateStateRef = state;
|
|
@@ -8659,7 +8830,8 @@ async function startDaemon() {
|
|
|
8659
8830
|
}
|
|
8660
8831
|
}
|
|
8661
8832
|
const relayMove = pendingRelayMove;
|
|
8662
|
-
|
|
8833
|
+
const sessionsHold = () => handoverWaitsForSessions({ bundleReplaced, relayMove: !!relayMove, sparesWrappers: handoverSparesWrappers }) && (turnActivity.hasActiveTurn() || backgroundTasks.hasAny());
|
|
8834
|
+
if ((bundleReplaced || relayMove) && !teamWorker?.busy && !automationRunner?.busy && !updateController.isRunning() && !harnessInstaller?.isRunning() && !sessionsHold()) {
|
|
8663
8835
|
const preflight = bundleReplaced ? await preflightNewBundle(bundlePath) : { action: "proceed" };
|
|
8664
8836
|
if (preflight.action === "hold") {
|
|
8665
8837
|
if (lastHandoverHold !== preflight.reason) {
|
|
@@ -8669,7 +8841,7 @@ async function startDaemon() {
|
|
|
8669
8841
|
updateController.holdHandover(preflight.reason);
|
|
8670
8842
|
return;
|
|
8671
8843
|
}
|
|
8672
|
-
if (teamWorker?.busy || automationRunner?.busy || updateController.isRunning() || harnessInstaller?.isRunning() ||
|
|
8844
|
+
if (teamWorker?.busy || automationRunner?.busy || updateController.isRunning() || harnessInstaller?.isRunning() || sessionsHold()) return;
|
|
8673
8845
|
lastHandoverHold = null;
|
|
8674
8846
|
logger.debug(relayMove ? `[DAEMON RUN] Relay moved to ${relayMove.serverUrl}; handing off to a new daemon on the new settings` : "[DAEMON RUN] Daemon bundle replaced on disk and verified, handing off to new daemon");
|
|
8675
8847
|
teamWorker?.stop();
|
|
@@ -1,27 +1,27 @@
|
|
|
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 defaultPermissionMode = require('./defaultPermissionMode-
|
|
4
|
+
var sessionLock = require('./sessionLock-Cf6RlgfF.cjs');
|
|
5
|
+
var persistence = require('./persistence-DPeSC0SK.cjs');
|
|
6
|
+
var defaultPermissionMode = require('./defaultPermissionMode-BN3PdltF.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-
|
|
8
|
+
var api = require('./api-DVEzYcoy.cjs');
|
|
9
|
+
var logger = require('./logger-BILSzq2s.cjs');
|
|
10
|
+
var createSessionMetadata = require('./createSessionMetadata-Bcn7b8QB.cjs');
|
|
11
|
+
var _package = require('./package-Bbfq2KR7.cjs');
|
|
12
|
+
var index = require('./index-BumVulwx.cjs');
|
|
13
13
|
var forkBackfill = require('./forkBackfill-8eLDeS73.cjs');
|
|
14
|
-
var configuration = require('./configuration-
|
|
14
|
+
var configuration = require('./configuration-CAfdO4IC.cjs');
|
|
15
15
|
var providerBinding = require('./providerBinding-B-Qbx9W2.cjs');
|
|
16
|
-
var controlClient = require('./controlClient-
|
|
17
|
-
var machineMetadata = require('./machineMetadata-
|
|
16
|
+
var controlClient = require('./controlClient-mH9AxBwT.cjs');
|
|
17
|
+
var machineMetadata = require('./machineMetadata-C5TgUTpD.cjs');
|
|
18
18
|
var projectPath = require('./projectPath-C3ioB4Bu.cjs');
|
|
19
19
|
var path = require('node:path');
|
|
20
|
-
var startupSessionCreate = require('./startupSessionCreate-
|
|
20
|
+
var startupSessionCreate = require('./startupSessionCreate-Cy4J4-Ep.cjs');
|
|
21
21
|
var permissionMode = require('./permissionMode-CrV-XuMs.cjs');
|
|
22
22
|
var authRelay = require('./authRelay-Dy1qU9td.cjs');
|
|
23
23
|
var promises = require('node:fs/promises');
|
|
24
|
-
var attachmentContent = require('./attachmentContent-
|
|
24
|
+
var attachmentContent = require('./attachmentContent-D8hViGiA.cjs');
|
|
25
25
|
var transcriptCursor = require('./transcriptCursor-DcXGLeSc.cjs');
|
|
26
26
|
var startupPlan = require('./startupPlan-BLMbfQIH.cjs');
|
|
27
27
|
require('node:fs');
|
|
@@ -29,36 +29,36 @@ require('./processTreeSnapshot-mDbnuojn.cjs');
|
|
|
29
29
|
require('node:child_process');
|
|
30
30
|
require('zod');
|
|
31
31
|
require('axios');
|
|
32
|
-
require('./lidState-
|
|
32
|
+
require('./lidState-XyjQaZtU.cjs');
|
|
33
33
|
require('os');
|
|
34
34
|
require('child_process');
|
|
35
35
|
require('node:events');
|
|
36
36
|
require('socket.io-client');
|
|
37
|
-
require('./pushNotifications-
|
|
37
|
+
require('./pushNotifications-CsSyhnHu.cjs');
|
|
38
38
|
require('./contentLogMetadata-ZSFk_NjQ.cjs');
|
|
39
39
|
require('./limits-C-a7gr04.cjs');
|
|
40
|
-
require('./time-
|
|
41
|
-
require('./registerCommonHandlers-
|
|
40
|
+
require('./time-BbQJi3Eh.cjs');
|
|
41
|
+
require('./registerCommonHandlers-CQC04iF3.cjs');
|
|
42
42
|
require('util');
|
|
43
43
|
require('fs/promises');
|
|
44
44
|
require('crypto');
|
|
45
45
|
require('path');
|
|
46
46
|
require('cross-spawn');
|
|
47
47
|
require('@paralleldrive/cuid2');
|
|
48
|
-
require('./sync-
|
|
48
|
+
require('./sync-lxDpbIh3.cjs');
|
|
49
49
|
require('./backgroundTaskActivity-CBvUdj39.cjs');
|
|
50
50
|
require('chalk');
|
|
51
51
|
require('node:util');
|
|
52
52
|
require('./detectCLI-BuYR_Qxe.cjs');
|
|
53
53
|
require('fs');
|
|
54
|
-
require('./localHappyAgentAuth-
|
|
54
|
+
require('./localHappyAgentAuth-C9Aj_wGD.cjs');
|
|
55
55
|
require('tweetnacl');
|
|
56
56
|
require('./fsMkdir-0K3yENml.cjs');
|
|
57
57
|
require('url');
|
|
58
58
|
|
|
59
59
|
const DEFAULT_CLAUDE_MODEL = void 0;
|
|
60
60
|
const DEFAULT_CLAUDE_EFFORT = void 0;
|
|
61
|
-
const importRunClaudeDeps = () => Promise.resolve().then(function () { return require('./runClaudeDeps-
|
|
61
|
+
const importRunClaudeDeps = () => Promise.resolve().then(function () { return require('./runClaudeDeps-Dbk1VrOW.cjs'); });
|
|
62
62
|
async function runClaude(credentials, options = {}) {
|
|
63
63
|
logger.logger.debug(`[CLAUDE] ===== CLAUDE MODE STARTING =====`);
|
|
64
64
|
logger.logger.debug(`[CLAUDE] This is the Claude agent, NOT Gemini`);
|
|
@@ -72,7 +72,7 @@ async function runClaude(credentials, options = {}) {
|
|
|
72
72
|
const isAssistantVariant = process.env.HAPPY_SESSION_VARIANT === "assistant";
|
|
73
73
|
if (isAssistantVariant) {
|
|
74
74
|
try {
|
|
75
|
-
const { bootstrapAssistantHome } = await Promise.resolve().then(function () { return require('./bootstrap-
|
|
75
|
+
const { bootstrapAssistantHome } = await Promise.resolve().then(function () { return require('./bootstrap-j2RuoHVy.cjs'); });
|
|
76
76
|
await bootstrapAssistantHome();
|
|
77
77
|
} catch (error) {
|
|
78
78
|
logger.logger.debug("[START] Assistant home bootstrap failed:", error);
|
|
@@ -192,7 +192,7 @@ async function runClaude(credentials, options = {}) {
|
|
|
192
192
|
}
|
|
193
193
|
if (!response) {
|
|
194
194
|
let offlineSessionId = null;
|
|
195
|
-
const { claudeLocal } = await Promise.resolve().then(function () { return require('./claudeLocal-
|
|
195
|
+
const { claudeLocal } = await Promise.resolve().then(function () { return require('./claudeLocal-C_uUbEO_.cjs'); });
|
|
196
196
|
const { createSessionScanner: createSessionScanner2 } = await loadDeps();
|
|
197
197
|
const reconnection = api.startOfflineReconnection({
|
|
198
198
|
serverUrl: configuration.configuration.serverUrl,
|
|
@@ -1,25 +1,25 @@
|
|
|
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-
|
|
3
|
-
import { r as readSettings, H as HIBERNATION_CAPABILITY, a as resolveCheckMs, l as latchKeepAwake, e as evaluateWrapperIdle } from './persistence-
|
|
4
|
-
import { D as DEFAULT_CLAUDE_PERMISSION_MODE, H as HibernationProbe, c as commitHibernation } from './defaultPermissionMode-
|
|
2
|
+
import { c as claimSessionOrExit, a as applyServerSnapshot, b as applyReconnectReplay, w as withoutServerSnapshot, m as mergeReconnectMetadata, e as exitCursorStamp } from './sessionLock-DhzB5ZI9.mjs';
|
|
3
|
+
import { r as readSettings, H as HIBERNATION_CAPABILITY, a as resolveCheckMs, l as latchKeepAwake, e as evaluateWrapperIdle } from './persistence-C7T3HYjq.mjs';
|
|
4
|
+
import { D as DEFAULT_CLAUDE_PERMISSION_MODE, H as HibernationProbe, c as commitHibernation } from './defaultPermissionMode-BPDeX4S8.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 } from './index-
|
|
6
|
+
import { c as connectionState, A as ApiClient, s as startOfflineReconnection } from './api-cVvbFZVK.mjs';
|
|
7
|
+
import { l as logger } from './logger-SAU4uSs4.mjs';
|
|
8
|
+
import { s as spawnOriginTags, a as sessionWorktreeMetadata } from './createSessionMetadata-HlzlfP0U.mjs';
|
|
9
|
+
import { p as packageJson } from './package-BMBwnCn3.mjs';
|
|
10
|
+
import { P as PROMPT_QUEUE_CAPABILITY, a as PROJECT_SESSION_CAPABILITY } from './index-B9f1vKcC.mjs';
|
|
11
11
|
import { F as FORK_BACKFILL_CAPABILITY, p as publishForkBackfillWhenCommitted } from './forkBackfill-DYIjlN1Z.mjs';
|
|
12
|
-
import { c as configuration } from './configuration-
|
|
12
|
+
import { c as configuration } from './configuration-8EAa2X9P.mjs';
|
|
13
13
|
import { l as loadSessionProvider, a as applyProviderEnv } from './providerBinding-CYubGg-Z.mjs';
|
|
14
|
-
import { n as notifyDaemonSessionStarted, c as checkDaemonHibernation } from './controlClient-
|
|
15
|
-
import { g as getInitialMachineMetadata } from './machineMetadata-
|
|
14
|
+
import { n as notifyDaemonSessionStarted, c as checkDaemonHibernation } from './controlClient-O-vf2MkJ.mjs';
|
|
15
|
+
import { g as getInitialMachineMetadata } from './machineMetadata-ZVnihOuL.mjs';
|
|
16
16
|
import { p as projectPath } from './projectPath-BTBIMB57.mjs';
|
|
17
17
|
import { resolve, join } from 'node:path';
|
|
18
|
-
import { c as createSessionForStartup } from './startupSessionCreate-
|
|
18
|
+
import { c as createSessionForStartup } from './startupSessionCreate-CJFR_Zom.mjs';
|
|
19
19
|
import { a as applySandboxPermissionPolicy, r as resolveInitialClaudePermissionMode, m as mapToClaudeMode, b as reconcilePublishedPermissionMode } from './permissionMode-CH4FoZfU.mjs';
|
|
20
20
|
import { d as decodeBase64, e as encodeBase64 } from './authRelay-DhQhkBvX.mjs';
|
|
21
21
|
import { readFile } from 'node:fs/promises';
|
|
22
|
-
import { C as CLAUDE_ATTACHMENT_KINDS, s as stripAttachmentManifest } from './attachmentContent-
|
|
22
|
+
import { C as CLAUDE_ATTACHMENT_KINDS, s as stripAttachmentManifest } from './attachmentContent-NNF-Eo4O.mjs';
|
|
23
23
|
import { T as TranscriptPathHints } from './transcriptCursor-B7T_gkQ0.mjs';
|
|
24
24
|
import { p as planClaudeStartup } from './startupPlan-DFMyNgAs.mjs';
|
|
25
25
|
import 'node:fs';
|
|
@@ -27,36 +27,36 @@ import './processTreeSnapshot-CuLJDNC-.mjs';
|
|
|
27
27
|
import 'node:child_process';
|
|
28
28
|
import 'zod';
|
|
29
29
|
import 'axios';
|
|
30
|
-
import './lidState-
|
|
30
|
+
import './lidState-LtdUCXi-.mjs';
|
|
31
31
|
import 'os';
|
|
32
32
|
import 'child_process';
|
|
33
33
|
import 'node:events';
|
|
34
34
|
import 'socket.io-client';
|
|
35
|
-
import './pushNotifications-
|
|
35
|
+
import './pushNotifications-Bi72c41d.mjs';
|
|
36
36
|
import './contentLogMetadata-BlWI0egu.mjs';
|
|
37
37
|
import './limits-DIo7rEBR.mjs';
|
|
38
|
-
import './time-
|
|
39
|
-
import './registerCommonHandlers-
|
|
38
|
+
import './time-DjS5me2q.mjs';
|
|
39
|
+
import './registerCommonHandlers-qzb6TQqo.mjs';
|
|
40
40
|
import 'util';
|
|
41
41
|
import 'fs/promises';
|
|
42
42
|
import 'crypto';
|
|
43
43
|
import 'path';
|
|
44
44
|
import 'cross-spawn';
|
|
45
45
|
import '@paralleldrive/cuid2';
|
|
46
|
-
import './sync-
|
|
46
|
+
import './sync-BWX1OVQi.mjs';
|
|
47
47
|
import './backgroundTaskActivity-8PdPxrvy.mjs';
|
|
48
48
|
import 'chalk';
|
|
49
49
|
import 'node:util';
|
|
50
50
|
import './detectCLI-CSGMlV51.mjs';
|
|
51
51
|
import 'fs';
|
|
52
|
-
import './localHappyAgentAuth-
|
|
52
|
+
import './localHappyAgentAuth-DqFE0Adr.mjs';
|
|
53
53
|
import 'tweetnacl';
|
|
54
54
|
import './fsMkdir-DumgLTzR.mjs';
|
|
55
55
|
import 'url';
|
|
56
56
|
|
|
57
57
|
const DEFAULT_CLAUDE_MODEL = void 0;
|
|
58
58
|
const DEFAULT_CLAUDE_EFFORT = void 0;
|
|
59
|
-
const importRunClaudeDeps = () => import('./runClaudeDeps-
|
|
59
|
+
const importRunClaudeDeps = () => import('./runClaudeDeps-BZkWM9_u.mjs');
|
|
60
60
|
async function runClaude(credentials, options = {}) {
|
|
61
61
|
logger.debug(`[CLAUDE] ===== CLAUDE MODE STARTING =====`);
|
|
62
62
|
logger.debug(`[CLAUDE] This is the Claude agent, NOT Gemini`);
|
|
@@ -70,7 +70,7 @@ async function runClaude(credentials, options = {}) {
|
|
|
70
70
|
const isAssistantVariant = process.env.HAPPY_SESSION_VARIANT === "assistant";
|
|
71
71
|
if (isAssistantVariant) {
|
|
72
72
|
try {
|
|
73
|
-
const { bootstrapAssistantHome } = await import('./bootstrap-
|
|
73
|
+
const { bootstrapAssistantHome } = await import('./bootstrap-CndcegDb.mjs');
|
|
74
74
|
await bootstrapAssistantHome();
|
|
75
75
|
} catch (error) {
|
|
76
76
|
logger.debug("[START] Assistant home bootstrap failed:", error);
|
|
@@ -190,7 +190,7 @@ async function runClaude(credentials, options = {}) {
|
|
|
190
190
|
}
|
|
191
191
|
if (!response) {
|
|
192
192
|
let offlineSessionId = null;
|
|
193
|
-
const { claudeLocal } = await import('./claudeLocal-
|
|
193
|
+
const { claudeLocal } = await import('./claudeLocal-3HbTx7K-.mjs');
|
|
194
194
|
const { createSessionScanner: createSessionScanner2 } = await loadDeps();
|
|
195
195
|
const reconnection = startOfflineReconnection({
|
|
196
196
|
serverUrl: configuration.serverUrl,
|