very-happy-cli 0.2.204 → 0.2.206
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-BBfcpIDj.mjs → AcpBackend-CfTTWCK_.mjs} +3 -3
- package/dist/{AcpBackend-BupxHXGp.cjs → AcpBackend-dO5GAvaj.cjs} +3 -3
- package/dist/{AcpSessionManager-JJrnenKM.cjs → AcpSessionManager-DpT9znny.cjs} +1 -1
- package/dist/{AcpSessionManager-B9UkPYGi.mjs → AcpSessionManager-a-A4YDP7.mjs} +1 -1
- package/dist/{BasePermissionHandler-86_xnisC.cjs → BasePermissionHandler-C917oi-W.cjs} +1 -1
- package/dist/{BasePermissionHandler-tGylJLUH.mjs → BasePermissionHandler-Cg2py7Mi.mjs} +1 -1
- package/dist/{account-C91_R-kw.cjs → account-BpEOGAi-.cjs} +5 -5
- package/dist/{account-BRqUOj_D.mjs → account-CY_3dfMO.mjs} +5 -5
- package/dist/{acpSessionResume-DK8EjIY0.cjs → acpSessionResume-BTchDv4R.cjs} +1 -1
- package/dist/{acpSessionResume-CZQ91ano.mjs → acpSessionResume-D1v1ZqjL.mjs} +1 -1
- package/dist/{agentHome-BZvbPuy1.cjs → agentHome-B8Fp21kp.cjs} +4 -4
- package/dist/{agentHome-71zGywwx.mjs → agentHome-Bb0sGzgt.mjs} +4 -4
- package/dist/{api-BoJA-zK3.cjs → api-B-u-Mk6V.cjs} +9 -9
- package/dist/{api-BYh1VGBa.mjs → api-DGJVcaIF.mjs} +9 -9
- package/dist/{apiMachine--_eI4PTv.mjs → apiMachine-B-GyYD22.mjs} +56 -16
- package/dist/{apiMachine-CA58NM_V.cjs → apiMachine-Bi15f6YB.cjs} +56 -16
- package/dist/{attachmentContent-y621KwMz.cjs → attachmentContent-BvGKA5QH.cjs} +2 -2
- package/dist/{attachmentContent-D95cCBX5.mjs → attachmentContent-C-qFMirp.mjs} +2 -2
- package/dist/{auth-CAkpHr8F.cjs → auth-Bnj_x4XN.cjs} +5 -5
- package/dist/{auth-DRJ_WPn3.mjs → auth-CP7a7YqH.mjs} +5 -5
- package/dist/{auth-Dofm64Kp.cjs → auth-CT2084Ag.cjs} +8 -8
- package/dist/{auth-DCzFx5BN.mjs → auth-FRjFFR7K.mjs} +8 -8
- package/dist/{auto-CrgOy5OR.mjs → auto-CxItjek7.mjs} +14 -14
- package/dist/{auto-D4IBwJEE.cjs → auto-DaADkeaT.cjs} +14 -14
- package/dist/{bootstrap-PnL2FX64.mjs → bootstrap-BCuF4Kla.mjs} +2 -2
- package/dist/{bootstrap-D16MMPNP.cjs → bootstrap-Cq_W1C3z.cjs} +2 -2
- package/dist/{browser-D2enJJfv.mjs → browser-C-PWxfCE.mjs} +1 -1
- package/dist/{browser-DK2GfyEr.cjs → browser-CHC75A5J.cjs} +1 -1
- package/dist/{claudeLocal-DaqiRW9N.cjs → claudeLocal-TVtTBsHi.cjs} +4 -4
- package/dist/{claudeLocal-BbzN1qly.mjs → claudeLocal-XsMte9X2.mjs} +4 -4
- package/dist/{claudeLocalLauncher-B0qbyOUc.cjs → claudeLocalLauncher-D5XU298r.cjs} +9 -9
- package/dist/{claudeLocalLauncher-D7bhZ9rp.mjs → claudeLocalLauncher-DDU1kyxO.mjs} +9 -9
- package/dist/{claudeSessionFork-BPF3cpGs.mjs → claudeSessionFork-CZpugNK3.mjs} +1 -1
- package/dist/{claudeSessionFork-lcajftLB.cjs → claudeSessionFork-CzzRjCFN.cjs} +1 -1
- package/dist/{client-t1vQ7gho.mjs → client-5ekzs8hv.mjs} +2 -2
- package/dist/{client-Og5iNZ6S.mjs → client-Bqyfl2t0.mjs} +4 -4
- package/dist/{client-xA44FUnf.cjs → client-C2F0G1gB.cjs} +4 -4
- package/dist/{client-D5_YDMpA.cjs → client-Cdax95Aw.cjs} +2 -2
- package/dist/{client-ByK8-iRd.cjs → client-D9viv5fT.cjs} +2 -2
- package/dist/{client-BH4s6mzX.mjs → client-DizbJlbC.mjs} +2 -2
- package/dist/{client-CqmT_ur8.cjs → client-jlIx75iG.cjs} +2 -2
- package/dist/{client-BHt14nix.mjs → client-ztj20uaj.mjs} +2 -2
- package/dist/codex/happyMcpStdioBridge.cjs +18 -18
- package/dist/codex/happyMcpStdioBridge.mjs +18 -18
- package/dist/{codexAppServerClient-CvL3eBlM.mjs → codexAppServerClient-DFRZ__3w.mjs} +3 -3
- package/dist/{codexAppServerClient-CyLtj1kP.cjs → codexAppServerClient-oSG91fFK.cjs} +3 -3
- package/dist/{codexCommand-CXytYlk9.mjs → codexCommand-BE__EfSf.mjs} +43 -43
- package/dist/{codexCommand-B0Slfvne.cjs → codexCommand-BNjxG3C_.cjs} +43 -43
- package/dist/{codexTermination-D0sBaTvW.mjs → codexTermination-DuGPgcGv.mjs} +1 -1
- package/dist/{codexTermination-CykPnK3G.cjs → codexTermination-_YHZVugN.cjs} +1 -1
- package/dist/{config-7Z5qIB3k.cjs → config-BH7N9kZX.cjs} +3 -3
- package/dist/{config-DeXK_5y4.mjs → config-DXO9RUqb.mjs} +3 -3
- package/dist/{configuration-D_YrWa_i.mjs → configuration-BreL0beF.mjs} +1 -1
- package/dist/{configuration-CDqmWkHO.cjs → configuration-Da2jFKHx.cjs} +1 -1
- package/dist/{connect-D_tzdR4l.cjs → connect-BIIxh5a9.cjs} +12 -12
- package/dist/{connect-CivOym_v.mjs → connect-B_UrNMnp.mjs} +12 -12
- package/dist/{context-DXfkj_FL.mjs → context-DFudPCad.mjs} +1 -1
- package/dist/{context-k2CbuBtp.cjs → context-n1LlNbjT.cjs} +1 -1
- package/dist/{controlClient-BS86Ksm8.cjs → controlClient-Dlait4BW.cjs} +3 -3
- package/dist/{controlClient-Daki7wgo.mjs → controlClient-DwiujrH8.mjs} +3 -3
- package/dist/{createSessionMetadata-2s80RDL1.cjs → createSessionMetadata-83WjQzAt.cjs} +2 -2
- package/dist/{createSessionMetadata-B_hQ8lDn.mjs → createSessionMetadata-B0wB4nIY.mjs} +2 -2
- package/dist/{deterministicJson-DKiOtrSA.mjs → deterministicJson-BUtDwjAU.mjs} +54 -19
- package/dist/{deterministicJson-lwG_VzWd.cjs → deterministicJson-Dppskedb.cjs} +53 -18
- package/dist/{doctor-C0kONAQn.cjs → doctor-BtVympkn.cjs} +7 -7
- package/dist/{doctor-DegBfYjz.mjs → doctor-QQS5dGqG.mjs} +7 -7
- package/dist/{downloadTarget-osakJyyA.mjs → downloadTarget-CVm8ey3W.mjs} +6 -6
- package/dist/{downloadTarget-BTEVg8t6.cjs → downloadTarget-CxGQUh-7.cjs} +6 -6
- package/dist/{ensureDaemonRunning-vxHxmXo2.cjs → ensureDaemonRunning-CjD9jtqp.cjs} +5 -5
- package/dist/{ensureDaemonRunning-ED6UVEbk.mjs → ensureDaemonRunning-m6Kd3BM7.mjs} +5 -5
- package/dist/{exitNotice-D1tMULzu.mjs → exitNotice-HOwYf-97.mjs} +10 -5
- package/dist/{exitNotice-BhRrv8dx.cjs → exitNotice-bUdz2C4L.cjs} +11 -4
- package/dist/{format-DJwRUrQm.mjs → format-2GqpXiRX.mjs} +1 -1
- package/dist/{format-9KvRMdvY.cjs → format-BXxqj69f.cjs} +1 -1
- package/dist/{handleResumeCommand-PfKmR-hv.mjs → handleResumeCommand-CTT8lfhV.mjs} +5 -5
- package/dist/{handleResumeCommand-0lsgLgBB.cjs → handleResumeCommand-D_NUSPvz.cjs} +5 -5
- package/dist/{index-B_narjYR.cjs → index-B2xEPLkK.cjs} +40 -40
- package/dist/{index-CUJZx4cs.mjs → index-BLL_KBUA.mjs} +3 -3
- package/dist/{index-Bm_9wBaO.cjs → index-BrvS8Bor.cjs} +4 -4
- package/dist/{index-CUeuMsap.mjs → index-C2PX_W49.mjs} +4 -4
- package/dist/{index-D1rxFJ2b.mjs → index-CDO9rljT.mjs} +41 -41
- package/dist/{index-BNcFxRSt.mjs → index-CIWLX_eM.mjs} +4 -4
- package/dist/{index-C7yXrMau.cjs → index-CJXPB8kU.cjs} +3 -3
- package/dist/{index-l8Xg3Mbf.cjs → index-TDGlRjkn.cjs} +4 -4
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{install-C0I1a5sL.cjs → install-BaUw2G6E.cjs} +3 -3
- package/dist/{install-B593oYZs.mjs → install-DDfCEbu9.mjs} +3 -3
- package/dist/{issue-CJrXCpnf.cjs → issue-BrxmnVRr.cjs} +7 -7
- package/dist/{issue-D9ukoK-U.mjs → issue-Mh6p_OMm.mjs} +7 -7
- package/dist/lib.cjs +11 -11
- package/dist/lib.d.cts +65 -0
- package/dist/lib.d.mts +65 -0
- package/dist/lib.mjs +11 -11
- package/dist/{localHappyAgentAuth-CxNcSjMM.mjs → localHappyAgentAuth-B2bOV9RF.mjs} +1 -1
- package/dist/{localHappyAgentAuth-D3GKuEC2.cjs → localHappyAgentAuth-BtDypYZb.cjs} +1 -1
- package/dist/{logger-C8anCmdW.cjs → logger-B_GiBdoD.cjs} +2 -2
- package/dist/{logger-BcdURxNR.mjs → logger-DOp6YYAW.mjs} +2 -2
- package/dist/{machineMetadata-BQaQQk6Z.mjs → machineMetadata-8PjdzhIk.mjs} +3 -3
- package/dist/{machineMetadata-DYWtdEtE.cjs → machineMetadata-rjOkg7or.cjs} +3 -3
- package/dist/{main-KsUdHnwc.mjs → main-BfSuibka.mjs} +48 -48
- package/dist/{main-Bw7qSCWA.cjs → main-Dxj1sGm3.cjs} +48 -48
- package/dist/{mcp-OeLaQ2XR.mjs → mcp-C_G7MsCo.mjs} +15 -15
- package/dist/{mcp-CxPUFOEd.cjs → mcp-DmRG6Yyk.cjs} +15 -15
- package/dist/{mirrorProtocol-cTQcrW55.cjs → mirrorProtocol-C8ZsCJzM.cjs} +2 -2
- package/dist/{mirrorProtocol-Sj0yEHHU.mjs → mirrorProtocol-N8M4o7UD.mjs} +2 -2
- package/dist/{package-Dx3hbh9J.mjs → package-CJeweE1o.mjs} +8 -8
- package/dist/{package-DkpXQvp1.cjs → package-DTEEvw5V.cjs} +8 -8
- package/dist/{panels-DKYO14Sq.mjs → panels-BJGEusTH.mjs} +5 -5
- package/dist/{panels-CPNZnwCH.cjs → panels-D9DTAY7b.cjs} +5 -5
- package/dist/{peerTools-DpCWFxI6.cjs → peerTools-Cs7_fbtQ.cjs} +5 -5
- package/dist/{peerTools-DYFslv6R.mjs → peerTools-D66WcwUZ.mjs} +5 -5
- package/dist/{persistence-3iZXGbfb.mjs → persistence-DURvN3Hm.mjs} +2 -2
- package/dist/{persistence-Ch78xygf.cjs → persistence-_HpJ8Xqx.cjs} +2 -2
- package/dist/{piRunnerArgs-CA6jqQ0k.cjs → piRunnerArgs-BqqnRbD2.cjs} +1 -1
- package/dist/{piRunnerArgs-DEuYl6FL.mjs → piRunnerArgs-Q9_OZpgB.mjs} +1 -1
- package/dist/{piRuntime-BIVHf-hN.cjs → piRuntime-CfymNU4r.cjs} +1 -1
- package/dist/{piRuntime-CyN43ILm.mjs → piRuntime-DVfBZwGV.mjs} +1 -1
- package/dist/{piTerminal-DXz5L73L.mjs → piTerminal-BmVTobWw.mjs} +17 -17
- package/dist/{piTerminal-Hw4StZWN.cjs → piTerminal-SWzeud-Y.cjs} +17 -17
- package/dist/{pushNotifications-Db1NGJiA.mjs → pushNotifications-CrN3Ja_a.mjs} +19 -2
- package/dist/{pushNotifications-D2ejrxlN.cjs → pushNotifications-DzWubbyC.cjs} +19 -2
- package/dist/{query-CeYpZWVb.mjs → query-CcFiFfJ8.mjs} +1 -1
- package/dist/{query-velpFYxW.cjs → query-DXKQY4gV.cjs} +1 -1
- package/dist/{rateLimitWindows-C78D8Uf-.cjs → rateLimitWindows-BmZ6gZY8.cjs} +1 -1
- package/dist/{rateLimitWindows-BSQttrPk.mjs → rateLimitWindows-BrCPAQCV.mjs} +1 -1
- package/dist/{reconnectGate-Ie4nSKNl.mjs → reconnectGate-BbxwTsar.mjs} +1 -1
- package/dist/{reconnectGate-S9yNiuY7.cjs → reconnectGate-DBf3oDWw.cjs} +1 -1
- package/dist/{registerCommonHandlers-51llVpLx.cjs → registerCommonHandlers-DJcGS4eV.cjs} +2 -2
- package/dist/{registerCommonHandlers-BR7BeGX3.mjs → registerCommonHandlers-Dd5Ld0CL.mjs} +2 -2
- package/dist/{registerKillSessionHandler-BjY79qBi.cjs → registerKillSessionHandler-CCpSkYc2.cjs} +5 -5
- package/dist/{registerKillSessionHandler-RbWPmKnK.mjs → registerKillSessionHandler-DNLUoqKq.mjs} +5 -5
- package/dist/{registerSideQuestionHandler-B1Xk7dFK.cjs → registerSideQuestionHandler-D7zu0Z-I.cjs} +4 -4
- package/dist/{registerSideQuestionHandler-BbYT7QfR.mjs → registerSideQuestionHandler-_YMnEk1L.mjs} +4 -4
- package/dist/{remoteSessionClient-r-UnqHor.cjs → remoteSessionClient-Don4DO6r.cjs} +5 -5
- package/dist/{remoteSessionClient-Ddns3U8M.mjs → remoteSessionClient-iIWEgwCP.mjs} +5 -5
- package/dist/{reportProgressTool-C3sf9D8m.mjs → reportProgressTool-B9DJTgdO.mjs} +4 -4
- package/dist/{reportProgressTool-ByadxJtc.cjs → reportProgressTool-DwHrvFHn.cjs} +4 -4
- package/dist/{run-r5sY3wHk.cjs → run-CbsSCESl.cjs} +269 -37
- package/dist/{run-jsINwBOz.mjs → run-RKaV1s5m.mjs} +269 -37
- package/dist/{runClaude-CRKsRfnq.cjs → runClaude-B4hSm06m.cjs} +20 -20
- package/dist/{runClaude-D8CuiZhi.mjs → runClaude-BnMkhjUP.mjs} +20 -20
- package/dist/{runClaudeDeps-BiVzNIE6.cjs → runClaudeDeps-BrS568YD.cjs} +38 -38
- package/dist/{runClaudeDeps-CUuPWcg9.mjs → runClaudeDeps-jlxTi74f.mjs} +44 -44
- package/dist/{runGemini-cqVZjPT6.mjs → runGemini-D34l_LpW.mjs} +35 -35
- package/dist/{runGemini-DANnc0BW.cjs → runGemini-DMLMq-y1.cjs} +35 -35
- package/dist/{runOpenClaw-CGwc6mfJ.cjs → runOpenClaw-BGKlUFHd.cjs} +17 -17
- package/dist/{runOpenClaw-B6V2nz8J.mjs → runOpenClaw-Dezk2LNe.mjs} +17 -17
- package/dist/{sandbox-CNheYPva.cjs → sandbox-C70ODcxh.cjs} +4 -4
- package/dist/{sandbox-JYBMckKE.mjs → sandbox-Db7g31zm.mjs} +4 -4
- package/dist/selfCheck-CUVp2nQo.mjs +89 -0
- package/dist/{selfCheck-DtSEBt0g.cjs → selfCheck-UKA82vpj.cjs} +39 -39
- package/dist/{send-BHrbbGJ7.mjs → send-8-CnqJTX.mjs} +8 -8
- package/dist/{send-DNdJR3n8.cjs → send-BD8y_Dvq.cjs} +8 -8
- package/dist/{server-CvP_b3eb.cjs → server-B-0TJW4B.cjs} +6 -6
- package/dist/{server-DhQjVsyZ.mjs → server-CxmH3n3Y.mjs} +4 -4
- package/dist/{sessionLock-UkF8M3j5.cjs → sessionLock-BRaWaYhl.cjs} +9 -3
- package/dist/{sessionLock-5i516L-w.mjs → sessionLock-Cg33c_Um.mjs} +9 -4
- package/dist/{sessionOps-DX49XNAT.mjs → sessionOps-1_wWgsXG.mjs} +4 -4
- package/dist/{sessionOps-D77IeFSt.cjs → sessionOps-C-ms5bYE.cjs} +4 -4
- package/dist/{sessionProvider-C5xW4Dt3.mjs → sessionProvider-BKJ7EW-9.mjs} +5 -5
- package/dist/{sessionProvider-mSI2UgLX.cjs → sessionProvider-nbK5DYvh.cjs} +5 -5
- package/dist/{sessionScanner-BZkOnp5a.mjs → sessionScanner-CGP1nnOy.mjs} +3 -3
- package/dist/{sessionScanner-B1Am8D4Y.cjs → sessionScanner-S7FsjWqu.cjs} +3 -3
- package/dist/{sessions-ClQFpjcA.mjs → sessions-7B68T5D2.mjs} +10 -10
- package/dist/{sessions-DDDEiHVR.cjs → sessions-CwC-s7iA.cjs} +10 -10
- package/dist/{setupOfflineReconnection-Cn2_vuvO.cjs → setupOfflineReconnection-D9BD_Cha.cjs} +2 -2
- package/dist/{setupOfflineReconnection-PjK9laDd.mjs → setupOfflineReconnection-DSlXZLP9.mjs} +2 -2
- package/dist/{spawn-BJGaxdot.mjs → spawn-CJ6ow1Et.mjs} +12 -12
- package/dist/{spawn-DOj-sY6W.cjs → spawn-D4gyZP6A.cjs} +12 -12
- package/dist/{spawnHappyCLI-CpOMz9hX.mjs → spawnHappyCLI-BRcxn8Ui.mjs} +1 -1
- package/dist/{spawnHappyCLI-DvxZ7elP.cjs → spawnHappyCLI-CKgAt8NU.cjs} +1 -1
- package/dist/{startFileWatcher-1ar7WS96.cjs → startFileWatcher-Baw_dgs_.cjs} +1 -1
- package/dist/{startFileWatcher-CPbPNFGY.mjs → startFileWatcher-DJ_IPi0y.mjs} +1 -1
- package/dist/{startupSessionCreate-COc5Nnr9.cjs → startupSessionCreate-Cjl3wk3-.cjs} +3 -3
- package/dist/{startupSessionCreate-CnVaUZ16.mjs → startupSessionCreate-DeJNxWtb.mjs} +3 -3
- package/dist/{sync-DzInYE_l.cjs → sync-BqlAL8Iu.cjs} +1 -1
- package/dist/{sync-BZji3J2r.mjs → sync-COxP1DF-.mjs} +1 -1
- package/dist/{systemPrompt-CvpjNmQL.cjs → systemPrompt-Ch052UGr.cjs} +1 -1
- package/dist/{systemPrompt-Dhdq8hGf.mjs → systemPrompt-bX3lhFwJ.mjs} +1 -1
- package/dist/{teams-CRCbDPob.cjs → teams-B15InkZ8.cjs} +8 -8
- package/dist/{teams-CVW4ZvmW.mjs → teams-DCCFeNBI.mjs} +8 -8
- package/dist/{time-BWVJTcWI.mjs → time-BHGz6WMO.mjs} +1 -1
- package/dist/{time-UUMqbIq8.cjs → time-COyPPTSV.cjs} +1 -1
- package/dist/{titleGenerator-BHOA2Wkx.cjs → titleGenerator-D4FFE3Mo.cjs} +2 -2
- package/dist/{titleGenerator-Ck82YoB7.mjs → titleGenerator-J99R5x-_.mjs} +1 -1
- package/dist/{todo-Cwo7joub.cjs → todo-BHGF7oHm.cjs} +7 -7
- package/dist/{todo-Cf52TlmX.mjs → todo-BZAJpKe1.mjs} +7 -7
- package/dist/{tools-DmNaOlUF.mjs → tools-Ck6hDYQh.mjs} +1 -1
- package/dist/{tools-DEErCtZG.cjs → tools-DswZApdy.cjs} +1 -1
- package/dist/{uninstall-B85MiNK2.mjs → uninstall-33r_D-SV.mjs} +3 -3
- package/dist/{uninstall-CoAK4ANz.cjs → uninstall-DUBwOYXT.cjs} +3 -3
- package/package.json +8 -8
- package/dist/selfCheck-Jjy_wMw3.mjs +0 -89
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { i as isClaudeSessionId, h as extractCompleteLines, j as decideBackfill, k as parseTerminalHookPayload, m as decideMirrorBinding, M as MIRROR_BACKFILL_LINES_DEFAULT, n as mirrorLineKey, o as mirrorLocalId, q as initializeOwnedWorktree, f as summarizeSpawnSessionForLog, t as startAgentVersionChecks, W as WORKTREE_CAPABILITY_VERSION, u as currentWorktreeService } from './mirrorProtocol-
|
|
1
|
+
import { i as isClaudeSessionId, h as extractCompleteLines, j as decideBackfill, k as parseTerminalHookPayload, m as decideMirrorBinding, M as MIRROR_BACKFILL_LINES_DEFAULT, n as mirrorLineKey, o as mirrorLocalId, q as initializeOwnedWorktree, f as summarizeSpawnSessionForLog, t as startAgentVersionChecks, W as WORKTREE_CAPABILITY_VERSION, u as currentWorktreeService } from './mirrorProtocol-N8M4o7UD.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-Q9_OZpgB.mjs';
|
|
4
4
|
import fs from 'fs/promises';
|
|
5
5
|
import os from 'os';
|
|
6
6
|
import * as tmp from 'tmp';
|
|
@@ -8,20 +8,20 @@ import axios from 'axios';
|
|
|
8
8
|
import { a as issueRelaunchEnv } from './sessionMetadata-C1eoAi89.mjs';
|
|
9
9
|
import { readFileSync, openSync, fsyncSync, closeSync, renameSync, existsSync, readdirSync, statSync, unlinkSync, readSync, writeSync, ftruncateSync, utimesSync, realpathSync, promises, constants as constants$1, writeFileSync, mkdirSync, accessSync, rmdirSync } from 'node:fs';
|
|
10
10
|
import { join, isAbsolute, resolve, dirname, sep, basename, relative } from 'node:path';
|
|
11
|
-
import {
|
|
12
|
-
import { f as ensurePrivateDirectorySync, w as writePrivateFileSync, c as configuration } from './configuration-
|
|
13
|
-
import { T as TurnActivityTracker, A as ApiClient } from './api-
|
|
11
|
+
import { f as teamExitMarkerPath, d as detectTeamUserLanguage, g as teamOwnerText, a as teamLanguageRule, c as teamLanguageReminder } from './exitNotice-HOwYf-97.mjs';
|
|
12
|
+
import { f as ensurePrivateDirectorySync, w as writePrivateFileSync, c as configuration } from './configuration-BreL0beF.mjs';
|
|
13
|
+
import { T as TurnActivityTracker, A as ApiClient } from './api-DGJVcaIF.mjs';
|
|
14
14
|
import { S as SPAWN_AGENTS, i as isSpawnAgent, s as sanitizeSpawnPermissionMode, r as resolveSpawnPermissionMode, a as resolveFirstMessageMeta, j as joinProject } from './spawnAgents-CcFKtKdX.mjs';
|
|
15
|
-
import { l as logger } from './logger-
|
|
16
|
-
import { p as pruneStaleCompileCaches } from './index-
|
|
17
|
-
import { a as authAndSetupMachineIfNeeded } from './auth-
|
|
15
|
+
import { l as logger } from './logger-DOp6YYAW.mjs';
|
|
16
|
+
import { p as pruneStaleCompileCaches } from './index-BLL_KBUA.mjs';
|
|
17
|
+
import { a as authAndSetupMachineIfNeeded } from './auth-CP7a7YqH.mjs';
|
|
18
18
|
import { spawn, execSync } from 'child_process';
|
|
19
|
-
import { p as packageJson } from './package-
|
|
20
|
-
import { a as globalPrefixForPackage, N as NPM_SAFE_ARG, g as getEnvironmentInfo } from './doctor-
|
|
21
|
-
import { s as spawnHappyCLI } from './spawnHappyCLI-
|
|
22
|
-
import { c as readPersistedSessions, r as readSettings, l as latchKeepAwake, s as reportSignature, t as decideDaemonHibernation, v as nextCheckDelay, x as persistSession, d as readDaemonState, y as acquireDaemonLock, a as resolveCheckMs, z as resolveIdleMs, A as deletePersistedSessions, B as writeDaemonState, C as writeSettings, D as settingIdleMs, u as updateSettings, E as readDaemonStatePidSync, F as rewriteCredentialsForRelay, g as readCredentials, G as releaseDaemonLock } from './persistence-
|
|
23
|
-
import { i as isDaemonRunningCurrentlyInstalledHappyVersion, s as stopDaemon, x as cleanupDaemonState } from './controlClient-
|
|
24
|
-
import { e as sendUserMessage, f as readSessionMetadata, r as readSessionTranscript, l as listAccountSessions, a as listSessions, M as MAX_READ_LIMIT, s as sessionWebUrl, n as lineageOf, g as waitForSessionKey, d as archiveSession, h as analyzeLatestTurn, i as readSessionLog, j as TURN_WINDOW, p as userPromptText } from './sessionOps-
|
|
19
|
+
import { p as packageJson } from './package-CJeweE1o.mjs';
|
|
20
|
+
import { a as globalPrefixForPackage, N as NPM_SAFE_ARG, g as getEnvironmentInfo } from './doctor-QQS5dGqG.mjs';
|
|
21
|
+
import { s as spawnHappyCLI } from './spawnHappyCLI-BRcxn8Ui.mjs';
|
|
22
|
+
import { c as readPersistedSessions, r as readSettings, l as latchKeepAwake, s as reportSignature, t as decideDaemonHibernation, v as nextCheckDelay, x as persistSession, d as readDaemonState, y as acquireDaemonLock, a as resolveCheckMs, z as resolveIdleMs, A as deletePersistedSessions, B as writeDaemonState, C as writeSettings, D as settingIdleMs, u as updateSettings, E as readDaemonStatePidSync, F as rewriteCredentialsForRelay, g as readCredentials, G as releaseDaemonLock } from './persistence-DURvN3Hm.mjs';
|
|
23
|
+
import { i as isDaemonRunningCurrentlyInstalledHappyVersion, s as stopDaemon, x as cleanupDaemonState } from './controlClient-DwiujrH8.mjs';
|
|
24
|
+
import { e as sendUserMessage, f as readSessionMetadata, r as readSessionTranscript, l as listAccountSessions, a as listSessions, M as MAX_READ_LIMIT, s as sessionWebUrl, n as lineageOf, g as waitForSessionKey, d as archiveSession, h as analyzeLatestTurn, i as readSessionLog, j as TURN_WINDOW, p as userPromptText } from './sessionOps-1_wWgsXG.mjs';
|
|
25
25
|
import { a3 as AgentProfilesStateSchema, ar as ServerMigrateNoticeSchema, as as isHarnessInstallId, at as agentProfileUnavailableReason, au as MODEL_INTENT_CONFIG, q as AUTOMATION_SUMMARY_MAX_CHARS, av as AUTOMATION_PRECHECK_OUTPUT_MAX_CHARS, aw as AUTOMATION_PRECHECK_DEFAULT_TIMEOUT_MS, d as AUTOMATION_PRECHECK_MAX_TIMEOUT_MS, ax as AUTOMATION_CLAIM_MAX_RUNS, ay as AUTOMATION_DAEMON_CAPABILITY_PRECHECK, az as AUTOMATION_DEFAULT_LEASE_MS, i as isAutomationRunTerminal, D as resolveLaunchAgentProfile, aA as ISSUE_SENT_FROM, aB as ISSUE_DISPATCH_LOCAL_ID_PREFIX, f as ISSUE_ASSIGNABLE_AGENTS, aC as HARNESS_INSTALL_CAPABILITY_VERSION } from './index-DWk-WTU-.mjs';
|
|
26
26
|
import fastify from 'fastify';
|
|
27
27
|
import { z } from 'zod';
|
|
@@ -30,37 +30,37 @@ import { d as decodeBase64, s as sameRelay, e as encodeBase64, h as decrypt } fr
|
|
|
30
30
|
import { randomBytes, createHash, timingSafeEqual, randomUUID } from 'node:crypto';
|
|
31
31
|
import { c as checkPreviewPath } from './previewPath-CXN4Vag0.mjs';
|
|
32
32
|
import { a as BACKGROUND_TASKS_MAX, d as BACKGROUND_TASK_DESCRIPTION_MAX, e as BackgroundTaskTracker } from './backgroundTaskActivity-8PdPxrvy.mjs';
|
|
33
|
-
import { b as sanitizeRateLimitReport } from './rateLimitWindows-
|
|
34
|
-
import { f as formatEditConflictNotice, b as SESSION_PEER_SENT_FROM, s as sendPeerMessage, l as listPeerSessions, C as CLI_PEER_SENDER_ID } from './peerTools-
|
|
33
|
+
import { b as sanitizeRateLimitReport } from './rateLimitWindows-BrCPAQCV.mjs';
|
|
34
|
+
import { f as formatEditConflictNotice, b as SESSION_PEER_SENT_FROM, s as sendPeerMessage, l as listPeerSessions, C as CLI_PEER_SENDER_ID } from './peerTools-D66WcwUZ.mjs';
|
|
35
35
|
import os$1, { hostname, homedir, tmpdir } from 'node:os';
|
|
36
|
-
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-
|
|
37
|
-
import { assistantHome, bootstrapAssistantHome } from './bootstrap-
|
|
38
|
-
import { refreshAgentHomes, locateClaudeConversation, agentHomeSpawnEnv } from './index-
|
|
36
|
+
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-iIWEgwCP.mjs';
|
|
37
|
+
import { assistantHome, bootstrapAssistantHome } from './bootstrap-BCuF4Kla.mjs';
|
|
38
|
+
import { refreshAgentHomes, locateClaudeConversation, agentHomeSpawnEnv } from './index-C2PX_W49.mjs';
|
|
39
39
|
import require$$0, { existsSync as existsSync$1, statSync as statSync$1, mkdtempSync, rmSync } from 'fs';
|
|
40
40
|
import require$$1, { join as join$1 } from 'path';
|
|
41
41
|
import { spawn as spawn$1, execFile, spawnSync } from 'node:child_process';
|
|
42
42
|
import { p as projectPath } from './projectPath-BTBIMB57.mjs';
|
|
43
43
|
import { d as daemonEndpointsMatch, r as resolveClaudeCredentialReadiness } from './doctorReadiness-C208SMN9.mjs';
|
|
44
|
-
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-
|
|
44
|
+
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-8PjdzhIk.mjs';
|
|
45
45
|
import { M as ModelConfigError, B as BackupStore, r as readConfigFile, s as sha256, a as atomicWriteFile } from './fileStore-5qpetZS0.mjs';
|
|
46
46
|
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';
|
|
47
47
|
import { p as parse } from './codexAccount-BPQ-lPhH.mjs';
|
|
48
48
|
import require$$3 from 'crypto';
|
|
49
49
|
import { c as commandOnPath } from './detectCLI-CSGMlV51.mjs';
|
|
50
|
-
import { buildResumeLaunch } from './handleResumeCommand-
|
|
50
|
+
import { buildResumeLaunch } from './handleResumeCommand-CTT8lfhV.mjs';
|
|
51
51
|
import { n as normalizeWebPanels } from './webPanels-B2_C2-3g.mjs';
|
|
52
52
|
import { access, symlink, readFile, rm, unlink, readlink, lstat, constants, rename, mkdir, copyFile, readdir, stat, open } from 'node:fs/promises';
|
|
53
53
|
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';
|
|
54
|
-
import { P as ProjectsUnsupportedError, c as createProjectsClient } from './client-
|
|
55
|
-
import { u as uncheckedWrapperStatus, d as wrapperReportsIdle, f as decideAutoRestart, s as statusFromVerdict, g as autoRestartNextCheck, h as wrapperStaleness, r as recordAttempt, i as AUTO_RESTART_MAX_ATTEMPTS, j as AUTO_RESTART_MIN_GAP_MS, p as processIdentityFields, k as readSessionLock, l as
|
|
56
|
-
import { c as createAutomationsClient, i as isAutomationsUnavailable, d as AutomationsRequestError } from './client-
|
|
54
|
+
import { P as ProjectsUnsupportedError, c as createProjectsClient } from './client-DizbJlbC.mjs';
|
|
55
|
+
import { u as uncheckedWrapperStatus, d as wrapperReportsIdle, f as decideAutoRestart, s as statusFromVerdict, g as autoRestartNextCheck, h as wrapperStaleness, r as recordAttempt, i as AUTO_RESTART_MAX_ATTEMPTS, j as AUTO_RESTART_MIN_GAP_MS, p as processIdentityFields, k as readSessionLock, l as restartIdleRefusal, n as AUTO_RESTARTED_ENV, o as encodeAutoRestarted, q as pendingUpgradeVersion, v as resolveCheckInGraceMs, x as resolveQuietMs, y as AUTO_RESTART_RECHECK_CAP_MS } from './sessionLock-Cg33c_Um.mjs';
|
|
56
|
+
import { c as createAutomationsClient, i as isAutomationsUnavailable, d as AutomationsRequestError } from './client-ztj20uaj.mjs';
|
|
57
57
|
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';
|
|
58
58
|
import { A as AccountService } from './accountService-CqrWNH8K.mjs';
|
|
59
59
|
import { spawnSetupTokenPty, watchAccountFiles } from './daemonAccounts-BtkmoJmC.mjs';
|
|
60
60
|
import { g as getProjectPath } from './path-D2wdaNSk.mjs';
|
|
61
61
|
import { b as extractClaudeEditPaths } from './editPaths-BVfS_FFL.mjs';
|
|
62
|
-
import { s as startFileWatcher } from './startFileWatcher-
|
|
63
|
-
import { I as InvalidateSync } from './sync-
|
|
62
|
+
import { s as startFileWatcher } from './startFileWatcher-DJ_IPi0y.mjs';
|
|
63
|
+
import { I as InvalidateSync } from './sync-COxP1DF-.mjs';
|
|
64
64
|
import { R as RawJSONLinesSchema } from './types-CkqAACXx.mjs';
|
|
65
65
|
import { t as tmuxArgs, a as scrubTmuxClientEnv, s as shellescape } from './tmuxSocket-BmZyixRM.mjs';
|
|
66
66
|
import { i as isProcessAlive, t as terminateProcessTree } from './processTermination-ChJG5SLW.mjs';
|
|
@@ -68,31 +68,31 @@ import { findAllHappyProcesses } from './doctor-GN5mPOn5.mjs';
|
|
|
68
68
|
import { T as TEAM_SKILL, a as TEAM_LEAD_PLAYBOOK, b as TEAM_MEMBER_RULES } from './resources-CLP_MpK4.mjs';
|
|
69
69
|
import { promisify } from 'node:util';
|
|
70
70
|
import { b as clipText, r as renderAction, c as clipAutomationReport, e as renderTemplate } from './template-D8fzlO58.mjs';
|
|
71
|
-
import { I as IssuesUnsupportedError, a as IssueRequestError, c as createIssuesClient } from './client-
|
|
71
|
+
import { I as IssuesUnsupportedError, a as IssueRequestError, c as createIssuesClient } from './client-5ekzs8hv.mjs';
|
|
72
72
|
import { d as describeAgentHome } from './loginShellEnv-Dw8M7tkI.mjs';
|
|
73
73
|
import { S as SPAWN_ACCOUNT_ENV } from './store-Fge1h9wy.mjs';
|
|
74
|
-
import './acpSessionResume-
|
|
74
|
+
import './acpSessionResume-D1v1ZqjL.mjs';
|
|
75
75
|
import './prompt-QHuFx9j6.mjs';
|
|
76
|
-
import './pushNotifications-
|
|
76
|
+
import './pushNotifications-CrN3Ja_a.mjs';
|
|
77
77
|
import './contentLogMetadata-BlWI0egu.mjs';
|
|
78
|
-
import './reconnectGate-
|
|
78
|
+
import './reconnectGate-BbxwTsar.mjs';
|
|
79
79
|
import 'node:events';
|
|
80
80
|
import 'socket.io-client';
|
|
81
81
|
import './limits-DIo7rEBR.mjs';
|
|
82
|
-
import './time-
|
|
83
|
-
import './registerCommonHandlers-
|
|
82
|
+
import './time-BHGz6WMO.mjs';
|
|
83
|
+
import './registerCommonHandlers-Dd5Ld0CL.mjs';
|
|
84
84
|
import 'util';
|
|
85
85
|
import 'cross-spawn';
|
|
86
86
|
import '@paralleldrive/cuid2';
|
|
87
87
|
import 'chalk';
|
|
88
88
|
import 'node:module';
|
|
89
89
|
import 'tweetnacl';
|
|
90
|
-
import './browser-
|
|
90
|
+
import './browser-C-PWxfCE.mjs';
|
|
91
91
|
import 'open';
|
|
92
92
|
import './specialCommands-MXUN0wfI.mjs';
|
|
93
93
|
import './ids-DU6sLx4C.mjs';
|
|
94
94
|
import 'url';
|
|
95
|
-
import './localHappyAgentAuth-
|
|
95
|
+
import './localHappyAgentAuth-B2bOV9RF.mjs';
|
|
96
96
|
import './claudeAccountEnv-C6Wl-ZbT.mjs';
|
|
97
97
|
import 'node:readline';
|
|
98
98
|
import 'node-pty';
|
|
@@ -4624,7 +4624,8 @@ function createHarnessInstaller(deps) {
|
|
|
4624
4624
|
return {
|
|
4625
4625
|
/** True while npm may be writing the prefix — including after an unconfirmed kill. */
|
|
4626
4626
|
isRunning: () => running !== null || blocked,
|
|
4627
|
-
|
|
4627
|
+
/** `requester` is only for the log: the machine page (owner) or B-894's agent auto-update. */
|
|
4628
|
+
async request(params, requester = "owner") {
|
|
4628
4629
|
const harness = params && typeof params === "object" ? params.harness : void 0;
|
|
4629
4630
|
if (!isHarnessInstallId(harness)) {
|
|
4630
4631
|
deps.log(`[HARNESS] refused install request for an unknown harness`);
|
|
@@ -4646,7 +4647,7 @@ function createHarnessInstaller(deps) {
|
|
|
4646
4647
|
return location;
|
|
4647
4648
|
}
|
|
4648
4649
|
const startedAt = now();
|
|
4649
|
-
deps.log(`[HARNESS] owner requested ${harness} install`);
|
|
4650
|
+
deps.log(`[HARNESS] ${requester === "auto-update" ? "agent auto-update" : "owner"} requested ${harness} install`);
|
|
4650
4651
|
deps.publish({ harness, state: "installing", startedAt, at: startedAt });
|
|
4651
4652
|
void run(harness, location.prefix, startedAt);
|
|
4652
4653
|
return { accepted: true, harness };
|
|
@@ -4654,6 +4655,197 @@ function createHarnessInstaller(deps) {
|
|
|
4654
4655
|
};
|
|
4655
4656
|
}
|
|
4656
4657
|
|
|
4658
|
+
const AGENT_AUTO_UPDATE_HARNESSES = ["codex"];
|
|
4659
|
+
const AGENT_AUTO_UPDATE_MAX_ATTEMPTS = 2;
|
|
4660
|
+
const AGENT_AUTO_UPDATE_BACKOFF_MS = 30 * 60 * 1e3;
|
|
4661
|
+
const AGENT_AUTO_UPDATE_SNAPSHOT_MAX_AGE_MS = 12 * 60 * 60 * 1e3;
|
|
4662
|
+
const TRANSIENT_REFUSALS = /* @__PURE__ */ new Set(["install_in_progress", "cli_update_in_progress"]);
|
|
4663
|
+
function decideAgentAutoUpdate(input) {
|
|
4664
|
+
const { harness } = input;
|
|
4665
|
+
if (!input.enabled) return { action: "skip", harness, reason: "disabled" };
|
|
4666
|
+
const versions = input.versions;
|
|
4667
|
+
if (!versions || input.now - versions.checkedAt > AGENT_AUTO_UPDATE_SNAPSHOT_MAX_AGE_MS) return { action: "skip", harness, reason: "no-versions" };
|
|
4668
|
+
const agent = versions.agents.find((a) => a.id === harness);
|
|
4669
|
+
if (!agent || agent.status !== "update-available" || !agent.latest) return { action: "skip", harness, reason: "current" };
|
|
4670
|
+
const target = agent.latest;
|
|
4671
|
+
const attempt = input.attempt?.target === target ? input.attempt : void 0;
|
|
4672
|
+
if (attempt?.succeeded) return { action: "skip", harness, reason: "still-outdated", target };
|
|
4673
|
+
if (attempt && attempt.attempts >= AGENT_AUTO_UPDATE_MAX_ATTEMPTS) return { action: "skip", harness, reason: "gave-up", target };
|
|
4674
|
+
if (attempt && input.now - attempt.lastAt < AGENT_AUTO_UPDATE_BACKOFF_MS) return { action: "skip", harness, reason: "backoff", target };
|
|
4675
|
+
if (input.turnActive) return { action: "skip", harness, reason: "turn-active", target };
|
|
4676
|
+
if (input.installerBusy) return { action: "skip", harness, reason: "installer-busy", target };
|
|
4677
|
+
return { action: "install", harness, from: agent.installed, target };
|
|
4678
|
+
}
|
|
4679
|
+
function createAgentAutoUpdater(deps) {
|
|
4680
|
+
const now = deps.now ?? Date.now;
|
|
4681
|
+
const loaded = deps.store?.read() ?? { attempts: {}, statuses: {} };
|
|
4682
|
+
const attempts = new Map(
|
|
4683
|
+
Object.entries(loaded.attempts).map(([harness, attempt]) => [harness, attempt])
|
|
4684
|
+
);
|
|
4685
|
+
const statuses = { ...loaded.statuses };
|
|
4686
|
+
const save = () => {
|
|
4687
|
+
try {
|
|
4688
|
+
deps.store?.write({ attempts: Object.fromEntries(attempts), statuses: { ...statuses } });
|
|
4689
|
+
} catch (error) {
|
|
4690
|
+
deps.log(`[AGENT AUTO-UPDATE] could not save state: ${String(error)}`);
|
|
4691
|
+
}
|
|
4692
|
+
};
|
|
4693
|
+
for (const status of Object.values(statuses)) {
|
|
4694
|
+
if (status.state !== "installing") continue;
|
|
4695
|
+
const attempt = attempts.get(status.harness);
|
|
4696
|
+
if (attempt?.target === status.target) attempt.detail = "interrupted_by_daemon_restart";
|
|
4697
|
+
statuses[status.harness] = {
|
|
4698
|
+
...status,
|
|
4699
|
+
state: status.attempts >= AGENT_AUTO_UPDATE_MAX_ATTEMPTS ? "gave-up" : "failed",
|
|
4700
|
+
detail: "interrupted_by_daemon_restart"
|
|
4701
|
+
};
|
|
4702
|
+
}
|
|
4703
|
+
if (Object.keys(statuses).length > 0) {
|
|
4704
|
+
save();
|
|
4705
|
+
deps.publish({ ...statuses });
|
|
4706
|
+
}
|
|
4707
|
+
let pending = null;
|
|
4708
|
+
let ticking = false;
|
|
4709
|
+
const setStatus = (status) => {
|
|
4710
|
+
statuses[status.harness] = status;
|
|
4711
|
+
save();
|
|
4712
|
+
deps.publish({ ...statuses });
|
|
4713
|
+
};
|
|
4714
|
+
const fail = (harness, target, detail) => {
|
|
4715
|
+
const attempt = attempts.get(harness);
|
|
4716
|
+
attempt.detail = detail;
|
|
4717
|
+
const gaveUp = attempt.attempts >= AGENT_AUTO_UPDATE_MAX_ATTEMPTS;
|
|
4718
|
+
deps.log(`[AGENT AUTO-UPDATE] ${harness} \u2192 ${target} failed (attempt ${attempt.attempts}): ${detail}${gaveUp ? "; giving up on this version" : ""}`);
|
|
4719
|
+
setStatus({ harness, target, state: gaveUp ? "gave-up" : "failed", detail, attempts: attempt.attempts, at: now() });
|
|
4720
|
+
};
|
|
4721
|
+
async function tick() {
|
|
4722
|
+
if (ticking || pending) return;
|
|
4723
|
+
ticking = true;
|
|
4724
|
+
try {
|
|
4725
|
+
for (const harness of AGENT_AUTO_UPDATE_HARNESSES) {
|
|
4726
|
+
const decision = decideAgentAutoUpdate({
|
|
4727
|
+
harness,
|
|
4728
|
+
enabled: deps.enabled(),
|
|
4729
|
+
versions: deps.versions(),
|
|
4730
|
+
turnActive: deps.turnActive(harness),
|
|
4731
|
+
installerBusy: deps.installerBusy(),
|
|
4732
|
+
attempt: attempts.get(harness),
|
|
4733
|
+
now: now()
|
|
4734
|
+
});
|
|
4735
|
+
if (decision.action !== "install") {
|
|
4736
|
+
const status = statuses[harness];
|
|
4737
|
+
if (decision.reason === "still-outdated" && status?.state === "installed" && status.target === decision.target) {
|
|
4738
|
+
const attempt2 = attempts.get(harness);
|
|
4739
|
+
attempt2.attempts = AGENT_AUTO_UPDATE_MAX_ATTEMPTS;
|
|
4740
|
+
fail(harness, decision.target, "still_outdated_after_install");
|
|
4741
|
+
}
|
|
4742
|
+
continue;
|
|
4743
|
+
}
|
|
4744
|
+
const prior = attempts.get(harness);
|
|
4745
|
+
const attempt = prior?.target === decision.target ? { ...prior, attempts: prior.attempts + 1, lastAt: now() } : { target: decision.target, attempts: 1, lastAt: now() };
|
|
4746
|
+
attempts.set(harness, attempt);
|
|
4747
|
+
deps.log(`[AGENT AUTO-UPDATE] ${harness} ${decision.from ?? "?"} \u2192 ${decision.target} (attempt ${attempt.attempts})`);
|
|
4748
|
+
pending = { harness, target: decision.target };
|
|
4749
|
+
setStatus({ harness, target: decision.target, state: "installing", attempts: attempt.attempts, at: now() });
|
|
4750
|
+
const result = await deps.request(harness).catch((error) => ({ error: `request_failed: ${String(error)}` }));
|
|
4751
|
+
if ("accepted" in result) return;
|
|
4752
|
+
pending = null;
|
|
4753
|
+
if (TRANSIENT_REFUSALS.has(result.error)) {
|
|
4754
|
+
if (prior?.target === decision.target) attempts.set(harness, prior);
|
|
4755
|
+
else attempts.delete(harness);
|
|
4756
|
+
const before = statuses[harness];
|
|
4757
|
+
delete statuses[harness];
|
|
4758
|
+
save();
|
|
4759
|
+
if (before) deps.publish({ ...statuses });
|
|
4760
|
+
continue;
|
|
4761
|
+
}
|
|
4762
|
+
fail(harness, decision.target, result.error);
|
|
4763
|
+
}
|
|
4764
|
+
} finally {
|
|
4765
|
+
ticking = false;
|
|
4766
|
+
}
|
|
4767
|
+
}
|
|
4768
|
+
function onInstallState(state) {
|
|
4769
|
+
if (!pending || state.harness !== pending.harness || state.state === "installing") return;
|
|
4770
|
+
const { harness, target } = pending;
|
|
4771
|
+
pending = null;
|
|
4772
|
+
const attempt = attempts.get(harness);
|
|
4773
|
+
if (!attempt) return;
|
|
4774
|
+
if (state.state === "installed") {
|
|
4775
|
+
attempt.succeeded = true;
|
|
4776
|
+
deps.log(`[AGENT AUTO-UPDATE] ${harness} \u2192 ${target} installed`);
|
|
4777
|
+
setStatus({ harness, target, state: "installed", attempts: attempt.attempts, at: now() });
|
|
4778
|
+
} else {
|
|
4779
|
+
fail(harness, target, state.detail ?? "unknown");
|
|
4780
|
+
}
|
|
4781
|
+
}
|
|
4782
|
+
return { tick, onInstallState, statuses: () => ({ ...statuses }) };
|
|
4783
|
+
}
|
|
4784
|
+
const AGENT_AUTO_UPDATE_TICK_MS = 5 * 60 * 1e3;
|
|
4785
|
+
function resolveAgentAutoUpdateTickMs(raw) {
|
|
4786
|
+
const value = raw === void 0 ? NaN : Number(raw);
|
|
4787
|
+
return Number.isFinite(value) && value >= 1e3 ? value : AGENT_AUTO_UPDATE_TICK_MS;
|
|
4788
|
+
}
|
|
4789
|
+
|
|
4790
|
+
const STATES = /* @__PURE__ */ new Set(["installing", "installed", "failed", "gave-up"]);
|
|
4791
|
+
const isCount = (v) => typeof v === "number" && Number.isFinite(v) && v >= 0;
|
|
4792
|
+
function parseAttempt(raw) {
|
|
4793
|
+
if (!raw || typeof raw !== "object") return null;
|
|
4794
|
+
const { target, attempts, lastAt, succeeded, detail } = raw;
|
|
4795
|
+
if (typeof target !== "string" || !target || !isCount(attempts) || !isCount(lastAt)) return null;
|
|
4796
|
+
return {
|
|
4797
|
+
target,
|
|
4798
|
+
attempts,
|
|
4799
|
+
lastAt,
|
|
4800
|
+
...succeeded === true ? { succeeded: true } : {},
|
|
4801
|
+
...typeof detail === "string" ? { detail } : {}
|
|
4802
|
+
};
|
|
4803
|
+
}
|
|
4804
|
+
function parseStatus(harness, raw) {
|
|
4805
|
+
if (!raw || typeof raw !== "object") return null;
|
|
4806
|
+
const { target, state, detail, attempts, at } = raw;
|
|
4807
|
+
if (typeof target !== "string" || !target || typeof state !== "string" || !STATES.has(state) || !isCount(attempts) || !isCount(at)) return null;
|
|
4808
|
+
return {
|
|
4809
|
+
harness,
|
|
4810
|
+
target,
|
|
4811
|
+
state,
|
|
4812
|
+
attempts,
|
|
4813
|
+
at,
|
|
4814
|
+
...typeof detail === "string" ? { detail } : {}
|
|
4815
|
+
};
|
|
4816
|
+
}
|
|
4817
|
+
function parseAgentAutoUpdatePersisted(raw) {
|
|
4818
|
+
const out = { attempts: {}, statuses: {} };
|
|
4819
|
+
if (!raw || typeof raw !== "object") return out;
|
|
4820
|
+
const { attempts, statuses } = raw;
|
|
4821
|
+
for (const [harness, value] of Object.entries(attempts && typeof attempts === "object" ? attempts : {})) {
|
|
4822
|
+
const attempt = parseAttempt(value);
|
|
4823
|
+
if (attempt) out.attempts[harness] = attempt;
|
|
4824
|
+
}
|
|
4825
|
+
for (const [harness, value] of Object.entries(statuses && typeof statuses === "object" ? statuses : {})) {
|
|
4826
|
+
const status = parseStatus(harness, value);
|
|
4827
|
+
if (status) out.statuses[harness] = status;
|
|
4828
|
+
}
|
|
4829
|
+
return out;
|
|
4830
|
+
}
|
|
4831
|
+
function agentAutoUpdateStore(homeDir) {
|
|
4832
|
+
const file = join(homeDir, "agent-auto-update.json");
|
|
4833
|
+
return {
|
|
4834
|
+
read() {
|
|
4835
|
+
try {
|
|
4836
|
+
return parseAgentAutoUpdatePersisted(JSON.parse(readFileSync(file, "utf8")));
|
|
4837
|
+
} catch {
|
|
4838
|
+
return { attempts: {}, statuses: {} };
|
|
4839
|
+
}
|
|
4840
|
+
},
|
|
4841
|
+
write(state) {
|
|
4842
|
+
const tmp = `${file}.${process.pid}.tmp`;
|
|
4843
|
+
writeFileSync(tmp, JSON.stringify(state), { mode: 384 });
|
|
4844
|
+
renameSync(tmp, file);
|
|
4845
|
+
}
|
|
4846
|
+
};
|
|
4847
|
+
}
|
|
4848
|
+
|
|
4657
4849
|
function buildPresenceBatch(live, previous) {
|
|
4658
4850
|
const current = new Set(live.map((s) => s.sessionId));
|
|
4659
4851
|
const sessions = live.slice(0, 200).map((s) => ({
|
|
@@ -7710,6 +7902,7 @@ async function startDaemon() {
|
|
|
7710
7902
|
let claudeCredentialStoreSetting = (await readSettings()).claudeCredentialStore === "file" ? "file" : "auto";
|
|
7711
7903
|
let agentHibernationSetting = (await readSettings()).agentHibernationIdleMs;
|
|
7712
7904
|
let autoRestartSetting = (await readSettings()).autoRestartSessions !== false;
|
|
7905
|
+
let agentAutoUpdateSetting = (await readSettings()).agentAutoUpdate === true;
|
|
7713
7906
|
try {
|
|
7714
7907
|
const homes = await refreshAgentHomes();
|
|
7715
7908
|
logger.debug(`[DAEMON RUN] Claude config dir: ${describeAgentHome(homes.claudeConfigDir)}; Codex home: ${describeAgentHome(homes.codexHome)}`);
|
|
@@ -8410,6 +8603,7 @@ async function startDaemon() {
|
|
|
8410
8603
|
}
|
|
8411
8604
|
return sessionIdToFinishedSession.get(happySessionId);
|
|
8412
8605
|
};
|
|
8606
|
+
const trackedSessionFlavor = (happySessionId) => findTrackedSessionById(happySessionId)?.happySessionMetadataFromLocalWebhook?.flavor ?? "claude";
|
|
8413
8607
|
const persistRestoreRecord = (happySessionId, fallback, metadata) => {
|
|
8414
8608
|
const candidates = [...pidToTrackedSession.values()].filter((s) => s.happySessionId === happySessionId && isPidAlive(s.pid));
|
|
8415
8609
|
const live = candidates.find((s) => s.childProcess) ?? candidates[0];
|
|
@@ -8645,6 +8839,16 @@ async function startDaemon() {
|
|
|
8645
8839
|
};
|
|
8646
8840
|
const restartSessionImpl = async (happySessionId, options) => {
|
|
8647
8841
|
try {
|
|
8842
|
+
if (options?.ifIdle) {
|
|
8843
|
+
const busy = restartIdleRefusal({
|
|
8844
|
+
turnActive: turnActivity.activeSessions().includes(happySessionId),
|
|
8845
|
+
backgroundTasks: backgroundTasks.count(happySessionId)
|
|
8846
|
+
});
|
|
8847
|
+
if (busy) {
|
|
8848
|
+
logger.debug(`[DAEMON RUN] restart-session ${happySessionId} refused (ifIdle): ${busy}`);
|
|
8849
|
+
return { type: "error", errorMessage: `busy:${busy}` };
|
|
8850
|
+
}
|
|
8851
|
+
}
|
|
8648
8852
|
const counts = options?.account ? accountRestartCounts : restartCounts;
|
|
8649
8853
|
const prior = counts.get(happySessionId) ?? 0;
|
|
8650
8854
|
const decision = options?.auto ? { allowed: true } : decideRestart(prior, options?.account ? DEFAULT_MAX_ACCOUNT_RESTARTS : DEFAULT_MAX_RESTARTS);
|
|
@@ -9133,6 +9337,13 @@ async function startDaemon() {
|
|
|
9133
9337
|
return autoRestartSetting;
|
|
9134
9338
|
});
|
|
9135
9339
|
setTimeout(() => autoRestartScheduler.sweep(), 5e3).unref?.();
|
|
9340
|
+
let agentAutoUpdater = null;
|
|
9341
|
+
apiMachine.setAgentAutoUpdateHandlers(agentAutoUpdateSetting, async (enabled) => {
|
|
9342
|
+
await updateSettings((current) => ({ ...current, agentAutoUpdate: enabled }));
|
|
9343
|
+
agentAutoUpdateSetting = enabled;
|
|
9344
|
+
void agentAutoUpdater?.tick();
|
|
9345
|
+
return agentAutoUpdateSetting;
|
|
9346
|
+
});
|
|
9136
9347
|
const accountService = new AccountService({
|
|
9137
9348
|
home: configuration.happyHomeDir,
|
|
9138
9349
|
env: process.env,
|
|
@@ -9272,7 +9483,9 @@ async function startDaemon() {
|
|
|
9272
9483
|
const stopAgentVersionChecks = startAgentVersionChecks(
|
|
9273
9484
|
(snapshot) => {
|
|
9274
9485
|
latestAgentVersions = snapshot;
|
|
9275
|
-
return apiMachine.updateDaemonState((state) => ({ ...state, status: state?.status ?? "running", agentVersions: snapshot }))
|
|
9486
|
+
return apiMachine.updateDaemonState((state) => ({ ...state, status: state?.status ?? "running", agentVersions: snapshot })).finally(() => {
|
|
9487
|
+
void agentAutoUpdater?.tick();
|
|
9488
|
+
});
|
|
9276
9489
|
},
|
|
9277
9490
|
(error) => logger.debug("[DAEMON RUN] Agent version check failed", error)
|
|
9278
9491
|
);
|
|
@@ -9282,6 +9495,7 @@ async function startDaemon() {
|
|
|
9282
9495
|
commandOnPath,
|
|
9283
9496
|
cliUpdateBusy: () => updateController.isRunning() || handoverInFlight,
|
|
9284
9497
|
publish: (state) => {
|
|
9498
|
+
agentAutoUpdater?.onInstallState(state);
|
|
9285
9499
|
void apiMachine.updateDaemonState((current) => ({ ...current, status: current?.status ?? "running", harnessInstall: state })).catch((error) => logger.debug("[DAEMON RUN] harness install state publish failed", error));
|
|
9286
9500
|
},
|
|
9287
9501
|
afterInstall: async () => {
|
|
@@ -9291,6 +9505,22 @@ async function startDaemon() {
|
|
|
9291
9505
|
log: (message) => logger.warn(`[DAEMON RUN] ${message}`)
|
|
9292
9506
|
});
|
|
9293
9507
|
apiMachine.setHarnessInstallHandler((params) => harnessInstaller.request(params));
|
|
9508
|
+
agentAutoUpdater = createAgentAutoUpdater({
|
|
9509
|
+
enabled: () => agentAutoUpdateSetting,
|
|
9510
|
+
versions: () => latestAgentVersions,
|
|
9511
|
+
turnActive: (harness) => turnActivity.activeSessions().some((id) => trackedSessionFlavor(id) === harness),
|
|
9512
|
+
installerBusy: () => !!harnessInstaller?.isRunning() || updateController.isRunning() || handoverInFlight,
|
|
9513
|
+
request: (harness) => harnessInstaller.request({ harness }, "auto-update"),
|
|
9514
|
+
publish: (status) => {
|
|
9515
|
+
void apiMachine.setAgentAutoUpdateStatus(status);
|
|
9516
|
+
},
|
|
9517
|
+
log: (message) => logger.warn(`[DAEMON RUN] ${message}`),
|
|
9518
|
+
store: agentAutoUpdateStore(configuration.happyHomeDir)
|
|
9519
|
+
});
|
|
9520
|
+
const agentAutoUpdateInterval = setInterval(() => {
|
|
9521
|
+
void agentAutoUpdater?.tick();
|
|
9522
|
+
}, resolveAgentAutoUpdateTickMs(process.env.HAPPY_AGENT_AUTO_UPDATE_TICK_MS));
|
|
9523
|
+
agentAutoUpdateInterval.unref?.();
|
|
9294
9524
|
const heartbeatIntervalMs = parseInt(process.env.HAPPY_DAEMON_HEARTBEAT_INTERVAL || "60000");
|
|
9295
9525
|
const wakeDetector = createWakeDetector(heartbeatIntervalMs);
|
|
9296
9526
|
const restartOnStaleVersionAndHeartbeat = setInterval(serialTask(async () => {
|
|
@@ -9340,6 +9570,7 @@ async function startDaemon() {
|
|
|
9340
9570
|
projectPresence?.stop();
|
|
9341
9571
|
clearInterval(restartOnStaleVersionAndHeartbeat);
|
|
9342
9572
|
clearInterval(cliUpdateInterval);
|
|
9573
|
+
clearInterval(agentAutoUpdateInterval);
|
|
9343
9574
|
policyAnnouncements.stop();
|
|
9344
9575
|
policyRefresh.stop();
|
|
9345
9576
|
stopAgentVersionChecks();
|
|
@@ -9481,6 +9712,7 @@ async function startDaemon() {
|
|
|
9481
9712
|
logger.debug("[DAEMON RUN] Health check interval cleared");
|
|
9482
9713
|
}
|
|
9483
9714
|
clearInterval(cliUpdateInterval);
|
|
9715
|
+
clearInterval(agentAutoUpdateInterval);
|
|
9484
9716
|
clearInterval(autoRestartSweep);
|
|
9485
9717
|
policyAnnouncements.stop();
|
|
9486
9718
|
policyRefresh.stop();
|
|
@@ -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-BRaWaYhl.cjs');
|
|
5
|
+
var persistence = require('./persistence-_HpJ8Xqx.cjs');
|
|
6
|
+
var startupSessionCreate = require('./startupSessionCreate-Cjl3wk3-.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-
|
|
8
|
+
var api = require('./api-B-u-Mk6V.cjs');
|
|
9
|
+
var logger = require('./logger-B_GiBdoD.cjs');
|
|
10
|
+
var createSessionMetadata = require('./createSessionMetadata-83WjQzAt.cjs');
|
|
11
|
+
var _package = require('./package-DTEEvw5V.cjs');
|
|
12
12
|
var index = require('./index-BYL_X3gP.cjs');
|
|
13
13
|
var defaultPermissionMode = require('./defaultPermissionMode-DmLYaaL8.cjs');
|
|
14
14
|
var forkBackfill = require('./forkBackfill-D2WW91fz.cjs');
|
|
15
|
-
var configuration = require('./configuration-
|
|
15
|
+
var configuration = require('./configuration-Da2jFKHx.cjs');
|
|
16
16
|
var wrapperAccount = require('./wrapperAccount-BHMM9I6g.cjs');
|
|
17
17
|
var store = require('./store-DGMILdMn.cjs');
|
|
18
|
-
var controlClient = require('./controlClient-
|
|
19
|
-
var machineMetadata = require('./machineMetadata-
|
|
18
|
+
var controlClient = require('./controlClient-Dlait4BW.cjs');
|
|
19
|
+
var machineMetadata = require('./machineMetadata-rjOkg7or.cjs');
|
|
20
20
|
var projectPath = require('./projectPath-C3ioB4Bu.cjs');
|
|
21
21
|
var path = require('node:path');
|
|
22
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-BvGKA5QH.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-DzWubbyC.cjs');
|
|
38
38
|
require('./contentLogMetadata-ZSFk_NjQ.cjs');
|
|
39
|
-
require('./reconnectGate-
|
|
39
|
+
require('./reconnectGate-DBf3oDWw.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-COyPPTSV.cjs');
|
|
46
|
+
require('./registerCommonHandlers-DJcGS4eV.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-BqlAL8Iu.cjs');
|
|
54
54
|
require('./backgroundTaskActivity-CBvUdj39.cjs');
|
|
55
55
|
require('chalk');
|
|
56
56
|
require('node:util');
|
|
57
57
|
require('./claudeAccountEnv-BTZjHTpF.cjs');
|
|
58
58
|
require('./detectCLI-BuYR_Qxe.cjs');
|
|
59
59
|
require('fs');
|
|
60
|
-
require('./localHappyAgentAuth-
|
|
60
|
+
require('./localHappyAgentAuth-BtDypYZb.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-BrS568YD.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-Cq_W1C3z.cjs'); });
|
|
88
88
|
await bootstrapAssistantHome();
|
|
89
89
|
} catch (error) {
|
|
90
90
|
logger.logger.debug("[START] Assistant home bootstrap failed:", error);
|
|
@@ -219,7 +219,7 @@ async function runClaude(credentials, options = {}) {
|
|
|
219
219
|
}
|
|
220
220
|
if (!response) {
|
|
221
221
|
let offlineSessionId = null;
|
|
222
|
-
const { claudeLocal } = await Promise.resolve().then(function () { return require('./claudeLocal-
|
|
222
|
+
const { claudeLocal } = await Promise.resolve().then(function () { return require('./claudeLocal-TVtTBsHi.cjs'); });
|
|
223
223
|
const { createSessionScanner: createSessionScanner2 } = await loadDeps();
|
|
224
224
|
const reconnection = api.startOfflineReconnection({
|
|
225
225
|
serverUrl: configuration.configuration.serverUrl,
|